From 42e21bf946772f986de978b944c09e8858221057 Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Mon, 20 Mar 2023 11:00:25 -0500 Subject: [PATCH 001/115] reenable prospector in fort mode fort mode prospect works. embark mode prospect doesn't crash but generates nonsense data, so that code has been disabled for now --- docs/changelog.txt | 1 + plugins/CMakeLists.txt | 2 +- plugins/prospector.cpp | 5 +++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index b565f533f..73e2709b1 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -34,6 +34,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: # Future ## New Plugins +- `prospector`: prospector tool in fort mode is now available. embark prospect is not yet available and is disabled at this time. ## Fixes diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 477e83436..8fac3d467 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -140,7 +140,7 @@ dfhack_plugin(pathable pathable.cpp LINK_LIBRARIES lua) #dfhack_plugin(petcapRemover petcapRemover.cpp) #dfhack_plugin(plants plants.cpp) dfhack_plugin(probe probe.cpp) -#dfhack_plugin(prospector prospector.cpp LINK_LIBRARIES lua) +dfhack_plugin(prospector prospector.cpp LINK_LIBRARIES lua) #dfhack_plugin(power-meter power-meter.cpp LINK_LIBRARIES lua) dfhack_plugin(regrass regrass.cpp) add_subdirectory(remotefortressreader) diff --git a/plugins/prospector.cpp b/plugins/prospector.cpp index e75c967dc..86d77e643 100644 --- a/plugins/prospector.cpp +++ b/plugins/prospector.cpp @@ -565,6 +565,10 @@ static command_result embark_prospector(color_ostream &out, df::viewscreen_choose_start_sitest *screen, const prospect_options &options) { + out.printerr("prospector at embark is not currently available.\n"); + return CR_FAILURE; + +/* if (!world || !world->world_data) { out.printerr("World data is not available.\n"); @@ -621,6 +625,7 @@ static command_result embark_prospector(color_ostream &out, out << std::endl << "Warning: the above data is only a very rough estimate." << std::endl; return CR_OK; +*/ } static command_result map_prospector(color_ostream &con, From 5ed1e4ece7036a131f20f4b495e3344eeed6be7d Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Wed, 22 Mar 2023 07:13:59 +0000 Subject: [PATCH 002/115] Auto-update submodules library/xml: master scripts: master --- library/xml | 2 +- scripts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library/xml b/library/xml index a86161521..0dc8ae877 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit a86161521427e98d4e814bf4e080e74121edb966 +Subproject commit 0dc8ae87746e287538be01f01dc628662e756794 diff --git a/scripts b/scripts index f3a8d2df7..7f388c0c1 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit f3a8d2df72fa10311c4c52471b01216e6da90d9b +Subproject commit 7f388c0c1bf9ed5fa3f7abf1153da54921a93e15 From 959b4b317103dad07d78dcf765f7e7b0ee98e3b7 Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Wed, 22 Mar 2023 18:29:47 -0500 Subject: [PATCH 003/115] update tailor `tailor` now properly discriminates between dyed and undyed cloth and no longer defaults to using adamantine --- docs/changelog.txt | 1 + plugins/tailor.cpp | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 73e2709b1..0abd926d2 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -37,6 +37,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: - `prospector`: prospector tool in fort mode is now available. embark prospect is not yet available and is disabled at this time. ## Fixes +- `tailor` now properly discriminates between dyed and undyed cloth and no longer defaults to using adamantine ## Misc Improvements diff --git a/plugins/tailor.cpp b/plugins/tailor.cpp index 19237429e..66e54dd60 100644 --- a/plugins/tailor.cpp +++ b/plugins/tailor.cpp @@ -124,7 +124,8 @@ static const MatType M_ADAMANTINE = MatType("adamantine", df::job_material_category::mask_strand, df::armor_general_flags::SOFT); static const std::list all_materials = { M_SILK, M_CLOTH, M_YARN, M_LEATHER, M_ADAMANTINE }; -static std::list material_order = { M_SILK, M_CLOTH, M_YARN, M_LEATHER }; // M_ADAMANTINE is not included by default +static const std::list default_materials = { M_SILK, M_CLOTH, M_YARN, M_LEATHER }; // adamantine not included by default +static std::list material_order = default_materials; static struct BadFlags { uint32_t whole; @@ -191,7 +192,7 @@ public: if (i->flags.whole & badFlags.whole) continue; - if (require_dyed && !i->hasImprovements()) + if (require_dyed && (!i->isDyed())) { // only count dyed std::string d; @@ -589,7 +590,7 @@ static void set_material_order() { material_order.push_back(M_ADAMANTINE); } if (!material_order.size()) - std::copy(all_materials.begin(), all_materials.end(), std::back_inserter(material_order)); + std::copy(default_materials.begin(), default_materials.end(), std::back_inserter(material_order)); } DFhackCExport command_result plugin_load_data (color_ostream &out) { From 29c17b407c7a9f59a7a8d8a74ee7c79fd3d98beb Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Thu, 23 Mar 2023 07:13:59 +0000 Subject: [PATCH 004/115] Auto-update submodules library/xml: master --- library/xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/xml b/library/xml index 0dc8ae877..8b8ac2de0 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit 0dc8ae87746e287538be01f01dc628662e756794 +Subproject commit 8b8ac2de03ab5f8e5506864a751933059abfd03e From 03e44f1e7ff9d285e1df5af53f1618b3b6d378af Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Thu, 23 Mar 2023 00:25:29 -0700 Subject: [PATCH 005/115] fix initial extended/retracted position for upright spike traps --- docs/changelog.txt | 3 ++- library/modules/Buildings.cpp | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 0abd926d2..d68900d12 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -37,7 +37,8 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: - `prospector`: prospector tool in fort mode is now available. embark prospect is not yet available and is disabled at this time. ## Fixes -- `tailor` now properly discriminates between dyed and undyed cloth and no longer defaults to using adamantine +- `tailor`: now properly discriminates between dyed and undyed cloth and no longer defaults to using adamantine +- `buildingplan`: upright spike traps are now placed extended rather than retracted ## Misc Improvements diff --git a/library/modules/Buildings.cpp b/library/modules/Buildings.cpp index 2b6fc8ec8..1d1ba9318 100644 --- a/library/modules/Buildings.cpp +++ b/library/modules/Buildings.cpp @@ -68,6 +68,7 @@ using namespace DFHack; #include "df/building_stockpilest.h" #include "df/building_trapst.h" #include "df/building_water_wheelst.h" +#include "df/building_weaponst.h" #include "df/building_wellst.h" #include "df/building_workshopst.h" #include "df/buildings_other_id.h" @@ -591,6 +592,12 @@ df::building *Buildings::allocInstance(df::coord pos, df::building_type type, in obj->gate_flags.bits.closed = false; break; } + case building_type::Weapon: + { + if (VIRTUAL_CAST_VAR(obj, df::building_weaponst, bld)) + obj->gate_flags.bits.closed = false; + break; + } default: break; } From 0b72b42b7e6e202675e2a8d8f98ecf76d50ced39 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Thu, 23 Mar 2023 00:59:05 -0700 Subject: [PATCH 006/115] allow metal chests to be melted --- docs/changelog.txt | 1 + plugins/automelt.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 0abd926d2..df909c0b1 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -40,6 +40,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: - `tailor` now properly discriminates between dyed and undyed cloth and no longer defaults to using adamantine ## Misc Improvements +- `automelt`: now allows metal chests to be melted (workaround for DF bug 2493 is no longer needed) ## Documentation diff --git a/plugins/automelt.cpp b/plugins/automelt.cpp index 0cd9e8131..beb4cba35 100644 --- a/plugins/automelt.cpp +++ b/plugins/automelt.cpp @@ -293,7 +293,7 @@ static inline bool can_melt(df::item *item) df::item_type t = item->getType(); - if (t == df::enums::item_type::BOX || t == df::enums::item_type::BAR) + if (t == df::enums::item_type::BAR) return false; for (auto &g : item->general_refs) From 90aed848bb5390278663ffad7b0cdd9fb7d17d85 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Thu, 23 Mar 2023 02:17:36 -0700 Subject: [PATCH 007/115] add minimize button to orders overlay panel --- docs/changelog.txt | 1 + docs/plugins/orders.rst | 7 ++- plugins/lua/orders.lua | 100 ++++++++++++++++++++++++++++++---------- 3 files changed, 81 insertions(+), 27 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 2b88261f8..cbc38fab7 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -42,6 +42,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: ## Misc Improvements - `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 ## Documentation diff --git a/docs/plugins/orders.rst b/docs/plugins/orders.rst index 6fe159899..08e05c6ca 100644 --- a/docs/plugins/orders.rst +++ b/docs/plugins/orders.rst @@ -48,8 +48,11 @@ is open via an `overlay` widget. There are hotkeys assigned to export, import, sort, and clear. You can also click on the hotkey hints as if they were buttons. Clearing will ask for confirmation before acting. -If you want to change where the hotkey hints appear, you can move them via -`gui/overlay`. +If you want to change where the overlay panel appears, you can move it via +`gui/overlay`. If you just need to get the overlay out of the way temporarily, +for example to read a long description of a historical figure when choosing a +subject for a statue, click on the small arrow in the upper right corner of the +overlay panel. Click on the arrow again to restore the panel. The orders library ------------------ diff --git a/plugins/lua/orders.lua b/plugins/lua/orders.lua index 72bb6185e..6f5bc677a 100644 --- a/plugins/lua/orders.lua +++ b/plugins/lua/orders.lua @@ -46,37 +46,87 @@ OrdersOverlay.ATTRS{ default_enabled=true, viewscreens='dwarfmode/Info/WORK_ORDERS', frame={w=30, h=4}, - frame_style=gui.MEDIUM_FRAME, - frame_background=gui.CLEAR_PEN, } function OrdersOverlay:init() - self:addviews{ - widgets.HotkeyLabel{ - frame={t=0, l=0}, - label='import', - key='CUSTOM_CTRL_I', - on_activate=do_import, - }, - widgets.HotkeyLabel{ - frame={t=1, l=0}, - label='export', - key='CUSTOM_CTRL_E', - on_activate=do_export, - }, - widgets.HotkeyLabel{ - frame={t=0, l=15}, - label='sort', - key='CUSTOM_CTRL_O', - on_activate=do_sort, + self.minimized = false + + local main_panel = widgets.Panel{ + frame={t=0, l=0, r=0, h=4}, + frame_style=gui.MEDIUM_FRAME, + frame_background=gui.CLEAR_PEN, + visible=function() return not self.minimized end, + subviews={ + widgets.HotkeyLabel{ + frame={t=0, l=0}, + label='import', + key='CUSTOM_CTRL_I', + auto_width=true, + on_activate=do_import, + }, + widgets.HotkeyLabel{ + frame={t=1, l=0}, + label='export', + key='CUSTOM_CTRL_E', + auto_width=true, + on_activate=do_export, + }, + widgets.HotkeyLabel{ + frame={t=0, l=15}, + label='sort', + key='CUSTOM_CTRL_O', + auto_width=true, + on_activate=do_sort, + }, + widgets.HotkeyLabel{ + frame={t=1, l=15}, + label='clear', + key='CUSTOM_CTRL_C', + auto_width=true, + on_activate=do_clear, + }, }, - widgets.HotkeyLabel{ - frame={t=1, l=15}, - label='clear', - key='CUSTOM_CTRL_C', - on_activate=do_clear, + } + + local minimized_panel = widgets.Panel{ + frame={t=0, r=0, w=3, h=1}, + subviews={ + widgets.Label{ + frame={t=0, l=0, w=1, h=1}, + text='[', + text_pen=COLOR_RED, + visible=function() return self.minimized end, + }, + widgets.Label{ + frame={t=0, l=1, w=1, h=1}, + text={{text=function() return self.minimized and string.char(31) or string.char(30) end}}, + text_pen=dfhack.pen.parse{fg=COLOR_BLACK, bg=COLOR_GREY}, + text_hpen=dfhack.pen.parse{fg=COLOR_BLACK, bg=COLOR_WHITE}, + on_click=function() self.minimized = not self.minimized end, + }, + widgets.Label{ + frame={t=0, r=0, w=1, h=1}, + text=']', + text_pen=COLOR_RED, + visible=function() return self.minimized end, + }, }, } + + self:addviews{ + main_panel, + minimized_panel, + } +end + +function OrdersOverlay:onInput(keys) + if keys.CUSTOM_ALT_M then + self.minimized = not self.minimized + return true + end + if OrdersOverlay.super.onInput(self, keys) then + return true + end end OVERLAY_WIDGETS = { From a4c9a5116fef314b58101e48a690f847c7a9acff Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Wed, 15 Mar 2023 17:15:48 -0700 Subject: [PATCH 008/115] install the stockpiles settings library --- data/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 89abe3aaf..355182bfb 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") From 8c0b59c5486b67b8f9f97c7d194914e710d3070a Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Wed, 15 Mar 2023 17:16:18 -0700 Subject: [PATCH 009/115] add the stockpiles user data directory --- data/dfhack-config/stockpiles/README.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 data/dfhack-config/stockpiles/README.md diff --git a/data/dfhack-config/stockpiles/README.md b/data/dfhack-config/stockpiles/README.md new file mode 100644 index 000000000..593d45fb6 --- /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) From e21c55d6ffc1d5ac3a0fb608f3eadeb7ab1dd944 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Wed, 15 Mar 2023 17:16:42 -0700 Subject: [PATCH 010/115] update stockpiles command and use new data paths --- docs/plugins/stockpiles.rst | 79 +++++--- plugins/lua/stockpiles.lua | 299 ++++++++++-------------------- plugins/stockpiles/stockpiles.cpp | 167 +++++++++-------- 3 files changed, 239 insertions(+), 306 deletions(-) diff --git a/docs/plugins/stockpiles.rst b/docs/plugins/stockpiles.rst index 01cd3159b..7ca0c5039 100644 --- a/docs/plugins/stockpiles.rst +++ b/docs/plugins/stockpiles.rst @@ -1,41 +1,68 @@ -.. _stocksettings: - stockpiles ========== .. dfhack-tool:: - :summary: Import and export stockpile settings. + :summary: Import, export, or modify stockpile settings and features. :tags: fort design productivity stockpiles - :no-command: - -.. dfhack-command:: savestock - :summary: Exports the configuration of the selected stockpile. - -.. dfhack-command:: loadstock - :summary: Imports configuration for the selected stockpile. -Select a stockpile in the UI first to use these commands. +If you are importing or exporting setting and don't want to specify a building +ID, select a stockpile in the UI before running the command. Usage ----- -``savestock `` - Saves the currently highlighted stockpile's settings to a file in your - Dwarf Fortress folder. This file can be used to copy settings between game - saves or players. -``loadstock `` - Loads a saved stockpile settings file and applies it to the currently - selected stockpile. +:: -Filenames with spaces are not supported. Generated materials, divine metals, -etc. are not saved as they are different in every world. + stockpiles [status] + stockpiles list [] + stockpiles export [] + stockpiles import [] + +Exported stockpile settings are saved in the ``dfhack-config/stockpiles`` +folder, where you can view and delete them, if desired. Names can only +contain numbers, letters, periods, underscores, dashes, and spaces. If +the name has spaces, be sure to surround it with double quotes (:kbd:`"`). + +The names of library settings files are all prefixed by the string ``library/``. +You can specify library files explicitly by including the prefix, or you can +just write the short name to use a player-exported file by that name if it +exists, and the library file if it doesn't. Examples -------- -``savestock food`` - Export the stockpile settings for the currently selected stockpile to a - file named ``food.dfstock``. -``loadstock food`` - Set the selected stockpile settings to those saved in the ``food.dfstock`` - file. +``stockpiles`` + Shows the list of all your stockpiles and some relevant statistics. +``stockpiles list`` + Shows the list of previously exported stockpile settings files, including + the stockpile configuration library. +``stockpiles list plants`` + Shows the list of exported stockpile settings files that include the + substring ``plants``. +``stockpiles import library/plants`` + Imports the library ``plants`` settings file into the currently selected + stockpile. +``stockpiles import plants`` + Imports a player-exported settings file named ``plants``, or the library + ``plants`` settings file if a player-exported file by that name doesn't + exist. +``stockpiles export mysettings`` + Export the settings for the currently selected stockpile to a file named + ``dfhack-config/stockpiles/mysettings.dfstock``. + +Options +------- + +``-s``, ``--stockpile `` + Specify a specific stockpile ID instead of using the one currently selected + in the UI. + +.. _stockpiles-library: + +The stockpiles settings library +------------------------------- + +DFHack comes with a library of useful stockpile settings files that are ready +for import: + +TODO: port alias library here diff --git a/plugins/lua/stockpiles.lua b/plugins/lua/stockpiles.lua index ca8c28cd4..723ff97f6 100644 --- a/plugins/lua/stockpiles.lua +++ b/plugins/lua/stockpiles.lua @@ -1,244 +1,135 @@ local _ENV = mkmodule('plugins.stockpiles') ---[[ +local argparse = require('argparse') - Native functions: +local STOCKPILES_DIR = "dfhack-config/stockpiles"; +local STOCKPILES_LIBRARY_DIR = "hack/data/stockpiles"; - * stockpiles_list_settings(dir_path), list files in directory - * stockpiles_load(file), with full path - * stockpiles_save(file), with full path - * isEnabled() - ---]] --- -function safe_require(module) - local status, module = pcall(require, module) - return status and module or nil +local function get_sp_name(name, num) + if #name > 0 then return name end + return ('Stockpile %d'):format(num) end - -local gui = require 'gui' -local widgets = require('gui.widgets') -local dlg = require('gui.dialogs') -local script = require 'gui.script' -local persist = safe_require('persist-table') - - -function ListFilterDialog(args) - args.text = args.prompt or 'Type or select an option' - args.text_pen = COLOR_WHITE - args.with_filter = true - args.icon_width = 2 - - local choices = {} - - if not args.hide_none then - table.insert(choices, { - icon = '?', text = args.none_caption or 'none', - index = -1, name = -1 - }) +local STATUS_FMT = '%6s %s' +local function print_status() + local sps = df.global.world.buildings.other.STOCKPILE + print(('Current stockpiles: %d'):format(#sps)) + if #sps > 0 then + print() + print(STATUS_FMT:format('ID', 'Name')) + print(STATUS_FMT:format('------', '----------')) end - - local filter = args.item_filter - - for i,v in ipairs(args.items) do - if not filter or filter(v,-1) then - local name = v - local icon - table.insert(choices, { - icon = icon, search_key = string.lower(name), text = name, index = i - }) - end + for _,sp in ipairs(sps) do + print(STATUS_FMT:format(sp.id, get_sp_name(sp.name, sp.stockpile_number))) end +end - args.choices = choices - - if args.on_select then - local cb = args.on_select - args.on_select = function(idx, obj) - return cb(obj.index, args.items[obj.index]) +local function list_dir(path, prefix, filters) + local paths = dfhack.filesystem.listdir_recursive(path, 0, false) + if not paths then + dfhack.printerr(('Cannot find stockpile settings directory: "%s"'):format(path)) + return + end + local normalized_filters = {} + for _,filter in ipairs(filters or {}) do + table.insert(normalized_filters, filter:lower()) + end + for _,v in ipairs(paths) do + local normalized_path = prefix .. v.path:lower() + if v.isdir or not normalized_path:endswith('.dfstock') then goto continue end + normalized_path = normalized_path:sub(1, -9) + if #normalized_filters > 0 then + local matched = false + for _,filter in ipairs(normalized_filters) do + if normalized_path:find(filter, 1, true) then + matched = true + break + end + end + if not matched then goto continue end end + print(('%s%s'):format(prefix, v.path:sub(1, -9))) + ::continue:: end - - return dlg.ListBox(args) end -function showFilterPrompt(title, list, text,item_filter,hide_none) - ListFilterDialog{ - frame_title=title, - items=list, - prompt=text, - item_filter=item_filter, - hide_none=hide_none, - on_select=script.mkresume(true), - on_cancel=script.mkresume(false), - on_close=script.qresume(nil) - }:show() - - return script.wait() +local function list_settings_files(filters) + list_dir(STOCKPILES_DIR, '', filters) + list_dir(STOCKPILES_LIBRARY_DIR, 'library/', filters) end -function init() - if persist == nil then return end - if dfhack.isMapLoaded() then - if persist.GlobalTable.stockpiles == nil then - persist.GlobalTable.stockpiles = {} - persist.GlobalTable.stockpiles['settings_path'] = './stocksettings' - end +local function assert_safe_name(name) + if not name or #name == 0 then + qerror('name missing or empty') end -end - -function tablify(iterableObject) - t={} - for k,v in ipairs(iterableObject) do - t[k] = v~=nil and v or 'nil' + if name:find('[^%a ._-]') then + qerror('name can only contain numbers, letters, periods, underscores, dashes, and spaces') end - return t end -local filename_invalid_regex = '[^A-Za-z0-9 ._-]' - -function valid_filename(filename) - return not filename:match(filename_invalid_regex) +local function get_sp_id(opts) + if opts.id then return opts.id end + local sp = dfhack.gui.getSelectedStockpile() + if sp then return sp.id end + return nil end -function sanitize_filename(filename) - local ret = '' - for i = 1, #filename do - local ch = filename:sub(i, i) - if valid_filename(ch) then - ret = ret .. ch - else - ret = ret .. '-' - end - end - return ret +local function export_stockpile(name, opts) + assert_safe_name(name) + name = STOCKPILES_DIR .. '/' .. name + stockpiles_export(name, get_sp_id(opts)) end -FilenameInputBox = defclass(FilenameInputBox, dlg.InputBox) -function FilenameInputBox:onInput(keys) - if not valid_filename(string.char(keys._STRING or 0)) and not keys.STRING_A000 then - keys._STRING = nil +local function import_stockpile(name, opts) + local is_library = false + if name:startswith('library/') then + name = name:sub(9) + is_library = true end - FilenameInputBox.super.onInput(self, keys) -end - -function showFilenameInputPrompt(title, text, tcolor, input, min_width) - FilenameInputBox{ - frame_title = title, - text = text, - text_pen = tcolor, - input = input, - frame_width = min_width, - on_input = script.mkresume(true), - on_cancel = script.mkresume(false), - on_close = script.qresume(nil) - }:show() - - return script.wait() + assert_safe_name(name) + if not is_library and dfhack.filesystem.exists(STOCKPILES_DIR .. '/' .. name .. '.dfstock') then + name = STOCKPILES_DIR .. '/' .. name + else + name = STOCKPILES_LIBRARY_DIR .. '/' .. name + end + stockpiles_import(name, get_sp_id(opts)) end -function load_settings() - init() - local path = get_path() - local ok, list = pcall(stockpiles_list_settings, path) - if not ok then - show_message_box("Stockpile Settings", "The stockpile settings folder doesn't exist.", true) - return - end - if #list == 0 then - show_message_box("Stockpile Settings", "There are no saved stockpile settings.", true) +local function process_args(opts, args) + if args[1] == 'help' then + opts.help = true return end - local choice_list = {} - for i,v in ipairs(list) do - choice_list[i] = string.gsub(v, "/", "/ ") - choice_list[i] = string.gsub(choice_list[i], "-", " - ") - choice_list[i] = string.gsub(choice_list[i], "_", " ") - end - - script.start(function() - local ok2,index,name=showFilterPrompt('Stockpile Settings', choice_list, 'Choose a stockpile', function(item) return true end, true) - if ok2 then - local filename = list[index]; - stockpiles_load(path..'/'..filename) - end - end) -end - -function save_settings(stockpile) - init() - script.start(function() - local suggested = stockpile.name - if #suggested == 0 then - suggested = 'Stock1' - end - suggested = sanitize_filename(suggested) - local path = get_path() - local sok,filename = showFilenameInputPrompt('Stockpile Settings', 'Enter filename', COLOR_WHITE, suggested) - if sok then - if filename == nil or filename == '' or not valid_filename(filename) then - script.showMessage('Stockpile Settings', 'Invalid File Name', COLOR_RED) - else - if not dfhack.filesystem.exists(path) then - dfhack.filesystem.mkdir(path) - end - stockpiles_save(path..'/'..filename) - end - end - end) -end - -function manage_settings(sp) - init() - if not guard() then return false end - script.start(function() - local list = {'Load', 'Save'} - local tok,i = script.showListPrompt('Stockpile Settings','Load or Save Settings?',COLOR_WHITE,tablify(list)) - if tok then - if i == 1 then - load_settings() - else - save_settings(sp) - end - end - end) + return argparse.processArgsGetopt(args, { + {'h', 'help', handler=function() opts.help = true end}, + {'s', 'stockpile', has_arg=true, + handler=function(arg) opts.id = argparse.nonnegativeInt(art, 'stockpile') end}, + }) end -function show_message_box(title, msg, iserror) - local color = COLOR_WHITE - if iserror then - color = COLOR_RED - end - script.start(function() - script.showMessage(title, msg, color) - end) -end +function parse_commandline(args) + local opts = {} + local positionals = process_args(opts, args) -function guard() - if not string.match(dfhack.gui.getCurFocus(), '^dwarfmode/QueryBuilding/Some/Stockpile') then - qerror("This script requires a stockpile selected in the 'q' mode") + if opts.help or not positionals then return false end - return true -end -function set_path(path) - init() - if persist == nil then - qerror("This version of DFHack doesn't support setting the stockpile settings path. Sorry.") - return + local command = table.remove(positionals, 1) + if not command or command == 'status' then + print_status() + elseif command == 'list' then + list_settings_files(positionals) + elseif command == 'export' then + export_stockpile(positionals[1], opts) + elseif command == 'import' then + import_stockpile(positionals[1], opts) + else + return false end - persist.GlobalTable.stockpiles['settings_path'] = path -end -function get_path() - init() - if persist == nil then - return "stocksettings" - end - return persist.GlobalTable.stockpiles['settings_path'] + return true end return _ENV diff --git a/plugins/stockpiles/stockpiles.cpp b/plugins/stockpiles/stockpiles.cpp index 98c94ace0..e7b3525ef 100644 --- a/plugins/stockpiles/stockpiles.cpp +++ b/plugins/stockpiles/stockpiles.cpp @@ -1,13 +1,19 @@ #include "Debug.h" +#include "LuaTools.h" #include "PluginManager.h" #include "StockpileUtils.h" #include "StockpileSerializer.h" #include "modules/Filesystem.h" -#include "modules/Gui.h" -using std::vector; +#include "df/building.h" +#include "df/building_stockpilest.h" + +#include +#include + using std::string; +using std::vector; using namespace DFHack; @@ -19,112 +25,121 @@ namespace DFHack { DBG_DECLARE(stockpiles, log, DebugCategory::LINFO); } -static command_result savestock(color_ostream& out, vector & parameters); -static command_result loadstock(color_ostream& out, vector & parameters); +static command_result do_command(color_ostream &out, vector ¶meters); + +DFhackCExport command_result plugin_init(color_ostream &out, std::vector &commands) { + DEBUG(log,out).print("initializing %s\n", plugin_name); -DFhackCExport command_result plugin_init(color_ostream& out, std::vector & commands) { - commands.push_back(PluginCommand( - "savestock", - "Save the active stockpile's settings to a file.", - savestock, - Gui::any_stockpile_hotkey)); commands.push_back(PluginCommand( - "loadstock", - "Load and apply stockpile settings from a file.", - loadstock, - Gui::any_stockpile_hotkey)); + plugin_name, + "Import, export, or modify stockpile settings and features.", + do_command)); return CR_OK; } -DFhackCExport command_result plugin_shutdown(color_ostream& out) { - return CR_OK; +static bool call_stockpiles_lua(color_ostream *out, const char *fn_name, + int nargs = 0, int nres = 0, + Lua::LuaLambda && args_lambda = Lua::DEFAULT_LUA_LAMBDA, + Lua::LuaLambda && res_lambda = Lua::DEFAULT_LUA_LAMBDA) { + DEBUG(log).print("calling stockpiles lua function: '%s'\n", fn_name); + + CoreSuspender guard; + + auto L = Lua::Core::State; + Lua::StackUnwinder top(L); + + if (!out) + out = &Core::getInstance().getConsole(); + + return Lua::CallLuaModuleFunction(*out, L, "plugins.stockpiles", fn_name, + nargs, nres, + std::forward(args_lambda), + std::forward(res_lambda)); } -// exporting -static command_result savestock(color_ostream& out, vector & parameters) { - df::building_stockpilest* sp = Gui::getSelectedStockpile(out, true); - if (!sp) { - out.printerr("Selected building isn't a stockpile.\n"); - return CR_WRONG_USAGE; +static command_result do_command(color_ostream &out, vector ¶meters) { + CoreSuspender suspend; + + bool show_help = false; + if (!call_stockpiles_lua(&out, "parse_commandline", 1, 1, + [&](lua_State *L) { + Lua::PushVector(L, parameters); + }, + [&](lua_State *L) { + show_help = !lua_toboolean(L, -1); + })) { + return CR_FAILURE; } - if (parameters.size() > 2) { - out.printerr("Invalid parameters\n"); - return CR_WRONG_USAGE; - } + return show_help ? CR_WRONG_USAGE : CR_OK; +} - std::string file; - for (size_t i = 0; i < parameters.size(); ++i) { - const std::string o = parameters.at(i); - if (!o.empty() && o[0] != '-') { - file = o; - } - } - if (file.empty()) { - out.printerr("You must supply a valid filename.\n"); - return CR_WRONG_USAGE; +///////////////////////////////////////////////////// +// Lua API +// + +static df::building_stockpilest* get_stockpile(int id) { + return virtual_cast(df::building::find(id)); +} + +static bool stockpiles_export(color_ostream& out, string fname, int id) { + df::building_stockpilest* sp = get_stockpile(id); + if (!sp) { + out.printerr("Specified building isn't a stockpile: %d.\n", id); + return false; } - StockpileSerializer cereal(sp); + if (!is_dfstockfile(fname)) + fname += ".dfstock"; - if (!is_dfstockfile(file)) file += ".dfstock"; try { - if (!cereal.serialize_to_file(file)) { - out.printerr("could not save to %s\n", file.c_str()); - return CR_FAILURE; + StockpileSerializer cereal(sp); + if (!cereal.serialize_to_file(fname)) { + out.printerr("could not save to '%s'\n", fname.c_str()); + return false; } } catch (std::exception& e) { out.printerr("serialization failed: protobuf exception: %s\n", e.what()); - return CR_FAILURE; + return false; } - return CR_OK; + return true; } - -// importing -static command_result loadstock(color_ostream& out, vector & parameters) { - df::building_stockpilest* sp = Gui::getSelectedStockpile(out, true); +static bool stockpiles_import(color_ostream& out, string fname, int id) { + df::building_stockpilest* sp = get_stockpile(id); if (!sp) { - out.printerr("Selected building isn't a stockpile.\n"); - return CR_WRONG_USAGE; + out.printerr("Specified building isn't a stockpile: %d.\n", id); + return false; } - if (parameters.size() < 1 || parameters.size() > 2) { - out.printerr("Invalid parameters\n"); - return CR_WRONG_USAGE; - } + if (!is_dfstockfile(fname)) + fname += ".dfstock"; - std::string file; - for (size_t i = 0; i < parameters.size(); ++i) { - const std::string o = parameters.at(i); - if (!o.empty() && o[0] != '-') { - file = o; - } - } - if (file.empty()) { - out.printerr("ERROR: missing .dfstock file parameter\n"); - return DFHack::CR_WRONG_USAGE; - } - if (!is_dfstockfile(file)) - file += ".dfstock"; - if (!Filesystem::exists(file)) { - out.printerr("ERROR: the .dfstock file doesn't exist: %s\n", file.c_str()); - return CR_WRONG_USAGE; + if (!Filesystem::exists(fname)) { + out.printerr("ERROR: file doesn't exist: '%s'\n", fname.c_str()); + return false; } - StockpileSerializer cereal(sp); try { - if (!cereal.unserialize_from_file(file)) { - out.printerr("unserialization failed: %s\n", file.c_str()); - return CR_FAILURE; + StockpileSerializer cereal(sp); + if (!cereal.unserialize_from_file(fname)) { + out.printerr("deserialization failed: '%s'\n", fname.c_str()); + return false; } } catch (std::exception& e) { - out.printerr("unserialization failed: protobuf exception: %s\n", e.what()); - return CR_FAILURE; + out.printerr("deserialization failed: protobuf exception: %s\n", e.what()); + return false; } - return CR_OK; + + return true; } + +DFHACK_PLUGIN_LUA_FUNCTIONS { + DFHACK_LUA_FUNCTION(stockpiles_export), + DFHACK_LUA_FUNCTION(stockpiles_import), + DFHACK_LUA_END +}; From 13cd825fedcda1421641a6430f0c98e7edfe76e9 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Wed, 15 Mar 2023 18:04:17 -0700 Subject: [PATCH 011/115] rename category files to identify them more clearly --- .../{ammo.dfstock => category_ammo.dfstock} | Bin ...imalsprefix.dfstock => category_animals.dfstock} | 0 .../{armorprefix.dfstock => category_armor.dfstock} | Bin ...sprefix.dfstock => category_bars_blocks.dfstock} | Bin .../{clothprefix.dfstock => category_cloth.dfstock} | 0 .../{coinsprefix.dfstock => category_coins.dfstock} | Bin ...rpsesprefix.dfstock => category_corpses.dfstock} | Bin ...efix.dfstock => category_finished_goods.dfstock} | Bin .../{foodprefix.dfstock => category_food.dfstock} | 0 ...fstock => category_furniture_siege_ammo.dfstock} | Bin .../{gemsprefix.dfstock => category_gems.dfstock} | Bin ...atherprefix.dfstock => category_leather.dfstock} | 0 .../{refuse.dfstock => category_refuse.dfstock} | 0 .../{sheetprefix.dfstock => category_sheet.dfstock} | Bin .../{stone.dfstock => category_stone.dfstock} | Bin ...ock => category_weapons_trap_components.dfstock} | Bin 16 files changed, 0 insertions(+), 0 deletions(-) rename data/stockpiles/{ammo.dfstock => category_ammo.dfstock} (100%) rename data/stockpiles/{animalsprefix.dfstock => category_animals.dfstock} (100%) rename data/stockpiles/{armorprefix.dfstock => category_armor.dfstock} (100%) rename data/stockpiles/{barsprefix.dfstock => category_bars_blocks.dfstock} (100%) rename data/stockpiles/{clothprefix.dfstock => category_cloth.dfstock} (100%) rename data/stockpiles/{coinsprefix.dfstock => category_coins.dfstock} (100%) rename data/stockpiles/{corpsesprefix.dfstock => category_corpses.dfstock} (100%) rename data/stockpiles/{finishedgoodsprefix.dfstock => category_finished_goods.dfstock} (100%) rename data/stockpiles/{foodprefix.dfstock => category_food.dfstock} (100%) rename data/stockpiles/{furnitureprefix.dfstock => category_furniture_siege_ammo.dfstock} (100%) rename data/stockpiles/{gemsprefix.dfstock => category_gems.dfstock} (100%) rename data/stockpiles/{leatherprefix.dfstock => category_leather.dfstock} (100%) rename data/stockpiles/{refuse.dfstock => category_refuse.dfstock} (100%) rename data/stockpiles/{sheetprefix.dfstock => category_sheet.dfstock} (100%) rename data/stockpiles/{stone.dfstock => category_stone.dfstock} (100%) rename data/stockpiles/{weaponsprefix.dfstock => category_weapons_trap_components.dfstock} (100%) diff --git a/data/stockpiles/ammo.dfstock b/data/stockpiles/category_ammo.dfstock similarity index 100% rename from data/stockpiles/ammo.dfstock rename to data/stockpiles/category_ammo.dfstock diff --git a/data/stockpiles/animalsprefix.dfstock b/data/stockpiles/category_animals.dfstock similarity index 100% rename from data/stockpiles/animalsprefix.dfstock rename to data/stockpiles/category_animals.dfstock diff --git a/data/stockpiles/armorprefix.dfstock b/data/stockpiles/category_armor.dfstock similarity index 100% rename from data/stockpiles/armorprefix.dfstock rename to data/stockpiles/category_armor.dfstock diff --git a/data/stockpiles/barsprefix.dfstock b/data/stockpiles/category_bars_blocks.dfstock similarity index 100% rename from data/stockpiles/barsprefix.dfstock rename to data/stockpiles/category_bars_blocks.dfstock diff --git a/data/stockpiles/clothprefix.dfstock b/data/stockpiles/category_cloth.dfstock similarity index 100% rename from data/stockpiles/clothprefix.dfstock rename to data/stockpiles/category_cloth.dfstock diff --git a/data/stockpiles/coinsprefix.dfstock b/data/stockpiles/category_coins.dfstock similarity index 100% rename from data/stockpiles/coinsprefix.dfstock rename to data/stockpiles/category_coins.dfstock diff --git a/data/stockpiles/corpsesprefix.dfstock b/data/stockpiles/category_corpses.dfstock similarity index 100% rename from data/stockpiles/corpsesprefix.dfstock rename to data/stockpiles/category_corpses.dfstock diff --git a/data/stockpiles/finishedgoodsprefix.dfstock b/data/stockpiles/category_finished_goods.dfstock similarity index 100% rename from data/stockpiles/finishedgoodsprefix.dfstock rename to data/stockpiles/category_finished_goods.dfstock diff --git a/data/stockpiles/foodprefix.dfstock b/data/stockpiles/category_food.dfstock similarity index 100% rename from data/stockpiles/foodprefix.dfstock rename to data/stockpiles/category_food.dfstock diff --git a/data/stockpiles/furnitureprefix.dfstock b/data/stockpiles/category_furniture_siege_ammo.dfstock similarity index 100% rename from data/stockpiles/furnitureprefix.dfstock rename to data/stockpiles/category_furniture_siege_ammo.dfstock diff --git a/data/stockpiles/gemsprefix.dfstock b/data/stockpiles/category_gems.dfstock similarity index 100% rename from data/stockpiles/gemsprefix.dfstock rename to data/stockpiles/category_gems.dfstock diff --git a/data/stockpiles/leatherprefix.dfstock b/data/stockpiles/category_leather.dfstock similarity index 100% rename from data/stockpiles/leatherprefix.dfstock rename to data/stockpiles/category_leather.dfstock diff --git a/data/stockpiles/refuse.dfstock b/data/stockpiles/category_refuse.dfstock similarity index 100% rename from data/stockpiles/refuse.dfstock rename to data/stockpiles/category_refuse.dfstock diff --git a/data/stockpiles/sheetprefix.dfstock b/data/stockpiles/category_sheet.dfstock similarity index 100% rename from data/stockpiles/sheetprefix.dfstock rename to data/stockpiles/category_sheet.dfstock diff --git a/data/stockpiles/stone.dfstock b/data/stockpiles/category_stone.dfstock similarity index 100% rename from data/stockpiles/stone.dfstock rename to data/stockpiles/category_stone.dfstock diff --git a/data/stockpiles/weaponsprefix.dfstock b/data/stockpiles/category_weapons_trap_components.dfstock similarity index 100% rename from data/stockpiles/weaponsprefix.dfstock rename to data/stockpiles/category_weapons_trap_components.dfstock From 3f0a93a9b117c8e9f76f79cecd470795f1d1be61 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Wed, 15 Mar 2023 18:04:46 -0700 Subject: [PATCH 012/115] document my aspirations --- docs/plugins/stockpiles.rst | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/docs/plugins/stockpiles.rst b/docs/plugins/stockpiles.rst index 7ca0c5039..c0b697c4b 100644 --- a/docs/plugins/stockpiles.rst +++ b/docs/plugins/stockpiles.rst @@ -53,10 +53,39 @@ Examples Options ------- +``-i``, ``--include `` + When exporting, you can include this option to select only specific elements + of the stockpile to record. If not specified, everything is included. When + the file is later imported, only the included settings will be modified. The + options are explained below in the next section. +``-d``, ``--disable`` + When importing, treat the settings in the file as elements to *remove** from + the current stockpile configuration. Elements that are enabled in the file + will be *disabled* on the stockpile. No other stockpile configuration will + be changed. +``-e``, ``--enable`` + When importing, treat the settings in the file as elements to *add* to the + current stockpile configuration. Elements that are enabled in the file will + be enabled on the stockpile, but nothing currently enabled on the stockpile + will be disabled. ``-s``, ``--stockpile `` Specify a specific stockpile ID instead of using the one currently selected in the UI. +Configuration elements +---------------------- + +The different configuration elements you can include in an exported settings file +are: + +:general: Max bins, barrels, and wheelbarrows; whether the stockpile takes from + links only; whether organic and/or inorganic materials are allowed. +:categories: The top-level categories of items that are enabled for the stockpile, + like Ammo, Finished goods, or Stone. +:types: The elements below the categories, which include the sub-categories, the + specific item types, and any toggles the category might have (like Prepared + meals for the Food category). + .. _stockpiles-library: The stockpiles settings library From 5a317820f96e19d32f84869b6c96f16b314c1e3c Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Wed, 15 Mar 2023 21:54:48 -0700 Subject: [PATCH 013/115] new logic for deserialization --- docs/about/Removed.rst | 7 + docs/plugins/stockpiles.rst | 34 +- plugins/lua/stockpiles.lua | 52 +- plugins/stockpiles/StockpileSerializer.cpp | 1213 ++++++++++++-------- plugins/stockpiles/StockpileSerializer.h | 264 ++--- plugins/stockpiles/proto/stockpiles.proto | 72 +- plugins/stockpiles/stockpiles.cpp | 14 +- 7 files changed, 972 insertions(+), 684 deletions(-) diff --git a/docs/about/Removed.rst b/docs/about/Removed.rst index 01669fac4..4a8cdbccf 100644 --- a/docs/about/Removed.rst +++ b/docs/about/Removed.rst @@ -193,6 +193,13 @@ 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. + .. _warn-stuck-trees: warn-stuck-trees diff --git a/docs/plugins/stockpiles.rst b/docs/plugins/stockpiles.rst index c0b697c4b..83cfada02 100644 --- a/docs/plugins/stockpiles.rst +++ b/docs/plugins/stockpiles.rst @@ -53,24 +53,23 @@ Examples Options ------- +``-s``, ``--stockpile `` + Specify a specific stockpile ID instead of using the one currently selected + in the UI. ``-i``, ``--include `` When exporting, you can include this option to select only specific elements of the stockpile to record. If not specified, everything is included. When the file is later imported, only the included settings will be modified. The options are explained below in the next section. -``-d``, ``--disable`` - When importing, treat the settings in the file as elements to *remove** from - the current stockpile configuration. Elements that are enabled in the file - will be *disabled* on the stockpile. No other stockpile configuration will - be changed. -``-e``, ``--enable`` - When importing, treat the settings in the file as elements to *add* to the - current stockpile configuration. Elements that are enabled in the file will - be enabled on the stockpile, but nothing currently enabled on the stockpile - will be disabled. -``-s``, ``--stockpile `` - Specify a specific stockpile ID instead of using the one currently selected - in the UI. +``-m``, ``--mode (set|enable|disable)`` + When importing, choose the algorithm used to apply the settings. In ``set`` + mode (the default), the stockpile is cleared and the settings in the file + are enabled. In ``enable`` mode, enabled settings in the file are *added* + to the stockpile, but no other settings are changed. In ``disable`` mode, + enabled settings in the file are *removed* from the current stockpile + configuration, and nothing else is changed. +``-f``, ``--filter `` + When importing, only modify the settings that contain the given substring. Configuration elements ---------------------- @@ -78,10 +77,11 @@ Configuration elements The different configuration elements you can include in an exported settings file are: -:general: Max bins, barrels, and wheelbarrows; whether the stockpile takes from - links only; whether organic and/or inorganic materials are allowed. -:categories: The top-level categories of items that are enabled for the stockpile, - like Ammo, Finished goods, or Stone. +:containers: Max bins, max barrels, and num wheelbarrows. +:general: Whether the stockpile takes from links only and whether organic + and/or inorganic materials are allowed. +:categories: The top-level categories of items that are enabled for the + stockpile, like Ammo, Finished goods, or Stone. :types: The elements below the categories, which include the sub-categories, the specific item types, and any toggles the category might have (like Prepared meals for the Food category). diff --git a/plugins/lua/stockpiles.lua b/plugins/lua/stockpiles.lua index 723ff97f6..6770c044e 100644 --- a/plugins/lua/stockpiles.lua +++ b/plugins/lua/stockpiles.lua @@ -74,10 +74,25 @@ local function get_sp_id(opts) return nil end +local included_elements = { + containers=1, + general=2, + categories=4, + types=8, +} + local function export_stockpile(name, opts) assert_safe_name(name) name = STOCKPILES_DIR .. '/' .. name - stockpiles_export(name, get_sp_id(opts)) + + local includedElements = 0 + for _,inc in ipairs(opts.includes) do + if included_elements[inc] then + includedElements = includedElements | included_elements[inc] + end + end + + stockpiles_export(name, get_sp_id(opts), includedElements) end local function import_stockpile(name, opts) @@ -92,7 +107,28 @@ local function import_stockpile(name, opts) else name = STOCKPILES_LIBRARY_DIR .. '/' .. name end - stockpiles_import(name, get_sp_id(opts)) + stockpiles_import(name, get_sp_id(opts), opts.mode, opts.filter) +end + +local valid_includes = {general=true, categories=true, types=true} + +local function parse_include(arg) + local includes = argparse.stringList(arg, 'include') + for _,v in ipairs(includes) do + if not valid_includes[v] then + qerror(('invalid included element: "%s"'):format(v)) + end + end + return includes +end + +local valid_modes = {set=true, enable=true, disable=true} + +local function parse_mode(arg) + if not valid_modes[arg] then + qerror(('invalid mode: "%s"'):format(arg)) + end + return arg end local function process_args(opts, args) @@ -101,10 +137,20 @@ local function process_args(opts, args) return end + opts.includes = {} + opts.mode = 'set' + opts.filter = '' + return argparse.processArgsGetopt(args, { + {'f', 'filter', has_arg=true, + handler=function(arg) opts.filter = arg end}, {'h', 'help', handler=function() opts.help = true end}, + {'i', 'include', has_arg=true, + handler=function(arg) opts.includes = parse_include(arg) end}, + {'m', 'mode', has_arg=true, + handler=function(arg) opts.mode = parse_mode(arg) end}, {'s', 'stockpile', has_arg=true, - handler=function(arg) opts.id = argparse.nonnegativeInt(art, 'stockpile') end}, + handler=function(arg) opts.id = argparse.nonnegativeInt(arg, 'stockpile') end}, }) end diff --git a/plugins/stockpiles/StockpileSerializer.cpp b/plugins/stockpiles/StockpileSerializer.cpp index 65feb2711..04e7cb9fa 100644 --- a/plugins/stockpiles/StockpileSerializer.cpp +++ b/plugins/stockpiles/StockpileSerializer.cpp @@ -44,23 +44,121 @@ namespace DFHack { DBG_EXTERN(stockpiles, log); } -StockpileSerializer::StockpileSerializer(df::building_stockpilest* stockpile) - : mPile(stockpile) { +static struct OtherMatsFurniture { + const std::map mats; + + OtherMatsFurniture() : mats(getMats()) {} + + std::map getMats() { + std::map ret; + ret.emplace(0, "WOOD"); + ret.emplace(1, "PLANT_CLOTH"); + ret.emplace(2, "BONE"); + ret.emplace(3, "TOOTH"); + ret.emplace(4, "HORN"); + ret.emplace(5, "PEARL"); + ret.emplace(6, "SHELL"); + ret.emplace(7, "LEATHER"); + ret.emplace(8, "SILK"); + ret.emplace(9, "AMBER"); + ret.emplace(10, "CORAL"); + ret.emplace(11, "GREEN_GLASS"); + ret.emplace(12, "CLEAR_GLASS"); + ret.emplace(13, "CRYSTAL_GLASS"); + ret.emplace(14, "YARN"); + return ret; + } +} mOtherMatsFurniture; + +static struct OtherMatsBars { + const std::map mats; + + OtherMatsBars() : mats(getMats()) {} + + std::map getMats() { + std::map ret; + ret.emplace(0, "COAL"); + ret.emplace(1, "POTASH"); + ret.emplace(2, "ASH"); + ret.emplace(3, "PEARLASH"); + ret.emplace(4, "SOAP"); + return ret; + } +} mOtherMatsBars; + +static struct OtherMatsBlocks { + const std::map mats; + + OtherMatsBlocks() : mats(getMats()) {} + + std::map getMats() { + std::map ret; + ret.emplace(0, "GREEN_GLASS"); + ret.emplace(1, "CLEAR_GLASS"); + ret.emplace(2, "CRYSTAL_GLASS"); + ret.emplace(3, "WOOD"); + return ret; + } +} mOtherMatsBlocks; + +static struct OtherMatsFinishedGoods { + const std::map mats; + + OtherMatsFinishedGoods() : mats(getMats()) {} + + std::map getMats() { + std::map ret; + ret.emplace(0, "WOOD"); + ret.emplace(1, "PLANT_CLOTH"); + ret.emplace(2, "BONE"); + ret.emplace(3, "TOOTH"); + ret.emplace(4, "HORN"); + ret.emplace(5, "PEARL"); + ret.emplace(6, "SHELL"); + ret.emplace(7, "LEATHER"); + ret.emplace(8, "SILK"); + ret.emplace(9, "AMBER"); + ret.emplace(10, "CORAL"); + ret.emplace(11, "GREEN_GLASS"); + ret.emplace(12, "CLEAR_GLASS"); + ret.emplace(13, "CRYSTAL_GLASS"); + ret.emplace(14, "YARN"); + ret.emplace(15, "WAX"); + return ret; + } +} mOtherMatsFinishedGoods; + +static struct OtherMatsWeaponsArmor { + const std::map mats; + + OtherMatsWeaponsArmor() : mats(getMats()) {} + + std::map getMats() { + std::map ret; + ret.emplace(0, "WOOD"); + ret.emplace(1, "PLANT_CLOTH"); + ret.emplace(2, "BONE"); + ret.emplace(3, "SHELL"); + ret.emplace(4, "LEATHER"); + ret.emplace(5, "SILK"); + ret.emplace(6, "GREEN_GLASS"); + ret.emplace(7, "CLEAR_GLASS"); + ret.emplace(8, "CRYSTAL_GLASS"); + ret.emplace(9, "YARN"); + return ret; + } +} mOtherMatsWeaponsArmor; - // build other_mats indices - furniture_setup_other_mats(); - bars_blocks_setup_other_mats(); - finished_goods_setup_other_mats(); - weapons_armor_setup_other_mats(); -} +StockpileSerializer::StockpileSerializer(df::building_stockpilest* stockpile) + : mPile(stockpile) { } StockpileSerializer::~StockpileSerializer() { } -bool StockpileSerializer::serialize_to_ostream(std::ostream* output) { +bool StockpileSerializer::serialize_to_ostream(std::ostream* output, uint32_t includedElements) { if (output->fail()) return false; mBuffer.Clear(); - write(); + write(includedElements); { io::OstreamOutputStream zero_copy_output(output); if (!mBuffer.SerializeToZeroCopyStream(&zero_copy_output)) @@ -69,109 +167,246 @@ bool StockpileSerializer::serialize_to_ostream(std::ostream* output) { return output->good(); } -bool StockpileSerializer::serialize_to_file(const std::string& file) { +bool StockpileSerializer::serialize_to_file(const std::string& file, uint32_t includedElements) { std::fstream output(file, std::ios::out | std::ios::binary | std::ios::trunc); if (output.fail()) { - WARN(log).print("ERROR: failed to open file for writing: '%s'\n", file.c_str()); + WARN(log).print("ERROR: failed to open file for writing: '%s'\n", + file.c_str()); return false; } - return serialize_to_ostream(&output); + return serialize_to_ostream(&output, includedElements); } -bool StockpileSerializer::parse_from_istream(std::istream* input) { +bool StockpileSerializer::parse_from_istream(std::istream* input, DeserializeMode mode, const std::string& filter) { if (input->fail()) return false; mBuffer.Clear(); io::IstreamInputStream zero_copy_input(input); - const bool res = mBuffer.ParseFromZeroCopyStream(&zero_copy_input) && input->eof(); + const bool res = mBuffer.ParseFromZeroCopyStream(&zero_copy_input) + && input->eof(); if (res) - read(); + read(mode, filter); return res; } -bool StockpileSerializer::unserialize_from_file(const std::string& file) { +bool StockpileSerializer::unserialize_from_file(const std::string& file, DeserializeMode mode, const string& filter) { std::fstream input(file, std::ios::in | std::ios::binary); if (input.fail()) { - WARN(log).print("failed to open file for reading: '%s'\n", file.c_str()); + WARN(log).print("failed to open file for reading: '%s'\n", + file.c_str()); return false; } - return parse_from_istream(&input); -} - -void StockpileSerializer::write() { - DEBUG(log).print("GROUP SET %s\n", bitfield_to_string(mPile->settings.flags).c_str()); - write_general(); - if (mPile->settings.flags.bits.animals) - write_animals(); - if (mPile->settings.flags.bits.food) - write_food(); - if (mPile->settings.flags.bits.furniture) - write_furniture(); - if (mPile->settings.flags.bits.refuse) - write_refuse(); - if (mPile->settings.flags.bits.stone) - write_stone(); - if (mPile->settings.flags.bits.ammo) - write_ammo(); - if (mPile->settings.flags.bits.coins) - write_coins(); - if (mPile->settings.flags.bits.bars_blocks) - write_bars_blocks(); - if (mPile->settings.flags.bits.gems) - write_gems(); - if (mPile->settings.flags.bits.finished_goods) - write_finished_goods(); - if (mPile->settings.flags.bits.leather) - write_leather(); - if (mPile->settings.flags.bits.cloth) - write_cloth(); - if (mPile->settings.flags.bits.wood) - write_wood(); - if (mPile->settings.flags.bits.weapons) - write_weapons(); - if (mPile->settings.flags.bits.armor) - write_armor(); -} - -void StockpileSerializer::read() { - DEBUG(log).print("==READ==\n"); - read_general(); - read_animals(); - read_food(); - read_furniture(); - read_refuse(); - read_stone(); - read_ammo(); - read_coins(); - read_bars_blocks(); - read_gems(); - read_finished_goods(); - read_leather(); - read_cloth(); - read_wood(); - read_weapons(); - read_armor(); -} - -void StockpileSerializer::serialize_list_organic_mat(FuncWriteExport add_value, const std::vector* list, organic_mat_category::organic_mat_category cat) { + return parse_from_istream(&input, mode, filter); +} + +/** + * Find an enum's value based off the string label. + * @param traits the enum's trait struct + * @param token the string value in key_table + * @return the enum's value, -1 if not found + */ +template +static typename df::enum_traits::base_type linear_index(df::enum_traits traits, const std::string& token) { + auto j = traits.first_item_value; + auto limit = traits.last_item_value; + // sometimes enums start at -1, which is bad news for array indexing + if (j < 0) { + j += abs(traits.first_item_value); + limit += abs(traits.first_item_value); + } + for (; j <= limit; ++j) { + if (token.compare(traits.key_table[j]) == 0) + return j; + } + return -1; +} + +/** + * There are many repeated (un)serialization cases throughout the stockpile_settings structure, + * so the most common cases have been generalized into generic functions using lambdas. + * + * The basic process to serialize a stockpile_settings structure is: + * 1. loop through the list + * 2. for every element that is TRUE: + * 3. map the specific stockpile_settings index into a general material, creature, etc index + * 4. verify that type is allowed in the list (e.g., no stone in gems stockpiles) + * 5. add it to the protobuf using FuncWriteExport + * + * The unserialization process is the same in reverse. + */ +static bool serialize_list_itemdef(FuncWriteExport add_value, + std::vector list, + std::vector items, + item_type::item_type type) { + bool all = true; + for (size_t i = 0; i < list.size(); ++i) { + if (!list.at(i)) { + all = false; + continue; + } + const df::itemdef* a = items.at(i); + // skip procedurally generated items + if (a->base_flags.is_set(df::itemdef_flags::GENERATED)) + continue; + ItemTypeInfo ii; + if (!ii.decode(type, i)) + continue; + add_value(ii.getToken()); + DEBUG(log).print("itemdef type %zd is %s\n", i, ii.getToken().c_str()); + } + return all; +} + +static void unserialize_list_itemdef(FuncReadImport read_value, + int32_t list_size, + std::vector* pile_list, + item_type::item_type type) { + pile_list->clear(); + pile_list->resize(Items::getSubtypeCount(type), '\0'); + for (int i = 0; i < list_size; ++i) { + std::string token = read_value(i); + ItemTypeInfo ii; + if (!ii.find(token)) + continue; + DEBUG(log).print("itemdef %d is %s\n", ii.subtype, token.c_str()); + if (size_t(ii.subtype) >= pile_list->size()) { + WARN(log).print("itemdef index too large! idx[%d] max_size[%zd]\n", ii.subtype, pile_list->size()); + continue; + } + pile_list->at(ii.subtype) = 1; + } +} + +static bool serialize_list_quality(FuncWriteExport add_value, + const bool(&quality_list)[7]) { + using df::enums::item_quality::item_quality; + using quality_traits = df::enum_traits; + + bool all = true; + for (size_t i = 0; i < 7; ++i) { + if (!quality_list[i]) { + all = false; + continue; + } + const std::string f_type(quality_traits::key_table[i]); + add_value(f_type); + DEBUG(log).print("quality: %zd is %s\n", i, f_type.c_str()); + } + return all; +} + +static void quality_clear(bool(&pile_list)[7]) { + std::fill(pile_list, pile_list + 7, false); +} + +static void unserialize_list_quality(FuncReadImport read_value, + int32_t list_size, + bool(&pile_list)[7]) { + quality_clear(pile_list); + if (list_size > 0 && list_size <= 7) { + using df::enums::item_quality::item_quality; + df::enum_traits quality_traits; + for (int i = 0; i < list_size; ++i) { + const std::string quality = read_value(i); + df::enum_traits::base_type idx = linear_index(quality_traits, quality); + if (idx < 0) { + WARN(log).print("invalid quality token: %s\n", quality.c_str()); + continue; + } + DEBUG(log).print("quality: %d is %s\n", idx, quality.c_str()); + pile_list[idx] = true; + } + } +} + +static string other_mats_index(const std::map other_mats, + int idx) { + auto it = other_mats.find(idx); + if (it == other_mats.end()) + return std::string(); + return it->second; +} + +static int other_mats_token(const std::map other_mats, + const std::string& token) { + for (auto it = other_mats.begin(); it != other_mats.end(); ++it) { + if (it->second == token) + return it->first; + } + return -1; +} + +static bool serialize_list_other_mats( + const std::map other_mats, + FuncWriteExport add_value, + std::vector list) { + bool all = true; + for (size_t i = 0; i < list.size(); ++i) { + if (!list.at(i)) { + all = false; + continue; + } + const std::string token = other_mats_index(other_mats, i); + if (token.empty()) { + WARN(log).print("invalid other material with index %zd\n", i); + continue; + } + add_value(token); + DEBUG(log).print("other mats %zd is %s\n", i, token.c_str()); + } + return all; +} + +static void unserialize_list_other_mats( + const std::map other_mats, + FuncReadImport read_value, + int32_t list_size, + std::vector* pile_list) { + pile_list->clear(); + pile_list->resize(other_mats.size(), '\0'); + for (int i = 0; i < list_size; ++i) { + const std::string token = read_value(i); + size_t idx = other_mats_token(other_mats, token); + if (idx < 0) { + WARN(log).print("invalid other mat with token %s\n", token.c_str()); + continue; + } + DEBUG(log).print("other_mats %zd is %s\n", idx, token.c_str()); + if (idx >= pile_list->size()) { + WARN(log).print("other_mats index too large! idx[%zd] max_size[%zd]\n", idx, pile_list->size()); + continue; + } + pile_list->at(idx) = 1; + } +} + +static bool serialize_list_organic_mat(FuncWriteExport add_value, + const std::vector* list, + organic_mat_category::organic_mat_category cat) { + bool all = true; if (!list) { DEBUG(log).print("serialize_list_organic_mat: list null\n"); - return; + return all; } for (size_t i = 0; i < list->size(); ++i) { - if (list->at(i)) { - std::string token = OrganicMatLookup::food_token_by_idx(cat, i); - if (token.empty()) { - DEBUG(log).print("food mat invalid :(\n"); - continue; - } - DEBUG(log).print("organic_material %zd is %s\n", i, token.c_str()); - add_value(token); + if (!list->at(i)) { + all = false; + continue; + } + std::string token = OrganicMatLookup::food_token_by_idx(cat, i); + if (token.empty()) { + DEBUG(log).print("food mat invalid :(\n"); + continue; } + DEBUG(log).print("organic_material %zd is %s\n", i, token.c_str()); + add_value(token); } + return all; } -void StockpileSerializer::unserialize_list_organic_mat(FuncReadImport get_value, size_t list_size, std::vector* pile_list, organic_mat_category::organic_mat_category cat) { +static void unserialize_list_organic_mat(FuncReadImport get_value, + size_t list_size, std::vector* pile_list, + organic_mat_category::organic_mat_category cat) { pile_list->clear(); pile_list->resize(OrganicMatLookup::food_max_size(cat), '\0'); for (size_t i = 0; i < list_size; ++i) { @@ -186,14 +421,21 @@ void StockpileSerializer::unserialize_list_organic_mat(FuncReadImport get_value, } } -void StockpileSerializer::serialize_list_item_type(FuncItemAllowed is_allowed, FuncWriteExport add_value, const std::vector& list) { +static bool serialize_list_item_type(FuncItemAllowed is_allowed, + FuncWriteExport add_value, const std::vector& list) { using df::enums::item_type::item_type; using type_traits = df::enum_traits; + + bool all = true; size_t num_item_types = list.size(); - DEBUG(log).print("item_type size = %zd size limit = %d typecasted: %zd\n", num_item_types, type_traits::last_item_value, (size_t)type_traits::last_item_value); + DEBUG(log).print("item_type size = %zd size limit = %d typecasted: %zd\n", + num_item_types, type_traits::last_item_value, + (size_t)type_traits::last_item_value); for (size_t i = 0; i <= (size_t)type_traits::last_item_value; ++i) { - if (i < num_item_types && !list.at(i)) + if (i < num_item_types && !list.at(i)) { + all = false; continue; + } const item_type type = (item_type)((df::enum_traits::base_type)i); std::string r_type(type_traits::key_table[i + 1]); if (!is_allowed(type)) @@ -201,9 +443,12 @@ void StockpileSerializer::serialize_list_item_type(FuncItemAllowed is_allowed, F add_value(r_type); DEBUG(log).print("item_type key_table[%zd] type[%d] is %s\n", i + 1, (int16_t)type, r_type.c_str()); } + return all; } -void StockpileSerializer::unserialize_list_item_type(FuncItemAllowed is_allowed, FuncReadImport read_value, int32_t list_size, std::vector* pile_list) { +static void unserialize_list_item_type(FuncItemAllowed is_allowed, + FuncReadImport read_value, int32_t list_size, + std::vector* pile_list) { pile_list->clear(); pile_list->resize(112, '\0'); // TODO remove hardcoded list size value for (size_t i = 0; i < pile_list->size(); ++i) { @@ -227,20 +472,27 @@ void StockpileSerializer::unserialize_list_item_type(FuncItemAllowed is_allowed, } } -void StockpileSerializer::serialize_list_material(FuncMaterialAllowed is_allowed, FuncWriteExport add_value, const std::vector& list) { +static bool serialize_list_material(FuncMaterialAllowed is_allowed, + FuncWriteExport add_value, const std::vector& list) { + bool all = true; MaterialInfo mi; for (size_t i = 0; i < list.size(); ++i) { - if (list.at(i)) { - mi.decode(0, i); - if (!is_allowed(mi)) - continue; - DEBUG(log).print("material %zd is %s\n", i, mi.getToken().c_str()); - add_value(mi.getToken()); + if (!list.at(i)) { + all = false; + continue; } + mi.decode(0, i); + if (!is_allowed(mi)) + continue; + DEBUG(log).print("material %zd is %s\n", i, mi.getToken().c_str()); + add_value(mi.getToken()); } + return all; } -void StockpileSerializer::unserialize_list_material(FuncMaterialAllowed is_allowed, FuncReadImport read_value, int32_t list_size, std::vector* pile_list) { +static void unserialize_list_material(FuncMaterialAllowed is_allowed, + FuncReadImport read_value, int32_t list_size, + std::vector* pile_list) { // we initialize all possible (allowed) values to 0, // then all other not-allowed values to 1 // why? because that's how the memory is in DF before @@ -267,150 +519,346 @@ void StockpileSerializer::unserialize_list_material(FuncMaterialAllowed is_allow } } -void StockpileSerializer::serialize_list_quality(FuncWriteExport add_value, const bool(&quality_list)[7]) { - using df::enums::item_quality::item_quality; - using quality_traits = df::enum_traits; - for (size_t i = 0; i < 7; ++i) { - if (quality_list[i]) { - const std::string f_type(quality_traits::key_table[i]); - add_value(f_type); - DEBUG(log).print("quality: %zd is %s\n", i, f_type.c_str()); - } +template +static void write_cat(bool include_types, uint32_t cat_flags, + enum df::stockpile_group_set::Mask cat_mask, + std::function mutable_cat_fn, + std::function write_cat_fn) { + if (!(cat_flags & cat_mask)) + return; + + T_cat_set* cat_set = mutable_cat_fn(); + if (!include_types) { + cat_set->set_all(true); + return; } -} -void StockpileSerializer::quality_clear(bool(&pile_list)[7]) { - std::fill(pile_list, pile_list + 7, false); + if (write_cat_fn(cat_set)) { + // all fields were set. might as well clear them and use the "all" flag + cat_set->Clear(); + cat_set->set_all(true); + } } -void StockpileSerializer::unserialize_list_quality(FuncReadImport read_value, int32_t list_size, bool(&pile_list)[7]) { - quality_clear(pile_list); - if (list_size > 0 && list_size <= 7) { - using df::enums::item_quality::item_quality; - df::enum_traits quality_traits; - for (int i = 0; i < list_size; ++i) { - const std::string quality = read_value(i); - df::enum_traits::base_type idx = linear_index(quality_traits, quality); - if (idx < 0) { - WARN(log).print("invalid quality token: %s\n", quality.c_str()); - continue; - } - DEBUG(log).print("quality: %d is %s\n", idx, quality.c_str()); - pile_list[idx] = true; - } +void StockpileSerializer::write(uint32_t includedElements) { + if (includedElements & INCLUDED_ELEMENTS_CONTAINERS) + write_containers(); + if (includedElements & INCLUDED_ELEMENTS_GENERAL) + write_general(); + + if (!(includedElements & INCLUDED_ELEMENTS_CATEGORIES)) + return; + + DEBUG(log).print("GROUP SET %s\n", + bitfield_to_string(mPile->settings.flags).c_str()); + + bool include_types = 0 != (includedElements & INCLUDED_ELEMENTS_TYPES); + + write_cat(include_types, mPile->settings.flags.whole, + mPile->settings.flags.mask_ammo, + std::bind(&StockpileSettings::mutable_ammo, mBuffer), + std::bind(&StockpileSerializer::write_ammo, this, _1)); + + if (mPile->settings.flags.bits.animals) { + StockpileSettings::AnimalsSet* animals = mBuffer.mutable_animals(); + if (include_types) write_animals(animals); else animals->set_all(true); + } + if (mPile->settings.flags.bits.armor) { + StockpileSettings::ArmorSet* armor = mBuffer.mutable_armor(); + if (include_types) write_armor(armor); else armor->set_all(true); + } + if (mPile->settings.flags.bits.bars_blocks) { + StockpileSettings::BarsBlocksSet* bars_blocks = mBuffer.mutable_barsblocks(); + if (include_types) write_bars_blocks(bars_blocks); else bars_blocks->set_all(true); + } + if (mPile->settings.flags.bits.cloth) { + StockpileSettings::ClothSet* cloth = mBuffer.mutable_cloth(); + if (include_types) write_cloth(cloth); else cloth->set_all(true); + } + if (mPile->settings.flags.bits.coins) { + StockpileSettings::CoinSet* coins = mBuffer.mutable_coin(); + if (include_types) write_coins(coins); else coins->set_all(true); + } + if (mPile->settings.flags.bits.finished_goods) { + StockpileSettings::FinishedGoodsSet* finished_goods = mBuffer.mutable_finished_goods(); + if (include_types) write_finished_goods(finished_goods); else finished_goods->set_all(true); + } + if (mPile->settings.flags.bits.food) { + StockpileSettings::FoodSet* food = mBuffer.mutable_food(); + if (include_types) write_food(food); else food->set_all(true); + } + if (mPile->settings.flags.bits.furniture) { + StockpileSettings::FurnitureSet* furniture = mBuffer.mutable_furniture(); + if (include_types) write_furniture(furniture); else furniture->set_all(true); + } + if (mPile->settings.flags.bits.gems) { + StockpileSettings::GemsSet* gems = mBuffer.mutable_gems(); + if (include_types) write_gems(gems); else gems->set_all(true); + } + if (mPile->settings.flags.bits.leather) { + StockpileSettings::LeatherSet* leather = mBuffer.mutable_leather(); + if (include_types) write_leather(leather); else leather->set_all(true); + } + if (mPile->settings.flags.bits.corpses) { + StockpileSettings::CorpsesSet* corpses = mBuffer.mutable_corpses_v50(); + if (include_types) write_corpses(corpses); else corpses->set_all(true); + } + if (mPile->settings.flags.bits.refuse) { + StockpileSettings::RefuseSet* refuse = mBuffer.mutable_refuse(); + if (include_types) write_refuse(refuse); else refuse->set_all(true); + } + if (mPile->settings.flags.bits.sheet) { + StockpileSettings::SheetSet* sheet = mBuffer.mutable_sheet(); + if (include_types) write_sheet(sheet); else sheet->set_all(true); + } + if (mPile->settings.flags.bits.stone) { + StockpileSettings::StoneSet* stone = mBuffer.mutable_stone(); + if (include_types) write_stone(stone); else stone->set_all(true); + } + if (mPile->settings.flags.bits.weapons) { + StockpileSettings::WeaponsSet* weapons = mBuffer.mutable_weapons(); + if (include_types) write_weapons(weapons); else weapons->set_all(true); + } + if (mPile->settings.flags.bits.wood) { + StockpileSettings::WoodSet* wood = mBuffer.mutable_wood(); + if (include_types) write_wood(wood); else wood->set_all(true); } } -void StockpileSerializer::serialize_list_other_mats(const std::map other_mats, FuncWriteExport add_value, std::vector list) { - for (size_t i = 0; i < list.size(); ++i) { - if (list.at(i)) { - const std::string token = other_mats_index(other_mats, i); - if (token.empty()) { - WARN(log).print("invalid other material with index %zd\n", i); - continue; - } - add_value(token); - DEBUG(log).print("other mats %zd is %s\n", i, token.c_str()); - } - } +void StockpileSerializer::read(DeserializeMode mode, const std::string& filter) { + DEBUG(log).print("==READ==\n"); + read_containers(mode); + read_general(mode); + read_ammo(mode, filter); + read_animals(mode, filter); + read_armor(mode, filter); + read_bars_blocks(mode, filter); + read_cloth(mode, filter); + read_coins(mode, filter); + read_finished_goods(mode, filter); + read_food(mode, filter); + read_furniture(mode, filter); + read_gems(mode, filter); + read_leather(mode, filter); + + // support for old versions before corpses had a set + if (mBuffer.has_corpses()) { + StockpileSettings::CorpsesSet* corpses = mBuffer.mutable_corpses_v50(); + corpses->set_all(true); + } + read_corpses(mode, filter); + + read_refuse(mode, filter); + read_sheet(mode, filter); + read_stone(mode, filter); + read_weapons(mode, filter); + read_wood(mode, filter); +} + +void StockpileSerializer::write_containers() { + mBuffer.set_max_bins(mPile->max_bins); + mBuffer.set_max_barrels(mPile->max_barrels); + mBuffer.set_max_wheelbarrows(mPile->max_wheelbarrows); } -void StockpileSerializer::unserialize_list_other_mats(const std::map other_mats, FuncReadImport read_value, int32_t list_size, std::vector* pile_list) { - pile_list->clear(); - pile_list->resize(other_mats.size(), '\0'); - for (int i = 0; i < list_size; ++i) { - const std::string token = read_value(i); - size_t idx = other_mats_token(other_mats, token); - if (idx < 0) { - WARN(log).print("invalid other mat with token %s\n", token.c_str()); - continue; - } - DEBUG(log).print("other_mats %zd is %s\n", idx, token.c_str()); - if (idx >= pile_list->size()) { - WARN(log).print("other_mats index too large! idx[%zd] max_size[%zd]\n", idx, pile_list->size()); - continue; - } - pile_list->at(idx) = 1; +template +static void read_elem(const char *name, DeserializeMode mode, + std::function has_elem_fn, + std::function elem_fn, + T_elem &setting) { + bool has_elem = has_elem_fn(); + bool is_set = has_elem && elem_fn() != 0; + bool just_disable = is_set && mode == DESERIALIZE_MODE_DISABLE; + + if (mode == DESERIALIZE_MODE_SET || just_disable) { + DEBUG(log).print("clearing %s\n", name); + setting = 0; } -} -void StockpileSerializer::serialize_list_itemdef(FuncWriteExport add_value, std::vector list, std::vector items, item_type::item_type type) { - for (size_t i = 0; i < list.size(); ++i) { - if (list.at(i)) { - const df::itemdef* a = items.at(i); - // skip procedurally generated items - if (a->base_flags.is_set(df::itemdef_flags::GENERATED)) - continue; - ItemTypeInfo ii; - if (!ii.decode(type, i)) - continue; - add_value(ii.getToken()); - DEBUG(log).print("itemdef type %zd is %s\n", i, ii.getToken().c_str()); - } + if (!has_elem || just_disable) + return; + + if (mode == DESERIALIZE_MODE_SET || is_set) { + T_elem val = (mode == DESERIALIZE_MODE_DISABLE) ? 0 : elem_fn(); + DEBUG(log).print("setting %s=%d\n", name, val); + setting = val; } } -void StockpileSerializer::unserialize_list_itemdef(FuncReadImport read_value, int32_t list_size, std::vector* pile_list, item_type::item_type type) { - pile_list->clear(); - pile_list->resize(Items::getSubtypeCount(type), '\0'); - for (int i = 0; i < list_size; ++i) { - std::string token = read_value(i); - ItemTypeInfo ii; - if (!ii.find(token)) - continue; - DEBUG(log).print("itemdef %d is %s\n", ii.subtype, token.c_str()); - if (size_t(ii.subtype) >= pile_list->size()) { - WARN(log).print("itemdef index too large! idx[%d] max_size[%zd]\n", ii.subtype, pile_list->size()); - continue; - } - pile_list->at(ii.subtype) = 1; +template +static void read_category(const char *name, DeserializeMode mode, + std::function has_cat_fn, + std::function cat_fn, + uint32_t & cat_flags, + enum df::stockpile_group_set::Mask cat_mask, + std::function clear_fn, + std::function set_fn) { + bool has_cat = has_cat_fn(); + bool all = has_cat && cat_fn().has_all() && cat_fn().all(); + bool just_disable = all && mode == DESERIALIZE_MODE_DISABLE; + + if (mode == DESERIALIZE_MODE_SET || just_disable) { + DEBUG(log).print("clearing %s\n", name); + cat_flags &= ~cat_mask; + clear_fn(); } -} -std::string StockpileSerializer::other_mats_index(const std::map other_mats, int idx) { - auto it = other_mats.find(idx); - if (it == other_mats.end()) - return std::string(); - return it->second; + if (!has_cat || just_disable) + return; + + if (mode == DESERIALIZE_MODE_DISABLE && !(cat_flags & cat_mask)) + return; + + if (mode == DESERIALIZE_MODE_SET || mode == DESERIALIZE_MODE_ENABLE) + cat_flags |= cat_mask; + + bool force = mode == DESERIALIZE_MODE_SET || all; + char val = (mode == DESERIALIZE_MODE_DISABLE) ? (char)0 : (char)1; + DEBUG(log).print("setting %s %s elements to %d\n", + all ? "all" : "marked", name, val); + set_fn(force, val); } -int StockpileSerializer::other_mats_token(const std::map other_mats, const std::string& token) { - for (auto it = other_mats.begin(); it != other_mats.end(); ++it) { - if (it->second == token) - return it->first; - } - return -1; +void StockpileSerializer::read_containers(DeserializeMode mode) { + read_elem("max_bins", mode, + std::bind(&StockpileSettings::has_max_bins, mBuffer), + std::bind(&StockpileSettings::max_bins, mBuffer), + mPile->max_bins); + read_elem("max_barrels", mode, + std::bind(&StockpileSettings::has_max_barrels, mBuffer), + std::bind(&StockpileSettings::max_barrels, mBuffer), + mPile->max_barrels); + read_elem("max_wheelbarrows", mode, + std::bind(&StockpileSettings::has_max_wheelbarrows, mBuffer), + std::bind(&StockpileSettings::max_wheelbarrows, mBuffer), + mPile->max_wheelbarrows); } void StockpileSerializer::write_general() { - mBuffer.set_max_bins(mPile->max_bins); - mBuffer.set_max_wheelbarrows(mPile->max_wheelbarrows); - mBuffer.set_max_barrels(mPile->max_barrels); mBuffer.set_use_links_only(mPile->use_links_only); mBuffer.set_allow_inorganic(mPile->settings.allow_inorganic); mBuffer.set_allow_organic(mPile->settings.allow_organic); - mBuffer.set_corpses(mPile->settings.flags.bits.corpses); -} - -void StockpileSerializer::read_general() { - if (mBuffer.has_max_bins()) - mPile->max_bins = mBuffer.max_bins(); - if (mBuffer.has_max_wheelbarrows()) - mPile->max_wheelbarrows = mBuffer.max_wheelbarrows(); - if (mBuffer.has_max_barrels()) - mPile->max_barrels = mBuffer.max_barrels(); - if (mBuffer.has_use_links_only()) - mPile->use_links_only = mBuffer.use_links_only(); - if (mBuffer.has_allow_inorganic()) - mPile->settings.allow_inorganic = mBuffer.allow_inorganic(); - if (mBuffer.has_allow_organic()) - mPile->settings.allow_organic = mBuffer.allow_organic(); - if (mBuffer.has_corpses()) - mPile->settings.flags.bits.corpses = mBuffer.corpses(); -} - -void StockpileSerializer::write_animals() { - StockpileSettings::AnimalsSet* animals = mBuffer.mutable_animals(); +} + +void StockpileSerializer::read_general(DeserializeMode mode) { + read_elem("use_links_only", mode, + std::bind(&StockpileSettings::has_use_links_only, mBuffer), + std::bind(&StockpileSettings::use_links_only, mBuffer), + mPile->use_links_only); + read_elem("allow_inorganic", mode, + std::bind(&StockpileSettings::has_allow_inorganic, mBuffer), + std::bind(&StockpileSettings::allow_inorganic, mBuffer), + mPile->settings.allow_inorganic); + read_elem("allow_organic", mode, + std::bind(&StockpileSettings::has_allow_organic, mBuffer), + std::bind(&StockpileSettings::allow_organic, mBuffer), + mPile->settings.allow_organic); +} + +static bool ammo_mat_is_allowed(const MaterialInfo& mi) { + return mi.isValid() && mi.material && mi.material->flags.is_set(material_flags::IS_METAL); +} + +bool StockpileSerializer::write_ammo(StockpileSettings::AmmoSet* ammo) { + bool all = true; + + // ammo type + all = serialize_list_itemdef( + [=](const std::string& token) { ammo->add_type(token); }, + mPile->settings.ammo.type, + std::vector(world->raws.itemdefs.ammo.begin(), world->raws.itemdefs.ammo.end()), + item_type::AMMO) && all; + + // metal + all = serialize_list_material( + ammo_mat_is_allowed, + [=](const std::string& token) { ammo->add_mats(token); }, + mPile->settings.ammo.mats) && all; + + // other mats - only wood and bone are expected + if (mPile->settings.ammo.other_mats.size() > 2) { + WARN(log).print("ammo other materials > 2: %zd\n", + mPile->settings.ammo.other_mats.size()); + } + + size_t num_other_mats = std::min(size_t(2), + mPile->settings.ammo.other_mats.size()); + for (size_t i = 0; i < num_other_mats; ++i) { + if (!mPile->settings.ammo.other_mats.at(i)) { + all = false; + continue; + } + const std::string token = i == 0 ? "WOOD" : "BONE"; + ammo->add_other_mats(token); + DEBUG(log).print("other mats %zd is %s\n", i, token.c_str()); + } + + // quality core + all = serialize_list_quality( + [=](const std::string& token) { ammo->add_quality_core(token); }, + mPile->settings.ammo.quality_core) && all; + + // quality total + all = serialize_list_quality( + [=](const std::string& token) { ammo->add_quality_total(token); }, + mPile->settings.ammo.quality_total) && all; + + return all; +} + +void StockpileSerializer::read_ammo(DeserializeMode mode, const std::string& filter) { + read_category("ammo", mode, + std::bind(&StockpileSettings::has_ammo, mBuffer), + std::bind(&StockpileSettings::ammo, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_ammo, + [&]() { + auto & pammo = mPile->settings.ammo; + pammo.type.clear(); + pammo.mats.clear(); + pammo.other_mats.clear(); + quality_clear(pammo.quality_core); + quality_clear(pammo.quality_total); + }, + [&](bool force, char val) { + auto & bammo = mBuffer.ammo(); + auto & pammo = mPile->settings.ammo; + // ammo type + unserialize_list_itemdef( + [=](const size_t& idx) -> const std::string& { return bammo.type(idx); }, + bammo.type_size(), &pammo.type, item_type::AMMO); + + // materials metals + unserialize_list_material(ammo_mat_is_allowed, + [=](const size_t& idx) -> const std::string& { return bammo.mats(idx); }, + bammo.mats_size(), &pammo.mats); + + // others + pammo.other_mats.clear(); + pammo.other_mats.resize(2, '\0'); + if (bammo.other_mats_size() > 0) { + // TODO remove hardcoded value + for (int i = 0; i < bammo.other_mats_size(); ++i) { + const std::string token = bammo.other_mats(i); + const int32_t idx = token == "WOOD" ? 0 : token == "BONE" ? 1 + : -1; + DEBUG(log).print("other mats %d is %s\n", idx, token.c_str()); + if (idx != -1) + pammo.other_mats.at(idx) = 1; + } + } + + // core quality + unserialize_list_quality([=](const size_t& idx) -> const std::string& { return bammo.quality_core(idx); }, + bammo.quality_core_size(), pammo.quality_core); + + // total quality + unserialize_list_quality([=](const size_t& idx) -> const std::string& { return bammo.quality_total(idx); }, + bammo.quality_total_size(), pammo.quality_total); + }); +} + +void StockpileSerializer::write_animals(StockpileSettings::AnimalsSet* animals) { animals->set_empty_cages(mPile->settings.animals.empty_cages); animals->set_empty_traps(mPile->settings.animals.empty_traps); for (size_t i = 0; i < mPile->settings.animals.enabled.size(); ++i) { @@ -422,36 +870,42 @@ void StockpileSerializer::write_animals() { } } -void StockpileSerializer::read_animals() { - if (mBuffer.has_animals()) { - mPile->settings.flags.bits.animals = 1; - DEBUG(log).print("animals:\n"); - mPile->settings.animals.empty_cages = mBuffer.animals().empty_cages(); - mPile->settings.animals.empty_traps = mBuffer.animals().empty_traps(); - - mPile->settings.animals.enabled.clear(); - mPile->settings.animals.enabled.resize(world->raws.creatures.all.size(), '\0'); - DEBUG(log).print("pile has %zd\n", mPile->settings.animals.enabled.size()); - for (auto i = 0; i < mBuffer.animals().enabled_size(); ++i) { - std::string id = mBuffer.animals().enabled(i); - int idx = find_creature(id); - DEBUG(log).print("%s %d\n", id.c_str(), idx); - if (idx < 0 || size_t(idx) >= mPile->settings.animals.enabled.size()) { - WARN(log).print("animal index invalid: %d\n", idx); - continue; - } - mPile->settings.animals.enabled.at(idx) = (char)1; - } - } - else { - mPile->settings.animals.enabled.clear(); - mPile->settings.flags.bits.animals = 0; - mPile->settings.animals.empty_cages = false; - mPile->settings.animals.empty_traps = false; - } +void StockpileSerializer::read_animals(DeserializeMode mode, const std::string& filter) { + read_category("animals", mode, + std::bind(&StockpileSettings::has_animals, mBuffer), + std::bind(&StockpileSettings::animals, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_animals, + [&]() { + auto & panimals = mPile->settings.animals; + panimals.empty_cages = false; + panimals.empty_traps = false; + panimals.enabled.clear(); + }, + [&](bool force, char val) { + auto & banimals = mBuffer.animals(); + auto & panimals = mPile->settings.animals; + if (force || banimals.empty_cages()) + panimals.empty_cages = banimals.empty_cages() && val; + if (force || banimals.empty_traps()) + panimals.empty_traps = banimals.empty_traps() && val; + + panimals.enabled.resize(world->raws.creatures.all.size(), '\0'); + for (auto i = 0; i < banimals.enabled_size(); ++i) { + const std::string& id = banimals.enabled(i); + int idx = find_creature(id); + DEBUG(log).print("%s %d\n", id.c_str(), idx); + if (idx < 0 || size_t(idx) >= panimals.enabled.size()) { + WARN(log).print("animal index invalid: %d\n", idx); + continue; + } + if (!filter.size() || id.find(filter) != id.npos) + panimals.enabled.at(idx) = val; + } + }); } -StockpileSerializer::food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_category cat) { +food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_category cat) { using df::enums::organic_mat_category::organic_mat_category; using namespace std::placeholders; switch (cat) { @@ -633,8 +1087,7 @@ StockpileSerializer::food_pair StockpileSerializer::food_map(organic_mat_categor return food_pair(); } -void StockpileSerializer::write_food() { - StockpileSettings::FoodSet* food = mBuffer.mutable_food(); +void StockpileSerializer::write_food(StockpileSettings::FoodSet* food) { DEBUG(log).print("food:\n"); food->set_prepared_meals(mPile->settings.food.prepared_meals); @@ -649,7 +1102,7 @@ void StockpileSerializer::write_food() { } } -void StockpileSerializer::read_food() { +void StockpileSerializer::read_food(DeserializeMode mode, const std::string& filter) { using df::enums::organic_mat_category::organic_mat_category; using traits = df::enum_traits; if (mBuffer.has_food()) { @@ -683,27 +1136,7 @@ void StockpileSerializer::read_food() { } } -void StockpileSerializer::furniture_setup_other_mats() { - mOtherMatsFurniture.insert(std::make_pair(0, "WOOD")); - mOtherMatsFurniture.insert(std::make_pair(1, "PLANT_CLOTH")); - mOtherMatsFurniture.insert(std::make_pair(2, "BONE")); - mOtherMatsFurniture.insert(std::make_pair(3, "TOOTH")); - mOtherMatsFurniture.insert(std::make_pair(4, "HORN")); - mOtherMatsFurniture.insert(std::make_pair(5, "PEARL")); - mOtherMatsFurniture.insert(std::make_pair(6, "SHELL")); - mOtherMatsFurniture.insert(std::make_pair(7, "LEATHER")); - mOtherMatsFurniture.insert(std::make_pair(8, "SILK")); - mOtherMatsFurniture.insert(std::make_pair(9, "AMBER")); - mOtherMatsFurniture.insert(std::make_pair(10, "CORAL")); - mOtherMatsFurniture.insert(std::make_pair(11, "GREEN_GLASS")); - mOtherMatsFurniture.insert(std::make_pair(12, "CLEAR_GLASS")); - mOtherMatsFurniture.insert(std::make_pair(13, "CRYSTAL_GLASS")); - mOtherMatsFurniture.insert(std::make_pair(14, "YARN")); -} - -void StockpileSerializer::write_furniture() { - StockpileSettings::FurnitureSet* furniture = mBuffer.mutable_furniture(); - +void StockpileSerializer::write_furniture(StockpileSettings::FurnitureSet* furniture) { // FURNITURE type using df::enums::furniture_type::furniture_type; using type_traits = df::enum_traits; @@ -722,7 +1155,7 @@ void StockpileSerializer::write_furniture() { // other mats serialize_list_other_mats( - mOtherMatsFurniture, [=](const std::string& token) { furniture->add_other_mats(token); }, + mOtherMatsFurniture.mats, [=](const std::string& token) { furniture->add_other_mats(token); }, mPile->settings.furniture.other_mats); serialize_list_quality([=](const std::string& token) { furniture->add_quality_core(token); }, @@ -735,7 +1168,7 @@ bool StockpileSerializer::furniture_mat_is_allowed(const MaterialInfo& mi) { return mi.isValid() && mi.material && (mi.material->flags.is_set(material_flags::IS_METAL) || mi.material->flags.is_set(material_flags::IS_STONE)); } -void StockpileSerializer::read_furniture() { +void StockpileSerializer::read_furniture(DeserializeMode mode, const std::string& filter) { if (mBuffer.has_furniture()) { mPile->settings.flags.bits.furniture = 1; const StockpileSettings::FurnitureSet furniture = mBuffer.furniture(); @@ -766,7 +1199,7 @@ void StockpileSerializer::read_furniture() { // other materials unserialize_list_other_mats( - mOtherMatsFurniture, [=](const size_t& idx) -> const std::string& { return furniture.other_mats(idx); }, + mOtherMatsFurniture.mats, [=](const size_t& idx) -> const std::string& { return furniture.other_mats(idx); }, furniture.other_mats_size(), &mPile->settings.furniture.other_mats); // core quality @@ -816,9 +1249,8 @@ bool StockpileSerializer::refuse_type_is_allowed(item_type::item_type type) { return true; } -void StockpileSerializer::write_refuse() { +void StockpileSerializer::write_refuse(StockpileSettings::RefuseSet* refuse) { DEBUG(log).print("refuse:\n"); - StockpileSettings::RefuseSet* refuse = mBuffer.mutable_refuse(); refuse->set_fresh_raw_hide(mPile->settings.refuse.fresh_raw_hide); refuse->set_rotten_raw_hide(mPile->settings.refuse.rotten_raw_hide); @@ -876,7 +1308,7 @@ void StockpileSerializer::refuse_read_helper(std::functionsettings.flags.bits.refuse = 1; const StockpileSettings::RefuseSet refuse = mBuffer.refuse(); @@ -949,16 +1381,14 @@ bool StockpileSerializer::stone_is_allowed(const MaterialInfo& mi) { return is_allowed_soil || is_allowed_stone; } -void StockpileSerializer::write_stone() { - StockpileSettings::StoneSet* stone = mBuffer.mutable_stone(); - +void StockpileSerializer::write_stone(StockpileSettings::StoneSet* stone) { FuncMaterialAllowed filter = std::bind(&StockpileSerializer::stone_is_allowed, this, _1); serialize_list_material( filter, [=](const std::string& token) { stone->add_mats(token); }, mPile->settings.stone.mats); } -void StockpileSerializer::read_stone() { +void StockpileSerializer::read_stone(DeserializeMode mode, const std::string& filter) { if (mBuffer.has_stone()) { mPile->settings.flags.bits.stone = 1; const StockpileSettings::StoneSet stone = mBuffer.stone(); @@ -975,109 +1405,18 @@ void StockpileSerializer::read_stone() { } } -bool StockpileSerializer::ammo_mat_is_allowed(const MaterialInfo& mi) { - return mi.isValid() && mi.material && mi.material->flags.is_set(material_flags::IS_METAL); -} - -void StockpileSerializer::write_ammo() { - StockpileSettings::AmmoSet* ammo = mBuffer.mutable_ammo(); - - // ammo type - serialize_list_itemdef([=](const std::string& token) { ammo->add_type(token); }, - mPile->settings.ammo.type, - std::vector(world->raws.itemdefs.ammo.begin(), world->raws.itemdefs.ammo.end()), - item_type::AMMO); - - // metal - FuncMaterialAllowed filter = std::bind(&StockpileSerializer::ammo_mat_is_allowed, this, _1); - serialize_list_material( - filter, [=](const std::string& token) { ammo->add_mats(token); }, - mPile->settings.ammo.mats); - - // other mats - only wood and bone - if (mPile->settings.ammo.other_mats.size() > 2) { - WARN(log).print("ammo other materials > 2: %zd\n", mPile->settings.ammo.other_mats.size()); - } - - for (size_t i = 0; i < std::min(size_t(2), mPile->settings.ammo.other_mats.size()); ++i) { - if (!mPile->settings.ammo.other_mats.at(i)) - continue; - const std::string token = i == 0 ? "WOOD" : "BONE"; - ammo->add_other_mats(token); - DEBUG(log).print(" other mats %zd is %s\n", i, token.c_str()); - } - - // quality core - serialize_list_quality([=](const std::string& token) { ammo->add_quality_core(token); }, - mPile->settings.ammo.quality_core); - - // quality total - serialize_list_quality([=](const std::string& token) { ammo->add_quality_total(token); }, - mPile->settings.ammo.quality_total); -} - -void StockpileSerializer::read_ammo() { - if (mBuffer.has_ammo()) { - mPile->settings.flags.bits.ammo = 1; - const StockpileSettings::AmmoSet ammo = mBuffer.ammo(); - DEBUG(log).print("ammo:\n"); - - // ammo type - unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return ammo.type(idx); }, - ammo.type_size(), &mPile->settings.ammo.type, item_type::AMMO); - - // materials metals - FuncMaterialAllowed filter = std::bind(&StockpileSerializer::ammo_mat_is_allowed, this, _1); - unserialize_list_material( - filter, [=](const size_t& idx) -> const std::string& { return ammo.mats(idx); }, - ammo.mats_size(), &mPile->settings.ammo.mats); - - // others - mPile->settings.ammo.other_mats.clear(); - mPile->settings.ammo.other_mats.resize(2, '\0'); - if (ammo.other_mats_size() > 0) { - // TODO remove hardcoded value - for (int i = 0; i < ammo.other_mats_size(); ++i) { - const std::string token = ammo.other_mats(i); - const int32_t idx = token == "WOOD" ? 0 : token == "BONE" ? 1 - : -1; - DEBUG(log).print("other mats %d is %s\n", idx, token.c_str()); - if (idx != -1) - mPile->settings.ammo.other_mats.at(idx) = 1; - } - } - - // core quality - unserialize_list_quality([=](const size_t& idx) -> const std::string& { return ammo.quality_core(idx); }, - ammo.quality_core_size(), mPile->settings.ammo.quality_core); - - // total quality - unserialize_list_quality([=](const size_t& idx) -> const std::string& { return ammo.quality_total(idx); }, - ammo.quality_total_size(), mPile->settings.ammo.quality_total); - } - else { - mPile->settings.flags.bits.ammo = 0; - mPile->settings.ammo.type.clear(); - mPile->settings.ammo.mats.clear(); - mPile->settings.ammo.other_mats.clear(); - quality_clear(mPile->settings.ammo.quality_core); - quality_clear(mPile->settings.ammo.quality_total); - } -} - bool StockpileSerializer::coins_mat_is_allowed(const MaterialInfo& mi) { return mi.isValid(); } -void StockpileSerializer::write_coins() { - StockpileSettings::CoinSet* coins = mBuffer.mutable_coin(); +void StockpileSerializer::write_coins(StockpileSettings::CoinSet* coins) { FuncMaterialAllowed filter = std::bind(&StockpileSerializer::coins_mat_is_allowed, this, _1); serialize_list_material( filter, [=](const std::string& token) { coins->add_mats(token); }, mPile->settings.coins.mats); } -void StockpileSerializer::read_coins() { +void StockpileSerializer::read_coins(DeserializeMode mode, const std::string& filter) { if (mBuffer.has_coin()) { mPile->settings.flags.bits.coins = 1; const StockpileSettings::CoinSet coins = mBuffer.coin(); @@ -1094,19 +1433,6 @@ void StockpileSerializer::read_coins() { } } -void StockpileSerializer::bars_blocks_setup_other_mats() { - mOtherMatsBars.insert(std::make_pair(0, "COAL")); - mOtherMatsBars.insert(std::make_pair(1, "POTASH")); - mOtherMatsBars.insert(std::make_pair(2, "ASH")); - mOtherMatsBars.insert(std::make_pair(3, "PEARLASH")); - mOtherMatsBars.insert(std::make_pair(4, "SOAP")); - - mOtherMatsBlocks.insert(std::make_pair(0, "GREEN_GLASS")); - mOtherMatsBlocks.insert(std::make_pair(1, "CLEAR_GLASS")); - mOtherMatsBlocks.insert(std::make_pair(2, "CRYSTAL_GLASS")); - mOtherMatsBlocks.insert(std::make_pair(3, "WOOD")); -} - bool StockpileSerializer::bars_mat_is_allowed(const MaterialInfo& mi) { return mi.isValid() && mi.material && mi.material->flags.is_set(material_flags::IS_METAL); } @@ -1115,8 +1441,7 @@ bool StockpileSerializer::blocks_mat_is_allowed(const MaterialInfo& mi) { return mi.isValid() && mi.material && (mi.material->flags.is_set(material_flags::IS_METAL) || mi.material->flags.is_set(material_flags::IS_STONE)); } -void StockpileSerializer::write_bars_blocks() { - StockpileSettings::BarsBlocksSet* bars_blocks = mBuffer.mutable_barsblocks(); +void StockpileSerializer::write_bars_blocks(StockpileSettings::BarsBlocksSet* bars_blocks) { MaterialInfo mi; FuncMaterialAllowed filter = std::bind(&StockpileSerializer::bars_mat_is_allowed, this, _1); serialize_list_material( @@ -1131,16 +1456,16 @@ void StockpileSerializer::write_bars_blocks() { // bars other mats serialize_list_other_mats( - mOtherMatsBars, [=](const std::string& token) { bars_blocks->add_bars_other_mats(token); }, + mOtherMatsBars.mats, [=](const std::string& token) { bars_blocks->add_bars_other_mats(token); }, mPile->settings.bars_blocks.bars_other_mats); // blocks other mats serialize_list_other_mats( - mOtherMatsBlocks, [=](const std::string& token) { bars_blocks->add_blocks_other_mats(token); }, + mOtherMatsBlocks.mats, [=](const std::string& token) { bars_blocks->add_blocks_other_mats(token); }, mPile->settings.bars_blocks.blocks_other_mats); } -void StockpileSerializer::read_bars_blocks() { +void StockpileSerializer::read_bars_blocks(DeserializeMode mode, const std::string& filter) { if (mBuffer.has_barsblocks()) { mPile->settings.flags.bits.bars_blocks = 1; const StockpileSettings::BarsBlocksSet bars_blocks = mBuffer.barsblocks(); @@ -1158,12 +1483,12 @@ void StockpileSerializer::read_bars_blocks() { bars_blocks.blocks_mats_size(), &mPile->settings.bars_blocks.blocks_mats); // bars other mats unserialize_list_other_mats( - mOtherMatsBars, [=](const size_t& idx) -> const std::string& { return bars_blocks.bars_other_mats(idx); }, + mOtherMatsBars.mats, [=](const size_t& idx) -> const std::string& { return bars_blocks.bars_other_mats(idx); }, bars_blocks.bars_other_mats_size(), &mPile->settings.bars_blocks.bars_other_mats); // blocks other mats unserialize_list_other_mats( - mOtherMatsBlocks, [=](const size_t& idx) -> const std::string& { return bars_blocks.blocks_other_mats(idx); }, + mOtherMatsBlocks.mats, [=](const size_t& idx) -> const std::string& { return bars_blocks.blocks_other_mats(idx); }, bars_blocks.blocks_other_mats_size(), &mPile->settings.bars_blocks.blocks_other_mats); } else { @@ -1185,8 +1510,7 @@ bool StockpileSerializer::gem_other_mat_is_allowed(MaterialInfo& mi) { return mi.isValid() && (mi.getToken() == "GLASS_GREEN" || mi.getToken() == "GLASS_CLEAR" || mi.getToken() == "GLASS_CRYSTAL"); } -void StockpileSerializer::write_gems() { - StockpileSettings::GemsSet* gems = mBuffer.mutable_gems(); +void StockpileSerializer::write_gems(StockpileSettings::GemsSet* gems) { MaterialInfo mi; // rough mats FuncMaterialAllowed filter_rough = std::bind(&StockpileSerializer::gem_mat_is_allowed, this, _1); @@ -1222,7 +1546,7 @@ void StockpileSerializer::write_gems() { } } -void StockpileSerializer::read_gems() { +void StockpileSerializer::read_gems(DeserializeMode mode, const std::string& filter) { if (mBuffer.has_gems()) { mPile->settings.flags.bits.gems = 1; const StockpileSettings::GemsSet gems = mBuffer.gems(); @@ -1312,32 +1636,11 @@ bool StockpileSerializer::finished_goods_type_is_allowed(item_type::item_type ty } } -void StockpileSerializer::finished_goods_setup_other_mats() { - mOtherMatsFinishedGoods.insert(std::make_pair(0, "WOOD")); - mOtherMatsFinishedGoods.insert(std::make_pair(1, "PLANT_CLOTH")); - mOtherMatsFinishedGoods.insert(std::make_pair(2, "BONE")); - mOtherMatsFinishedGoods.insert(std::make_pair(3, "TOOTH")); - mOtherMatsFinishedGoods.insert(std::make_pair(4, "HORN")); - mOtherMatsFinishedGoods.insert(std::make_pair(5, "PEARL")); - mOtherMatsFinishedGoods.insert(std::make_pair(6, "SHELL")); - mOtherMatsFinishedGoods.insert(std::make_pair(7, "LEATHER")); - mOtherMatsFinishedGoods.insert(std::make_pair(8, "SILK")); - mOtherMatsFinishedGoods.insert(std::make_pair(9, "AMBER")); - mOtherMatsFinishedGoods.insert(std::make_pair(10, "CORAL")); - mOtherMatsFinishedGoods.insert(std::make_pair(11, "GREEN_GLASS")); - mOtherMatsFinishedGoods.insert(std::make_pair(12, "CLEAR_GLASS")); - mOtherMatsFinishedGoods.insert(std::make_pair(13, "CRYSTAL_GLASS")); - mOtherMatsFinishedGoods.insert(std::make_pair(14, "YARN")); - mOtherMatsFinishedGoods.insert(std::make_pair(15, "WAX")); -} - bool StockpileSerializer::finished_goods_mat_is_allowed(const MaterialInfo& mi) { return mi.isValid() && mi.material && (mi.material->flags.is_set(material_flags::IS_GEM) || mi.material->flags.is_set(material_flags::IS_METAL) || mi.material->flags.is_set(material_flags::IS_STONE)); } -void StockpileSerializer::write_finished_goods() { - StockpileSettings::FinishedGoodsSet* finished_goods = mBuffer.mutable_finished_goods(); - +void StockpileSerializer::write_finished_goods(StockpileSettings::FinishedGoodsSet* finished_goods) { // type FuncItemAllowed filter = std::bind(&StockpileSerializer::finished_goods_type_is_allowed, this, _1); serialize_list_item_type( @@ -1352,7 +1655,7 @@ void StockpileSerializer::write_finished_goods() { // other mats serialize_list_other_mats( - mOtherMatsFinishedGoods, [=](const std::string& token) { finished_goods->add_other_mats(token); }, + mOtherMatsFinishedGoods.mats, [=](const std::string& token) { finished_goods->add_other_mats(token); }, mPile->settings.finished_goods.other_mats); // quality core @@ -1364,7 +1667,7 @@ void StockpileSerializer::write_finished_goods() { mPile->settings.finished_goods.quality_total); } -void StockpileSerializer::read_finished_goods() { +void StockpileSerializer::read_finished_goods(DeserializeMode mode, const std::string& filter) { if (mBuffer.has_finished_goods()) { mPile->settings.flags.bits.finished_goods = 1; const StockpileSettings::FinishedGoodsSet finished_goods = mBuffer.finished_goods(); @@ -1384,7 +1687,7 @@ void StockpileSerializer::read_finished_goods() { // other mats unserialize_list_other_mats( - mOtherMatsFinishedGoods, [=](const size_t& idx) -> const std::string& { return finished_goods.other_mats(idx); }, + mOtherMatsFinishedGoods.mats, [=](const size_t& idx) -> const std::string& { return finished_goods.other_mats(idx); }, finished_goods.other_mats_size(), &mPile->settings.finished_goods.other_mats); // core quality @@ -1405,15 +1708,13 @@ void StockpileSerializer::read_finished_goods() { } } -void StockpileSerializer::write_leather() { - StockpileSettings::LeatherSet* leather = mBuffer.mutable_leather(); - +void StockpileSerializer::write_leather(StockpileSettings::LeatherSet* leather) { FuncWriteExport setter = [=](const std::string& id) { leather->add_mats(id); }; serialize_list_organic_mat(setter, &mPile->settings.leather.mats, organic_mat_category::Leather); } -void StockpileSerializer::read_leather() { +void StockpileSerializer::read_leather(DeserializeMode mode, const std::string& filter) { if (mBuffer.has_leather()) { mPile->settings.flags.bits.leather = 1; const StockpileSettings::LeatherSet leather = mBuffer.leather(); @@ -1428,9 +1729,7 @@ void StockpileSerializer::read_leather() { } } -void StockpileSerializer::write_cloth() { - StockpileSettings::ClothSet* cloth = mBuffer.mutable_cloth(); - +void StockpileSerializer::write_cloth(StockpileSettings::ClothSet* cloth) { serialize_list_organic_mat([=](const std::string& token) { cloth->add_thread_silk(token); }, &mPile->settings.cloth.thread_silk, organic_mat_category::Silk); @@ -1455,7 +1754,7 @@ void StockpileSerializer::write_cloth() { serialize_list_organic_mat([=](const std::string& token) { cloth->add_cloth_metal(token); }, &mPile->settings.cloth.cloth_metal, organic_mat_category::MetalThread); } -void StockpileSerializer::read_cloth() { +void StockpileSerializer::read_cloth(DeserializeMode mode, const std::string& filter) { if (mBuffer.has_cloth()) { mPile->settings.flags.bits.cloth = 1; const StockpileSettings::ClothSet cloth = mBuffer.cloth(); @@ -1502,8 +1801,7 @@ bool StockpileSerializer::wood_mat_is_allowed(const df::plant_raw* plant) { return plant && plant->flags.is_set(plant_raw_flags::TREE); } -void StockpileSerializer::write_wood() { - StockpileSettings::WoodSet* wood = mBuffer.mutable_wood(); +void StockpileSerializer::write_wood(StockpileSettings::WoodSet* wood) { for (size_t i = 0; i < mPile->settings.wood.mats.size(); ++i) { if (mPile->settings.wood.mats.at(i)) { const df::plant_raw* plant = find_plant(i); @@ -1514,7 +1812,7 @@ void StockpileSerializer::write_wood() { } } } -void StockpileSerializer::read_wood() { +void StockpileSerializer::read_wood(DeserializeMode mode, const std::string& filter) { if (mBuffer.has_wood()) { mPile->settings.flags.bits.wood = 1; const StockpileSettings::WoodSet wood = mBuffer.wood(); @@ -1543,9 +1841,7 @@ bool StockpileSerializer::weapons_mat_is_allowed(const MaterialInfo& mi) { return mi.isValid() && mi.material && (mi.material->flags.is_set(material_flags::IS_METAL) || mi.material->flags.is_set(material_flags::IS_STONE)); } -void StockpileSerializer::write_weapons() { - StockpileSettings::WeaponsSet* weapons = mBuffer.mutable_weapons(); - +void StockpileSerializer::write_weapons(StockpileSettings::WeaponsSet* weapons) { weapons->set_unusable(mPile->settings.weapons.unusable); weapons->set_usable(mPile->settings.weapons.usable); @@ -1569,7 +1865,7 @@ void StockpileSerializer::write_weapons() { // other mats serialize_list_other_mats( - mOtherMatsWeaponsArmor, [=](const std::string& token) { weapons->add_other_mats(token); }, + mOtherMatsWeaponsArmor.mats, [=](const std::string& token) { weapons->add_other_mats(token); }, mPile->settings.weapons.other_mats); // quality core @@ -1581,7 +1877,7 @@ void StockpileSerializer::write_weapons() { mPile->settings.weapons.quality_total); } -void StockpileSerializer::read_weapons() { +void StockpileSerializer::read_weapons(DeserializeMode mode, const std::string& filter) { if (mBuffer.has_weapons()) { mPile->settings.flags.bits.weapons = 1; const StockpileSettings::WeaponsSet weapons = mBuffer.weapons(); @@ -1610,7 +1906,7 @@ void StockpileSerializer::read_weapons() { // other mats unserialize_list_other_mats( - mOtherMatsWeaponsArmor, [=](const size_t& idx) -> const std::string& { return weapons.other_mats(idx); }, + mOtherMatsWeaponsArmor.mats, [=](const size_t& idx) -> const std::string& { return weapons.other_mats(idx); }, weapons.other_mats_size(), &mPile->settings.weapons.other_mats); // core quality @@ -1631,26 +1927,11 @@ void StockpileSerializer::read_weapons() { } } -void StockpileSerializer::weapons_armor_setup_other_mats() { - mOtherMatsWeaponsArmor.insert(std::make_pair(0, "WOOD")); - mOtherMatsWeaponsArmor.insert(std::make_pair(1, "PLANT_CLOTH")); - mOtherMatsWeaponsArmor.insert(std::make_pair(2, "BONE")); - mOtherMatsWeaponsArmor.insert(std::make_pair(3, "SHELL")); - mOtherMatsWeaponsArmor.insert(std::make_pair(4, "LEATHER")); - mOtherMatsWeaponsArmor.insert(std::make_pair(5, "SILK")); - mOtherMatsWeaponsArmor.insert(std::make_pair(6, "GREEN_GLASS")); - mOtherMatsWeaponsArmor.insert(std::make_pair(7, "CLEAR_GLASS")); - mOtherMatsWeaponsArmor.insert(std::make_pair(8, "CRYSTAL_GLASS")); - mOtherMatsWeaponsArmor.insert(std::make_pair(9, "YARN")); -} - bool StockpileSerializer::armor_mat_is_allowed(const MaterialInfo& mi) { return mi.isValid() && mi.material && mi.material->flags.is_set(material_flags::IS_METAL); } -void StockpileSerializer::write_armor() { - StockpileSettings::ArmorSet* armor = mBuffer.mutable_armor(); - +void StockpileSerializer::write_armor(StockpileSettings::ArmorSet* armor) { armor->set_unusable(mPile->settings.armor.unusable); armor->set_usable(mPile->settings.armor.usable); @@ -1698,7 +1979,7 @@ void StockpileSerializer::write_armor() { // other mats serialize_list_other_mats( - mOtherMatsWeaponsArmor, [=](const std::string& token) { armor->add_other_mats(token); }, + mOtherMatsWeaponsArmor.mats, [=](const std::string& token) { armor->add_other_mats(token); }, mPile->settings.armor.other_mats); // quality core @@ -1710,7 +1991,7 @@ void StockpileSerializer::write_armor() { mPile->settings.armor.quality_total); } -void StockpileSerializer::read_armor() { +void StockpileSerializer::read_armor(DeserializeMode mode, const std::string& filter) { if (mBuffer.has_armor()) { mPile->settings.flags.bits.armor = 1; const StockpileSettings::ArmorSet armor = mBuffer.armor(); @@ -1755,7 +2036,7 @@ void StockpileSerializer::read_armor() { // other mats unserialize_list_other_mats( - mOtherMatsWeaponsArmor, [=](const size_t& idx) -> const std::string& { return armor.other_mats(idx); }, + mOtherMatsWeaponsArmor.mats, [=](const size_t& idx) -> const std::string& { return armor.other_mats(idx); }, armor.other_mats_size(), &mPile->settings.armor.other_mats); // core quality @@ -1779,3 +2060,19 @@ void StockpileSerializer::read_armor() { quality_clear(mPile->settings.armor.quality_total); } } + +void StockpileSerializer::write_corpses(StockpileSettings::CorpsesSet* corpses) { + +} + +void StockpileSerializer::read_corpses(DeserializeMode mode, const std::string& filter) { + +} + +void StockpileSerializer::write_sheet(StockpileSettings::SheetSet* sheet) { + +} + +void StockpileSerializer::read_sheet(DeserializeMode mode, const std::string& filter) { + +} diff --git a/plugins/stockpiles/StockpileSerializer.h b/plugins/stockpiles/StockpileSerializer.h index 3fe2087de..24c6d5d98 100644 --- a/plugins/stockpiles/StockpileSerializer.h +++ b/plugins/stockpiles/StockpileSerializer.h @@ -14,16 +14,52 @@ namespace df struct building_stockpilest; } +enum IncludedElements { + INCLUDED_ELEMENTS_NONE = 0x00, + INCLUDED_ELEMENTS_CONTAINERS = 0x01, + INCLUDED_ELEMENTS_GENERAL = 0x02, + INCLUDED_ELEMENTS_CATEGORIES = 0x04, + INCLUDED_ELEMENTS_TYPES = 0x08, +}; + +enum DeserializeMode { + DESERIALIZE_MODE_SET = 0, + DESERIALIZE_MODE_ENABLE = 1, + DESERIALIZE_MODE_DISABLE = 2, +}; + +// read the token from the serialized list during import +typedef std::function FuncReadImport; +// add the token to the serialized list during export +typedef std::function FuncWriteExport; +// are item's of item_type allowed? +typedef std::function FuncItemAllowed; +// is this material allowed? +typedef std::function FuncMaterialAllowed; + +// convenient struct for parsing food stockpile items +struct food_pair { + // exporting + FuncWriteExport set_value; + std::vector* stockpile_values; + // importing + FuncReadImport get_value; + size_t serialized_count; + bool valid; + + food_pair(FuncWriteExport s, std::vector* sp_v, FuncReadImport g, size_t count) + : set_value(s), stockpile_values(sp_v), get_value(g), serialized_count(count), valid(true) { } + food_pair(): valid(false) { } +}; + /** * Class for serializing the stockpile_settings structure into a Google protobuf */ class StockpileSerializer { public: /** - * @param out for debugging * @param stockpile stockpile to read or write settings to */ - StockpileSerializer(df::building_stockpilest* stockpile); ~StockpileSerializer(); @@ -32,191 +68,64 @@ public: * Since we depend on protobuf-lite, not the full lib, we copy this function from * protobuf message.cc */ - bool serialize_to_ostream(std::ostream* output); + bool serialize_to_ostream(std::ostream* output, uint32_t includedElements); /** * Will serialize stockpile settings to a file (overwrites existing files) * @return success/failure */ - bool serialize_to_file(const std::string& file); + bool serialize_to_file(const std::string& file, uint32_t includedElements); /** * Again, copied from message.cc */ - bool parse_from_istream(std::istream* input); + bool parse_from_istream(std::istream* input, DeserializeMode mode, const std::string& filter); /** * Read stockpile settings from file */ - bool unserialize_from_file(const std::string& file); + bool unserialize_from_file(const std::string& file, DeserializeMode mode, const std::string& filter); private: df::building_stockpilest* mPile; dfstockpiles::StockpileSettings mBuffer; - std::map mOtherMatsFurniture; - std::map mOtherMatsFinishedGoods; - std::map mOtherMatsBars; - std::map mOtherMatsBlocks; - std::map mOtherMatsWeaponsArmor; - - /** - read memory structures and serialize to protobuf - */ - void write(); - - // parse serialized data into ui indices - void read(); - - /** - * Find an enum's value based off the string label. - * @param traits the enum's trait struct - * @param token the string value in key_table - * @return the enum's value, -1 if not found - */ - template - static typename df::enum_traits::base_type linear_index(df::enum_traits traits, const std::string& token) { - auto j = traits.first_item_value; - auto limit = traits.last_item_value; - // sometimes enums start at -1, which is bad news for array indexing - if (j < 0) { - j += abs(traits.first_item_value); - limit += abs(traits.first_item_value); - } - for (; j <= limit; ++j) { - if (token.compare(traits.key_table[j]) == 0) - return j; - } - return -1; - } - - // read the token from the serailized list during import - typedef std::function FuncReadImport; - // add the token to the serialized list during export - typedef std::function FuncWriteExport; - // are item's of item_type allowed? - typedef std::function FuncItemAllowed; - // is this material allowed? - typedef std::function FuncMaterialAllowed; - - // convenient struct for parsing food stockpile items - struct food_pair { - // exporting - FuncWriteExport set_value; - std::vector* stockpile_values; - // importing - FuncReadImport get_value; - size_t serialized_count; - bool valid; - - food_pair(FuncWriteExport s, std::vector* sp_v, FuncReadImport g, size_t count) - : set_value(s), stockpile_values(sp_v), get_value(g), serialized_count(count), valid(true) { } - food_pair(): valid(false) { } - }; - - /** - * There are many repeated (un)serialization cases throughout the stockpile_settings structure, - * so the most common cases have been generalized into generic functions using lambdas. - * - * The basic process to serialize a stockpile_settings structure is: - * 1. loop through the list - * 2. for every element that is TRUE: - * 3. map the specific stockpile_settings index into a general material, creature, etc index - * 4. verify that type is allowed in the list (e.g., no stone in gems stockpiles) - * 5. add it to the protobuf using FuncWriteExport - * - * The unserialization process is the same in reverse. - */ - void serialize_list_organic_mat(FuncWriteExport add_value, const std::vector* list, df::enums::organic_mat_category::organic_mat_category cat); - - /** - * @see serialize_list_organic_mat - */ - void unserialize_list_organic_mat(FuncReadImport get_value, size_t list_size, std::vector* pile_list, df::enums::organic_mat_category::organic_mat_category cat); - - /** - * @see serialize_list_organic_mat - */ - void serialize_list_item_type(FuncItemAllowed is_allowed, FuncWriteExport add_value, const std::vector& list); - - /** - * @see serialize_list_organic_mat - */ - void unserialize_list_item_type(FuncItemAllowed is_allowed, FuncReadImport read_value, int32_t list_size, std::vector* pile_list); - - /** - * @see serialize_list_organic_mat - */ - void serialize_list_material(FuncMaterialAllowed is_allowed, FuncWriteExport add_value, const std::vector& list); - - /** - * @see serialize_list_organic_mat - */ - void unserialize_list_material(FuncMaterialAllowed is_allowed, FuncReadImport read_value, int32_t list_size, std::vector* pile_list); - - /** - * @see serialize_list_organic_mat - */ - void serialize_list_quality(FuncWriteExport add_value, const bool(&quality_list)[7]); - /** - * Set all values in a bool[7] to false - */ - void quality_clear(bool(&pile_list)[7]); + // read memory structures and serialize to protobuf + void write(uint32_t includedElements); - /** - * @see serialize_list_organic_mat - */ - void unserialize_list_quality(FuncReadImport read_value, int32_t list_size, bool(&pile_list)[7]); + // parse serialized data into ui indices + void read(DeserializeMode mode, const std::string& filter); /** - * @see serialize_list_organic_mat - */ - void serialize_list_other_mats(const std::map other_mats, FuncWriteExport add_value, std::vector list); - - /** - * @see serialize_list_organic_mat - */ - void unserialize_list_other_mats(const std::map other_mats, FuncReadImport read_value, int32_t list_size, std::vector* pile_list); - - /** - * @see serialize_list_organic_mat - */ - void serialize_list_itemdef(FuncWriteExport add_value, std::vector list, std::vector items, df::enums::item_type::item_type type); - - /** - * @see serialize_list_organic_mat - */ - void unserialize_list_itemdef(FuncReadImport read_value, int32_t list_size, std::vector* pile_list, df::enums::item_type::item_type type); - - /** - * Given a list of other_materials and an index, return its corresponding token + * Given a list of other_materials and an index, return its corresponding token * @return empty string if not found * @see other_mats_token */ std::string other_mats_index(const std::map other_mats, int idx); /** - * Given a list of other_materials and a token, return its corresponding index + * Given a list of other_materials and a token, return its corresponding index * @return -1 if not found * @see other_mats_index */ int other_mats_token(const std::map other_mats, const std::string& token); + void write_containers(); + void read_containers(DeserializeMode mode); void write_general(); - void read_general(); + void read_general(DeserializeMode mode); - void write_animals(); - void read_animals(); + void write_animals(dfstockpiles::StockpileSettings::AnimalsSet* animals); + void read_animals(DeserializeMode mode, const std::string& filter); food_pair food_map(df::enums::organic_mat_category::organic_mat_category cat); - void write_food(); - void read_food(); + void write_food(dfstockpiles::StockpileSettings::FoodSet* food); + void read_food(DeserializeMode mode, const std::string& filter); - void furniture_setup_other_mats(); - void write_furniture(); + void write_furniture(dfstockpiles::StockpileSettings::FurnitureSet* furniture); bool furniture_mat_is_allowed(const DFHack::MaterialInfo& mi); - void read_furniture(); + void read_furniture(DeserializeMode mode, const std::string& filter); bool refuse_creature_is_allowed(const df::creature_raw* raw); @@ -224,60 +133,57 @@ private: bool refuse_type_is_allowed(df::enums::item_type::item_type type); - void write_refuse(); + void write_refuse(dfstockpiles::StockpileSettings::RefuseSet* refuse); void refuse_read_helper(std::function get_value, size_t list_size, std::vector* pile_list); - void read_refuse(); + void read_refuse(DeserializeMode mode, const std::string& filter); bool stone_is_allowed(const DFHack::MaterialInfo& mi); - void write_stone(); + void write_stone(dfstockpiles::StockpileSettings::StoneSet* stone); - void read_stone(); + void read_stone(DeserializeMode mode, const std::string& filter); - bool ammo_mat_is_allowed(const DFHack::MaterialInfo& mi); - - void write_ammo(); - void read_ammo(); + bool write_ammo(dfstockpiles::StockpileSettings::AmmoSet* ammo); + void read_ammo(DeserializeMode mode, const std::string& filter); bool coins_mat_is_allowed(const DFHack::MaterialInfo& mi); - void write_coins(); - - void read_coins(); - - void bars_blocks_setup_other_mats(); + void write_coins(dfstockpiles::StockpileSettings::CoinSet* coins); + void read_coins(DeserializeMode mode, const std::string& filter); bool bars_mat_is_allowed(const DFHack::MaterialInfo& mi); bool blocks_mat_is_allowed(const DFHack::MaterialInfo& mi); - void write_bars_blocks(); - void read_bars_blocks(); + void write_bars_blocks(dfstockpiles::StockpileSettings::BarsBlocksSet* bars_blocks); + void read_bars_blocks(DeserializeMode mode, const std::string& filter); bool gem_mat_is_allowed(const DFHack::MaterialInfo& mi); bool gem_cut_mat_is_allowed(const DFHack::MaterialInfo& mi); bool gem_other_mat_is_allowed(DFHack::MaterialInfo& mi); - void write_gems(); + void write_gems(dfstockpiles::StockpileSettings::GemsSet* gems); - void read_gems(); + void read_gems(DeserializeMode mode, const std::string& filter); bool finished_goods_type_is_allowed(df::enums::item_type::item_type type); - void finished_goods_setup_other_mats(); bool finished_goods_mat_is_allowed(const DFHack::MaterialInfo& mi); - void write_finished_goods(); - void read_finished_goods(); - void write_leather(); - void read_leather(); - void write_cloth(); - void read_cloth(); + void write_finished_goods(dfstockpiles::StockpileSettings::FinishedGoodsSet* finished_goods); + void read_finished_goods(DeserializeMode mode, const std::string& filter); + void write_leather(dfstockpiles::StockpileSettings::LeatherSet* leather); + void read_leather(DeserializeMode mode, const std::string& filter); + void write_cloth(dfstockpiles::StockpileSettings::ClothSet* cloth); + void read_cloth(DeserializeMode mode, const std::string& filter); bool wood_mat_is_allowed(const df::plant_raw* plant); - void write_wood(); - void read_wood(); + void write_wood(dfstockpiles::StockpileSettings::WoodSet* wood); + void read_wood(DeserializeMode mode, const std::string& filter); bool weapons_mat_is_allowed(const DFHack::MaterialInfo& mi); - void write_weapons(); - void read_weapons(); - void weapons_armor_setup_other_mats(); + void write_weapons(dfstockpiles::StockpileSettings::WeaponsSet* weapons); + void read_weapons(DeserializeMode mode, const std::string& filter); bool armor_mat_is_allowed(const DFHack::MaterialInfo& mi); - void write_armor(); - void read_armor(); + void write_armor(dfstockpiles::StockpileSettings::ArmorSet* armor); + void read_armor(DeserializeMode mode, const std::string& filter); + void write_corpses(dfstockpiles::StockpileSettings::CorpsesSet* corpses); + void read_corpses(DeserializeMode mode, const std::string& filter); + void write_sheet(dfstockpiles::StockpileSettings::SheetSet* sheet); + void read_sheet(DeserializeMode mode, const std::string& filter); }; diff --git a/plugins/stockpiles/proto/stockpiles.proto b/plugins/stockpiles/proto/stockpiles.proto index 90c95b93f..66815335b 100644 --- a/plugins/stockpiles/proto/stockpiles.proto +++ b/plugins/stockpiles/proto/stockpiles.proto @@ -7,12 +7,14 @@ option optimize_for = LITE_RUNTIME; message StockpileSettings { message AnimalsSet { + optional bool all = 4; optional bool empty_cages = 1; optional bool empty_traps = 2; repeated string enabled = 3; } message FoodSet { + optional bool all = 21; repeated string meat = 1; repeated string fish = 2; repeated string unprepared_fish = 20; @@ -36,6 +38,7 @@ message StockpileSettings { } message FurnitureSet { + optional bool all = 7; repeated string type = 1; repeated string other_mats = 2; repeated string mats = 3; @@ -44,6 +47,7 @@ message StockpileSettings { // UNUSED: optional bool sand_bags = 6; } message RefuseSet { + optional bool all = 12; repeated string type = 1; repeated string corpses = 2; repeated string body_parts = 3; @@ -57,12 +61,14 @@ message StockpileSettings { optional bool rotten_raw_hide = 11; } message StoneSet { - repeated string mats = 1; + optional bool all = 2; + repeated string mats = 1; } message OreSet { - repeated string mats = 1; + repeated string mats = 1; } message AmmoSet { + optional bool all = 6; repeated string type = 1; repeated string other_mats = 2; repeated string mats = 3; @@ -70,21 +76,25 @@ message StockpileSettings { repeated string quality_total = 5; } message CoinSet { + optional bool all = 2; repeated string mats = 1; } message BarsBlocksSet { + optional bool all = 5; repeated string bars_other_mats = 1; repeated string blocks_other_mats = 2; repeated string bars_mats = 3; repeated string blocks_mats = 4; } message GemsSet { + optional bool all = 5; repeated string rough_other_mats = 1; repeated string cut_other_mats = 2; repeated string rough_mats = 3; repeated string cut_mats = 4; } message FinishedGoodsSet { + optional bool all = 6; repeated string type = 1; repeated string other_mats = 2; repeated string mats = 3; @@ -92,9 +102,11 @@ message StockpileSettings { repeated string quality_total = 5; } message LeatherSet { + optional bool all = 2; repeated string mats = 1; } message ClothSet { + optional bool all = 9; repeated string thread_silk = 1; repeated string thread_plant = 2; repeated string thread_yarn = 3; @@ -105,9 +117,11 @@ message StockpileSettings { repeated string cloth_metal = 8; } message WoodSet { + optional bool all = 2; repeated string mats = 1; } message WeaponsSet { + optional bool all = 9; repeated string weapon_type = 1; repeated string trapcomp_type = 2; repeated string other_mats = 3; @@ -117,8 +131,8 @@ message StockpileSettings { optional bool usable = 7; optional bool unusable = 8; } - message ArmorSet { + optional bool all = 13; repeated string body = 1; repeated string head = 2; repeated string feet = 3; @@ -129,33 +143,45 @@ message StockpileSettings { repeated string mats = 8; repeated string quality_core = 9; repeated string quality_total = 10; - optional bool usable =11; + optional bool usable = 11; optional bool unusable = 12; } + message CorpsesSet { + optional bool all = 1; + } + message SheetSet { + optional bool all = 1; + } + + // general settings + optional int32 max_barrels = 20; + optional int32 max_bins = 21; + optional int32 max_wheelbarrows = 22; + optional bool use_links_only = 23; + optional bool allow_organic = 18; + optional bool allow_inorganic = 19; + // categories + optional AmmoSet ammo = 8; optional AnimalsSet animals = 1; + optional ArmorSet armor = 17; + optional BarsBlocksSet barsblocks = 10; + optional ClothSet cloth = 14; + optional CoinSet coin = 9; + optional FinishedGoodsSet finished_goods = 12; optional FoodSet food = 2; optional FurnitureSet furniture = 3; - optional int32 unknown1 = 4 [deprecated=true]; - optional RefuseSet refuse = 5; - optional StoneSet stone = 6; - optional OreSet ore = 7; - optional AmmoSet ammo = 8; - optional CoinSet coin = 9; - optional BarsBlocksSet barsblocks = 10; optional GemsSet gems = 11; - optional FinishedGoodsSet finished_goods = 12; optional LeatherSet leather = 13; - optional ClothSet cloth = 14; - optional WoodSet wood = 15; + optional CorpsesSet corpses_v50 = 25; + optional RefuseSet refuse = 5; + optional SheetSet sheet = 26; + optional StoneSet stone = 6; optional WeaponsSet weapons = 16; - optional ArmorSet armor = 17; - optional bool allow_organic = 18; - optional bool allow_inorganic = 19; - optional bool corpses = 24; - // extras - optional int32 max_barrels = 20; - optional int32 max_bins = 21; - optional int32 max_wheelbarrows = 22; - optional bool use_links_only = 23; + optional WoodSet wood = 15; + + // deprecated + optional bool corpses = 24; // not marked as deprecated since we still read it + optional OreSet ore = 7 [deprecated=true]; + optional int32 unknown1 = 4 [deprecated=true]; } diff --git a/plugins/stockpiles/stockpiles.cpp b/plugins/stockpiles/stockpiles.cpp index e7b3525ef..99cc16607 100644 --- a/plugins/stockpiles/stockpiles.cpp +++ b/plugins/stockpiles/stockpiles.cpp @@ -83,7 +83,7 @@ static df::building_stockpilest* get_stockpile(int id) { return virtual_cast(df::building::find(id)); } -static bool stockpiles_export(color_ostream& out, string fname, int id) { +static bool stockpiles_export(color_ostream& out, string fname, int id, uint32_t includedElements) { df::building_stockpilest* sp = get_stockpile(id); if (!sp) { out.printerr("Specified building isn't a stockpile: %d.\n", id); @@ -95,7 +95,7 @@ static bool stockpiles_export(color_ostream& out, string fname, int id) { try { StockpileSerializer cereal(sp); - if (!cereal.serialize_to_file(fname)) { + if (!cereal.serialize_to_file(fname, includedElements)) { out.printerr("could not save to '%s'\n", fname.c_str()); return false; } @@ -108,7 +108,7 @@ static bool stockpiles_export(color_ostream& out, string fname, int id) { return true; } -static bool stockpiles_import(color_ostream& out, string fname, int id) { +static bool stockpiles_import(color_ostream& out, string fname, int id, string mode_str, string filter) { df::building_stockpilest* sp = get_stockpile(id); if (!sp) { out.printerr("Specified building isn't a stockpile: %d.\n", id); @@ -123,9 +123,15 @@ static bool stockpiles_import(color_ostream& out, string fname, int id) { return false; } + DeserializeMode mode = DESERIALIZE_MODE_SET; + if (mode_str == "enable") + mode = DESERIALIZE_MODE_ENABLE; + else if (mode_str == "disable") + mode = DESERIALIZE_MODE_DISABLE; + try { StockpileSerializer cereal(sp); - if (!cereal.unserialize_from_file(fname)) { + if (!cereal.unserialize_from_file(fname, mode, filter)) { out.printerr("deserialization failed: '%s'\n", fname.c_str()); return false; } From 1c527ab3d855211738de748f78f0312122413bbc Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 19 Mar 2023 17:31:35 -0700 Subject: [PATCH 014/115] rejiggered --- plugins/stockpiles/StockpileSerializer.cpp | 2056 ++++++++++---------- plugins/stockpiles/StockpileSerializer.h | 104 +- 2 files changed, 1081 insertions(+), 1079 deletions(-) diff --git a/plugins/stockpiles/StockpileSerializer.cpp b/plugins/stockpiles/StockpileSerializer.cpp index 04e7cb9fa..3b2849333 100644 --- a/plugins/stockpiles/StockpileSerializer.cpp +++ b/plugins/stockpiles/StockpileSerializer.cpp @@ -554,75 +554,91 @@ void StockpileSerializer::write(uint32_t includedElements) { bool include_types = 0 != (includedElements & INCLUDED_ELEMENTS_TYPES); - write_cat(include_types, mPile->settings.flags.whole, + write_cat(include_types, + mPile->settings.flags.whole, mPile->settings.flags.mask_ammo, std::bind(&StockpileSettings::mutable_ammo, mBuffer), std::bind(&StockpileSerializer::write_ammo, this, _1)); - - if (mPile->settings.flags.bits.animals) { - StockpileSettings::AnimalsSet* animals = mBuffer.mutable_animals(); - if (include_types) write_animals(animals); else animals->set_all(true); - } - if (mPile->settings.flags.bits.armor) { - StockpileSettings::ArmorSet* armor = mBuffer.mutable_armor(); - if (include_types) write_armor(armor); else armor->set_all(true); - } - if (mPile->settings.flags.bits.bars_blocks) { - StockpileSettings::BarsBlocksSet* bars_blocks = mBuffer.mutable_barsblocks(); - if (include_types) write_bars_blocks(bars_blocks); else bars_blocks->set_all(true); - } - if (mPile->settings.flags.bits.cloth) { - StockpileSettings::ClothSet* cloth = mBuffer.mutable_cloth(); - if (include_types) write_cloth(cloth); else cloth->set_all(true); - } - if (mPile->settings.flags.bits.coins) { - StockpileSettings::CoinSet* coins = mBuffer.mutable_coin(); - if (include_types) write_coins(coins); else coins->set_all(true); - } - if (mPile->settings.flags.bits.finished_goods) { - StockpileSettings::FinishedGoodsSet* finished_goods = mBuffer.mutable_finished_goods(); - if (include_types) write_finished_goods(finished_goods); else finished_goods->set_all(true); - } - if (mPile->settings.flags.bits.food) { - StockpileSettings::FoodSet* food = mBuffer.mutable_food(); - if (include_types) write_food(food); else food->set_all(true); - } - if (mPile->settings.flags.bits.furniture) { - StockpileSettings::FurnitureSet* furniture = mBuffer.mutable_furniture(); - if (include_types) write_furniture(furniture); else furniture->set_all(true); - } - if (mPile->settings.flags.bits.gems) { - StockpileSettings::GemsSet* gems = mBuffer.mutable_gems(); - if (include_types) write_gems(gems); else gems->set_all(true); - } - if (mPile->settings.flags.bits.leather) { - StockpileSettings::LeatherSet* leather = mBuffer.mutable_leather(); - if (include_types) write_leather(leather); else leather->set_all(true); - } - if (mPile->settings.flags.bits.corpses) { - StockpileSettings::CorpsesSet* corpses = mBuffer.mutable_corpses_v50(); - if (include_types) write_corpses(corpses); else corpses->set_all(true); - } - if (mPile->settings.flags.bits.refuse) { - StockpileSettings::RefuseSet* refuse = mBuffer.mutable_refuse(); - if (include_types) write_refuse(refuse); else refuse->set_all(true); - } - if (mPile->settings.flags.bits.sheet) { - StockpileSettings::SheetSet* sheet = mBuffer.mutable_sheet(); - if (include_types) write_sheet(sheet); else sheet->set_all(true); - } - if (mPile->settings.flags.bits.stone) { - StockpileSettings::StoneSet* stone = mBuffer.mutable_stone(); - if (include_types) write_stone(stone); else stone->set_all(true); - } - if (mPile->settings.flags.bits.weapons) { - StockpileSettings::WeaponsSet* weapons = mBuffer.mutable_weapons(); - if (include_types) write_weapons(weapons); else weapons->set_all(true); - } - if (mPile->settings.flags.bits.wood) { - StockpileSettings::WoodSet* wood = mBuffer.mutable_wood(); - if (include_types) write_wood(wood); else wood->set_all(true); - } + write_cat(include_types, + mPile->settings.flags.whole, + mPile->settings.flags.mask_animals, + std::bind(&StockpileSettings::mutable_animals, mBuffer), + std::bind(&StockpileSerializer::write_animals, this, _1)); + write_cat(include_types, + mPile->settings.flags.whole, + mPile->settings.flags.mask_armor, + std::bind(&StockpileSettings::mutable_armor, mBuffer), + std::bind(&StockpileSerializer::write_armor, this, _1)); + write_cat(include_types, + mPile->settings.flags.whole, + mPile->settings.flags.mask_bars_blocks, + std::bind(&StockpileSettings::mutable_barsblocks, mBuffer), + std::bind(&StockpileSerializer::write_bars_blocks, this, _1)); + write_cat(include_types, + mPile->settings.flags.whole, + mPile->settings.flags.mask_cloth, + std::bind(&StockpileSettings::mutable_cloth, mBuffer), + std::bind(&StockpileSerializer::write_cloth, this, _1)); + write_cat(include_types, + mPile->settings.flags.whole, + mPile->settings.flags.mask_coins, + std::bind(&StockpileSettings::mutable_coin, mBuffer), + std::bind(&StockpileSerializer::write_coins, this, _1)); + write_cat(include_types, + mPile->settings.flags.whole, + mPile->settings.flags.mask_finished_goods, + std::bind(&StockpileSettings::mutable_finished_goods, mBuffer), + std::bind(&StockpileSerializer::write_finished_goods, this, _1)); + write_cat(include_types, + mPile->settings.flags.whole, + mPile->settings.flags.mask_food, + std::bind(&StockpileSettings::mutable_food, mBuffer), + std::bind(&StockpileSerializer::write_food, this, _1)); + write_cat(include_types, + mPile->settings.flags.whole, + mPile->settings.flags.mask_furniture, + std::bind(&StockpileSettings::mutable_furniture, mBuffer), + std::bind(&StockpileSerializer::write_furniture, this, _1)); + write_cat(include_types, + mPile->settings.flags.whole, + mPile->settings.flags.mask_gems, + std::bind(&StockpileSettings::mutable_gems, mBuffer), + std::bind(&StockpileSerializer::write_gems, this, _1)); + write_cat(include_types, + mPile->settings.flags.whole, + mPile->settings.flags.mask_leather, + std::bind(&StockpileSettings::mutable_leather, mBuffer), + std::bind(&StockpileSerializer::write_leather, this, _1)); + write_cat(include_types, + mPile->settings.flags.whole, + mPile->settings.flags.mask_corpses, + std::bind(&StockpileSettings::mutable_corpses_v50, mBuffer), + std::bind(&StockpileSerializer::write_corpses, this, _1)); + write_cat(include_types, + mPile->settings.flags.whole, + mPile->settings.flags.mask_refuse, + std::bind(&StockpileSettings::mutable_refuse, mBuffer), + std::bind(&StockpileSerializer::write_refuse, this, _1)); + write_cat(include_types, + mPile->settings.flags.whole, + mPile->settings.flags.mask_sheet, + std::bind(&StockpileSettings::mutable_sheet, mBuffer), + std::bind(&StockpileSerializer::write_sheet, this, _1)); + write_cat(include_types, + mPile->settings.flags.whole, + mPile->settings.flags.mask_stone, + std::bind(&StockpileSettings::mutable_stone, mBuffer), + std::bind(&StockpileSerializer::write_stone, this, _1)); + write_cat(include_types, + mPile->settings.flags.whole, + mPile->settings.flags.mask_weapons, + std::bind(&StockpileSettings::mutable_weapons, mBuffer), + std::bind(&StockpileSerializer::write_weapons, this, _1)); + write_cat(include_types, + mPile->settings.flags.whole, + mPile->settings.flags.mask_wood, + std::bind(&StockpileSettings::mutable_wood, mBuffer), + std::bind(&StockpileSerializer::write_wood, this, _1)); } void StockpileSerializer::read(DeserializeMode mode, const std::string& filter) { @@ -858,16 +874,22 @@ void StockpileSerializer::read_ammo(DeserializeMode mode, const std::string& fil }); } -void StockpileSerializer::write_animals(StockpileSettings::AnimalsSet* animals) { - animals->set_empty_cages(mPile->settings.animals.empty_cages); - animals->set_empty_traps(mPile->settings.animals.empty_traps); - for (size_t i = 0; i < mPile->settings.animals.enabled.size(); ++i) { - if (mPile->settings.animals.enabled.at(i) == 1) { - df::creature_raw* r = find_creature(i); - DEBUG(log).print("creature %s %zd\n", r->creature_id.c_str(), i); - animals->add_enabled(r->creature_id); +bool StockpileSerializer::write_animals(StockpileSettings::AnimalsSet* animals) { + auto & panimals = mPile->settings.animals; + bool all = panimals.empty_cages && panimals.empty_traps; + + animals->set_empty_cages(panimals.empty_cages); + animals->set_empty_traps(panimals.empty_traps); + for (size_t i = 0; i < panimals.enabled.size(); ++i) { + if (!panimals.enabled.at(i)) { + all = false; + continue; } + df::creature_raw* r = find_creature(i); + DEBUG(log).print("creature %s %zd\n", r->creature_id.c_str(), i); + animals->add_enabled(r->creature_id); } + return all; } void StockpileSerializer::read_animals(DeserializeMode mode, const std::string& filter) { @@ -905,645 +927,792 @@ void StockpileSerializer::read_animals(DeserializeMode mode, const std::string& }); } -food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_category cat) { - using df::enums::organic_mat_category::organic_mat_category; - using namespace std::placeholders; - switch (cat) { - case organic_mat_category::Meat: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_meat(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().meat(idx); }; - return food_pair(setter, &mPile->settings.food.meat, getter, mBuffer.food().meat_size()); - } - case organic_mat_category::Fish: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_fish(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().fish(idx); }; - return food_pair(setter, &mPile->settings.food.fish, getter, mBuffer.food().fish_size()); - } - case organic_mat_category::UnpreparedFish: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_unprepared_fish(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().unprepared_fish(idx); }; - return food_pair(setter, &mPile->settings.food.unprepared_fish, getter, mBuffer.food().unprepared_fish_size()); - } - case organic_mat_category::Eggs: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_egg(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().egg(idx); }; - return food_pair(setter, &mPile->settings.food.egg, getter, mBuffer.food().egg_size()); - } - case organic_mat_category::Plants: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_plants(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().plants(idx); }; - return food_pair(setter, &mPile->settings.food.plants, getter, mBuffer.food().plants_size()); - } - case organic_mat_category::PlantDrink: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_drink_plant(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().drink_plant(idx); }; - return food_pair(setter, &mPile->settings.food.drink_plant, getter, mBuffer.food().drink_plant_size()); - } - case organic_mat_category::CreatureDrink: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_drink_animal(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().drink_animal(idx); }; - return food_pair(setter, &mPile->settings.food.drink_animal, getter, mBuffer.food().drink_animal_size()); - } - case organic_mat_category::PlantCheese: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_cheese_plant(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().cheese_plant(idx); }; - return food_pair(setter, &mPile->settings.food.cheese_plant, getter, mBuffer.food().cheese_plant_size()); - } - case organic_mat_category::CreatureCheese: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_cheese_animal(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().cheese_animal(idx); }; - return food_pair(setter, &mPile->settings.food.cheese_animal, getter, mBuffer.food().cheese_animal_size()); - } - case organic_mat_category::Seed: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_seeds(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().seeds(idx); }; - return food_pair(setter, &mPile->settings.food.seeds, getter, mBuffer.food().seeds_size()); - } - case organic_mat_category::Leaf: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_leaves(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().leaves(idx); }; - return food_pair(setter, &mPile->settings.food.leaves, getter, mBuffer.food().leaves_size()); - } - case organic_mat_category::PlantPowder: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_powder_plant(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().powder_plant(idx); }; - return food_pair(setter, &mPile->settings.food.powder_plant, getter, mBuffer.food().powder_plant_size()); - } - case organic_mat_category::CreaturePowder: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_powder_creature(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().powder_creature(idx); }; - return food_pair(setter, &mPile->settings.food.powder_creature, getter, mBuffer.food().powder_creature_size()); - } - case organic_mat_category::Glob: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_glob(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().glob(idx); }; - return food_pair(setter, &mPile->settings.food.glob, getter, mBuffer.food().glob_size()); - } - case organic_mat_category::PlantLiquid: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_liquid_plant(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().liquid_plant(idx); }; - return food_pair(setter, &mPile->settings.food.liquid_plant, getter, mBuffer.food().liquid_plant_size()); - } - case organic_mat_category::CreatureLiquid: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_liquid_animal(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().liquid_animal(idx); }; - return food_pair(setter, &mPile->settings.food.liquid_animal, getter, mBuffer.food().liquid_animal_size()); - } - case organic_mat_category::MiscLiquid: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_liquid_misc(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().liquid_misc(idx); }; - return food_pair(setter, &mPile->settings.food.liquid_misc, getter, mBuffer.food().liquid_misc_size()); - } - - case organic_mat_category::Paste: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_glob_paste(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().glob_paste(idx); }; - return food_pair(setter, &mPile->settings.food.glob_paste, getter, mBuffer.food().glob_paste_size()); - } - case organic_mat_category::Pressed: - { - FuncWriteExport setter = [=](const std::string& id) { - mBuffer.mutable_food()->add_glob_pressed(id); - }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().glob_pressed(idx); }; - return food_pair(setter, &mPile->settings.food.glob_pressed, getter, mBuffer.food().glob_pressed_size()); - } - case organic_mat_category::Leather: - case organic_mat_category::Silk: - case organic_mat_category::PlantFiber: - case organic_mat_category::Bone: - case organic_mat_category::Shell: - case organic_mat_category::Wood: - case organic_mat_category::Horn: - case organic_mat_category::Pearl: - case organic_mat_category::Tooth: - case organic_mat_category::EdibleCheese: - case organic_mat_category::AnyDrink: - case organic_mat_category::EdiblePlant: - case organic_mat_category::CookableLiquid: - case organic_mat_category::CookablePowder: - case organic_mat_category::CookableSeed: - case organic_mat_category::CookableLeaf: - case organic_mat_category::Yarn: - case organic_mat_category::MetalThread: - default: - // not used in stockpile food menu - break; - } - return food_pair(); +static bool armor_mat_is_allowed(const MaterialInfo& mi) { + return mi.isValid() && mi.material && mi.material->flags.is_set(material_flags::IS_METAL); } -void StockpileSerializer::write_food(StockpileSettings::FoodSet* food) { - DEBUG(log).print("food:\n"); - food->set_prepared_meals(mPile->settings.food.prepared_meals); - - using df::enums::organic_mat_category::organic_mat_category; - using traits = df::enum_traits; - for (int32_t mat_category = traits::first_item_value; mat_category < traits::last_item_value; ++mat_category) { - food_pair p = food_map((organic_mat_category)mat_category); - if (!p.valid) - continue; - DEBUG(log).print("food: %s\n", traits::key_table[mat_category]); - serialize_list_organic_mat(p.set_value, p.stockpile_values, (organic_mat_category)mat_category); - } -} +bool StockpileSerializer::write_armor(StockpileSettings::ArmorSet* armor) { -void StockpileSerializer::read_food(DeserializeMode mode, const std::string& filter) { - using df::enums::organic_mat_category::organic_mat_category; - using traits = df::enum_traits; - if (mBuffer.has_food()) { - mPile->settings.flags.bits.food = 1; - const StockpileSettings::FoodSet food = mBuffer.food(); - DEBUG(log).print("food:\n"); + auto & parmor = mPile->settings.armor; + bool all = parmor.unusable && parmor.usable; - if (food.has_prepared_meals()) - mPile->settings.food.prepared_meals = food.prepared_meals(); - else - mPile->settings.food.prepared_meals = true; + armor->set_unusable(parmor.unusable); + armor->set_usable(parmor.usable); - DEBUG(log).print("prepared_meals: %d\n", mPile->settings.food.prepared_meals); + // armor type + all = serialize_list_itemdef( + [=](const std::string& token) { armor->add_body(token); }, + parmor.body, + std::vector(world->raws.itemdefs.armor.begin(), world->raws.itemdefs.armor.end()), + item_type::ARMOR) && all; - for (int32_t mat_category = traits::first_item_value; mat_category < traits::last_item_value; ++mat_category) { - food_pair p = food_map((organic_mat_category)mat_category); - if (!p.valid) - continue; - unserialize_list_organic_mat(p.get_value, p.serialized_count, p.stockpile_values, (organic_mat_category)mat_category); - } - } - else { - for (int32_t mat_category = traits::first_item_value; mat_category < traits::last_item_value; ++mat_category) { - food_pair p = food_map((organic_mat_category)mat_category); - if (!p.valid) - continue; - p.stockpile_values->clear(); - } - mPile->settings.flags.bits.food = 0; - mPile->settings.food.prepared_meals = false; - } -} + // helm type + all = serialize_list_itemdef( + [=](const std::string& token) { armor->add_head(token); }, + parmor.head, + std::vector(world->raws.itemdefs.helms.begin(), world->raws.itemdefs.helms.end()), + item_type::HELM) && all; -void StockpileSerializer::write_furniture(StockpileSettings::FurnitureSet* furniture) { - // FURNITURE type - using df::enums::furniture_type::furniture_type; - using type_traits = df::enum_traits; - for (size_t i = 0; i < mPile->settings.furniture.type.size(); ++i) { - if (mPile->settings.furniture.type.at(i)) { - std::string f_type(type_traits::key_table[i]); - furniture->add_type(f_type); - DEBUG(log).print("furniture_type %zd is %s\n", i, f_type.c_str()); - } - } - // metal, stone/clay materials - FuncMaterialAllowed filter = std::bind(&StockpileSerializer::furniture_mat_is_allowed, this, _1); - serialize_list_material( - filter, [=](const std::string& token) { furniture->add_mats(token); }, - mPile->settings.furniture.mats); + // shoes type + all = serialize_list_itemdef( + [=](const std::string& token) { armor->add_feet(token); }, + parmor.feet, + std::vector(world->raws.itemdefs.shoes.begin(), world->raws.itemdefs.shoes.end()), + item_type::SHOES) && all; + + // gloves type + all = serialize_list_itemdef( + [=](const std::string& token) { armor->add_hands(token); }, + parmor.hands, + std::vector(world->raws.itemdefs.gloves.begin(), world->raws.itemdefs.gloves.end()), + item_type::GLOVES) && all; + + // pant type + all = serialize_list_itemdef( + [=](const std::string& token) { armor->add_legs(token); }, + parmor.legs, + std::vector(world->raws.itemdefs.pants.begin(), world->raws.itemdefs.pants.end()), + item_type::PANTS) && all; + + // shield type + all = serialize_list_itemdef( + [=](const std::string& token) { armor->add_shield(token); }, + parmor.shield, + std::vector(world->raws.itemdefs.shields.begin(), world->raws.itemdefs.shields.end()), + item_type::SHIELD) && all; + + // materials + all = serialize_list_material( + armor_mat_is_allowed, + [=](const std::string& token) { armor->add_mats(token); }, + parmor.mats) && all; // other mats - serialize_list_other_mats( - mOtherMatsFurniture.mats, [=](const std::string& token) { furniture->add_other_mats(token); }, - mPile->settings.furniture.other_mats); + all = serialize_list_other_mats( + mOtherMatsWeaponsArmor.mats, [=](const std::string& token) { armor->add_other_mats(token); }, + parmor.other_mats) && all; - serialize_list_quality([=](const std::string& token) { furniture->add_quality_core(token); }, - mPile->settings.furniture.quality_core); - serialize_list_quality([=](const std::string& token) { furniture->add_quality_total(token); }, - mPile->settings.furniture.quality_total); -} + // quality core + all = serialize_list_quality([=](const std::string& token) { armor->add_quality_core(token); }, + parmor.quality_core) && all; -bool StockpileSerializer::furniture_mat_is_allowed(const MaterialInfo& mi) { - return mi.isValid() && mi.material && (mi.material->flags.is_set(material_flags::IS_METAL) || mi.material->flags.is_set(material_flags::IS_STONE)); + // quality total + all = serialize_list_quality([=](const std::string& token) { armor->add_quality_total(token); }, + parmor.quality_total) && all; + + return all; } -void StockpileSerializer::read_furniture(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_furniture()) { - mPile->settings.flags.bits.furniture = 1; - const StockpileSettings::FurnitureSet furniture = mBuffer.furniture(); - DEBUG(log).print("furniture:\n"); +void StockpileSerializer::read_armor(DeserializeMode mode, const std::string& filter) { + if (mBuffer.has_armor()) { + mPile->settings.flags.bits.armor = 1; + const StockpileSettings::ArmorSet armor = mBuffer.armor(); + DEBUG(log).print("armor:\n"); - // type - using df::enums::furniture_type::furniture_type; - df::enum_traits type_traits; - mPile->settings.furniture.type.clear(); - mPile->settings.furniture.type.resize(type_traits.last_item_value + 1, '\0'); - if (furniture.type_size() > 0) { - for (int i = 0; i < furniture.type_size(); ++i) { - const std::string type = furniture.type(i); - df::enum_traits::base_type idx = linear_index(type_traits, type); - DEBUG(log).print("type %d is %s\n", idx, type.c_str()); - if (idx < 0 || size_t(idx) >= mPile->settings.furniture.type.size()) { - WARN(log).print("furniture type index invalid %s, idx=%d\n", type.c_str(), idx); - continue; - } - mPile->settings.furniture.type.at(idx) = 1; - } - } + bool unusable = armor.unusable(); + bool usable = armor.usable(); + DEBUG(log).print("unusable %d\n", unusable); + DEBUG(log).print("usable %d\n", usable); + mPile->settings.armor.unusable = unusable; + mPile->settings.armor.usable = usable; + + unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return armor.body(idx); }, + armor.body_size(), &mPile->settings.armor.body, item_type::ARMOR); + + unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return armor.head(idx); }, + armor.head_size(), &mPile->settings.armor.head, item_type::HELM); + + unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return armor.feet(idx); }, + armor.feet_size(), &mPile->settings.armor.feet, item_type::SHOES); + + unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return armor.hands(idx); }, + armor.hands_size(), &mPile->settings.armor.hands, item_type::GLOVES); + + unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return armor.legs(idx); }, + armor.legs_size(), &mPile->settings.armor.legs, item_type::PANTS); + + unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return armor.shield(idx); }, + armor.shield_size(), &mPile->settings.armor.shield, item_type::SHIELD); - FuncMaterialAllowed filter = std::bind(&StockpileSerializer::furniture_mat_is_allowed, this, _1); unserialize_list_material( - filter, [=](const size_t& idx) -> const std::string& { return furniture.mats(idx); }, - furniture.mats_size(), &mPile->settings.furniture.mats); + armor_mat_is_allowed, + [=](const size_t& idx) -> const std::string& { return armor.mats(idx); }, + armor.mats_size(), &mPile->settings.armor.mats); - // other materials unserialize_list_other_mats( - mOtherMatsFurniture.mats, [=](const size_t& idx) -> const std::string& { return furniture.other_mats(idx); }, - furniture.other_mats_size(), &mPile->settings.furniture.other_mats); + mOtherMatsWeaponsArmor.mats, [=](const size_t& idx) -> const std::string& { return armor.other_mats(idx); }, + armor.other_mats_size(), &mPile->settings.armor.other_mats); - // core quality - unserialize_list_quality([=](const size_t& idx) -> const std::string& { return furniture.quality_core(idx); }, - furniture.quality_core_size(), mPile->settings.furniture.quality_core); + unserialize_list_quality([=](const size_t& idx) -> const std::string& { return armor.quality_core(idx); }, + armor.quality_core_size(), mPile->settings.armor.quality_core); - // total quality - unserialize_list_quality([=](const size_t& idx) -> const std::string& { return furniture.quality_total(idx); }, - furniture.quality_total_size(), mPile->settings.furniture.quality_total); + unserialize_list_quality([=](const size_t& idx) -> const std::string& { return armor.quality_total(idx); }, + armor.quality_total_size(), mPile->settings.armor.quality_total); } else { - mPile->settings.flags.bits.furniture = 0; - mPile->settings.furniture.type.clear(); - mPile->settings.furniture.other_mats.clear(); - mPile->settings.furniture.mats.clear(); - quality_clear(mPile->settings.furniture.quality_core); - quality_clear(mPile->settings.furniture.quality_total); + mPile->settings.flags.bits.armor = 0; + mPile->settings.armor.body.clear(); + mPile->settings.armor.head.clear(); + mPile->settings.armor.feet.clear(); + mPile->settings.armor.hands.clear(); + mPile->settings.armor.legs.clear(); + mPile->settings.armor.shield.clear(); + mPile->settings.armor.other_mats.clear(); + mPile->settings.armor.mats.clear(); + quality_clear(mPile->settings.armor.quality_core); + quality_clear(mPile->settings.armor.quality_total); } } -bool StockpileSerializer::refuse_creature_is_allowed(const df::creature_raw* raw) { - if (!raw) - return false; - // wagon and generated creatures not allowed, except angels - const bool is_wagon = raw->creature_id == "EQUIPMENT_WAGON"; - const bool is_generated = raw->flags.is_set(creature_raw_flags::GENERATED); - const bool is_angel = is_generated && raw->creature_id.find("DIVINE_") != std::string::npos; - return !is_wagon && !(is_generated && !is_angel); +static bool bars_mat_is_allowed(const MaterialInfo& mi) { + return mi.isValid() && mi.material && mi.material->flags.is_set(material_flags::IS_METAL); } -void StockpileSerializer::refuse_write_helper(std::function add_value, const vector& list) { - for (size_t i = 0; i < list.size(); ++i) { - if (list.at(i) == 1) { - df::creature_raw* r = find_creature(i); - // skip forgotten beasts, titans, demons, and night creatures - if (!refuse_creature_is_allowed(r)) - continue; - DEBUG(log).print("creature %s %zd\n", r->creature_id.c_str(), i); - add_value(r->creature_id); - } - } +static bool blocks_mat_is_allowed(const MaterialInfo& mi) { + return mi.isValid() && mi.material && (mi.material->flags.is_set(material_flags::IS_METAL) || mi.material->flags.is_set(material_flags::IS_STONE)); } -bool StockpileSerializer::refuse_type_is_allowed(item_type::item_type type) { - if (type == item_type::NONE || type == item_type::BAR || type == item_type::SMALLGEM || type == item_type::BLOCKS || type == item_type::ROUGH || type == item_type::BOULDER || type == item_type::CORPSE || type == item_type::CORPSEPIECE || type == item_type::ROCK || type == item_type::ORTHOPEDIC_CAST) - return false; - return true; -} +bool StockpileSerializer::write_bars_blocks(StockpileSettings::BarsBlocksSet* bars_blocks) { + bool all = serialize_list_material( + bars_mat_is_allowed, + [=](const std::string& token) { bars_blocks->add_bars_mats(token); }, + mPile->settings.bars_blocks.bars_mats); -void StockpileSerializer::write_refuse(StockpileSettings::RefuseSet* refuse) { - DEBUG(log).print("refuse:\n"); - refuse->set_fresh_raw_hide(mPile->settings.refuse.fresh_raw_hide); - refuse->set_rotten_raw_hide(mPile->settings.refuse.rotten_raw_hide); + all = serialize_list_material( + blocks_mat_is_allowed, + [=](const std::string& token) { bars_blocks->add_blocks_mats(token); }, + mPile->settings.bars_blocks.blocks_mats) && all; - // type - DEBUG(log).print("getting types\n"); - FuncItemAllowed filter = std::bind(&StockpileSerializer::refuse_type_is_allowed, this, _1); - serialize_list_item_type( - filter, [=](const std::string& token) { - DEBUG(log).print("adding type: %s\n", token.c_str()); - refuse->add_type(token); - }, - mPile->settings.refuse.type); - - // corpses - refuse_write_helper([=](const std::string& id) { refuse->add_corpses(id); }, - mPile->settings.refuse.corpses); - // body_parts - refuse_write_helper([=](const std::string& id) { refuse->add_body_parts(id); }, - mPile->settings.refuse.body_parts); - // skulls - refuse_write_helper([=](const std::string& id) { refuse->add_skulls(id); }, - mPile->settings.refuse.skulls); - // bones - refuse_write_helper([=](const std::string& id) { refuse->add_bones(id); }, - mPile->settings.refuse.bones); - // hair - refuse_write_helper([=](const std::string& id) { refuse->add_hair(id); }, - mPile->settings.refuse.hair); - // shells - refuse_write_helper([=](const std::string& id) { refuse->add_shells(id); }, - mPile->settings.refuse.shells); - // teeth - refuse_write_helper([=](const std::string& id) { refuse->add_teeth(id); }, - mPile->settings.refuse.teeth); - // horns - refuse_write_helper([=](const std::string& id) { refuse->add_horns(id); }, - mPile->settings.refuse.horns); -} - -void StockpileSerializer::refuse_read_helper(std::function get_value, size_t list_size, std::vector* pile_list) { - pile_list->clear(); - pile_list->resize(world->raws.creatures.all.size(), '\0'); - if (list_size > 0) { - for (size_t i = 0; i < list_size; ++i) { - const std::string creature_id = get_value(i); - const int idx = find_creature(creature_id); - const df::creature_raw* creature = find_creature(idx); - if (idx < 0 || !refuse_creature_is_allowed(creature) || size_t(idx) >= pile_list->size()) { - WARN(log).print("invalid refuse creature %s, idx=%d\n", creature_id.c_str(), idx); - continue; - } - DEBUG(log).print("creature %d is %s\n", idx, creature_id.c_str()); - pile_list->at(idx) = 1; - } - } + all = serialize_list_other_mats( + mOtherMatsBars.mats, [=](const std::string& token) { bars_blocks->add_bars_other_mats(token); }, + mPile->settings.bars_blocks.bars_other_mats) && all; + + all = serialize_list_other_mats( + mOtherMatsBlocks.mats, [=](const std::string& token) { bars_blocks->add_blocks_other_mats(token); }, + mPile->settings.bars_blocks.blocks_other_mats) && all; + + return all; } -void StockpileSerializer::read_refuse(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_refuse()) { - mPile->settings.flags.bits.refuse = 1; - const StockpileSettings::RefuseSet refuse = mBuffer.refuse(); - DEBUG(log).print("refuse:\n"); - DEBUG(log).print(" fresh hide %d\n", refuse.fresh_raw_hide()); - DEBUG(log).print(" rotten hide %d\n", refuse.rotten_raw_hide()); - mPile->settings.refuse.fresh_raw_hide = refuse.fresh_raw_hide(); - mPile->settings.refuse.rotten_raw_hide = refuse.rotten_raw_hide(); +void StockpileSerializer::read_bars_blocks(DeserializeMode mode, const std::string& filter) { + if (mBuffer.has_barsblocks()) { + mPile->settings.flags.bits.bars_blocks = 1; + const StockpileSettings::BarsBlocksSet bars_blocks = mBuffer.barsblocks(); + DEBUG(log).print("bars_blocks:\n"); - // type - FuncItemAllowed filter = std::bind(&StockpileSerializer::refuse_type_is_allowed, this, _1); - unserialize_list_item_type( - filter, [=](const size_t& idx) -> const std::string& { return refuse.type(idx); }, - refuse.type_size(), &mPile->settings.refuse.type); + unserialize_list_material( + bars_mat_is_allowed, + [=](const size_t& idx) -> const std::string& { return bars_blocks.bars_mats(idx); }, + bars_blocks.bars_mats_size(), &mPile->settings.bars_blocks.bars_mats); - // corpses - DEBUG(log).print(" corpses\n"); - refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.corpses(idx); }, - refuse.corpses_size(), &mPile->settings.refuse.corpses); - // body_parts - DEBUG(log).print(" body_parts\n"); - refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.body_parts(idx); }, - refuse.body_parts_size(), &mPile->settings.refuse.body_parts); - // skulls - DEBUG(log).print(" skulls\n"); - refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.skulls(idx); }, - refuse.skulls_size(), &mPile->settings.refuse.skulls); - // bones - DEBUG(log).print(" bones\n"); - refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.bones(idx); }, - refuse.bones_size(), &mPile->settings.refuse.bones); - // hair - DEBUG(log).print(" hair\n"); - refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.hair(idx); }, - refuse.hair_size(), &mPile->settings.refuse.hair); - // shells - DEBUG(log).print(" shells\n"); - refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.shells(idx); }, - refuse.shells_size(), &mPile->settings.refuse.shells); - // teeth - DEBUG(log).print(" teeth\n"); - refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.teeth(idx); }, - refuse.teeth_size(), &mPile->settings.refuse.teeth); - // horns - DEBUG(log).print(" horns\n"); - refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.horns(idx); }, - refuse.horns_size(), &mPile->settings.refuse.horns); + unserialize_list_material( + blocks_mat_is_allowed, + [=](const size_t& idx) -> const std::string& { return bars_blocks.blocks_mats(idx); }, + bars_blocks.blocks_mats_size(), &mPile->settings.bars_blocks.blocks_mats); + + unserialize_list_other_mats( + mOtherMatsBars.mats, + [=](const size_t& idx) -> const std::string& { return bars_blocks.bars_other_mats(idx); }, + bars_blocks.bars_other_mats_size(), &mPile->settings.bars_blocks.bars_other_mats); + + unserialize_list_other_mats( + mOtherMatsBlocks.mats, + [=](const size_t& idx) -> const std::string& { return bars_blocks.blocks_other_mats(idx); }, + bars_blocks.blocks_other_mats_size(), &mPile->settings.bars_blocks.blocks_other_mats); } else { - mPile->settings.flags.bits.refuse = 0; - mPile->settings.refuse.type.clear(); - mPile->settings.refuse.corpses.clear(); - mPile->settings.refuse.body_parts.clear(); - mPile->settings.refuse.skulls.clear(); - mPile->settings.refuse.bones.clear(); - mPile->settings.refuse.hair.clear(); - mPile->settings.refuse.shells.clear(); - mPile->settings.refuse.teeth.clear(); - mPile->settings.refuse.horns.clear(); - mPile->settings.refuse.fresh_raw_hide = false; - mPile->settings.refuse.rotten_raw_hide = false; + mPile->settings.flags.bits.bars_blocks = 0; + mPile->settings.bars_blocks.bars_other_mats.clear(); + mPile->settings.bars_blocks.bars_mats.clear(); + mPile->settings.bars_blocks.blocks_other_mats.clear(); + mPile->settings.bars_blocks.blocks_mats.clear(); } } -bool StockpileSerializer::stone_is_allowed(const MaterialInfo& mi) { - if (!mi.isValid()) - return false; - const bool is_allowed_soil = mi.inorganic->flags.is_set(inorganic_flags::SOIL) && !mi.inorganic->flags.is_set(inorganic_flags::AQUIFER); - const bool is_allowed_stone = mi.material->flags.is_set(material_flags::IS_STONE) && !mi.material->flags.is_set(material_flags::NO_STONE_STOCKPILE); - return is_allowed_soil || is_allowed_stone; -} +bool StockpileSerializer::write_cloth(StockpileSettings::ClothSet* cloth) { + bool all = true; -void StockpileSerializer::write_stone(StockpileSettings::StoneSet* stone) { - FuncMaterialAllowed filter = std::bind(&StockpileSerializer::stone_is_allowed, this, _1); - serialize_list_material( - filter, [=](const std::string& token) { stone->add_mats(token); }, - mPile->settings.stone.mats); -} + all = serialize_list_organic_mat( + [=](const std::string& token) { cloth->add_thread_silk(token); }, + &mPile->settings.cloth.thread_silk, organic_mat_category::Silk) && all; -void StockpileSerializer::read_stone(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_stone()) { - mPile->settings.flags.bits.stone = 1; - const StockpileSettings::StoneSet stone = mBuffer.stone(); - DEBUG(log).print("stone:\n"); + all = serialize_list_organic_mat( + [=](const std::string& token) { cloth->add_thread_plant(token); }, + &mPile->settings.cloth.thread_plant, organic_mat_category::PlantFiber) && all; - FuncMaterialAllowed filter = std::bind(&StockpileSerializer::stone_is_allowed, this, _1); - unserialize_list_material( - filter, [=](const size_t& idx) -> const std::string& { return stone.mats(idx); }, - stone.mats_size(), &mPile->settings.stone.mats); - } - else { - mPile->settings.flags.bits.stone = 0; - mPile->settings.stone.mats.clear(); - } -} + all = serialize_list_organic_mat( + [=](const std::string& token) { cloth->add_thread_yarn(token); }, + &mPile->settings.cloth.thread_yarn, organic_mat_category::Yarn) && all; -bool StockpileSerializer::coins_mat_is_allowed(const MaterialInfo& mi) { - return mi.isValid(); -} + all = serialize_list_organic_mat( + [=](const std::string& token) { cloth->add_thread_metal(token); }, + &mPile->settings.cloth.thread_metal, organic_mat_category::MetalThread) && all; -void StockpileSerializer::write_coins(StockpileSettings::CoinSet* coins) { - FuncMaterialAllowed filter = std::bind(&StockpileSerializer::coins_mat_is_allowed, this, _1); - serialize_list_material( - filter, [=](const std::string& token) { coins->add_mats(token); }, - mPile->settings.coins.mats); + all = serialize_list_organic_mat( + [=](const std::string& token) { cloth->add_cloth_silk(token); }, + &mPile->settings.cloth.cloth_silk, organic_mat_category::Silk) && all; + + all = serialize_list_organic_mat( + [=](const std::string& token) { cloth->add_cloth_plant(token); }, + &mPile->settings.cloth.cloth_plant, organic_mat_category::PlantFiber) && all; + + all = serialize_list_organic_mat( + [=](const std::string& token) { cloth->add_cloth_yarn(token); }, + &mPile->settings.cloth.cloth_yarn, organic_mat_category::Yarn) && all; + + all = serialize_list_organic_mat( + [=](const std::string& token) { cloth->add_cloth_metal(token); }, + &mPile->settings.cloth.cloth_metal, organic_mat_category::MetalThread) && all; + + return all; } -void StockpileSerializer::read_coins(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_coin()) { - mPile->settings.flags.bits.coins = 1; - const StockpileSettings::CoinSet coins = mBuffer.coin(); - DEBUG(log).print("coins:\n"); +void StockpileSerializer::read_cloth(DeserializeMode mode, const std::string& filter) { + if (mBuffer.has_cloth()) { + mPile->settings.flags.bits.cloth = 1; + const StockpileSettings::ClothSet cloth = mBuffer.cloth(); + DEBUG(log).print("cloth:\n"); + + unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.thread_silk(idx); }, + cloth.thread_silk_size(), &mPile->settings.cloth.thread_silk, organic_mat_category::Silk); + + unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.thread_plant(idx); }, + cloth.thread_plant_size(), &mPile->settings.cloth.thread_plant, organic_mat_category::PlantFiber); + + unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.thread_yarn(idx); }, + cloth.thread_yarn_size(), &mPile->settings.cloth.thread_yarn, organic_mat_category::Yarn); + + unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.thread_metal(idx); }, + cloth.thread_metal_size(), &mPile->settings.cloth.thread_metal, organic_mat_category::MetalThread); + + unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.cloth_silk(idx); }, + cloth.cloth_silk_size(), &mPile->settings.cloth.cloth_silk, organic_mat_category::Silk); + + unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.cloth_plant(idx); }, + cloth.cloth_plant_size(), &mPile->settings.cloth.cloth_plant, organic_mat_category::PlantFiber); + + unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.cloth_yarn(idx); }, + cloth.cloth_yarn_size(), &mPile->settings.cloth.cloth_yarn, organic_mat_category::Yarn); + + unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.cloth_metal(idx); }, + cloth.cloth_metal_size(), &mPile->settings.cloth.cloth_metal, organic_mat_category::MetalThread); + } + else { + mPile->settings.cloth.thread_metal.clear(); + mPile->settings.cloth.thread_plant.clear(); + mPile->settings.cloth.thread_silk.clear(); + mPile->settings.cloth.thread_yarn.clear(); + mPile->settings.cloth.cloth_metal.clear(); + mPile->settings.cloth.cloth_plant.clear(); + mPile->settings.cloth.cloth_silk.clear(); + mPile->settings.cloth.cloth_yarn.clear(); + mPile->settings.flags.bits.cloth = 0; + } +} + +static bool coins_mat_is_allowed(const MaterialInfo& mi) { + return mi.isValid(); +} + +bool StockpileSerializer::write_coins(StockpileSettings::CoinSet* coins) { + return serialize_list_material( + coins_mat_is_allowed, + [=](const std::string& token) { coins->add_mats(token); }, + mPile->settings.coins.mats); +} + +void StockpileSerializer::read_coins(DeserializeMode mode, const std::string& filter) { + if (mBuffer.has_coin()) { + mPile->settings.flags.bits.coins = 1; + const StockpileSettings::CoinSet coins = mBuffer.coin(); + DEBUG(log).print("coins:\n"); + + unserialize_list_material( + coins_mat_is_allowed, + [=](const size_t& idx) -> const std::string& { return coins.mats(idx); }, + coins.mats_size(), &mPile->settings.coins.mats); + } + else { + mPile->settings.flags.bits.coins = 0; + mPile->settings.coins.mats.clear(); + } +} + +static bool finished_goods_type_is_allowed(item_type::item_type type) { + switch (type) { + case item_type::CHAIN: + case item_type::FLASK: + case item_type::GOBLET: + case item_type::INSTRUMENT: + case item_type::TOY: + case item_type::ARMOR: + case item_type::SHOES: + case item_type::HELM: + case item_type::GLOVES: + case item_type::FIGURINE: + case item_type::AMULET: + case item_type::SCEPTER: + case item_type::CROWN: + case item_type::RING: + case item_type::EARRING: + case item_type::BRACELET: + case item_type::GEM: + case item_type::TOTEM: + case item_type::PANTS: + case item_type::BACKPACK: + case item_type::QUIVER: + case item_type::SPLINT: + case item_type::CRUTCH: + case item_type::TOOL: + case item_type::BOOK: + return true; + default: + return false; + } +} + +static bool finished_goods_mat_is_allowed(const MaterialInfo& mi) { + return mi.isValid() && mi.material && (mi.material->flags.is_set(material_flags::IS_GEM) || mi.material->flags.is_set(material_flags::IS_METAL) || mi.material->flags.is_set(material_flags::IS_STONE)); +} + +bool StockpileSerializer::write_finished_goods(StockpileSettings::FinishedGoodsSet* finished_goods) { + bool all = serialize_list_item_type( + finished_goods_type_is_allowed, + [=](const std::string& token) { finished_goods->add_type(token); }, + mPile->settings.finished_goods.type); + + all = serialize_list_material( + finished_goods_mat_is_allowed, + [=](const std::string& token) { finished_goods->add_mats(token); }, + mPile->settings.finished_goods.mats) && all; + + all = serialize_list_other_mats( + mOtherMatsFinishedGoods.mats, [=](const std::string& token) { finished_goods->add_other_mats(token); }, + mPile->settings.finished_goods.other_mats) && all; + + all = serialize_list_quality([=](const std::string& token) { finished_goods->add_quality_core(token); }, + mPile->settings.finished_goods.quality_core) && all; + + all = serialize_list_quality([=](const std::string& token) { finished_goods->add_quality_total(token); }, + mPile->settings.finished_goods.quality_total) && all; + + return all; +} + +void StockpileSerializer::read_finished_goods(DeserializeMode mode, const std::string& filter) { + if (mBuffer.has_finished_goods()) { + mPile->settings.flags.bits.finished_goods = 1; + const StockpileSettings::FinishedGoodsSet finished_goods = mBuffer.finished_goods(); + DEBUG(log).print("finished_goods:\n"); + + unserialize_list_item_type( + finished_goods_type_is_allowed, + [=](const size_t& idx) -> const std::string& { return finished_goods.type(idx); }, + finished_goods.type_size(), &mPile->settings.finished_goods.type); + + unserialize_list_material( + finished_goods_mat_is_allowed, + [=](const size_t& idx) -> const std::string& { return finished_goods.mats(idx); }, + finished_goods.mats_size(), &mPile->settings.finished_goods.mats); + + unserialize_list_other_mats( + mOtherMatsFinishedGoods.mats, [=](const size_t& idx) -> const std::string& { return finished_goods.other_mats(idx); }, + finished_goods.other_mats_size(), &mPile->settings.finished_goods.other_mats); + + unserialize_list_quality([=](const size_t& idx) -> const std::string& { return finished_goods.quality_core(idx); }, + finished_goods.quality_core_size(), mPile->settings.finished_goods.quality_core); + + unserialize_list_quality([=](const size_t& idx) -> const std::string& { return finished_goods.quality_total(idx); }, + finished_goods.quality_total_size(), mPile->settings.finished_goods.quality_total); + } + else { + mPile->settings.flags.bits.finished_goods = 0; + mPile->settings.finished_goods.type.clear(); + mPile->settings.finished_goods.other_mats.clear(); + mPile->settings.finished_goods.mats.clear(); + quality_clear(mPile->settings.finished_goods.quality_core); + quality_clear(mPile->settings.finished_goods.quality_total); + } +} + +food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_category cat) { + using df::enums::organic_mat_category::organic_mat_category; + + switch (cat) { + case organic_mat_category::Meat: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_meat(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().meat(idx); }; + return food_pair(setter, &mPile->settings.food.meat, getter, mBuffer.food().meat_size()); + } + case organic_mat_category::Fish: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_fish(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().fish(idx); }; + return food_pair(setter, &mPile->settings.food.fish, getter, mBuffer.food().fish_size()); + } + case organic_mat_category::UnpreparedFish: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_unprepared_fish(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().unprepared_fish(idx); }; + return food_pair(setter, &mPile->settings.food.unprepared_fish, getter, mBuffer.food().unprepared_fish_size()); + } + case organic_mat_category::Eggs: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_egg(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().egg(idx); }; + return food_pair(setter, &mPile->settings.food.egg, getter, mBuffer.food().egg_size()); + } + case organic_mat_category::Plants: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_plants(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().plants(idx); }; + return food_pair(setter, &mPile->settings.food.plants, getter, mBuffer.food().plants_size()); + } + case organic_mat_category::PlantDrink: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_drink_plant(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().drink_plant(idx); }; + return food_pair(setter, &mPile->settings.food.drink_plant, getter, mBuffer.food().drink_plant_size()); + } + case organic_mat_category::CreatureDrink: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_drink_animal(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().drink_animal(idx); }; + return food_pair(setter, &mPile->settings.food.drink_animal, getter, mBuffer.food().drink_animal_size()); + } + case organic_mat_category::PlantCheese: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_cheese_plant(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().cheese_plant(idx); }; + return food_pair(setter, &mPile->settings.food.cheese_plant, getter, mBuffer.food().cheese_plant_size()); + } + case organic_mat_category::CreatureCheese: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_cheese_animal(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().cheese_animal(idx); }; + return food_pair(setter, &mPile->settings.food.cheese_animal, getter, mBuffer.food().cheese_animal_size()); + } + case organic_mat_category::Seed: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_seeds(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().seeds(idx); }; + return food_pair(setter, &mPile->settings.food.seeds, getter, mBuffer.food().seeds_size()); + } + case organic_mat_category::Leaf: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_leaves(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().leaves(idx); }; + return food_pair(setter, &mPile->settings.food.leaves, getter, mBuffer.food().leaves_size()); + } + case organic_mat_category::PlantPowder: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_powder_plant(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().powder_plant(idx); }; + return food_pair(setter, &mPile->settings.food.powder_plant, getter, mBuffer.food().powder_plant_size()); + } + case organic_mat_category::CreaturePowder: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_powder_creature(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().powder_creature(idx); }; + return food_pair(setter, &mPile->settings.food.powder_creature, getter, mBuffer.food().powder_creature_size()); + } + case organic_mat_category::Glob: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_glob(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().glob(idx); }; + return food_pair(setter, &mPile->settings.food.glob, getter, mBuffer.food().glob_size()); + } + case organic_mat_category::PlantLiquid: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_liquid_plant(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().liquid_plant(idx); }; + return food_pair(setter, &mPile->settings.food.liquid_plant, getter, mBuffer.food().liquid_plant_size()); + } + case organic_mat_category::CreatureLiquid: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_liquid_animal(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().liquid_animal(idx); }; + return food_pair(setter, &mPile->settings.food.liquid_animal, getter, mBuffer.food().liquid_animal_size()); + } + case organic_mat_category::MiscLiquid: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_liquid_misc(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().liquid_misc(idx); }; + return food_pair(setter, &mPile->settings.food.liquid_misc, getter, mBuffer.food().liquid_misc_size()); + } + + case organic_mat_category::Paste: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_glob_paste(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().glob_paste(idx); }; + return food_pair(setter, &mPile->settings.food.glob_paste, getter, mBuffer.food().glob_paste_size()); + } + case organic_mat_category::Pressed: + { + FuncWriteExport setter = [=](const std::string& id) { + mBuffer.mutable_food()->add_glob_pressed(id); + }; + FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().glob_pressed(idx); }; + return food_pair(setter, &mPile->settings.food.glob_pressed, getter, mBuffer.food().glob_pressed_size()); + } + case organic_mat_category::Leather: + case organic_mat_category::Silk: + case organic_mat_category::PlantFiber: + case organic_mat_category::Bone: + case organic_mat_category::Shell: + case organic_mat_category::Wood: + case organic_mat_category::Horn: + case organic_mat_category::Pearl: + case organic_mat_category::Tooth: + case organic_mat_category::EdibleCheese: + case organic_mat_category::AnyDrink: + case organic_mat_category::EdiblePlant: + case organic_mat_category::CookableLiquid: + case organic_mat_category::CookablePowder: + case organic_mat_category::CookableSeed: + case organic_mat_category::CookableLeaf: + case organic_mat_category::Yarn: + case organic_mat_category::MetalThread: + default: + // not used in stockpile food menu + break; + } + return food_pair(); +} + +bool StockpileSerializer::write_food(StockpileSettings::FoodSet* food) { + DEBUG(log).print("food:\n"); + + auto & pfood = mPile->settings.food; + bool all = pfood.prepared_meals; + + food->set_prepared_meals(pfood.prepared_meals); + + using df::enums::organic_mat_category::organic_mat_category; + using traits = df::enum_traits; + for (int32_t mat_category = traits::first_item_value; mat_category < traits::last_item_value; ++mat_category) { + food_pair p = food_map((organic_mat_category)mat_category); + if (!p.valid) + continue; + DEBUG(log).print("food: %s\n", traits::key_table[mat_category]); + all = serialize_list_organic_mat(p.set_value, p.stockpile_values, (organic_mat_category)mat_category) && all; + } + + return all; +} + +void StockpileSerializer::read_food(DeserializeMode mode, const std::string& filter) { + using df::enums::organic_mat_category::organic_mat_category; + using traits = df::enum_traits; + if (mBuffer.has_food()) { + mPile->settings.flags.bits.food = 1; + const StockpileSettings::FoodSet food = mBuffer.food(); + DEBUG(log).print("food:\n"); + + if (food.has_prepared_meals()) + mPile->settings.food.prepared_meals = food.prepared_meals(); + else + mPile->settings.food.prepared_meals = true; - FuncMaterialAllowed filter = std::bind(&StockpileSerializer::coins_mat_is_allowed, this, _1); - unserialize_list_material( - filter, [=](const size_t& idx) -> const std::string& { return coins.mats(idx); }, - coins.mats_size(), &mPile->settings.coins.mats); + DEBUG(log).print("prepared_meals: %d\n", mPile->settings.food.prepared_meals); + + for (int32_t mat_category = traits::first_item_value; mat_category < traits::last_item_value; ++mat_category) { + food_pair p = food_map((organic_mat_category)mat_category); + if (!p.valid) + continue; + unserialize_list_organic_mat(p.get_value, p.serialized_count, p.stockpile_values, (organic_mat_category)mat_category); + } } else { - mPile->settings.flags.bits.coins = 0; - mPile->settings.coins.mats.clear(); + for (int32_t mat_category = traits::first_item_value; mat_category < traits::last_item_value; ++mat_category) { + food_pair p = food_map((organic_mat_category)mat_category); + if (!p.valid) + continue; + p.stockpile_values->clear(); + } + mPile->settings.flags.bits.food = 0; + mPile->settings.food.prepared_meals = false; } } -bool StockpileSerializer::bars_mat_is_allowed(const MaterialInfo& mi) { - return mi.isValid() && mi.material && mi.material->flags.is_set(material_flags::IS_METAL); -} - -bool StockpileSerializer::blocks_mat_is_allowed(const MaterialInfo& mi) { +static bool furniture_mat_is_allowed(const MaterialInfo& mi) { return mi.isValid() && mi.material && (mi.material->flags.is_set(material_flags::IS_METAL) || mi.material->flags.is_set(material_flags::IS_STONE)); } -void StockpileSerializer::write_bars_blocks(StockpileSettings::BarsBlocksSet* bars_blocks) { - MaterialInfo mi; - FuncMaterialAllowed filter = std::bind(&StockpileSerializer::bars_mat_is_allowed, this, _1); - serialize_list_material( - filter, [=](const std::string& token) { bars_blocks->add_bars_mats(token); }, - mPile->settings.bars_blocks.bars_mats); +bool StockpileSerializer::write_furniture(StockpileSettings::FurnitureSet* furniture) { + using df::enums::furniture_type::furniture_type; + using type_traits = df::enum_traits; - // blocks mats - filter = std::bind(&StockpileSerializer::blocks_mat_is_allowed, this, _1); - serialize_list_material( - filter, [=](const std::string& token) { bars_blocks->add_blocks_mats(token); }, - mPile->settings.bars_blocks.blocks_mats); + auto & pfurniture = mPile->settings.furniture; + bool all = true; - // bars other mats - serialize_list_other_mats( - mOtherMatsBars.mats, [=](const std::string& token) { bars_blocks->add_bars_other_mats(token); }, - mPile->settings.bars_blocks.bars_other_mats); + for (size_t i = 0; i < pfurniture.type.size(); ++i) { + if (!pfurniture.type.at(i)) { + all = false; + continue; + } + std::string f_type(type_traits::key_table[i]); + furniture->add_type(f_type); + DEBUG(log).print("furniture_type %zd is %s\n", i, f_type.c_str()); + } + all = serialize_list_material( + furniture_mat_is_allowed, + [=](const std::string& token) { furniture->add_mats(token); }, + pfurniture.mats) && all; + all = serialize_list_other_mats( + mOtherMatsFurniture.mats, + [=](const std::string& token) { furniture->add_other_mats(token); }, + pfurniture.other_mats) && all; + all = serialize_list_quality( + [=](const std::string& token) { furniture->add_quality_core(token); }, + pfurniture.quality_core) && all; + all = serialize_list_quality( + [=](const std::string& token) { furniture->add_quality_total(token); }, + pfurniture.quality_total) && all; - // blocks other mats - serialize_list_other_mats( - mOtherMatsBlocks.mats, [=](const std::string& token) { bars_blocks->add_blocks_other_mats(token); }, - mPile->settings.bars_blocks.blocks_other_mats); + return all; } -void StockpileSerializer::read_bars_blocks(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_barsblocks()) { - mPile->settings.flags.bits.bars_blocks = 1; - const StockpileSettings::BarsBlocksSet bars_blocks = mBuffer.barsblocks(); - DEBUG(log).print("bars_blocks:\n"); - // bars - FuncMaterialAllowed filter = std::bind(&StockpileSerializer::bars_mat_is_allowed, this, _1); - unserialize_list_material( - filter, [=](const size_t& idx) -> const std::string& { return bars_blocks.bars_mats(idx); }, - bars_blocks.bars_mats_size(), &mPile->settings.bars_blocks.bars_mats); +void StockpileSerializer::read_furniture(DeserializeMode mode, const std::string& filter) { + if (mBuffer.has_furniture()) { + mPile->settings.flags.bits.furniture = 1; + const StockpileSettings::FurnitureSet furniture = mBuffer.furniture(); + DEBUG(log).print("furniture:\n"); + + // type + using df::enums::furniture_type::furniture_type; + df::enum_traits type_traits; + mPile->settings.furniture.type.clear(); + mPile->settings.furniture.type.resize(type_traits.last_item_value + 1, '\0'); + if (furniture.type_size() > 0) { + for (int i = 0; i < furniture.type_size(); ++i) { + const std::string type = furniture.type(i); + df::enum_traits::base_type idx = linear_index(type_traits, type); + DEBUG(log).print("type %d is %s\n", idx, type.c_str()); + if (idx < 0 || size_t(idx) >= mPile->settings.furniture.type.size()) { + WARN(log).print("furniture type index invalid %s, idx=%d\n", type.c_str(), idx); + continue; + } + mPile->settings.furniture.type.at(idx) = 1; + } + } - // blocks - filter = std::bind(&StockpileSerializer::blocks_mat_is_allowed, this, _1); unserialize_list_material( - filter, [=](const size_t& idx) -> const std::string& { return bars_blocks.blocks_mats(idx); }, - bars_blocks.blocks_mats_size(), &mPile->settings.bars_blocks.blocks_mats); - // bars other mats - unserialize_list_other_mats( - mOtherMatsBars.mats, [=](const size_t& idx) -> const std::string& { return bars_blocks.bars_other_mats(idx); }, - bars_blocks.bars_other_mats_size(), &mPile->settings.bars_blocks.bars_other_mats); + furniture_mat_is_allowed, + [=](const size_t& idx) -> const std::string& { return furniture.mats(idx); }, + furniture.mats_size(), &mPile->settings.furniture.mats); - // blocks other mats unserialize_list_other_mats( - mOtherMatsBlocks.mats, [=](const size_t& idx) -> const std::string& { return bars_blocks.blocks_other_mats(idx); }, - bars_blocks.blocks_other_mats_size(), &mPile->settings.bars_blocks.blocks_other_mats); + mOtherMatsFurniture.mats, [=](const size_t& idx) -> const std::string& { return furniture.other_mats(idx); }, + furniture.other_mats_size(), &mPile->settings.furniture.other_mats); + + unserialize_list_quality([=](const size_t& idx) -> const std::string& { return furniture.quality_core(idx); }, + furniture.quality_core_size(), mPile->settings.furniture.quality_core); + + unserialize_list_quality([=](const size_t& idx) -> const std::string& { return furniture.quality_total(idx); }, + furniture.quality_total_size(), mPile->settings.furniture.quality_total); } else { - mPile->settings.flags.bits.bars_blocks = 0; - mPile->settings.bars_blocks.bars_other_mats.clear(); - mPile->settings.bars_blocks.bars_mats.clear(); - mPile->settings.bars_blocks.blocks_other_mats.clear(); - mPile->settings.bars_blocks.blocks_mats.clear(); + mPile->settings.flags.bits.furniture = 0; + mPile->settings.furniture.type.clear(); + mPile->settings.furniture.other_mats.clear(); + mPile->settings.furniture.mats.clear(); + quality_clear(mPile->settings.furniture.quality_core); + quality_clear(mPile->settings.furniture.quality_total); } } -bool StockpileSerializer::gem_mat_is_allowed(const MaterialInfo& mi) { +static bool gem_mat_is_allowed(const MaterialInfo& mi) { return mi.isValid() && mi.material && mi.material->flags.is_set(material_flags::IS_GEM); } -bool StockpileSerializer::gem_cut_mat_is_allowed(const MaterialInfo& mi) { + +static bool gem_cut_mat_is_allowed(const MaterialInfo& mi) { return mi.isValid() && mi.material && (mi.material->flags.is_set(material_flags::IS_GEM) || mi.material->flags.is_set(material_flags::IS_STONE)); } -bool StockpileSerializer::gem_other_mat_is_allowed(MaterialInfo& mi) { + +static bool gem_other_mat_is_allowed(MaterialInfo& mi) { return mi.isValid() && (mi.getToken() == "GLASS_GREEN" || mi.getToken() == "GLASS_CLEAR" || mi.getToken() == "GLASS_CRYSTAL"); } -void StockpileSerializer::write_gems(StockpileSettings::GemsSet* gems) { +bool StockpileSerializer::write_gems(StockpileSettings::GemsSet* gems) { MaterialInfo mi; - // rough mats - FuncMaterialAllowed filter_rough = std::bind(&StockpileSerializer::gem_mat_is_allowed, this, _1); - serialize_list_material( - filter_rough, [=](const std::string& token) { gems->add_rough_mats(token); }, - mPile->settings.gems.rough_mats); - // cut mats - FuncMaterialAllowed filter_cut = std::bind(&StockpileSerializer::gem_cut_mat_is_allowed, this, _1); - serialize_list_material( - filter_cut, [=](const std::string& token) { gems->add_cut_mats(token); }, - mPile->settings.gems.cut_mats); - // rough other - for (size_t i = 0; i < mPile->settings.gems.rough_other_mats.size(); ++i) { - if (mPile->settings.gems.rough_other_mats.at(i)) { - mi.decode(i, -1); - if (!gem_other_mat_is_allowed(mi)) - continue; - DEBUG(log).print("gem rough_other mat %zd is %s\n", i, mi.getToken().c_str()); - gems->add_rough_other_mats(mi.getToken()); + + auto & pgems = mPile->settings.gems; + + bool all = serialize_list_material( + gem_mat_is_allowed, + [=](const std::string& token) { gems->add_rough_mats(token); }, + pgems.rough_mats); + + all = serialize_list_material( + gem_cut_mat_is_allowed, + [=](const std::string& token) { gems->add_cut_mats(token); }, + pgems.cut_mats) && all; + + for (size_t i = 0; i < pgems.rough_other_mats.size(); ++i) { + if (!pgems.rough_other_mats.at(i)) { + all = false; + continue; } + mi.decode(i, -1); + if (!gem_other_mat_is_allowed(mi)) + continue; + DEBUG(log).print("gem rough_other mat %zd is %s\n", i, mi.getToken().c_str()); + gems->add_rough_other_mats(mi.getToken()); } - // cut other - for (size_t i = 0; i < mPile->settings.gems.cut_other_mats.size(); ++i) { - if (mPile->settings.gems.cut_other_mats.at(i)) { - mi.decode(i, -1); - if (!mi.isValid()) - mi.decode(0, i); - if (!gem_other_mat_is_allowed(mi)) - continue; - DEBUG(log).print("gem cut_other mat %zd is %s\n", i, mi.getToken().c_str()); - gems->add_cut_other_mats(mi.getToken()); + + for (size_t i = 0; i < pgems.cut_other_mats.size(); ++i) { + if (!pgems.cut_other_mats.at(i)) { + all = false; + continue; } + mi.decode(i, -1); + if (!mi.isValid()) + mi.decode(0, i); + if (!gem_other_mat_is_allowed(mi)) + continue; + DEBUG(log).print("gem cut_other mat %zd is %s\n", i, mi.getToken().c_str()); + gems->add_cut_other_mats(mi.getToken()); } + + return all; } void StockpileSerializer::read_gems(DeserializeMode mode, const std::string& filter) { @@ -1551,16 +1720,15 @@ void StockpileSerializer::read_gems(DeserializeMode mode, const std::string& fil mPile->settings.flags.bits.gems = 1; const StockpileSettings::GemsSet gems = mBuffer.gems(); DEBUG(log).print("gems:\n"); - // rough - FuncMaterialAllowed filter_rough = std::bind(&StockpileSerializer::gem_mat_is_allowed, this, _1); + unserialize_list_material( - filter_rough, [=](const size_t& idx) -> const std::string& { return gems.rough_mats(idx); }, + gem_mat_is_allowed, + [=](const size_t& idx) -> const std::string& { return gems.rough_mats(idx); }, gems.rough_mats_size(), &mPile->settings.gems.rough_mats); - // cut - FuncMaterialAllowed filter_cut = std::bind(&StockpileSerializer::gem_cut_mat_is_allowed, this, _1); unserialize_list_material( - filter_cut, [=](const size_t& idx) -> const std::string& { return gems.cut_mats(idx); }, + gem_cut_mat_is_allowed, + [=](const size_t& idx) -> const std::string& { return gems.cut_mats(idx); }, gems.cut_mats_size(), &mPile->settings.gems.cut_mats); const size_t builtin_size = std::extentraws.mat_table.builtin)>::value; @@ -1603,278 +1771,272 @@ void StockpileSerializer::read_gems(DeserializeMode mode, const std::string& fil } } -bool StockpileSerializer::finished_goods_type_is_allowed(item_type::item_type type) { - switch (type) { - case item_type::CHAIN: - case item_type::FLASK: - case item_type::GOBLET: - case item_type::INSTRUMENT: - case item_type::TOY: - case item_type::ARMOR: - case item_type::SHOES: - case item_type::HELM: - case item_type::GLOVES: - case item_type::FIGURINE: - case item_type::AMULET: - case item_type::SCEPTER: - case item_type::CROWN: - case item_type::RING: - case item_type::EARRING: - case item_type::BRACELET: - case item_type::GEM: - case item_type::TOTEM: - case item_type::PANTS: - case item_type::BACKPACK: - case item_type::QUIVER: - case item_type::SPLINT: - case item_type::CRUTCH: - case item_type::TOOL: - case item_type::BOOK: - return true; - default: - return false; - } +bool StockpileSerializer::write_leather(StockpileSettings::LeatherSet* leather) { + return serialize_list_organic_mat( + [=](const std::string& id) { leather->add_mats(id); }, + &mPile->settings.leather.mats, organic_mat_category::Leather); } -bool StockpileSerializer::finished_goods_mat_is_allowed(const MaterialInfo& mi) { - return mi.isValid() && mi.material && (mi.material->flags.is_set(material_flags::IS_GEM) || mi.material->flags.is_set(material_flags::IS_METAL) || mi.material->flags.is_set(material_flags::IS_STONE)); -} +void StockpileSerializer::read_leather(DeserializeMode mode, const std::string& filter) { + if (mBuffer.has_leather()) { + mPile->settings.flags.bits.leather = 1; + const StockpileSettings::LeatherSet leather = mBuffer.leather(); + DEBUG(log).print("leather:\n"); -void StockpileSerializer::write_finished_goods(StockpileSettings::FinishedGoodsSet* finished_goods) { - // type - FuncItemAllowed filter = std::bind(&StockpileSerializer::finished_goods_type_is_allowed, this, _1); - serialize_list_item_type( - filter, [=](const std::string& token) { finished_goods->add_type(token); }, - mPile->settings.finished_goods.type); + unserialize_list_organic_mat([=](size_t idx) -> std::string { return leather.mats(idx); }, + leather.mats_size(), &mPile->settings.leather.mats, organic_mat_category::Leather); + } + else { + mPile->settings.flags.bits.leather = 0; + mPile->settings.leather.mats.clear(); + } +} - // materials - FuncMaterialAllowed mat_filter = std::bind(&StockpileSerializer::finished_goods_mat_is_allowed, this, _1); - serialize_list_material( - mat_filter, [=](const std::string& token) { finished_goods->add_mats(token); }, - mPile->settings.finished_goods.mats); +bool StockpileSerializer::write_corpses(StockpileSettings::CorpsesSet* corpses) { + bool all = true; - // other mats - serialize_list_other_mats( - mOtherMatsFinishedGoods.mats, [=](const std::string& token) { finished_goods->add_other_mats(token); }, - mPile->settings.finished_goods.other_mats); + return all; +} - // quality core - serialize_list_quality([=](const std::string& token) { finished_goods->add_quality_core(token); }, - mPile->settings.finished_goods.quality_core); +void StockpileSerializer::read_corpses(DeserializeMode mode, const std::string& filter) { - // quality total - serialize_list_quality([=](const std::string& token) { finished_goods->add_quality_total(token); }, - mPile->settings.finished_goods.quality_total); } -void StockpileSerializer::read_finished_goods(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_finished_goods()) { - mPile->settings.flags.bits.finished_goods = 1; - const StockpileSettings::FinishedGoodsSet finished_goods = mBuffer.finished_goods(); - DEBUG(log).print("finished_goods:\n"); +static bool refuse_creature_is_allowed(const df::creature_raw* raw) { + if (!raw) + return false; + // wagon and generated creatures not allowed, except angels + const bool is_wagon = raw->creature_id == "EQUIPMENT_WAGON"; + const bool is_generated = raw->flags.is_set(creature_raw_flags::GENERATED); + const bool is_angel = is_generated && raw->creature_id.find("DIVINE_") != std::string::npos; + return !is_wagon && !(is_generated && !is_angel); +} - // type - FuncItemAllowed filter = std::bind(&StockpileSerializer::finished_goods_type_is_allowed, this, _1); - unserialize_list_item_type( - filter, [=](const size_t& idx) -> const std::string& { return finished_goods.type(idx); }, - finished_goods.type_size(), &mPile->settings.finished_goods.type); +static bool refuse_write_helper(std::function add_value, const vector& list) { + bool all = true; + for (size_t i = 0; i < list.size(); ++i) { + if (!list.at(i)) { + all = false; + continue; + } + df::creature_raw* r = find_creature(i); + // skip forgotten beasts, titans, demons, and night creatures + if (!refuse_creature_is_allowed(r)) + continue; + DEBUG(log).print("creature %s %zd\n", r->creature_id.c_str(), i); + add_value(r->creature_id); + } + return all; +} - // materials - FuncMaterialAllowed mat_filter = std::bind(&StockpileSerializer::finished_goods_mat_is_allowed, this, _1); - unserialize_list_material( - mat_filter, [=](const size_t& idx) -> const std::string& { return finished_goods.mats(idx); }, - finished_goods.mats_size(), &mPile->settings.finished_goods.mats); +static bool refuse_type_is_allowed(item_type::item_type type) { + if (type == item_type::NONE || type == item_type::BAR || type == item_type::SMALLGEM || type == item_type::BLOCKS || type == item_type::ROUGH || type == item_type::BOULDER || type == item_type::CORPSE || type == item_type::CORPSEPIECE || type == item_type::ROCK || type == item_type::ORTHOPEDIC_CAST) + return false; + return true; +} - // other mats - unserialize_list_other_mats( - mOtherMatsFinishedGoods.mats, [=](const size_t& idx) -> const std::string& { return finished_goods.other_mats(idx); }, - finished_goods.other_mats_size(), &mPile->settings.finished_goods.other_mats); +bool StockpileSerializer::write_refuse(StockpileSettings::RefuseSet* refuse) { + auto & prefuse = mPile->settings.refuse; + bool all = prefuse.fresh_raw_hide && prefuse.rotten_raw_hide; - // core quality - unserialize_list_quality([=](const size_t& idx) -> const std::string& { return finished_goods.quality_core(idx); }, - finished_goods.quality_core_size(), mPile->settings.finished_goods.quality_core); + DEBUG(log).print("refuse:\n"); + refuse->set_fresh_raw_hide(prefuse.fresh_raw_hide); + refuse->set_rotten_raw_hide(prefuse.rotten_raw_hide); - // total quality - unserialize_list_quality([=](const size_t& idx) -> const std::string& { return finished_goods.quality_total(idx); }, - finished_goods.quality_total_size(), mPile->settings.finished_goods.quality_total); - } - else { - mPile->settings.flags.bits.finished_goods = 0; - mPile->settings.finished_goods.type.clear(); - mPile->settings.finished_goods.other_mats.clear(); - mPile->settings.finished_goods.mats.clear(); - quality_clear(mPile->settings.finished_goods.quality_core); - quality_clear(mPile->settings.finished_goods.quality_total); - } -} + DEBUG(log).print("getting types\n"); + all = serialize_list_item_type( + refuse_type_is_allowed, + [=](const std::string& token) { + DEBUG(log).print("adding type: %s\n", token.c_str()); + refuse->add_type(token); + }, + prefuse.type) && all; + + all = refuse_write_helper([=](const std::string& id) { refuse->add_corpses(id); }, + prefuse.corpses) && all; + all = refuse_write_helper([=](const std::string& id) { refuse->add_body_parts(id); }, + prefuse.body_parts) && all; + all = refuse_write_helper([=](const std::string& id) { refuse->add_skulls(id); }, + prefuse.skulls) && all; + all = refuse_write_helper([=](const std::string& id) { refuse->add_bones(id); }, + prefuse.bones) && all; + all = refuse_write_helper([=](const std::string& id) { refuse->add_hair(id); }, + prefuse.hair) && all; + all = refuse_write_helper([=](const std::string& id) { refuse->add_shells(id); }, + prefuse.shells) && all; + all = refuse_write_helper([=](const std::string& id) { refuse->add_teeth(id); }, + prefuse.teeth) && all; + all = refuse_write_helper([=](const std::string& id) { refuse->add_horns(id); }, + prefuse.horns) && all; -void StockpileSerializer::write_leather(StockpileSettings::LeatherSet* leather) { - FuncWriteExport setter = [=](const std::string& id) { - leather->add_mats(id); - }; - serialize_list_organic_mat(setter, &mPile->settings.leather.mats, organic_mat_category::Leather); + return all; } -void StockpileSerializer::read_leather(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_leather()) { - mPile->settings.flags.bits.leather = 1; - const StockpileSettings::LeatherSet leather = mBuffer.leather(); - DEBUG(log).print("leather:\n"); - unserialize_list_organic_mat([=](size_t idx) -> std::string { return leather.mats(idx); }, - leather.mats_size(), &mPile->settings.leather.mats, organic_mat_category::Leather); - } - else { - mPile->settings.flags.bits.leather = 0; - mPile->settings.leather.mats.clear(); +static void refuse_read_helper(std::function get_value, size_t list_size, std::vector* pile_list) { + pile_list->clear(); + pile_list->resize(world->raws.creatures.all.size(), '\0'); + if (list_size > 0) { + for (size_t i = 0; i < list_size; ++i) { + const std::string creature_id = get_value(i); + const int idx = find_creature(creature_id); + const df::creature_raw* creature = find_creature(idx); + if (idx < 0 || !refuse_creature_is_allowed(creature) || size_t(idx) >= pile_list->size()) { + WARN(log).print("invalid refuse creature %s, idx=%d\n", creature_id.c_str(), idx); + continue; + } + DEBUG(log).print("creature %d is %s\n", idx, creature_id.c_str()); + pile_list->at(idx) = 1; + } } } -void StockpileSerializer::write_cloth(StockpileSettings::ClothSet* cloth) { - serialize_list_organic_mat([=](const std::string& token) { cloth->add_thread_silk(token); }, - &mPile->settings.cloth.thread_silk, organic_mat_category::Silk); - - serialize_list_organic_mat([=](const std::string& token) { cloth->add_thread_plant(token); }, - &mPile->settings.cloth.thread_plant, organic_mat_category::PlantFiber); - - serialize_list_organic_mat([=](const std::string& token) { cloth->add_thread_yarn(token); }, - &mPile->settings.cloth.thread_yarn, organic_mat_category::Yarn); +void StockpileSerializer::read_refuse(DeserializeMode mode, const std::string& filter) { + if (mBuffer.has_refuse()) { + mPile->settings.flags.bits.refuse = 1; + const StockpileSettings::RefuseSet refuse = mBuffer.refuse(); + DEBUG(log).print("refuse:\n"); + DEBUG(log).print(" fresh hide %d\n", refuse.fresh_raw_hide()); + DEBUG(log).print(" rotten hide %d\n", refuse.rotten_raw_hide()); + mPile->settings.refuse.fresh_raw_hide = refuse.fresh_raw_hide(); + mPile->settings.refuse.rotten_raw_hide = refuse.rotten_raw_hide(); - serialize_list_organic_mat([=](const std::string& token) { cloth->add_thread_metal(token); }, - &mPile->settings.cloth.thread_metal, organic_mat_category::MetalThread); + unserialize_list_item_type( + refuse_type_is_allowed, + [=](const size_t& idx) -> const std::string& { return refuse.type(idx); }, + refuse.type_size(), &mPile->settings.refuse.type); - serialize_list_organic_mat([=](const std::string& token) { cloth->add_cloth_silk(token); }, - &mPile->settings.cloth.cloth_silk, organic_mat_category::Silk); + DEBUG(log).print(" corpses\n"); + refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.corpses(idx); }, + refuse.corpses_size(), &mPile->settings.refuse.corpses); - serialize_list_organic_mat([=](const std::string& token) { cloth->add_cloth_plant(token); }, - &mPile->settings.cloth.cloth_plant, organic_mat_category::PlantFiber); + DEBUG(log).print(" body_parts\n"); + refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.body_parts(idx); }, + refuse.body_parts_size(), &mPile->settings.refuse.body_parts); - serialize_list_organic_mat([=](const std::string& token) { cloth->add_cloth_yarn(token); }, - &mPile->settings.cloth.cloth_yarn, organic_mat_category::Yarn); + DEBUG(log).print(" skulls\n"); + refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.skulls(idx); }, + refuse.skulls_size(), &mPile->settings.refuse.skulls); - serialize_list_organic_mat([=](const std::string& token) { cloth->add_cloth_metal(token); }, - &mPile->settings.cloth.cloth_metal, organic_mat_category::MetalThread); -} -void StockpileSerializer::read_cloth(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_cloth()) { - mPile->settings.flags.bits.cloth = 1; - const StockpileSettings::ClothSet cloth = mBuffer.cloth(); - DEBUG(log).print("cloth:\n"); + DEBUG(log).print(" bones\n"); + refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.bones(idx); }, + refuse.bones_size(), &mPile->settings.refuse.bones); - unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.thread_silk(idx); }, - cloth.thread_silk_size(), &mPile->settings.cloth.thread_silk, organic_mat_category::Silk); + DEBUG(log).print(" hair\n"); + refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.hair(idx); }, + refuse.hair_size(), &mPile->settings.refuse.hair); - unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.thread_plant(idx); }, - cloth.thread_plant_size(), &mPile->settings.cloth.thread_plant, organic_mat_category::PlantFiber); + DEBUG(log).print(" shells\n"); + refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.shells(idx); }, + refuse.shells_size(), &mPile->settings.refuse.shells); - unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.thread_yarn(idx); }, - cloth.thread_yarn_size(), &mPile->settings.cloth.thread_yarn, organic_mat_category::Yarn); + DEBUG(log).print(" teeth\n"); + refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.teeth(idx); }, + refuse.teeth_size(), &mPile->settings.refuse.teeth); - unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.thread_metal(idx); }, - cloth.thread_metal_size(), &mPile->settings.cloth.thread_metal, organic_mat_category::MetalThread); + DEBUG(log).print(" horns\n"); + refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.horns(idx); }, + refuse.horns_size(), &mPile->settings.refuse.horns); + } + else { + mPile->settings.flags.bits.refuse = 0; + mPile->settings.refuse.type.clear(); + mPile->settings.refuse.corpses.clear(); + mPile->settings.refuse.body_parts.clear(); + mPile->settings.refuse.skulls.clear(); + mPile->settings.refuse.bones.clear(); + mPile->settings.refuse.hair.clear(); + mPile->settings.refuse.shells.clear(); + mPile->settings.refuse.teeth.clear(); + mPile->settings.refuse.horns.clear(); + mPile->settings.refuse.fresh_raw_hide = false; + mPile->settings.refuse.rotten_raw_hide = false; + } +} - unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.cloth_silk(idx); }, - cloth.cloth_silk_size(), &mPile->settings.cloth.cloth_silk, organic_mat_category::Silk); +bool StockpileSerializer::write_sheet(StockpileSettings::SheetSet* sheet) { + bool all = true; - unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.cloth_plant(idx); }, - cloth.cloth_plant_size(), &mPile->settings.cloth.cloth_plant, organic_mat_category::PlantFiber); + return all; +} - unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.cloth_yarn(idx); }, - cloth.cloth_yarn_size(), &mPile->settings.cloth.cloth_yarn, organic_mat_category::Yarn); +void StockpileSerializer::read_sheet(DeserializeMode mode, const std::string& filter) { - unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.cloth_metal(idx); }, - cloth.cloth_metal_size(), &mPile->settings.cloth.cloth_metal, organic_mat_category::MetalThread); - } - else { - mPile->settings.cloth.thread_metal.clear(); - mPile->settings.cloth.thread_plant.clear(); - mPile->settings.cloth.thread_silk.clear(); - mPile->settings.cloth.thread_yarn.clear(); - mPile->settings.cloth.cloth_metal.clear(); - mPile->settings.cloth.cloth_plant.clear(); - mPile->settings.cloth.cloth_silk.clear(); - mPile->settings.cloth.cloth_yarn.clear(); - mPile->settings.flags.bits.cloth = 0; - } } -bool StockpileSerializer::wood_mat_is_allowed(const df::plant_raw* plant) { - return plant && plant->flags.is_set(plant_raw_flags::TREE); +static bool stone_is_allowed(const MaterialInfo& mi) { + if (!mi.isValid()) + return false; + const bool is_allowed_soil = mi.inorganic->flags.is_set(inorganic_flags::SOIL) && !mi.inorganic->flags.is_set(inorganic_flags::AQUIFER); + const bool is_allowed_stone = mi.material->flags.is_set(material_flags::IS_STONE) && !mi.material->flags.is_set(material_flags::NO_STONE_STOCKPILE); + return is_allowed_soil || is_allowed_stone; } -void StockpileSerializer::write_wood(StockpileSettings::WoodSet* wood) { - for (size_t i = 0; i < mPile->settings.wood.mats.size(); ++i) { - if (mPile->settings.wood.mats.at(i)) { - const df::plant_raw* plant = find_plant(i); - if (!wood_mat_is_allowed(plant)) - continue; - wood->add_mats(plant->id); - DEBUG(log).print("plant %zd is %s\n", i, plant->id.c_str()); - } - } +bool StockpileSerializer::write_stone(StockpileSettings::StoneSet* stone) { + return serialize_list_material( + stone_is_allowed, + [=](const std::string& token) { stone->add_mats(token); }, + mPile->settings.stone.mats); } -void StockpileSerializer::read_wood(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_wood()) { - mPile->settings.flags.bits.wood = 1; - const StockpileSettings::WoodSet wood = mBuffer.wood(); - DEBUG(log).print("wood: \n"); - mPile->settings.wood.mats.clear(); - mPile->settings.wood.mats.resize(world->raws.plants.all.size(), '\0'); - for (int i = 0; i < wood.mats_size(); ++i) { - const std::string token = wood.mats(i); - const size_t idx = find_plant(token); - if (idx < 0 || idx >= mPile->settings.wood.mats.size()) { - WARN(log).print("wood mat index invalid %s idx=%zd\n", token.c_str(), idx); - continue; - } - DEBUG(log).print("plant %zd is %s\n", idx, token.c_str()); - mPile->settings.wood.mats.at(idx) = 1; - } +void StockpileSerializer::read_stone(DeserializeMode mode, const std::string& filter) { + if (mBuffer.has_stone()) { + mPile->settings.flags.bits.stone = 1; + const StockpileSettings::StoneSet stone = mBuffer.stone(); + DEBUG(log).print("stone:\n"); + + unserialize_list_material( + stone_is_allowed, + [=](const size_t& idx) -> const std::string& { return stone.mats(idx); }, + stone.mats_size(), &mPile->settings.stone.mats); } else { - mPile->settings.flags.bits.wood = 0; - mPile->settings.wood.mats.clear(); + mPile->settings.flags.bits.stone = 0; + mPile->settings.stone.mats.clear(); } } -bool StockpileSerializer::weapons_mat_is_allowed(const MaterialInfo& mi) { +static bool weapons_mat_is_allowed(const MaterialInfo& mi) { return mi.isValid() && mi.material && (mi.material->flags.is_set(material_flags::IS_METAL) || mi.material->flags.is_set(material_flags::IS_STONE)); } -void StockpileSerializer::write_weapons(StockpileSettings::WeaponsSet* weapons) { - weapons->set_unusable(mPile->settings.weapons.unusable); - weapons->set_usable(mPile->settings.weapons.usable); +bool StockpileSerializer::write_weapons(StockpileSettings::WeaponsSet* weapons) { + auto & pweapons = mPile->settings.weapons; + bool all = pweapons.unusable && pweapons.usable; + + weapons->set_unusable(pweapons.unusable); + weapons->set_usable(pweapons.usable); - // weapon type - serialize_list_itemdef([=](const std::string& token) { weapons->add_weapon_type(token); }, - mPile->settings.weapons.weapon_type, + all = serialize_list_itemdef( + [=](const std::string& token) { weapons->add_weapon_type(token); }, + pweapons.weapon_type, std::vector(world->raws.itemdefs.weapons.begin(), world->raws.itemdefs.weapons.end()), - item_type::WEAPON); + item_type::WEAPON) && all; - // trapcomp type - serialize_list_itemdef([=](const std::string& token) { weapons->add_trapcomp_type(token); }, - mPile->settings.weapons.trapcomp_type, + all = serialize_list_itemdef( + [=](const std::string& token) { weapons->add_trapcomp_type(token); }, + pweapons.trapcomp_type, std::vector(world->raws.itemdefs.trapcomps.begin(), world->raws.itemdefs.trapcomps.end()), - item_type::TRAPCOMP); + item_type::TRAPCOMP) && all; - // materials - FuncMaterialAllowed mat_filter = std::bind(&StockpileSerializer::weapons_mat_is_allowed, this, _1); - serialize_list_material( - mat_filter, [=](const std::string& token) { weapons->add_mats(token); }, - mPile->settings.weapons.mats); + all = serialize_list_material( + weapons_mat_is_allowed, + [=](const std::string& token) { weapons->add_mats(token); }, + pweapons.mats) && all; - // other mats - serialize_list_other_mats( - mOtherMatsWeaponsArmor.mats, [=](const std::string& token) { weapons->add_other_mats(token); }, - mPile->settings.weapons.other_mats); + all = serialize_list_other_mats( + mOtherMatsWeaponsArmor.mats, + [=](const std::string& token) { weapons->add_other_mats(token); }, + pweapons.other_mats) && all; - // quality core - serialize_list_quality([=](const std::string& token) { weapons->add_quality_core(token); }, - mPile->settings.weapons.quality_core); + all = serialize_list_quality( + [=](const std::string& token) { weapons->add_quality_core(token); }, + pweapons.quality_core) && all; - // quality total - serialize_list_quality([=](const std::string& token) { weapons->add_quality_total(token); }, - mPile->settings.weapons.quality_total); + all = serialize_list_quality( + [=](const std::string& token) { weapons->add_quality_total(token); }, + pweapons.quality_total) && all; + + return all; } void StockpileSerializer::read_weapons(DeserializeMode mode, const std::string& filter) { @@ -1890,29 +2052,24 @@ void StockpileSerializer::read_weapons(DeserializeMode mode, const std::string& mPile->settings.weapons.unusable = unusable; mPile->settings.weapons.usable = usable; - // weapon type unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return weapons.weapon_type(idx); }, weapons.weapon_type_size(), &mPile->settings.weapons.weapon_type, item_type::WEAPON); - // trapcomp type unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return weapons.trapcomp_type(idx); }, weapons.trapcomp_type_size(), &mPile->settings.weapons.trapcomp_type, item_type::TRAPCOMP); - // materials - FuncMaterialAllowed mat_filter = std::bind(&StockpileSerializer::weapons_mat_is_allowed, this, _1); unserialize_list_material( - mat_filter, [=](const size_t& idx) -> const std::string& { return weapons.mats(idx); }, + weapons_mat_is_allowed, + [=](const size_t& idx) -> const std::string& { return weapons.mats(idx); }, weapons.mats_size(), &mPile->settings.weapons.mats); - // other mats unserialize_list_other_mats( mOtherMatsWeaponsArmor.mats, [=](const size_t& idx) -> const std::string& { return weapons.other_mats(idx); }, weapons.other_mats_size(), &mPile->settings.weapons.other_mats); - // core quality unserialize_list_quality([=](const size_t& idx) -> const std::string& { return weapons.quality_core(idx); }, weapons.quality_core_size(), mPile->settings.weapons.quality_core); - // total quality + unserialize_list_quality([=](const size_t& idx) -> const std::string& { return weapons.quality_total(idx); }, weapons.quality_total_size(), mPile->settings.weapons.quality_total); } @@ -1927,152 +2084,47 @@ void StockpileSerializer::read_weapons(DeserializeMode mode, const std::string& } } -bool StockpileSerializer::armor_mat_is_allowed(const MaterialInfo& mi) { - return mi.isValid() && mi.material && mi.material->flags.is_set(material_flags::IS_METAL); +static bool wood_mat_is_allowed(const df::plant_raw* plant) { + return plant && plant->flags.is_set(plant_raw_flags::TREE); } -void StockpileSerializer::write_armor(StockpileSettings::ArmorSet* armor) { - armor->set_unusable(mPile->settings.armor.unusable); - armor->set_usable(mPile->settings.armor.usable); - - // armor type - serialize_list_itemdef([=](const std::string& token) { armor->add_body(token); }, - mPile->settings.armor.body, - std::vector(world->raws.itemdefs.armor.begin(), world->raws.itemdefs.armor.end()), - item_type::ARMOR); - - // helm type - serialize_list_itemdef([=](const std::string& token) { armor->add_head(token); }, - mPile->settings.armor.head, - std::vector(world->raws.itemdefs.helms.begin(), world->raws.itemdefs.helms.end()), - item_type::HELM); - - // shoes type - serialize_list_itemdef([=](const std::string& token) { armor->add_feet(token); }, - mPile->settings.armor.feet, - std::vector(world->raws.itemdefs.shoes.begin(), world->raws.itemdefs.shoes.end()), - item_type::SHOES); - - // gloves type - serialize_list_itemdef([=](const std::string& token) { armor->add_hands(token); }, - mPile->settings.armor.hands, - std::vector(world->raws.itemdefs.gloves.begin(), world->raws.itemdefs.gloves.end()), - item_type::GLOVES); - - // pant type - serialize_list_itemdef([=](const std::string& token) { armor->add_legs(token); }, - mPile->settings.armor.legs, - std::vector(world->raws.itemdefs.pants.begin(), world->raws.itemdefs.pants.end()), - item_type::PANTS); - - // shield type - serialize_list_itemdef([=](const std::string& token) { armor->add_shield(token); }, - mPile->settings.armor.shield, - std::vector(world->raws.itemdefs.shields.begin(), world->raws.itemdefs.shields.end()), - item_type::SHIELD); - - // materials - FuncMaterialAllowed mat_filter = std::bind(&StockpileSerializer::armor_mat_is_allowed, this, _1); - serialize_list_material( - mat_filter, [=](const std::string& token) { armor->add_mats(token); }, - mPile->settings.armor.mats); - - // other mats - serialize_list_other_mats( - mOtherMatsWeaponsArmor.mats, [=](const std::string& token) { armor->add_other_mats(token); }, - mPile->settings.armor.other_mats); - - // quality core - serialize_list_quality([=](const std::string& token) { armor->add_quality_core(token); }, - mPile->settings.armor.quality_core); - - // quality total - serialize_list_quality([=](const std::string& token) { armor->add_quality_total(token); }, - mPile->settings.armor.quality_total); +bool StockpileSerializer::write_wood(StockpileSettings::WoodSet* wood) { + bool all = true; + for (size_t i = 0; i < mPile->settings.wood.mats.size(); ++i) { + if (!mPile->settings.wood.mats.at(i)) { + all = false; + continue; + } + const df::plant_raw* plant = find_plant(i); + if (!wood_mat_is_allowed(plant)) + continue; + wood->add_mats(plant->id); + DEBUG(log).print("plant %zd is %s\n", i, plant->id.c_str()); + } + return all; } -void StockpileSerializer::read_armor(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_armor()) { - mPile->settings.flags.bits.armor = 1; - const StockpileSettings::ArmorSet armor = mBuffer.armor(); - DEBUG(log).print("armor:\n"); - - bool unusable = armor.unusable(); - bool usable = armor.usable(); - DEBUG(log).print("unusable %d\n", unusable); - DEBUG(log).print("usable %d\n", usable); - mPile->settings.armor.unusable = unusable; - mPile->settings.armor.usable = usable; - - // body type - unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return armor.body(idx); }, - armor.body_size(), &mPile->settings.armor.body, item_type::ARMOR); - - // head type - unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return armor.head(idx); }, - armor.head_size(), &mPile->settings.armor.head, item_type::HELM); - - // feet type - unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return armor.feet(idx); }, - armor.feet_size(), &mPile->settings.armor.feet, item_type::SHOES); - - // hands type - unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return armor.hands(idx); }, - armor.hands_size(), &mPile->settings.armor.hands, item_type::GLOVES); - - // legs type - unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return armor.legs(idx); }, - armor.legs_size(), &mPile->settings.armor.legs, item_type::PANTS); - - // shield type - unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return armor.shield(idx); }, - armor.shield_size(), &mPile->settings.armor.shield, item_type::SHIELD); - - // materials - FuncMaterialAllowed mat_filter = std::bind(&StockpileSerializer::armor_mat_is_allowed, this, _1); - unserialize_list_material( - mat_filter, [=](const size_t& idx) -> const std::string& { return armor.mats(idx); }, - armor.mats_size(), &mPile->settings.armor.mats); - - // other mats - unserialize_list_other_mats( - mOtherMatsWeaponsArmor.mats, [=](const size_t& idx) -> const std::string& { return armor.other_mats(idx); }, - armor.other_mats_size(), &mPile->settings.armor.other_mats); +void StockpileSerializer::read_wood(DeserializeMode mode, const std::string& filter) { + if (mBuffer.has_wood()) { + mPile->settings.flags.bits.wood = 1; + const StockpileSettings::WoodSet wood = mBuffer.wood(); + DEBUG(log).print("wood: \n"); - // core quality - unserialize_list_quality([=](const size_t& idx) -> const std::string& { return armor.quality_core(idx); }, - armor.quality_core_size(), mPile->settings.armor.quality_core); - // total quality - unserialize_list_quality([=](const size_t& idx) -> const std::string& { return armor.quality_total(idx); }, - armor.quality_total_size(), mPile->settings.armor.quality_total); + mPile->settings.wood.mats.clear(); + mPile->settings.wood.mats.resize(world->raws.plants.all.size(), '\0'); + for (int i = 0; i < wood.mats_size(); ++i) { + const std::string token = wood.mats(i); + const size_t idx = find_plant(token); + if (idx < 0 || idx >= mPile->settings.wood.mats.size()) { + WARN(log).print("wood mat index invalid %s idx=%zd\n", token.c_str(), idx); + continue; + } + DEBUG(log).print("plant %zd is %s\n", idx, token.c_str()); + mPile->settings.wood.mats.at(idx) = 1; + } } else { - mPile->settings.flags.bits.armor = 0; - mPile->settings.armor.body.clear(); - mPile->settings.armor.head.clear(); - mPile->settings.armor.feet.clear(); - mPile->settings.armor.hands.clear(); - mPile->settings.armor.legs.clear(); - mPile->settings.armor.shield.clear(); - mPile->settings.armor.other_mats.clear(); - mPile->settings.armor.mats.clear(); - quality_clear(mPile->settings.armor.quality_core); - quality_clear(mPile->settings.armor.quality_total); + mPile->settings.flags.bits.wood = 0; + mPile->settings.wood.mats.clear(); } } - -void StockpileSerializer::write_corpses(StockpileSettings::CorpsesSet* corpses) { - -} - -void StockpileSerializer::read_corpses(DeserializeMode mode, const std::string& filter) { - -} - -void StockpileSerializer::write_sheet(StockpileSettings::SheetSet* sheet) { - -} - -void StockpileSerializer::read_sheet(DeserializeMode mode, const std::string& filter) { - -} diff --git a/plugins/stockpiles/StockpileSerializer.h b/plugins/stockpiles/StockpileSerializer.h index 24c6d5d98..4085744d0 100644 --- a/plugins/stockpiles/StockpileSerializer.h +++ b/plugins/stockpiles/StockpileSerializer.h @@ -96,94 +96,44 @@ private: // parse serialized data into ui indices void read(DeserializeMode mode, const std::string& filter); - /** - * Given a list of other_materials and an index, return its corresponding token - * @return empty string if not found - * @see other_mats_token - */ - std::string other_mats_index(const std::map other_mats, int idx); - - /** - * Given a list of other_materials and a token, return its corresponding index - * @return -1 if not found - * @see other_mats_index - */ - int other_mats_token(const std::map other_mats, const std::string& token); - void write_containers(); void read_containers(DeserializeMode mode); void write_general(); void read_general(DeserializeMode mode); - void write_animals(dfstockpiles::StockpileSettings::AnimalsSet* animals); + bool write_ammo(dfstockpiles::StockpileSettings::AmmoSet* ammo); + void read_ammo(DeserializeMode mode, const std::string& filter); + bool write_animals(dfstockpiles::StockpileSettings::AnimalsSet* animals); void read_animals(DeserializeMode mode, const std::string& filter); - + bool write_armor(dfstockpiles::StockpileSettings::ArmorSet* armor); + void read_armor(DeserializeMode mode, const std::string& filter); + bool write_bars_blocks(dfstockpiles::StockpileSettings::BarsBlocksSet* bars_blocks); + void read_bars_blocks(DeserializeMode mode, const std::string& filter); + bool write_cloth(dfstockpiles::StockpileSettings::ClothSet* cloth); + void read_cloth(DeserializeMode mode, const std::string& filter); + bool write_coins(dfstockpiles::StockpileSettings::CoinSet* coins); + void read_coins(DeserializeMode mode, const std::string& filter); + bool write_finished_goods(dfstockpiles::StockpileSettings::FinishedGoodsSet* finished_goods); + void read_finished_goods(DeserializeMode mode, const std::string& filter); food_pair food_map(df::enums::organic_mat_category::organic_mat_category cat); - - void write_food(dfstockpiles::StockpileSettings::FoodSet* food); + bool write_food(dfstockpiles::StockpileSettings::FoodSet* food); void read_food(DeserializeMode mode, const std::string& filter); - - void write_furniture(dfstockpiles::StockpileSettings::FurnitureSet* furniture); - bool furniture_mat_is_allowed(const DFHack::MaterialInfo& mi); + bool write_furniture(dfstockpiles::StockpileSettings::FurnitureSet* furniture); void read_furniture(DeserializeMode mode, const std::string& filter); - - bool refuse_creature_is_allowed(const df::creature_raw* raw); - - void refuse_write_helper(std::function add_value, const std::vector& list); - - bool refuse_type_is_allowed(df::enums::item_type::item_type type); - - void write_refuse(dfstockpiles::StockpileSettings::RefuseSet* refuse); - void refuse_read_helper(std::function get_value, size_t list_size, std::vector* pile_list); - - void read_refuse(DeserializeMode mode, const std::string& filter); - - bool stone_is_allowed(const DFHack::MaterialInfo& mi); - - void write_stone(dfstockpiles::StockpileSettings::StoneSet* stone); - - void read_stone(DeserializeMode mode, const std::string& filter); - - bool write_ammo(dfstockpiles::StockpileSettings::AmmoSet* ammo); - void read_ammo(DeserializeMode mode, const std::string& filter); - bool coins_mat_is_allowed(const DFHack::MaterialInfo& mi); - - void write_coins(dfstockpiles::StockpileSettings::CoinSet* coins); - - void read_coins(DeserializeMode mode, const std::string& filter); - bool bars_mat_is_allowed(const DFHack::MaterialInfo& mi); - - bool blocks_mat_is_allowed(const DFHack::MaterialInfo& mi); - - void write_bars_blocks(dfstockpiles::StockpileSettings::BarsBlocksSet* bars_blocks); - void read_bars_blocks(DeserializeMode mode, const std::string& filter); - bool gem_mat_is_allowed(const DFHack::MaterialInfo& mi); - bool gem_cut_mat_is_allowed(const DFHack::MaterialInfo& mi); - bool gem_other_mat_is_allowed(DFHack::MaterialInfo& mi); - - void write_gems(dfstockpiles::StockpileSettings::GemsSet* gems); - + bool write_gems(dfstockpiles::StockpileSettings::GemsSet* gems); void read_gems(DeserializeMode mode, const std::string& filter); - - bool finished_goods_type_is_allowed(df::enums::item_type::item_type type); - bool finished_goods_mat_is_allowed(const DFHack::MaterialInfo& mi); - void write_finished_goods(dfstockpiles::StockpileSettings::FinishedGoodsSet* finished_goods); - void read_finished_goods(DeserializeMode mode, const std::string& filter); - void write_leather(dfstockpiles::StockpileSettings::LeatherSet* leather); + bool write_leather(dfstockpiles::StockpileSettings::LeatherSet* leather); void read_leather(DeserializeMode mode, const std::string& filter); - void write_cloth(dfstockpiles::StockpileSettings::ClothSet* cloth); - void read_cloth(DeserializeMode mode, const std::string& filter); - bool wood_mat_is_allowed(const df::plant_raw* plant); - void write_wood(dfstockpiles::StockpileSettings::WoodSet* wood); - void read_wood(DeserializeMode mode, const std::string& filter); - bool weapons_mat_is_allowed(const DFHack::MaterialInfo& mi); - void write_weapons(dfstockpiles::StockpileSettings::WeaponsSet* weapons); - void read_weapons(DeserializeMode mode, const std::string& filter); - bool armor_mat_is_allowed(const DFHack::MaterialInfo& mi); - void write_armor(dfstockpiles::StockpileSettings::ArmorSet* armor); - void read_armor(DeserializeMode mode, const std::string& filter); - void write_corpses(dfstockpiles::StockpileSettings::CorpsesSet* corpses); + bool write_corpses(dfstockpiles::StockpileSettings::CorpsesSet* corpses); void read_corpses(DeserializeMode mode, const std::string& filter); - void write_sheet(dfstockpiles::StockpileSettings::SheetSet* sheet); + bool write_refuse(dfstockpiles::StockpileSettings::RefuseSet* refuse); + void read_refuse(DeserializeMode mode, const std::string& filter); + bool write_sheet(dfstockpiles::StockpileSettings::SheetSet* sheet); void read_sheet(DeserializeMode mode, const std::string& filter); + bool write_stone(dfstockpiles::StockpileSettings::StoneSet* stone); + void read_stone(DeserializeMode mode, const std::string& filter); + bool write_weapons(dfstockpiles::StockpileSettings::WeaponsSet* weapons); + void read_weapons(DeserializeMode mode, const std::string& filter); + bool write_wood(dfstockpiles::StockpileSettings::WoodSet* wood); + void read_wood(DeserializeMode mode, const std::string& filter); }; From 06fa43932cbea53b9bee289a526f891d0b25f2fa Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 00:32:19 -0700 Subject: [PATCH 015/115] animals works --- plugins/lua/stockpiles.lua | 14 +- plugins/stockpiles/StockpileSerializer.cpp | 185 +++++++++++---------- 2 files changed, 108 insertions(+), 91 deletions(-) diff --git a/plugins/lua/stockpiles.lua b/plugins/lua/stockpiles.lua index 6770c044e..1a92e2c0c 100644 --- a/plugins/lua/stockpiles.lua +++ b/plugins/lua/stockpiles.lua @@ -92,6 +92,12 @@ local function export_stockpile(name, opts) end end + if includedElements == 0 then + for _,v in pairs(included_elements) do + includedElements = includedElements | v + end + end + stockpiles_export(name, get_sp_id(opts), includedElements) end @@ -142,14 +148,14 @@ local function process_args(opts, args) opts.filter = '' return argparse.processArgsGetopt(args, { - {'f', 'filter', has_arg=true, + {'f', 'filter', hasArg=true, handler=function(arg) opts.filter = arg end}, {'h', 'help', handler=function() opts.help = true end}, - {'i', 'include', has_arg=true, + {'i', 'include', hasArg=true, handler=function(arg) opts.includes = parse_include(arg) end}, - {'m', 'mode', has_arg=true, + {'m', 'mode', hasArg=true, handler=function(arg) opts.mode = parse_mode(arg) end}, - {'s', 'stockpile', has_arg=true, + {'s', 'stockpile', hasArg=true, handler=function(arg) opts.id = argparse.nonnegativeInt(arg, 'stockpile') end}, }) end diff --git a/plugins/stockpiles/StockpileSerializer.cpp b/plugins/stockpiles/StockpileSerializer.cpp index 3b2849333..2d72aa822 100644 --- a/plugins/stockpiles/StockpileSerializer.cpp +++ b/plugins/stockpiles/StockpileSerializer.cpp @@ -10,6 +10,7 @@ // df #include "df/building_stockpilest.h" +#include "df/creature_raw.h" #include "df/inorganic_raw.h" #include "df/item_quality.h" #include @@ -520,7 +521,7 @@ static void unserialize_list_material(FuncMaterialAllowed is_allowed, } template -static void write_cat(bool include_types, uint32_t cat_flags, +static void write_cat(const char *name, bool include_types, uint32_t cat_flags, enum df::stockpile_group_set::Mask cat_mask, std::function mutable_cat_fn, std::function write_cat_fn) { @@ -528,13 +529,17 @@ static void write_cat(bool include_types, uint32_t cat_flags, return; T_cat_set* cat_set = mutable_cat_fn(); + if (!include_types) { + DEBUG(log).print("including all for %s since only category is being recorded\n", name); cat_set->set_all(true); return; } if (write_cat_fn(cat_set)) { - // all fields were set. might as well clear them and use the "all" flag + // all fields were set. clear them and use the "all" flag instead so "all" can be applied + // to other worlds with other generated types + DEBUG(log).print("including all for %s since all fields were enabled\n", name); cat_set->Clear(); cat_set->set_all(true); } @@ -554,90 +559,90 @@ void StockpileSerializer::write(uint32_t includedElements) { bool include_types = 0 != (includedElements & INCLUDED_ELEMENTS_TYPES); - write_cat(include_types, + write_cat("ammo", include_types, mPile->settings.flags.whole, mPile->settings.flags.mask_ammo, - std::bind(&StockpileSettings::mutable_ammo, mBuffer), + std::bind(&StockpileSettings::mutable_ammo, &mBuffer), std::bind(&StockpileSerializer::write_ammo, this, _1)); - write_cat(include_types, + write_cat("animals", include_types, mPile->settings.flags.whole, mPile->settings.flags.mask_animals, - std::bind(&StockpileSettings::mutable_animals, mBuffer), + std::bind(&StockpileSettings::mutable_animals, &mBuffer), std::bind(&StockpileSerializer::write_animals, this, _1)); - write_cat(include_types, + write_cat("armor", include_types, mPile->settings.flags.whole, mPile->settings.flags.mask_armor, - std::bind(&StockpileSettings::mutable_armor, mBuffer), + std::bind(&StockpileSettings::mutable_armor, &mBuffer), std::bind(&StockpileSerializer::write_armor, this, _1)); - write_cat(include_types, + write_cat("bars_blocks", include_types, mPile->settings.flags.whole, mPile->settings.flags.mask_bars_blocks, - std::bind(&StockpileSettings::mutable_barsblocks, mBuffer), + std::bind(&StockpileSettings::mutable_barsblocks, &mBuffer), std::bind(&StockpileSerializer::write_bars_blocks, this, _1)); - write_cat(include_types, + write_cat("cloth", include_types, mPile->settings.flags.whole, mPile->settings.flags.mask_cloth, - std::bind(&StockpileSettings::mutable_cloth, mBuffer), + std::bind(&StockpileSettings::mutable_cloth, &mBuffer), std::bind(&StockpileSerializer::write_cloth, this, _1)); - write_cat(include_types, + write_cat("coin", include_types, mPile->settings.flags.whole, mPile->settings.flags.mask_coins, - std::bind(&StockpileSettings::mutable_coin, mBuffer), + std::bind(&StockpileSettings::mutable_coin, &mBuffer), std::bind(&StockpileSerializer::write_coins, this, _1)); - write_cat(include_types, + write_cat("finished_goods", include_types, mPile->settings.flags.whole, mPile->settings.flags.mask_finished_goods, - std::bind(&StockpileSettings::mutable_finished_goods, mBuffer), + std::bind(&StockpileSettings::mutable_finished_goods, &mBuffer), std::bind(&StockpileSerializer::write_finished_goods, this, _1)); - write_cat(include_types, + write_cat("food", include_types, mPile->settings.flags.whole, mPile->settings.flags.mask_food, - std::bind(&StockpileSettings::mutable_food, mBuffer), + std::bind(&StockpileSettings::mutable_food, &mBuffer), std::bind(&StockpileSerializer::write_food, this, _1)); - write_cat(include_types, + write_cat("furniture", include_types, mPile->settings.flags.whole, mPile->settings.flags.mask_furniture, - std::bind(&StockpileSettings::mutable_furniture, mBuffer), + std::bind(&StockpileSettings::mutable_furniture, &mBuffer), std::bind(&StockpileSerializer::write_furniture, this, _1)); - write_cat(include_types, + write_cat("gems", include_types, mPile->settings.flags.whole, mPile->settings.flags.mask_gems, - std::bind(&StockpileSettings::mutable_gems, mBuffer), + std::bind(&StockpileSettings::mutable_gems, &mBuffer), std::bind(&StockpileSerializer::write_gems, this, _1)); - write_cat(include_types, + write_cat("leather", include_types, mPile->settings.flags.whole, mPile->settings.flags.mask_leather, - std::bind(&StockpileSettings::mutable_leather, mBuffer), + std::bind(&StockpileSettings::mutable_leather, &mBuffer), std::bind(&StockpileSerializer::write_leather, this, _1)); - write_cat(include_types, + write_cat("corpses", include_types, mPile->settings.flags.whole, mPile->settings.flags.mask_corpses, - std::bind(&StockpileSettings::mutable_corpses_v50, mBuffer), + std::bind(&StockpileSettings::mutable_corpses_v50, &mBuffer), std::bind(&StockpileSerializer::write_corpses, this, _1)); - write_cat(include_types, + write_cat("refuse", include_types, mPile->settings.flags.whole, mPile->settings.flags.mask_refuse, - std::bind(&StockpileSettings::mutable_refuse, mBuffer), + std::bind(&StockpileSettings::mutable_refuse, &mBuffer), std::bind(&StockpileSerializer::write_refuse, this, _1)); - write_cat(include_types, + write_cat("sheet", include_types, mPile->settings.flags.whole, mPile->settings.flags.mask_sheet, - std::bind(&StockpileSettings::mutable_sheet, mBuffer), + std::bind(&StockpileSettings::mutable_sheet, &mBuffer), std::bind(&StockpileSerializer::write_sheet, this, _1)); - write_cat(include_types, + write_cat("stone", include_types, mPile->settings.flags.whole, mPile->settings.flags.mask_stone, - std::bind(&StockpileSettings::mutable_stone, mBuffer), + std::bind(&StockpileSettings::mutable_stone, &mBuffer), std::bind(&StockpileSerializer::write_stone, this, _1)); - write_cat(include_types, + write_cat("weapons", include_types, mPile->settings.flags.whole, mPile->settings.flags.mask_weapons, - std::bind(&StockpileSettings::mutable_weapons, mBuffer), + std::bind(&StockpileSettings::mutable_weapons, &mBuffer), std::bind(&StockpileSerializer::write_weapons, this, _1)); - write_cat(include_types, + write_cat("wood", include_types, mPile->settings.flags.whole, mPile->settings.flags.mask_wood, - std::bind(&StockpileSettings::mutable_wood, mBuffer), + std::bind(&StockpileSettings::mutable_wood, &mBuffer), std::bind(&StockpileSerializer::write_wood, this, _1)); } @@ -672,6 +677,7 @@ void StockpileSerializer::read(DeserializeMode mode, const std::string& filter) } void StockpileSerializer::write_containers() { + DEBUG(log).print("writing container settings\n"); mBuffer.set_max_bins(mPile->max_bins); mBuffer.set_max_barrels(mPile->max_barrels); mBuffer.set_max_wheelbarrows(mPile->max_wheelbarrows); @@ -682,18 +688,10 @@ static void read_elem(const char *name, DeserializeMode mode, std::function has_elem_fn, std::function elem_fn, T_elem &setting) { - bool has_elem = has_elem_fn(); - bool is_set = has_elem && elem_fn() != 0; - bool just_disable = is_set && mode == DESERIALIZE_MODE_DISABLE; - - if (mode == DESERIALIZE_MODE_SET || just_disable) { - DEBUG(log).print("clearing %s\n", name); - setting = 0; - } - - if (!has_elem || just_disable) + if (!has_elem_fn()) return; + bool is_set = elem_fn() != 0; if (mode == DESERIALIZE_MODE_SET || is_set) { T_elem val = (mode == DESERIALIZE_MODE_DISABLE) ? 0 : elem_fn(); DEBUG(log).print("setting %s=%d\n", name, val); @@ -728,11 +726,30 @@ static void read_category(const char *name, DeserializeMode mode, if (mode == DESERIALIZE_MODE_SET || mode == DESERIALIZE_MODE_ENABLE) cat_flags |= cat_mask; - bool force = mode == DESERIALIZE_MODE_SET || all; char val = (mode == DESERIALIZE_MODE_DISABLE) ? (char)0 : (char)1; DEBUG(log).print("setting %s %s elements to %d\n", all ? "all" : "marked", name, val); - set_fn(force, val); + set_fn(all, val); +} + +static void set_elem(bool all, char val, bool enabled, bool& elem) { + if (all || enabled) + elem = val; +} + +static bool matches_filter(const std::string& filter, const std::string& name) { + if (!filter.size()) + return true; + return std::search(name.begin(), name.end(), filter.begin(), filter.end(), + [](unsigned char ch1, unsigned char ch2) { return std::toupper(ch1) == std::toupper(ch2); } + ) != name.end(); +} + +static void set_filter_elem(const std::string& filter, char val, df::creature_raw* r, char& elem) { + if (matches_filter(filter, r->name[0])) { + DEBUG(log).print("setting %s (%s) to %d\n", r->name[0].c_str(), r->creature_id.c_str(), val); + elem = val; + } } void StockpileSerializer::read_containers(DeserializeMode mode) { @@ -751,6 +768,7 @@ void StockpileSerializer::read_containers(DeserializeMode mode) { } void StockpileSerializer::write_general() { + DEBUG(log).print("writing general settings\n"); mBuffer.set_use_links_only(mPile->use_links_only); mBuffer.set_allow_inorganic(mPile->settings.allow_inorganic); mBuffer.set_allow_organic(mPile->settings.allow_organic); @@ -776,22 +794,17 @@ static bool ammo_mat_is_allowed(const MaterialInfo& mi) { } bool StockpileSerializer::write_ammo(StockpileSettings::AmmoSet* ammo) { - bool all = true; - - // ammo type - all = serialize_list_itemdef( + bool all = serialize_list_itemdef( [=](const std::string& token) { ammo->add_type(token); }, mPile->settings.ammo.type, std::vector(world->raws.itemdefs.ammo.begin(), world->raws.itemdefs.ammo.end()), - item_type::AMMO) && all; + item_type::AMMO); - // metal all = serialize_list_material( ammo_mat_is_allowed, [=](const std::string& token) { ammo->add_mats(token); }, mPile->settings.ammo.mats) && all; - // other mats - only wood and bone are expected if (mPile->settings.ammo.other_mats.size() > 2) { WARN(log).print("ammo other materials > 2: %zd\n", mPile->settings.ammo.other_mats.size()); @@ -809,12 +822,10 @@ bool StockpileSerializer::write_ammo(StockpileSettings::AmmoSet* ammo) { DEBUG(log).print("other mats %zd is %s\n", i, token.c_str()); } - // quality core all = serialize_list_quality( [=](const std::string& token) { ammo->add_quality_core(token); }, mPile->settings.ammo.quality_core) && all; - // quality total all = serialize_list_quality( [=](const std::string& token) { ammo->add_quality_total(token); }, mPile->settings.ammo.quality_total) && all; @@ -823,13 +834,13 @@ bool StockpileSerializer::write_ammo(StockpileSettings::AmmoSet* ammo) { } void StockpileSerializer::read_ammo(DeserializeMode mode, const std::string& filter) { + auto & pammo = mPile->settings.ammo; read_category("ammo", mode, std::bind(&StockpileSettings::has_ammo, mBuffer), std::bind(&StockpileSettings::ammo, mBuffer), mPile->settings.flags.whole, mPile->settings.flags.mask_ammo, [&]() { - auto & pammo = mPile->settings.ammo; pammo.type.clear(); pammo.mats.clear(); pammo.other_mats.clear(); @@ -838,18 +849,15 @@ void StockpileSerializer::read_ammo(DeserializeMode mode, const std::string& fil }, [&](bool force, char val) { auto & bammo = mBuffer.ammo(); - auto & pammo = mPile->settings.ammo; - // ammo type + unserialize_list_itemdef( - [=](const size_t& idx) -> const std::string& { return bammo.type(idx); }, + [&](const size_t& idx) -> const std::string& { return bammo.type(idx); }, bammo.type_size(), &pammo.type, item_type::AMMO); - // materials metals unserialize_list_material(ammo_mat_is_allowed, - [=](const size_t& idx) -> const std::string& { return bammo.mats(idx); }, + [&](const size_t& idx) -> const std::string& { return bammo.mats(idx); }, bammo.mats_size(), &pammo.mats); - // others pammo.other_mats.clear(); pammo.other_mats.resize(2, '\0'); if (bammo.other_mats_size() > 0) { @@ -859,16 +867,15 @@ void StockpileSerializer::read_ammo(DeserializeMode mode, const std::string& fil const int32_t idx = token == "WOOD" ? 0 : token == "BONE" ? 1 : -1; DEBUG(log).print("other mats %d is %s\n", idx, token.c_str()); - if (idx != -1) - pammo.other_mats.at(idx) = 1; + if (idx == -1) + continue; + pammo.other_mats.at(idx) = 1; } } - // core quality unserialize_list_quality([=](const size_t& idx) -> const std::string& { return bammo.quality_core(idx); }, bammo.quality_core_size(), pammo.quality_core); - // total quality unserialize_list_quality([=](const size_t& idx) -> const std::string& { return bammo.quality_total(idx); }, bammo.quality_total_size(), pammo.quality_total); }); @@ -886,43 +893,47 @@ bool StockpileSerializer::write_animals(StockpileSettings::AnimalsSet* animals) continue; } df::creature_raw* r = find_creature(i); - DEBUG(log).print("creature %s %zd\n", r->creature_id.c_str(), i); + if (r->flags.is_set(creature_raw_flags::GENERATED) + || r->creature_id == "EQUIPMENT_WAGON") + continue; + DEBUG(log).print("saving creature %s\n", r->creature_id.c_str()); animals->add_enabled(r->creature_id); } return all; } void StockpileSerializer::read_animals(DeserializeMode mode, const std::string& filter) { + auto & panimals = mPile->settings.animals; read_category("animals", mode, std::bind(&StockpileSettings::has_animals, mBuffer), std::bind(&StockpileSettings::animals, mBuffer), mPile->settings.flags.whole, mPile->settings.flags.mask_animals, [&]() { - auto & panimals = mPile->settings.animals; panimals.empty_cages = false; panimals.empty_traps = false; panimals.enabled.clear(); }, - [&](bool force, char val) { + [&](bool all, char val) { auto & banimals = mBuffer.animals(); - auto & panimals = mPile->settings.animals; - if (force || banimals.empty_cages()) - panimals.empty_cages = banimals.empty_cages() && val; - if (force || banimals.empty_traps()) - panimals.empty_traps = banimals.empty_traps() && val; - - panimals.enabled.resize(world->raws.creatures.all.size(), '\0'); - for (auto i = 0; i < banimals.enabled_size(); ++i) { - const std::string& id = banimals.enabled(i); - int idx = find_creature(id); - DEBUG(log).print("%s %d\n", id.c_str(), idx); - if (idx < 0 || size_t(idx) >= panimals.enabled.size()) { - WARN(log).print("animal index invalid: %d\n", idx); - continue; + set_elem(all, val, banimals.empty_cages(), panimals.empty_cages); + set_elem(all, val, banimals.empty_traps(), panimals.empty_traps); + + size_t num_animals = world->raws.creatures.all.size(); + panimals.enabled.resize(num_animals, '\0'); + if (all) { + for (auto idx = 0; idx < num_animals; ++idx) + set_filter_elem(filter, val, find_creature(idx), panimals.enabled.at(idx)); + } else { + for (auto i = 0; i < banimals.enabled_size(); ++i) { + const std::string& id = banimals.enabled(i); + int idx = find_creature(id); + if (idx < 0 || size_t(idx) >= num_animals) { + WARN(log).print("animal index invalid: %d\n", idx); + continue; + } + set_filter_elem(filter, val, find_creature(idx), panimals.enabled.at(idx)); } - if (!filter.size() || id.find(filter) != id.npos) - panimals.enabled.at(idx) = val; } }); } From 0a9e81418e041b2c097a58149fa95c84262ae701 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 10:07:03 -0700 Subject: [PATCH 016/115] port two helper functions --- plugins/stockpiles/StockpileSerializer.cpp | 152 ++++++++++++--------- 1 file changed, 87 insertions(+), 65 deletions(-) diff --git a/plugins/stockpiles/StockpileSerializer.cpp b/plugins/stockpiles/StockpileSerializer.cpp index 2d72aa822..eb18576f0 100644 --- a/plugins/stockpiles/StockpileSerializer.cpp +++ b/plugins/stockpiles/StockpileSerializer.cpp @@ -222,6 +222,34 @@ static typename df::enum_traits::base_type linear_index(df::enum_traits tr return -1; } +static void set_elem(bool all, char val, bool enabled, bool& elem) { + if (all || enabled) + elem = val; +} + +static bool matches_filter(const string& filter, const string& name) { + if (!filter.size()) + return true; + return std::search(name.begin(), name.end(), filter.begin(), filter.end(), + [](unsigned char ch1, unsigned char ch2) { return std::toupper(ch1) == std::toupper(ch2); } + ) != name.end(); +} + +static void set_filter_elem(const string& filter, char val, const string& name, const string& id, char& elem) { + if (matches_filter(filter, name)) { + DEBUG(log).print("setting %s (%s) to %d\n", name.c_str(), id.c_str(), val); + elem = val; + } +} + +template +static void set_filter_elem(const string& filter, char val, const string& name, T id, char& elem) { + if (matches_filter(filter, name)) { + DEBUG(log).print("setting %s (%d) to %d\n", name.c_str(), (int32_t)id, val); + elem = val; + } +} + /** * There are many repeated (un)serialization cases throughout the stockpile_settings structure, * so the most common cases have been generalized into generic functions using lambdas. @@ -252,29 +280,35 @@ static bool serialize_list_itemdef(FuncWriteExport add_value, ItemTypeInfo ii; if (!ii.decode(type, i)) continue; + DEBUG(log).print("adding itemdef type %s\n", ii.getToken().c_str()); add_value(ii.getToken()); - DEBUG(log).print("itemdef type %zd is %s\n", i, ii.getToken().c_str()); } return all; } -static void unserialize_list_itemdef(FuncReadImport read_value, - int32_t list_size, - std::vector* pile_list, - item_type::item_type type) { - pile_list->clear(); - pile_list->resize(Items::getSubtypeCount(type), '\0'); - for (int i = 0; i < list_size; ++i) { - std::string token = read_value(i); +static void unserialize_list_itemdef(bool all, char val, const string& filter, FuncReadImport read_value, + int32_t list_size, std::vector& pile_list, item_type::item_type type) { + int num_elems = Items::getSubtypeCount(type); + pile_list.resize(num_elems, '\0'); + if (all) { + for (auto idx = 0; idx < num_elems; ++idx) { + ItemTypeInfo ii; + ii.decode(type, idx); + set_filter_elem(filter, val, ii.toString(), idx, pile_list.at(idx)); + } + return; + } + + for (auto i = 0; i < list_size; ++i) { + string id = read_value(i); ItemTypeInfo ii; - if (!ii.find(token)) + if (!ii.find(id)) continue; - DEBUG(log).print("itemdef %d is %s\n", ii.subtype, token.c_str()); - if (size_t(ii.subtype) >= pile_list->size()) { - WARN(log).print("itemdef index too large! idx[%d] max_size[%zd]\n", ii.subtype, pile_list->size()); + if (ii.subtype < 0 || size_t(ii.subtype) >= pile_list.size()) { + WARN(log).print("item type index invalid: %d\n", ii.subtype); continue; } - pile_list->at(ii.subtype) = 1; + set_filter_elem(filter, val, id, ii.subtype, pile_list.at(ii.subtype)); } } @@ -291,7 +325,7 @@ static bool serialize_list_quality(FuncWriteExport add_value, } const std::string f_type(quality_traits::key_table[i]); add_value(f_type); - DEBUG(log).print("quality: %zd is %s\n", i, f_type.c_str()); + DEBUG(log).print("adding quality %s\n", f_type.c_str()); } return all; } @@ -485,38 +519,44 @@ static bool serialize_list_material(FuncMaterialAllowed is_allowed, mi.decode(0, i); if (!is_allowed(mi)) continue; - DEBUG(log).print("material %zd is %s\n", i, mi.getToken().c_str()); + DEBUG(log).print("adding material %s\n", mi.getToken().c_str()); add_value(mi.getToken()); } return all; } -static void unserialize_list_material(FuncMaterialAllowed is_allowed, - FuncReadImport read_value, int32_t list_size, - std::vector* pile_list) { - // we initialize all possible (allowed) values to 0, - // then all other not-allowed values to 1 - // why? because that's how the memory is in DF before - // we muck with it. - std::set idx_set; - pile_list->clear(); - pile_list->resize(world->raws.inorganics.size(), 0); - for (size_t i = 0; i < pile_list->size(); ++i) { +static void unserialize_list_material(bool all, char val, const string& filter, + FuncMaterialAllowed is_allowed, FuncReadImport read_value, int32_t list_size, + std::vector& pile_list) { + // we initialize all disallowed values to 1 + // why? because that's how the memory is in DF before we muck with it. + size_t num_elems = world->raws.inorganics.size(); + pile_list.resize(num_elems, 0); + for (size_t i = 0; i < pile_list.size(); ++i) { MaterialInfo mi(0, i); - pile_list->at(i) = is_allowed(mi) ? 0 : 1; + if (!is_allowed(mi)) + pile_list.at(i) = 1; } - for (int i = 0; i < list_size; ++i) { - const std::string token = read_value(i); + + if (all) { + for (auto idx = 0; idx < num_elems; ++idx) { + MaterialInfo mi; + mi.decode(0, idx); + set_filter_elem(filter, val, mi.toString(), idx, pile_list.at(idx)); + } + return; + } + + for (auto i = 0; i < list_size; ++i) { + string id = read_value(i); MaterialInfo mi; - mi.find(token); - if (!is_allowed(mi)) + if (!mi.find(id) || !is_allowed(mi)) continue; - DEBUG(log).print("material %d is %s\n", mi.index, token.c_str()); - if (size_t(mi.index) >= pile_list->size()) { - WARN(log).print("material index too large! idx[%d] max_size[%zd]\n", mi.index, pile_list->size()); + if (mi.index < 0 || size_t(mi.index) >= pile_list.size()) { + WARN(log).print("material type index invalid: %d\n", mi.index); continue; } - pile_list->at(mi.index) = 1; + set_filter_elem(filter, val, id, mi.index, pile_list.at(mi.index)); } } @@ -732,26 +772,6 @@ static void read_category(const char *name, DeserializeMode mode, set_fn(all, val); } -static void set_elem(bool all, char val, bool enabled, bool& elem) { - if (all || enabled) - elem = val; -} - -static bool matches_filter(const std::string& filter, const std::string& name) { - if (!filter.size()) - return true; - return std::search(name.begin(), name.end(), filter.begin(), filter.end(), - [](unsigned char ch1, unsigned char ch2) { return std::toupper(ch1) == std::toupper(ch2); } - ) != name.end(); -} - -static void set_filter_elem(const std::string& filter, char val, df::creature_raw* r, char& elem) { - if (matches_filter(filter, r->name[0])) { - DEBUG(log).print("setting %s (%s) to %d\n", r->name[0].c_str(), r->creature_id.c_str(), val); - elem = val; - } -} - void StockpileSerializer::read_containers(DeserializeMode mode) { read_elem("max_bins", mode, std::bind(&StockpileSettings::has_max_bins, mBuffer), @@ -847,18 +867,17 @@ void StockpileSerializer::read_ammo(DeserializeMode mode, const std::string& fil quality_clear(pammo.quality_core); quality_clear(pammo.quality_total); }, - [&](bool force, char val) { + [&](bool all, char val) { auto & bammo = mBuffer.ammo(); - unserialize_list_itemdef( + unserialize_list_itemdef(all, val, filter, [&](const size_t& idx) -> const std::string& { return bammo.type(idx); }, - bammo.type_size(), &pammo.type, item_type::AMMO); + bammo.type_size(), pammo.type, item_type::AMMO); - unserialize_list_material(ammo_mat_is_allowed, + unserialize_list_material(all, val, filter, ammo_mat_is_allowed, [&](const size_t& idx) -> const std::string& { return bammo.mats(idx); }, - bammo.mats_size(), &pammo.mats); + bammo.mats_size(), pammo.mats); - pammo.other_mats.clear(); pammo.other_mats.resize(2, '\0'); if (bammo.other_mats_size() > 0) { // TODO remove hardcoded value @@ -922,8 +941,10 @@ void StockpileSerializer::read_animals(DeserializeMode mode, const std::string& size_t num_animals = world->raws.creatures.all.size(); panimals.enabled.resize(num_animals, '\0'); if (all) { - for (auto idx = 0; idx < num_animals; ++idx) - set_filter_elem(filter, val, find_creature(idx), panimals.enabled.at(idx)); + for (auto idx = 0; idx < num_animals; ++idx) { + auto r = find_creature(idx); + set_filter_elem(filter, val, r->name[0], r->creature_id, panimals.enabled.at(idx)); + } } else { for (auto i = 0; i < banimals.enabled_size(); ++i) { const std::string& id = banimals.enabled(i); @@ -932,7 +953,8 @@ void StockpileSerializer::read_animals(DeserializeMode mode, const std::string& WARN(log).print("animal index invalid: %d\n", idx); continue; } - set_filter_elem(filter, val, find_creature(idx), panimals.enabled.at(idx)); + auto r = find_creature(idx); + set_filter_elem(filter, val, r->name[0], r->creature_id, panimals.enabled.at(idx)); } } }); From a545bc8120d388ed85aaabf3224c962873c61544 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 15:14:28 -0700 Subject: [PATCH 017/115] it compiles! --- plugins/stockpiles/StockpileSerializer.cpp | 1502 +++++++++++--------- plugins/stockpiles/proto/stockpiles.proto | 3 + 2 files changed, 801 insertions(+), 704 deletions(-) diff --git a/plugins/stockpiles/StockpileSerializer.cpp b/plugins/stockpiles/StockpileSerializer.cpp index eb18576f0..1ce6b65b1 100644 --- a/plugins/stockpiles/StockpileSerializer.cpp +++ b/plugins/stockpiles/StockpileSerializer.cpp @@ -242,8 +242,8 @@ static void set_filter_elem(const string& filter, char val, const string& name, } } -template -static void set_filter_elem(const string& filter, char val, const string& name, T id, char& elem) { +template +static void set_filter_elem(const string& filter, T_val val, const string& name, T_id id, T_val& elem) { if (matches_filter(filter, name)) { DEBUG(log).print("setting %s (%d) to %d\n", name.c_str(), (int32_t)id, val); elem = val; @@ -334,23 +334,26 @@ static void quality_clear(bool(&pile_list)[7]) { std::fill(pile_list, pile_list + 7, false); } -static void unserialize_list_quality(FuncReadImport read_value, - int32_t list_size, - bool(&pile_list)[7]) { - quality_clear(pile_list); - if (list_size > 0 && list_size <= 7) { - using df::enums::item_quality::item_quality; - df::enum_traits quality_traits; - for (int i = 0; i < list_size; ++i) { - const std::string quality = read_value(i); - df::enum_traits::base_type idx = linear_index(quality_traits, quality); - if (idx < 0) { - WARN(log).print("invalid quality token: %s\n", quality.c_str()); - continue; - } - DEBUG(log).print("quality: %d is %s\n", idx, quality.c_str()); - pile_list[idx] = true; +static void unserialize_list_quality(bool all, bool val, const string& filter, + FuncReadImport read_value, int32_t list_size, bool(&pile_list)[7]) { + if (all) { + for (auto idx = 0; idx < 7; ++idx) { + string id = ENUM_KEY_STR(item_quality, (df::item_quality)idx); + set_filter_elem(filter, val, id, idx, pile_list[idx]); } + return; + } + + using df::enums::item_quality::item_quality; + df::enum_traits quality_traits; + for (int i = 0; i < list_size; ++i) { + const std::string quality = read_value(i); + df::enum_traits::base_type idx = linear_index(quality_traits, quality); + if (idx < 0) { + WARN(log).print("invalid quality token: %s\n", quality.c_str()); + continue; + } + set_filter_elem(filter, val, quality, idx, pile_list[idx]); } } @@ -392,13 +395,17 @@ static bool serialize_list_other_mats( return all; } -static void unserialize_list_other_mats( - const std::map other_mats, - FuncReadImport read_value, - int32_t list_size, - std::vector* pile_list) { - pile_list->clear(); - pile_list->resize(other_mats.size(), '\0'); +static void unserialize_list_other_mats(bool all, char val, const string& filter, + const std::map other_mats, FuncReadImport read_value, int32_t list_size, std::vector& pile_list) { + size_t num_elems = other_mats.size(); + pile_list.resize(num_elems, '\0'); + + if (all) { + for (auto & entry : other_mats) + set_filter_elem(filter, val, entry.second, entry.first, pile_list.at(entry.first)); + return; + } + for (int i = 0; i < list_size; ++i) { const std::string token = read_value(i); size_t idx = other_mats_token(other_mats, token); @@ -406,12 +413,11 @@ static void unserialize_list_other_mats( WARN(log).print("invalid other mat with token %s\n", token.c_str()); continue; } - DEBUG(log).print("other_mats %zd is %s\n", idx, token.c_str()); - if (idx >= pile_list->size()) { - WARN(log).print("other_mats index too large! idx[%zd] max_size[%zd]\n", idx, pile_list->size()); + if (idx >= num_elems) { + WARN(log).print("other_mats index too large! idx[%zd] max_size[%zd]\n", idx, num_elems); continue; } - pile_list->at(idx) = 1; + set_filter_elem(filter, val, token, idx, pile_list.at(idx)); } } @@ -439,20 +445,26 @@ static bool serialize_list_organic_mat(FuncWriteExport add_value, return all; } -static void unserialize_list_organic_mat(FuncReadImport get_value, - size_t list_size, std::vector* pile_list, - organic_mat_category::organic_mat_category cat) { - pile_list->clear(); - pile_list->resize(OrganicMatLookup::food_max_size(cat), '\0'); +static void unserialize_list_organic_mat(bool all, char val, const string& filter, FuncReadImport read_value, + size_t list_size, std::vector& pile_list, organic_mat_category::organic_mat_category cat) { + size_t num_elems = OrganicMatLookup::food_max_size(cat); + pile_list.resize(num_elems, '\0'); + if (all) { + for (size_t idx = 0; idx < num_elems; ++idx) { + string token = OrganicMatLookup::food_token_by_idx(cat, idx); + set_filter_elem(filter, val, token, idx, pile_list.at(idx)); + } + return; + } + for (size_t i = 0; i < list_size; ++i) { - std::string token = get_value(i); + const std::string token = read_value(i); int16_t idx = OrganicMatLookup::food_idx_by_token(cat, token); - DEBUG(log).print(" organic_material %d is %s\n", idx, token.c_str()); - if (size_t(idx) >= pile_list->size()) { - WARN(log).print("organic mat index too large! idx[%d] max_size[%zd]\n", idx, pile_list->size()); + if (idx < 0 || size_t(idx) >= num_elems) { + WARN(log).print("organic mat index too large! idx[%d] max_size[%zd]\n", idx, num_elems); continue; } - pile_list->at(idx) = 1; + set_filter_elem(filter, val, token, idx, pile_list.at(idx)); } } @@ -481,29 +493,37 @@ static bool serialize_list_item_type(FuncItemAllowed is_allowed, return all; } -static void unserialize_list_item_type(FuncItemAllowed is_allowed, - FuncReadImport read_value, int32_t list_size, - std::vector* pile_list) { - pile_list->clear(); - pile_list->resize(112, '\0'); // TODO remove hardcoded list size value - for (size_t i = 0; i < pile_list->size(); ++i) { - pile_list->at(i) = is_allowed((item_type::item_type)i) ? 0 : 1; +static void unserialize_list_item_type(bool all, char val, const string& filter, FuncItemAllowed is_allowed, + FuncReadImport read_value, int32_t list_size, std::vector& pile_list) { + // TODO can we remove the hardcoded list size? + size_t num_elems = 112; + pile_list.resize(num_elems, '\0'); + for (size_t i = 0; i < num_elems; ++i) { + if (!is_allowed((df::item_type)i)) + pile_list.at(i) = 1; } + + if (all) { + for (size_t idx = 0; idx < num_elems; ++idx) { + string id = ENUM_KEY_STR(item_type, (df::item_type)idx); + set_filter_elem(filter, val, id, idx, pile_list.at(idx)); + } + return; + } + using df::enums::item_type::item_type; df::enum_traits type_traits; - for (int32_t i = 0; i < list_size; ++i) { + for (int i = 0; i < list_size; ++i) { const std::string token = read_value(i); // subtract one because item_type starts at -1 const df::enum_traits::base_type idx = linear_index(type_traits, token) - 1; - const item_type type = (item_type)idx; - if (!is_allowed(type)) + if (!is_allowed((item_type)idx)) continue; - DEBUG(log).print("item_type %d is %s\n", idx, token.c_str()); - if (size_t(idx) >= pile_list->size()) { - WARN(log).print("error item_type index too large! idx[%d] max_size[%zd]\n", idx, pile_list->size()); + if (idx < 0 || size_t(idx) >= num_elems) { + WARN(log).print("error item_type index too large! idx[%d] max_size[%zd]\n", idx, num_elems); continue; } - pile_list->at(idx) = 1; + set_filter_elem(filter, val, token, idx, pile_list.at(idx)); } } @@ -539,7 +559,7 @@ static void unserialize_list_material(bool all, char val, const string& filter, } if (all) { - for (auto idx = 0; idx < num_elems; ++idx) { + for (size_t idx = 0; idx < num_elems; ++idx) { MaterialInfo mi; mi.decode(0, idx); set_filter_elem(filter, val, mi.toString(), idx, pile_list.at(idx)); @@ -560,6 +580,48 @@ static void unserialize_list_material(bool all, char val, const string& filter, } } +static bool serialize_list_creature(FuncWriteExport add_value, const std::vector& list) { + bool all = true; + + for (size_t i = 0; i < list.size(); ++i) { + if (!list.at(i)) { + all = false; + continue; + } + df::creature_raw* r = find_creature(i); + if (r->flags.is_set(creature_raw_flags::GENERATED) + || r->creature_id == "EQUIPMENT_WAGON") + continue; + DEBUG(log).print("adding creature %s\n", r->creature_id.c_str()); + add_value(r->creature_id); + } + return all; +} + +static void unserialize_list_creature(bool all, char val, const string& filter, + FuncReadImport read_value, int32_t list_size, std::vector& pile_list) { + size_t num_elems = world->raws.creatures.all.size(); + pile_list.resize(num_elems, '\0'); + if (all) { + for (size_t idx = 0; idx < num_elems; ++idx) { + auto r = find_creature(idx); + set_filter_elem(filter, val, r->name[0], r->creature_id, pile_list.at(idx)); + } + return; + } + + for (auto i = 0; i < list_size; ++i) { + string id = read_value(i); + int idx = find_creature(id); + if (idx < 0 || size_t(idx) >= num_elems) { + WARN(log).print("animal index invalid: %d\n", idx); + continue; + } + auto r = find_creature(idx); + set_filter_elem(filter, val, r->name[0], r->creature_id, pile_list.at(idx)); + } +} + template static void write_cat(const char *name, bool include_types, uint32_t cat_flags, enum df::stockpile_group_set::Mask cat_mask, @@ -815,14 +877,14 @@ static bool ammo_mat_is_allowed(const MaterialInfo& mi) { bool StockpileSerializer::write_ammo(StockpileSettings::AmmoSet* ammo) { bool all = serialize_list_itemdef( - [=](const std::string& token) { ammo->add_type(token); }, + [&](const std::string& token) { ammo->add_type(token); }, mPile->settings.ammo.type, std::vector(world->raws.itemdefs.ammo.begin(), world->raws.itemdefs.ammo.end()), item_type::AMMO); all = serialize_list_material( ammo_mat_is_allowed, - [=](const std::string& token) { ammo->add_mats(token); }, + [&](const std::string& token) { ammo->add_mats(token); }, mPile->settings.ammo.mats) && all; if (mPile->settings.ammo.other_mats.size() > 2) { @@ -843,61 +905,78 @@ bool StockpileSerializer::write_ammo(StockpileSettings::AmmoSet* ammo) { } all = serialize_list_quality( - [=](const std::string& token) { ammo->add_quality_core(token); }, + [&](const std::string& token) { ammo->add_quality_core(token); }, mPile->settings.ammo.quality_core) && all; all = serialize_list_quality( - [=](const std::string& token) { ammo->add_quality_total(token); }, + [&](const std::string& token) { ammo->add_quality_total(token); }, mPile->settings.ammo.quality_total) && all; return all; } void StockpileSerializer::read_ammo(DeserializeMode mode, const std::string& filter) { - auto & pammo = mPile->settings.ammo; - read_category("ammo", mode, - std::bind(&StockpileSettings::has_ammo, mBuffer), - std::bind(&StockpileSettings::ammo, mBuffer), - mPile->settings.flags.whole, - mPile->settings.flags.mask_ammo, - [&]() { - pammo.type.clear(); - pammo.mats.clear(); - pammo.other_mats.clear(); - quality_clear(pammo.quality_core); - quality_clear(pammo.quality_total); - }, - [&](bool all, char val) { - auto & bammo = mBuffer.ammo(); - - unserialize_list_itemdef(all, val, filter, - [&](const size_t& idx) -> const std::string& { return bammo.type(idx); }, - bammo.type_size(), pammo.type, item_type::AMMO); - - unserialize_list_material(all, val, filter, ammo_mat_is_allowed, - [&](const size_t& idx) -> const std::string& { return bammo.mats(idx); }, - bammo.mats_size(), pammo.mats); - - pammo.other_mats.resize(2, '\0'); - if (bammo.other_mats_size() > 0) { - // TODO remove hardcoded value - for (int i = 0; i < bammo.other_mats_size(); ++i) { - const std::string token = bammo.other_mats(i); - const int32_t idx = token == "WOOD" ? 0 : token == "BONE" ? 1 - : -1; - DEBUG(log).print("other mats %d is %s\n", idx, token.c_str()); - if (idx == -1) - continue; - pammo.other_mats.at(idx) = 1; - } + auto & pammo = mPile->settings.ammo; + read_category("ammo", mode, + std::bind(&StockpileSettings::has_ammo, mBuffer), + std::bind(&StockpileSettings::ammo, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_ammo, + [&]() { + pammo.type.clear(); + pammo.mats.clear(); + pammo.other_mats.clear(); + quality_clear(pammo.quality_core); + quality_clear(pammo.quality_total); + }, + [&](bool all, char val) { + auto & bammo = mBuffer.ammo(); + + unserialize_list_itemdef(all, val, filter, + [&](const size_t& idx) -> const std::string& { return bammo.type(idx); }, + bammo.type_size(), pammo.type, item_type::AMMO); + + unserialize_list_material(all, val, filter, ammo_mat_is_allowed, + [&](const size_t& idx) -> const std::string& { return bammo.mats(idx); }, + bammo.mats_size(), pammo.mats); + + pammo.other_mats.resize(2, '\0'); + if (bammo.other_mats_size() > 0) { + // TODO remove hardcoded value + for (int i = 0; i < bammo.other_mats_size(); ++i) { + const std::string token = bammo.other_mats(i); + const int32_t idx = token == "WOOD" ? 0 : token == "BONE" ? 1 + : -1; + DEBUG(log).print("other mats %d is %s\n", idx, token.c_str()); + if (idx == -1) + continue; + pammo.other_mats.at(idx) = 1; } + } - unserialize_list_quality([=](const size_t& idx) -> const std::string& { return bammo.quality_core(idx); }, - bammo.quality_core_size(), pammo.quality_core); + pammo.other_mats.resize(2, '\0'); + if (all) { + set_filter_elem(filter, val, "WOOD", 0, pammo.other_mats.at(0)); + set_filter_elem(filter, val, "BONE", 1, pammo.other_mats.at(1)); + } else { + // TODO can we un-hardcode the values? + for (int i = 0; i < bammo.other_mats_size(); ++i) { + const std::string id = bammo.other_mats(i); + const int32_t idx = id == "WOOD" ? 0 : id == "BONE" ? 1 : -1; + if (idx == -1) + continue; + set_filter_elem(filter, val, id, idx, pammo.other_mats.at(idx)); + } + } - unserialize_list_quality([=](const size_t& idx) -> const std::string& { return bammo.quality_total(idx); }, - bammo.quality_total_size(), pammo.quality_total); - }); + unserialize_list_quality(all, val, filter, + [&](const size_t& idx) -> const std::string& { return bammo.quality_core(idx); }, + bammo.quality_core_size(), pammo.quality_core); + + unserialize_list_quality(all, val, filter, + [&](const size_t& idx) -> const std::string& { return bammo.quality_total(idx); }, + bammo.quality_total_size(), pammo.quality_total); + }); } bool StockpileSerializer::write_animals(StockpileSettings::AnimalsSet* animals) { @@ -906,58 +985,34 @@ bool StockpileSerializer::write_animals(StockpileSettings::AnimalsSet* animals) animals->set_empty_cages(panimals.empty_cages); animals->set_empty_traps(panimals.empty_traps); - for (size_t i = 0; i < panimals.enabled.size(); ++i) { - if (!panimals.enabled.at(i)) { - all = false; - continue; - } - df::creature_raw* r = find_creature(i); - if (r->flags.is_set(creature_raw_flags::GENERATED) - || r->creature_id == "EQUIPMENT_WAGON") - continue; - DEBUG(log).print("saving creature %s\n", r->creature_id.c_str()); - animals->add_enabled(r->creature_id); - } - return all; + + return serialize_list_creature( + [&](const std::string& token) { animals->add_enabled(token); }, + panimals.enabled) && all; } void StockpileSerializer::read_animals(DeserializeMode mode, const std::string& filter) { auto & panimals = mPile->settings.animals; read_category("animals", mode, - std::bind(&StockpileSettings::has_animals, mBuffer), - std::bind(&StockpileSettings::animals, mBuffer), - mPile->settings.flags.whole, - mPile->settings.flags.mask_animals, - [&]() { - panimals.empty_cages = false; - panimals.empty_traps = false; - panimals.enabled.clear(); - }, - [&](bool all, char val) { - auto & banimals = mBuffer.animals(); - set_elem(all, val, banimals.empty_cages(), panimals.empty_cages); - set_elem(all, val, banimals.empty_traps(), panimals.empty_traps); - - size_t num_animals = world->raws.creatures.all.size(); - panimals.enabled.resize(num_animals, '\0'); - if (all) { - for (auto idx = 0; idx < num_animals; ++idx) { - auto r = find_creature(idx); - set_filter_elem(filter, val, r->name[0], r->creature_id, panimals.enabled.at(idx)); - } - } else { - for (auto i = 0; i < banimals.enabled_size(); ++i) { - const std::string& id = banimals.enabled(i); - int idx = find_creature(id); - if (idx < 0 || size_t(idx) >= num_animals) { - WARN(log).print("animal index invalid: %d\n", idx); - continue; - } - auto r = find_creature(idx); - set_filter_elem(filter, val, r->name[0], r->creature_id, panimals.enabled.at(idx)); - } - } - }); + std::bind(&StockpileSettings::has_animals, mBuffer), + std::bind(&StockpileSettings::animals, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_animals, + [&]() { + panimals.empty_cages = false; + panimals.empty_traps = false; + panimals.enabled.clear(); + }, + [&](bool all, char val) { + auto & banimals = mBuffer.animals(); + + set_elem(all, val, banimals.empty_cages(), panimals.empty_cages); + set_elem(all, val, banimals.empty_traps(), panimals.empty_traps); + + unserialize_list_creature(all, val, filter, + [&](const size_t& idx) -> const std::string& { return banimals.enabled(idx); }, + banimals.enabled_size(), panimals.enabled); + }); } static bool armor_mat_is_allowed(const MaterialInfo& mi) { @@ -974,42 +1029,42 @@ bool StockpileSerializer::write_armor(StockpileSettings::ArmorSet* armor) { // armor type all = serialize_list_itemdef( - [=](const std::string& token) { armor->add_body(token); }, + [&](const std::string& token) { armor->add_body(token); }, parmor.body, std::vector(world->raws.itemdefs.armor.begin(), world->raws.itemdefs.armor.end()), item_type::ARMOR) && all; // helm type all = serialize_list_itemdef( - [=](const std::string& token) { armor->add_head(token); }, + [&](const std::string& token) { armor->add_head(token); }, parmor.head, std::vector(world->raws.itemdefs.helms.begin(), world->raws.itemdefs.helms.end()), item_type::HELM) && all; // shoes type all = serialize_list_itemdef( - [=](const std::string& token) { armor->add_feet(token); }, + [&](const std::string& token) { armor->add_feet(token); }, parmor.feet, std::vector(world->raws.itemdefs.shoes.begin(), world->raws.itemdefs.shoes.end()), item_type::SHOES) && all; // gloves type all = serialize_list_itemdef( - [=](const std::string& token) { armor->add_hands(token); }, + [&](const std::string& token) { armor->add_hands(token); }, parmor.hands, std::vector(world->raws.itemdefs.gloves.begin(), world->raws.itemdefs.gloves.end()), item_type::GLOVES) && all; // pant type all = serialize_list_itemdef( - [=](const std::string& token) { armor->add_legs(token); }, + [&](const std::string& token) { armor->add_legs(token); }, parmor.legs, std::vector(world->raws.itemdefs.pants.begin(), world->raws.itemdefs.pants.end()), item_type::PANTS) && all; // shield type all = serialize_list_itemdef( - [=](const std::string& token) { armor->add_shield(token); }, + [&](const std::string& token) { armor->add_shield(token); }, parmor.shield, std::vector(world->raws.itemdefs.shields.begin(), world->raws.itemdefs.shields.end()), item_type::SHIELD) && all; @@ -1017,84 +1072,91 @@ bool StockpileSerializer::write_armor(StockpileSettings::ArmorSet* armor) { // materials all = serialize_list_material( armor_mat_is_allowed, - [=](const std::string& token) { armor->add_mats(token); }, + [&](const std::string& token) { armor->add_mats(token); }, parmor.mats) && all; // other mats all = serialize_list_other_mats( - mOtherMatsWeaponsArmor.mats, [=](const std::string& token) { armor->add_other_mats(token); }, + mOtherMatsWeaponsArmor.mats, [&](const std::string& token) { armor->add_other_mats(token); }, parmor.other_mats) && all; // quality core - all = serialize_list_quality([=](const std::string& token) { armor->add_quality_core(token); }, + all = serialize_list_quality([&](const std::string& token) { armor->add_quality_core(token); }, parmor.quality_core) && all; // quality total - all = serialize_list_quality([=](const std::string& token) { armor->add_quality_total(token); }, + all = serialize_list_quality([&](const std::string& token) { armor->add_quality_total(token); }, parmor.quality_total) && all; return all; } void StockpileSerializer::read_armor(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_armor()) { - mPile->settings.flags.bits.armor = 1; - const StockpileSettings::ArmorSet armor = mBuffer.armor(); - DEBUG(log).print("armor:\n"); + auto & parmor = mPile->settings.armor; + read_category("armor", mode, + std::bind(&StockpileSettings::has_armor, mBuffer), + std::bind(&StockpileSettings::armor, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_armor, + [&]() { + parmor.body.clear(); + parmor.head.clear(); + parmor.feet.clear(); + parmor.hands.clear(); + parmor.legs.clear(); + parmor.shield.clear(); + parmor.other_mats.clear(); + parmor.mats.clear(); + quality_clear(parmor.quality_core); + quality_clear(parmor.quality_total); + }, + [&](bool all, char val) { + auto & barmor = mBuffer.armor(); - bool unusable = armor.unusable(); - bool usable = armor.usable(); - DEBUG(log).print("unusable %d\n", unusable); - DEBUG(log).print("usable %d\n", usable); - mPile->settings.armor.unusable = unusable; - mPile->settings.armor.usable = usable; + set_elem(all, val, barmor.unusable(), parmor.unusable); + set_elem(all, val, barmor.usable(), parmor.usable); - unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return armor.body(idx); }, - armor.body_size(), &mPile->settings.armor.body, item_type::ARMOR); + unserialize_list_itemdef(all, val, filter, + [&](const size_t& idx) -> const std::string& { return barmor.body(idx); }, + barmor.body_size(), parmor.body, item_type::ARMOR); - unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return armor.head(idx); }, - armor.head_size(), &mPile->settings.armor.head, item_type::HELM); + unserialize_list_itemdef(all, val, filter, + [&](const size_t& idx) -> const std::string& { return barmor.head(idx); }, + barmor.head_size(), parmor.head, item_type::HELM); - unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return armor.feet(idx); }, - armor.feet_size(), &mPile->settings.armor.feet, item_type::SHOES); + unserialize_list_itemdef(all, val, filter, + [&](const size_t& idx) -> const std::string& { return barmor.feet(idx); }, + barmor.feet_size(), parmor.feet, item_type::SHOES); - unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return armor.hands(idx); }, - armor.hands_size(), &mPile->settings.armor.hands, item_type::GLOVES); + unserialize_list_itemdef(all, val, filter, + [&](const size_t& idx) -> const std::string& { return barmor.hands(idx); }, + barmor.hands_size(), parmor.hands, item_type::GLOVES); - unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return armor.legs(idx); }, - armor.legs_size(), &mPile->settings.armor.legs, item_type::PANTS); + unserialize_list_itemdef(all, val, filter, + [&](const size_t& idx) -> const std::string& { return barmor.legs(idx); }, + barmor.legs_size(), parmor.legs, item_type::PANTS); - unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return armor.shield(idx); }, - armor.shield_size(), &mPile->settings.armor.shield, item_type::SHIELD); + unserialize_list_itemdef(all, val, filter, + [&](const size_t& idx) -> const std::string& { return barmor.shield(idx); }, + barmor.shield_size(), parmor.shield, item_type::SHIELD); - unserialize_list_material( - armor_mat_is_allowed, - [=](const size_t& idx) -> const std::string& { return armor.mats(idx); }, - armor.mats_size(), &mPile->settings.armor.mats); + unserialize_list_material(all, val, filter, + armor_mat_is_allowed, + [&](const size_t& idx) -> const std::string& { return barmor.mats(idx); }, + barmor.mats_size(), parmor.mats); - unserialize_list_other_mats( - mOtherMatsWeaponsArmor.mats, [=](const size_t& idx) -> const std::string& { return armor.other_mats(idx); }, - armor.other_mats_size(), &mPile->settings.armor.other_mats); + unserialize_list_other_mats(all, val, filter, + mOtherMatsWeaponsArmor.mats, [&](const size_t& idx) -> const std::string& { return barmor.other_mats(idx); }, + barmor.other_mats_size(), parmor.other_mats); - unserialize_list_quality([=](const size_t& idx) -> const std::string& { return armor.quality_core(idx); }, - armor.quality_core_size(), mPile->settings.armor.quality_core); + unserialize_list_quality(all, val, filter, + [&](const size_t& idx) -> const std::string& { return barmor.quality_core(idx); }, + barmor.quality_core_size(), parmor.quality_core); - unserialize_list_quality([=](const size_t& idx) -> const std::string& { return armor.quality_total(idx); }, - armor.quality_total_size(), mPile->settings.armor.quality_total); - } - else { - mPile->settings.flags.bits.armor = 0; - mPile->settings.armor.body.clear(); - mPile->settings.armor.head.clear(); - mPile->settings.armor.feet.clear(); - mPile->settings.armor.hands.clear(); - mPile->settings.armor.legs.clear(); - mPile->settings.armor.shield.clear(); - mPile->settings.armor.other_mats.clear(); - mPile->settings.armor.mats.clear(); - quality_clear(mPile->settings.armor.quality_core); - quality_clear(mPile->settings.armor.quality_total); - } + unserialize_list_quality(all, val, filter, + [&](const size_t& idx) -> const std::string& { return barmor.quality_total(idx); }, + barmor.quality_total_size(), parmor.quality_total); + }); } static bool bars_mat_is_allowed(const MaterialInfo& mi) { @@ -1108,139 +1170,152 @@ static bool blocks_mat_is_allowed(const MaterialInfo& mi) { bool StockpileSerializer::write_bars_blocks(StockpileSettings::BarsBlocksSet* bars_blocks) { bool all = serialize_list_material( bars_mat_is_allowed, - [=](const std::string& token) { bars_blocks->add_bars_mats(token); }, + [&](const std::string& token) { bars_blocks->add_bars_mats(token); }, mPile->settings.bars_blocks.bars_mats); all = serialize_list_material( blocks_mat_is_allowed, - [=](const std::string& token) { bars_blocks->add_blocks_mats(token); }, + [&](const std::string& token) { bars_blocks->add_blocks_mats(token); }, mPile->settings.bars_blocks.blocks_mats) && all; all = serialize_list_other_mats( - mOtherMatsBars.mats, [=](const std::string& token) { bars_blocks->add_bars_other_mats(token); }, + mOtherMatsBars.mats, [&](const std::string& token) { bars_blocks->add_bars_other_mats(token); }, mPile->settings.bars_blocks.bars_other_mats) && all; all = serialize_list_other_mats( - mOtherMatsBlocks.mats, [=](const std::string& token) { bars_blocks->add_blocks_other_mats(token); }, + mOtherMatsBlocks.mats, [&](const std::string& token) { bars_blocks->add_blocks_other_mats(token); }, mPile->settings.bars_blocks.blocks_other_mats) && all; return all; } void StockpileSerializer::read_bars_blocks(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_barsblocks()) { - mPile->settings.flags.bits.bars_blocks = 1; - const StockpileSettings::BarsBlocksSet bars_blocks = mBuffer.barsblocks(); - DEBUG(log).print("bars_blocks:\n"); + auto & pbarsblocks = mPile->settings.bars_blocks; + read_category("bars_blocks", mode, + std::bind(&StockpileSettings::has_barsblocks, mBuffer), + std::bind(&StockpileSettings::barsblocks, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_bars_blocks, + [&]() { + pbarsblocks.bars_other_mats.clear(); + pbarsblocks.bars_mats.clear(); + pbarsblocks.blocks_other_mats.clear(); + pbarsblocks.blocks_mats.clear(); + }, + [&](bool all, char val) { + auto & bbarsblocks = mBuffer.barsblocks(); - unserialize_list_material( - bars_mat_is_allowed, - [=](const size_t& idx) -> const std::string& { return bars_blocks.bars_mats(idx); }, - bars_blocks.bars_mats_size(), &mPile->settings.bars_blocks.bars_mats); + unserialize_list_material(all, val, filter, bars_mat_is_allowed, + [&](const size_t& idx) -> const std::string& { return bbarsblocks.bars_mats(idx); }, + bbarsblocks.bars_mats_size(), pbarsblocks.bars_mats); - unserialize_list_material( - blocks_mat_is_allowed, - [=](const size_t& idx) -> const std::string& { return bars_blocks.blocks_mats(idx); }, - bars_blocks.blocks_mats_size(), &mPile->settings.bars_blocks.blocks_mats); + unserialize_list_material(all, val, filter, + blocks_mat_is_allowed, + [&](const size_t& idx) -> const std::string& { return bbarsblocks.blocks_mats(idx); }, + bbarsblocks.blocks_mats_size(), pbarsblocks.blocks_mats); - unserialize_list_other_mats( - mOtherMatsBars.mats, - [=](const size_t& idx) -> const std::string& { return bars_blocks.bars_other_mats(idx); }, - bars_blocks.bars_other_mats_size(), &mPile->settings.bars_blocks.bars_other_mats); + unserialize_list_other_mats(all, val, filter, + mOtherMatsBars.mats, + [&](const size_t& idx) -> const std::string& { return bbarsblocks.bars_other_mats(idx); }, + bbarsblocks.bars_other_mats_size(), pbarsblocks.bars_other_mats); - unserialize_list_other_mats( - mOtherMatsBlocks.mats, - [=](const size_t& idx) -> const std::string& { return bars_blocks.blocks_other_mats(idx); }, - bars_blocks.blocks_other_mats_size(), &mPile->settings.bars_blocks.blocks_other_mats); - } - else { - mPile->settings.flags.bits.bars_blocks = 0; - mPile->settings.bars_blocks.bars_other_mats.clear(); - mPile->settings.bars_blocks.bars_mats.clear(); - mPile->settings.bars_blocks.blocks_other_mats.clear(); - mPile->settings.bars_blocks.blocks_mats.clear(); - } + unserialize_list_other_mats(all, val, filter, + mOtherMatsBlocks.mats, + [&](const size_t& idx) -> const std::string& { return bbarsblocks.blocks_other_mats(idx); }, + bbarsblocks.blocks_other_mats_size(), pbarsblocks.blocks_other_mats); + }); } bool StockpileSerializer::write_cloth(StockpileSettings::ClothSet* cloth) { bool all = true; all = serialize_list_organic_mat( - [=](const std::string& token) { cloth->add_thread_silk(token); }, + [&](const std::string& token) { cloth->add_thread_silk(token); }, &mPile->settings.cloth.thread_silk, organic_mat_category::Silk) && all; all = serialize_list_organic_mat( - [=](const std::string& token) { cloth->add_thread_plant(token); }, + [&](const std::string& token) { cloth->add_thread_plant(token); }, &mPile->settings.cloth.thread_plant, organic_mat_category::PlantFiber) && all; all = serialize_list_organic_mat( - [=](const std::string& token) { cloth->add_thread_yarn(token); }, + [&](const std::string& token) { cloth->add_thread_yarn(token); }, &mPile->settings.cloth.thread_yarn, organic_mat_category::Yarn) && all; all = serialize_list_organic_mat( - [=](const std::string& token) { cloth->add_thread_metal(token); }, + [&](const std::string& token) { cloth->add_thread_metal(token); }, &mPile->settings.cloth.thread_metal, organic_mat_category::MetalThread) && all; all = serialize_list_organic_mat( - [=](const std::string& token) { cloth->add_cloth_silk(token); }, + [&](const std::string& token) { cloth->add_cloth_silk(token); }, &mPile->settings.cloth.cloth_silk, organic_mat_category::Silk) && all; all = serialize_list_organic_mat( - [=](const std::string& token) { cloth->add_cloth_plant(token); }, + [&](const std::string& token) { cloth->add_cloth_plant(token); }, &mPile->settings.cloth.cloth_plant, organic_mat_category::PlantFiber) && all; all = serialize_list_organic_mat( - [=](const std::string& token) { cloth->add_cloth_yarn(token); }, + [&](const std::string& token) { cloth->add_cloth_yarn(token); }, &mPile->settings.cloth.cloth_yarn, organic_mat_category::Yarn) && all; all = serialize_list_organic_mat( - [=](const std::string& token) { cloth->add_cloth_metal(token); }, + [&](const std::string& token) { cloth->add_cloth_metal(token); }, &mPile->settings.cloth.cloth_metal, organic_mat_category::MetalThread) && all; return all; } void StockpileSerializer::read_cloth(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_cloth()) { - mPile->settings.flags.bits.cloth = 1; - const StockpileSettings::ClothSet cloth = mBuffer.cloth(); - DEBUG(log).print("cloth:\n"); + auto & pcloth = mPile->settings.cloth; + read_category("cloth", mode, + std::bind(&StockpileSettings::has_cloth, mBuffer), + std::bind(&StockpileSettings::cloth, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_cloth, + [&]() { + pcloth.thread_metal.clear(); + pcloth.thread_plant.clear(); + pcloth.thread_silk.clear(); + pcloth.thread_yarn.clear(); + pcloth.cloth_metal.clear(); + pcloth.cloth_plant.clear(); + pcloth.cloth_silk.clear(); + pcloth.cloth_yarn.clear(); + }, + [&](bool all, char val) { + auto & bcloth = mBuffer.cloth(); - unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.thread_silk(idx); }, - cloth.thread_silk_size(), &mPile->settings.cloth.thread_silk, organic_mat_category::Silk); + unserialize_list_organic_mat(all, val, filter, + [&](size_t idx) -> std::string { return bcloth.thread_silk(idx); }, + bcloth.thread_silk_size(), pcloth.thread_silk, organic_mat_category::Silk); - unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.thread_plant(idx); }, - cloth.thread_plant_size(), &mPile->settings.cloth.thread_plant, organic_mat_category::PlantFiber); + unserialize_list_organic_mat(all, val, filter, + [&](size_t idx) -> std::string { return bcloth.thread_plant(idx); }, + bcloth.thread_plant_size(), pcloth.thread_plant, organic_mat_category::PlantFiber); - unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.thread_yarn(idx); }, - cloth.thread_yarn_size(), &mPile->settings.cloth.thread_yarn, organic_mat_category::Yarn); + unserialize_list_organic_mat(all, val, filter, + [&](size_t idx) -> std::string { return bcloth.thread_yarn(idx); }, + bcloth.thread_yarn_size(), pcloth.thread_yarn, organic_mat_category::Yarn); - unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.thread_metal(idx); }, - cloth.thread_metal_size(), &mPile->settings.cloth.thread_metal, organic_mat_category::MetalThread); + unserialize_list_organic_mat(all, val, filter, + [&](size_t idx) -> std::string { return bcloth.thread_metal(idx); }, + bcloth.thread_metal_size(), pcloth.thread_metal, organic_mat_category::MetalThread); - unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.cloth_silk(idx); }, - cloth.cloth_silk_size(), &mPile->settings.cloth.cloth_silk, organic_mat_category::Silk); + unserialize_list_organic_mat(all, val, filter, + [&](size_t idx) -> std::string { return bcloth.cloth_silk(idx); }, + bcloth.cloth_silk_size(), pcloth.cloth_silk, organic_mat_category::Silk); - unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.cloth_plant(idx); }, - cloth.cloth_plant_size(), &mPile->settings.cloth.cloth_plant, organic_mat_category::PlantFiber); + unserialize_list_organic_mat(all, val, filter, + [&](size_t idx) -> std::string { return bcloth.cloth_plant(idx); }, + bcloth.cloth_plant_size(), pcloth.cloth_plant, organic_mat_category::PlantFiber); - unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.cloth_yarn(idx); }, - cloth.cloth_yarn_size(), &mPile->settings.cloth.cloth_yarn, organic_mat_category::Yarn); + unserialize_list_organic_mat(all, val, filter, + [&](size_t idx) -> std::string { return bcloth.cloth_yarn(idx); }, + bcloth.cloth_yarn_size(), pcloth.cloth_yarn, organic_mat_category::Yarn); - unserialize_list_organic_mat([=](size_t idx) -> std::string { return cloth.cloth_metal(idx); }, - cloth.cloth_metal_size(), &mPile->settings.cloth.cloth_metal, organic_mat_category::MetalThread); - } - else { - mPile->settings.cloth.thread_metal.clear(); - mPile->settings.cloth.thread_plant.clear(); - mPile->settings.cloth.thread_silk.clear(); - mPile->settings.cloth.thread_yarn.clear(); - mPile->settings.cloth.cloth_metal.clear(); - mPile->settings.cloth.cloth_plant.clear(); - mPile->settings.cloth.cloth_silk.clear(); - mPile->settings.cloth.cloth_yarn.clear(); - mPile->settings.flags.bits.cloth = 0; - } + unserialize_list_organic_mat(all, val, filter, + [&](size_t idx) -> std::string { return bcloth.cloth_metal(idx); }, + bcloth.cloth_metal_size(), pcloth.cloth_metal, organic_mat_category::MetalThread); + }); } static bool coins_mat_is_allowed(const MaterialInfo& mi) { @@ -1250,25 +1325,27 @@ static bool coins_mat_is_allowed(const MaterialInfo& mi) { bool StockpileSerializer::write_coins(StockpileSettings::CoinSet* coins) { return serialize_list_material( coins_mat_is_allowed, - [=](const std::string& token) { coins->add_mats(token); }, + [&](const std::string& token) { coins->add_mats(token); }, mPile->settings.coins.mats); } void StockpileSerializer::read_coins(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_coin()) { - mPile->settings.flags.bits.coins = 1; - const StockpileSettings::CoinSet coins = mBuffer.coin(); - DEBUG(log).print("coins:\n"); + auto & pcoins = mPile->settings.coins; + read_category("coin", mode, + std::bind(&StockpileSettings::has_coin, mBuffer), + std::bind(&StockpileSettings::coin, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_coins, + [&]() { + pcoins.mats.clear(); + }, + [&](bool all, char val) { + auto & bcoin = mBuffer.coin(); - unserialize_list_material( - coins_mat_is_allowed, - [=](const size_t& idx) -> const std::string& { return coins.mats(idx); }, - coins.mats_size(), &mPile->settings.coins.mats); - } - else { - mPile->settings.flags.bits.coins = 0; - mPile->settings.coins.mats.clear(); - } + unserialize_list_material(all, val, filter, coins_mat_is_allowed, + [&](const size_t& idx) -> const std::string& { return bcoin.mats(idx); }, + bcoin.mats_size(), pcoins.mats); + }); } static bool finished_goods_type_is_allowed(item_type::item_type type) { @@ -1311,61 +1388,64 @@ static bool finished_goods_mat_is_allowed(const MaterialInfo& mi) { bool StockpileSerializer::write_finished_goods(StockpileSettings::FinishedGoodsSet* finished_goods) { bool all = serialize_list_item_type( finished_goods_type_is_allowed, - [=](const std::string& token) { finished_goods->add_type(token); }, + [&](const std::string& token) { finished_goods->add_type(token); }, mPile->settings.finished_goods.type); all = serialize_list_material( finished_goods_mat_is_allowed, - [=](const std::string& token) { finished_goods->add_mats(token); }, + [&](const std::string& token) { finished_goods->add_mats(token); }, mPile->settings.finished_goods.mats) && all; all = serialize_list_other_mats( - mOtherMatsFinishedGoods.mats, [=](const std::string& token) { finished_goods->add_other_mats(token); }, + mOtherMatsFinishedGoods.mats, [&](const std::string& token) { finished_goods->add_other_mats(token); }, mPile->settings.finished_goods.other_mats) && all; - all = serialize_list_quality([=](const std::string& token) { finished_goods->add_quality_core(token); }, + all = serialize_list_quality([&](const std::string& token) { finished_goods->add_quality_core(token); }, mPile->settings.finished_goods.quality_core) && all; - all = serialize_list_quality([=](const std::string& token) { finished_goods->add_quality_total(token); }, + all = serialize_list_quality([&](const std::string& token) { finished_goods->add_quality_total(token); }, mPile->settings.finished_goods.quality_total) && all; return all; } void StockpileSerializer::read_finished_goods(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_finished_goods()) { - mPile->settings.flags.bits.finished_goods = 1; - const StockpileSettings::FinishedGoodsSet finished_goods = mBuffer.finished_goods(); - DEBUG(log).print("finished_goods:\n"); + auto & pfinished_goods = mPile->settings.finished_goods; + read_category("finished_goods", mode, + std::bind(&StockpileSettings::has_finished_goods, mBuffer), + std::bind(&StockpileSettings::finished_goods, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_finished_goods, + [&]() { + pfinished_goods.type.clear(); + pfinished_goods.other_mats.clear(); + pfinished_goods.mats.clear(); + quality_clear(pfinished_goods.quality_core); + quality_clear(pfinished_goods.quality_total); + }, + [&](bool all, char val) { + auto & bfinished_goods = mBuffer.finished_goods(); - unserialize_list_item_type( - finished_goods_type_is_allowed, - [=](const size_t& idx) -> const std::string& { return finished_goods.type(idx); }, - finished_goods.type_size(), &mPile->settings.finished_goods.type); + unserialize_list_item_type(all, val, filter, finished_goods_type_is_allowed, + [&](const size_t& idx) -> const std::string& { return bfinished_goods.type(idx); }, + bfinished_goods.type_size(), pfinished_goods.type); - unserialize_list_material( - finished_goods_mat_is_allowed, - [=](const size_t& idx) -> const std::string& { return finished_goods.mats(idx); }, - finished_goods.mats_size(), &mPile->settings.finished_goods.mats); + unserialize_list_material(all, val, filter, finished_goods_mat_is_allowed, + [&](const size_t& idx) -> const std::string& { return bfinished_goods.mats(idx); }, + bfinished_goods.mats_size(), pfinished_goods.mats); - unserialize_list_other_mats( - mOtherMatsFinishedGoods.mats, [=](const size_t& idx) -> const std::string& { return finished_goods.other_mats(idx); }, - finished_goods.other_mats_size(), &mPile->settings.finished_goods.other_mats); + unserialize_list_other_mats(all, val, filter, mOtherMatsFinishedGoods.mats, + [&](const size_t& idx) -> const std::string& { return bfinished_goods.other_mats(idx); }, + bfinished_goods.other_mats_size(), pfinished_goods.other_mats); - unserialize_list_quality([=](const size_t& idx) -> const std::string& { return finished_goods.quality_core(idx); }, - finished_goods.quality_core_size(), mPile->settings.finished_goods.quality_core); + unserialize_list_quality(all, val, filter, + [&](const size_t& idx) -> const std::string& { return bfinished_goods.quality_core(idx); }, + bfinished_goods.quality_core_size(), pfinished_goods.quality_core); - unserialize_list_quality([=](const size_t& idx) -> const std::string& { return finished_goods.quality_total(idx); }, - finished_goods.quality_total_size(), mPile->settings.finished_goods.quality_total); - } - else { - mPile->settings.flags.bits.finished_goods = 0; - mPile->settings.finished_goods.type.clear(); - mPile->settings.finished_goods.other_mats.clear(); - mPile->settings.finished_goods.mats.clear(); - quality_clear(mPile->settings.finished_goods.quality_core); - quality_clear(mPile->settings.finished_goods.quality_total); - } + unserialize_list_quality(all, val, filter, + [&](const size_t& idx) -> const std::string& { return bfinished_goods.quality_total(idx); }, + bfinished_goods.quality_total_size(), pfinished_goods.quality_total); + }); } food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_category cat) { @@ -1374,155 +1454,155 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego switch (cat) { case organic_mat_category::Meat: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_meat(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().meat(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().meat(idx); }; return food_pair(setter, &mPile->settings.food.meat, getter, mBuffer.food().meat_size()); } case organic_mat_category::Fish: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_fish(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().fish(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().fish(idx); }; return food_pair(setter, &mPile->settings.food.fish, getter, mBuffer.food().fish_size()); } case organic_mat_category::UnpreparedFish: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_unprepared_fish(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().unprepared_fish(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().unprepared_fish(idx); }; return food_pair(setter, &mPile->settings.food.unprepared_fish, getter, mBuffer.food().unprepared_fish_size()); } case organic_mat_category::Eggs: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_egg(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().egg(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().egg(idx); }; return food_pair(setter, &mPile->settings.food.egg, getter, mBuffer.food().egg_size()); } case organic_mat_category::Plants: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_plants(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().plants(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().plants(idx); }; return food_pair(setter, &mPile->settings.food.plants, getter, mBuffer.food().plants_size()); } case organic_mat_category::PlantDrink: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_drink_plant(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().drink_plant(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().drink_plant(idx); }; return food_pair(setter, &mPile->settings.food.drink_plant, getter, mBuffer.food().drink_plant_size()); } case organic_mat_category::CreatureDrink: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_drink_animal(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().drink_animal(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().drink_animal(idx); }; return food_pair(setter, &mPile->settings.food.drink_animal, getter, mBuffer.food().drink_animal_size()); } case organic_mat_category::PlantCheese: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_cheese_plant(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().cheese_plant(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().cheese_plant(idx); }; return food_pair(setter, &mPile->settings.food.cheese_plant, getter, mBuffer.food().cheese_plant_size()); } case organic_mat_category::CreatureCheese: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_cheese_animal(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().cheese_animal(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().cheese_animal(idx); }; return food_pair(setter, &mPile->settings.food.cheese_animal, getter, mBuffer.food().cheese_animal_size()); } case organic_mat_category::Seed: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_seeds(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().seeds(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().seeds(idx); }; return food_pair(setter, &mPile->settings.food.seeds, getter, mBuffer.food().seeds_size()); } case organic_mat_category::Leaf: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_leaves(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().leaves(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().leaves(idx); }; return food_pair(setter, &mPile->settings.food.leaves, getter, mBuffer.food().leaves_size()); } case organic_mat_category::PlantPowder: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_powder_plant(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().powder_plant(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().powder_plant(idx); }; return food_pair(setter, &mPile->settings.food.powder_plant, getter, mBuffer.food().powder_plant_size()); } case organic_mat_category::CreaturePowder: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_powder_creature(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().powder_creature(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().powder_creature(idx); }; return food_pair(setter, &mPile->settings.food.powder_creature, getter, mBuffer.food().powder_creature_size()); } case organic_mat_category::Glob: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_glob(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().glob(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().glob(idx); }; return food_pair(setter, &mPile->settings.food.glob, getter, mBuffer.food().glob_size()); } case organic_mat_category::PlantLiquid: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_liquid_plant(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().liquid_plant(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().liquid_plant(idx); }; return food_pair(setter, &mPile->settings.food.liquid_plant, getter, mBuffer.food().liquid_plant_size()); } case organic_mat_category::CreatureLiquid: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_liquid_animal(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().liquid_animal(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().liquid_animal(idx); }; return food_pair(setter, &mPile->settings.food.liquid_animal, getter, mBuffer.food().liquid_animal_size()); } case organic_mat_category::MiscLiquid: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_liquid_misc(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().liquid_misc(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().liquid_misc(idx); }; return food_pair(setter, &mPile->settings.food.liquid_misc, getter, mBuffer.food().liquid_misc_size()); } case organic_mat_category::Paste: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_glob_paste(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().glob_paste(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().glob_paste(idx); }; return food_pair(setter, &mPile->settings.food.glob_paste, getter, mBuffer.food().glob_paste_size()); } case organic_mat_category::Pressed: { - FuncWriteExport setter = [=](const std::string& id) { + FuncWriteExport setter = [&](const std::string& id) { mBuffer.mutable_food()->add_glob_pressed(id); }; - FuncReadImport getter = [=](size_t idx) -> std::string { return mBuffer.food().glob_pressed(idx); }; + FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().glob_pressed(idx); }; return food_pair(setter, &mPile->settings.food.glob_pressed, getter, mBuffer.food().glob_pressed_size()); } case organic_mat_category::Leather: @@ -1551,8 +1631,6 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego } bool StockpileSerializer::write_food(StockpileSettings::FoodSet* food) { - DEBUG(log).print("food:\n"); - auto & pfood = mPile->settings.food; bool all = pfood.prepared_meals; @@ -1574,35 +1652,37 @@ bool StockpileSerializer::write_food(StockpileSettings::FoodSet* food) { void StockpileSerializer::read_food(DeserializeMode mode, const std::string& filter) { using df::enums::organic_mat_category::organic_mat_category; using traits = df::enum_traits; - if (mBuffer.has_food()) { - mPile->settings.flags.bits.food = 1; - const StockpileSettings::FoodSet food = mBuffer.food(); - DEBUG(log).print("food:\n"); - - if (food.has_prepared_meals()) - mPile->settings.food.prepared_meals = food.prepared_meals(); - else - mPile->settings.food.prepared_meals = true; - - DEBUG(log).print("prepared_meals: %d\n", mPile->settings.food.prepared_meals); - - for (int32_t mat_category = traits::first_item_value; mat_category < traits::last_item_value; ++mat_category) { - food_pair p = food_map((organic_mat_category)mat_category); - if (!p.valid) - continue; - unserialize_list_organic_mat(p.get_value, p.serialized_count, p.stockpile_values, (organic_mat_category)mat_category); - } - } - else { - for (int32_t mat_category = traits::first_item_value; mat_category < traits::last_item_value; ++mat_category) { - food_pair p = food_map((organic_mat_category)mat_category); - if (!p.valid) - continue; - p.stockpile_values->clear(); - } - mPile->settings.flags.bits.food = 0; - mPile->settings.food.prepared_meals = false; - } + + auto & pfood = mPile->settings.food; + read_category("food", mode, + std::bind(&StockpileSettings::has_food, mBuffer), + std::bind(&StockpileSettings::food, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_food, + [&]() { + pfood.prepared_meals = false; + for (int32_t mat_category = traits::first_item_value; mat_category < traits::last_item_value; ++mat_category) { + food_pair p = food_map((organic_mat_category)mat_category); + if (!p.valid) + continue; + p.stockpile_values->clear(); + } + }, + [&](bool all, char val) { + auto & bfood = mBuffer.food(); + + set_elem(all, val, bfood.prepared_meals(), pfood.prepared_meals); + + for (int32_t mat_category = traits::first_item_value; mat_category < traits::last_item_value; ++mat_category) { + food_pair p = food_map((organic_mat_category)mat_category); + if (!p.valid) + continue; + unserialize_list_organic_mat(all, val, filter, + p.get_value, p.serialized_count, *p.stockpile_values, + (organic_mat_category)mat_category); + } + }); + } static bool furniture_mat_is_allowed(const MaterialInfo& mi) { @@ -1627,69 +1707,77 @@ bool StockpileSerializer::write_furniture(StockpileSettings::FurnitureSet* furni } all = serialize_list_material( furniture_mat_is_allowed, - [=](const std::string& token) { furniture->add_mats(token); }, + [&](const std::string& token) { furniture->add_mats(token); }, pfurniture.mats) && all; all = serialize_list_other_mats( mOtherMatsFurniture.mats, - [=](const std::string& token) { furniture->add_other_mats(token); }, + [&](const std::string& token) { furniture->add_other_mats(token); }, pfurniture.other_mats) && all; all = serialize_list_quality( - [=](const std::string& token) { furniture->add_quality_core(token); }, + [&](const std::string& token) { furniture->add_quality_core(token); }, pfurniture.quality_core) && all; all = serialize_list_quality( - [=](const std::string& token) { furniture->add_quality_total(token); }, + [&](const std::string& token) { furniture->add_quality_total(token); }, pfurniture.quality_total) && all; return all; } void StockpileSerializer::read_furniture(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_furniture()) { - mPile->settings.flags.bits.furniture = 1; - const StockpileSettings::FurnitureSet furniture = mBuffer.furniture(); - DEBUG(log).print("furniture:\n"); - - // type - using df::enums::furniture_type::furniture_type; - df::enum_traits type_traits; - mPile->settings.furniture.type.clear(); - mPile->settings.furniture.type.resize(type_traits.last_item_value + 1, '\0'); - if (furniture.type_size() > 0) { - for (int i = 0; i < furniture.type_size(); ++i) { - const std::string type = furniture.type(i); - df::enum_traits::base_type idx = linear_index(type_traits, type); - DEBUG(log).print("type %d is %s\n", idx, type.c_str()); - if (idx < 0 || size_t(idx) >= mPile->settings.furniture.type.size()) { - WARN(log).print("furniture type index invalid %s, idx=%d\n", type.c_str(), idx); - continue; + auto & pfurniture = mPile->settings.furniture; + read_category("furniture", mode, + std::bind(&StockpileSettings::has_furniture, mBuffer), + std::bind(&StockpileSettings::furniture, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_furniture, + [&]() { + pfurniture.type.clear(); + pfurniture.other_mats.clear(); + pfurniture.mats.clear(); + quality_clear(pfurniture.quality_core); + quality_clear(pfurniture.quality_total); + }, + [&](bool all, char val) { + auto & bfurniture = mBuffer.furniture(); + + using df::enums::furniture_type::furniture_type; + df::enum_traits type_traits; + size_t num_elems = type_traits.last_item_value + 1; + pfurniture.type.resize(num_elems, '\0'); + + if (all) { + for (size_t idx = 0; idx < num_elems; ++idx) { + string id = ENUM_KEY_STR(furniture_type, (df::furniture_type)idx); + set_filter_elem(filter, val, id, idx, pfurniture.type.at(idx)); + } + } else { + for (int i = 0; i < bfurniture.type_size(); ++i) { + const std::string token = bfurniture.type(i); + df::enum_traits::base_type idx = linear_index(type_traits, token); + if (idx < 0 || size_t(idx) >= pfurniture.type.size()) { + WARN(log).print("furniture type index invalid %s, idx=%d\n", token.c_str(), idx); + continue; + } + set_filter_elem(filter, val, token, idx, pfurniture.type.at(idx)); } - mPile->settings.furniture.type.at(idx) = 1; } - } - unserialize_list_material( - furniture_mat_is_allowed, - [=](const size_t& idx) -> const std::string& { return furniture.mats(idx); }, - furniture.mats_size(), &mPile->settings.furniture.mats); + unserialize_list_material(all, val, filter, furniture_mat_is_allowed, + [&](const size_t& idx) -> const std::string& { return bfurniture.mats(idx); }, + bfurniture.mats_size(), pfurniture.mats); - unserialize_list_other_mats( - mOtherMatsFurniture.mats, [=](const size_t& idx) -> const std::string& { return furniture.other_mats(idx); }, - furniture.other_mats_size(), &mPile->settings.furniture.other_mats); + unserialize_list_other_mats(all, val, filter, + mOtherMatsFurniture.mats, [&](const size_t& idx) -> const std::string& { return bfurniture.other_mats(idx); }, + bfurniture.other_mats_size(), pfurniture.other_mats); - unserialize_list_quality([=](const size_t& idx) -> const std::string& { return furniture.quality_core(idx); }, - furniture.quality_core_size(), mPile->settings.furniture.quality_core); + unserialize_list_quality(all, val, filter, + [&](const size_t& idx) -> const std::string& { return bfurniture.quality_core(idx); }, + bfurniture.quality_core_size(), pfurniture.quality_core); - unserialize_list_quality([=](const size_t& idx) -> const std::string& { return furniture.quality_total(idx); }, - furniture.quality_total_size(), mPile->settings.furniture.quality_total); - } - else { - mPile->settings.flags.bits.furniture = 0; - mPile->settings.furniture.type.clear(); - mPile->settings.furniture.other_mats.clear(); - mPile->settings.furniture.mats.clear(); - quality_clear(mPile->settings.furniture.quality_core); - quality_clear(mPile->settings.furniture.quality_total); - } + unserialize_list_quality(all, val, filter, + [&](const size_t& idx) -> const std::string& { return bfurniture.quality_total(idx); }, + bfurniture.quality_total_size(), pfurniture.quality_total); + }); } static bool gem_mat_is_allowed(const MaterialInfo& mi) { @@ -1711,12 +1799,12 @@ bool StockpileSerializer::write_gems(StockpileSettings::GemsSet* gems) { bool all = serialize_list_material( gem_mat_is_allowed, - [=](const std::string& token) { gems->add_rough_mats(token); }, + [&](const std::string& token) { gems->add_rough_mats(token); }, pgems.rough_mats); all = serialize_list_material( gem_cut_mat_is_allowed, - [=](const std::string& token) { gems->add_cut_mats(token); }, + [&](const std::string& token) { gems->add_cut_mats(token); }, pgems.cut_mats) && all; for (size_t i = 0; i < pgems.rough_other_mats.size(); ++i) { @@ -1749,121 +1837,108 @@ bool StockpileSerializer::write_gems(StockpileSettings::GemsSet* gems) { } void StockpileSerializer::read_gems(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_gems()) { - mPile->settings.flags.bits.gems = 1; - const StockpileSettings::GemsSet gems = mBuffer.gems(); - DEBUG(log).print("gems:\n"); - - unserialize_list_material( - gem_mat_is_allowed, - [=](const size_t& idx) -> const std::string& { return gems.rough_mats(idx); }, - gems.rough_mats_size(), &mPile->settings.gems.rough_mats); - - unserialize_list_material( - gem_cut_mat_is_allowed, - [=](const size_t& idx) -> const std::string& { return gems.cut_mats(idx); }, - gems.cut_mats_size(), &mPile->settings.gems.cut_mats); - - const size_t builtin_size = std::extentraws.mat_table.builtin)>::value; - // rough other - mPile->settings.gems.rough_other_mats.clear(); - mPile->settings.gems.rough_other_mats.resize(builtin_size, '\0'); - for (int i = 0; i < gems.rough_other_mats_size(); ++i) { - const std::string token = gems.rough_other_mats(i); - MaterialInfo mi; - mi.find(token); - if (!mi.isValid() || size_t(mi.type) >= builtin_size) { - WARN(log).print("invalid gem mat %s idx=%d\n", token.c_str(), mi.type); - continue; - } - DEBUG(log).print("rough_other mats %d is %s\n", mi.type, token.c_str()); - mPile->settings.gems.rough_other_mats.at(mi.type) = 1; - } - - // cut other - mPile->settings.gems.cut_other_mats.clear(); - mPile->settings.gems.cut_other_mats.resize(builtin_size, '\0'); - for (int i = 0; i < gems.cut_other_mats_size(); ++i) { - const std::string token = gems.cut_other_mats(i); - MaterialInfo mi; - mi.find(token); - if (!mi.isValid() || size_t(mi.type) >= builtin_size) { - WARN(log).print("invalid gem mat %s idx=%d\n", token.c_str(), mi.type); - continue; + auto & pgems = mPile->settings.gems; + read_category("gems", mode, + std::bind(&StockpileSettings::has_gems, mBuffer), + std::bind(&StockpileSettings::gems, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_gems, + [&]() { + pgems.cut_other_mats.clear(); + pgems.cut_mats.clear(); + pgems.rough_other_mats.clear(); + pgems.rough_mats.clear(); + }, + [&](bool all, char val) { + auto & bgems = mBuffer.gems(); + + unserialize_list_material(all, val, filter, gem_mat_is_allowed, + [&](const size_t& idx) -> const std::string& { return bgems.rough_mats(idx); }, + bgems.rough_mats_size(),pgems.rough_mats); + + unserialize_list_material(all, val, filter, gem_cut_mat_is_allowed, + [&](const size_t& idx) -> const std::string& { return bgems.cut_mats(idx); }, + bgems.cut_mats_size(), pgems.cut_mats); + + const size_t builtin_size = std::extentraws.mat_table.builtin)>::value; + pgems.rough_other_mats.resize(builtin_size, '\0'); + pgems.cut_other_mats.resize(builtin_size, '\0'); + if (all) { + for (size_t idx = 0; idx < builtin_size; ++idx) { + MaterialInfo mi; + mi.decode(0, idx); + set_filter_elem(filter, val, mi.toString(), idx, pgems.rough_other_mats.at(idx)); + set_filter_elem(filter, val, mi.toString(), idx, pgems.cut_other_mats.at(idx)); + } + return; + } else { + MaterialInfo mi; + for (size_t i = 0; i < builtin_size; ++i) { + string id = bgems.rough_other_mats(i); + if (mi.find(id) && mi.isValid() && size_t(mi.type) < builtin_size) + set_filter_elem(filter, val, id, mi.type, pgems.rough_other_mats.at(mi.type)); + id = bgems.cut_other_mats(i); + if (mi.find(id) && mi.isValid() && size_t(mi.type) < builtin_size) + set_filter_elem(filter, val, id, mi.type, pgems.cut_other_mats.at(mi.type)); + } } - DEBUG(log).print("cut_other mats %d is %s\n", mi.type, token.c_str()); - mPile->settings.gems.cut_other_mats.at(mi.type) = 1; - } - } - else { - mPile->settings.flags.bits.gems = 0; - mPile->settings.gems.cut_other_mats.clear(); - mPile->settings.gems.cut_mats.clear(); - mPile->settings.gems.rough_other_mats.clear(); - mPile->settings.gems.rough_mats.clear(); - } + }); } bool StockpileSerializer::write_leather(StockpileSettings::LeatherSet* leather) { return serialize_list_organic_mat( - [=](const std::string& id) { leather->add_mats(id); }, + [&](const std::string& id) { leather->add_mats(id); }, &mPile->settings.leather.mats, organic_mat_category::Leather); } void StockpileSerializer::read_leather(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_leather()) { - mPile->settings.flags.bits.leather = 1; - const StockpileSettings::LeatherSet leather = mBuffer.leather(); - DEBUG(log).print("leather:\n"); + auto & pleather = mPile->settings.leather; + read_category("leather", mode, + std::bind(&StockpileSettings::has_leather, mBuffer), + std::bind(&StockpileSettings::leather, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_leather, + [&]() { + pleather.mats.clear(); + }, + [&](bool all, char val) { + auto & bleather = mBuffer.leather(); - unserialize_list_organic_mat([=](size_t idx) -> std::string { return leather.mats(idx); }, - leather.mats_size(), &mPile->settings.leather.mats, organic_mat_category::Leather); - } - else { - mPile->settings.flags.bits.leather = 0; - mPile->settings.leather.mats.clear(); - } + unserialize_list_organic_mat(all, val, filter, + [&](size_t idx) -> std::string { return bleather.mats(idx); }, + bleather.mats_size(), pleather.mats, organic_mat_category::Leather); + }); } bool StockpileSerializer::write_corpses(StockpileSettings::CorpsesSet* corpses) { - bool all = true; - - return all; + return serialize_list_creature( + [&](const std::string& token) { corpses->add_corpses(token); }, + mPile->settings.corpses.corpses); } void StockpileSerializer::read_corpses(DeserializeMode mode, const std::string& filter) { - -} - -static bool refuse_creature_is_allowed(const df::creature_raw* raw) { - if (!raw) - return false; - // wagon and generated creatures not allowed, except angels - const bool is_wagon = raw->creature_id == "EQUIPMENT_WAGON"; - const bool is_generated = raw->flags.is_set(creature_raw_flags::GENERATED); - const bool is_angel = is_generated && raw->creature_id.find("DIVINE_") != std::string::npos; - return !is_wagon && !(is_generated && !is_angel); -} - -static bool refuse_write_helper(std::function add_value, const vector& list) { - bool all = true; - for (size_t i = 0; i < list.size(); ++i) { - if (!list.at(i)) { - all = false; - continue; - } - df::creature_raw* r = find_creature(i); - // skip forgotten beasts, titans, demons, and night creatures - if (!refuse_creature_is_allowed(r)) - continue; - DEBUG(log).print("creature %s %zd\n", r->creature_id.c_str(), i); - add_value(r->creature_id); - } - return all; + auto & pcorpses = mPile->settings.corpses; + read_category("corpses", mode, + std::bind(&StockpileSettings::has_corpses_v50, mBuffer), + std::bind(&StockpileSettings::corpses_v50, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_corpses, + [&]() { + pcorpses.corpses.clear(); + }, + [&](bool all, char val) { + auto & bcorpses = mBuffer.corpses_v50(); + unserialize_list_creature(all, val, filter, + [&](const size_t& idx) -> const std::string& { return bcorpses.corpses(idx); }, + bcorpses.corpses_size(), pcorpses.corpses); + }); } static bool refuse_type_is_allowed(item_type::item_type type) { - if (type == item_type::NONE || type == item_type::BAR || type == item_type::SMALLGEM || type == item_type::BLOCKS || type == item_type::ROUGH || type == item_type::BOULDER || type == item_type::CORPSE || type == item_type::CORPSEPIECE || type == item_type::ROCK || type == item_type::ORTHOPEDIC_CAST) + if (type == item_type::NONE || type == item_type::BAR || type == item_type::SMALLGEM + || type == item_type::BLOCKS || type == item_type::ROUGH || type == item_type::BOULDER + || type == item_type::CORPSE || type == item_type::CORPSEPIECE || type == item_type::ROCK + || type == item_type::ORTHOPEDIC_CAST) return false; return true; } @@ -1872,128 +1947,133 @@ bool StockpileSerializer::write_refuse(StockpileSettings::RefuseSet* refuse) { auto & prefuse = mPile->settings.refuse; bool all = prefuse.fresh_raw_hide && prefuse.rotten_raw_hide; - DEBUG(log).print("refuse:\n"); refuse->set_fresh_raw_hide(prefuse.fresh_raw_hide); refuse->set_rotten_raw_hide(prefuse.rotten_raw_hide); - DEBUG(log).print("getting types\n"); - all = serialize_list_item_type( - refuse_type_is_allowed, - [=](const std::string& token) { - DEBUG(log).print("adding type: %s\n", token.c_str()); - refuse->add_type(token); - }, + all = serialize_list_item_type(refuse_type_is_allowed, + [&](const std::string& token) { refuse->add_type(token); }, prefuse.type) && all; - all = refuse_write_helper([=](const std::string& id) { refuse->add_corpses(id); }, + all = serialize_list_creature( + [&](const std::string& token) { refuse->add_corpses(token); }, prefuse.corpses) && all; - all = refuse_write_helper([=](const std::string& id) { refuse->add_body_parts(id); }, + all = serialize_list_creature( + [&](const std::string& token) { refuse->add_body_parts(token); }, prefuse.body_parts) && all; - all = refuse_write_helper([=](const std::string& id) { refuse->add_skulls(id); }, + all = serialize_list_creature( + [&](const std::string& token) { refuse->add_skulls(token); }, prefuse.skulls) && all; - all = refuse_write_helper([=](const std::string& id) { refuse->add_bones(id); }, + all = serialize_list_creature( + [&](const std::string& token) { refuse->add_bones(token); }, prefuse.bones) && all; - all = refuse_write_helper([=](const std::string& id) { refuse->add_hair(id); }, + all = serialize_list_creature( + [&](const std::string& token) { refuse->add_hair(token); }, prefuse.hair) && all; - all = refuse_write_helper([=](const std::string& id) { refuse->add_shells(id); }, + all = serialize_list_creature( + [&](const std::string& token) { refuse->add_shells(token); }, prefuse.shells) && all; - all = refuse_write_helper([=](const std::string& id) { refuse->add_teeth(id); }, + all = serialize_list_creature( + [&](const std::string& token) { refuse->add_teeth(token); }, prefuse.teeth) && all; - all = refuse_write_helper([=](const std::string& id) { refuse->add_horns(id); }, + all = serialize_list_creature( + [&](const std::string& token) { refuse->add_horns(token); }, prefuse.horns) && all; return all; } -static void refuse_read_helper(std::function get_value, size_t list_size, std::vector* pile_list) { - pile_list->clear(); - pile_list->resize(world->raws.creatures.all.size(), '\0'); - if (list_size > 0) { - for (size_t i = 0; i < list_size; ++i) { - const std::string creature_id = get_value(i); - const int idx = find_creature(creature_id); - const df::creature_raw* creature = find_creature(idx); - if (idx < 0 || !refuse_creature_is_allowed(creature) || size_t(idx) >= pile_list->size()) { - WARN(log).print("invalid refuse creature %s, idx=%d\n", creature_id.c_str(), idx); - continue; - } - DEBUG(log).print("creature %d is %s\n", idx, creature_id.c_str()); - pile_list->at(idx) = 1; - } - } -} - void StockpileSerializer::read_refuse(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_refuse()) { - mPile->settings.flags.bits.refuse = 1; - const StockpileSettings::RefuseSet refuse = mBuffer.refuse(); - DEBUG(log).print("refuse:\n"); - DEBUG(log).print(" fresh hide %d\n", refuse.fresh_raw_hide()); - DEBUG(log).print(" rotten hide %d\n", refuse.rotten_raw_hide()); - mPile->settings.refuse.fresh_raw_hide = refuse.fresh_raw_hide(); - mPile->settings.refuse.rotten_raw_hide = refuse.rotten_raw_hide(); - - unserialize_list_item_type( - refuse_type_is_allowed, - [=](const size_t& idx) -> const std::string& { return refuse.type(idx); }, - refuse.type_size(), &mPile->settings.refuse.type); - - DEBUG(log).print(" corpses\n"); - refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.corpses(idx); }, - refuse.corpses_size(), &mPile->settings.refuse.corpses); - - DEBUG(log).print(" body_parts\n"); - refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.body_parts(idx); }, - refuse.body_parts_size(), &mPile->settings.refuse.body_parts); - - DEBUG(log).print(" skulls\n"); - refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.skulls(idx); }, - refuse.skulls_size(), &mPile->settings.refuse.skulls); - - DEBUG(log).print(" bones\n"); - refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.bones(idx); }, - refuse.bones_size(), &mPile->settings.refuse.bones); - - DEBUG(log).print(" hair\n"); - refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.hair(idx); }, - refuse.hair_size(), &mPile->settings.refuse.hair); - - DEBUG(log).print(" shells\n"); - refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.shells(idx); }, - refuse.shells_size(), &mPile->settings.refuse.shells); - - DEBUG(log).print(" teeth\n"); - refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.teeth(idx); }, - refuse.teeth_size(), &mPile->settings.refuse.teeth); - - DEBUG(log).print(" horns\n"); - refuse_read_helper([=](const size_t& idx) -> const std::string& { return refuse.horns(idx); }, - refuse.horns_size(), &mPile->settings.refuse.horns); - } - else { - mPile->settings.flags.bits.refuse = 0; - mPile->settings.refuse.type.clear(); - mPile->settings.refuse.corpses.clear(); - mPile->settings.refuse.body_parts.clear(); - mPile->settings.refuse.skulls.clear(); - mPile->settings.refuse.bones.clear(); - mPile->settings.refuse.hair.clear(); - mPile->settings.refuse.shells.clear(); - mPile->settings.refuse.teeth.clear(); - mPile->settings.refuse.horns.clear(); - mPile->settings.refuse.fresh_raw_hide = false; - mPile->settings.refuse.rotten_raw_hide = false; - } + auto & prefuse = mPile->settings.refuse; + read_category("refuse", mode, + std::bind(&StockpileSettings::has_refuse, mBuffer), + std::bind(&StockpileSettings::refuse, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_refuse, + [&]() { + prefuse.fresh_raw_hide = false; + prefuse.rotten_raw_hide = false; + prefuse.type.clear(); + prefuse.corpses.clear(); + prefuse.body_parts.clear(); + prefuse.skulls.clear(); + prefuse.bones.clear(); + prefuse.hair.clear(); + prefuse.shells.clear(); + prefuse.teeth.clear(); + prefuse.horns.clear(); + }, + [&](bool all, char val) { + auto & brefuse = mBuffer.refuse(); + + set_elem(all, val, brefuse.fresh_raw_hide(), prefuse.fresh_raw_hide); + set_elem(all, val, brefuse.rotten_raw_hide(), prefuse.rotten_raw_hide); + + unserialize_list_item_type(all, val, filter, refuse_type_is_allowed, + [&](const size_t& idx) -> const string& { return brefuse.type(idx); }, + brefuse.type_size(), prefuse.type); + + unserialize_list_creature(all, val, filter, + [&](const size_t& idx) -> const string& { return brefuse.corpses(idx); }, + brefuse.corpses_size(), prefuse.corpses); + unserialize_list_creature(all, val, filter, + [&](const size_t& idx) -> const string& { return brefuse.body_parts(idx); }, + brefuse.body_parts_size(), prefuse.body_parts); + unserialize_list_creature(all, val, filter, + [&](const size_t& idx) -> const string& { return brefuse.skulls(idx); }, + brefuse.skulls_size(), prefuse.skulls); + unserialize_list_creature(all, val, filter, + [&](const size_t& idx) -> const string& { return brefuse.bones(idx); }, + brefuse.bones_size(), prefuse.bones); + unserialize_list_creature(all, val, filter, + [&](const size_t& idx) -> const string& { return brefuse.hair(idx); }, + brefuse.hair_size(), prefuse.hair); + unserialize_list_creature(all, val, filter, + [&](const size_t& idx) -> const string& { return brefuse.shells(idx); }, + brefuse.shells_size(), prefuse.shells); + unserialize_list_creature(all, val, filter, + [&](const size_t& idx) -> const string& { return brefuse.teeth(idx); }, + brefuse.teeth_size(), prefuse.teeth); + unserialize_list_creature(all, val, filter, + [&](const size_t& idx) -> const string& { return brefuse.horns(idx); }, + brefuse.horns_size(), prefuse.horns); + }); + } bool StockpileSerializer::write_sheet(StockpileSettings::SheetSet* sheet) { - bool all = true; + bool all = serialize_list_organic_mat( + [&](const std::string& token) { sheet->add_paper(token); }, + &mPile->settings.sheet.paper, organic_mat_category::Paper); + + all = serialize_list_organic_mat( + [&](const std::string& token) { sheet->add_parchment(token); }, + &mPile->settings.sheet.parchment, organic_mat_category::Parchment) && all; return all; } void StockpileSerializer::read_sheet(DeserializeMode mode, const std::string& filter) { + auto & psheet = mPile->settings.sheet; + read_category("sheet", mode, + std::bind(&StockpileSettings::has_sheet, mBuffer), + std::bind(&StockpileSettings::sheet, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_sheet, + [&]() { + psheet.paper.clear(); + psheet.parchment.clear(); + }, + [&](bool all, char val) { + auto & bsheet = mBuffer.sheet(); + + unserialize_list_organic_mat(all, val, filter, + [&](size_t idx) -> std::string { return bsheet.paper(idx); }, + bsheet.paper_size(), psheet.paper, organic_mat_category::Paper); + unserialize_list_organic_mat(all, val, filter, + [&](size_t idx) -> std::string { return bsheet.parchment(idx); }, + bsheet.parchment_size(), psheet.parchment, organic_mat_category::Parchment); + }); } static bool stone_is_allowed(const MaterialInfo& mi) { @@ -2007,25 +2087,27 @@ static bool stone_is_allowed(const MaterialInfo& mi) { bool StockpileSerializer::write_stone(StockpileSettings::StoneSet* stone) { return serialize_list_material( stone_is_allowed, - [=](const std::string& token) { stone->add_mats(token); }, + [&](const std::string& token) { stone->add_mats(token); }, mPile->settings.stone.mats); } void StockpileSerializer::read_stone(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_stone()) { - mPile->settings.flags.bits.stone = 1; - const StockpileSettings::StoneSet stone = mBuffer.stone(); - DEBUG(log).print("stone:\n"); + auto & pstone = mPile->settings.stone; + read_category("stone", mode, + std::bind(&StockpileSettings::has_stone, mBuffer), + std::bind(&StockpileSettings::stone, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_stone, + [&]() { + pstone.mats.clear(); + }, + [&](bool all, char val) { + auto & bstone = mBuffer.stone(); - unserialize_list_material( - stone_is_allowed, - [=](const size_t& idx) -> const std::string& { return stone.mats(idx); }, - stone.mats_size(), &mPile->settings.stone.mats); - } - else { - mPile->settings.flags.bits.stone = 0; - mPile->settings.stone.mats.clear(); - } + unserialize_list_material(all, val, filter, stone_is_allowed, + [&](const size_t& idx) -> const std::string& { return bstone.mats(idx); }, + bstone.mats_size(), pstone.mats); + }); } static bool weapons_mat_is_allowed(const MaterialInfo& mi) { @@ -2040,81 +2122,83 @@ bool StockpileSerializer::write_weapons(StockpileSettings::WeaponsSet* weapons) weapons->set_usable(pweapons.usable); all = serialize_list_itemdef( - [=](const std::string& token) { weapons->add_weapon_type(token); }, + [&](const std::string& token) { weapons->add_weapon_type(token); }, pweapons.weapon_type, std::vector(world->raws.itemdefs.weapons.begin(), world->raws.itemdefs.weapons.end()), item_type::WEAPON) && all; all = serialize_list_itemdef( - [=](const std::string& token) { weapons->add_trapcomp_type(token); }, + [&](const std::string& token) { weapons->add_trapcomp_type(token); }, pweapons.trapcomp_type, std::vector(world->raws.itemdefs.trapcomps.begin(), world->raws.itemdefs.trapcomps.end()), item_type::TRAPCOMP) && all; all = serialize_list_material( weapons_mat_is_allowed, - [=](const std::string& token) { weapons->add_mats(token); }, + [&](const std::string& token) { weapons->add_mats(token); }, pweapons.mats) && all; all = serialize_list_other_mats( mOtherMatsWeaponsArmor.mats, - [=](const std::string& token) { weapons->add_other_mats(token); }, + [&](const std::string& token) { weapons->add_other_mats(token); }, pweapons.other_mats) && all; all = serialize_list_quality( - [=](const std::string& token) { weapons->add_quality_core(token); }, + [&](const std::string& token) { weapons->add_quality_core(token); }, pweapons.quality_core) && all; all = serialize_list_quality( - [=](const std::string& token) { weapons->add_quality_total(token); }, + [&](const std::string& token) { weapons->add_quality_total(token); }, pweapons.quality_total) && all; return all; } void StockpileSerializer::read_weapons(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_weapons()) { - mPile->settings.flags.bits.weapons = 1; - const StockpileSettings::WeaponsSet weapons = mBuffer.weapons(); - DEBUG(log).print("weapons: \n"); + auto & pweapons = mPile->settings.weapons; + read_category("weapons", mode, + std::bind(&StockpileSettings::has_weapons, mBuffer), + std::bind(&StockpileSettings::weapons, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_weapons, + [&]() { + pweapons.weapon_type.clear(); + pweapons.trapcomp_type.clear(); + pweapons.other_mats.clear(); + pweapons.mats.clear(); + quality_clear(pweapons.quality_core); + quality_clear(pweapons.quality_total); + }, + [&](bool all, char val) { + auto & bweapons = mBuffer.weapons(); - bool unusable = weapons.unusable(); - bool usable = weapons.usable(); - DEBUG(log).print("unusable %d\n", unusable); - DEBUG(log).print("usable %d\n", usable); - mPile->settings.weapons.unusable = unusable; - mPile->settings.weapons.usable = usable; + set_elem(all, val, bweapons.unusable(), pweapons.unusable); + set_elem(all, val, bweapons.usable(), pweapons.usable); - unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return weapons.weapon_type(idx); }, - weapons.weapon_type_size(), &mPile->settings.weapons.weapon_type, item_type::WEAPON); + unserialize_list_itemdef(all, val, filter, + [&](const size_t& idx) -> const std::string& { return bweapons.weapon_type(idx); }, + bweapons.weapon_type_size(), pweapons.weapon_type, item_type::WEAPON); - unserialize_list_itemdef([=](const size_t& idx) -> const std::string& { return weapons.trapcomp_type(idx); }, - weapons.trapcomp_type_size(), &mPile->settings.weapons.trapcomp_type, item_type::TRAPCOMP); + unserialize_list_itemdef(all, val, filter, + [&](const size_t& idx) -> const std::string& { return bweapons.trapcomp_type(idx); }, + bweapons.trapcomp_type_size(), pweapons.trapcomp_type, item_type::TRAPCOMP); - unserialize_list_material( - weapons_mat_is_allowed, - [=](const size_t& idx) -> const std::string& { return weapons.mats(idx); }, - weapons.mats_size(), &mPile->settings.weapons.mats); + unserialize_list_material(all, val, filter, weapons_mat_is_allowed, + [&](const size_t& idx) -> const std::string& { return bweapons.mats(idx); }, + bweapons.mats_size(), pweapons.mats); - unserialize_list_other_mats( - mOtherMatsWeaponsArmor.mats, [=](const size_t& idx) -> const std::string& { return weapons.other_mats(idx); }, - weapons.other_mats_size(), &mPile->settings.weapons.other_mats); + unserialize_list_other_mats(all, val, filter, mOtherMatsWeaponsArmor.mats, + [&](const size_t& idx) -> const std::string& { return bweapons.other_mats(idx); }, + bweapons.other_mats_size(), pweapons.other_mats); - unserialize_list_quality([=](const size_t& idx) -> const std::string& { return weapons.quality_core(idx); }, - weapons.quality_core_size(), mPile->settings.weapons.quality_core); + unserialize_list_quality(all, val, filter, + [&](const size_t& idx) -> const std::string& { return bweapons.quality_core(idx); }, + bweapons.quality_core_size(), pweapons.quality_core); - unserialize_list_quality([=](const size_t& idx) -> const std::string& { return weapons.quality_total(idx); }, - weapons.quality_total_size(), mPile->settings.weapons.quality_total); - } - else { - mPile->settings.flags.bits.weapons = 0; - mPile->settings.weapons.weapon_type.clear(); - mPile->settings.weapons.trapcomp_type.clear(); - mPile->settings.weapons.other_mats.clear(); - mPile->settings.weapons.mats.clear(); - quality_clear(mPile->settings.weapons.quality_core); - quality_clear(mPile->settings.weapons.quality_total); - } + unserialize_list_quality(all, val, filter, + [&](const size_t& idx) -> const std::string& { return bweapons.quality_total(idx); }, + bweapons.quality_total_size(), pweapons.quality_total); + }); } static bool wood_mat_is_allowed(const df::plant_raw* plant) { @@ -2138,26 +2222,36 @@ bool StockpileSerializer::write_wood(StockpileSettings::WoodSet* wood) { } void StockpileSerializer::read_wood(DeserializeMode mode, const std::string& filter) { - if (mBuffer.has_wood()) { - mPile->settings.flags.bits.wood = 1; - const StockpileSettings::WoodSet wood = mBuffer.wood(); - DEBUG(log).print("wood: \n"); - - mPile->settings.wood.mats.clear(); - mPile->settings.wood.mats.resize(world->raws.plants.all.size(), '\0'); - for (int i = 0; i < wood.mats_size(); ++i) { - const std::string token = wood.mats(i); - const size_t idx = find_plant(token); - if (idx < 0 || idx >= mPile->settings.wood.mats.size()) { - WARN(log).print("wood mat index invalid %s idx=%zd\n", token.c_str(), idx); - continue; + auto & pwood = mPile->settings.wood; + read_category("wood", mode, + std::bind(&StockpileSettings::has_wood, mBuffer), + std::bind(&StockpileSettings::wood, mBuffer), + mPile->settings.flags.whole, + mPile->settings.flags.mask_wood, + [&]() { + pwood.mats.clear(); + }, + [&](bool all, char val) { + auto & bwood = mBuffer.wood(); + + size_t num_elems = world->raws.plants.all.size(); + pwood.mats.resize(num_elems, '\0'); + + if (all) { + for (size_t idx = 0; idx < num_elems; ++idx) { + string id = world->raws.plants.all[idx]->id; + set_filter_elem(filter, val, id, idx, pwood.mats.at(idx)); + } + } else { + for (int i = 0; i < bwood.mats_size(); ++i) { + const std::string token = bwood.mats(i); + const size_t idx = find_plant(token); + if (idx < 0 || (size_t)idx >= num_elems) { + WARN(log).print("wood mat index invalid %s idx=%zd\n", token.c_str(), idx); + continue; + } + set_filter_elem(filter, val, token, idx, pwood.mats.at(idx)); + } } - DEBUG(log).print("plant %zd is %s\n", idx, token.c_str()); - mPile->settings.wood.mats.at(idx) = 1; - } - } - else { - mPile->settings.flags.bits.wood = 0; - mPile->settings.wood.mats.clear(); - } + }); } diff --git a/plugins/stockpiles/proto/stockpiles.proto b/plugins/stockpiles/proto/stockpiles.proto index 66815335b..681e7d927 100644 --- a/plugins/stockpiles/proto/stockpiles.proto +++ b/plugins/stockpiles/proto/stockpiles.proto @@ -148,9 +148,12 @@ message StockpileSettings { } message CorpsesSet { optional bool all = 1; + repeated string corpses = 2; } message SheetSet { optional bool all = 1; + repeated string paper = 2; + repeated string parchment = 3; } // general settings From f13df882b6f06978cd9c8c05b29ab3ecd1269fe0 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 15:41:34 -0700 Subject: [PATCH 018/115] properly filter when setting gems --- plugins/stockpiles/StockpileSerializer.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/plugins/stockpiles/StockpileSerializer.cpp b/plugins/stockpiles/StockpileSerializer.cpp index 1ce6b65b1..04b046a3e 100644 --- a/plugins/stockpiles/StockpileSerializer.cpp +++ b/plugins/stockpiles/StockpileSerializer.cpp @@ -1866,9 +1866,13 @@ void StockpileSerializer::read_gems(DeserializeMode mode, const std::string& fil if (all) { for (size_t idx = 0; idx < builtin_size; ++idx) { MaterialInfo mi; - mi.decode(0, idx); - set_filter_elem(filter, val, mi.toString(), idx, pgems.rough_other_mats.at(idx)); - set_filter_elem(filter, val, mi.toString(), idx, pgems.cut_other_mats.at(idx)); + mi.decode(idx, -1); + if (gem_other_mat_is_allowed(mi)) + set_filter_elem(filter, val, mi.getToken(), idx, pgems.rough_other_mats.at(idx)); + if (!mi.isValid()) + mi.decode(0, idx); + if (gem_other_mat_is_allowed(mi)) + set_filter_elem(filter, val, mi.getToken(), idx, pgems.cut_other_mats.at(idx)); } return; } else { From 284d80b0765fd8937bb746564b4137f3e54c93f7 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 15:45:07 -0700 Subject: [PATCH 019/115] rename some leftover categories --- ...iege_ammo.dfstock => category_furniture.dfstock} | Bin ...tegory_sheet.dfstock => category_sheets.dfstock} | Bin ..._components.dfstock => category_weapons.dfstock} | Bin .../{woodprefix.dfstock => category_wood.dfstock} | Bin 4 files changed, 0 insertions(+), 0 deletions(-) rename data/stockpiles/{category_furniture_siege_ammo.dfstock => category_furniture.dfstock} (100%) rename data/stockpiles/{category_sheet.dfstock => category_sheets.dfstock} (100%) rename data/stockpiles/{category_weapons_trap_components.dfstock => category_weapons.dfstock} (100%) rename data/stockpiles/{woodprefix.dfstock => category_wood.dfstock} (100%) diff --git a/data/stockpiles/category_furniture_siege_ammo.dfstock b/data/stockpiles/category_furniture.dfstock similarity index 100% rename from data/stockpiles/category_furniture_siege_ammo.dfstock rename to data/stockpiles/category_furniture.dfstock diff --git a/data/stockpiles/category_sheet.dfstock b/data/stockpiles/category_sheets.dfstock similarity index 100% rename from data/stockpiles/category_sheet.dfstock rename to data/stockpiles/category_sheets.dfstock diff --git a/data/stockpiles/category_weapons_trap_components.dfstock b/data/stockpiles/category_weapons.dfstock similarity index 100% rename from data/stockpiles/category_weapons_trap_components.dfstock rename to data/stockpiles/category_weapons.dfstock diff --git a/data/stockpiles/woodprefix.dfstock b/data/stockpiles/category_wood.dfstock similarity index 100% rename from data/stockpiles/woodprefix.dfstock rename to data/stockpiles/category_wood.dfstock From c2a7de232e15edd1c83bd1dfd39f7a73d1ba1acd Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 15:45:29 -0700 Subject: [PATCH 020/115] use new "all" format categories --- data/stockpiles/category_ammo.dfstock | Bin 1015 -> 4 bytes data/stockpiles/category_animals.dfstock | 71 +- data/stockpiles/category_armor.dfstock | Bin 2040 -> 5 bytes data/stockpiles/category_bars_blocks.dfstock | Bin 3450 -> 4 bytes data/stockpiles/category_cloth.dfstock | 142 +- data/stockpiles/category_coins.dfstock | Bin 7467 -> 4 bytes data/stockpiles/category_corpses.dfstock | Bin 21 -> 5 bytes .../category_finished_goods.dfstock | Bin 5995 -> 4 bytes data/stockpiles/category_food.dfstock | 18620 +--------------- data/stockpiles/category_furniture.dfstock | Bin 3259 -> 4 bytes data/stockpiles/category_gems.dfstock | Bin 7728 -> 4 bytes data/stockpiles/category_leather.dfstock | 1364 +- data/stockpiles/category_refuse.dfstock | 584 +- data/stockpiles/category_sheets.dfstock | Bin 21 -> 5 bytes data/stockpiles/category_stone.dfstock | Bin 1832 -> 4 bytes data/stockpiles/category_weapons.dfstock | Bin 3838 -> 5 bytes data/stockpiles/category_wood.dfstock | Bin 674 -> 4 bytes 17 files changed, 5 insertions(+), 20776 deletions(-) diff --git a/data/stockpiles/category_ammo.dfstock b/data/stockpiles/category_ammo.dfstock index 744b76cb4ad5dddc46b0881fb390fbf943f0d263..55a20e7e65d1873e449810e03d7e7ce96f9141dd 100644 GIT binary patch literal 4 LcmZ=_GGGJ%0doL$ literal 1015 zcmZvZK~LK-6vt}`iLQukbS-o_=9pWB5Q3YXxUI!YT-k0TxI_`8QlzM$ES1K$*l|aW z969c|Z?dm4Q)umy-0Yv9f6xDC@^8P>!(qrTnWACxx=IKKB|H5O6br#)*%^Gm1b7@^ zp=5V2<~-=`5gt+JGmE$wY|9OceESa3 zU2drJ#dwLpQrbW&svTWZF=gXq{W_ZgRxFx@b{z%kE1}t;xvPtuzS&M`tf)vvOlLo- zVI|lIsMD(*0KT?E0mXsc7{e@FKgLqNjUuT}jW7T`>F=hA4lIC0<4y6gIU<1ltK@xX z-wYRA(q#QZM+Oom!7vT++{016%!|$d{W2}wPht9_%F4y6aND@7@5gU(KAMGYy5@KZ-kyu P>lqDRQ0otB{Y9<+l)4>` diff --git a/data/stockpiles/category_animals.dfstock b/data/stockpiles/category_animals.dfstock index e09193a2f..9796e4535 100644 --- a/data/stockpiles/category_animals.dfstock +++ b/data/stockpiles/category_animals.dfstock @@ -1,71 +1,2 @@ -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 +  \ No newline at end of file diff --git a/data/stockpiles/category_armor.dfstock b/data/stockpiles/category_armor.dfstock index 8d69cec678552608e310a1d01ab3fd05581ddda6..54a2d54eee3204330dc86b6d12ee8684d24cf1aa 100644 GIT binary patch literal 5 McmeBTWXfO!00WW$_W%F@ literal 2040 zcmZ{kL2ueH6vv6gv<}pDqbmj4Q;*!*s;Zisojei~Cq}k`wU-RFR6;^+#i+D?g`IZX zamO8Z+;QJzUuBN~O^Uq>*uVet|Jm=^`Re@LsT>j+3+XZqaheTNDuF27<3vN{z))kt zc&b7sb){j59Ec7?kk0th`X;>kJv3M#v`|im4YM< zI8n;2dML`(WZRRMN)x`CmM@7+=v$Tu84!G>E|cQLJP_Qc?{XdO2Ox{Y6TRL`f<6)O zqU#m5pty!&mMfq;xi6MSsUlDs(4&?|^jMH)yDKvM-m#<~7vq3~rzNuOd@Tmiy?ok( zp$3_DSORq4z*@2n2l~MfIJqny3ajcD6BFK#v&|GNm!(L}s!_)AqR?iZ1P?4Z-r;p{ zJ(nmaUWA|ctZ2JAmqJ0Bb?AK#DN}J@hqPg!wL{@##3wOcsYM|QG`mwq1AI2Xxb(Pq z<`p}&urmugx3CLZIMF)Cu??Qu;F%4c+u%iaOU!O2cca-;w>lh8r`~LIJ0IV4w>y)& z@$_ju-BOPa+!>Ua(_3PcHhLK&-3x@_Ho+XBD4AAc62?L&yKR_C|^3t lXGd9dl)0mPcKqmka=tmvcgOkRlzuvmUry<_Q~KkS{sDA}NDlx2 diff --git a/data/stockpiles/category_bars_blocks.dfstock b/data/stockpiles/category_bars_blocks.dfstock index fdc5bb346f0e1b6a1f16b3d6b568bfa023f03368..b7ae54bb1f020e87b6765ea97e5112c6b7d6b560 100644 GIT binary patch literal 4 LcmWGy(qIGt0iytZ literal 3450 zcmZ`*%WmB^5VcUF2ppts+`Ouy8~uS{7>2tWQMANdieyR3&hTo#EGc)x6=NIR~lD_!S*+`+e_#yqgaFV=E|IULYclomRQkuSIC|tf2 znop;XSHd4dBt3neKU!PmKPh8{UALe!aBD^SkFOf)bgZ^ zz&j;dd6N0hv)3v`P0eAD1Cpg zjLhF};ON!8mie2_fu0I@!3|1F!eMn?3M$54A&IbtWC7fYTO`#djzloS0&o)^G|>415TK_#A};Sus@*E?Zd5$U^&qwaM;*Ysig!I%Z(euQNjWmzsW%2v=I7DmYbBE4) zAvGz3G4OCsGxtd%$c?uJ1DR^jkCHq=;s^p&+HMjAf`x|k!iL~-Zq#|p10|4-XhW-3 zj*?IlVNI=V%V~)cSx{L<6=PsqG}6ZC0guRU)Wz65owl=TUM=BugX&OvLwIaY<3Q&2?mYT5^t7fm9d%$ zWC*(_xJ0V87lJo7UmalR@ANw9OBK^Hv|YebYgG>cg7g#$cOv&f*J6%@GKNa>NKs)+ zCT(&UC>mw-)W~Y>U}L?RwkcMlKDxk`U>WdxNZ=U#C?o23T~+a79$N#(jbpp&UdgIY zuPAh#Y3_!!Las}%+EE46_n_J`t^H*{(+XGXR`HTFGXgDH@3?DCL@Y#A4p+fCQ;_SG z>_F>jbB4Ht@G@DJAp>KT`)pGc>R2#V_x@i13Iv^45=&kMs z2Z88LMbU8Ua9^X}C3T;Y=`D}G?*D_!j4G-S>7Z(X<3Ivx-m-Vk6`+xaKLh!Y)miSO#pJU^2|#h6fE#NU|sBxnkl$t z>yT-VV~YR-IA6nMV6~^m9@Zr!lIJ1U0m7T#iRjVk4Yz|`?_f7O*zFE>hp9N(xY`4+ h_rRMy@OBTp`?Cihn>>H`1p^N|k diff --git a/data/stockpiles/category_cloth.dfstock b/data/stockpiles/category_cloth.dfstock index 62d84c402..d88106c6b 100644 --- a/data/stockpiles/category_cloth.dfstock +++ b/data/stockpiles/category_cloth.dfstock @@ -1,141 +1 @@ -rL -"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 +rH \ No newline at end of file diff --git a/data/stockpiles/category_coins.dfstock b/data/stockpiles/category_coins.dfstock index 4f17935dae690a5aa517f6459fb3bef185464a95..a48133ac400899723d0a7ba9616a9c311dcc5114 100644 GIT binary patch literal 4 LcmeZb5?}-X0aE~8 literal 7467 zcmZ`;xsv3#6`XP_Lej2Q$7qj;^5jlepEDjvqDgdt1P36io9*zI6d_0Enlfd|+)vvC zz?w=Dq}d7Z;T`!B57jUK{<8n0YK$#Kqw+7xnuh-_jV|`zUDut`XK5M9P20{9*f~kf zR^C;U^EVkzd6)Y?UF~L8ILCnNBy9Zox}#O)7`$Uli%vCt&HJR5d1rzB;rcB$?f-iH zvz4!%wBxgCSwY1Z=fx z%FE`zU6(Q~^3yma?T0IFjgw=j(Dzp`Q?Bm2YX32TE*2;ig_ZlC(q-3~Ms6*(#^zEB)PiCVt{O`%zy<>0PzrwS!7Ht5xu?|B zN}opaJO-S2Y?|SX8CM&tkZ)#kUKy*o%*e7lh*ESjUozdx!;2_p$7<0kcYxcyR?ONK zG@et(0|(QJ*-4o;rU<#>^K0W=dVWBI0ZPzWSmkmBPl?ufWd~=X3kjSXtp(H930rW^ zb732)m1sD`GOioeb`Hw@2XXi+3hZrlhfEH&7BR1xcVrW%!iXaiP>$6J@2z^%e zg3^I48twuUCD13Y4GcRkOVkCe%DWzRrWN|a)#fxDzV_huJ9qS}c#GkX*RQBtQcqE5 z2yj^>-mTY^AaVm#ashj(Rjh#WCH;;6Z4B{RE* z4mX|$q~WS5RB4z9*_t z7eSJ50&a3BAV(>Dt79d_l2EYHI1mzsMpNUDHWQ3I7~_x^FX#STI!dhVGlkIxl_B@@ zpsQ)mlm_}3sz4SXa{qJ(ul0$ADNgDDQOmA^5U|q%icw=KK=~-K6Ky~~E@~VUk}7y2 zj;-e;GcTYp@Qk6bV%uRM2uy+ox#dX0-buWY-8s6*B&e2WOp4UH!A2#lmY4)*Di>D3 z)K%C02on}4Ers$-Ek-@?u^04tU}=#xMqfOFXt+eV2Ub&u+oD>e?P4sjfRle&@HHV) zU*Mp5oVv?`S71)Z1&_R3GZkw?XI%UoafeveAsOB71=Ez;_*y`|=xj)(sl61@*?A>xHwT11aZxeX zgbpN0D^$G5zPn0eDKZR`e44F>C=9eK6CnWd35mn(1)peFA;P#$yG-U3ia2`>#cO{N zj>9W=7IRw-I$RKB-{qBpA`ntGQsGTa2=pOCQOJi1*Ky~MBMj*`Avx4AUd0sdSnQq+DlK)zJji_oVy_ zCUA-loPJ7B%T}>cXfT3LGPXt6HXUQGQ(5?wP6q{1FYgkyo*VSpLqtN{6|vFiTfFBK zR0I<-ZB!b^`j08Iw(rzjd}@JiSP~uAV3ZC@gr5L)9~`6#wyMi3v<~{3{mw-H=8sN! z^zFAGQl-pT@y4Gc!1Ln1_Eee9p}#sRVN6iS@`O?_e%GjtsJV*%>Wf>`rEj+561fqqP}ZZBfYO2f z292N6R=){1FplN8{MK2Hu|8t5XASn>jMEH21_K<&uq7JD0xq35;l~k*rIli?J$Nvd z`28;=mH6&CgWm!nu%j{f5swN8?=cjATcH&AaV#y5|Ir}%)wc*OGTv|+ChWL^-L7DF zE7<)C_OOCIu3%3q*k|sKi_f3dz?(JjxCY*?fp=@*{TleN20pHVPix>>M8{8j9brD# zsG{i$l!tB&!jBvH?FN3gf!}Z74;%R72L7~xf9CO-{J;6MwQ#ewaNJtB-CDTYTDad@ zc-UHa+*)|rTG)ylrKZ7+QgYmi{J0hQaVzrUR^-R6$d3;!eZeb>|0jTdbXi~F<2ro1 z4&SZA_v`S6Cy(p9pVr~e2_IuPX`e+r?X!rdeHQVw&mx}oS;W&mi+I{+5l{Op;%T2n zd?Vf!T?zZawWY2^d?Q{kZGHbnyx`gT{)d0gA38D3*;uRF%J>9kGLX$uT|Dd0nZAP9o=Mp3lH9ZJ-a)QsiJz)ie>0b>)m z4$%CI9&^kw#~yp^f9N0TLrSyrXyhIi-g!m7pU?ZeB>(o`PiH5x6uO?BTp8h4v(v(6 zMupi-*FLzmQgxWU47Qt{2v=D*JMpDees)|cQ(>{OYy3L9(nafZt!Ag9YUB1-UaBT2 zte4Ji>e(^A7PD7Mxb&a1%n7OD!k2}rW+%ah_@@zdfVND?RfB)C)3>c&L&>RcjD{np z(zQXBv*Tc`nH^`=uI9%ZYxDVeW3YECjSb}-A8Iv+()6RWuAZMXFm2}WUKulgWt0e| za`R)a&1!xksti9)q;V_Y$rR#hUX83vB321(~5!Z`f>e{+O z)LQ;kJ6rSb!kT>X(f&IuA|#eb+caYd^sJO&EjPNByeET|8@2e=UN180JqvtL&@tby zXmqhn-m%PxpzF5cb*PJsrC+?>@5Q3U@Af|%wLx*WS19@7_Y-k&`pT%qZzms&=r|~( zHfO`av{iD3RQ9RZPP3M2W02`T?2RB`2bdJQ#UJlKWd?BC4oUmXUhb?{+f<=n?}eH6 zRU691Clk?514SlsQ2}`|5u^fWjNUB%yjLNW6P1=*zzNW+H^QmKAE%#v0CxZ1$HqEz z4Z3wfF$iBqKmrXUghPXnplR#wnn8qq)<_|PQ=(f8R}P6&OHqh0QlFVtE#HV-Ehx!G zG}ms2Xo!NPZN$h@X3)qfe70X%@2B>YG%28%*TQKpH9RGx$`U#~$_J;Ym*VD>;*lNYT-V1+s5WA)pv3h#q!=1quX-V2 zEVS9K1|+@GZYL#!4SHxNrrH4dn;MFJWEui?qh)BJXZS)pd}UYN@@)&a-f)wG?)q@Z z>qxnB2m2}`~yV?0gSq{2TPIV(dCE48l zeiB#m7!|6-Bb_g9;B03XuN-XN3TA6LrI^dFlB8<9*hp7f+E{OW3uP_NQ z1mnRCn*X$K|FyO_oG!tZ9;_Z>s8sh9(NK3{u~l2&9O#j{u0@4L-DifZlxY5LIWS$H z2g>~$FyJsb7`%zd2Ut)p1}#&xN5WP0kY+MIY~T>-G#OBU8%9nN^c5hc8kFp#qr|#4 z(>Sf5GUR?bPA{iDQ&{k0ssd>M$^FGIBiBzf3~^Eih)RVL$8&aCfH5kZ3dS>FfDORM zMePp?lPW|YZkvcnMqZLaLA*1SY%zUE1T&E)y5&gH+JU?#t0lU~PNYVyarmRwO*%?k zZ4|CbBbG~FfYfJQk4KpFf$)~=h}3**IySqLUUf_@s={d&_Zm7}qTC&`smHV^57M?% zmQcXS-+hQRAyDtciSsyhyAP3pIUPHBkIUy&^|c`zJ3qI$**WH+7|=xMk+}X)K{&xqF@Wg-PYJ|S^9d%-7Km5X#- zr&Tud8buskaQd--5RS*ibrf?`b|wu7((h%d!3ZQNYNc^aCJFcf4;~y(iE$jFIr0nX zw<$T)FpYE6vLoXyA z1F$uT>542Z*euf_-m`7%x%x&IDL`61_>9XeCgAvuAPu%`+%VE+0Bv-bAR1I~qE!7X zrZmM@ncYR5s!?=}hb7__ythbxiFkv<7U^%=94C>YZw(^G26k~yR{1twPPmkSIfw~f zQm!+nt6l}wcctUAP{I@$99{?XVXHVL3=qMVtZUGe! z`1y0fFP;;A`JC{pi!=N9&Hek^#~&`vH+K&Y^6~cF)7>{0udnXk-#z@W`+4TS|L*Sb z{@cfkbM=p}@4kDw|Mvau!^JPE+rK~EJ-++?;o?j@KHa~&{rc(hgT_nNcsbU1`9b3) kYrNcRy!@c?pGQYO9v%I3^y25EPyTiE;@?Lv{&V!=f7onI82|tP diff --git a/data/stockpiles/category_food.dfstock b/data/stockpiles/category_food.dfstock index 9333d0c61..32829f677 100644 --- a/data/stockpiles/category_food.dfstock +++ b/data/stockpiles/category_food.dfstock @@ -1,18619 +1 @@ -- -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:WAXPLANT:FLAX:OILPLANT:HEMP:OILPLANT:COTTON:OILPLANT:KENAF:OILPLANT:OLIVE:OILPLANT:POD_SWEET:EXTRACTPLANT:BUSH_QUARRY:OILPLANT:BULB_KOBOLD:EXTRACTPLANT:HERB_VALLEY:EXTRACTCREATURE: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:VENOMCREATURE:GILA_MONSTER:VENOMCREATURE:GILA_MONSTER_MAN:VENOM!CREATURE:GIANT_GILA_MONSTER:VENOMCREATURE:DONKEY:MILKCREATURE:HORSE:MILKCREATURE:COW:MILKCREATURE:SHEEP:MILKCREATURE:PIG:MILKCREATURE:GOAT:MILKCREATURE:WATER_BUFFALO:MILKCREATURE:REINDEER:MILKCREATURE:YAK:MILKCREATURE:LLAMA:MILKCREATURE:ALPACA:MILKCREATURE:HONEY_BEE:ROYAL_JELLYCREATURE:HONEY_BEE:HONEYCREATURE:HONEY_BEE:VENOMCREATURE:BUMBLEBEE:ROYAL_JELLYCREATURE:BUMBLEBEE:HONEYCREATURE:BUMBLEBEE:VENOMCREATURE:PLATYPUS:VENOMCREATURE:PLATYPUS MAN:VENOMCREATURE:PLATYPUS, GIANT:VENOMCREATURE:CAMEL_1_HUMP:MILKCREATURE:CAMEL_1_HUMP_MAN:MILK CREATURE:GIANT_CAMEL_1_HUMP:MILKCREATURE:CAMEL_2_HUMP:MILKCREATURE:CAMEL_2_HUMP_MAN:MILK CREATURE:GIANT_CAMEL_2_HUMP:MILKCREATURE:HELMET_SNAKE:VENOMCREATURE:CAVE_FLOATER:POD_JUICECREATURE:CAVE_BLOB:FLUIDCREATURE:OCTOPUS:INKCREATURE:OCTOPUS_MAN:INKCREATURE:GIANT_OCTOPUS:INKCREATURE:CUTTLEFISH:INKCREATURE:CUTTLEFISH_MAN:INKCREATURE:GIANT_CUTTLEFISH:INKCREATURE:MOGHOPPER:MOG_JUICECREATURE:SPIDER_PHANTOM:VENOMCREATURE:SQUID:INKCREATURE:SQUID MAN:INKCREATURE:GIGANTIC SQUID:INK!CREATURE:SPIDER_CAVE_GIANT:POISONCREATURE:SPIDER_CAVE:VENOMCREATURE:MAGGOT_PURRING:MILKCREATURE:ELEMENTMAN_IRON:GASCREATURE:SERPENT_MAN:VENOMCREATURE:KANGAROO:MILKCREATURE:KANGAROO_MAN:MILKCREATURE:GIANT_KANGAROO:MILKCREATURE:ADDER:VENOMCREATURE:ADDER_MAN:VENOMCREATURE:GIANT_ADDER:VENOMCREATURE:RATTLESNAKE:VENOMCREATURE:RATTLESNAKE_MAN:VENOM CREATURE:GIANT_RATTLESNAKE:VENOMCREATURE:COPPERHEAD_SNAKE:VENOM#CREATURE:COPPERHEAD_SNAKE_MAN:VENOM%CREATURE:GIANT_COPPERHEAD_SNAKE:VENOMCREATURE:KING_COBRA:VENOMCREATURE:KING_COBRA_MAN:VENOMCREATURE:GIANT_KING_COBRA:VENOMCREATURE:BLACK_MAMBA:VENOMCREATURE:BLACK_MAMBA_MAN:VENOM CREATURE:GIANT_BLACK_MAMBA:VENOMCREATURE:BUSHMASTER:VENOMCREATURE:BUSHMASTER_MAN:VENOMCREATURE:GIANT_BUSHMASTER:VENOMCREATURE:TAPIR:MILKCREATURE:TAPIR_MAN:MILKCREATURE: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:POISONCREATURE:TITAN_1:POISONCREATURE:TITAN_2:POISONCREATURE:TITAN_3:POISONCREATURE:TITAN_5:POISONCREATURE:TITAN_9:POISONCREATURE:TITAN_10:POISONCREATURE:TITAN_11:POISONCREATURE:TITAN_12:POISONCREATURE:TITAN_13:POISONCREATURE:TITAN_14:POISONCREATURE:TITAN_17:POISONCREATURE:TITAN_18:POISONCREATURE:TITAN_19:POISONCREATURE:TITAN_20:POISONCREATURE:TITAN_24:POISONCREATURE:TITAN_25:POISONCREATURE:TITAN_27:POISONCREATURE:TITAN_29:POISONCREATURE:TITAN_30:POISONCREATURE:TITAN_31:POISONCREATURE:DEMON_2:POISONCREATURE:DEMON_4:POISONCREATURE:DEMON_6:POISONCREATURE:DEMON_7:POISONCREATURE:DEMON_8:POISONCREATURE:DEMON_9:POISONCREATURE:DEMON_10:POISONCREATURE:DEMON_11:POISONCREATURE:DEMON_12:POISONCREATURE:DEMON_14:POISONCREATURE:DEMON_15:POISONCREATURE:DEMON_16:POISONCREATURE:DEMON_17:POISONCREATURE:DEMON_18:POISONCREATURE:DEMON_20:POISONCREATURE:DEMON_21:POISONCREATURE:DEMON_22:POISONCREATURE:DEMON_24:POISONCREATURE:DEMON_25:POISONCREATURE:DEMON_26:POISONCREATURE:DEMON_28:POISONCREATURE:DEMON_30:POISONCREATURE:DEMON_31:POISONCREATURE:DEMON_32:POISONCREATURE:DEMON_40:POISONCREATURE:DEMON_41:POISONCREATURE:DEMON_43:POISONCREATURE:DEMON_44:POISONCREATURE:DEMON_45:POISONCREATURE:DEMON_47:POISONCREATURE: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:POISONCREATURE:HF1108 DIVINE_3:POISONCREATURE:HF1249 DIVINE_3:POISONCREATURE:HF1345 DIVINE_1:POISONLYEINORGANIC:MILK_OF_LIMECUTTLEFISH: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:MALE \ No newline at end of file + \ No newline at end of file diff --git a/data/stockpiles/category_furniture.dfstock b/data/stockpiles/category_furniture.dfstock index 6c52781fb100a82428db8d6c2005d998841ffe1a..fdec022edf4e8b3fe20d910b5532343cd0acd15b 100644 GIT binary patch literal 4 Lcmb1QvS0)N0OJ5w literal 3259 zcmZ`*O>Y}F5Va7?v8gz1)X%8s#Yf$OAPCaiESK74#U(c+*NSpk7>NuRFq}YjfaYKH z*kgfSdhD^s{aWXN^r5Qyf202BU*V3IUFZ!8pu*1|j zFHR*zDk~F9@-c|hgpAPvP6>W1MBw&en;tG8acPZBsWBeVLPn=17TA z;z+v5L|btLJ+XqNU?>s&*Ol^CoD|xa5S>**kT0BvkWGb{DJq?X`l)y*DbZF%(In%oIJ#M`C>4)NU8*{$)?@K#f^5{V>?u>? zxPS$TAjJT}$~0OK$P*WHY$$*yv3>T;)KBNa1L>ktlUmx88BgP}H_6xSTSmjt6$SxeKAuH=ARrW)UR;q15QR z9XNVDF>3Vn&Idzt9u%^ga>HaQFaU;`%2g`r-K-^`EHeFcV*~+vqiuF4{O#sbV!+{g zowTnuxOYL-ZH1m}z(j|liuvgK9q3L2i;Pk#K)NOoOa+M8cr*HOqe3cAg_bp#1lHLZ zc{TcB_jB8Y|M#(UUMfSV1&e_~-f$6YU?3dY1)HX6^>ayNHm*QMi=tW!GJ=JiP*i3^ zqMSSGyhEY`naCxLF4Rhr)kHd*8CM`JQE?We4yXpkY)kZM>;hz_JmZ+3wzk9RL+X%97FnhZ<%Y2Rz z-}N=f97Dh3y;T}L&f+P^W4Lo4a#f(CyV{X{*CvPYHpAG`s?87UYm2+*>yF?}xPsSB zxcgx}!5B9RLdWG>5oI8dB|aBI*^p}63yDdFt1Zm>TRKeLM8{@GxGL~c8=bWQGU;_F z=tT5Fcfd()En&HEib{uF)h3QnG%D=YT&3F%HrwQG%CKr=^D@8^TL#z@l8@1!RU9$> zWtFBFSgY1x^)>+FbW^g^)^meOwMFx!E zmYgrqwKj4rM4hx(nRQSQ^=c~3S})Aa`4$PWHdl?t?qcm}Op(xGur@He#T;Kn-5ov! zWq6Hj+sOTDbg)E}bMH*mI>?A#YP`MBI_PWecS6;hM&~Y%?spSw;{;EIH~cyRJa0Au zGv82UZHEOuC5W~`GSQ%XiG*({a99^^l_VyMO@c`a9g5QpC~4?gL+)9lPcGtDB4E=d;0VaeXb9 z7niq-_h+Y*tDD93=ey%^`1EnHy!x;_8>nC3Ek52}eYm-}K07Hcez{#NFF#$M9nhj{et{^=e3+dKFVF(_?_ diff --git a/data/stockpiles/category_gems.dfstock b/data/stockpiles/category_gems.dfstock index 8d7b229a1145587d2dc0cda9e7cda76c80d8ed76..8a6483e26ec58e0d0c04b28768ea7becf941e944 100644 GIT binary patch literal 4 Lcma!I(qIGt0mA@> literal 7728 zcmZ`;yOQL%5!`m~;-uB;b=NvYbkNa1DCB@7hQu~VZ~?GqI8OhP%rj-mlqpl6ro@9p zlAJTU0Ms+9kVL=#@{jMn@3e64*;y&a^+%(nu;2ZVRvNoFFZ37Qxc-P6zw9?&f1^fY zJ29%}?`B-yuAj^A!B}NRmbj)jR$u>6_Gr<_o9Kj>*WVXut!H`rDq4B{QxR%0DRz~V3Eglj|Y|0_UFsbpL zgj54R*J}+(`l9SAC4-ZmhgD3qsjYb(q1a8*UVki(OserS^yC#f;RbVGZr^5M{ri=o zd=+mg9P;`Vl{?i_3^f8g7O68jZ~a~I0!6b5b*Bt1Qfu?N`bGA=>ZFy+4kS@_Qx;&R zoo*gaaI(^=F*!wzFfBH~=1Lxgp1XN7+d=5y+D~Pzvtqe5z0i#e_2#7(RfQ_mWOPuu zT#txO>8JtsBqZanJ-lHHe=WvejP>e8HNvBHvlS};p!9t$8Wm_T=A4UUCU!AtNJvON z?SL{$F-c9;0^`#fhzY5ABtqWY zSzcpy-EZ&8Hoyh#Pjb}UOp@_3NR2TG9Q>uETaB&i3r5WL%TI%OCTi}v` zBD8#ihp`4^&WrIqRhWdh1jFqJ%|Dm2Ka|nZ-!Ls5rn(QIQr%-jx$czj`#ioM^fYQ5 z#ehaFnIS7Znt!?FNtg0Kx&MlJk#7zLZye;ghLnq}<&5?)aOIfOOvdv84w3F`j{>|i za-twrfF@N|Qlg{8+PPK@V%Ya;oU7-a=?vy$tO9Akko%jvg;`Gth$LqPF?E0#r0>Cv z*lB@@F@P1Ie3aM>8-S0Cnux-w3IT}EDPWS37o||}0=Cw(?zj*K%t;!@Ek_df=HYeP z-JpxiNvh>TjeLJc9lfwxew(pEd5SAQ>W8ie3KJJ7Ev*VjZJ&B!v#a!F;n5-oX@zc? zI-%SPPg956qCcchTE$_tI8$BR5FJpqeKLg9nCRg_RZEAnS6ZBEPmc8H-jCYODzUfYuYF|6Q^W zvnUG>#J>7m##bWtEJ?(^qH-5v&+0c~UlEj;*jF?pBCBSdh1j#S5POyuV$b$BV$Z^j z*jF@!iP)dTk=R$1p}@^qyOcSg9iIR}NUdFw{(xm_}`=M3d5BhgH@zY=>k zRfs+BT!}sJEX1B+pNM@$H&(hn3LU9_o!Ilzf!MRQqhL^H6r$mR3`Q;XJUVrC%(#f zS&2Q59qv zn*L!WCyH;JmDqE`hOHaH{-v5*z@X{*mJE4v1eGM7n)o{x>54H%nNiYGqGpm`2Z1n zzOy5bXKxCzXH;h;rS4qZmDscUX|Cqn(dLcVb7?kWf7X!Wq}z8T_Uv>a_AD*Lo{LJv zo;N3c95Bhqi&CIB68qEkICxIdIBq$Ts3Z@s)9y&@Ptr*2xpkwCjo6>G1F0Xnz7l&j zu##fEd?bBY80wkWGj$3)m?zRom^p2$iHHJD{boe5Q6rFMEl=ewTcpT=uk(jWZhC3`ULf?Hi;4%!@M+DWR>c=8=1QHYF@xBe z?U(q)&%0_71E72$ad=dP`p@M9q!r;Eo^_epDHL({fs?NNLpV+!VxIa%hnFALkIxz9 zJWIM!D(6^&5C0lPAy0d}v-yKxNWY26q02E$F@?u7*rX4R5oaIr8OAQ-FN*<{2fhml ze|e!X6YguSI9`+m{NG2^0YIbR26a;a)zOOve-Ghk6ccrA44x@!<>vuKm>ri|t1bpe zyR&Qfn8oMhJaCTU#a4@*!;Pr{+Tbuj)JtzgFXJN{rwM-`jnAA7LPWPr4wmSX4F6&^ z)ei+TU!`aL)7;{Tu}iJNA2zUy2XNUw!^a7`4w&P`0bWvD*H#Tl1=aVi!e0{+Qxs6G z+%WrI9b3gpp@9gtWbA~l9X-pOS9Lr})&W7(E4V~Y2yW4jAR=Jmu1JkWX9LN@6mh$a zO2ce8OqsQ_SNq{J2z0{{=(q;c=%7Rd2B_!gAOU?+zUk3A=xg@77V}#$ea4Z%e@+oc zG!biK#Ty?-fDb&xF~S2>vK>9X<@J4i!=W>f;)?L_GDyv?oajp%I&|pJp+i5-Af+lnnhmFgqtR?& zzC7KX-(rX~KtTO9L+Epf!R$bEWdYx8k$zkQUv5~o;C7kX!E{rOqQ1--T#-E-db31+ z*y`yR1{b{{DCR7B_mNR#O!U^)P}u|EF6Y-9v>j}YYO-$$VGqXvp`vOCP2?BtFtvbLDZj(sqgvqU_Q;zto2 ztnp9|yjcF&#Ca!`pn#_7^L|4E=U&Y`MAx4`-oP2%)zC8^bWDjq2&;K;!2FNuI}_k6 zSmabqb!4F-SFs!Xd1Ij?xLIKtJ!4~*PwjAM1B&Q%l*CeF7`@a;V+f#NM_5P2rmcj9 zMT;o}*7Qe$Hd2^ZHKeGrlY3zFp!?GHmwy?x~@g7Y-Kg8He z>TL7WWEEN~Lcf#{%3jbbL(NlSAcfhF#o}>Q$bcJI5MiW9iMKWsiRFT-rHbxsL4L0) zoLId)xod?)Jx%MPiCi`f@)gOuKy=);CJSY0EVw^D9)@6!M%R{>(;ivBoMAJj!&wBv<6~D%w}8tbN4b7vRt~qzKK15(|DP z5UJR>h$Lb?YQD5w!$`X^3X+dz`_*wo=X%-LUi)q3W#yY!LGfVOusk=}OfRSX>Oip5 zvLeC(tXE4Gt|oYxp$8Akj6z7hhx`s=Z|Yx*RFQYBO!E!OXL&`%gf(h*5xgAx9?7)) Xr>^_ib-%jP@9y-c>;879f8FUn@-gPF diff --git a/data/stockpiles/category_weapons.dfstock b/data/stockpiles/category_weapons.dfstock index 6a84bf0c70272c8ceb65ef1e09343904535383e4..8f46ee61994481053c52c7ca6a6dcaaa44921bc4 100644 GIT binary patch literal 5 McmZo-Wb$AH00Sxj&j0`b literal 3838 zcmZ`*O>f*p7|u#Tl#RkifHvI{P*+Hx+`3g&+7sjP#2$7$V`j$LY%W&RCQ_s*t(H`x zSAGFUjvP61abvy8h#atGBhExg8AV$ z5pK$|3_VcHX7P9(H&x)pI&h?zRMFlQ#%ifE=h2~9BOI5749r+eA!2Wt3>JppMS>>C z=ma0f1Or4mkysPGm8sBv_%NcLA-`j>_bq}cxhcvP^{c-+lT3RAn<$owz3*4_H7TKu zElh1YRl5xPeH&W(0Bn0EQI%k3OpRmZ#P6>Ll=TD#o95b`y(GDZzOG z8+)BZDYLqXj?xtKQdb3)6H0JzLEG(gAvFH7`z^)HV`z?~7UKsSWFYEDiSZX348`U& zDO5G3j+v^8CKzI}Ek(UqwL~hcg7L%72@eJY8{`j$vwQB+Go0x*Zg-SffG&JA(~SX7jmG zYf=eo5+L z#WDa$GrAXC89=oj1;-|XYC|UT%?-A0B7ImAI488#N@h)hM0%MDCK0pHUvRhznkCHA zK5>Jy(-e+C)C(M{T%_v(;zg!cTZVKao0krr$T7g3;B<}tB>b4zFDsm|@JPVS({)qA zuRM|>t;5x#?FG!srmUpaiIqibg7kMP3%s%#Oc966)rN-!5JE-;uOkISP*28|m|E>A z&3TzLs>C}Wh<>fvb8~eZNCcQTo9&i3>|_x5~o`DSsrBYu5#{`Thb&Gp&U;YY>UFE{6li+5Lt_t@g*^5X2(&E(eN vgj$^RElzGNPN>C6XK`|C@rS{WgWm^(KL&$82U~v)_WvGi{WIA5cd+$8%10;W diff --git a/data/stockpiles/category_wood.dfstock b/data/stockpiles/category_wood.dfstock index b9480efb3eb8137b5b563f7c2b5ec2889330862c..5613a0f0770cb0bc4913da8f26c6de0f400b0792 100644 GIT binary patch literal 4 Lcmb(5VejUvNg_IN)|D|7;yv)L0}!fM*GMTQl(6pGG)q?Sy~1;hXR<-<=#7d z{iZ;nMuRYFOtN4ySTJf15;C~Xw8_r*I}wbw6^{v&Yxt0K#*9ydPgy#wUujRR!nJp| zDrM(N2p4>?LCf$Kd=!Yxkpc^(uZ0tgTrfF;ckOGXvj4x{?p~s0KYE~WOZIiXSz4*o z*X6Rb_@!ZmchlC2#eT+|1Hojm(w;Fy7{k-dLVb#&(PH!nii3X;+&U8{uS+eAQp?GT z7YD!vbMb~njK-&?Ql3J1e(lbu#WAQEKPZ68gl2{}*-F0{(LH4Rk zWZW;|PhWaDJT~>)_L?*ge`#8b6}h6U bYnK6hABG>p@N+o*8cx55)1Tq=cR2k6Qg5E1 From e59d60612c0407c298a7eb6d1219775b34643115 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 15:52:23 -0700 Subject: [PATCH 021/115] rename traps and cages --- .../{emptycages.dfstock => cages.dfstock} | Bin .../{emptyanimaltraps.dfstock => traps.dfstock} | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename data/stockpiles/{emptycages.dfstock => cages.dfstock} (100%) rename data/stockpiles/{emptyanimaltraps.dfstock => traps.dfstock} (100%) diff --git a/data/stockpiles/emptycages.dfstock b/data/stockpiles/cages.dfstock similarity index 100% rename from data/stockpiles/emptycages.dfstock rename to data/stockpiles/cages.dfstock diff --git a/data/stockpiles/emptyanimaltraps.dfstock b/data/stockpiles/traps.dfstock similarity index 100% rename from data/stockpiles/emptyanimaltraps.dfstock rename to data/stockpiles/traps.dfstock From 4af59f865ab59e60ea1e28bde7d9ac91c3aadf93 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 15:52:38 -0700 Subject: [PATCH 022/115] update traps and cages --- data/stockpiles/cages.dfstock | Bin 27 -> 6 bytes data/stockpiles/traps.dfstock | Bin 27 -> 6 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data/stockpiles/cages.dfstock b/data/stockpiles/cages.dfstock index 3a66abbd68612b0e514eac558c890cdbaaa6b3d1..0ca677985c949139e96301fb25e673409af302b7 100644 GIT binary patch literal 6 Ncmd;L;b0VC0001)04M+e literal 27 jcmd;L;b0VCn83(5gOPCoBf|j diff --git a/data/stockpiles/traps.dfstock b/data/stockpiles/traps.dfstock index d9121dc8aa9a79a2205e2a71192d620506ede5bb..ed1ba6776305c3f9bf020e9293d471a1cd50f24f 100644 GIT binary patch literal 6 Ncmd;L;b0J81ONb+04M+e literal 27 jcmd;L;b0J8oWRI9gOPCoBf| Date: Mon, 20 Mar 2023 16:04:35 -0700 Subject: [PATCH 023/115] update food stockpile defs --- data/stockpiles/booze.dfstock | Bin 0 -> 1809 bytes data/stockpiles/dye.dfstock | Bin 127 -> 106 bytes data/stockpiles/miscliquid.dfstock | Bin 57 -> 36 bytes data/stockpiles/plants.dfstock | Bin 3177 -> 3156 bytes data/stockpiles/preparedmeals.dfstock | Bin 26 -> 5 bytes data/stockpiles/seeds.dfstock | Bin 3395 -> 3374 bytes data/stockpiles/unpreparedfish.dfstock | Bin 1720 -> 1699 bytes data/stockpiles/wax.dfstock | Bin 98 -> 29 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/stockpiles/booze.dfstock diff --git a/data/stockpiles/booze.dfstock b/data/stockpiles/booze.dfstock new file mode 100644 index 0000000000000000000000000000000000000000..736560f98897ed4fd903e871eef8c6b109542b88 GIT binary patch literal 1809 zcmZuyxsKZ~5KVp{$L82v2#|JxZBn`$Nt8vHSB9h=r{N!^&gW)qz0pd>LWO`g_nU)v ze_uU(PmV&_WgGU+JnornXs5|g*$r&N;o<8nFQ@p7@FR@lST;t$C*om)zlDA>PW|7_ zP)F>{88JTqtNme}%Ig{Cvw_|_xQo1>st5Q6TDDg;MD=9UuJ3NVjON|;4M{7&fE$=savVKdFz}}Iv_bswwSHt^K3IpqYQ6F z$YYGZ3)vfoD1MB=#w|m|j3W>bPF!q1#e=d0Dm$~JcRwd_vTkTSF-OfCt>`IdIx2er z6LAhUZD~%iP|=J)J=0*bk_#sCNusysv`h3)9#Fv*6FzSomGfXF1N+8El%)oK+W zOST{>2XNd=-#f#sBl;e#w{DH<;JRwoFxH`S)F0M3)R}U622M5@N-{lL;yMcQZ5t=8 zAm2r&F!&rQTMAIs+Uiq(pq41nSxr&c#a}IpF*xgMF0#{)>$FhBKr*n2oUS2!yK_Go ztpL-LqBlZu5Q}YYYqyvkN^JXO%9M3FulYhK3G~z-RGSR-I#8Hqfq2VaGMugVQJGRj zx7-xem?;cxW&dLy0$=mQG5R(c=P$!5hC1z7O({3$cHPco_Xv;UGRv-qPIl_3oFHbB z({kN`ZO#&}G%p7dFd9^<5Yyx!3AY18xI`DmtjX;{=wTTu*r_lVrW5Qosk$ z8X>zmG+y2cy@!Z2$}*c9uK8*am-WI(WM_|;#ECmZK>61`w_LS1fRC~p^0F*P1?~0} l_E`O&_dUxiR@v;P7|glJ72A13!%EOq-#OXTS@7@Wi~spv^2`7L literal 0 HcmV?d00001 diff --git a/data/stockpiles/dye.dfstock b/data/stockpiles/dye.dfstock index e8ef137d85db9a0f916a1bc5c210afb5a2acafaa..67b785d2034ee72a972af38b627fee5f0802b8bc 100644 GIT binary patch delta 4 Lcmb==nvewm1jqs8 delta 26 icmd0*pO7Uwfst_rBjW-_i4}|t8yFdOFftrqWB>qWK?bq_ diff --git a/data/stockpiles/miscliquid.dfstock b/data/stockpiles/miscliquid.dfstock index 56ef41c076b6afb1babccf74af65d5f006121ca3..dbf75a072e91902d3ee934f909c0dbff29b30471 100644 GIT binary patch delta 4 LcmcCinVqC1qI*$ diff --git a/data/stockpiles/plants.dfstock b/data/stockpiles/plants.dfstock index ac8573dd1d78fda8cf974e0571c7024bc1db6eca..ca55f19f98b1b203bf5bef88dd677ab137699e65 100644 GIT binary patch delta 7 OcmaDUaYbT72oC@bJ_7y# delta 29 lcmca2@ls+#2#@FlM#dS8j0+egRxmPbU}V_A$Z&v>0RV^I2h0Ef diff --git a/data/stockpiles/preparedmeals.dfstock b/data/stockpiles/preparedmeals.dfstock index 1df044d4855420be0cf579d5c3295a3b20ac4cb2..657c93f389775ef3f798afb5ec15a8225c6eb22f 100644 GIT binary patch literal 5 McmWe)p25fn00K4uumAu6 literal 26 gcmWe)p25gCfsqkNE?|^c!N{swN7e-9xnh4KLU{e delta 29 lcmZ1{by#YH90RVh~2VVdH diff --git a/data/stockpiles/unpreparedfish.dfstock b/data/stockpiles/unpreparedfish.dfstock index 465a95dddaf4044c86f9ec7b958739c01d39f275..13841da90175fdd324b56e32f3b3c4bd5209fdfc 100644 GIT binary patch delta 7 OcmdnNyO?*wVm1H_90Jb( delta 29 lcmZ3?yMuSbVm8qUjEplF85b~0tYBo=z{s$Jk>LO%0|0@t2b}-_ diff --git a/data/stockpiles/wax.dfstock b/data/stockpiles/wax.dfstock index f7ec69912e41e23f568923909774ee2d863ee8f4..35c69f6ca89bb85b5bbc6e13b7fa03c5b1f6ffec 100644 GIT binary patch literal 29 kcmWfVt`c(&a&-&|4RW>e@b`0#jCXQ%wF-BPn8C;Z0CMUF!~g&Q literal 98 zcmWgg&JuGDa&-&|4RW>e@b`0#jCXQ%wF-BPKoWNf^>y-bg^E||kU#z{mgqNAVh5 From fde51e5948603287d8d3db97b176dfc906f816e1 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 16:05:07 -0700 Subject: [PATCH 024/115] fix some debug strings --- plugins/stockpiles/OrganicMatLookup.cpp | 8 ++++---- plugins/stockpiles/StockpileSerializer.cpp | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/stockpiles/OrganicMatLookup.cpp b/plugins/stockpiles/OrganicMatLookup.cpp index 2367eddb5..a9e2210c9 100644 --- a/plugins/stockpiles/OrganicMatLookup.cpp +++ b/plugins/stockpiles/OrganicMatLookup.cpp @@ -21,7 +21,7 @@ namespace DFHack { */ void OrganicMatLookup::food_mat_by_idx(organic_mat_category::organic_mat_category mat_category, std::vector::size_type food_idx, FoodMat& food_mat) { - DEBUG(log).print("food_lookup: food_idx(%zd) ", food_idx); + DEBUG(log).print("food_lookup: food_idx(%zd)\n", food_idx); df::world_raws& raws = world->raws; df::special_mat_table table = raws.mat_table; int32_t main_idx = table.organic_indexes[mat_category][food_idx]; @@ -31,11 +31,11 @@ void OrganicMatLookup::food_mat_by_idx(organic_mat_category::organic_mat_categor mat_category == organic_mat_category::Eggs) { food_mat.creature = raws.creatures.all[type]; food_mat.caste = food_mat.creature->caste[main_idx]; - DEBUG(log).print("special creature type(%d) caste(%d)", type, main_idx); + DEBUG(log).print("special creature type(%d) caste(%d)\n", type, main_idx); } else { food_mat.material.decode(type, main_idx); - DEBUG(log).print("type(%d) index(%d) token(%s)", type, main_idx, food_mat.material.getToken().c_str()); + DEBUG(log).print("type(%d) index(%d) token(%s)\n", type, main_idx, food_mat.material.getToken().c_str()); } } std::string OrganicMatLookup::food_token_by_idx(organic_mat_category::organic_mat_category mat_category, std::vector::size_type idx) { @@ -74,7 +74,7 @@ void OrganicMatLookup::food_build_map() { int16_t OrganicMatLookup::food_idx_by_token(organic_mat_category::organic_mat_category mat_category, const std::string& token) { df::world_raws& raws = world->raws; df::special_mat_table table = raws.mat_table; - DEBUG(log).print("food_idx_by_token: "); + DEBUG(log).print("food_idx_by_token:\n"); if (mat_category == organic_mat_category::Fish || mat_category == organic_mat_category::UnpreparedFish || mat_category == organic_mat_category::Eggs) { diff --git a/plugins/stockpiles/StockpileSerializer.cpp b/plugins/stockpiles/StockpileSerializer.cpp index 04b046a3e..0cdfad13f 100644 --- a/plugins/stockpiles/StockpileSerializer.cpp +++ b/plugins/stockpiles/StockpileSerializer.cpp @@ -1642,8 +1642,8 @@ bool StockpileSerializer::write_food(StockpileSettings::FoodSet* food) { food_pair p = food_map((organic_mat_category)mat_category); if (!p.valid) continue; - DEBUG(log).print("food: %s\n", traits::key_table[mat_category]); - all = serialize_list_organic_mat(p.set_value, p.stockpile_values, (organic_mat_category)mat_category) && all; + all = serialize_list_organic_mat(p.set_value, p.stockpile_values, + (organic_mat_category)mat_category) && all; } return all; From 63f6d0bc72a350b7afd9711248f4e9c6bb825776 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 16:05:18 -0700 Subject: [PATCH 025/115] remove obsolete stockpile defs --- data/stockpiles/drinkanimal.dfstock | Bin 76 -> 0 bytes data/stockpiles/drinkplant.dfstock | Bin 1780 -> 0 bytes data/stockpiles/tallow.dfstock | 1 - 3 files changed, 1 deletion(-) delete mode 100644 data/stockpiles/drinkanimal.dfstock delete mode 100644 data/stockpiles/drinkplant.dfstock delete mode 100644 data/stockpiles/tallow.dfstock diff --git a/data/stockpiles/drinkanimal.dfstock b/data/stockpiles/drinkanimal.dfstock deleted file mode 100644 index f3cfabebf17ec146a46a1e43b5808916d6d4c525..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmWeKH4=9Ya&-&|4RW>e@b`0#jCXQ%weod!bU~7E3iWmJafM0DU}TuU$T)+MaRH;m R3Py$vj0`&%84fTq008$;6Da@y diff --git a/data/stockpiles/drinkplant.dfstock b/data/stockpiles/drinkplant.dfstock deleted file mode 100644 index c03acc8bcbe6006b47659f0c9271ce1e85dbd204..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1780 zcmZuyIgZpo6m1^>0mC*dLLwb$E-=}*U2d1UHfrgnN$N_36A}^<5^@j@!|(R{Zo4&d zVCnt+{iSaHJ-hoH47vP}wA&hWzm23_J&cO-Lm#!<-F=+o`QV=rzJ;+L^2!MKNU>kx zFQFfl5&t(6)KWC+h?sAHm2S68<@p51qk`Tmxbty477OqNv~(wGh-yiH7YI?m7VSL2 z5ZI2KJ_z<{au$^9nWajWBL7ENe3+!I@xH&7fwxd%FzQ-(D{i^!YPB&+=z!!f>a5n1 z_mj=QjZ$$fLLP(vmPubZMDc@n+OHYPY8ZfkaEe)Xqu&Wjpt4nSdhezr4%+m!qZqy9 zjaGD&677XOfPrFiI;?39K2w&AKz*cMCm|P1qytB{h88&+h}54;dQ4yV=(`zZG&15ozFMR##ldvxT463nP(?-k%bu*dhYTKliz&BE12; n=iT6!Wj-oswOVG{A5HVvG(Vf$U(M!sv-#6({x+Nc>Qm}N diff --git a/data/stockpiles/tallow.dfstock b/data/stockpiles/tallow.dfstock deleted file mode 100644 index 2dbd68d31..000000000 --- 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 From febc5299e9b16ff198045096655494b94b4d0398 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 16:51:11 -0700 Subject: [PATCH 026/115] don't mangle dfstock files --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a4068bc44..94bfad310 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -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$)' From 3661cfdcf0aba43e8487337ab21fe49716f7c26f Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 16:51:21 -0700 Subject: [PATCH 027/115] update furniture stockpile defs --- data/stockpiles/artifactfurniture.dfstock | Bin 33 -> 12 bytes data/stockpiles/bags.dfstock | Bin 34 -> 206 bytes data/stockpiles/buckets.dfstock | Bin 31 -> 2915 bytes data/stockpiles/masterworkfurniture.dfstock | Bin 34 -> 13 bytes data/stockpiles/pots.dfstock | Bin 33 -> 2921 bytes data/stockpiles/sand.dfstock | Bin 29 -> 211 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data/stockpiles/artifactfurniture.dfstock b/data/stockpiles/artifactfurniture.dfstock index 13c32a66ac77a93eba6d0d5ebb57cd5925d932ea..adf198477a5b38c3e2e61096ac3879356b89e8bc 100644 GIT binary patch literal 12 Tcmb2*QsQtdD#=VsOfCTc5iSFL literal 33 pcmb2*QsQtdD#=VsOfH$g$T)+MaRDR43Py$vj0`&%84fTq0056)2p#|c diff --git a/data/stockpiles/bags.dfstock b/data/stockpiles/bags.dfstock index 0e1cc2902e06a52a371eb89831d6d1a822c2642c..6f95e76386fb2c6036a394dc5955984c94782f1c 100644 GIT binary patch literal 206 zcmY++!3u&f7yw`*A!~HmvEz>aTP(4RmWB?ZQw;ru!BF{|kk8mlb!yr1yL`L%Vzb=K zBWG77bNxtEp)?5WU^jFwA=7$n#P(o2bkmn{H4aF& qC&AKJjf1y+XPj7H%+n*aqZ6?tZ(CD)2qVl#_#YvRFdyMJLKr`Ip+j5% literal 34 qcmb2*=Hd+Ybai)i^!4?hz{og*k#PYd!wN=*4U7ys7#R*QG5`R7mZQZ6}z~D!}6-80BZ&wr}ai&O(q>?%>LeM%u03$8D6j=Z5 ze##DIIl7X)M;=|?&vP!7{`>6fFS16gWJu1gt<95pt;vK|XdBApEVD)?vtYYJX`M-C zwIrvLnJ=Z*$(LGED5Xozywa;=MpcHxOjt)cnHNq<(-xY%Pv!!qu0LD|xAuW_e>_{0 zGwCmXfwsfVRfElauLh$De%wP5ZJm&s zFbh@#`7&}3Y+xV~ItD$Nyz|d3(b=#E87-=&H)I6!C1I#6hQK(F+&POzd(wehYE{X- zC7X$`rqH%RTY}^)$SqI>jKvnvWf%jbSG?negW7P34Ix+7MTm*7pbRA7(OkK>cg5U2_<33#=(6yZ$g;8{EC>6~RTghkFqof9N+D<3>eLTsi4j0RkD~ zd%@R{RMRX3HW{vVFw?iN*s_@laY@+5^HFP6bOkc&z7!}CS{N@lp^Tx79H*$T8Auxw zW)uxFI4Wg6O)$P5hb_aVQLJl^NNoAzT@ZYY{wV|ZUpIMc9O--fZBxx{$N3yPlYE9sn4=U@fvgn{7<`o;q zr03WADng8ycqaEkV|VfFDQpoxGE^F2<7L)a*90|QJ{1*4PKho`w_hEs5%tj64HULdEOZ{Z)50V9zDHHOvV|04c_wWDDW!21T1`{N*{+6z9N`*MKV(_U5$oM z99TRTcHbmsi9Bnilds3p zAycmR5@8HLzq-qe)sC)P_FS??Vjp4-e+;i7mUQLu<0i?p_yMcE%p2@NrmXJKX4&Rl z=iBGJf*yNu0(*G^dvyYP&D(T{@%$9{;uQGu6!_{C_=twR&%4dX$NLWtx7)>6)$QMpo88@~?c$tvkN0=C b?;e*=9+%wXa_n*WZX=48SW~1*QtNmxf{}QE1s0pYb%5p% z_jmMBmRBR&J@RQdpYIKo{`>5!ujkh0tq;~wA(M+GPRUiR$%IyD8_MJ&vqmP9V7o(U zok=FOB&U;!FQwMW7g|y%rAscn(u-t5RffYvz@tvC3MZv$3r*f9R|2N4KU@p9@_}@J zyjYPl={L$)SCCQSjdIqc-wkItzmbk3!q)W|!M%ml+{>*pg5SyD^;V|e4t_I-)HvXS zgpXvfs8!K+*>Fr#P^PK4ozzkU2kd&d3#0U>;aJOMkglC8Bh#Nx;Na9;%k;;S51LlI zD0DIBfk`)2mke{cZ$*3BwM=P^&i*eE3S`!ODNrJ`FkWy%8ABO4PElbq zkTxdFC>msNRLcA~!T5R{whWs_v8p{HvE`32BLG!w6E9-UURJC`(=DSew`RX{u3hGyzI+lu)q`?Rt$+{Y`@GS2X8@Rnakfj99bVBsTG`Z%oc1;Ml{l9_tx zYBc=FfyHxS_f2B9cuBBn;X`t|0VSS~0R3V)EOOjzpcmdI212aZc@bm-^Y{-q9=4BS z^7U9cWXjcEB8&m(S9h7Q+R?IQ&n0Ul_95o*$M70rNmm{}ZjwxkAF$fXyumJH%IY3% zmTlg3zJ1Os=&=`Pu$O1BS7)%-yiJD~&(DD`&Vet_fv?Viucw!G`~LoMz5P7BT5cX5 z#CCnR+q|D%&+i{M51$XmOaJNPW_$l(JH3+syxV---G6voKTN-@)_?Cd+q+K>(@Wa! e?(f#`cC#msGwyLV_Bea;IO85?gU8vE$NvDd5*)Yy literal 33 pcmb2*;^Of2^mBD~3<{aR$T)+MaRDR43Py$vj0`&%84fTq004IT2P*&o diff --git a/data/stockpiles/sand.dfstock b/data/stockpiles/sand.dfstock index a934bcb440d029c04c8b28954f7335a39bc375c4..87b2fe9ce693bc680fd9f1d8fbba9c332542d627 100644 GIT binary patch literal 211 zcmY++!3u&f7yw`bp_O#mvEz>aTP#}{tr;qWCmA|nFjW2~ Date: Mon, 20 Mar 2023 16:51:46 -0700 Subject: [PATCH 028/115] spacing --- plugins/stockpiles/StockpileSerializer.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/stockpiles/StockpileSerializer.cpp b/plugins/stockpiles/StockpileSerializer.cpp index 0cdfad13f..32546053d 100644 --- a/plugins/stockpiles/StockpileSerializer.cpp +++ b/plugins/stockpiles/StockpileSerializer.cpp @@ -1705,6 +1705,7 @@ bool StockpileSerializer::write_furniture(StockpileSettings::FurnitureSet* furni furniture->add_type(f_type); DEBUG(log).print("furniture_type %zd is %s\n", i, f_type.c_str()); } + all = serialize_list_material( furniture_mat_is_allowed, [&](const std::string& token) { furniture->add_mats(token); }, From 1a8f6fafffe41e068593cbab116fb099613cc1b0 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 17:00:44 -0700 Subject: [PATCH 029/115] update refuse stockpile defs --- data/stockpiles/rawhides.dfstock | Bin 730 -> 6 bytes data/stockpiles/tannedhides.dfstock | Bin 741 -> 19 bytes data/stockpiles/usablehair.dfstock | Bin 759 -> 46 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data/stockpiles/rawhides.dfstock b/data/stockpiles/rawhides.dfstock index b58c77edecc3fd043a6cd9e855cbe5308d164ccd..eedc71760dd3298bf49d84d89c85247544c5ad73 100644 GIT binary patch literal 6 NcmdO531Ez10009C0N4Nk literal 730 zcmXw1F_POb47A3QY{R+C6 z{o7HytB%x;s)=rsLojm@Iu9~ZXBM{UxdrMb$9biG*1<_3vLTnWc?pHiMZZ$N+c4@* zt>IayA2=m(*f+D*bPm?DD~Tg@h0%g~qtj#q^|^4_5bwfK0mR9JO_vvyjMv4A1I0z0 z2fEXD+@1&hz``>Yw4g@``h=0_*(R}B>0%hqfWJ<5-V%<~v)?NJOEwaVBx>1vg~+6P zpcXkZT?FLo;X0s=)b#T#9?ZhKb#zJM8S<(1!iCz&=A|O!K00L_5$etO&;Gl0uNeOZ!l9lBG5UC~kzBg!&(KuxTQ`nS!ZKfM?(95+`Y zCnUTK?3~2_p5ZN9ndKqu%l{Wh(tW8Ax9Y+(@mh~YJxm#)c%^&PeUx-~n++UVM6y6( z{Ump10X{yTTBDHI!j1t#Y?LF5DHitK7cOQw419u#bE@B|d)p)hx_RqdE?RBK(OFES zH)%sUeFl+7{V_;D+!j?wZFW4+S>~DAL3OR4LNL`Hz91_$AI-O>`Q9`?n$yqb^s71j JZccxi(?5GUsjL71 diff --git a/data/stockpiles/tannedhides.dfstock b/data/stockpiles/tannedhides.dfstock index 226bd0ec29b204e8be8e885e87ec364115542e1b..9c58d41ce6b004c24dbb6c5b0273903845ed2d0c 100644 GIT binary patch literal 19 acmdNA3Id}XUF+Y!=j^;LS#cOY4Z{aor->?VYgw@ zojSvd&@ggJ;&5-~Uc)(9&#okn)E7nx8jQ}f4K(D!WrMv7M@1t}9%%Z!s$_UqD-IA> zaUR{BzTx*Y>N^fzaG(S|Qcx#MM9(sb&7IDM;YRz*Y?m$JNdx<>;y-62u}Gqhy;qP- zx(DhIv(Q-pzCJD^%18}AE#iSJyje%*B%VQ^Ixk$Pn{8fehrAw%cN*R#d4M`au( z%G5{47}PD_Z8!ikV7wn5f5(ExWu>94Nw^N(Da^iTsU0KIGH`%Rtc-@&&7wZN7%m() zS0X0_yo~Ie#Q>h>HCtKaLG06i4=Cxr))v>Q!ZYwvpGG}InZWo?x2XFh>F_oiD71=X z0mHf^H)qj&db&EJpx8l<5kzd1Ba0~(^4(T0W<3maf{071>(sw)k^)`5buJgJGUVti zCNh|`A)Gz}$Rqz4CBW{As-rGD9_b{@Lfxo(uS+4A>Hu93_4zv5G#%L55S#brTibqb T+aGQ7vu%F0&F{AP(>DJA0E(=L diff --git a/data/stockpiles/usablehair.dfstock b/data/stockpiles/usablehair.dfstock index 97528d893bbc238bd0a2fbfd51ed4c0d3eb941da..2082d7dcf6783b380b96d1d586d9dd562afec6b2 100644 GIT binary patch literal 46 zcmdPW|1&Nqi(<|1?$Wuo3JY}0cK)ZZNEI}NjrP709?xun%gD0C?Lm4?lR zNjK^Y&qBkU_HB%I8t92Eod-$yV*cPE?ic`n{ZSBaq?i(=S3ysb+O_= zaS`W%?(`kEhfzPU@Qej5=uv_`VIq3ANo?+PG>m7!pKf+u6OJ^nUn~D(HWG^@>ezdQ z$fR4K4mmR&1?21DG@^~v^usJ3%)+~MbWGwI@~QK}g}R%~OGU`bo_M3-U6Kc>LquJl zMW#%Bbc{h=^4*3VGy}%_>2bHu04@s+Wl6$y=uQ##MN37DD9hjhHL)rh-d2nL^kTSh zTwRHrknl3Ha~1=5hUaW$mWQw}|6d?Ux1~ays|(M>Q#~5>FlB<`J6)n~lce3-Y~au$ zk_8IuC%HHa@ag%~8HL0Sc8m~WqwHBsv9Ry5a52kn;1f)oQ~gf;+bSv0*<0sw(P~4E z&SD~iNh{LnGl)Fu_fZ1kuBbZdvg45sGSAeFs`vUS1XCU03$m_{FkXA-*zQHow~Dcia4Fn}3Fku+IPh From e4ab868dd53980a32594964007b4acac7c85a92d Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 17:02:36 -0700 Subject: [PATCH 030/115] remove unrepresentable refuse stockpile defs --- data/stockpiles/bones.dfstock | 157 ------------ data/stockpiles/corpses.dfstock | 157 ------------ data/stockpiles/craftrefuse.dfstock | 364 ---------------------------- data/stockpiles/hair.dfstock | 157 ------------ data/stockpiles/horns.dfstock | Bin 730 -> 0 bytes data/stockpiles/shells.dfstock | 157 ------------ data/stockpiles/skulls.dfstock | 157 ------------ data/stockpiles/teeth.dfstock | 157 ------------ 8 files changed, 1306 deletions(-) delete mode 100644 data/stockpiles/bones.dfstock delete mode 100644 data/stockpiles/corpses.dfstock delete mode 100644 data/stockpiles/craftrefuse.dfstock delete mode 100644 data/stockpiles/hair.dfstock delete mode 100644 data/stockpiles/horns.dfstock delete mode 100644 data/stockpiles/shells.dfstock delete mode 100644 data/stockpiles/skulls.dfstock delete mode 100644 data/stockpiles/teeth.dfstock diff --git a/data/stockpiles/bones.dfstock b/data/stockpiles/bones.dfstock deleted file mode 100644 index aeb2cdcf8..000000000 --- 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/corpses.dfstock b/data/stockpiles/corpses.dfstock deleted file mode 100644 index dbaa101c1..000000000 --- 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/craftrefuse.dfstock b/data/stockpiles/craftrefuse.dfstock deleted file mode 100644 index f834658d4..000000000 --- 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/hair.dfstock b/data/stockpiles/hair.dfstock deleted file mode 100644 index 1aad78df1..000000000 --- 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 44726daa047e31f19d1fe00209f5029460d8e174..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 730 zcmXw1F_POb43x%_Y{R+C6 z{o7Nwt4`ESs)??%L$GiWI*l?>Z&tSHxdrNH$N5gfqN9^SWJ4}#^AZZ3ihiYGw_(zq zI>U?5Fmg)buy5vG(>Ykrt|X4s7e)&jjLx$SG~~i%L%a(|1rR3>Hho@IGG13J4ir~$ z9_UWraeEr|0}C%$(1IQ%=o2QQXPd<4PG`e-2K;5V%a(AYf&EtbpRbq^6%1@n9C-t)p`i&yY`@7cSJzHm?;SuSepYhIdIGq)riaeHNKA z_0cf~b<1}f4$ur3@2AJzu>iQNG?X<7*P%N_*cUAoF`_Jk2h_x>Xn5N!`qPWy!f|sY zazet($j(^|;2B=Cl|>%HzWjfIB;D5vajh;q6EF2>)Wehsitlubx=)f0Z?l0zt4J0o zte@oOEWoGdQ)d(sJJ>Noh>db&F~!2Z+sehPhk;KpaY^+%^>3S`Kv!>_%SEdVIXa7p z3?^+zr_Uhrs6R#th`XZdsLPH=I?1w7H>%$2rw~kafG^03%}4XCZNInekGA>QHow~D Jcia4Fn}2%@sj2_~ diff --git a/data/stockpiles/shells.dfstock b/data/stockpiles/shells.dfstock deleted file mode 100644 index 548152764..000000000 --- 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/skulls.dfstock b/data/stockpiles/skulls.dfstock deleted file mode 100644 index ae52e4537..000000000 --- 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/teeth.dfstock b/data/stockpiles/teeth.dfstock deleted file mode 100644 index 06875f8b5..000000000 --- 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 From 0d1caafeb36ab0ee7a98ad8cff6ef29a419434df Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 17:08:37 -0700 Subject: [PATCH 031/115] update stone stockpile defs --- data/stockpiles/bauxite.dfstock | Bin 42 -> 21 bytes data/stockpiles/clay.dfstock | Bin 125 -> 104 bytes data/stockpiles/coalproducing.dfstock | Bin 69 -> 48 bytes data/stockpiles/economic.dfstock | Bin 266 -> 245 bytes data/stockpiles/flux.dfstock | Bin 118 -> 97 bytes .../{iron.dfstock => ironore.dfstock} | Bin 84 -> 63 bytes .../{metal.dfstock => metalore.dfstock} | Bin 389 -> 368 bytes data/stockpiles/otherstone.dfstock | Bin 1123 -> 1102 bytes ...aster.dfstock => plasterproducing.dfstock} | Bin 103 -> 82 bytes 9 files changed, 0 insertions(+), 0 deletions(-) rename data/stockpiles/{iron.dfstock => ironore.dfstock} (51%) rename data/stockpiles/{metal.dfstock => metalore.dfstock} (87%) rename data/stockpiles/{plaster.dfstock => plasterproducing.dfstock} (60%) diff --git a/data/stockpiles/bauxite.dfstock b/data/stockpiles/bauxite.dfstock index 25524dcb9032e269b96a0f3e161a091056a1c451..83a49cb5b46a80a7e75a73eafe9b9711f6455162 100644 GIT binary patch delta 4 LcmdNAogfMT0w4h8 delta 26 icmWgDnjk7Vfst_rBjW-_h82tq8yFdPFftrqWB>q6eg&KW diff --git a/data/stockpiles/clay.dfstock b/data/stockpiles/clay.dfstock index 7e661688d746282ef78dd723b8c54c97b24b3695..e01c7abaf7d58c77aec38c6b4f65b5523f40baca 100644 GIT binary patch delta 4 Lcmb=;n2-Sg1h@g- delta 26 icmd0(osc0qfst_rBjW-_h82tq8yFdPFftrqWB>qUdqEOa<)# diff --git a/data/stockpiles/economic.dfstock b/data/stockpiles/economic.dfstock index b69a8034c0f694c53da4e9d61fbdc15695d09241..976f4cc11f7a5094000d3be86817cb054b515097 100644 GIT binary patch delta 6 NcmeBT`pP)rD*y>N0|)>B delta 28 kcmey$*u^yAtLOwq#uqSb_Rd| 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 90182276c7dd93c5de4a4fff79c828085788a190..2108b60ac3ecba9a4671642eef6870b0c9e86842 100644 GIT binary patch delta 4 LcmWHspI{FF18@Oj delta 26 icmcBynP4wEfst_rBjW-_h82tq8yFdPFftrqWB>qIq6QiO 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 a8b58b0adb9a986c64b6293b6a09bcf4d81026b8..8cbb60959edb7679dcb68f4d7cf8c7504bb03643 100644 GIT binary patch delta 7 OcmZo={=l@MfDr%-WdfW4 delta 29 lcmeys)XKb}fKhY;BjXH4#s!QFD;OCzFf#67WH`Xc004Yu2U7q5 diff --git a/data/stockpiles/otherstone.dfstock b/data/stockpiles/otherstone.dfstock index 79c865f4e5bc598b68f1d683d2ce5976c7070be7..1f9f867edf1c8544c656445f60f1bc88abe1d681 100644 GIT binary patch delta 7 OcmaFNagJky9}55tLIT79 delta 29 lcmX@d@t9+SAB*S&M#dS8j0+eURxmPbU}W6E$Z&v>0RVut2YUbj 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 6ac4d4607b4b2df25fa02c132bc910b5046cee8b..2764150a3f55b7791ba460ef3c692992856ca887 100644 GIT binary patch delta 4 LcmYcfnh*p41PB3~ delta 26 icmWGapAaNEfst_rBjW-_h82tq8yFdPFftrqWB>qOAO=$a From fecebe5d711f7d4a33064b59e2b94be17e261e53 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 17:12:54 -0700 Subject: [PATCH 032/115] update ammo stockpile defs --- data/stockpiles/artifactammo.dfstock | Bin 33 -> 12 bytes data/stockpiles/bolts.dfstock | Bin 45 -> 923 bytes data/stockpiles/boneammo.dfstock | Bin 29 -> 8 bytes data/stockpiles/masterworkammo.dfstock | Bin 34 -> 13 bytes data/stockpiles/metalammo.dfstock | Bin 768 -> 725 bytes data/stockpiles/woodammo.dfstock | Bin 29 -> 8 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data/stockpiles/artifactammo.dfstock b/data/stockpiles/artifactammo.dfstock index 874ec21064edbf5f45e96dcb2a57a5a51462099c..16cd6f57e91f5567da74cd624dcbaa24cf529bec 100644 GIT binary patch literal 12 TcmZ?bQsQtdD#=VsOfCTc6AlBV literal 33 pcmZ?bQsQtdD#=VsOfH$g$T)+MaRDR43PyMG*AN!H`Vp@iB(-KZ>ZDnu7^Z$-e6$ zYGFYz^ULNJedG}6PNGw2PnruZQRH*tfkzD;Ea^1-0B;pk8jQ`L2PtGKo{OJ;R2ngR zc&0j{uDR`r^=eqZh7D@i5E#3ZGrD!KR|orba8L(_R+HzebQ9+Xt2Ixu%+2FTEewXCwHn&>ndztKtbi0W&>zc-2MUt=gnbm}Ok*?!qVV{k*X|ykm_StBg KMq3;0v+)1$lq_H@-s$$Br$h?AD78;OlJX8Lk<%F delta 92 zcmcc0+Q6pl^nz82&(qI8$lcM;)7i>1$lni{@9yv8vQhXMqo@c%O|XZnk56!jtE=@nv diff --git a/data/stockpiles/woodammo.dfstock b/data/stockpiles/woodammo.dfstock index 623ca25f239a3faf33bc1e79710a50a0356cb6c8..6bec8b1e589154621fba15a68f13d3a73a472e2e 100644 GIT binary patch literal 8 PcmZ=_6JiPX_jdsR1?>Tt literal 29 lcmZ=_6JiPX_jj4V$T)+MaRDR43Py Date: Mon, 20 Mar 2023 17:17:25 -0700 Subject: [PATCH 033/115] update bars/blocks stockpile defs --- data/stockpiles/ash.dfstock | Bin 28 -> 7 bytes data/stockpiles/bars.dfstock | Bin 803 -> 760 bytes data/stockpiles/blocks.dfstock | Bin 2671 -> 2662 bytes data/stockpiles/coal.dfstock | Bin 31 -> 8 bytes data/stockpiles/ironbars.dfstock | Bin 39 -> 18 bytes data/stockpiles/metalbars.dfstock | Bin 768 -> 725 bytes data/stockpiles/otherbars.dfstock | Bin 715 -> 37 bytes data/stockpiles/pearlash.dfstock | Bin 33 -> 12 bytes data/stockpiles/pigironbars.dfstock | Bin 43 -> 22 bytes data/stockpiles/potash.dfstock | Bin 31 -> 10 bytes data/stockpiles/soap.dfstock | Bin 29 -> 8 bytes data/stockpiles/steelbars.dfstock | Bin 40 -> 19 bytes 12 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data/stockpiles/ash.dfstock b/data/stockpiles/ash.dfstock index 70948081e2e7a2f858a236093a08acc37cdeac68..d313e0096d9bd3df718a9b7dfe60dfa50de46d89 100644 GIT binary patch literal 7 OcmWGy delta 79 zcmeytx|oeQsGDsfvk5<+r=Ne2yQ80{vz5EQkIP20XN;mE2(e%fS0A6?5LZ{9$=Xb3 bMJF&a&R}F*z{s$IQDOrl!wyD<1B?s+g8CJQ diff --git a/data/stockpiles/blocks.dfstock b/data/stockpiles/blocks.dfstock index 293dc52510e59dea7cdc58504a883a7cece347eb..cd08d93338e7f7e73da8d65b8c904069047f53f8 100644 GIT binary patch delta 72 zcmaDa@=Sy&=1$lq_H@-s$$Br$h?AD78;OlJXA^9~~b delta 92 zcmcc0+Q6n9^nz82&(qI8$lcM;)7i>1$lni{@9yv8vQhXMqo@c%O|XZnk56!jtEE diff --git a/data/stockpiles/otherbars.dfstock b/data/stockpiles/otherbars.dfstock index 8eb0d432c9397b1bf9cda39e40417fd28fb6e48f..4cbcc1c8f9edaee5a76d306803c3fcc9d1e07b46 100644 GIT binary patch literal 37 ncmWGi=3;U7cl6<63-Awd4EEq+1`!+qu8u)IAQnrozheLZk%9;g literal 715 zcmZvZyG{c!5JlGoWq5^0;=hQZC<>kJooq&#wO6(`h&28sN=iyfBpOOS4J)v+qjfpQ zGk5M>+pi0LiQ3pkXjD&)p_*T(+94gl=0usUJ122&50tAMQLB7LTBDD^uad5`!a07M zKu5x(?%SLJf$}!8N$QJD{63W(JbSQViyHXj2z!fL0)97oAn}s>B@lJKSWw@d%w&>( zSB7yQ5{ZoF^R&c8ON6=^njg}WB%$`i&p3u z&)L0h2Sm|N{GTlB8V|8AEDCH{V5q7u?4mO diff --git a/data/stockpiles/potash.dfstock b/data/stockpiles/potash.dfstock index 0db45dd7f02fc03b156fcdeec39002e5355f8711..8a09e446fe97cd24fe93d9840f65a46a3256c0df 100644 GIT binary patch literal 10 RcmWII;9?8#4{;3k000VX0y+Qy literal 31 ncmWII;9?8#4{;3kn83(5gOPCoBf|>>6 literal 40 wcmWF%l;ZdF^AB=&^z(GK3J!5~^_jrPID?UK0VBf-Mu`oK3_BPZ4lptR0LbGBmjD0& From 93b289042cbbda5dd860d2d1ed447f21d3320000 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 17:18:57 -0700 Subject: [PATCH 034/115] update gem stockpile defs --- data/stockpiles/cutgems.dfstock | Bin 2907 -> 2886 bytes data/stockpiles/cutglass.dfstock | Bin 64 -> 43 bytes data/stockpiles/cutstone.dfstock | Bin 1880 -> 1893 bytes data/stockpiles/roughgems.dfstock | Bin 2907 -> 2886 bytes data/stockpiles/roughglass.dfstock | Bin 64 -> 43 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data/stockpiles/cutgems.dfstock b/data/stockpiles/cutgems.dfstock index 42949b8dcc2b9070e7c83af389a31a7f3ec5e305..1049acd6735e43165f17811674c93e0f7ceb57f1 100644 GIT binary patch delta 7 OcmcaDc1&!88#e$AWdhFt delta 29 lcmX>mc3W(N8@K2LM#dS8j0+eURxnCzU}V_A$Z&v>0RV!t2b}-_ diff --git a/data/stockpiles/cutglass.dfstock b/data/stockpiles/cutglass.dfstock index 7523381b419e564539214d990c8119cf6b4ab40a..6997d42acd16a5e7a44368c673e96614cb0570cd 100644 GIT binary patch delta 4 LcmZ?Jo}di?0?+{` delta 26 icmdOPn4m2>fst_rBjW-_h82tw8yFdOFftrqWB>qD!v*yK diff --git a/data/stockpiles/cutstone.dfstock b/data/stockpiles/cutstone.dfstock index ccbcaf42e9f2a154a1c3fb63aca66d0595102aa5..5e0f3f881ba08e522bf372252d1aa083988f934d 100644 GIT binary patch delta 46 zcmcb?_mqz*>d{6fM|LG81y4W!Aa_SUPiHHqAb;QBcxNA1N56Py|Db?iSC`P>5CBrx B4f_B9 delta 33 pcmaFLcY}{9>cB=OM|RN(jEplF85b}ztYDPbz{s$Jk>LO%0|2TQ2)_UT diff --git a/data/stockpiles/roughgems.dfstock b/data/stockpiles/roughgems.dfstock index 20ea6b98ace404d22c71d7a728116978e90db471..fdad4be1added15df89853ffa6f8849acfc412c5 100644 GIT binary patch delta 7 OcmcaDc1&!88#e$AWdhFt delta 29 lcmX>mc3W(N8@K2LM#dS8j0+eURxnCzU}V_A$Z&v>0RV!t2b}-_ diff --git a/data/stockpiles/roughglass.dfstock b/data/stockpiles/roughglass.dfstock index 9571b3f80ba1a33f3bacad1036beb0e4788c6eba..23b95b81ac8ac31bb49bd82b1fddf850cb8226ef 100644 GIT binary patch delta 4 LcmZ?Jo}di?0?+{` delta 26 icmdOPn4m2>fst_rBjW-_h82tw8yFdOFftrqWB>qD!v*yK From e9594a0c3beaeb39c288c5dcc1e6adcc9ad5f1ca Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 17:23:22 -0700 Subject: [PATCH 035/115] update finished goods stockpile defs --- data/stockpiles/artifactfinishedgoods.dfstock | Bin 33 -> 12 bytes data/stockpiles/crafts.dfstock | Bin 82 -> 5866 bytes data/stockpiles/goblets.dfstock | Bin 31 -> 5803 bytes .../masterworkfinishedgoods.dfstock | Bin 34 -> 13 bytes data/stockpiles/stonetools.dfstock | Bin 1886 -> 2063 bytes data/stockpiles/toys.dfstock | 2 ++ data/stockpiles/woodtools.dfstock | 2 ++ 7 files changed, 4 insertions(+) create mode 100644 data/stockpiles/toys.dfstock create mode 100644 data/stockpiles/woodtools.dfstock diff --git a/data/stockpiles/artifactfinishedgoods.dfstock b/data/stockpiles/artifactfinishedgoods.dfstock index 760b0867d663d7d8f5c4242ebf4d0b5dd8bb4546..08e8e0706ba17660eb19c85f176b0644dead52f3 100644 GIT binary patch literal 12 TcmYe|QsQtdD#=VsOfCTc6pjPM literal 33 pcmYe|QsQtdD#=VsOfH$g$T)+MaRDR43PyY{bJR+qmLRclnZeB-5Rf^wJV(%F4| zd4|>E@{JNM{kX`SkScEctWeeEd9XoMtFyhe`Rb}Mq7J<@Hk7Ng%+_j!_4KE-u3nut z&|+5SzEsAn-WVl9sod(!YqMLOiz>sPb7`G0tE<8(RriGv-mk7Cwz~1pTj@FujX`Graxj8`odH6o&3`;BWk$$dKPK(>2f4Fe z^@TP0`gaFmrhV0ha{cFpXwpEDiCk1bT1*6~0Q#ag>%SjVNaaMOWe@lOYV}??wf^gJ z*#}_t|1CDw0q_E~pcsTNBLIO062hTTNKmwOcgG;AtkXx}l;{q_l|$mxMie5<)Mutu zn|C5tYf7>ajrJRO(i+V`Y=F!;8lqrh8!@w#88mJRpY2!H`=$LPO$sRHTj8{q8lDnT zWr-fOg9{6>w8jWVq!%vdG)i=|GFsFeXC~@g<)c&7OY!5B;+Y-gTsOo@s5atOL5Ul3 zNHH|J-VH*+SZK4U1|;2TH%ZB0gC3g1R2x8lUqi8vOhdqKvkbejGPwqnl;h$4&qQV~$BFB=1|R!5ie-0LDI&HuvLn3Og%zEKj7rxz|pD zh7Or>ap`V2sf=w{CU_DW`KAm`xpcYg9?KjZ%U-8H+1pqR3xi;BS7^uyJdF z()iX0$32lKjntE(_zfnl&T#q?uN_0jm59#7oDz$As8*(LS_fP*P=rx;@G#YY%mq>3 z4;3aM4#7C6LG#}Z?SHE+=E@D&(u37Q43+AhA{y&XEVgUw`y)M4*R`n7sE5pul@iV0 zZAPXW@<6$N2L>EZ4hC-`^09`Li&4uG?U8U*J*JtAj~{S|G))E+;GU6_1VaUgsYWG- z=qRzS%`~PJREFG7B<&r^Yq49Ri|j&b)GdZT zYTcxx#8pPUZ?QsoN-IF>N!Q~DlNKl~xsFK9d(*MmNxJQrT2zH;7E?0~mne6~Z0d1Z zlt*cslqD2!@~4GZ69V-lPMpWVO$(8MIUSRHz~w1bLv6^$%B0uL&fMy4LhmEIM@nfV=X{mWE)gz zt4Kv;TjG8j<^o}MTvW_8sRN19ay=YmpC72P5E+I^w&u!iAO_l%i4*|&gv4R?f={$7 z7inClT{iO?MVwu5hGYLI9FL3ZEas-{OgbP)zn7&3Bao!1mBuxhB;bb(MIj$b9LFJ= zBN@_fQ*x+bB8zF9vDit6Lyd25$4e!_Y!r|8*yY0b2tcU9;3?q$JYxj_R10oU-$YOy zdm-@{fKQW{uE^4Y%`zS0J=?aPt8a9X0;Jue&$!Hn<2QnIux0axkv0Qpqr(Kzpn?;n z8qQ)$Q+$P)F6vZ`qH8=}9*9@)z9RW0;vI%9(%-Z>CXr%j4I;({b}=WbypNX?E+t?N zVuF{H>&)qDP(k(G>G%wkFhvH(*8zRpDozOlM6f068gy+PSmuMy(x+q{5JbJAOVoP4 zGq+JhAjDZQG#Y)2`V)j;6S8kk$iC$?O*XzfCH(4?@at2;Z%zrny}qz7-#>kPc=_e}YXA8BEMFcz zygq(^{dW8G@$vbW>F4%RG&)2`M9)5a#eEIP6^Yw*z hd42lu@ZIapCyh6(@n){^=99)7)_8N!c=Ji){{U{5F$Dks delta 31 ncmaE*8^n}kJ(1a3bOIye3`WKUj0`InB{ncJ>|kU#z{mgqhW!Vo diff --git a/data/stockpiles/goblets.dfstock b/data/stockpiles/goblets.dfstock index 6bf3c6ccb777ce4474a7bceb763e545de3a8e77a..b117634ba5c45e349563210aa9569cdc8a25a741 100644 GIT binary patch literal 5803 zcmZ`-U2o*J6@BQs+1A)Joqi?L78v-YfPp>)K@g;G6h%wip+qf7%~*aJIEfc9U~B@{ z0h)i*pV>oF+Bq6cA9Y3E&vOqi`Q3m2`P*MtwlFHJUhS`nAK(Flxh!^5#FyZC6>DJ z(7qgu&`5(CDL}?T!MXDWmwCdZYA$2 zp!H6ze|OYdIQYi`9~5+~jw?D{9g;UJGa~4=Z+M+DN(Kkno8w+ATL0H>4Z!~(VO+(k1C{cqS5jI z_yB6{UO2V>>+-h`!0P||*;yx*5vT>lAbcGG2sDro4vj*BqHTv;22o?3J^`mhcNnf5 z5~ntz5@DvkFumHm6{T8Jl8xxJ-@udJXa-^jWX{nL1smImnWe&@aZ~tgzp>sg?I&qc zKr!!x(_U(LN=TJ8demkY7Gi0Q5sXMLT*+ya=xAlMXgSV8w52LXr>K|W=9J=@9p&7R zVy>UEeok#P&9W!B?EZb?kB$}%RyJlsbL1F zB-@;FoA28NoSgEy&Gw0tyTL`+tf?I%&2NJ3T_eCLig~7TV%W%97^z~t`B#amLY0;y zI;dRfq*kbew;RFr@Lj_$4&qQV~$BFB=35w!5idS2IC=;HuvLn3Og&e zEKj7rxzkR9Xd9&=9%7PzL6-Wa}?jL>=xqhKxjFUP*G%C~>$JuEC z#%M4VpnR0r5jFrH7c~zGiz-AQ9=eE0MqZLa!42lTnsuiiiC`AeM7JDCT04^0VzopU z*@e`o9fm(@-K3+&RYtw*@rUx1{s5_GU5_J7`ax+abwp};Faw*Nq&EXoi)t{BoiCRUSjb?3hE90a?(%%rMTegBNCYs2JU-ypn2+gRL?) z)&lfJwn3G)iBv?kCGNLjE)ZtRMa5i`I*=%>)cGL$>`0B3C@@U2HCGRr7-&@?QUK%= z5{KCfKGCXDq;Z{A*}`iSadyGU$Not;9v9bH%w0X0bU=`PFKZ1(AW79KjcYPVzz=vg z;CN~r$03>{zmR^Ll0yv>Sxn=M#Y#FHTI}78mr8=!C?4;z%OB$-0HF$lr-1+Sj8y@7eRIEg~Ve3wk9!Mk);Kj6*|Oww(UJv-{>j@NUKMmahVOLZv^RJE9MO&Z2{0m zhY6xV1t)5i&tghbe1(}V>Qs$t=saE?h*$8wBKalaEru=9-}NOXkt(+a5n~6tn3Gj` zh?f&CC14I>f|r!*!s#Zfp!#lgdvX5(hctm}iGlTRbi4W~fIF_@`?5)mgr z(W z^4+|3L|YHJMF;`NSK3Udc4B{^7bi+2_z-p29C;cf-FQ5JD$ySBklA@v_TWMaHNAV0 zw`I!w;Y*HSlznwZ_VpRrH)mwua+)R^U!D_wbx!#8IpH_wgx_Ahw$DF2ez<@BX{BZT==JCVB(=XHKYyb0456_Q3K3`p`|9t=O)63(JAMT&7e$(9l`{m*J n{m)NVuf_ArrDyk?EpbB)&@HD0sE>!Zf&j~f36AIc(V literal 31 ncmYe|;9_(4ck*!!nZU?6gOPCoBf|C*wrO8I7ErV zzbGX$FR`dni90+sC&#%cF|8yuMTyrfGcPr#62|2SE-gqc%FHiP;&!b_PAw?O%+E{A xQR4JXEG|hcN-ND#;&3b~$xKU3F42OUsO64qq!y}?T5uz^kd4$r7^wv}5&*AKM}z Date: Mon, 20 Mar 2023 17:25:47 -0700 Subject: [PATCH 036/115] update cloth stockpile defs --- data/stockpiles/adamantinecloth.dfstock | Bin 45 -> 24 bytes data/stockpiles/adamantinethread.dfstock | Bin 45 -> 24 bytes data/stockpiles/cloth.dfstock | Bin 4919 -> 5009 bytes data/stockpiles/thread.dfstock | Bin 4919 -> 5009 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data/stockpiles/adamantinecloth.dfstock b/data/stockpiles/adamantinecloth.dfstock index e63bd31d021f0d0dce2373a5c6e31b96906b9962..38781d313086daffb7f7f89cc18b323bf439af80 100644 GIT binary patch delta 4 LcmdOum>>ZF0yqHf delta 26 icmb2pogg7Pfst_rBjW-_h82tw8yFdOFftrqWB>q8MFqS7 diff --git a/data/stockpiles/adamantinethread.dfstock b/data/stockpiles/adamantinethread.dfstock index 0b50c6c3935b0a4b210398ef7ff255fac2984266..2231b389f544c9daf78536e8ff6e0e7737c80874 100644 GIT binary patch delta 4 LcmdOum>>ZF0yqHf delta 26 icmb2pogg7Pfst_rBjW-_h82tw8yFdOFftrqWB>q8MFqS7 diff --git a/data/stockpiles/cloth.dfstock b/data/stockpiles/cloth.dfstock index fbe98f3728f2c53ed198b3883c8b24cd95670c47..26c4c52f300b14ad85bf66ff1df64ad35dbba7f6 100644 GIT binary patch literal 5009 zcma)ANsiPo6g>l7&=LZPVF9RCiRWbJPPr~aSV!kLNMc8bpQdi(tR=ONCY zzu%8vv)1VT+M2X$?8&slLtFoK>Wik+rm zf^BD-a;!+eKBDp!6znu^HL764(lF|FoKE~y-lj0zY7CD<7Q?DzxYZcJ=Hhx`6t)_} z-N+cWg=0k=&KD-IB8e4ASl&!wDG8+T2+lelV<|B-ms1!zjwb`>up2qf5y$J3OW3d+ z_cT|q7k3E`7p9AlM<6T^FQzJ$?*7|mdMwLGzx#B(5<1H~LjbKu-TEMC1E1HCy$Rd=1O`fF?UU7y55ya5J- z422jBp2AXOgC~d~pr=wI8-y7e*-+3^C6JBO*?1qQ+!H7+s{tzsrZ9XEb7>14#9ZD2 z6z&Qbp!gbxC^RHDKq2gl;?RnQ2eH@{`n)eJfd?^$t#DWX#<9B`HUkqdbxdJjl#`4= zUNr1Frm?%JQ=Y&N86<9n3$3bIh77~_G5bRyyXY~1g5rp%i zZ~<`F2|NR23{xis>|Kc?l6a~~EX`8G0!R(pTWTCMR&R=-FBHRJLow_+!ncvIG*bfg zg|IXezOaPnG-357iL)zVrHSAqAv^;JUp2ywNm#uVZU*IFE9dn^F_;&HE3NSOR0LZ} zVL4P-8I*sL1cJtI5{b=HHaX;p#xEyqVJ!{J2KbY*M zG+(lAd;BZ3_Ryz8XD86s?ivp*hmHC1_e5QJ@L~X4vn$5E4!gCLx$(T$18>us{l4!^ zQT9!-@r#$vh_&m!ts8GBTaG2zZ>?>ztts07z_K(uGl0)WrYRefJM>|H*Vbh@-M^_k Y_$`XQN72t{@hf`yJ6imS7Js9~J!7g}d;kCd diff --git a/data/stockpiles/thread.dfstock b/data/stockpiles/thread.dfstock index eee0653acbf1edd4577813336a0bc5f45e5c2ba9..2774f50e8a5aa2e2a55c51b13760eadd8daf8f9a 100644 GIT binary patch literal 5009 zcma)A$#R=87{2>fyUk3OnJ$O6N6?OM3dpt^wgH^>#yj*u`pjh_2`6k{uAe^r`-1rU z@5k<2+8Etk8*^-Ho0+D+Z>ryA-hRT9ibL#LM`)8q+xP?ru>Mr)PsgyeS(L>Lb5FVLp9Z6b@|>Sc=5vD(rOPbGTt{ z0u_-6=7>ZvbR_Z>w{8oGu`L98L@1^(Yzu=`M>vj)d<6xEPGMUTEG2mM^wIof}O^#Mip#W8b;lQ(}|zT>lB7tjp1>~Vpw$yw;ChZTwE`V!d7Fr z8yUm4aIA>K`N9NNB(Wk1%bO`IC4m$k!CA*+EG35KatcGo@nql}b|c3*;&^>>2^*H< zp5_V`15aS+1YUe1f`d#%FaaWlJ3z$HBSEkf{4FIYRzz{=@Fo#>lL)+o1>Ud%ccVyf z8u90rz$GPdF~}HpfFzg_o-6AsOES1@B!eX-87yzfVM$2==Zh4u>ZHWx;%AG*-`md!Lsn?Adoywy&2d9-a_0e2wpY zn)0bH{2A`eyy2NCs=<2SZZmvlzvG9u=9C{YHN$6iIyoWWQ@;OT+P|su;XlyvlLBRDVN7v*F{VCVv~8Y&d9DlXz_%k)=e15fdb{5>Rh~al{{se^W1;{6 literal 4919 zcma)AyOPr|6ph<-B(TG4hDWhOY3p&Nq|-V|V%D)ej(f*ySsAA6F6vv3$TLj@)-KU6BrT4&A=HfBj+$^F0d~G=7md~7lL=1d%e6|Bd&1J z3Ku}bd&D16=@q;IB8I6G3CxSYl@<&ZKwwc7SUd#BL1Sqa5|&XA>|Nn!^yPjLg!7_s z0dUs|JOgA5Qzr%NU5O)-c&bS(%~HbxNDbRtY8*6HZ;GKW6vJUdG3+|Rw~??kQv&sc zurw3Cu!QF{Vf7}7vnyexiQpt5JOc<{HNuTaSiKc)2IXHXm-R(4m=}dBt?>9%1Y1gB zIaF8~lz);0g2rzWjlY64z9bqyI5Zx7+CM2TN2Kv3(f-L8utKgGo(*rcCTmR5y3&nd zr}bAOw$IBM?gZ`(cd9nVee%w5H}B4H=lwmtv4^r~y~d1jKjz1{>~&!Aq{_R0Fzan@ zKChd7_g84+p^vA=j-b6gR32LP8`JLhL|J%n(Sx-)WW!#E-P*!zJ?~Y|+tucHY#Wp1 zZI$i(;*~RE?WV2E${TvQ97=H9TU)L7CaeDg^V}Rv4?Z23Ca+BD(EI&OUFP|C|E}=h Y*C_fHML(k1&*=HDX!bjr{fTCO0Y-01TmS$7 From 02c57f944a5d2c558c73a95e216699f5c12e80c2 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 17:39:40 -0700 Subject: [PATCH 037/115] update weapon stockpile defs --- data/stockpiles/adamantineweapons.dfstock | Bin 0 -> 29 bytes data/stockpiles/artifactweapons.dfstock | Bin 38 -> 17 bytes data/stockpiles/bronzeweapons.dfstock | Bin 46 -> 25 bytes data/stockpiles/copperweapons.dfstock | Bin 46 -> 25 bytes data/stockpiles/ironweapons.dfstock | Bin 44 -> 23 bytes data/stockpiles/masterworkweapons.dfstock | Bin 39 -> 18 bytes data/stockpiles/metalweapons.dfstock | Bin 773 -> 730 bytes data/stockpiles/platinumweapons.dfstock | Bin 0 -> 27 bytes data/stockpiles/silverweapons.dfstock | Bin 0 -> 25 bytes data/stockpiles/steelweapons.dfstock | Bin 45 -> 24 bytes data/stockpiles/stoneweapons.dfstock | Bin 1885 -> 1898 bytes data/stockpiles/trapcomponents.dfstock | Bin 224 -> 203 bytes data/stockpiles/unusableweapons.dfstock | Bin 0 -> 7 bytes data/stockpiles/usableweapons.dfstock | Bin 0 -> 7 bytes data/stockpiles/woodentools.dfstock | Bin 35 -> 0 bytes 15 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/stockpiles/adamantineweapons.dfstock create mode 100644 data/stockpiles/platinumweapons.dfstock create mode 100644 data/stockpiles/silverweapons.dfstock create mode 100644 data/stockpiles/unusableweapons.dfstock create mode 100644 data/stockpiles/usableweapons.dfstock delete mode 100644 data/stockpiles/woodentools.dfstock diff --git a/data/stockpiles/adamantineweapons.dfstock b/data/stockpiles/adamantineweapons.dfstock new file mode 100644 index 0000000000000000000000000000000000000000..6236196f0e9703f3b256c8587c99be8f028b9d62 GIT binary patch literal 29 kcmZo-lu{D$^z#pLcl7ggwsLfF^mX(L@$_@GU~pgn0BVv3@&Et; literal 0 HcmV?d00001 diff --git a/data/stockpiles/artifactweapons.dfstock b/data/stockpiles/artifactweapons.dfstock index ba91931e0e069823cbeac65cb2dec05c24991ead..0299f41d2e2478893dba784749fe9fb1bbdb440a 100644 GIT binary patch literal 17 YcmZo-q8j|IN~ diff --git a/data/stockpiles/copperweapons.dfstock b/data/stockpiles/copperweapons.dfstock index d3a2aac2fcfca2deb38ce1ed0cee9b2c0f4705b1..a30c53107a94b0364d319b0623a231d090d7afa1 100644 GIT binary patch delta 4 LcmdOsoFEAR0zd%q delta 26 icmb2tn;q8j|IN~ diff --git a/data/stockpiles/ironweapons.dfstock b/data/stockpiles/ironweapons.dfstock index 2128596fe949bfe1720f9d1be04bb0944fa24676..8c0afecd16e397bccd998712a9d78c4bbf3904ac 100644 GIT binary patch delta 4 LcmdN9pCAqZ0x$sU delta 26 icmWgFnIJAYfst_rBjW-_h82tw8yFdOFftrqWB>q7`vtiG diff --git a/data/stockpiles/masterworkweapons.dfstock b/data/stockpiles/masterworkweapons.dfstock index 29d2ec1b843a14908024805b9421815e739478fa..61bbfd17b1d585c72706429bb4cba09ac37fcc64 100644 GIT binary patch literal 18 ZcmZo- literal 39 vcmZo-qslWzek3t>e;=30@=O;2WH%0R delta 97 zcmcb`+RCQV#Q26)iO>ZF0yqHf delta 26 icmb2pogg7Pfst_rBjW-_h82tw8yFdOFftrqWB>q8MFqS7 diff --git a/data/stockpiles/stoneweapons.dfstock b/data/stockpiles/stoneweapons.dfstock index 8a6ee77aa472f31e712f4dc22ec701667beb9a5b..acba2374c111028ff8d0379cf57a00da29249a2c 100644 GIT binary patch delta 51 zcmcc1_ll3XiSgM+W=D24B?V7E{~&iqKTl^Xryzgd;CN>rS4Y2iXaAspU{{yW;1CN2 G2L=F{P!6yF delta 38 ucmaFGcbAX3iSfurW=D2O3kC;<35<+07#SBZGOS>f*ucoJgOT9?BLe`>dI@v@ diff --git a/data/stockpiles/trapcomponents.dfstock b/data/stockpiles/trapcomponents.dfstock index 9f7c4194b5c2a24dcf43d037cd3d6b2fc67c1592..475b530d4c5f17a7313a2a0660eb059dee4dfd50 100644 GIT binary patch delta 6 NcmaFBc$#s-X#fgk0|@{C delta 28 kcmX@j_<(W3Y0(Lcj58P+7cercV3gRv$gqQv;Q%880EDjx*8l(j diff --git a/data/stockpiles/unusableweapons.dfstock b/data/stockpiles/unusableweapons.dfstock new file mode 100644 index 0000000000000000000000000000000000000000..6af8d1b5a2a48242cd3fb5bee39b763d76ced295 GIT binary patch literal 7 OcmZo-WU*jyU<3dK5CH)I literal 0 HcmV?d00001 diff --git a/data/stockpiles/usableweapons.dfstock b/data/stockpiles/usableweapons.dfstock new file mode 100644 index 0000000000000000000000000000000000000000..248610ae941c9286c6d5750425297d6e8248c16e GIT binary patch literal 7 OcmZo-WU*j$U;qFG5&;1K literal 0 HcmV?d00001 diff --git a/data/stockpiles/woodentools.dfstock b/data/stockpiles/woodentools.dfstock deleted file mode 100644 index de3acb7945ccceee4f6fa92d626bd2fc0211ac87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35 rcmYe|;bIB#_xBNE3HSGRnZU?6gOPCoBf| Date: Mon, 20 Mar 2023 17:42:21 -0700 Subject: [PATCH 038/115] update armor stockpile defs --- data/stockpiles/artifactarmor.dfstock | Bin 38 -> 17 bytes data/stockpiles/bronzearmor.dfstock | Bin 46 -> 25 bytes data/stockpiles/copperarmor.dfstock | Bin 46 -> 25 bytes data/stockpiles/ironarmor.dfstock | Bin 44 -> 23 bytes data/stockpiles/masterworkarmor.dfstock | Bin 39 -> 18 bytes data/stockpiles/metalarmor.dfstock | Bin 773 -> 730 bytes data/stockpiles/otherarmor.dfstock | Bin 122 -> 101 bytes data/stockpiles/steelarmor.dfstock | Bin 45 -> 24 bytes data/stockpiles/unusablearmor.dfstock | Bin 0 -> 7 bytes data/stockpiles/usablearmor.dfstock | Bin 0 -> 7 bytes 10 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/stockpiles/unusablearmor.dfstock create mode 100644 data/stockpiles/usablearmor.dfstock diff --git a/data/stockpiles/artifactarmor.dfstock b/data/stockpiles/artifactarmor.dfstock index 8d81ee35585d3995b7ae9bebca153b18d871bf9c..af207f4fd5cd112a3d676a9f8d81ca155e8fd70c 100644 GIT binary patch literal 17 YcmeBTq8j|IN~ diff --git a/data/stockpiles/copperarmor.dfstock b/data/stockpiles/copperarmor.dfstock index 695eeb321abfd6b97a795283860c10bf6d14655e..bc7b8ec58e5a07cb0a80cd813037b7c34e1a1bda 100644 GIT binary patch delta 4 LcmdOsoFEAR0zd%q delta 26 icmb2tn;q8j|IN~ diff --git a/data/stockpiles/ironarmor.dfstock b/data/stockpiles/ironarmor.dfstock index a1cdc6fd1133e9ca5d3978179972cfee9d28cfc3..9474bd69f36ca53d6a47ebd963b46b7d7fdcb39b 100644 GIT binary patch delta 4 LcmdN9pCAqZ0x$sU delta 26 icmWgFnIJAYfst_rBjW-_h82tw8yFdOFftrqWB>q7`vtiG diff --git a/data/stockpiles/masterworkarmor.dfstock b/data/stockpiles/masterworkarmor.dfstock index e3d457dc88d36da0dfd598376e1b424500ccfe9b..09330aa79153d2d16996ffb6a2cd168abe42cae3 100644 GIT binary patch literal 18 ZcmeBTqslWzek3t>e;=30@=O;2YL^a~ delta 97 zcmcb`+RCQV#rTHRiOqUhX$hn diff --git a/data/stockpiles/steelarmor.dfstock b/data/stockpiles/steelarmor.dfstock index aff9f56d2184b6ebf962722b3cff3868e3f4b02d..c2ba86fcbbe767fce19ad31f97eca698842a63a8 100644 GIT binary patch delta 4 LcmdOum>>ZF0yqHf delta 26 icmb2pogg7Pfst_rBjW-_h82tw8yFdOFftrqWB>q8MFqS7 diff --git a/data/stockpiles/unusablearmor.dfstock b/data/stockpiles/unusablearmor.dfstock new file mode 100644 index 0000000000000000000000000000000000000000..d5b2e9c64925daefe29d8247bb6b02c69bdec9b8 GIT binary patch literal 7 OcmeBTWQkx%U<3dL2mwg| literal 0 HcmV?d00001 diff --git a/data/stockpiles/usablearmor.dfstock b/data/stockpiles/usablearmor.dfstock new file mode 100644 index 0000000000000000000000000000000000000000..58c9296de954a2967b0d70677fde9aab32707c97 GIT binary patch literal 7 OcmeBTWQkx*U;qFH3IRy~ literal 0 HcmV?d00001 From d1db7b4ff39341014fcfae0ad2f40b11439ff3ef Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 17:44:05 -0700 Subject: [PATCH 039/115] round out the stockpile defs --- data/stockpiles/otherweapons.dfstock | Bin 122 -> 1992 bytes data/stockpiles/tools.dfstock | Bin 29 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 data/stockpiles/tools.dfstock diff --git a/data/stockpiles/otherweapons.dfstock b/data/stockpiles/otherweapons.dfstock index 3c59675f00eb52be2680bd170d2882ea23d568dc..f1127a78419b9876b5ec72273bbd1a410bf8b588 100644 GIT binary patch literal 1992 zcmZ`)+m6&Q3|*u_Jgi{3Uy6`WzXI`uo0=v}nv^)5-R?{Og>U1-IO&X3w<8|w_;P%F z?EZQ3_pUnJ$Jkc4gQt*Z<72kfp^1U3r()Ur>X~QCmQ!^Q=a1EGmzcxcc@n8^4Ib0w zR?l~4Th4p2J%PEc$Yvtg47UN7gI64Tx)jJG%4z8 z$xhMlyc${>P?$g*%g(DMQ!L6WHsV@Go9X->G4IFXsM-;~>v^z~-=h#?o#YMrz)nP4 zdP)t3qA*zQDerKB{K(#_4LlM;;g~7fdbTNNgQJ9E@Yg`_C*hbN#_O4qRRNj|Xu!-1(vDX|K7Xmf3 z0c>Ie(H6i;qM36d%k3VZjVa6*Hnh5?K~U+%3K=KD)X&%NUz~ORVQgC$y7Ov$T-^rL zbw3@qb2(TVI%Ga9v?{KfdMPr1Ifno)=BULNpFnL^h7jqihLQ%%(BB?eXcU3%nP)vFUs| z6cNLeq8}H4O6Y^j#$t7_*BW<2<3lNZtt0Y9c9^bO<0dA0(BWwC$Sj!Do(s&HySK3jP%VmSSw%dwj#my^5H85e& za}^DEGHh3ef}PGQq7(qWmSCmoME5hb)Z^z{a4RBl4>5jL0N_kuq(Q Date: Mon, 20 Mar 2023 19:09:29 -0700 Subject: [PATCH 040/115] add weapons toggle stockpile setting --- data/stockpiles/weapons.dfstock | Bin 0 -> 709 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/stockpiles/weapons.dfstock diff --git a/data/stockpiles/weapons.dfstock b/data/stockpiles/weapons.dfstock new file mode 100644 index 0000000000000000000000000000000000000000..e4968f56d4a16f14d4fc2edfca5a24651d83c615 GIT binary patch literal 709 zcmZ{iJx&BM42741#s>hz@*^sGDnzxOj7g%+&&bIrbh!&R<7P}W5>Pz4D9_LNoafJr zuS>da!b?tXzDn%-xi{w*x(5P(NT0aYAW(K3qiAoe^Z?wYWu1F*Su5QjeUZ(HfFc{A zBd{3FrA)a&*W%5Yu7GP8Zqa?n&93R6W@mvW$6*qkA>Kami-W(liyz Date: Mon, 20 Mar 2023 19:21:44 -0700 Subject: [PATCH 041/115] in-progress docs --- docs/plugins/stockpiles.rst | 218 +++++++++++++++++++++++++++++++++++- 1 file changed, 216 insertions(+), 2 deletions(-) diff --git a/docs/plugins/stockpiles.rst b/docs/plugins/stockpiles.rst index 83cfada02..3d262b1e8 100644 --- a/docs/plugins/stockpiles.rst +++ b/docs/plugins/stockpiles.rst @@ -46,9 +46,18 @@ Examples Imports a player-exported settings file named ``plants``, or the library ``plants`` settings file if a player-exported file by that name doesn't exist. +``stockpiles import -m enable plants`` + Enables plants in the selected stockpile. +``stockpiles import -m disable category_food -f tallow`` + Disables all tallow in the selected food stockpile. ``stockpiles export mysettings`` Export the settings for the currently selected stockpile to a file named ``dfhack-config/stockpiles/mysettings.dfstock``. +``stockpiles export mysettings -i categories,types`` + Export the stockpile category and item settings, but ignore the container + and general settings. This allows you to import the configuration later + without touching the container and general settings of the target + stockpile. Options ------- @@ -92,6 +101,211 @@ The stockpiles settings library ------------------------------- DFHack comes with a library of useful stockpile settings files that are ready -for import: +for import. If the stockpile configuration that you need isn't directly +represented, you can often use the ``enable`` and ``disable`` modes and/or +the ``filter`` option to transform an existing saved stockpile setting. Some +stockpile configurations can only be achieved with filters since the contents +of the stockpile lists are different for each world. For example, to disable +all tallow in your main food stockpile, you'd run this command:: + + stockpiles import category_food -m disable -f tallow + +Top-level categories +~~~~~~~~~~~~~~~~~~~~ + +Each stockpile category has a file that allows you to enable or disable the +entire category, or with a filter, any matchable subset thereof:: + + category_ammo + category_animals + category_armor + category_bars_blocks + category_cloth + category_coins + category_corpses + category_finished_goods + category_food + category_furniture + category_gems + category_leather + category_refuse + category_sheets + category_stone + category_weapons + category_wood + +For many of the categories, there are also settings files that manipulate interesting +subsets of that category. + +Ammo stockpile adjustments +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +bolts +metalammo +boneammo +woodammo +masterworkammo +artifactammo + +Animal stockpile adjustments +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +traps +cages + +Armor stockpile adjustments +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +metalarmor +otherarmor +ironarmor +bronzearmor +copperarmor +steelarmor +masterworkarmor +artifactarmor +usablearmor +unusablearmor + + +Bar stockpile adjustments +~~~~~~~~~~~~~~~~~~~~~~~~~ + +bars +metalbars +ironbars +pigironbars +steelbars +otherbars +coal +potash +ash +pearlash +soap +blocks + +Cloth stockpile adjustments +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +thread +adamantinethread +cloth +adamantinecloth + +Notes: + +* ``thread`` and ``cloth`` refers to all materials that are not adamantine. + +Finished goods stockpile adjustments +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +stonetools +woodtools +crafts +goblets +toys +masterworkfinishedgoods +artifactfinishedgoods + +Food stockpile adjustments +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +preparedmeals +unpreparedfish +plants +booze +seeds +dye +miscliquid +wax + +Furniture stockpile adjustments +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +pots +bags +buckets +sand +masterworkfurniture +artifactfurniture + +* Because of the limitations of Dwarf Fortress, ``bags`` cannot distinguish + between empty bags and bags filled with gypsum powder. + +Gem stockpile adjustments +~~~~~~~~~~~~~~~~~~~~~~~~~ + +roughgems +roughglass +cutgems +cutglass +cutstone + +Refuse stockpile adjustments +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +=========== ================== ================== +Exclusive Forbid Permit +=========== ================== ================== +corpses forbidcorpses permitcorpses +skulls forbidskulls permitskulls +bones forbidbones permitbones +shells forbidshells permitshells +teeth forbidteeth permitteeth +horns forbidhorns permithorns +hair forbidhair permithair +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). + +rawhides +tannedhides +usablehair + +You can get a stockpile of usable refuse with the following set of commands:: + + stockpiles import category_refuse -m enable -f skulls + stockpiles import category_refuse -m enable -f bones + stockpiles import category_refuse -m enable -f shells + stockpiles import category_refuse -m enable -f teeth + stockpiles import category_refuse -m enable -f horns + stockpiles import usablehair -m enable + +Stone stockpile adjustments +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +metalore +ironore +economic +flux +plasterproducing +coalproducing +otherstone +bauxite +clay + +Weapon stockpile adjustments +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -TODO: port alias library here +weapons +metalweapons +stoneweapons +otherweapons +trapcomponents +ironweapons +silverweapons +bronzeweapons +copperweapons +steelweapons +platinumweapons +adamantineweapons +masterworkweapons +artifactweapons +usableweapons +unusableweapons From 581c7370ca24a670e86eb41e64417e74249c6cfc Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 22:29:26 -0700 Subject: [PATCH 042/115] prepend searchable prefix --- plugins/stockpiles/StockpileSerializer.cpp | 315 ++++++++++----------- plugins/stockpiles/StockpileSerializer.h | 6 +- 2 files changed, 156 insertions(+), 165 deletions(-) diff --git a/plugins/stockpiles/StockpileSerializer.cpp b/plugins/stockpiles/StockpileSerializer.cpp index 32546053d..203d466b0 100644 --- a/plugins/stockpiles/StockpileSerializer.cpp +++ b/plugins/stockpiles/StockpileSerializer.cpp @@ -222,29 +222,34 @@ static typename df::enum_traits::base_type linear_index(df::enum_traits tr return -1; } -static void set_elem(bool all, char val, bool enabled, bool& elem) { - if (all || enabled) - elem = val; -} - static bool matches_filter(const string& filter, const string& name) { if (!filter.size()) return true; + DEBUG(log).print("searching for '%s' in '%s'\n", filter.c_str(), name.c_str()); return std::search(name.begin(), name.end(), filter.begin(), filter.end(), [](unsigned char ch1, unsigned char ch2) { return std::toupper(ch1) == std::toupper(ch2); } ) != name.end(); } -static void set_filter_elem(const string& filter, char val, const string& name, const string& id, char& elem) { - if (matches_filter(filter, name)) { +static void set_flag(const char* name, const string& filter, bool all, char val, bool enabled, bool& elem) { + if ((all || enabled) && matches_filter(filter, name)) { + DEBUG(log).print("setting %s to %d\n", name, val); + elem = val; + } +} + +static void set_filter_elem(const char* subcat, const string& filter, char val, + const string& name, const string& id, char& elem) { + if (matches_filter(filter, subcat + ((*subcat ? "/" : "") + name))) { DEBUG(log).print("setting %s (%s) to %d\n", name.c_str(), id.c_str(), val); elem = val; } } template -static void set_filter_elem(const string& filter, T_val val, const string& name, T_id id, T_val& elem) { - if (matches_filter(filter, name)) { +static void set_filter_elem(const char* subcat, const string& filter, T_val val, + const string& name, T_id id, T_val& elem) { + if (matches_filter(filter, subcat + ((*subcat ? "/" : "") + name))) { DEBUG(log).print("setting %s (%d) to %d\n", name.c_str(), (int32_t)id, val); elem = val; } @@ -286,15 +291,15 @@ static bool serialize_list_itemdef(FuncWriteExport add_value, return all; } -static void unserialize_list_itemdef(bool all, char val, const string& filter, FuncReadImport read_value, - int32_t list_size, std::vector& pile_list, item_type::item_type type) { +static void unserialize_list_itemdef(const char* subcat, bool all, char val, const string& filter, + FuncReadImport read_value, int32_t list_size, std::vector& pile_list, item_type::item_type type) { int num_elems = Items::getSubtypeCount(type); pile_list.resize(num_elems, '\0'); if (all) { for (auto idx = 0; idx < num_elems; ++idx) { ItemTypeInfo ii; ii.decode(type, idx); - set_filter_elem(filter, val, ii.toString(), idx, pile_list.at(idx)); + set_filter_elem(subcat, filter, val, ii.toString(), idx, pile_list.at(idx)); } return; } @@ -308,7 +313,7 @@ static void unserialize_list_itemdef(bool all, char val, const string& filter, F WARN(log).print("item type index invalid: %d\n", ii.subtype); continue; } - set_filter_elem(filter, val, id, ii.subtype, pile_list.at(ii.subtype)); + set_filter_elem(subcat, filter, val, id, ii.subtype, pile_list.at(ii.subtype)); } } @@ -334,12 +339,12 @@ static void quality_clear(bool(&pile_list)[7]) { std::fill(pile_list, pile_list + 7, false); } -static void unserialize_list_quality(bool all, bool val, const string& filter, +static void unserialize_list_quality(const char* subcat, bool all, bool val, const string& filter, FuncReadImport read_value, int32_t list_size, bool(&pile_list)[7]) { if (all) { for (auto idx = 0; idx < 7; ++idx) { string id = ENUM_KEY_STR(item_quality, (df::item_quality)idx); - set_filter_elem(filter, val, id, idx, pile_list[idx]); + set_filter_elem(subcat, filter, val, id, idx, pile_list[idx]); } return; } @@ -353,7 +358,7 @@ static void unserialize_list_quality(bool all, bool val, const string& filter, WARN(log).print("invalid quality token: %s\n", quality.c_str()); continue; } - set_filter_elem(filter, val, quality, idx, pile_list[idx]); + set_filter_elem(subcat, filter, val, quality, idx, pile_list[idx]); } } @@ -395,14 +400,14 @@ static bool serialize_list_other_mats( return all; } -static void unserialize_list_other_mats(bool all, char val, const string& filter, +static void unserialize_list_other_mats(const char* subcat, bool all, char val, const string& filter, const std::map other_mats, FuncReadImport read_value, int32_t list_size, std::vector& pile_list) { size_t num_elems = other_mats.size(); pile_list.resize(num_elems, '\0'); if (all) { for (auto & entry : other_mats) - set_filter_elem(filter, val, entry.second, entry.first, pile_list.at(entry.first)); + set_filter_elem(subcat, filter, val, entry.second, entry.first, pile_list.at(entry.first)); return; } @@ -417,7 +422,7 @@ static void unserialize_list_other_mats(bool all, char val, const string& filter WARN(log).print("other_mats index too large! idx[%zd] max_size[%zd]\n", idx, num_elems); continue; } - set_filter_elem(filter, val, token, idx, pile_list.at(idx)); + set_filter_elem(subcat, filter, val, token, idx, pile_list.at(idx)); } } @@ -445,14 +450,15 @@ static bool serialize_list_organic_mat(FuncWriteExport add_value, return all; } -static void unserialize_list_organic_mat(bool all, char val, const string& filter, FuncReadImport read_value, - size_t list_size, std::vector& pile_list, organic_mat_category::organic_mat_category cat) { +static void unserialize_list_organic_mat(const char* subcat, bool all, char val, const string& filter, + FuncReadImport read_value, size_t list_size, std::vector& pile_list, + organic_mat_category::organic_mat_category cat) { size_t num_elems = OrganicMatLookup::food_max_size(cat); pile_list.resize(num_elems, '\0'); if (all) { for (size_t idx = 0; idx < num_elems; ++idx) { string token = OrganicMatLookup::food_token_by_idx(cat, idx); - set_filter_elem(filter, val, token, idx, pile_list.at(idx)); + set_filter_elem(subcat, filter, val, token, idx, pile_list.at(idx)); } return; } @@ -464,7 +470,7 @@ static void unserialize_list_organic_mat(bool all, char val, const string& filte WARN(log).print("organic mat index too large! idx[%d] max_size[%zd]\n", idx, num_elems); continue; } - set_filter_elem(filter, val, token, idx, pile_list.at(idx)); + set_filter_elem(subcat, filter, val, token, idx, pile_list.at(idx)); } } @@ -493,8 +499,8 @@ static bool serialize_list_item_type(FuncItemAllowed is_allowed, return all; } -static void unserialize_list_item_type(bool all, char val, const string& filter, FuncItemAllowed is_allowed, - FuncReadImport read_value, int32_t list_size, std::vector& pile_list) { +static void unserialize_list_item_type(const char* subcat, bool all, char val, const string& filter, + FuncItemAllowed is_allowed, FuncReadImport read_value, int32_t list_size, std::vector& pile_list) { // TODO can we remove the hardcoded list size? size_t num_elems = 112; pile_list.resize(num_elems, '\0'); @@ -506,7 +512,7 @@ static void unserialize_list_item_type(bool all, char val, const string& filter, if (all) { for (size_t idx = 0; idx < num_elems; ++idx) { string id = ENUM_KEY_STR(item_type, (df::item_type)idx); - set_filter_elem(filter, val, id, idx, pile_list.at(idx)); + set_filter_elem(subcat, filter, val, id, idx, pile_list.at(idx)); } return; } @@ -523,7 +529,7 @@ static void unserialize_list_item_type(bool all, char val, const string& filter, WARN(log).print("error item_type index too large! idx[%d] max_size[%zd]\n", idx, num_elems); continue; } - set_filter_elem(filter, val, token, idx, pile_list.at(idx)); + set_filter_elem(subcat, filter, val, token, idx, pile_list.at(idx)); } } @@ -545,7 +551,7 @@ static bool serialize_list_material(FuncMaterialAllowed is_allowed, return all; } -static void unserialize_list_material(bool all, char val, const string& filter, +static void unserialize_list_material(const char* subcat, bool all, char val, const string& filter, FuncMaterialAllowed is_allowed, FuncReadImport read_value, int32_t list_size, std::vector& pile_list) { // we initialize all disallowed values to 1 @@ -562,7 +568,7 @@ static void unserialize_list_material(bool all, char val, const string& filter, for (size_t idx = 0; idx < num_elems; ++idx) { MaterialInfo mi; mi.decode(0, idx); - set_filter_elem(filter, val, mi.toString(), idx, pile_list.at(idx)); + set_filter_elem(subcat, filter, val, mi.toString(), idx, pile_list.at(idx)); } return; } @@ -576,7 +582,7 @@ static void unserialize_list_material(bool all, char val, const string& filter, WARN(log).print("material type index invalid: %d\n", mi.index); continue; } - set_filter_elem(filter, val, id, mi.index, pile_list.at(mi.index)); + set_filter_elem(subcat, filter, val, id, mi.index, pile_list.at(mi.index)); } } @@ -598,14 +604,14 @@ static bool serialize_list_creature(FuncWriteExport add_value, const std::vector return all; } -static void unserialize_list_creature(bool all, char val, const string& filter, +static void unserialize_list_creature(const char* subcat, bool all, char val, const string& filter, FuncReadImport read_value, int32_t list_size, std::vector& pile_list) { size_t num_elems = world->raws.creatures.all.size(); pile_list.resize(num_elems, '\0'); if (all) { for (size_t idx = 0; idx < num_elems; ++idx) { auto r = find_creature(idx); - set_filter_elem(filter, val, r->name[0], r->creature_id, pile_list.at(idx)); + set_filter_elem(subcat, filter, val, r->name[0], r->creature_id, pile_list.at(idx)); } return; } @@ -618,7 +624,7 @@ static void unserialize_list_creature(bool all, char val, const string& filter, continue; } auto r = find_creature(idx); - set_filter_elem(filter, val, r->name[0], r->creature_id, pile_list.at(idx)); + set_filter_elem(subcat, filter, val, r->name[0], r->creature_id, pile_list.at(idx)); } } @@ -796,7 +802,7 @@ static void read_elem(const char *name, DeserializeMode mode, bool is_set = elem_fn() != 0; if (mode == DESERIALIZE_MODE_SET || is_set) { T_elem val = (mode == DESERIALIZE_MODE_DISABLE) ? 0 : elem_fn(); - DEBUG(log).print("setting %s=%d\n", name, val); + DEBUG(log).print("setting %s to %d\n", name, val); setting = val; } } @@ -809,17 +815,13 @@ static void read_category(const char *name, DeserializeMode mode, enum df::stockpile_group_set::Mask cat_mask, std::function clear_fn, std::function set_fn) { - bool has_cat = has_cat_fn(); - bool all = has_cat && cat_fn().has_all() && cat_fn().all(); - bool just_disable = all && mode == DESERIALIZE_MODE_DISABLE; - - if (mode == DESERIALIZE_MODE_SET || just_disable) { + if (mode == DESERIALIZE_MODE_SET) { DEBUG(log).print("clearing %s\n", name); cat_flags &= ~cat_mask; clear_fn(); } - if (!has_cat || just_disable) + if (!has_cat_fn()) return; if (mode == DESERIALIZE_MODE_DISABLE && !(cat_flags & cat_mask)) @@ -828,6 +830,7 @@ static void read_category(const char *name, DeserializeMode mode, if (mode == DESERIALIZE_MODE_SET || mode == DESERIALIZE_MODE_ENABLE) cat_flags |= cat_mask; + bool all = cat_fn().all(); char val = (mode == DESERIALIZE_MODE_DISABLE) ? (char)0 : (char)1; DEBUG(log).print("setting %s %s elements to %d\n", all ? "all" : "marked", name, val); @@ -932,32 +935,18 @@ void StockpileSerializer::read_ammo(DeserializeMode mode, const std::string& fil [&](bool all, char val) { auto & bammo = mBuffer.ammo(); - unserialize_list_itemdef(all, val, filter, + unserialize_list_itemdef("type", all, val, filter, [&](const size_t& idx) -> const std::string& { return bammo.type(idx); }, bammo.type_size(), pammo.type, item_type::AMMO); - unserialize_list_material(all, val, filter, ammo_mat_is_allowed, + unserialize_list_material("mats", all, val, filter, ammo_mat_is_allowed, [&](const size_t& idx) -> const std::string& { return bammo.mats(idx); }, bammo.mats_size(), pammo.mats); - pammo.other_mats.resize(2, '\0'); - if (bammo.other_mats_size() > 0) { - // TODO remove hardcoded value - for (int i = 0; i < bammo.other_mats_size(); ++i) { - const std::string token = bammo.other_mats(i); - const int32_t idx = token == "WOOD" ? 0 : token == "BONE" ? 1 - : -1; - DEBUG(log).print("other mats %d is %s\n", idx, token.c_str()); - if (idx == -1) - continue; - pammo.other_mats.at(idx) = 1; - } - } - pammo.other_mats.resize(2, '\0'); if (all) { - set_filter_elem(filter, val, "WOOD", 0, pammo.other_mats.at(0)); - set_filter_elem(filter, val, "BONE", 1, pammo.other_mats.at(1)); + set_filter_elem("other", filter, val, "WOOD", 0, pammo.other_mats.at(0)); + set_filter_elem("other", filter, val, "BONE", 1, pammo.other_mats.at(1)); } else { // TODO can we un-hardcode the values? for (int i = 0; i < bammo.other_mats_size(); ++i) { @@ -965,15 +954,15 @@ void StockpileSerializer::read_ammo(DeserializeMode mode, const std::string& fil const int32_t idx = id == "WOOD" ? 0 : id == "BONE" ? 1 : -1; if (idx == -1) continue; - set_filter_elem(filter, val, id, idx, pammo.other_mats.at(idx)); + set_filter_elem("other", filter, val, id, idx, pammo.other_mats.at(idx)); } } - unserialize_list_quality(all, val, filter, + unserialize_list_quality("core", all, val, filter, [&](const size_t& idx) -> const std::string& { return bammo.quality_core(idx); }, bammo.quality_core_size(), pammo.quality_core); - unserialize_list_quality(all, val, filter, + unserialize_list_quality("total", all, val, filter, [&](const size_t& idx) -> const std::string& { return bammo.quality_total(idx); }, bammo.quality_total_size(), pammo.quality_total); }); @@ -1006,10 +995,10 @@ void StockpileSerializer::read_animals(DeserializeMode mode, const std::string& [&](bool all, char val) { auto & banimals = mBuffer.animals(); - set_elem(all, val, banimals.empty_cages(), panimals.empty_cages); - set_elem(all, val, banimals.empty_traps(), panimals.empty_traps); + set_flag("cages", filter, all, val, banimals.empty_cages(), panimals.empty_cages); + set_flag("traps", filter, all, val, banimals.empty_traps(), panimals.empty_traps); - unserialize_list_creature(all, val, filter, + unserialize_list_creature("", all, val, filter, [&](const size_t& idx) -> const std::string& { return banimals.enabled(idx); }, banimals.enabled_size(), panimals.enabled); }); @@ -1113,47 +1102,47 @@ void StockpileSerializer::read_armor(DeserializeMode mode, const std::string& fi [&](bool all, char val) { auto & barmor = mBuffer.armor(); - set_elem(all, val, barmor.unusable(), parmor.unusable); - set_elem(all, val, barmor.usable(), parmor.usable); + set_flag("nouse", filter, all, val, barmor.unusable(), parmor.unusable); + set_flag("canuse", filter, all, val, barmor.usable(), parmor.usable); - unserialize_list_itemdef(all, val, filter, + unserialize_list_itemdef("body", all, val, filter, [&](const size_t& idx) -> const std::string& { return barmor.body(idx); }, barmor.body_size(), parmor.body, item_type::ARMOR); - unserialize_list_itemdef(all, val, filter, + unserialize_list_itemdef("head", all, val, filter, [&](const size_t& idx) -> const std::string& { return barmor.head(idx); }, barmor.head_size(), parmor.head, item_type::HELM); - unserialize_list_itemdef(all, val, filter, + unserialize_list_itemdef("feet", all, val, filter, [&](const size_t& idx) -> const std::string& { return barmor.feet(idx); }, barmor.feet_size(), parmor.feet, item_type::SHOES); - unserialize_list_itemdef(all, val, filter, + unserialize_list_itemdef("hands", all, val, filter, [&](const size_t& idx) -> const std::string& { return barmor.hands(idx); }, barmor.hands_size(), parmor.hands, item_type::GLOVES); - unserialize_list_itemdef(all, val, filter, + unserialize_list_itemdef("legs", all, val, filter, [&](const size_t& idx) -> const std::string& { return barmor.legs(idx); }, barmor.legs_size(), parmor.legs, item_type::PANTS); - unserialize_list_itemdef(all, val, filter, + unserialize_list_itemdef("shield", all, val, filter, [&](const size_t& idx) -> const std::string& { return barmor.shield(idx); }, barmor.shield_size(), parmor.shield, item_type::SHIELD); - unserialize_list_material(all, val, filter, + unserialize_list_material("mats", all, val, filter, armor_mat_is_allowed, [&](const size_t& idx) -> const std::string& { return barmor.mats(idx); }, barmor.mats_size(), parmor.mats); - unserialize_list_other_mats(all, val, filter, + unserialize_list_other_mats("other", all, val, filter, mOtherMatsWeaponsArmor.mats, [&](const size_t& idx) -> const std::string& { return barmor.other_mats(idx); }, barmor.other_mats_size(), parmor.other_mats); - unserialize_list_quality(all, val, filter, + unserialize_list_quality("core", all, val, filter, [&](const size_t& idx) -> const std::string& { return barmor.quality_core(idx); }, barmor.quality_core_size(), parmor.quality_core); - unserialize_list_quality(all, val, filter, + unserialize_list_quality("total", all, val, filter, [&](const size_t& idx) -> const std::string& { return barmor.quality_total(idx); }, barmor.quality_total_size(), parmor.quality_total); }); @@ -1197,29 +1186,29 @@ void StockpileSerializer::read_bars_blocks(DeserializeMode mode, const std::stri mPile->settings.flags.whole, mPile->settings.flags.mask_bars_blocks, [&]() { - pbarsblocks.bars_other_mats.clear(); pbarsblocks.bars_mats.clear(); - pbarsblocks.blocks_other_mats.clear(); + pbarsblocks.bars_other_mats.clear(); pbarsblocks.blocks_mats.clear(); + pbarsblocks.blocks_other_mats.clear(); }, [&](bool all, char val) { auto & bbarsblocks = mBuffer.barsblocks(); - unserialize_list_material(all, val, filter, bars_mat_is_allowed, + unserialize_list_material("mats/bars", all, val, filter, bars_mat_is_allowed, [&](const size_t& idx) -> const std::string& { return bbarsblocks.bars_mats(idx); }, bbarsblocks.bars_mats_size(), pbarsblocks.bars_mats); - unserialize_list_material(all, val, filter, - blocks_mat_is_allowed, - [&](const size_t& idx) -> const std::string& { return bbarsblocks.blocks_mats(idx); }, - bbarsblocks.blocks_mats_size(), pbarsblocks.blocks_mats); - - unserialize_list_other_mats(all, val, filter, + unserialize_list_other_mats("other/bars", all, val, filter, mOtherMatsBars.mats, [&](const size_t& idx) -> const std::string& { return bbarsblocks.bars_other_mats(idx); }, bbarsblocks.bars_other_mats_size(), pbarsblocks.bars_other_mats); - unserialize_list_other_mats(all, val, filter, + unserialize_list_material("mats/blocks", all, val, filter, + blocks_mat_is_allowed, + [&](const size_t& idx) -> const std::string& { return bbarsblocks.blocks_mats(idx); }, + bbarsblocks.blocks_mats_size(), pbarsblocks.blocks_mats); + + unserialize_list_other_mats("other/blocks", all, val, filter, mOtherMatsBlocks.mats, [&](const size_t& idx) -> const std::string& { return bbarsblocks.blocks_other_mats(idx); }, bbarsblocks.blocks_other_mats_size(), pbarsblocks.blocks_other_mats); @@ -1272,47 +1261,47 @@ void StockpileSerializer::read_cloth(DeserializeMode mode, const std::string& fi mPile->settings.flags.whole, mPile->settings.flags.mask_cloth, [&]() { - pcloth.thread_metal.clear(); - pcloth.thread_plant.clear(); pcloth.thread_silk.clear(); pcloth.thread_yarn.clear(); - pcloth.cloth_metal.clear(); - pcloth.cloth_plant.clear(); + pcloth.thread_plant.clear(); + pcloth.thread_metal.clear(); pcloth.cloth_silk.clear(); + pcloth.cloth_plant.clear(); pcloth.cloth_yarn.clear(); + pcloth.cloth_metal.clear(); }, [&](bool all, char val) { auto & bcloth = mBuffer.cloth(); - unserialize_list_organic_mat(all, val, filter, + unserialize_list_organic_mat("thread/silk", all, val, filter, [&](size_t idx) -> std::string { return bcloth.thread_silk(idx); }, bcloth.thread_silk_size(), pcloth.thread_silk, organic_mat_category::Silk); - unserialize_list_organic_mat(all, val, filter, + unserialize_list_organic_mat("thread/plant", all, val, filter, [&](size_t idx) -> std::string { return bcloth.thread_plant(idx); }, bcloth.thread_plant_size(), pcloth.thread_plant, organic_mat_category::PlantFiber); - unserialize_list_organic_mat(all, val, filter, + unserialize_list_organic_mat("thread/yarn", all, val, filter, [&](size_t idx) -> std::string { return bcloth.thread_yarn(idx); }, bcloth.thread_yarn_size(), pcloth.thread_yarn, organic_mat_category::Yarn); - unserialize_list_organic_mat(all, val, filter, + unserialize_list_organic_mat("thread/metal", all, val, filter, [&](size_t idx) -> std::string { return bcloth.thread_metal(idx); }, bcloth.thread_metal_size(), pcloth.thread_metal, organic_mat_category::MetalThread); - unserialize_list_organic_mat(all, val, filter, + unserialize_list_organic_mat("cloth/silk", all, val, filter, [&](size_t idx) -> std::string { return bcloth.cloth_silk(idx); }, bcloth.cloth_silk_size(), pcloth.cloth_silk, organic_mat_category::Silk); - unserialize_list_organic_mat(all, val, filter, + unserialize_list_organic_mat("cloth/plant", all, val, filter, [&](size_t idx) -> std::string { return bcloth.cloth_plant(idx); }, bcloth.cloth_plant_size(), pcloth.cloth_plant, organic_mat_category::PlantFiber); - unserialize_list_organic_mat(all, val, filter, + unserialize_list_organic_mat("cloth/yarn", all, val, filter, [&](size_t idx) -> std::string { return bcloth.cloth_yarn(idx); }, bcloth.cloth_yarn_size(), pcloth.cloth_yarn, organic_mat_category::Yarn); - unserialize_list_organic_mat(all, val, filter, + unserialize_list_organic_mat("cloth/metal", all, val, filter, [&](size_t idx) -> std::string { return bcloth.cloth_metal(idx); }, bcloth.cloth_metal_size(), pcloth.cloth_metal, organic_mat_category::MetalThread); }); @@ -1342,7 +1331,7 @@ void StockpileSerializer::read_coins(DeserializeMode mode, const std::string& fi [&](bool all, char val) { auto & bcoin = mBuffer.coin(); - unserialize_list_material(all, val, filter, coins_mat_is_allowed, + unserialize_list_material("", all, val, filter, coins_mat_is_allowed, [&](const size_t& idx) -> const std::string& { return bcoin.mats(idx); }, bcoin.mats_size(), pcoins.mats); }); @@ -1426,23 +1415,23 @@ void StockpileSerializer::read_finished_goods(DeserializeMode mode, const std::s [&](bool all, char val) { auto & bfinished_goods = mBuffer.finished_goods(); - unserialize_list_item_type(all, val, filter, finished_goods_type_is_allowed, + unserialize_list_item_type("type", all, val, filter, finished_goods_type_is_allowed, [&](const size_t& idx) -> const std::string& { return bfinished_goods.type(idx); }, bfinished_goods.type_size(), pfinished_goods.type); - unserialize_list_material(all, val, filter, finished_goods_mat_is_allowed, + unserialize_list_material("mats", all, val, filter, finished_goods_mat_is_allowed, [&](const size_t& idx) -> const std::string& { return bfinished_goods.mats(idx); }, bfinished_goods.mats_size(), pfinished_goods.mats); - unserialize_list_other_mats(all, val, filter, mOtherMatsFinishedGoods.mats, + unserialize_list_other_mats("other", all, val, filter, mOtherMatsFinishedGoods.mats, [&](const size_t& idx) -> const std::string& { return bfinished_goods.other_mats(idx); }, bfinished_goods.other_mats_size(), pfinished_goods.other_mats); - unserialize_list_quality(all, val, filter, + unserialize_list_quality("core", all, val, filter, [&](const size_t& idx) -> const std::string& { return bfinished_goods.quality_core(idx); }, bfinished_goods.quality_core_size(), pfinished_goods.quality_core); - unserialize_list_quality(all, val, filter, + unserialize_list_quality("total", all, val, filter, [&](const size_t& idx) -> const std::string& { return bfinished_goods.quality_total(idx); }, bfinished_goods.quality_total_size(), pfinished_goods.quality_total); }); @@ -1458,7 +1447,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_meat(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().meat(idx); }; - return food_pair(setter, &mPile->settings.food.meat, getter, mBuffer.food().meat_size()); + return food_pair("meat", setter, &mPile->settings.food.meat, getter, mBuffer.food().meat_size()); } case organic_mat_category::Fish: { @@ -1466,7 +1455,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_fish(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().fish(idx); }; - return food_pair(setter, &mPile->settings.food.fish, getter, mBuffer.food().fish_size()); + return food_pair("fish", setter, &mPile->settings.food.fish, getter, mBuffer.food().fish_size()); } case organic_mat_category::UnpreparedFish: { @@ -1474,7 +1463,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_unprepared_fish(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().unprepared_fish(idx); }; - return food_pair(setter, &mPile->settings.food.unprepared_fish, getter, mBuffer.food().unprepared_fish_size()); + return food_pair("unpreparedfish", setter, &mPile->settings.food.unprepared_fish, getter, mBuffer.food().unprepared_fish_size()); } case organic_mat_category::Eggs: { @@ -1482,7 +1471,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_egg(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().egg(idx); }; - return food_pair(setter, &mPile->settings.food.egg, getter, mBuffer.food().egg_size()); + return food_pair("egg", setter, &mPile->settings.food.egg, getter, mBuffer.food().egg_size()); } case organic_mat_category::Plants: { @@ -1490,7 +1479,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_plants(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().plants(idx); }; - return food_pair(setter, &mPile->settings.food.plants, getter, mBuffer.food().plants_size()); + return food_pair("plants", setter, &mPile->settings.food.plants, getter, mBuffer.food().plants_size()); } case organic_mat_category::PlantDrink: { @@ -1498,7 +1487,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_drink_plant(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().drink_plant(idx); }; - return food_pair(setter, &mPile->settings.food.drink_plant, getter, mBuffer.food().drink_plant_size()); + return food_pair("drink/plant", setter, &mPile->settings.food.drink_plant, getter, mBuffer.food().drink_plant_size()); } case organic_mat_category::CreatureDrink: { @@ -1506,7 +1495,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_drink_animal(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().drink_animal(idx); }; - return food_pair(setter, &mPile->settings.food.drink_animal, getter, mBuffer.food().drink_animal_size()); + return food_pair("drink/animal", setter, &mPile->settings.food.drink_animal, getter, mBuffer.food().drink_animal_size()); } case organic_mat_category::PlantCheese: { @@ -1514,7 +1503,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_cheese_plant(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().cheese_plant(idx); }; - return food_pair(setter, &mPile->settings.food.cheese_plant, getter, mBuffer.food().cheese_plant_size()); + return food_pair("cheese/plant", setter, &mPile->settings.food.cheese_plant, getter, mBuffer.food().cheese_plant_size()); } case organic_mat_category::CreatureCheese: { @@ -1522,7 +1511,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_cheese_animal(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().cheese_animal(idx); }; - return food_pair(setter, &mPile->settings.food.cheese_animal, getter, mBuffer.food().cheese_animal_size()); + return food_pair("cheese/animal", setter, &mPile->settings.food.cheese_animal, getter, mBuffer.food().cheese_animal_size()); } case organic_mat_category::Seed: { @@ -1530,7 +1519,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_seeds(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().seeds(idx); }; - return food_pair(setter, &mPile->settings.food.seeds, getter, mBuffer.food().seeds_size()); + return food_pair("seeds", setter, &mPile->settings.food.seeds, getter, mBuffer.food().seeds_size()); } case organic_mat_category::Leaf: { @@ -1538,7 +1527,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_leaves(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().leaves(idx); }; - return food_pair(setter, &mPile->settings.food.leaves, getter, mBuffer.food().leaves_size()); + return food_pair("leaves", setter, &mPile->settings.food.leaves, getter, mBuffer.food().leaves_size()); } case organic_mat_category::PlantPowder: { @@ -1546,7 +1535,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_powder_plant(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().powder_plant(idx); }; - return food_pair(setter, &mPile->settings.food.powder_plant, getter, mBuffer.food().powder_plant_size()); + return food_pair("powder/plant", setter, &mPile->settings.food.powder_plant, getter, mBuffer.food().powder_plant_size()); } case organic_mat_category::CreaturePowder: { @@ -1554,7 +1543,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_powder_creature(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().powder_creature(idx); }; - return food_pair(setter, &mPile->settings.food.powder_creature, getter, mBuffer.food().powder_creature_size()); + return food_pair("powder/animal", setter, &mPile->settings.food.powder_creature, getter, mBuffer.food().powder_creature_size()); } case organic_mat_category::Glob: { @@ -1562,7 +1551,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_glob(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().glob(idx); }; - return food_pair(setter, &mPile->settings.food.glob, getter, mBuffer.food().glob_size()); + return food_pair("glob", setter, &mPile->settings.food.glob, getter, mBuffer.food().glob_size()); } case organic_mat_category::PlantLiquid: { @@ -1570,7 +1559,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_liquid_plant(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().liquid_plant(idx); }; - return food_pair(setter, &mPile->settings.food.liquid_plant, getter, mBuffer.food().liquid_plant_size()); + return food_pair("liquid/plant", setter, &mPile->settings.food.liquid_plant, getter, mBuffer.food().liquid_plant_size()); } case organic_mat_category::CreatureLiquid: { @@ -1578,7 +1567,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_liquid_animal(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().liquid_animal(idx); }; - return food_pair(setter, &mPile->settings.food.liquid_animal, getter, mBuffer.food().liquid_animal_size()); + return food_pair("liquid/animal", setter, &mPile->settings.food.liquid_animal, getter, mBuffer.food().liquid_animal_size()); } case organic_mat_category::MiscLiquid: { @@ -1586,7 +1575,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_liquid_misc(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().liquid_misc(idx); }; - return food_pair(setter, &mPile->settings.food.liquid_misc, getter, mBuffer.food().liquid_misc_size()); + return food_pair("liquid/misc", setter, &mPile->settings.food.liquid_misc, getter, mBuffer.food().liquid_misc_size()); } case organic_mat_category::Paste: @@ -1595,7 +1584,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_glob_paste(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().glob_paste(idx); }; - return food_pair(setter, &mPile->settings.food.glob_paste, getter, mBuffer.food().glob_paste_size()); + return food_pair("paste", setter, &mPile->settings.food.glob_paste, getter, mBuffer.food().glob_paste_size()); } case organic_mat_category::Pressed: { @@ -1603,7 +1592,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_glob_pressed(id); }; FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().glob_pressed(idx); }; - return food_pair(setter, &mPile->settings.food.glob_pressed, getter, mBuffer.food().glob_pressed_size()); + return food_pair("pressed", setter, &mPile->settings.food.glob_pressed, getter, mBuffer.food().glob_pressed_size()); } case organic_mat_category::Leather: case organic_mat_category::Silk: @@ -1671,13 +1660,13 @@ void StockpileSerializer::read_food(DeserializeMode mode, const std::string& fil [&](bool all, char val) { auto & bfood = mBuffer.food(); - set_elem(all, val, bfood.prepared_meals(), pfood.prepared_meals); + set_flag("preparedmeals", filter, all, val, bfood.prepared_meals(), pfood.prepared_meals); for (int32_t mat_category = traits::first_item_value; mat_category < traits::last_item_value; ++mat_category) { food_pair p = food_map((organic_mat_category)mat_category); if (!p.valid) continue; - unserialize_list_organic_mat(all, val, filter, + unserialize_list_organic_mat(p.name, all, val, filter, p.get_value, p.serialized_count, *p.stockpile_values, (organic_mat_category)mat_category); } @@ -1749,7 +1738,7 @@ void StockpileSerializer::read_furniture(DeserializeMode mode, const std::string if (all) { for (size_t idx = 0; idx < num_elems; ++idx) { string id = ENUM_KEY_STR(furniture_type, (df::furniture_type)idx); - set_filter_elem(filter, val, id, idx, pfurniture.type.at(idx)); + set_filter_elem("type", filter, val, id, idx, pfurniture.type.at(idx)); } } else { for (int i = 0; i < bfurniture.type_size(); ++i) { @@ -1759,23 +1748,23 @@ void StockpileSerializer::read_furniture(DeserializeMode mode, const std::string WARN(log).print("furniture type index invalid %s, idx=%d\n", token.c_str(), idx); continue; } - set_filter_elem(filter, val, token, idx, pfurniture.type.at(idx)); + set_filter_elem("type", filter, val, token, idx, pfurniture.type.at(idx)); } } - unserialize_list_material(all, val, filter, furniture_mat_is_allowed, + unserialize_list_material("mats", all, val, filter, furniture_mat_is_allowed, [&](const size_t& idx) -> const std::string& { return bfurniture.mats(idx); }, bfurniture.mats_size(), pfurniture.mats); - unserialize_list_other_mats(all, val, filter, + unserialize_list_other_mats("other", all, val, filter, mOtherMatsFurniture.mats, [&](const size_t& idx) -> const std::string& { return bfurniture.other_mats(idx); }, bfurniture.other_mats_size(), pfurniture.other_mats); - unserialize_list_quality(all, val, filter, + unserialize_list_quality("core", all, val, filter, [&](const size_t& idx) -> const std::string& { return bfurniture.quality_core(idx); }, bfurniture.quality_core_size(), pfurniture.quality_core); - unserialize_list_quality(all, val, filter, + unserialize_list_quality("total", all, val, filter, [&](const size_t& idx) -> const std::string& { return bfurniture.quality_total(idx); }, bfurniture.quality_total_size(), pfurniture.quality_total); }); @@ -1853,11 +1842,11 @@ void StockpileSerializer::read_gems(DeserializeMode mode, const std::string& fil [&](bool all, char val) { auto & bgems = mBuffer.gems(); - unserialize_list_material(all, val, filter, gem_mat_is_allowed, + unserialize_list_material("mats/rough", all, val, filter, gem_mat_is_allowed, [&](const size_t& idx) -> const std::string& { return bgems.rough_mats(idx); }, bgems.rough_mats_size(),pgems.rough_mats); - unserialize_list_material(all, val, filter, gem_cut_mat_is_allowed, + unserialize_list_material("mats/cut", all, val, filter, gem_cut_mat_is_allowed, [&](const size_t& idx) -> const std::string& { return bgems.cut_mats(idx); }, bgems.cut_mats_size(), pgems.cut_mats); @@ -1869,11 +1858,11 @@ void StockpileSerializer::read_gems(DeserializeMode mode, const std::string& fil MaterialInfo mi; mi.decode(idx, -1); if (gem_other_mat_is_allowed(mi)) - set_filter_elem(filter, val, mi.getToken(), idx, pgems.rough_other_mats.at(idx)); + set_filter_elem("other/rough", filter, val, mi.getToken(), idx, pgems.rough_other_mats.at(idx)); if (!mi.isValid()) mi.decode(0, idx); if (gem_other_mat_is_allowed(mi)) - set_filter_elem(filter, val, mi.getToken(), idx, pgems.cut_other_mats.at(idx)); + set_filter_elem("other/cut", filter, val, mi.getToken(), idx, pgems.cut_other_mats.at(idx)); } return; } else { @@ -1881,10 +1870,10 @@ void StockpileSerializer::read_gems(DeserializeMode mode, const std::string& fil for (size_t i = 0; i < builtin_size; ++i) { string id = bgems.rough_other_mats(i); if (mi.find(id) && mi.isValid() && size_t(mi.type) < builtin_size) - set_filter_elem(filter, val, id, mi.type, pgems.rough_other_mats.at(mi.type)); + set_filter_elem("other/rough", filter, val, id, mi.type, pgems.rough_other_mats.at(mi.type)); id = bgems.cut_other_mats(i); if (mi.find(id) && mi.isValid() && size_t(mi.type) < builtin_size) - set_filter_elem(filter, val, id, mi.type, pgems.cut_other_mats.at(mi.type)); + set_filter_elem("other/cut", filter, val, id, mi.type, pgems.cut_other_mats.at(mi.type)); } } }); @@ -1909,7 +1898,7 @@ void StockpileSerializer::read_leather(DeserializeMode mode, const std::string& [&](bool all, char val) { auto & bleather = mBuffer.leather(); - unserialize_list_organic_mat(all, val, filter, + unserialize_list_organic_mat("", all, val, filter, [&](size_t idx) -> std::string { return bleather.mats(idx); }, bleather.mats_size(), pleather.mats, organic_mat_category::Leather); }); @@ -1933,7 +1922,7 @@ void StockpileSerializer::read_corpses(DeserializeMode mode, const std::string& }, [&](bool all, char val) { auto & bcorpses = mBuffer.corpses_v50(); - unserialize_list_creature(all, val, filter, + unserialize_list_creature("", all, val, filter, [&](const size_t& idx) -> const std::string& { return bcorpses.corpses(idx); }, bcorpses.corpses_size(), pcorpses.corpses); }); @@ -2010,35 +1999,35 @@ void StockpileSerializer::read_refuse(DeserializeMode mode, const std::string& f [&](bool all, char val) { auto & brefuse = mBuffer.refuse(); - set_elem(all, val, brefuse.fresh_raw_hide(), prefuse.fresh_raw_hide); - set_elem(all, val, brefuse.rotten_raw_hide(), prefuse.rotten_raw_hide); + set_flag("rawhide/fresh", filter, all, val, brefuse.fresh_raw_hide(), prefuse.fresh_raw_hide); + set_flag("rawhide/rotten", filter, all, val, brefuse.rotten_raw_hide(), prefuse.rotten_raw_hide); - unserialize_list_item_type(all, val, filter, refuse_type_is_allowed, + unserialize_list_item_type("type", all, val, filter, refuse_type_is_allowed, [&](const size_t& idx) -> const string& { return brefuse.type(idx); }, brefuse.type_size(), prefuse.type); - unserialize_list_creature(all, val, filter, + unserialize_list_creature("corpses", all, val, filter, [&](const size_t& idx) -> const string& { return brefuse.corpses(idx); }, brefuse.corpses_size(), prefuse.corpses); - unserialize_list_creature(all, val, filter, + unserialize_list_creature("bodyparts", all, val, filter, [&](const size_t& idx) -> const string& { return brefuse.body_parts(idx); }, brefuse.body_parts_size(), prefuse.body_parts); - unserialize_list_creature(all, val, filter, + unserialize_list_creature("skulls", all, val, filter, [&](const size_t& idx) -> const string& { return brefuse.skulls(idx); }, brefuse.skulls_size(), prefuse.skulls); - unserialize_list_creature(all, val, filter, + unserialize_list_creature("bones", all, val, filter, [&](const size_t& idx) -> const string& { return brefuse.bones(idx); }, brefuse.bones_size(), prefuse.bones); - unserialize_list_creature(all, val, filter, + unserialize_list_creature("hair", all, val, filter, [&](const size_t& idx) -> const string& { return brefuse.hair(idx); }, brefuse.hair_size(), prefuse.hair); - unserialize_list_creature(all, val, filter, + unserialize_list_creature("shells", all, val, filter, [&](const size_t& idx) -> const string& { return brefuse.shells(idx); }, brefuse.shells_size(), prefuse.shells); - unserialize_list_creature(all, val, filter, + unserialize_list_creature("teeth", all, val, filter, [&](const size_t& idx) -> const string& { return brefuse.teeth(idx); }, brefuse.teeth_size(), prefuse.teeth); - unserialize_list_creature(all, val, filter, + unserialize_list_creature("horns", all, val, filter, [&](const size_t& idx) -> const string& { return brefuse.horns(idx); }, brefuse.horns_size(), prefuse.horns); }); @@ -2071,11 +2060,11 @@ void StockpileSerializer::read_sheet(DeserializeMode mode, const std::string& fi [&](bool all, char val) { auto & bsheet = mBuffer.sheet(); - unserialize_list_organic_mat(all, val, filter, + unserialize_list_organic_mat("paper", all, val, filter, [&](size_t idx) -> std::string { return bsheet.paper(idx); }, bsheet.paper_size(), psheet.paper, organic_mat_category::Paper); - unserialize_list_organic_mat(all, val, filter, + unserialize_list_organic_mat("parchment", all, val, filter, [&](size_t idx) -> std::string { return bsheet.parchment(idx); }, bsheet.parchment_size(), psheet.parchment, organic_mat_category::Parchment); }); @@ -2109,7 +2098,7 @@ void StockpileSerializer::read_stone(DeserializeMode mode, const std::string& fi [&](bool all, char val) { auto & bstone = mBuffer.stone(); - unserialize_list_material(all, val, filter, stone_is_allowed, + unserialize_list_material("", all, val, filter, stone_is_allowed, [&](const size_t& idx) -> const std::string& { return bstone.mats(idx); }, bstone.mats_size(), pstone.mats); }); @@ -2177,30 +2166,30 @@ void StockpileSerializer::read_weapons(DeserializeMode mode, const std::string& [&](bool all, char val) { auto & bweapons = mBuffer.weapons(); - set_elem(all, val, bweapons.unusable(), pweapons.unusable); - set_elem(all, val, bweapons.usable(), pweapons.usable); + set_flag("nouse", filter, all, val, bweapons.unusable(), pweapons.unusable); + set_flag("canuse", filter, all, val, bweapons.usable(), pweapons.usable); - unserialize_list_itemdef(all, val, filter, + unserialize_list_itemdef("type/weapon", all, val, filter, [&](const size_t& idx) -> const std::string& { return bweapons.weapon_type(idx); }, bweapons.weapon_type_size(), pweapons.weapon_type, item_type::WEAPON); - unserialize_list_itemdef(all, val, filter, + unserialize_list_itemdef("type/trapcomp", all, val, filter, [&](const size_t& idx) -> const std::string& { return bweapons.trapcomp_type(idx); }, bweapons.trapcomp_type_size(), pweapons.trapcomp_type, item_type::TRAPCOMP); - unserialize_list_material(all, val, filter, weapons_mat_is_allowed, + unserialize_list_material("mats", all, val, filter, weapons_mat_is_allowed, [&](const size_t& idx) -> const std::string& { return bweapons.mats(idx); }, bweapons.mats_size(), pweapons.mats); - unserialize_list_other_mats(all, val, filter, mOtherMatsWeaponsArmor.mats, + unserialize_list_other_mats("other", all, val, filter, mOtherMatsWeaponsArmor.mats, [&](const size_t& idx) -> const std::string& { return bweapons.other_mats(idx); }, bweapons.other_mats_size(), pweapons.other_mats); - unserialize_list_quality(all, val, filter, + unserialize_list_quality("core", all, val, filter, [&](const size_t& idx) -> const std::string& { return bweapons.quality_core(idx); }, bweapons.quality_core_size(), pweapons.quality_core); - unserialize_list_quality(all, val, filter, + unserialize_list_quality("total", all, val, filter, [&](const size_t& idx) -> const std::string& { return bweapons.quality_total(idx); }, bweapons.quality_total_size(), pweapons.quality_total); }); @@ -2245,7 +2234,7 @@ void StockpileSerializer::read_wood(DeserializeMode mode, const std::string& fil if (all) { for (size_t idx = 0; idx < num_elems; ++idx) { string id = world->raws.plants.all[idx]->id; - set_filter_elem(filter, val, id, idx, pwood.mats.at(idx)); + set_filter_elem("", filter, val, id, idx, pwood.mats.at(idx)); } } else { for (int i = 0; i < bwood.mats_size(); ++i) { @@ -2255,7 +2244,7 @@ void StockpileSerializer::read_wood(DeserializeMode mode, const std::string& fil WARN(log).print("wood mat index invalid %s idx=%zd\n", token.c_str(), idx); continue; } - set_filter_elem(filter, val, token, idx, pwood.mats.at(idx)); + set_filter_elem("", filter, val, token, idx, pwood.mats.at(idx)); } } }); diff --git a/plugins/stockpiles/StockpileSerializer.h b/plugins/stockpiles/StockpileSerializer.h index 4085744d0..8573a453e 100644 --- a/plugins/stockpiles/StockpileSerializer.h +++ b/plugins/stockpiles/StockpileSerializer.h @@ -39,6 +39,7 @@ typedef std::function FuncMaterialAllowed; // convenient struct for parsing food stockpile items struct food_pair { + const char * name; // exporting FuncWriteExport set_value; std::vector* stockpile_values; @@ -47,8 +48,9 @@ struct food_pair { size_t serialized_count; bool valid; - food_pair(FuncWriteExport s, std::vector* sp_v, FuncReadImport g, size_t count) - : set_value(s), stockpile_values(sp_v), get_value(g), serialized_count(count), valid(true) { } + food_pair(const char * n, FuncWriteExport s, std::vector* sp_v, FuncReadImport g, size_t count) + : name(n), set_value(s), stockpile_values(sp_v), get_value(g), serialized_count(count), + valid(true) { } food_pair(): valid(false) { } }; From cabdfe67bf90bcbca65b15d22b32b61d7f017be8 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 23:25:21 -0700 Subject: [PATCH 043/115] remove quality sp settings, update bolts --- data/stockpiles/artifactammo.dfstock | 2 -- data/stockpiles/artifactarmor.dfstock | Bin 17 -> 0 bytes data/stockpiles/artifactfinishedgoods.dfstock | 2 -- data/stockpiles/artifactfurniture.dfstock | 2 -- data/stockpiles/artifactweapons.dfstock | Bin 17 -> 0 bytes data/stockpiles/bolts.dfstock | 4 ++-- data/stockpiles/masterworkammo.dfstock | 1 - data/stockpiles/masterworkarmor.dfstock | Bin 18 -> 0 bytes data/stockpiles/masterworkfinishedgoods.dfstock | 1 - data/stockpiles/masterworkfurniture.dfstock | 1 - data/stockpiles/masterworkweapons.dfstock | Bin 18 -> 0 bytes 11 files changed, 2 insertions(+), 11 deletions(-) delete mode 100644 data/stockpiles/artifactammo.dfstock delete mode 100644 data/stockpiles/artifactarmor.dfstock delete mode 100644 data/stockpiles/artifactfinishedgoods.dfstock delete mode 100644 data/stockpiles/artifactfurniture.dfstock delete mode 100644 data/stockpiles/artifactweapons.dfstock delete mode 100644 data/stockpiles/masterworkammo.dfstock delete mode 100644 data/stockpiles/masterworkarmor.dfstock delete mode 100644 data/stockpiles/masterworkfinishedgoods.dfstock delete mode 100644 data/stockpiles/masterworkfurniture.dfstock delete mode 100644 data/stockpiles/masterworkweapons.dfstock diff --git a/data/stockpiles/artifactammo.dfstock b/data/stockpiles/artifactammo.dfstock deleted file mode 100644 index 16cd6f57e..000000000 --- a/data/stockpiles/artifactammo.dfstock +++ /dev/null @@ -1,2 +0,0 @@ -B -"Artifact \ No newline at end of file diff --git a/data/stockpiles/artifactarmor.dfstock b/data/stockpiles/artifactarmor.dfstock deleted file mode 100644 index af207f4fd5cd112a3d676a9f8d81ca155e8fd70c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 YcmeBT From 876425fbc8a5118e1331f152e4fedc3765b8e809 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 23:25:52 -0700 Subject: [PATCH 044/115] allow multiple filters --- docs/plugins/stockpiles.rst | 47 +- plugins/lua/stockpiles.lua | 6 +- plugins/stockpiles/StockpileSerializer.cpp | 686 +++++++++++---------- plugins/stockpiles/StockpileSerializer.h | 40 +- plugins/stockpiles/stockpiles.cpp | 5 +- 5 files changed, 403 insertions(+), 381 deletions(-) diff --git a/docs/plugins/stockpiles.rst b/docs/plugins/stockpiles.rst index 3d262b1e8..c36031ad7 100644 --- a/docs/plugins/stockpiles.rst +++ b/docs/plugins/stockpiles.rst @@ -77,14 +77,15 @@ Options to the stockpile, but no other settings are changed. In ``disable`` mode, enabled settings in the file are *removed* from the current stockpile configuration, and nothing else is changed. -``-f``, ``--filter `` - When importing, only modify the settings that contain the given substring. +``-f``, ``--filter [,...]`` + When importing, only modify the settings that contain at least one of the + given substrings. Configuration elements ---------------------- -The different configuration elements you can include in an exported settings file -are: +The different configuration elements you can include in an exported settings +file are: :containers: Max bins, max barrels, and num wheelbarrows. :general: Whether the stockpile takes from links only and whether organic @@ -104,9 +105,9 @@ DFHack comes with a library of useful stockpile settings files that are ready for import. If the stockpile configuration that you need isn't directly represented, you can often use the ``enable`` and ``disable`` modes and/or the ``filter`` option to transform an existing saved stockpile setting. Some -stockpile configurations can only be achieved with filters since the contents -of the stockpile lists are different for each world. For example, to disable -all tallow in your main food stockpile, you'd run this command:: +stockpile configurations can only be achieved with filters since the stockpile +lists are different for each world. For example, to disable all tallow in your +main food stockpile, you'd run this command:: stockpiles import category_food -m disable -f tallow @@ -134,18 +135,34 @@ entire category, or with a filter, any matchable subset thereof:: category_weapons category_wood -For many of the categories, there are also settings files that manipulate interesting -subsets of that category. +For many of the categories, there are also subcategory prefixes that you can +match with filters and convenient pre-made settings files that manipulate +interesting category subsets. Ammo stockpile adjustments ~~~~~~~~~~~~~~~~~~~~~~~~~~ -bolts -metalammo -boneammo -woodammo -masterworkammo -artifactammo +Subcategory prefixes:: + + type/ + mats/ + other/ + core/ + total/ + +Convenience settings files:: + + bolts + metalammo + boneammo + woodammo + +Example commands for a stockpile of metal bolts:: + + stockpiles import category_ammo + stockpiles import -m disable -f other/ category_ammo + stockpiles import -m disable -f type/ category_ammo + stockpiles import -m enable bolts Animal stockpile adjustments ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/plugins/lua/stockpiles.lua b/plugins/lua/stockpiles.lua index 1a92e2c0c..f9c7d7b4a 100644 --- a/plugins/lua/stockpiles.lua +++ b/plugins/lua/stockpiles.lua @@ -113,7 +113,7 @@ local function import_stockpile(name, opts) else name = STOCKPILES_LIBRARY_DIR .. '/' .. name end - stockpiles_import(name, get_sp_id(opts), opts.mode, opts.filter) + stockpiles_import(name, get_sp_id(opts), opts.mode, table.concat(opts.filters, ',')) end local valid_includes = {general=true, categories=true, types=true} @@ -145,11 +145,11 @@ local function process_args(opts, args) opts.includes = {} opts.mode = 'set' - opts.filter = '' + opts.filters = {} return argparse.processArgsGetopt(args, { {'f', 'filter', hasArg=true, - handler=function(arg) opts.filter = arg end}, + handler=function(arg) opts.filters = argparse.stringList(arg) end}, {'h', 'help', handler=function() opts.help = true end}, {'i', 'include', hasArg=true, handler=function(arg) opts.includes = parse_include(arg) end}, diff --git a/plugins/stockpiles/StockpileSerializer.cpp b/plugins/stockpiles/StockpileSerializer.cpp index 203d466b0..ca51c0b3e 100644 --- a/plugins/stockpiles/StockpileSerializer.cpp +++ b/plugins/stockpiles/StockpileSerializer.cpp @@ -168,7 +168,7 @@ bool StockpileSerializer::serialize_to_ostream(std::ostream* output, uint32_t in return output->good(); } -bool StockpileSerializer::serialize_to_file(const std::string& file, uint32_t includedElements) { +bool StockpileSerializer::serialize_to_file(const string& file, uint32_t includedElements) { std::fstream output(file, std::ios::out | std::ios::binary | std::ios::trunc); if (output.fail()) { WARN(log).print("ERROR: failed to open file for writing: '%s'\n", @@ -178,7 +178,7 @@ bool StockpileSerializer::serialize_to_file(const std::string& file, uint32_t in return serialize_to_ostream(&output, includedElements); } -bool StockpileSerializer::parse_from_istream(std::istream* input, DeserializeMode mode, const std::string& filter) { +bool StockpileSerializer::parse_from_istream(std::istream* input, DeserializeMode mode, const vector& filters) { if (input->fail()) return false; mBuffer.Clear(); @@ -186,18 +186,18 @@ bool StockpileSerializer::parse_from_istream(std::istream* input, DeserializeMod const bool res = mBuffer.ParseFromZeroCopyStream(&zero_copy_input) && input->eof(); if (res) - read(mode, filter); + read(mode, filters); return res; } -bool StockpileSerializer::unserialize_from_file(const std::string& file, DeserializeMode mode, const string& filter) { +bool StockpileSerializer::unserialize_from_file(const string& file, DeserializeMode mode, const vector& filters) { std::fstream input(file, std::ios::in | std::ios::binary); if (input.fail()) { WARN(log).print("failed to open file for reading: '%s'\n", file.c_str()); return false; } - return parse_from_istream(&input, mode, filter); + return parse_from_istream(&input, mode, filters); } /** @@ -207,7 +207,7 @@ bool StockpileSerializer::unserialize_from_file(const std::string& file, Deseria * @return the enum's value, -1 if not found */ template -static typename df::enum_traits::base_type linear_index(df::enum_traits traits, const std::string& token) { +static typename df::enum_traits::base_type linear_index(df::enum_traits traits, const string& token) { auto j = traits.first_item_value; auto limit = traits.last_item_value; // sometimes enums start at -1, which is bad news for array indexing @@ -222,34 +222,36 @@ static typename df::enum_traits::base_type linear_index(df::enum_traits tr return -1; } -static bool matches_filter(const string& filter, const string& name) { - if (!filter.size()) - return true; - DEBUG(log).print("searching for '%s' in '%s'\n", filter.c_str(), name.c_str()); - return std::search(name.begin(), name.end(), filter.begin(), filter.end(), - [](unsigned char ch1, unsigned char ch2) { return std::toupper(ch1) == std::toupper(ch2); } - ) != name.end(); +static bool matches_filter(const vector& filters, const string& name) { + for (auto & filter : filters) { + DEBUG(log).print("searching for '%s' in '%s'\n", filter.c_str(), name.c_str()); + if (std::search(name.begin(), name.end(), filter.begin(), filter.end(), + [](unsigned char ch1, unsigned char ch2) { return std::toupper(ch1) == std::toupper(ch2); } + ) != name.end()) + return true; + } + return !filters.size(); } -static void set_flag(const char* name, const string& filter, bool all, char val, bool enabled, bool& elem) { - if ((all || enabled) && matches_filter(filter, name)) { +static void set_flag(const char* name, const vector& filters, bool all, char val, bool enabled, bool& elem) { + if ((all || enabled) && matches_filter(filters, name)) { DEBUG(log).print("setting %s to %d\n", name, val); elem = val; } } -static void set_filter_elem(const char* subcat, const string& filter, char val, +static void set_filter_elem(const char* subcat, const vector& filters, char val, const string& name, const string& id, char& elem) { - if (matches_filter(filter, subcat + ((*subcat ? "/" : "") + name))) { + if (matches_filter(filters, subcat + ((*subcat ? "/" : "") + name))) { DEBUG(log).print("setting %s (%s) to %d\n", name.c_str(), id.c_str(), val); elem = val; } } template -static void set_filter_elem(const char* subcat, const string& filter, T_val val, +static void set_filter_elem(const char* subcat, const vector& filters, T_val val, const string& name, T_id id, T_val& elem) { - if (matches_filter(filter, subcat + ((*subcat ? "/" : "") + name))) { + if (matches_filter(filters, subcat + ((*subcat ? "/" : "") + name))) { DEBUG(log).print("setting %s (%d) to %d\n", name.c_str(), (int32_t)id, val); elem = val; } @@ -269,8 +271,8 @@ static void set_filter_elem(const char* subcat, const string& filter, T_val val, * The unserialization process is the same in reverse. */ static bool serialize_list_itemdef(FuncWriteExport add_value, - std::vector list, - std::vector items, + vector list, + vector items, item_type::item_type type) { bool all = true; for (size_t i = 0; i < list.size(); ++i) { @@ -291,15 +293,15 @@ static bool serialize_list_itemdef(FuncWriteExport add_value, return all; } -static void unserialize_list_itemdef(const char* subcat, bool all, char val, const string& filter, - FuncReadImport read_value, int32_t list_size, std::vector& pile_list, item_type::item_type type) { +static void unserialize_list_itemdef(const char* subcat, bool all, char val, const vector& filters, + FuncReadImport read_value, int32_t list_size, vector& pile_list, item_type::item_type type) { int num_elems = Items::getSubtypeCount(type); pile_list.resize(num_elems, '\0'); if (all) { for (auto idx = 0; idx < num_elems; ++idx) { ItemTypeInfo ii; ii.decode(type, idx); - set_filter_elem(subcat, filter, val, ii.toString(), idx, pile_list.at(idx)); + set_filter_elem(subcat, filters, val, ii.toString(), idx, pile_list.at(idx)); } return; } @@ -313,7 +315,7 @@ static void unserialize_list_itemdef(const char* subcat, bool all, char val, con WARN(log).print("item type index invalid: %d\n", ii.subtype); continue; } - set_filter_elem(subcat, filter, val, id, ii.subtype, pile_list.at(ii.subtype)); + set_filter_elem(subcat, filters, val, id, ii.subtype, pile_list.at(ii.subtype)); } } @@ -328,7 +330,7 @@ static bool serialize_list_quality(FuncWriteExport add_value, all = false; continue; } - const std::string f_type(quality_traits::key_table[i]); + const string f_type(quality_traits::key_table[i]); add_value(f_type); DEBUG(log).print("adding quality %s\n", f_type.c_str()); } @@ -339,12 +341,12 @@ static void quality_clear(bool(&pile_list)[7]) { std::fill(pile_list, pile_list + 7, false); } -static void unserialize_list_quality(const char* subcat, bool all, bool val, const string& filter, +static void unserialize_list_quality(const char* subcat, bool all, bool val, const vector& filters, FuncReadImport read_value, int32_t list_size, bool(&pile_list)[7]) { if (all) { for (auto idx = 0; idx < 7; ++idx) { string id = ENUM_KEY_STR(item_quality, (df::item_quality)idx); - set_filter_elem(subcat, filter, val, id, idx, pile_list[idx]); + set_filter_elem(subcat, filters, val, id, idx, pile_list[idx]); } return; } @@ -352,26 +354,26 @@ static void unserialize_list_quality(const char* subcat, bool all, bool val, con using df::enums::item_quality::item_quality; df::enum_traits quality_traits; for (int i = 0; i < list_size; ++i) { - const std::string quality = read_value(i); + const string quality = read_value(i); df::enum_traits::base_type idx = linear_index(quality_traits, quality); if (idx < 0) { WARN(log).print("invalid quality token: %s\n", quality.c_str()); continue; } - set_filter_elem(subcat, filter, val, quality, idx, pile_list[idx]); + set_filter_elem(subcat, filters, val, quality, idx, pile_list[idx]); } } -static string other_mats_index(const std::map other_mats, +static string other_mats_index(const std::map other_mats, int idx) { auto it = other_mats.find(idx); if (it == other_mats.end()) - return std::string(); + return string(); return it->second; } -static int other_mats_token(const std::map other_mats, - const std::string& token) { +static int other_mats_token(const std::map other_mats, + const string& token) { for (auto it = other_mats.begin(); it != other_mats.end(); ++it) { if (it->second == token) return it->first; @@ -380,16 +382,16 @@ static int other_mats_token(const std::map other_mats, } static bool serialize_list_other_mats( - const std::map other_mats, + const std::map other_mats, FuncWriteExport add_value, - std::vector list) { + vector list) { bool all = true; for (size_t i = 0; i < list.size(); ++i) { if (!list.at(i)) { all = false; continue; } - const std::string token = other_mats_index(other_mats, i); + const string token = other_mats_index(other_mats, i); if (token.empty()) { WARN(log).print("invalid other material with index %zd\n", i); continue; @@ -400,19 +402,19 @@ static bool serialize_list_other_mats( return all; } -static void unserialize_list_other_mats(const char* subcat, bool all, char val, const string& filter, - const std::map other_mats, FuncReadImport read_value, int32_t list_size, std::vector& pile_list) { +static void unserialize_list_other_mats(const char* subcat, bool all, char val, const vector& filters, + const std::map other_mats, FuncReadImport read_value, int32_t list_size, vector& pile_list) { size_t num_elems = other_mats.size(); pile_list.resize(num_elems, '\0'); if (all) { for (auto & entry : other_mats) - set_filter_elem(subcat, filter, val, entry.second, entry.first, pile_list.at(entry.first)); + set_filter_elem(subcat, filters, val, entry.second, entry.first, pile_list.at(entry.first)); return; } for (int i = 0; i < list_size; ++i) { - const std::string token = read_value(i); + const string token = read_value(i); size_t idx = other_mats_token(other_mats, token); if (idx < 0) { WARN(log).print("invalid other mat with token %s\n", token.c_str()); @@ -422,12 +424,12 @@ static void unserialize_list_other_mats(const char* subcat, bool all, char val, WARN(log).print("other_mats index too large! idx[%zd] max_size[%zd]\n", idx, num_elems); continue; } - set_filter_elem(subcat, filter, val, token, idx, pile_list.at(idx)); + set_filter_elem(subcat, filters, val, token, idx, pile_list.at(idx)); } } static bool serialize_list_organic_mat(FuncWriteExport add_value, - const std::vector* list, + const vector* list, organic_mat_category::organic_mat_category cat) { bool all = true; if (!list) { @@ -439,7 +441,7 @@ static bool serialize_list_organic_mat(FuncWriteExport add_value, all = false; continue; } - std::string token = OrganicMatLookup::food_token_by_idx(cat, i); + string token = OrganicMatLookup::food_token_by_idx(cat, i); if (token.empty()) { DEBUG(log).print("food mat invalid :(\n"); continue; @@ -450,32 +452,32 @@ static bool serialize_list_organic_mat(FuncWriteExport add_value, return all; } -static void unserialize_list_organic_mat(const char* subcat, bool all, char val, const string& filter, - FuncReadImport read_value, size_t list_size, std::vector& pile_list, +static void unserialize_list_organic_mat(const char* subcat, bool all, char val, const vector& filters, + FuncReadImport read_value, size_t list_size, vector& pile_list, organic_mat_category::organic_mat_category cat) { size_t num_elems = OrganicMatLookup::food_max_size(cat); pile_list.resize(num_elems, '\0'); if (all) { for (size_t idx = 0; idx < num_elems; ++idx) { string token = OrganicMatLookup::food_token_by_idx(cat, idx); - set_filter_elem(subcat, filter, val, token, idx, pile_list.at(idx)); + set_filter_elem(subcat, filters, val, token, idx, pile_list.at(idx)); } return; } for (size_t i = 0; i < list_size; ++i) { - const std::string token = read_value(i); + const string token = read_value(i); int16_t idx = OrganicMatLookup::food_idx_by_token(cat, token); if (idx < 0 || size_t(idx) >= num_elems) { WARN(log).print("organic mat index too large! idx[%d] max_size[%zd]\n", idx, num_elems); continue; } - set_filter_elem(subcat, filter, val, token, idx, pile_list.at(idx)); + set_filter_elem(subcat, filters, val, token, idx, pile_list.at(idx)); } } static bool serialize_list_item_type(FuncItemAllowed is_allowed, - FuncWriteExport add_value, const std::vector& list) { + FuncWriteExport add_value, const vector& list) { using df::enums::item_type::item_type; using type_traits = df::enum_traits; @@ -490,7 +492,7 @@ static bool serialize_list_item_type(FuncItemAllowed is_allowed, continue; } const item_type type = (item_type)((df::enum_traits::base_type)i); - std::string r_type(type_traits::key_table[i + 1]); + string r_type(type_traits::key_table[i + 1]); if (!is_allowed(type)) continue; add_value(r_type); @@ -499,8 +501,8 @@ static bool serialize_list_item_type(FuncItemAllowed is_allowed, return all; } -static void unserialize_list_item_type(const char* subcat, bool all, char val, const string& filter, - FuncItemAllowed is_allowed, FuncReadImport read_value, int32_t list_size, std::vector& pile_list) { +static void unserialize_list_item_type(const char* subcat, bool all, char val, const vector& filters, + FuncItemAllowed is_allowed, FuncReadImport read_value, int32_t list_size, vector& pile_list) { // TODO can we remove the hardcoded list size? size_t num_elems = 112; pile_list.resize(num_elems, '\0'); @@ -512,7 +514,7 @@ static void unserialize_list_item_type(const char* subcat, bool all, char val, c if (all) { for (size_t idx = 0; idx < num_elems; ++idx) { string id = ENUM_KEY_STR(item_type, (df::item_type)idx); - set_filter_elem(subcat, filter, val, id, idx, pile_list.at(idx)); + set_filter_elem(subcat, filters, val, id, idx, pile_list.at(idx)); } return; } @@ -520,7 +522,7 @@ static void unserialize_list_item_type(const char* subcat, bool all, char val, c using df::enums::item_type::item_type; df::enum_traits type_traits; for (int i = 0; i < list_size; ++i) { - const std::string token = read_value(i); + const string token = read_value(i); // subtract one because item_type starts at -1 const df::enum_traits::base_type idx = linear_index(type_traits, token) - 1; if (!is_allowed((item_type)idx)) @@ -529,12 +531,12 @@ static void unserialize_list_item_type(const char* subcat, bool all, char val, c WARN(log).print("error item_type index too large! idx[%d] max_size[%zd]\n", idx, num_elems); continue; } - set_filter_elem(subcat, filter, val, token, idx, pile_list.at(idx)); + set_filter_elem(subcat, filters, val, token, idx, pile_list.at(idx)); } } static bool serialize_list_material(FuncMaterialAllowed is_allowed, - FuncWriteExport add_value, const std::vector& list) { + FuncWriteExport add_value, const vector& list) { bool all = true; MaterialInfo mi; for (size_t i = 0; i < list.size(); ++i) { @@ -551,9 +553,9 @@ static bool serialize_list_material(FuncMaterialAllowed is_allowed, return all; } -static void unserialize_list_material(const char* subcat, bool all, char val, const string& filter, +static void unserialize_list_material(const char* subcat, bool all, char val, const vector& filters, FuncMaterialAllowed is_allowed, FuncReadImport read_value, int32_t list_size, - std::vector& pile_list) { + vector& pile_list) { // we initialize all disallowed values to 1 // why? because that's how the memory is in DF before we muck with it. size_t num_elems = world->raws.inorganics.size(); @@ -568,7 +570,7 @@ static void unserialize_list_material(const char* subcat, bool all, char val, co for (size_t idx = 0; idx < num_elems; ++idx) { MaterialInfo mi; mi.decode(0, idx); - set_filter_elem(subcat, filter, val, mi.toString(), idx, pile_list.at(idx)); + set_filter_elem(subcat, filters, val, mi.toString(), idx, pile_list.at(idx)); } return; } @@ -582,11 +584,11 @@ static void unserialize_list_material(const char* subcat, bool all, char val, co WARN(log).print("material type index invalid: %d\n", mi.index); continue; } - set_filter_elem(subcat, filter, val, id, mi.index, pile_list.at(mi.index)); + set_filter_elem(subcat, filters, val, id, mi.index, pile_list.at(mi.index)); } } -static bool serialize_list_creature(FuncWriteExport add_value, const std::vector& list) { +static bool serialize_list_creature(FuncWriteExport add_value, const vector& list) { bool all = true; for (size_t i = 0; i < list.size(); ++i) { @@ -604,14 +606,14 @@ static bool serialize_list_creature(FuncWriteExport add_value, const std::vector return all; } -static void unserialize_list_creature(const char* subcat, bool all, char val, const string& filter, - FuncReadImport read_value, int32_t list_size, std::vector& pile_list) { +static void unserialize_list_creature(const char* subcat, bool all, char val, const vector& filters, + FuncReadImport read_value, int32_t list_size, vector& pile_list) { size_t num_elems = world->raws.creatures.all.size(); pile_list.resize(num_elems, '\0'); if (all) { for (size_t idx = 0; idx < num_elems; ++idx) { auto r = find_creature(idx); - set_filter_elem(subcat, filter, val, r->name[0], r->creature_id, pile_list.at(idx)); + set_filter_elem(subcat, filters, val, r->name[0], r->creature_id, pile_list.at(idx)); } return; } @@ -624,7 +626,7 @@ static void unserialize_list_creature(const char* subcat, bool all, char val, co continue; } auto r = find_creature(idx); - set_filter_elem(subcat, filter, val, r->name[0], r->creature_id, pile_list.at(idx)); + set_filter_elem(subcat, filters, val, r->name[0], r->creature_id, pile_list.at(idx)); } } @@ -754,34 +756,34 @@ void StockpileSerializer::write(uint32_t includedElements) { std::bind(&StockpileSerializer::write_wood, this, _1)); } -void StockpileSerializer::read(DeserializeMode mode, const std::string& filter) { +void StockpileSerializer::read(DeserializeMode mode, const vector& filters) { DEBUG(log).print("==READ==\n"); read_containers(mode); read_general(mode); - read_ammo(mode, filter); - read_animals(mode, filter); - read_armor(mode, filter); - read_bars_blocks(mode, filter); - read_cloth(mode, filter); - read_coins(mode, filter); - read_finished_goods(mode, filter); - read_food(mode, filter); - read_furniture(mode, filter); - read_gems(mode, filter); - read_leather(mode, filter); + read_ammo(mode, filters); + read_animals(mode, filters); + read_armor(mode, filters); + read_bars_blocks(mode, filters); + read_cloth(mode, filters); + read_coins(mode, filters); + read_finished_goods(mode, filters); + read_food(mode, filters); + read_furniture(mode, filters); + read_gems(mode, filters); + read_leather(mode, filters); // support for old versions before corpses had a set if (mBuffer.has_corpses()) { StockpileSettings::CorpsesSet* corpses = mBuffer.mutable_corpses_v50(); corpses->set_all(true); } - read_corpses(mode, filter); + read_corpses(mode, filters); - read_refuse(mode, filter); - read_sheet(mode, filter); - read_stone(mode, filter); - read_weapons(mode, filter); - read_wood(mode, filter); + read_refuse(mode, filters); + read_sheet(mode, filters); + read_stone(mode, filters); + read_weapons(mode, filters); + read_wood(mode, filters); } void StockpileSerializer::write_containers() { @@ -880,14 +882,14 @@ static bool ammo_mat_is_allowed(const MaterialInfo& mi) { bool StockpileSerializer::write_ammo(StockpileSettings::AmmoSet* ammo) { bool all = serialize_list_itemdef( - [&](const std::string& token) { ammo->add_type(token); }, + [&](const string& token) { ammo->add_type(token); }, mPile->settings.ammo.type, - std::vector(world->raws.itemdefs.ammo.begin(), world->raws.itemdefs.ammo.end()), + vector(world->raws.itemdefs.ammo.begin(), world->raws.itemdefs.ammo.end()), item_type::AMMO); all = serialize_list_material( ammo_mat_is_allowed, - [&](const std::string& token) { ammo->add_mats(token); }, + [&](const string& token) { ammo->add_mats(token); }, mPile->settings.ammo.mats) && all; if (mPile->settings.ammo.other_mats.size() > 2) { @@ -902,23 +904,23 @@ bool StockpileSerializer::write_ammo(StockpileSettings::AmmoSet* ammo) { all = false; continue; } - const std::string token = i == 0 ? "WOOD" : "BONE"; + const string token = i == 0 ? "WOOD" : "BONE"; ammo->add_other_mats(token); DEBUG(log).print("other mats %zd is %s\n", i, token.c_str()); } all = serialize_list_quality( - [&](const std::string& token) { ammo->add_quality_core(token); }, + [&](const string& token) { ammo->add_quality_core(token); }, mPile->settings.ammo.quality_core) && all; all = serialize_list_quality( - [&](const std::string& token) { ammo->add_quality_total(token); }, + [&](const string& token) { ammo->add_quality_total(token); }, mPile->settings.ammo.quality_total) && all; return all; } -void StockpileSerializer::read_ammo(DeserializeMode mode, const std::string& filter) { +void StockpileSerializer::read_ammo(DeserializeMode mode, const vector& filters) { auto & pammo = mPile->settings.ammo; read_category("ammo", mode, std::bind(&StockpileSettings::has_ammo, mBuffer), @@ -935,35 +937,35 @@ void StockpileSerializer::read_ammo(DeserializeMode mode, const std::string& fil [&](bool all, char val) { auto & bammo = mBuffer.ammo(); - unserialize_list_itemdef("type", all, val, filter, - [&](const size_t& idx) -> const std::string& { return bammo.type(idx); }, + unserialize_list_itemdef("type", all, val, filters, + [&](const size_t& idx) -> const string& { return bammo.type(idx); }, bammo.type_size(), pammo.type, item_type::AMMO); - unserialize_list_material("mats", all, val, filter, ammo_mat_is_allowed, - [&](const size_t& idx) -> const std::string& { return bammo.mats(idx); }, + unserialize_list_material("mats", all, val, filters, ammo_mat_is_allowed, + [&](const size_t& idx) -> const string& { return bammo.mats(idx); }, bammo.mats_size(), pammo.mats); pammo.other_mats.resize(2, '\0'); if (all) { - set_filter_elem("other", filter, val, "WOOD", 0, pammo.other_mats.at(0)); - set_filter_elem("other", filter, val, "BONE", 1, pammo.other_mats.at(1)); + set_filter_elem("other", filters, val, "WOOD", 0, pammo.other_mats.at(0)); + set_filter_elem("other", filters, val, "BONE", 1, pammo.other_mats.at(1)); } else { // TODO can we un-hardcode the values? for (int i = 0; i < bammo.other_mats_size(); ++i) { - const std::string id = bammo.other_mats(i); + const string id = bammo.other_mats(i); const int32_t idx = id == "WOOD" ? 0 : id == "BONE" ? 1 : -1; if (idx == -1) continue; - set_filter_elem("other", filter, val, id, idx, pammo.other_mats.at(idx)); + set_filter_elem("other", filters, val, id, idx, pammo.other_mats.at(idx)); } } - unserialize_list_quality("core", all, val, filter, - [&](const size_t& idx) -> const std::string& { return bammo.quality_core(idx); }, + unserialize_list_quality("core", all, val, filters, + [&](const size_t& idx) -> const string& { return bammo.quality_core(idx); }, bammo.quality_core_size(), pammo.quality_core); - unserialize_list_quality("total", all, val, filter, - [&](const size_t& idx) -> const std::string& { return bammo.quality_total(idx); }, + unserialize_list_quality("total", all, val, filters, + [&](const size_t& idx) -> const string& { return bammo.quality_total(idx); }, bammo.quality_total_size(), pammo.quality_total); }); } @@ -976,11 +978,11 @@ bool StockpileSerializer::write_animals(StockpileSettings::AnimalsSet* animals) animals->set_empty_traps(panimals.empty_traps); return serialize_list_creature( - [&](const std::string& token) { animals->add_enabled(token); }, + [&](const string& token) { animals->add_enabled(token); }, panimals.enabled) && all; } -void StockpileSerializer::read_animals(DeserializeMode mode, const std::string& filter) { +void StockpileSerializer::read_animals(DeserializeMode mode, const vector& filters) { auto & panimals = mPile->settings.animals; read_category("animals", mode, std::bind(&StockpileSettings::has_animals, mBuffer), @@ -995,11 +997,11 @@ void StockpileSerializer::read_animals(DeserializeMode mode, const std::string& [&](bool all, char val) { auto & banimals = mBuffer.animals(); - set_flag("cages", filter, all, val, banimals.empty_cages(), panimals.empty_cages); - set_flag("traps", filter, all, val, banimals.empty_traps(), panimals.empty_traps); + set_flag("cages", filters, all, val, banimals.empty_cages(), panimals.empty_cages); + set_flag("traps", filters, all, val, banimals.empty_traps(), panimals.empty_traps); - unserialize_list_creature("", all, val, filter, - [&](const size_t& idx) -> const std::string& { return banimals.enabled(idx); }, + unserialize_list_creature("", all, val, filters, + [&](const size_t& idx) -> const string& { return banimals.enabled(idx); }, banimals.enabled_size(), panimals.enabled); }); } @@ -1018,69 +1020,69 @@ bool StockpileSerializer::write_armor(StockpileSettings::ArmorSet* armor) { // armor type all = serialize_list_itemdef( - [&](const std::string& token) { armor->add_body(token); }, + [&](const string& token) { armor->add_body(token); }, parmor.body, - std::vector(world->raws.itemdefs.armor.begin(), world->raws.itemdefs.armor.end()), + vector(world->raws.itemdefs.armor.begin(), world->raws.itemdefs.armor.end()), item_type::ARMOR) && all; // helm type all = serialize_list_itemdef( - [&](const std::string& token) { armor->add_head(token); }, + [&](const string& token) { armor->add_head(token); }, parmor.head, - std::vector(world->raws.itemdefs.helms.begin(), world->raws.itemdefs.helms.end()), + vector(world->raws.itemdefs.helms.begin(), world->raws.itemdefs.helms.end()), item_type::HELM) && all; // shoes type all = serialize_list_itemdef( - [&](const std::string& token) { armor->add_feet(token); }, + [&](const string& token) { armor->add_feet(token); }, parmor.feet, - std::vector(world->raws.itemdefs.shoes.begin(), world->raws.itemdefs.shoes.end()), + vector(world->raws.itemdefs.shoes.begin(), world->raws.itemdefs.shoes.end()), item_type::SHOES) && all; // gloves type all = serialize_list_itemdef( - [&](const std::string& token) { armor->add_hands(token); }, + [&](const string& token) { armor->add_hands(token); }, parmor.hands, - std::vector(world->raws.itemdefs.gloves.begin(), world->raws.itemdefs.gloves.end()), + vector(world->raws.itemdefs.gloves.begin(), world->raws.itemdefs.gloves.end()), item_type::GLOVES) && all; // pant type all = serialize_list_itemdef( - [&](const std::string& token) { armor->add_legs(token); }, + [&](const string& token) { armor->add_legs(token); }, parmor.legs, - std::vector(world->raws.itemdefs.pants.begin(), world->raws.itemdefs.pants.end()), + vector(world->raws.itemdefs.pants.begin(), world->raws.itemdefs.pants.end()), item_type::PANTS) && all; // shield type all = serialize_list_itemdef( - [&](const std::string& token) { armor->add_shield(token); }, + [&](const string& token) { armor->add_shield(token); }, parmor.shield, - std::vector(world->raws.itemdefs.shields.begin(), world->raws.itemdefs.shields.end()), + vector(world->raws.itemdefs.shields.begin(), world->raws.itemdefs.shields.end()), item_type::SHIELD) && all; // materials all = serialize_list_material( armor_mat_is_allowed, - [&](const std::string& token) { armor->add_mats(token); }, + [&](const string& token) { armor->add_mats(token); }, parmor.mats) && all; // other mats all = serialize_list_other_mats( - mOtherMatsWeaponsArmor.mats, [&](const std::string& token) { armor->add_other_mats(token); }, + mOtherMatsWeaponsArmor.mats, [&](const string& token) { armor->add_other_mats(token); }, parmor.other_mats) && all; // quality core - all = serialize_list_quality([&](const std::string& token) { armor->add_quality_core(token); }, + all = serialize_list_quality([&](const string& token) { armor->add_quality_core(token); }, parmor.quality_core) && all; // quality total - all = serialize_list_quality([&](const std::string& token) { armor->add_quality_total(token); }, + all = serialize_list_quality([&](const string& token) { armor->add_quality_total(token); }, parmor.quality_total) && all; return all; } -void StockpileSerializer::read_armor(DeserializeMode mode, const std::string& filter) { +void StockpileSerializer::read_armor(DeserializeMode mode, const vector& filters) { auto & parmor = mPile->settings.armor; read_category("armor", mode, std::bind(&StockpileSettings::has_armor, mBuffer), @@ -1102,48 +1104,48 @@ void StockpileSerializer::read_armor(DeserializeMode mode, const std::string& fi [&](bool all, char val) { auto & barmor = mBuffer.armor(); - set_flag("nouse", filter, all, val, barmor.unusable(), parmor.unusable); - set_flag("canuse", filter, all, val, barmor.usable(), parmor.usable); + set_flag("nouse", filters, all, val, barmor.unusable(), parmor.unusable); + set_flag("canuse", filters, all, val, barmor.usable(), parmor.usable); - unserialize_list_itemdef("body", all, val, filter, - [&](const size_t& idx) -> const std::string& { return barmor.body(idx); }, + unserialize_list_itemdef("body", all, val, filters, + [&](const size_t& idx) -> const string& { return barmor.body(idx); }, barmor.body_size(), parmor.body, item_type::ARMOR); - unserialize_list_itemdef("head", all, val, filter, - [&](const size_t& idx) -> const std::string& { return barmor.head(idx); }, + unserialize_list_itemdef("head", all, val, filters, + [&](const size_t& idx) -> const string& { return barmor.head(idx); }, barmor.head_size(), parmor.head, item_type::HELM); - unserialize_list_itemdef("feet", all, val, filter, - [&](const size_t& idx) -> const std::string& { return barmor.feet(idx); }, + unserialize_list_itemdef("feet", all, val, filters, + [&](const size_t& idx) -> const string& { return barmor.feet(idx); }, barmor.feet_size(), parmor.feet, item_type::SHOES); - unserialize_list_itemdef("hands", all, val, filter, - [&](const size_t& idx) -> const std::string& { return barmor.hands(idx); }, + unserialize_list_itemdef("hands", all, val, filters, + [&](const size_t& idx) -> const string& { return barmor.hands(idx); }, barmor.hands_size(), parmor.hands, item_type::GLOVES); - unserialize_list_itemdef("legs", all, val, filter, - [&](const size_t& idx) -> const std::string& { return barmor.legs(idx); }, + unserialize_list_itemdef("legs", all, val, filters, + [&](const size_t& idx) -> const string& { return barmor.legs(idx); }, barmor.legs_size(), parmor.legs, item_type::PANTS); - unserialize_list_itemdef("shield", all, val, filter, - [&](const size_t& idx) -> const std::string& { return barmor.shield(idx); }, + unserialize_list_itemdef("shield", all, val, filters, + [&](const size_t& idx) -> const string& { return barmor.shield(idx); }, barmor.shield_size(), parmor.shield, item_type::SHIELD); - unserialize_list_material("mats", all, val, filter, + unserialize_list_material("mats", all, val, filters, armor_mat_is_allowed, - [&](const size_t& idx) -> const std::string& { return barmor.mats(idx); }, + [&](const size_t& idx) -> const string& { return barmor.mats(idx); }, barmor.mats_size(), parmor.mats); - unserialize_list_other_mats("other", all, val, filter, - mOtherMatsWeaponsArmor.mats, [&](const size_t& idx) -> const std::string& { return barmor.other_mats(idx); }, + unserialize_list_other_mats("other", all, val, filters, + mOtherMatsWeaponsArmor.mats, [&](const size_t& idx) -> const string& { return barmor.other_mats(idx); }, barmor.other_mats_size(), parmor.other_mats); - unserialize_list_quality("core", all, val, filter, - [&](const size_t& idx) -> const std::string& { return barmor.quality_core(idx); }, + unserialize_list_quality("core", all, val, filters, + [&](const size_t& idx) -> const string& { return barmor.quality_core(idx); }, barmor.quality_core_size(), parmor.quality_core); - unserialize_list_quality("total", all, val, filter, - [&](const size_t& idx) -> const std::string& { return barmor.quality_total(idx); }, + unserialize_list_quality("total", all, val, filters, + [&](const size_t& idx) -> const string& { return barmor.quality_total(idx); }, barmor.quality_total_size(), parmor.quality_total); }); } @@ -1159,26 +1161,26 @@ static bool blocks_mat_is_allowed(const MaterialInfo& mi) { bool StockpileSerializer::write_bars_blocks(StockpileSettings::BarsBlocksSet* bars_blocks) { bool all = serialize_list_material( bars_mat_is_allowed, - [&](const std::string& token) { bars_blocks->add_bars_mats(token); }, + [&](const string& token) { bars_blocks->add_bars_mats(token); }, mPile->settings.bars_blocks.bars_mats); all = serialize_list_material( blocks_mat_is_allowed, - [&](const std::string& token) { bars_blocks->add_blocks_mats(token); }, + [&](const string& token) { bars_blocks->add_blocks_mats(token); }, mPile->settings.bars_blocks.blocks_mats) && all; all = serialize_list_other_mats( - mOtherMatsBars.mats, [&](const std::string& token) { bars_blocks->add_bars_other_mats(token); }, + mOtherMatsBars.mats, [&](const string& token) { bars_blocks->add_bars_other_mats(token); }, mPile->settings.bars_blocks.bars_other_mats) && all; all = serialize_list_other_mats( - mOtherMatsBlocks.mats, [&](const std::string& token) { bars_blocks->add_blocks_other_mats(token); }, + mOtherMatsBlocks.mats, [&](const string& token) { bars_blocks->add_blocks_other_mats(token); }, mPile->settings.bars_blocks.blocks_other_mats) && all; return all; } -void StockpileSerializer::read_bars_blocks(DeserializeMode mode, const std::string& filter) { +void StockpileSerializer::read_bars_blocks(DeserializeMode mode, const vector& filters) { auto & pbarsblocks = mPile->settings.bars_blocks; read_category("bars_blocks", mode, std::bind(&StockpileSettings::has_barsblocks, mBuffer), @@ -1194,23 +1196,23 @@ void StockpileSerializer::read_bars_blocks(DeserializeMode mode, const std::stri [&](bool all, char val) { auto & bbarsblocks = mBuffer.barsblocks(); - unserialize_list_material("mats/bars", all, val, filter, bars_mat_is_allowed, - [&](const size_t& idx) -> const std::string& { return bbarsblocks.bars_mats(idx); }, + unserialize_list_material("mats/bars", all, val, filters, bars_mat_is_allowed, + [&](const size_t& idx) -> const string& { return bbarsblocks.bars_mats(idx); }, bbarsblocks.bars_mats_size(), pbarsblocks.bars_mats); - unserialize_list_other_mats("other/bars", all, val, filter, + unserialize_list_other_mats("other/bars", all, val, filters, mOtherMatsBars.mats, - [&](const size_t& idx) -> const std::string& { return bbarsblocks.bars_other_mats(idx); }, + [&](const size_t& idx) -> const string& { return bbarsblocks.bars_other_mats(idx); }, bbarsblocks.bars_other_mats_size(), pbarsblocks.bars_other_mats); - unserialize_list_material("mats/blocks", all, val, filter, + unserialize_list_material("mats/blocks", all, val, filters, blocks_mat_is_allowed, - [&](const size_t& idx) -> const std::string& { return bbarsblocks.blocks_mats(idx); }, + [&](const size_t& idx) -> const string& { return bbarsblocks.blocks_mats(idx); }, bbarsblocks.blocks_mats_size(), pbarsblocks.blocks_mats); - unserialize_list_other_mats("other/blocks", all, val, filter, + unserialize_list_other_mats("other/blocks", all, val, filters, mOtherMatsBlocks.mats, - [&](const size_t& idx) -> const std::string& { return bbarsblocks.blocks_other_mats(idx); }, + [&](const size_t& idx) -> const string& { return bbarsblocks.blocks_other_mats(idx); }, bbarsblocks.blocks_other_mats_size(), pbarsblocks.blocks_other_mats); }); } @@ -1219,41 +1221,41 @@ bool StockpileSerializer::write_cloth(StockpileSettings::ClothSet* cloth) { bool all = true; all = serialize_list_organic_mat( - [&](const std::string& token) { cloth->add_thread_silk(token); }, + [&](const string& token) { cloth->add_thread_silk(token); }, &mPile->settings.cloth.thread_silk, organic_mat_category::Silk) && all; all = serialize_list_organic_mat( - [&](const std::string& token) { cloth->add_thread_plant(token); }, + [&](const string& token) { cloth->add_thread_plant(token); }, &mPile->settings.cloth.thread_plant, organic_mat_category::PlantFiber) && all; all = serialize_list_organic_mat( - [&](const std::string& token) { cloth->add_thread_yarn(token); }, + [&](const string& token) { cloth->add_thread_yarn(token); }, &mPile->settings.cloth.thread_yarn, organic_mat_category::Yarn) && all; all = serialize_list_organic_mat( - [&](const std::string& token) { cloth->add_thread_metal(token); }, + [&](const string& token) { cloth->add_thread_metal(token); }, &mPile->settings.cloth.thread_metal, organic_mat_category::MetalThread) && all; all = serialize_list_organic_mat( - [&](const std::string& token) { cloth->add_cloth_silk(token); }, + [&](const string& token) { cloth->add_cloth_silk(token); }, &mPile->settings.cloth.cloth_silk, organic_mat_category::Silk) && all; all = serialize_list_organic_mat( - [&](const std::string& token) { cloth->add_cloth_plant(token); }, + [&](const string& token) { cloth->add_cloth_plant(token); }, &mPile->settings.cloth.cloth_plant, organic_mat_category::PlantFiber) && all; all = serialize_list_organic_mat( - [&](const std::string& token) { cloth->add_cloth_yarn(token); }, + [&](const string& token) { cloth->add_cloth_yarn(token); }, &mPile->settings.cloth.cloth_yarn, organic_mat_category::Yarn) && all; all = serialize_list_organic_mat( - [&](const std::string& token) { cloth->add_cloth_metal(token); }, + [&](const string& token) { cloth->add_cloth_metal(token); }, &mPile->settings.cloth.cloth_metal, organic_mat_category::MetalThread) && all; return all; } -void StockpileSerializer::read_cloth(DeserializeMode mode, const std::string& filter) { +void StockpileSerializer::read_cloth(DeserializeMode mode, const vector& filters) { auto & pcloth = mPile->settings.cloth; read_category("cloth", mode, std::bind(&StockpileSettings::has_cloth, mBuffer), @@ -1273,36 +1275,36 @@ void StockpileSerializer::read_cloth(DeserializeMode mode, const std::string& fi [&](bool all, char val) { auto & bcloth = mBuffer.cloth(); - unserialize_list_organic_mat("thread/silk", all, val, filter, - [&](size_t idx) -> std::string { return bcloth.thread_silk(idx); }, + unserialize_list_organic_mat("thread/silk", all, val, filters, + [&](size_t idx) -> string { return bcloth.thread_silk(idx); }, bcloth.thread_silk_size(), pcloth.thread_silk, organic_mat_category::Silk); - unserialize_list_organic_mat("thread/plant", all, val, filter, - [&](size_t idx) -> std::string { return bcloth.thread_plant(idx); }, + unserialize_list_organic_mat("thread/plant", all, val, filters, + [&](size_t idx) -> string { return bcloth.thread_plant(idx); }, bcloth.thread_plant_size(), pcloth.thread_plant, organic_mat_category::PlantFiber); - unserialize_list_organic_mat("thread/yarn", all, val, filter, - [&](size_t idx) -> std::string { return bcloth.thread_yarn(idx); }, + unserialize_list_organic_mat("thread/yarn", all, val, filters, + [&](size_t idx) -> string { return bcloth.thread_yarn(idx); }, bcloth.thread_yarn_size(), pcloth.thread_yarn, organic_mat_category::Yarn); - unserialize_list_organic_mat("thread/metal", all, val, filter, - [&](size_t idx) -> std::string { return bcloth.thread_metal(idx); }, + unserialize_list_organic_mat("thread/metal", all, val, filters, + [&](size_t idx) -> string { return bcloth.thread_metal(idx); }, bcloth.thread_metal_size(), pcloth.thread_metal, organic_mat_category::MetalThread); - unserialize_list_organic_mat("cloth/silk", all, val, filter, - [&](size_t idx) -> std::string { return bcloth.cloth_silk(idx); }, + unserialize_list_organic_mat("cloth/silk", all, val, filters, + [&](size_t idx) -> string { return bcloth.cloth_silk(idx); }, bcloth.cloth_silk_size(), pcloth.cloth_silk, organic_mat_category::Silk); - unserialize_list_organic_mat("cloth/plant", all, val, filter, - [&](size_t idx) -> std::string { return bcloth.cloth_plant(idx); }, + unserialize_list_organic_mat("cloth/plant", all, val, filters, + [&](size_t idx) -> string { return bcloth.cloth_plant(idx); }, bcloth.cloth_plant_size(), pcloth.cloth_plant, organic_mat_category::PlantFiber); - unserialize_list_organic_mat("cloth/yarn", all, val, filter, - [&](size_t idx) -> std::string { return bcloth.cloth_yarn(idx); }, + unserialize_list_organic_mat("cloth/yarn", all, val, filters, + [&](size_t idx) -> string { return bcloth.cloth_yarn(idx); }, bcloth.cloth_yarn_size(), pcloth.cloth_yarn, organic_mat_category::Yarn); - unserialize_list_organic_mat("cloth/metal", all, val, filter, - [&](size_t idx) -> std::string { return bcloth.cloth_metal(idx); }, + unserialize_list_organic_mat("cloth/metal", all, val, filters, + [&](size_t idx) -> string { return bcloth.cloth_metal(idx); }, bcloth.cloth_metal_size(), pcloth.cloth_metal, organic_mat_category::MetalThread); }); } @@ -1314,11 +1316,11 @@ static bool coins_mat_is_allowed(const MaterialInfo& mi) { bool StockpileSerializer::write_coins(StockpileSettings::CoinSet* coins) { return serialize_list_material( coins_mat_is_allowed, - [&](const std::string& token) { coins->add_mats(token); }, + [&](const string& token) { coins->add_mats(token); }, mPile->settings.coins.mats); } -void StockpileSerializer::read_coins(DeserializeMode mode, const std::string& filter) { +void StockpileSerializer::read_coins(DeserializeMode mode, const vector& filters) { auto & pcoins = mPile->settings.coins; read_category("coin", mode, std::bind(&StockpileSettings::has_coin, mBuffer), @@ -1331,8 +1333,8 @@ void StockpileSerializer::read_coins(DeserializeMode mode, const std::string& fi [&](bool all, char val) { auto & bcoin = mBuffer.coin(); - unserialize_list_material("", all, val, filter, coins_mat_is_allowed, - [&](const size_t& idx) -> const std::string& { return bcoin.mats(idx); }, + unserialize_list_material("", all, val, filters, coins_mat_is_allowed, + [&](const size_t& idx) -> const string& { return bcoin.mats(idx); }, bcoin.mats_size(), pcoins.mats); }); } @@ -1377,28 +1379,28 @@ static bool finished_goods_mat_is_allowed(const MaterialInfo& mi) { bool StockpileSerializer::write_finished_goods(StockpileSettings::FinishedGoodsSet* finished_goods) { bool all = serialize_list_item_type( finished_goods_type_is_allowed, - [&](const std::string& token) { finished_goods->add_type(token); }, + [&](const string& token) { finished_goods->add_type(token); }, mPile->settings.finished_goods.type); all = serialize_list_material( finished_goods_mat_is_allowed, - [&](const std::string& token) { finished_goods->add_mats(token); }, + [&](const string& token) { finished_goods->add_mats(token); }, mPile->settings.finished_goods.mats) && all; all = serialize_list_other_mats( - mOtherMatsFinishedGoods.mats, [&](const std::string& token) { finished_goods->add_other_mats(token); }, + mOtherMatsFinishedGoods.mats, [&](const string& token) { finished_goods->add_other_mats(token); }, mPile->settings.finished_goods.other_mats) && all; - all = serialize_list_quality([&](const std::string& token) { finished_goods->add_quality_core(token); }, + all = serialize_list_quality([&](const string& token) { finished_goods->add_quality_core(token); }, mPile->settings.finished_goods.quality_core) && all; - all = serialize_list_quality([&](const std::string& token) { finished_goods->add_quality_total(token); }, + all = serialize_list_quality([&](const string& token) { finished_goods->add_quality_total(token); }, mPile->settings.finished_goods.quality_total) && all; return all; } -void StockpileSerializer::read_finished_goods(DeserializeMode mode, const std::string& filter) { +void StockpileSerializer::read_finished_goods(DeserializeMode mode, const vector& filters) { auto & pfinished_goods = mPile->settings.finished_goods; read_category("finished_goods", mode, std::bind(&StockpileSettings::has_finished_goods, mBuffer), @@ -1415,24 +1417,24 @@ void StockpileSerializer::read_finished_goods(DeserializeMode mode, const std::s [&](bool all, char val) { auto & bfinished_goods = mBuffer.finished_goods(); - unserialize_list_item_type("type", all, val, filter, finished_goods_type_is_allowed, - [&](const size_t& idx) -> const std::string& { return bfinished_goods.type(idx); }, + unserialize_list_item_type("type", all, val, filters, finished_goods_type_is_allowed, + [&](const size_t& idx) -> const string& { return bfinished_goods.type(idx); }, bfinished_goods.type_size(), pfinished_goods.type); - unserialize_list_material("mats", all, val, filter, finished_goods_mat_is_allowed, - [&](const size_t& idx) -> const std::string& { return bfinished_goods.mats(idx); }, + unserialize_list_material("mats", all, val, filters, finished_goods_mat_is_allowed, + [&](const size_t& idx) -> const string& { return bfinished_goods.mats(idx); }, bfinished_goods.mats_size(), pfinished_goods.mats); - unserialize_list_other_mats("other", all, val, filter, mOtherMatsFinishedGoods.mats, - [&](const size_t& idx) -> const std::string& { return bfinished_goods.other_mats(idx); }, + unserialize_list_other_mats("other", all, val, filters, mOtherMatsFinishedGoods.mats, + [&](const size_t& idx) -> const string& { return bfinished_goods.other_mats(idx); }, bfinished_goods.other_mats_size(), pfinished_goods.other_mats); - unserialize_list_quality("core", all, val, filter, - [&](const size_t& idx) -> const std::string& { return bfinished_goods.quality_core(idx); }, + unserialize_list_quality("core", all, val, filters, + [&](const size_t& idx) -> const string& { return bfinished_goods.quality_core(idx); }, bfinished_goods.quality_core_size(), pfinished_goods.quality_core); - unserialize_list_quality("total", all, val, filter, - [&](const size_t& idx) -> const std::string& { return bfinished_goods.quality_total(idx); }, + unserialize_list_quality("total", all, val, filters, + [&](const size_t& idx) -> const string& { return bfinished_goods.quality_total(idx); }, bfinished_goods.quality_total_size(), pfinished_goods.quality_total); }); } @@ -1443,155 +1445,155 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego switch (cat) { case organic_mat_category::Meat: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_meat(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().meat(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().meat(idx); }; return food_pair("meat", setter, &mPile->settings.food.meat, getter, mBuffer.food().meat_size()); } case organic_mat_category::Fish: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_fish(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().fish(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().fish(idx); }; return food_pair("fish", setter, &mPile->settings.food.fish, getter, mBuffer.food().fish_size()); } case organic_mat_category::UnpreparedFish: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_unprepared_fish(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().unprepared_fish(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().unprepared_fish(idx); }; return food_pair("unpreparedfish", setter, &mPile->settings.food.unprepared_fish, getter, mBuffer.food().unprepared_fish_size()); } case organic_mat_category::Eggs: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_egg(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().egg(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().egg(idx); }; return food_pair("egg", setter, &mPile->settings.food.egg, getter, mBuffer.food().egg_size()); } case organic_mat_category::Plants: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_plants(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().plants(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().plants(idx); }; return food_pair("plants", setter, &mPile->settings.food.plants, getter, mBuffer.food().plants_size()); } case organic_mat_category::PlantDrink: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_drink_plant(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().drink_plant(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().drink_plant(idx); }; return food_pair("drink/plant", setter, &mPile->settings.food.drink_plant, getter, mBuffer.food().drink_plant_size()); } case organic_mat_category::CreatureDrink: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_drink_animal(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().drink_animal(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().drink_animal(idx); }; return food_pair("drink/animal", setter, &mPile->settings.food.drink_animal, getter, mBuffer.food().drink_animal_size()); } case organic_mat_category::PlantCheese: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_cheese_plant(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().cheese_plant(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().cheese_plant(idx); }; return food_pair("cheese/plant", setter, &mPile->settings.food.cheese_plant, getter, mBuffer.food().cheese_plant_size()); } case organic_mat_category::CreatureCheese: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_cheese_animal(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().cheese_animal(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().cheese_animal(idx); }; return food_pair("cheese/animal", setter, &mPile->settings.food.cheese_animal, getter, mBuffer.food().cheese_animal_size()); } case organic_mat_category::Seed: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_seeds(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().seeds(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().seeds(idx); }; return food_pair("seeds", setter, &mPile->settings.food.seeds, getter, mBuffer.food().seeds_size()); } case organic_mat_category::Leaf: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_leaves(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().leaves(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().leaves(idx); }; return food_pair("leaves", setter, &mPile->settings.food.leaves, getter, mBuffer.food().leaves_size()); } case organic_mat_category::PlantPowder: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_powder_plant(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().powder_plant(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().powder_plant(idx); }; return food_pair("powder/plant", setter, &mPile->settings.food.powder_plant, getter, mBuffer.food().powder_plant_size()); } case organic_mat_category::CreaturePowder: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_powder_creature(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().powder_creature(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().powder_creature(idx); }; return food_pair("powder/animal", setter, &mPile->settings.food.powder_creature, getter, mBuffer.food().powder_creature_size()); } case organic_mat_category::Glob: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_glob(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().glob(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().glob(idx); }; return food_pair("glob", setter, &mPile->settings.food.glob, getter, mBuffer.food().glob_size()); } case organic_mat_category::PlantLiquid: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_liquid_plant(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().liquid_plant(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().liquid_plant(idx); }; return food_pair("liquid/plant", setter, &mPile->settings.food.liquid_plant, getter, mBuffer.food().liquid_plant_size()); } case organic_mat_category::CreatureLiquid: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_liquid_animal(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().liquid_animal(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().liquid_animal(idx); }; return food_pair("liquid/animal", setter, &mPile->settings.food.liquid_animal, getter, mBuffer.food().liquid_animal_size()); } case organic_mat_category::MiscLiquid: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_liquid_misc(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().liquid_misc(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().liquid_misc(idx); }; return food_pair("liquid/misc", setter, &mPile->settings.food.liquid_misc, getter, mBuffer.food().liquid_misc_size()); } case organic_mat_category::Paste: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_glob_paste(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().glob_paste(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().glob_paste(idx); }; return food_pair("paste", setter, &mPile->settings.food.glob_paste, getter, mBuffer.food().glob_paste_size()); } case organic_mat_category::Pressed: { - FuncWriteExport setter = [&](const std::string& id) { + FuncWriteExport setter = [&](const string& id) { mBuffer.mutable_food()->add_glob_pressed(id); }; - FuncReadImport getter = [&](size_t idx) -> std::string { return mBuffer.food().glob_pressed(idx); }; + FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().glob_pressed(idx); }; return food_pair("pressed", setter, &mPile->settings.food.glob_pressed, getter, mBuffer.food().glob_pressed_size()); } case organic_mat_category::Leather: @@ -1638,7 +1640,7 @@ bool StockpileSerializer::write_food(StockpileSettings::FoodSet* food) { return all; } -void StockpileSerializer::read_food(DeserializeMode mode, const std::string& filter) { +void StockpileSerializer::read_food(DeserializeMode mode, const vector& filters) { using df::enums::organic_mat_category::organic_mat_category; using traits = df::enum_traits; @@ -1660,13 +1662,13 @@ void StockpileSerializer::read_food(DeserializeMode mode, const std::string& fil [&](bool all, char val) { auto & bfood = mBuffer.food(); - set_flag("preparedmeals", filter, all, val, bfood.prepared_meals(), pfood.prepared_meals); + set_flag("preparedmeals", filters, all, val, bfood.prepared_meals(), pfood.prepared_meals); for (int32_t mat_category = traits::first_item_value; mat_category < traits::last_item_value; ++mat_category) { food_pair p = food_map((organic_mat_category)mat_category); if (!p.valid) continue; - unserialize_list_organic_mat(p.name, all, val, filter, + unserialize_list_organic_mat(p.name, all, val, filters, p.get_value, p.serialized_count, *p.stockpile_values, (organic_mat_category)mat_category); } @@ -1690,30 +1692,30 @@ bool StockpileSerializer::write_furniture(StockpileSettings::FurnitureSet* furni all = false; continue; } - std::string f_type(type_traits::key_table[i]); + string f_type(type_traits::key_table[i]); furniture->add_type(f_type); DEBUG(log).print("furniture_type %zd is %s\n", i, f_type.c_str()); } all = serialize_list_material( furniture_mat_is_allowed, - [&](const std::string& token) { furniture->add_mats(token); }, + [&](const string& token) { furniture->add_mats(token); }, pfurniture.mats) && all; all = serialize_list_other_mats( mOtherMatsFurniture.mats, - [&](const std::string& token) { furniture->add_other_mats(token); }, + [&](const string& token) { furniture->add_other_mats(token); }, pfurniture.other_mats) && all; all = serialize_list_quality( - [&](const std::string& token) { furniture->add_quality_core(token); }, + [&](const string& token) { furniture->add_quality_core(token); }, pfurniture.quality_core) && all; all = serialize_list_quality( - [&](const std::string& token) { furniture->add_quality_total(token); }, + [&](const string& token) { furniture->add_quality_total(token); }, pfurniture.quality_total) && all; return all; } -void StockpileSerializer::read_furniture(DeserializeMode mode, const std::string& filter) { +void StockpileSerializer::read_furniture(DeserializeMode mode, const vector& filters) { auto & pfurniture = mPile->settings.furniture; read_category("furniture", mode, std::bind(&StockpileSettings::has_furniture, mBuffer), @@ -1738,34 +1740,34 @@ void StockpileSerializer::read_furniture(DeserializeMode mode, const std::string if (all) { for (size_t idx = 0; idx < num_elems; ++idx) { string id = ENUM_KEY_STR(furniture_type, (df::furniture_type)idx); - set_filter_elem("type", filter, val, id, idx, pfurniture.type.at(idx)); + set_filter_elem("type", filters, val, id, idx, pfurniture.type.at(idx)); } } else { for (int i = 0; i < bfurniture.type_size(); ++i) { - const std::string token = bfurniture.type(i); + const string token = bfurniture.type(i); df::enum_traits::base_type idx = linear_index(type_traits, token); if (idx < 0 || size_t(idx) >= pfurniture.type.size()) { WARN(log).print("furniture type index invalid %s, idx=%d\n", token.c_str(), idx); continue; } - set_filter_elem("type", filter, val, token, idx, pfurniture.type.at(idx)); + set_filter_elem("type", filters, val, token, idx, pfurniture.type.at(idx)); } } - unserialize_list_material("mats", all, val, filter, furniture_mat_is_allowed, - [&](const size_t& idx) -> const std::string& { return bfurniture.mats(idx); }, + unserialize_list_material("mats", all, val, filters, furniture_mat_is_allowed, + [&](const size_t& idx) -> const string& { return bfurniture.mats(idx); }, bfurniture.mats_size(), pfurniture.mats); - unserialize_list_other_mats("other", all, val, filter, - mOtherMatsFurniture.mats, [&](const size_t& idx) -> const std::string& { return bfurniture.other_mats(idx); }, + unserialize_list_other_mats("other", all, val, filters, + mOtherMatsFurniture.mats, [&](const size_t& idx) -> const string& { return bfurniture.other_mats(idx); }, bfurniture.other_mats_size(), pfurniture.other_mats); - unserialize_list_quality("core", all, val, filter, - [&](const size_t& idx) -> const std::string& { return bfurniture.quality_core(idx); }, + unserialize_list_quality("core", all, val, filters, + [&](const size_t& idx) -> const string& { return bfurniture.quality_core(idx); }, bfurniture.quality_core_size(), pfurniture.quality_core); - unserialize_list_quality("total", all, val, filter, - [&](const size_t& idx) -> const std::string& { return bfurniture.quality_total(idx); }, + unserialize_list_quality("total", all, val, filters, + [&](const size_t& idx) -> const string& { return bfurniture.quality_total(idx); }, bfurniture.quality_total_size(), pfurniture.quality_total); }); } @@ -1789,12 +1791,12 @@ bool StockpileSerializer::write_gems(StockpileSettings::GemsSet* gems) { bool all = serialize_list_material( gem_mat_is_allowed, - [&](const std::string& token) { gems->add_rough_mats(token); }, + [&](const string& token) { gems->add_rough_mats(token); }, pgems.rough_mats); all = serialize_list_material( gem_cut_mat_is_allowed, - [&](const std::string& token) { gems->add_cut_mats(token); }, + [&](const string& token) { gems->add_cut_mats(token); }, pgems.cut_mats) && all; for (size_t i = 0; i < pgems.rough_other_mats.size(); ++i) { @@ -1826,7 +1828,7 @@ bool StockpileSerializer::write_gems(StockpileSettings::GemsSet* gems) { return all; } -void StockpileSerializer::read_gems(DeserializeMode mode, const std::string& filter) { +void StockpileSerializer::read_gems(DeserializeMode mode, const vector& filters) { auto & pgems = mPile->settings.gems; read_category("gems", mode, std::bind(&StockpileSettings::has_gems, mBuffer), @@ -1842,12 +1844,12 @@ void StockpileSerializer::read_gems(DeserializeMode mode, const std::string& fil [&](bool all, char val) { auto & bgems = mBuffer.gems(); - unserialize_list_material("mats/rough", all, val, filter, gem_mat_is_allowed, - [&](const size_t& idx) -> const std::string& { return bgems.rough_mats(idx); }, + unserialize_list_material("mats/rough", all, val, filters, gem_mat_is_allowed, + [&](const size_t& idx) -> const string& { return bgems.rough_mats(idx); }, bgems.rough_mats_size(),pgems.rough_mats); - unserialize_list_material("mats/cut", all, val, filter, gem_cut_mat_is_allowed, - [&](const size_t& idx) -> const std::string& { return bgems.cut_mats(idx); }, + unserialize_list_material("mats/cut", all, val, filters, gem_cut_mat_is_allowed, + [&](const size_t& idx) -> const string& { return bgems.cut_mats(idx); }, bgems.cut_mats_size(), pgems.cut_mats); const size_t builtin_size = std::extentraws.mat_table.builtin)>::value; @@ -1858,11 +1860,11 @@ void StockpileSerializer::read_gems(DeserializeMode mode, const std::string& fil MaterialInfo mi; mi.decode(idx, -1); if (gem_other_mat_is_allowed(mi)) - set_filter_elem("other/rough", filter, val, mi.getToken(), idx, pgems.rough_other_mats.at(idx)); + set_filter_elem("other/rough", filters, val, mi.getToken(), idx, pgems.rough_other_mats.at(idx)); if (!mi.isValid()) mi.decode(0, idx); if (gem_other_mat_is_allowed(mi)) - set_filter_elem("other/cut", filter, val, mi.getToken(), idx, pgems.cut_other_mats.at(idx)); + set_filter_elem("other/cut", filters, val, mi.getToken(), idx, pgems.cut_other_mats.at(idx)); } return; } else { @@ -1870,10 +1872,10 @@ void StockpileSerializer::read_gems(DeserializeMode mode, const std::string& fil for (size_t i = 0; i < builtin_size; ++i) { string id = bgems.rough_other_mats(i); if (mi.find(id) && mi.isValid() && size_t(mi.type) < builtin_size) - set_filter_elem("other/rough", filter, val, id, mi.type, pgems.rough_other_mats.at(mi.type)); + set_filter_elem("other/rough", filters, val, id, mi.type, pgems.rough_other_mats.at(mi.type)); id = bgems.cut_other_mats(i); if (mi.find(id) && mi.isValid() && size_t(mi.type) < builtin_size) - set_filter_elem("other/cut", filter, val, id, mi.type, pgems.cut_other_mats.at(mi.type)); + set_filter_elem("other/cut", filters, val, id, mi.type, pgems.cut_other_mats.at(mi.type)); } } }); @@ -1881,11 +1883,11 @@ void StockpileSerializer::read_gems(DeserializeMode mode, const std::string& fil bool StockpileSerializer::write_leather(StockpileSettings::LeatherSet* leather) { return serialize_list_organic_mat( - [&](const std::string& id) { leather->add_mats(id); }, + [&](const string& id) { leather->add_mats(id); }, &mPile->settings.leather.mats, organic_mat_category::Leather); } -void StockpileSerializer::read_leather(DeserializeMode mode, const std::string& filter) { +void StockpileSerializer::read_leather(DeserializeMode mode, const vector& filters) { auto & pleather = mPile->settings.leather; read_category("leather", mode, std::bind(&StockpileSettings::has_leather, mBuffer), @@ -1898,19 +1900,19 @@ void StockpileSerializer::read_leather(DeserializeMode mode, const std::string& [&](bool all, char val) { auto & bleather = mBuffer.leather(); - unserialize_list_organic_mat("", all, val, filter, - [&](size_t idx) -> std::string { return bleather.mats(idx); }, + unserialize_list_organic_mat("", all, val, filters, + [&](size_t idx) -> string { return bleather.mats(idx); }, bleather.mats_size(), pleather.mats, organic_mat_category::Leather); }); } bool StockpileSerializer::write_corpses(StockpileSettings::CorpsesSet* corpses) { return serialize_list_creature( - [&](const std::string& token) { corpses->add_corpses(token); }, + [&](const string& token) { corpses->add_corpses(token); }, mPile->settings.corpses.corpses); } -void StockpileSerializer::read_corpses(DeserializeMode mode, const std::string& filter) { +void StockpileSerializer::read_corpses(DeserializeMode mode, const vector& filters) { auto & pcorpses = mPile->settings.corpses; read_category("corpses", mode, std::bind(&StockpileSettings::has_corpses_v50, mBuffer), @@ -1922,8 +1924,8 @@ void StockpileSerializer::read_corpses(DeserializeMode mode, const std::string& }, [&](bool all, char val) { auto & bcorpses = mBuffer.corpses_v50(); - unserialize_list_creature("", all, val, filter, - [&](const size_t& idx) -> const std::string& { return bcorpses.corpses(idx); }, + unserialize_list_creature("", all, val, filters, + [&](const size_t& idx) -> const string& { return bcorpses.corpses(idx); }, bcorpses.corpses_size(), pcorpses.corpses); }); } @@ -1945,38 +1947,38 @@ bool StockpileSerializer::write_refuse(StockpileSettings::RefuseSet* refuse) { refuse->set_rotten_raw_hide(prefuse.rotten_raw_hide); all = serialize_list_item_type(refuse_type_is_allowed, - [&](const std::string& token) { refuse->add_type(token); }, + [&](const string& token) { refuse->add_type(token); }, prefuse.type) && all; all = serialize_list_creature( - [&](const std::string& token) { refuse->add_corpses(token); }, + [&](const string& token) { refuse->add_corpses(token); }, prefuse.corpses) && all; all = serialize_list_creature( - [&](const std::string& token) { refuse->add_body_parts(token); }, + [&](const string& token) { refuse->add_body_parts(token); }, prefuse.body_parts) && all; all = serialize_list_creature( - [&](const std::string& token) { refuse->add_skulls(token); }, + [&](const string& token) { refuse->add_skulls(token); }, prefuse.skulls) && all; all = serialize_list_creature( - [&](const std::string& token) { refuse->add_bones(token); }, + [&](const string& token) { refuse->add_bones(token); }, prefuse.bones) && all; all = serialize_list_creature( - [&](const std::string& token) { refuse->add_hair(token); }, + [&](const string& token) { refuse->add_hair(token); }, prefuse.hair) && all; all = serialize_list_creature( - [&](const std::string& token) { refuse->add_shells(token); }, + [&](const string& token) { refuse->add_shells(token); }, prefuse.shells) && all; all = serialize_list_creature( - [&](const std::string& token) { refuse->add_teeth(token); }, + [&](const string& token) { refuse->add_teeth(token); }, prefuse.teeth) && all; all = serialize_list_creature( - [&](const std::string& token) { refuse->add_horns(token); }, + [&](const string& token) { refuse->add_horns(token); }, prefuse.horns) && all; return all; } -void StockpileSerializer::read_refuse(DeserializeMode mode, const std::string& filter) { +void StockpileSerializer::read_refuse(DeserializeMode mode, const vector& filters) { auto & prefuse = mPile->settings.refuse; read_category("refuse", mode, std::bind(&StockpileSettings::has_refuse, mBuffer), @@ -1999,35 +2001,35 @@ void StockpileSerializer::read_refuse(DeserializeMode mode, const std::string& f [&](bool all, char val) { auto & brefuse = mBuffer.refuse(); - set_flag("rawhide/fresh", filter, all, val, brefuse.fresh_raw_hide(), prefuse.fresh_raw_hide); - set_flag("rawhide/rotten", filter, all, val, brefuse.rotten_raw_hide(), prefuse.rotten_raw_hide); + set_flag("rawhide/fresh", filters, all, val, brefuse.fresh_raw_hide(), prefuse.fresh_raw_hide); + set_flag("rawhide/rotten", filters, all, val, brefuse.rotten_raw_hide(), prefuse.rotten_raw_hide); - unserialize_list_item_type("type", all, val, filter, refuse_type_is_allowed, + unserialize_list_item_type("type", all, val, filters, refuse_type_is_allowed, [&](const size_t& idx) -> const string& { return brefuse.type(idx); }, brefuse.type_size(), prefuse.type); - unserialize_list_creature("corpses", all, val, filter, + unserialize_list_creature("corpses", all, val, filters, [&](const size_t& idx) -> const string& { return brefuse.corpses(idx); }, brefuse.corpses_size(), prefuse.corpses); - unserialize_list_creature("bodyparts", all, val, filter, + unserialize_list_creature("bodyparts", all, val, filters, [&](const size_t& idx) -> const string& { return brefuse.body_parts(idx); }, brefuse.body_parts_size(), prefuse.body_parts); - unserialize_list_creature("skulls", all, val, filter, + unserialize_list_creature("skulls", all, val, filters, [&](const size_t& idx) -> const string& { return brefuse.skulls(idx); }, brefuse.skulls_size(), prefuse.skulls); - unserialize_list_creature("bones", all, val, filter, + unserialize_list_creature("bones", all, val, filters, [&](const size_t& idx) -> const string& { return brefuse.bones(idx); }, brefuse.bones_size(), prefuse.bones); - unserialize_list_creature("hair", all, val, filter, + unserialize_list_creature("hair", all, val, filters, [&](const size_t& idx) -> const string& { return brefuse.hair(idx); }, brefuse.hair_size(), prefuse.hair); - unserialize_list_creature("shells", all, val, filter, + unserialize_list_creature("shells", all, val, filters, [&](const size_t& idx) -> const string& { return brefuse.shells(idx); }, brefuse.shells_size(), prefuse.shells); - unserialize_list_creature("teeth", all, val, filter, + unserialize_list_creature("teeth", all, val, filters, [&](const size_t& idx) -> const string& { return brefuse.teeth(idx); }, brefuse.teeth_size(), prefuse.teeth); - unserialize_list_creature("horns", all, val, filter, + unserialize_list_creature("horns", all, val, filters, [&](const size_t& idx) -> const string& { return brefuse.horns(idx); }, brefuse.horns_size(), prefuse.horns); }); @@ -2036,17 +2038,17 @@ void StockpileSerializer::read_refuse(DeserializeMode mode, const std::string& f bool StockpileSerializer::write_sheet(StockpileSettings::SheetSet* sheet) { bool all = serialize_list_organic_mat( - [&](const std::string& token) { sheet->add_paper(token); }, + [&](const string& token) { sheet->add_paper(token); }, &mPile->settings.sheet.paper, organic_mat_category::Paper); all = serialize_list_organic_mat( - [&](const std::string& token) { sheet->add_parchment(token); }, + [&](const string& token) { sheet->add_parchment(token); }, &mPile->settings.sheet.parchment, organic_mat_category::Parchment) && all; return all; } -void StockpileSerializer::read_sheet(DeserializeMode mode, const std::string& filter) { +void StockpileSerializer::read_sheet(DeserializeMode mode, const vector& filters) { auto & psheet = mPile->settings.sheet; read_category("sheet", mode, std::bind(&StockpileSettings::has_sheet, mBuffer), @@ -2060,12 +2062,12 @@ void StockpileSerializer::read_sheet(DeserializeMode mode, const std::string& fi [&](bool all, char val) { auto & bsheet = mBuffer.sheet(); - unserialize_list_organic_mat("paper", all, val, filter, - [&](size_t idx) -> std::string { return bsheet.paper(idx); }, + unserialize_list_organic_mat("paper", all, val, filters, + [&](size_t idx) -> string { return bsheet.paper(idx); }, bsheet.paper_size(), psheet.paper, organic_mat_category::Paper); - unserialize_list_organic_mat("parchment", all, val, filter, - [&](size_t idx) -> std::string { return bsheet.parchment(idx); }, + unserialize_list_organic_mat("parchment", all, val, filters, + [&](size_t idx) -> string { return bsheet.parchment(idx); }, bsheet.parchment_size(), psheet.parchment, organic_mat_category::Parchment); }); } @@ -2081,11 +2083,11 @@ static bool stone_is_allowed(const MaterialInfo& mi) { bool StockpileSerializer::write_stone(StockpileSettings::StoneSet* stone) { return serialize_list_material( stone_is_allowed, - [&](const std::string& token) { stone->add_mats(token); }, + [&](const string& token) { stone->add_mats(token); }, mPile->settings.stone.mats); } -void StockpileSerializer::read_stone(DeserializeMode mode, const std::string& filter) { +void StockpileSerializer::read_stone(DeserializeMode mode, const vector& filters) { auto & pstone = mPile->settings.stone; read_category("stone", mode, std::bind(&StockpileSettings::has_stone, mBuffer), @@ -2098,8 +2100,8 @@ void StockpileSerializer::read_stone(DeserializeMode mode, const std::string& fi [&](bool all, char val) { auto & bstone = mBuffer.stone(); - unserialize_list_material("", all, val, filter, stone_is_allowed, - [&](const size_t& idx) -> const std::string& { return bstone.mats(idx); }, + unserialize_list_material("", all, val, filters, stone_is_allowed, + [&](const size_t& idx) -> const string& { return bstone.mats(idx); }, bstone.mats_size(), pstone.mats); }); } @@ -2116,39 +2118,39 @@ bool StockpileSerializer::write_weapons(StockpileSettings::WeaponsSet* weapons) weapons->set_usable(pweapons.usable); all = serialize_list_itemdef( - [&](const std::string& token) { weapons->add_weapon_type(token); }, + [&](const string& token) { weapons->add_weapon_type(token); }, pweapons.weapon_type, - std::vector(world->raws.itemdefs.weapons.begin(), world->raws.itemdefs.weapons.end()), + vector(world->raws.itemdefs.weapons.begin(), world->raws.itemdefs.weapons.end()), item_type::WEAPON) && all; all = serialize_list_itemdef( - [&](const std::string& token) { weapons->add_trapcomp_type(token); }, + [&](const string& token) { weapons->add_trapcomp_type(token); }, pweapons.trapcomp_type, - std::vector(world->raws.itemdefs.trapcomps.begin(), world->raws.itemdefs.trapcomps.end()), + vector(world->raws.itemdefs.trapcomps.begin(), world->raws.itemdefs.trapcomps.end()), item_type::TRAPCOMP) && all; all = serialize_list_material( weapons_mat_is_allowed, - [&](const std::string& token) { weapons->add_mats(token); }, + [&](const string& token) { weapons->add_mats(token); }, pweapons.mats) && all; all = serialize_list_other_mats( mOtherMatsWeaponsArmor.mats, - [&](const std::string& token) { weapons->add_other_mats(token); }, + [&](const string& token) { weapons->add_other_mats(token); }, pweapons.other_mats) && all; all = serialize_list_quality( - [&](const std::string& token) { weapons->add_quality_core(token); }, + [&](const string& token) { weapons->add_quality_core(token); }, pweapons.quality_core) && all; all = serialize_list_quality( - [&](const std::string& token) { weapons->add_quality_total(token); }, + [&](const string& token) { weapons->add_quality_total(token); }, pweapons.quality_total) && all; return all; } -void StockpileSerializer::read_weapons(DeserializeMode mode, const std::string& filter) { +void StockpileSerializer::read_weapons(DeserializeMode mode, const vector& filters) { auto & pweapons = mPile->settings.weapons; read_category("weapons", mode, std::bind(&StockpileSettings::has_weapons, mBuffer), @@ -2166,31 +2168,31 @@ void StockpileSerializer::read_weapons(DeserializeMode mode, const std::string& [&](bool all, char val) { auto & bweapons = mBuffer.weapons(); - set_flag("nouse", filter, all, val, bweapons.unusable(), pweapons.unusable); - set_flag("canuse", filter, all, val, bweapons.usable(), pweapons.usable); + set_flag("nouse", filters, all, val, bweapons.unusable(), pweapons.unusable); + set_flag("canuse", filters, all, val, bweapons.usable(), pweapons.usable); - unserialize_list_itemdef("type/weapon", all, val, filter, - [&](const size_t& idx) -> const std::string& { return bweapons.weapon_type(idx); }, + unserialize_list_itemdef("type/weapon", all, val, filters, + [&](const size_t& idx) -> const string& { return bweapons.weapon_type(idx); }, bweapons.weapon_type_size(), pweapons.weapon_type, item_type::WEAPON); - unserialize_list_itemdef("type/trapcomp", all, val, filter, - [&](const size_t& idx) -> const std::string& { return bweapons.trapcomp_type(idx); }, + unserialize_list_itemdef("type/trapcomp", all, val, filters, + [&](const size_t& idx) -> const string& { return bweapons.trapcomp_type(idx); }, bweapons.trapcomp_type_size(), pweapons.trapcomp_type, item_type::TRAPCOMP); - unserialize_list_material("mats", all, val, filter, weapons_mat_is_allowed, - [&](const size_t& idx) -> const std::string& { return bweapons.mats(idx); }, + unserialize_list_material("mats", all, val, filters, weapons_mat_is_allowed, + [&](const size_t& idx) -> const string& { return bweapons.mats(idx); }, bweapons.mats_size(), pweapons.mats); - unserialize_list_other_mats("other", all, val, filter, mOtherMatsWeaponsArmor.mats, - [&](const size_t& idx) -> const std::string& { return bweapons.other_mats(idx); }, + unserialize_list_other_mats("other", all, val, filters, mOtherMatsWeaponsArmor.mats, + [&](const size_t& idx) -> const string& { return bweapons.other_mats(idx); }, bweapons.other_mats_size(), pweapons.other_mats); - unserialize_list_quality("core", all, val, filter, - [&](const size_t& idx) -> const std::string& { return bweapons.quality_core(idx); }, + unserialize_list_quality("core", all, val, filters, + [&](const size_t& idx) -> const string& { return bweapons.quality_core(idx); }, bweapons.quality_core_size(), pweapons.quality_core); - unserialize_list_quality("total", all, val, filter, - [&](const size_t& idx) -> const std::string& { return bweapons.quality_total(idx); }, + unserialize_list_quality("total", all, val, filters, + [&](const size_t& idx) -> const string& { return bweapons.quality_total(idx); }, bweapons.quality_total_size(), pweapons.quality_total); }); } @@ -2215,7 +2217,7 @@ bool StockpileSerializer::write_wood(StockpileSettings::WoodSet* wood) { return all; } -void StockpileSerializer::read_wood(DeserializeMode mode, const std::string& filter) { +void StockpileSerializer::read_wood(DeserializeMode mode, const vector& filters) { auto & pwood = mPile->settings.wood; read_category("wood", mode, std::bind(&StockpileSettings::has_wood, mBuffer), @@ -2234,17 +2236,17 @@ void StockpileSerializer::read_wood(DeserializeMode mode, const std::string& fil if (all) { for (size_t idx = 0; idx < num_elems; ++idx) { string id = world->raws.plants.all[idx]->id; - set_filter_elem("", filter, val, id, idx, pwood.mats.at(idx)); + set_filter_elem("", filters, val, id, idx, pwood.mats.at(idx)); } } else { for (int i = 0; i < bwood.mats_size(); ++i) { - const std::string token = bwood.mats(i); + const string token = bwood.mats(i); const size_t idx = find_plant(token); if (idx < 0 || (size_t)idx >= num_elems) { WARN(log).print("wood mat index invalid %s idx=%zd\n", token.c_str(), idx); continue; } - set_filter_elem("", filter, val, token, idx, pwood.mats.at(idx)); + set_filter_elem("", filters, val, token, idx, pwood.mats.at(idx)); } } }); diff --git a/plugins/stockpiles/StockpileSerializer.h b/plugins/stockpiles/StockpileSerializer.h index 8573a453e..f0e1a62e2 100644 --- a/plugins/stockpiles/StockpileSerializer.h +++ b/plugins/stockpiles/StockpileSerializer.h @@ -81,12 +81,12 @@ public: /** * Again, copied from message.cc */ - bool parse_from_istream(std::istream* input, DeserializeMode mode, const std::string& filter); + bool parse_from_istream(std::istream* input, DeserializeMode mode, const std::vector& filters); /** * Read stockpile settings from file */ - bool unserialize_from_file(const std::string& file, DeserializeMode mode, const std::string& filter); + bool unserialize_from_file(const std::string& file, DeserializeMode mode, const std::vector& filters); private: df::building_stockpilest* mPile; @@ -96,7 +96,7 @@ private: void write(uint32_t includedElements); // parse serialized data into ui indices - void read(DeserializeMode mode, const std::string& filter); + void read(DeserializeMode mode, const std::vector& filters); void write_containers(); void read_containers(DeserializeMode mode); @@ -104,38 +104,38 @@ private: void read_general(DeserializeMode mode); bool write_ammo(dfstockpiles::StockpileSettings::AmmoSet* ammo); - void read_ammo(DeserializeMode mode, const std::string& filter); + void read_ammo(DeserializeMode mode, const std::vector& filters); bool write_animals(dfstockpiles::StockpileSettings::AnimalsSet* animals); - void read_animals(DeserializeMode mode, const std::string& filter); + void read_animals(DeserializeMode mode, const std::vector& filters); bool write_armor(dfstockpiles::StockpileSettings::ArmorSet* armor); - void read_armor(DeserializeMode mode, const std::string& filter); + void read_armor(DeserializeMode mode, const std::vector& filters); bool write_bars_blocks(dfstockpiles::StockpileSettings::BarsBlocksSet* bars_blocks); - void read_bars_blocks(DeserializeMode mode, const std::string& filter); + void read_bars_blocks(DeserializeMode mode, const std::vector& filters); bool write_cloth(dfstockpiles::StockpileSettings::ClothSet* cloth); - void read_cloth(DeserializeMode mode, const std::string& filter); + void read_cloth(DeserializeMode mode, const std::vector& filters); bool write_coins(dfstockpiles::StockpileSettings::CoinSet* coins); - void read_coins(DeserializeMode mode, const std::string& filter); + void read_coins(DeserializeMode mode, const std::vector& filters); bool write_finished_goods(dfstockpiles::StockpileSettings::FinishedGoodsSet* finished_goods); - void read_finished_goods(DeserializeMode mode, const std::string& filter); + void read_finished_goods(DeserializeMode mode, const std::vector& filters); food_pair food_map(df::enums::organic_mat_category::organic_mat_category cat); bool write_food(dfstockpiles::StockpileSettings::FoodSet* food); - void read_food(DeserializeMode mode, const std::string& filter); + void read_food(DeserializeMode mode, const std::vector& filters); bool write_furniture(dfstockpiles::StockpileSettings::FurnitureSet* furniture); - void read_furniture(DeserializeMode mode, const std::string& filter); + void read_furniture(DeserializeMode mode, const std::vector& filters); bool write_gems(dfstockpiles::StockpileSettings::GemsSet* gems); - void read_gems(DeserializeMode mode, const std::string& filter); + void read_gems(DeserializeMode mode, const std::vector& filters); bool write_leather(dfstockpiles::StockpileSettings::LeatherSet* leather); - void read_leather(DeserializeMode mode, const std::string& filter); + void read_leather(DeserializeMode mode, const std::vector& filters); bool write_corpses(dfstockpiles::StockpileSettings::CorpsesSet* corpses); - void read_corpses(DeserializeMode mode, const std::string& filter); + void read_corpses(DeserializeMode mode, const std::vector& filters); bool write_refuse(dfstockpiles::StockpileSettings::RefuseSet* refuse); - void read_refuse(DeserializeMode mode, const std::string& filter); + void read_refuse(DeserializeMode mode, const std::vector& filters); bool write_sheet(dfstockpiles::StockpileSettings::SheetSet* sheet); - void read_sheet(DeserializeMode mode, const std::string& filter); + void read_sheet(DeserializeMode mode, const std::vector& filters); bool write_stone(dfstockpiles::StockpileSettings::StoneSet* stone); - void read_stone(DeserializeMode mode, const std::string& filter); + void read_stone(DeserializeMode mode, const std::vector& filters); bool write_weapons(dfstockpiles::StockpileSettings::WeaponsSet* weapons); - void read_weapons(DeserializeMode mode, const std::string& filter); + void read_weapons(DeserializeMode mode, const std::vector& filters); bool write_wood(dfstockpiles::StockpileSettings::WoodSet* wood); - void read_wood(DeserializeMode mode, const std::string& filter); + void read_wood(DeserializeMode mode, const std::vector& filters); }; diff --git a/plugins/stockpiles/stockpiles.cpp b/plugins/stockpiles/stockpiles.cpp index 99cc16607..d1ce46e9c 100644 --- a/plugins/stockpiles/stockpiles.cpp +++ b/plugins/stockpiles/stockpiles.cpp @@ -129,9 +129,12 @@ static bool stockpiles_import(color_ostream& out, string fname, int id, string m else if (mode_str == "disable") mode = DESERIALIZE_MODE_DISABLE; + vector filters; + split_string(&filters, filter, ",", true); + try { StockpileSerializer cereal(sp); - if (!cereal.unserialize_from_file(fname, mode, filter)) { + if (!cereal.unserialize_from_file(fname, mode, filters)) { out.printerr("deserialization failed: '%s'\n", fname.c_str()); return false; } From 5af26675b44a4ec60e532ddde771367cfd88b7af Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 23:28:56 -0700 Subject: [PATCH 045/115] rename "category" files to just "cat" --- data/stockpiles/{category_ammo.dfstock => cat_ammo.dfstock} | 0 data/stockpiles/{category_animals.dfstock => cat_animals.dfstock} | 0 data/stockpiles/{category_armor.dfstock => cat_armor.dfstock} | 0 .../{category_bars_blocks.dfstock => cat_bars_blocks.dfstock} | 0 data/stockpiles/{category_cloth.dfstock => cat_cloth.dfstock} | 0 data/stockpiles/{category_coins.dfstock => cat_coins.dfstock} | 0 data/stockpiles/{category_corpses.dfstock => cat_corpses.dfstock} | 0 ...category_finished_goods.dfstock => cat_finished_goods.dfstock} | 0 data/stockpiles/{category_food.dfstock => cat_food.dfstock} | 0 .../{category_furniture.dfstock => cat_furniture.dfstock} | 0 data/stockpiles/{category_gems.dfstock => cat_gems.dfstock} | 0 data/stockpiles/{category_leather.dfstock => cat_leather.dfstock} | 0 data/stockpiles/{category_refuse.dfstock => cat_refuse.dfstock} | 0 data/stockpiles/{category_sheets.dfstock => cat_sheets.dfstock} | 0 data/stockpiles/{category_stone.dfstock => cat_stone.dfstock} | 0 data/stockpiles/{category_weapons.dfstock => cat_weapons.dfstock} | 0 data/stockpiles/{category_wood.dfstock => cat_wood.dfstock} | 0 17 files changed, 0 insertions(+), 0 deletions(-) rename data/stockpiles/{category_ammo.dfstock => cat_ammo.dfstock} (100%) rename data/stockpiles/{category_animals.dfstock => cat_animals.dfstock} (100%) rename data/stockpiles/{category_armor.dfstock => cat_armor.dfstock} (100%) rename data/stockpiles/{category_bars_blocks.dfstock => cat_bars_blocks.dfstock} (100%) rename data/stockpiles/{category_cloth.dfstock => cat_cloth.dfstock} (100%) rename data/stockpiles/{category_coins.dfstock => cat_coins.dfstock} (100%) rename data/stockpiles/{category_corpses.dfstock => cat_corpses.dfstock} (100%) rename data/stockpiles/{category_finished_goods.dfstock => cat_finished_goods.dfstock} (100%) rename data/stockpiles/{category_food.dfstock => cat_food.dfstock} (100%) rename data/stockpiles/{category_furniture.dfstock => cat_furniture.dfstock} (100%) rename data/stockpiles/{category_gems.dfstock => cat_gems.dfstock} (100%) rename data/stockpiles/{category_leather.dfstock => cat_leather.dfstock} (100%) rename data/stockpiles/{category_refuse.dfstock => cat_refuse.dfstock} (100%) rename data/stockpiles/{category_sheets.dfstock => cat_sheets.dfstock} (100%) rename data/stockpiles/{category_stone.dfstock => cat_stone.dfstock} (100%) rename data/stockpiles/{category_weapons.dfstock => cat_weapons.dfstock} (100%) rename data/stockpiles/{category_wood.dfstock => cat_wood.dfstock} (100%) diff --git a/data/stockpiles/category_ammo.dfstock b/data/stockpiles/cat_ammo.dfstock similarity index 100% rename from data/stockpiles/category_ammo.dfstock rename to data/stockpiles/cat_ammo.dfstock diff --git a/data/stockpiles/category_animals.dfstock b/data/stockpiles/cat_animals.dfstock similarity index 100% rename from data/stockpiles/category_animals.dfstock rename to data/stockpiles/cat_animals.dfstock diff --git a/data/stockpiles/category_armor.dfstock b/data/stockpiles/cat_armor.dfstock similarity index 100% rename from data/stockpiles/category_armor.dfstock rename to data/stockpiles/cat_armor.dfstock diff --git a/data/stockpiles/category_bars_blocks.dfstock b/data/stockpiles/cat_bars_blocks.dfstock similarity index 100% rename from data/stockpiles/category_bars_blocks.dfstock rename to data/stockpiles/cat_bars_blocks.dfstock diff --git a/data/stockpiles/category_cloth.dfstock b/data/stockpiles/cat_cloth.dfstock similarity index 100% rename from data/stockpiles/category_cloth.dfstock rename to data/stockpiles/cat_cloth.dfstock diff --git a/data/stockpiles/category_coins.dfstock b/data/stockpiles/cat_coins.dfstock similarity index 100% rename from data/stockpiles/category_coins.dfstock rename to data/stockpiles/cat_coins.dfstock diff --git a/data/stockpiles/category_corpses.dfstock b/data/stockpiles/cat_corpses.dfstock similarity index 100% rename from data/stockpiles/category_corpses.dfstock rename to data/stockpiles/cat_corpses.dfstock diff --git a/data/stockpiles/category_finished_goods.dfstock b/data/stockpiles/cat_finished_goods.dfstock similarity index 100% rename from data/stockpiles/category_finished_goods.dfstock rename to data/stockpiles/cat_finished_goods.dfstock diff --git a/data/stockpiles/category_food.dfstock b/data/stockpiles/cat_food.dfstock similarity index 100% rename from data/stockpiles/category_food.dfstock rename to data/stockpiles/cat_food.dfstock diff --git a/data/stockpiles/category_furniture.dfstock b/data/stockpiles/cat_furniture.dfstock similarity index 100% rename from data/stockpiles/category_furniture.dfstock rename to data/stockpiles/cat_furniture.dfstock diff --git a/data/stockpiles/category_gems.dfstock b/data/stockpiles/cat_gems.dfstock similarity index 100% rename from data/stockpiles/category_gems.dfstock rename to data/stockpiles/cat_gems.dfstock diff --git a/data/stockpiles/category_leather.dfstock b/data/stockpiles/cat_leather.dfstock similarity index 100% rename from data/stockpiles/category_leather.dfstock rename to data/stockpiles/cat_leather.dfstock diff --git a/data/stockpiles/category_refuse.dfstock b/data/stockpiles/cat_refuse.dfstock similarity index 100% rename from data/stockpiles/category_refuse.dfstock rename to data/stockpiles/cat_refuse.dfstock diff --git a/data/stockpiles/category_sheets.dfstock b/data/stockpiles/cat_sheets.dfstock similarity index 100% rename from data/stockpiles/category_sheets.dfstock rename to data/stockpiles/cat_sheets.dfstock diff --git a/data/stockpiles/category_stone.dfstock b/data/stockpiles/cat_stone.dfstock similarity index 100% rename from data/stockpiles/category_stone.dfstock rename to data/stockpiles/cat_stone.dfstock diff --git a/data/stockpiles/category_weapons.dfstock b/data/stockpiles/cat_weapons.dfstock similarity index 100% rename from data/stockpiles/category_weapons.dfstock rename to data/stockpiles/cat_weapons.dfstock diff --git a/data/stockpiles/category_wood.dfstock b/data/stockpiles/cat_wood.dfstock similarity index 100% rename from data/stockpiles/category_wood.dfstock rename to data/stockpiles/cat_wood.dfstock From cdf2c407bcfd5a9bd45a394ef38db38f933a3749 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 20 Mar 2023 23:53:16 -0700 Subject: [PATCH 046/115] simplify finished goods stockpile settings --- data/stockpiles/crafts.dfstock | 4 ++-- data/stockpiles/goblets.dfstock | 4 ++-- data/stockpiles/stonetools.dfstock | 4 ++-- data/stockpiles/toys.dfstock | 4 ++-- data/stockpiles/woodtools.dfstock | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/data/stockpiles/crafts.dfstock b/data/stockpiles/crafts.dfstock index 9367855ee..633dd9f1f 100644 --- a/data/stockpiles/crafts.dfstock +++ b/data/stockpiles/crafts.dfstock @@ -1,4 +1,4 @@ -b- +bG FIGURINE AMULET SCEPTER @@ -7,4 +7,4 @@ b EARRING BRACELET GEM -TOTEMWOOD PLANT_CLOTHBONETOOTHHORNPEARLSHELLLEATHERSILKAMBERCORAL GREEN_GLASS CLEAR_GLASS CRYSTAL_GLASSYARNWAXINORGANIC:IRONINORGANIC:SILVERINORGANIC:COPPERINORGANIC:NICKELINORGANIC:ZINCINORGANIC:BRONZEINORGANIC:BRASSINORGANIC:STEELINORGANIC:PIG_IRONINORGANIC:PLATINUMINORGANIC:ELECTRUM INORGANIC:TININORGANIC:PEWTER_FINEINORGANIC:PEWTER_TRIFLEINORGANIC:PEWTER_LAYINORGANIC:LEADINORGANIC:ALUMINUMINORGANIC:NICKEL_SILVERINORGANIC:BILLONINORGANIC:STERLING_SILVERINORGANIC:BLACK_BRONZEINORGANIC:ROSE_GOLDINORGANIC:BISMUTHINORGANIC:BISMUTH_BRONZEINORGANIC:ADAMANTINEINORGANIC:PLASTERINORGANIC:CERAMIC_EARTHENWAREINORGANIC:CERAMIC_STONEWAREINORGANIC:CERAMIC_PORCELAININORGANIC:ASH_GLAZEINORGANIC:TIN_GLAZEINORGANIC:ONYXINORGANIC:MORIONINORGANIC:SCHORLINORGANIC:LACE AGATEINORGANIC:BLUE JADEINORGANIC:LAPIS LAZULIINORGANIC:PRASEINORGANIC:PRASE OPALINORGANIC:BLOODSTONEINORGANIC:MOSS AGATEINORGANIC:MOSS OPALINORGANIC:VARISCITEINORGANIC:CHRYSOPRASEINORGANIC:CHRYSOCOLLAINORGANIC:SARDINORGANIC:CARNELIANINORGANIC:BANDED AGATEINORGANIC:SARDONYXINORGANIC:CHERRY OPALINORGANIC:LAVENDER JADEINORGANIC:PINK JADEINORGANIC:TUBE AGATEINORGANIC:FIRE AGATEINORGANIC:PLUME AGATEINORGANIC:BROWN JASPERINORGANIC:PICTURE JASPERINORGANIC:SMOKY QUARTZINORGANIC:WAX OPALINORGANIC:WOOD OPALINORGANIC:AMBER OPALINORGANIC:GOLD OPALINORGANIC:CITRINEINORGANIC:YELLOW JASPERINORGANIC:TIGEREYEINORGANIC:TIGER IRONINORGANIC:SUNSTONEINORGANIC:RESIN OPALINORGANIC:PYRITEINORGANIC:CLEAR TOURMALINEINORGANIC:GRAY CHALCEDONYINORGANIC:DENDRITIC AGATEINORGANIC:SHELL OPALINORGANIC:BONE OPALINORGANIC:WHITE CHALCEDONYINORGANIC:FORTIFICATION AGATEINORGANIC:MILK QUARTZINORGANIC:MOONSTONEINORGANIC:WHITE JADEINORGANIC:JASPER OPALINORGANIC:PINEAPPLE OPALINORGANIC:ONYX OPALINORGANIC:MILK OPALINORGANIC:PIPE OPALINORGANIC:AVENTURINEINORGANIC:TURQUOISEINORGANIC:QUARTZ_ROSEINORGANIC:CRYSTAL_ROCKINORGANIC:BLACK ZIRCONINORGANIC:BLACK PYROPEINORGANIC:MELANITEINORGANIC:INDIGO TOURMALINEINORGANIC:BLUE GARNETINORGANIC:TSAVORITEINORGANIC:GREEN TOURMALINEINORGANIC:DEMANTOIDINORGANIC:GREEN ZIRCONINORGANIC:GREEN JADEINORGANIC:HELIODORINORGANIC:PERIDOTINORGANIC:RED ZIRCONINORGANIC:RED TOURMALINEINORGANIC:RED PYROPEINORGANIC:ALMANDINEINORGANIC:RED GROSSULARINORGANIC:PINK TOURMALINEINORGANIC:RED BERYLINORGANIC:FIRE OPALINORGANIC:RHODOLITEINORGANIC:SPINEL_PURPLEINORGANIC:ALEXANDRITEINORGANIC:TANZANITEINORGANIC:MORGANITEINORGANIC:VIOLET SPESSARTINEINORGANIC:PINK GARNETINORGANIC:KUNZITEINORGANIC:CINNAMON GROSSULARINORGANIC:HONEY YELLOW BERYLINORGANIC:JELLY OPALINORGANIC:BROWN ZIRCONINORGANIC:YELLOW ZIRCONINORGANIC:GOLDEN BERYLINORGANIC:YELLOW SPESSARTINEINORGANIC:TOPAZINORGANIC:TOPAZOLITEINORGANIC:YELLOW GROSSULARINORGANIC:RUBICELLEINORGANIC:CLEAR GARNETINORGANIC:GOSHENITEINORGANIC:CAT'S EYEINORGANIC:CLEAR ZIRCONINORGANIC:AMETHYSTINORGANIC:AQUAMARINEINORGANIC:SPINEL_REDINORGANIC:CHRYSOBERYLINORGANIC:OPAL_PFIREINORGANIC:OPAL_REDFLASHINORGANIC:OPAL_BLACKINORGANIC:OPAL_WHITEINORGANIC:OPAL_CRYSTALINORGANIC:OPAL_CLAROINORGANIC:OPAL_LEVININORGANIC:OPAL_HARLEQUININORGANIC:OPAL_PINFIREINORGANIC:OPAL_BANDFIREINORGANIC:DIAMOND_LYINORGANIC:DIAMOND_FYINORGANIC:EMERALDINORGANIC:RUBYINORGANIC:SAPPHIREINORGANIC:DIAMOND_CLEARINORGANIC:DIAMOND_REDINORGANIC:DIAMOND_GREENINORGANIC:DIAMOND_BLUEINORGANIC:DIAMOND_YELLOWINORGANIC:DIAMOND_BLACKINORGANIC:SAPPHIRE_STARINORGANIC:RUBY_STARINORGANIC:SANDSTONEINORGANIC:SILTSTONEINORGANIC:MUDSTONEINORGANIC:SHALEINORGANIC:CLAYSTONEINORGANIC:ROCK_SALTINORGANIC:LIMESTONEINORGANIC:CONGLOMERATEINORGANIC:DOLOMITEINORGANIC:CHERTINORGANIC:CHALKINORGANIC:GRANITEINORGANIC:DIORITEINORGANIC:GABBROINORGANIC:RHYOLITEINORGANIC:BASALTINORGANIC:ANDESITEINORGANIC:DACITEINORGANIC:OBSIDIANINORGANIC:QUARTZITEINORGANIC:SLATEINORGANIC:PHYLLITEINORGANIC:SCHISTINORGANIC:GNEISSINORGANIC:MARBLEINORGANIC:HEMATITEINORGANIC:LIMONITEINORGANIC:GARNIERITEINORGANIC:NATIVE_GOLDINORGANIC:NATIVE_SILVERINORGANIC:NATIVE_COPPERINORGANIC:MALACHITEINORGANIC:GALENAINORGANIC:SPHALERITEINORGANIC:CASSITERITEINORGANIC:COAL_BITUMINOUSINORGANIC:LIGNITEINORGANIC:NATIVE_PLATINUMINORGANIC:CINNABARINORGANIC:COBALTITEINORGANIC:TETRAHEDRITEINORGANIC:HORN_SILVERINORGANIC:GYPSUMINORGANIC:TALC INORGANIC:JETINORGANIC:PUDDINGSTONEINORGANIC:PETRIFIED_WOODINORGANIC:GRAPHITEINORGANIC:BRIMSTONEINORGANIC:KIMBERLITEINORGANIC:BISMUTHINITEINORGANIC:REALGARINORGANIC:ORPIMENTINORGANIC:STIBNITEINORGANIC:MARCASITEINORGANIC:SYLVITEINORGANIC:CRYOLITEINORGANIC:PERICLASEINORGANIC:ILMENITEINORGANIC:RUTILEINORGANIC:MAGNETITEINORGANIC:CHROMITEINORGANIC:PYROLUSITEINORGANIC:PITCHBLENDEINORGANIC:BAUXITEINORGANIC:NATIVE_ALUMINUMINORGANIC:BORAXINORGANIC:OLIVINEINORGANIC:HORNBLENDEINORGANIC:KAOLINITEINORGANIC:SERPENTINEINORGANIC:ORTHOCLASEINORGANIC:MICROCLINEINORGANIC:MICAINORGANIC:CALCITEINORGANIC:SALTPETERINORGANIC:ALABASTERINORGANIC:SELENITEINORGANIC:SATINSPARINORGANIC:ANHYDRITEINORGANIC:ALUNITEINORGANIC:RAW_ADAMANTINEINORGANIC:SLADE INORGANIC:BROMS_CLEAN_CORPSEDUSTINORGANIC:GOLDINORGANIC:DIVINE_1INORGANIC:DIVINE_3INORGANIC:DIVINE_5INORGANIC:DIVINE_7INORGANIC:DIVINE_9INORGANIC:DIVINE_11INORGANIC:DIVINE_13INORGANIC:DIVINE_15INORGANIC:DIVINE_17INORGANIC:DIVINE_19"Ordinary" WellCrafted" FinelyCrafted"Superior" Exceptional" Masterful"Artifact*Ordinary* WellCrafted* FinelyCrafted*Superior* Exceptional* Masterful*Artifact \ No newline at end of file +TOTEM \ No newline at end of file diff --git a/data/stockpiles/goblets.dfstock b/data/stockpiles/goblets.dfstock index b117634ba..bff4f8a6d 100644 --- a/data/stockpiles/goblets.dfstock +++ b/data/stockpiles/goblets.dfstock @@ -1,2 +1,2 @@ -b- -GOBLETWOOD PLANT_CLOTHBONETOOTHHORNPEARLSHELLLEATHERSILKAMBERCORAL GREEN_GLASS CLEAR_GLASS CRYSTAL_GLASSYARNWAXINORGANIC:IRONINORGANIC:SILVERINORGANIC:COPPERINORGANIC:NICKELINORGANIC:ZINCINORGANIC:BRONZEINORGANIC:BRASSINORGANIC:STEELINORGANIC:PIG_IRONINORGANIC:PLATINUMINORGANIC:ELECTRUM INORGANIC:TININORGANIC:PEWTER_FINEINORGANIC:PEWTER_TRIFLEINORGANIC:PEWTER_LAYINORGANIC:LEADINORGANIC:ALUMINUMINORGANIC:NICKEL_SILVERINORGANIC:BILLONINORGANIC:STERLING_SILVERINORGANIC:BLACK_BRONZEINORGANIC:ROSE_GOLDINORGANIC:BISMUTHINORGANIC:BISMUTH_BRONZEINORGANIC:ADAMANTINEINORGANIC:PLASTERINORGANIC:CERAMIC_EARTHENWAREINORGANIC:CERAMIC_STONEWAREINORGANIC:CERAMIC_PORCELAININORGANIC:ASH_GLAZEINORGANIC:TIN_GLAZEINORGANIC:ONYXINORGANIC:MORIONINORGANIC:SCHORLINORGANIC:LACE AGATEINORGANIC:BLUE JADEINORGANIC:LAPIS LAZULIINORGANIC:PRASEINORGANIC:PRASE OPALINORGANIC:BLOODSTONEINORGANIC:MOSS AGATEINORGANIC:MOSS OPALINORGANIC:VARISCITEINORGANIC:CHRYSOPRASEINORGANIC:CHRYSOCOLLAINORGANIC:SARDINORGANIC:CARNELIANINORGANIC:BANDED AGATEINORGANIC:SARDONYXINORGANIC:CHERRY OPALINORGANIC:LAVENDER JADEINORGANIC:PINK JADEINORGANIC:TUBE AGATEINORGANIC:FIRE AGATEINORGANIC:PLUME AGATEINORGANIC:BROWN JASPERINORGANIC:PICTURE JASPERINORGANIC:SMOKY QUARTZINORGANIC:WAX OPALINORGANIC:WOOD OPALINORGANIC:AMBER OPALINORGANIC:GOLD OPALINORGANIC:CITRINEINORGANIC:YELLOW JASPERINORGANIC:TIGEREYEINORGANIC:TIGER IRONINORGANIC:SUNSTONEINORGANIC:RESIN OPALINORGANIC:PYRITEINORGANIC:CLEAR TOURMALINEINORGANIC:GRAY CHALCEDONYINORGANIC:DENDRITIC AGATEINORGANIC:SHELL OPALINORGANIC:BONE OPALINORGANIC:WHITE CHALCEDONYINORGANIC:FORTIFICATION AGATEINORGANIC:MILK QUARTZINORGANIC:MOONSTONEINORGANIC:WHITE JADEINORGANIC:JASPER OPALINORGANIC:PINEAPPLE OPALINORGANIC:ONYX OPALINORGANIC:MILK OPALINORGANIC:PIPE OPALINORGANIC:AVENTURINEINORGANIC:TURQUOISEINORGANIC:QUARTZ_ROSEINORGANIC:CRYSTAL_ROCKINORGANIC:BLACK ZIRCONINORGANIC:BLACK PYROPEINORGANIC:MELANITEINORGANIC:INDIGO TOURMALINEINORGANIC:BLUE GARNETINORGANIC:TSAVORITEINORGANIC:GREEN TOURMALINEINORGANIC:DEMANTOIDINORGANIC:GREEN ZIRCONINORGANIC:GREEN JADEINORGANIC:HELIODORINORGANIC:PERIDOTINORGANIC:RED ZIRCONINORGANIC:RED TOURMALINEINORGANIC:RED PYROPEINORGANIC:ALMANDINEINORGANIC:RED GROSSULARINORGANIC:PINK TOURMALINEINORGANIC:RED BERYLINORGANIC:FIRE OPALINORGANIC:RHODOLITEINORGANIC:SPINEL_PURPLEINORGANIC:ALEXANDRITEINORGANIC:TANZANITEINORGANIC:MORGANITEINORGANIC:VIOLET SPESSARTINEINORGANIC:PINK GARNETINORGANIC:KUNZITEINORGANIC:CINNAMON GROSSULARINORGANIC:HONEY YELLOW BERYLINORGANIC:JELLY OPALINORGANIC:BROWN ZIRCONINORGANIC:YELLOW ZIRCONINORGANIC:GOLDEN BERYLINORGANIC:YELLOW SPESSARTINEINORGANIC:TOPAZINORGANIC:TOPAZOLITEINORGANIC:YELLOW GROSSULARINORGANIC:RUBICELLEINORGANIC:CLEAR GARNETINORGANIC:GOSHENITEINORGANIC:CAT'S EYEINORGANIC:CLEAR ZIRCONINORGANIC:AMETHYSTINORGANIC:AQUAMARINEINORGANIC:SPINEL_REDINORGANIC:CHRYSOBERYLINORGANIC:OPAL_PFIREINORGANIC:OPAL_REDFLASHINORGANIC:OPAL_BLACKINORGANIC:OPAL_WHITEINORGANIC:OPAL_CRYSTALINORGANIC:OPAL_CLAROINORGANIC:OPAL_LEVININORGANIC:OPAL_HARLEQUININORGANIC:OPAL_PINFIREINORGANIC:OPAL_BANDFIREINORGANIC:DIAMOND_LYINORGANIC:DIAMOND_FYINORGANIC:EMERALDINORGANIC:RUBYINORGANIC:SAPPHIREINORGANIC:DIAMOND_CLEARINORGANIC:DIAMOND_REDINORGANIC:DIAMOND_GREENINORGANIC:DIAMOND_BLUEINORGANIC:DIAMOND_YELLOWINORGANIC:DIAMOND_BLACKINORGANIC:SAPPHIRE_STARINORGANIC:RUBY_STARINORGANIC:SANDSTONEINORGANIC:SILTSTONEINORGANIC:MUDSTONEINORGANIC:SHALEINORGANIC:CLAYSTONEINORGANIC:ROCK_SALTINORGANIC:LIMESTONEINORGANIC:CONGLOMERATEINORGANIC:DOLOMITEINORGANIC:CHERTINORGANIC:CHALKINORGANIC:GRANITEINORGANIC:DIORITEINORGANIC:GABBROINORGANIC:RHYOLITEINORGANIC:BASALTINORGANIC:ANDESITEINORGANIC:DACITEINORGANIC:OBSIDIANINORGANIC:QUARTZITEINORGANIC:SLATEINORGANIC:PHYLLITEINORGANIC:SCHISTINORGANIC:GNEISSINORGANIC:MARBLEINORGANIC:HEMATITEINORGANIC:LIMONITEINORGANIC:GARNIERITEINORGANIC:NATIVE_GOLDINORGANIC:NATIVE_SILVERINORGANIC:NATIVE_COPPERINORGANIC:MALACHITEINORGANIC:GALENAINORGANIC:SPHALERITEINORGANIC:CASSITERITEINORGANIC:COAL_BITUMINOUSINORGANIC:LIGNITEINORGANIC:NATIVE_PLATINUMINORGANIC:CINNABARINORGANIC:COBALTITEINORGANIC:TETRAHEDRITEINORGANIC:HORN_SILVERINORGANIC:GYPSUMINORGANIC:TALC INORGANIC:JETINORGANIC:PUDDINGSTONEINORGANIC:PETRIFIED_WOODINORGANIC:GRAPHITEINORGANIC:BRIMSTONEINORGANIC:KIMBERLITEINORGANIC:BISMUTHINITEINORGANIC:REALGARINORGANIC:ORPIMENTINORGANIC:STIBNITEINORGANIC:MARCASITEINORGANIC:SYLVITEINORGANIC:CRYOLITEINORGANIC:PERICLASEINORGANIC:ILMENITEINORGANIC:RUTILEINORGANIC:MAGNETITEINORGANIC:CHROMITEINORGANIC:PYROLUSITEINORGANIC:PITCHBLENDEINORGANIC:BAUXITEINORGANIC:NATIVE_ALUMINUMINORGANIC:BORAXINORGANIC:OLIVINEINORGANIC:HORNBLENDEINORGANIC:KAOLINITEINORGANIC:SERPENTINEINORGANIC:ORTHOCLASEINORGANIC:MICROCLINEINORGANIC:MICAINORGANIC:CALCITEINORGANIC:SALTPETERINORGANIC:ALABASTERINORGANIC:SELENITEINORGANIC:SATINSPARINORGANIC:ANHYDRITEINORGANIC:ALUNITEINORGANIC:RAW_ADAMANTINEINORGANIC:SLADE INORGANIC:BROMS_CLEAN_CORPSEDUSTINORGANIC:GOLDINORGANIC:DIVINE_1INORGANIC:DIVINE_3INORGANIC:DIVINE_5INORGANIC:DIVINE_7INORGANIC:DIVINE_9INORGANIC:DIVINE_11INORGANIC:DIVINE_13INORGANIC:DIVINE_15INORGANIC:DIVINE_17INORGANIC:DIVINE_19"Ordinary" WellCrafted" FinelyCrafted"Superior" Exceptional" Masterful"Artifact*Ordinary* WellCrafted* FinelyCrafted*Superior* Exceptional* Masterful*Artifact \ No newline at end of file +b +GOBLET \ No newline at end of file diff --git a/data/stockpiles/stonetools.dfstock b/data/stockpiles/stonetools.dfstock index 2ac7807ad..dee961a74 100644 --- a/data/stockpiles/stonetools.dfstock +++ b/data/stockpiles/stonetools.dfstock @@ -1,2 +1,2 @@ -b -TOOLINORGANIC:PLASTERINORGANIC:CERAMIC_EARTHENWAREINORGANIC:CERAMIC_STONEWAREINORGANIC:CERAMIC_PORCELAININORGANIC:ASH_GLAZEINORGANIC:TIN_GLAZEINORGANIC:SANDSTONEINORGANIC:SILTSTONEINORGANIC:MUDSTONEINORGANIC:SHALEINORGANIC:CLAYSTONEINORGANIC:ROCK_SALTINORGANIC:LIMESTONEINORGANIC:CONGLOMERATEINORGANIC:DOLOMITEINORGANIC:CHERTINORGANIC:CHALKINORGANIC:GRANITEINORGANIC:DIORITEINORGANIC:GABBROINORGANIC:RHYOLITEINORGANIC:BASALTINORGANIC:ANDESITEINORGANIC:DACITEINORGANIC:OBSIDIANINORGANIC:QUARTZITEINORGANIC:SLATEINORGANIC:PHYLLITEINORGANIC:SCHISTINORGANIC:GNEISSINORGANIC:MARBLEINORGANIC:HEMATITEINORGANIC:LIMONITEINORGANIC:GARNIERITEINORGANIC:NATIVE_GOLDINORGANIC:NATIVE_SILVERINORGANIC:NATIVE_COPPERINORGANIC:MALACHITEINORGANIC:GALENAINORGANIC:SPHALERITEINORGANIC:CASSITERITEINORGANIC:COAL_BITUMINOUSINORGANIC:LIGNITEINORGANIC:NATIVE_PLATINUMINORGANIC:CINNABARINORGANIC:COBALTITEINORGANIC:TETRAHEDRITEINORGANIC:HORN_SILVERINORGANIC:GYPSUMINORGANIC:TALC INORGANIC:JETINORGANIC:PUDDINGSTONEINORGANIC:PETRIFIED_WOODINORGANIC:GRAPHITEINORGANIC:BRIMSTONEINORGANIC:KIMBERLITEINORGANIC:BISMUTHINITEINORGANIC:REALGARINORGANIC:ORPIMENTINORGANIC:STIBNITEINORGANIC:MARCASITEINORGANIC:SYLVITEINORGANIC:CRYOLITEINORGANIC:PERICLASEINORGANIC:ILMENITEINORGANIC:RUTILEINORGANIC:MAGNETITEINORGANIC:CHROMITEINORGANIC:PYROLUSITEINORGANIC:PITCHBLENDEINORGANIC:BAUXITEINORGANIC:NATIVE_ALUMINUMINORGANIC:BORAXINORGANIC:OLIVINEINORGANIC:HORNBLENDEINORGANIC:KAOLINITEINORGANIC:SERPENTINEINORGANIC:ORTHOCLASEINORGANIC:MICROCLINEINORGANIC:MICAINORGANIC:CALCITEINORGANIC:SALTPETERINORGANIC:ALABASTERINORGANIC:SELENITEINORGANIC:SATINSPARINORGANIC:ANHYDRITEINORGANIC:ALUNITEINORGANIC:RAW_ADAMANTINEINORGANIC:SLADE INORGANIC:BROMS_CLEAN_CORPSEDUST"Ordinary" WellCrafted" FinelyCrafted"Superior" Exceptional" Masterful"Artifact*Ordinary* WellCrafted* FinelyCrafted*Superior* Exceptional* Masterful*Artifact \ No newline at end of file +b +TOOLINORGANIC:PLASTERINORGANIC:CERAMIC_EARTHENWAREINORGANIC:CERAMIC_STONEWAREINORGANIC:CERAMIC_PORCELAININORGANIC:ASH_GLAZEINORGANIC:TIN_GLAZEINORGANIC:SANDSTONEINORGANIC:SILTSTONEINORGANIC:MUDSTONEINORGANIC:SHALEINORGANIC:CLAYSTONEINORGANIC:ROCK_SALTINORGANIC:LIMESTONEINORGANIC:CONGLOMERATEINORGANIC:DOLOMITEINORGANIC:CHERTINORGANIC:CHALKINORGANIC:GRANITEINORGANIC:DIORITEINORGANIC:GABBROINORGANIC:RHYOLITEINORGANIC:BASALTINORGANIC:ANDESITEINORGANIC:DACITEINORGANIC:OBSIDIANINORGANIC:QUARTZITEINORGANIC:SLATEINORGANIC:PHYLLITEINORGANIC:SCHISTINORGANIC:GNEISSINORGANIC:MARBLEINORGANIC:HEMATITEINORGANIC:LIMONITEINORGANIC:GARNIERITEINORGANIC:NATIVE_GOLDINORGANIC:NATIVE_SILVERINORGANIC:NATIVE_COPPERINORGANIC:MALACHITEINORGANIC:GALENAINORGANIC:SPHALERITEINORGANIC:CASSITERITEINORGANIC:COAL_BITUMINOUSINORGANIC:LIGNITEINORGANIC:NATIVE_PLATINUMINORGANIC:CINNABARINORGANIC:COBALTITEINORGANIC:TETRAHEDRITEINORGANIC:HORN_SILVERINORGANIC:GYPSUMINORGANIC:TALC INORGANIC:JETINORGANIC:PUDDINGSTONEINORGANIC:PETRIFIED_WOODINORGANIC:GRAPHITEINORGANIC:BRIMSTONEINORGANIC:KIMBERLITEINORGANIC:BISMUTHINITEINORGANIC:REALGARINORGANIC:ORPIMENTINORGANIC:STIBNITEINORGANIC:MARCASITEINORGANIC:SYLVITEINORGANIC:CRYOLITEINORGANIC:PERICLASEINORGANIC:ILMENITEINORGANIC:RUTILEINORGANIC:MAGNETITEINORGANIC:CHROMITEINORGANIC:PYROLUSITEINORGANIC:PITCHBLENDEINORGANIC:BAUXITEINORGANIC:NATIVE_ALUMINUMINORGANIC:BORAXINORGANIC:OLIVINEINORGANIC:HORNBLENDEINORGANIC:KAOLINITEINORGANIC:SERPENTINEINORGANIC:ORTHOCLASEINORGANIC:MICROCLINEINORGANIC:MICAINORGANIC:CALCITEINORGANIC:SALTPETERINORGANIC:ALABASTERINORGANIC:SELENITEINORGANIC:SATINSPARINORGANIC:ANHYDRITEINORGANIC:ALUNITEINORGANIC:RAW_ADAMANTINEINORGANIC:SLADE \ No newline at end of file diff --git a/data/stockpiles/toys.dfstock b/data/stockpiles/toys.dfstock index 7edca2019..a90eab591 100644 --- a/data/stockpiles/toys.dfstock +++ b/data/stockpiles/toys.dfstock @@ -1,2 +1,2 @@ -b- -TOYWOOD PLANT_CLOTHBONETOOTHHORNPEARLSHELLLEATHERSILKAMBERCORAL GREEN_GLASS CLEAR_GLASS CRYSTAL_GLASSYARNWAXINORGANIC:IRONINORGANIC:SILVERINORGANIC:COPPERINORGANIC:NICKELINORGANIC:ZINCINORGANIC:BRONZEINORGANIC:BRASSINORGANIC:STEELINORGANIC:PIG_IRONINORGANIC:PLATINUMINORGANIC:ELECTRUM INORGANIC:TININORGANIC:PEWTER_FINEINORGANIC:PEWTER_TRIFLEINORGANIC:PEWTER_LAYINORGANIC:LEADINORGANIC:ALUMINUMINORGANIC:NICKEL_SILVERINORGANIC:BILLONINORGANIC:STERLING_SILVERINORGANIC:BLACK_BRONZEINORGANIC:ROSE_GOLDINORGANIC:BISMUTHINORGANIC:BISMUTH_BRONZEINORGANIC:ADAMANTINEINORGANIC:PLASTERINORGANIC:CERAMIC_EARTHENWAREINORGANIC:CERAMIC_STONEWAREINORGANIC:CERAMIC_PORCELAININORGANIC:ASH_GLAZEINORGANIC:TIN_GLAZEINORGANIC:ONYXINORGANIC:MORIONINORGANIC:SCHORLINORGANIC:LACE AGATEINORGANIC:BLUE JADEINORGANIC:LAPIS LAZULIINORGANIC:PRASEINORGANIC:PRASE OPALINORGANIC:BLOODSTONEINORGANIC:MOSS AGATEINORGANIC:MOSS OPALINORGANIC:VARISCITEINORGANIC:CHRYSOPRASEINORGANIC:CHRYSOCOLLAINORGANIC:SARDINORGANIC:CARNELIANINORGANIC:BANDED AGATEINORGANIC:SARDONYXINORGANIC:CHERRY OPALINORGANIC:LAVENDER JADEINORGANIC:PINK JADEINORGANIC:TUBE AGATEINORGANIC:FIRE AGATEINORGANIC:PLUME AGATEINORGANIC:BROWN JASPERINORGANIC:PICTURE JASPERINORGANIC:SMOKY QUARTZINORGANIC:WAX OPALINORGANIC:WOOD OPALINORGANIC:AMBER OPALINORGANIC:GOLD OPALINORGANIC:CITRINEINORGANIC:YELLOW JASPERINORGANIC:TIGEREYEINORGANIC:TIGER IRONINORGANIC:SUNSTONEINORGANIC:RESIN OPALINORGANIC:PYRITEINORGANIC:CLEAR TOURMALINEINORGANIC:GRAY CHALCEDONYINORGANIC:DENDRITIC AGATEINORGANIC:SHELL OPALINORGANIC:BONE OPALINORGANIC:WHITE CHALCEDONYINORGANIC:FORTIFICATION AGATEINORGANIC:MILK QUARTZINORGANIC:MOONSTONEINORGANIC:WHITE JADEINORGANIC:JASPER OPALINORGANIC:PINEAPPLE OPALINORGANIC:ONYX OPALINORGANIC:MILK OPALINORGANIC:PIPE OPALINORGANIC:AVENTURINEINORGANIC:TURQUOISEINORGANIC:QUARTZ_ROSEINORGANIC:CRYSTAL_ROCKINORGANIC:BLACK ZIRCONINORGANIC:BLACK PYROPEINORGANIC:MELANITEINORGANIC:INDIGO TOURMALINEINORGANIC:BLUE GARNETINORGANIC:TSAVORITEINORGANIC:GREEN TOURMALINEINORGANIC:DEMANTOIDINORGANIC:GREEN ZIRCONINORGANIC:GREEN JADEINORGANIC:HELIODORINORGANIC:PERIDOTINORGANIC:RED ZIRCONINORGANIC:RED TOURMALINEINORGANIC:RED PYROPEINORGANIC:ALMANDINEINORGANIC:RED GROSSULARINORGANIC:PINK TOURMALINEINORGANIC:RED BERYLINORGANIC:FIRE OPALINORGANIC:RHODOLITEINORGANIC:SPINEL_PURPLEINORGANIC:ALEXANDRITEINORGANIC:TANZANITEINORGANIC:MORGANITEINORGANIC:VIOLET SPESSARTINEINORGANIC:PINK GARNETINORGANIC:KUNZITEINORGANIC:CINNAMON GROSSULARINORGANIC:HONEY YELLOW BERYLINORGANIC:JELLY OPALINORGANIC:BROWN ZIRCONINORGANIC:YELLOW ZIRCONINORGANIC:GOLDEN BERYLINORGANIC:YELLOW SPESSARTINEINORGANIC:TOPAZINORGANIC:TOPAZOLITEINORGANIC:YELLOW GROSSULARINORGANIC:RUBICELLEINORGANIC:CLEAR GARNETINORGANIC:GOSHENITEINORGANIC:CAT'S EYEINORGANIC:CLEAR ZIRCONINORGANIC:AMETHYSTINORGANIC:AQUAMARINEINORGANIC:SPINEL_REDINORGANIC:CHRYSOBERYLINORGANIC:OPAL_PFIREINORGANIC:OPAL_REDFLASHINORGANIC:OPAL_BLACKINORGANIC:OPAL_WHITEINORGANIC:OPAL_CRYSTALINORGANIC:OPAL_CLAROINORGANIC:OPAL_LEVININORGANIC:OPAL_HARLEQUININORGANIC:OPAL_PINFIREINORGANIC:OPAL_BANDFIREINORGANIC:DIAMOND_LYINORGANIC:DIAMOND_FYINORGANIC:EMERALDINORGANIC:RUBYINORGANIC:SAPPHIREINORGANIC:DIAMOND_CLEARINORGANIC:DIAMOND_REDINORGANIC:DIAMOND_GREENINORGANIC:DIAMOND_BLUEINORGANIC:DIAMOND_YELLOWINORGANIC:DIAMOND_BLACKINORGANIC:SAPPHIRE_STARINORGANIC:RUBY_STARINORGANIC:SANDSTONEINORGANIC:SILTSTONEINORGANIC:MUDSTONEINORGANIC:SHALEINORGANIC:CLAYSTONEINORGANIC:ROCK_SALTINORGANIC:LIMESTONEINORGANIC:CONGLOMERATEINORGANIC:DOLOMITEINORGANIC:CHERTINORGANIC:CHALKINORGANIC:GRANITEINORGANIC:DIORITEINORGANIC:GABBROINORGANIC:RHYOLITEINORGANIC:BASALTINORGANIC:ANDESITEINORGANIC:DACITEINORGANIC:OBSIDIANINORGANIC:QUARTZITEINORGANIC:SLATEINORGANIC:PHYLLITEINORGANIC:SCHISTINORGANIC:GNEISSINORGANIC:MARBLEINORGANIC:HEMATITEINORGANIC:LIMONITEINORGANIC:GARNIERITEINORGANIC:NATIVE_GOLDINORGANIC:NATIVE_SILVERINORGANIC:NATIVE_COPPERINORGANIC:MALACHITEINORGANIC:GALENAINORGANIC:SPHALERITEINORGANIC:CASSITERITEINORGANIC:COAL_BITUMINOUSINORGANIC:LIGNITEINORGANIC:NATIVE_PLATINUMINORGANIC:CINNABARINORGANIC:COBALTITEINORGANIC:TETRAHEDRITEINORGANIC:HORN_SILVERINORGANIC:GYPSUMINORGANIC:TALC INORGANIC:JETINORGANIC:PUDDINGSTONEINORGANIC:PETRIFIED_WOODINORGANIC:GRAPHITEINORGANIC:BRIMSTONEINORGANIC:KIMBERLITEINORGANIC:BISMUTHINITEINORGANIC:REALGARINORGANIC:ORPIMENTINORGANIC:STIBNITEINORGANIC:MARCASITEINORGANIC:SYLVITEINORGANIC:CRYOLITEINORGANIC:PERICLASEINORGANIC:ILMENITEINORGANIC:RUTILEINORGANIC:MAGNETITEINORGANIC:CHROMITEINORGANIC:PYROLUSITEINORGANIC:PITCHBLENDEINORGANIC:BAUXITEINORGANIC:NATIVE_ALUMINUMINORGANIC:BORAXINORGANIC:OLIVINEINORGANIC:HORNBLENDEINORGANIC:KAOLINITEINORGANIC:SERPENTINEINORGANIC:ORTHOCLASEINORGANIC:MICROCLINEINORGANIC:MICAINORGANIC:CALCITEINORGANIC:SALTPETERINORGANIC:ALABASTERINORGANIC:SELENITEINORGANIC:SATINSPARINORGANIC:ANHYDRITEINORGANIC:ALUNITEINORGANIC:RAW_ADAMANTINEINORGANIC:SLADE INORGANIC:BROMS_CLEAN_CORPSEDUSTINORGANIC:GOLDINORGANIC:DIVINE_1INORGANIC:DIVINE_3INORGANIC:DIVINE_5INORGANIC:DIVINE_7INORGANIC:DIVINE_9INORGANIC:DIVINE_11INORGANIC:DIVINE_13INORGANIC:DIVINE_15INORGANIC:DIVINE_17INORGANIC:DIVINE_19"Ordinary" WellCrafted" FinelyCrafted"Superior" Exceptional" Masterful"Artifact*Ordinary* WellCrafted* FinelyCrafted*Superior* Exceptional* Masterful*Artifact \ No newline at end of file +b +TOY \ No newline at end of file diff --git a/data/stockpiles/woodtools.dfstock b/data/stockpiles/woodtools.dfstock index 12c100005..86eb0d0c8 100644 --- a/data/stockpiles/woodtools.dfstock +++ b/data/stockpiles/woodtools.dfstock @@ -1,2 +1,2 @@ -b -TOOLWOOD"Ordinary" WellCrafted" FinelyCrafted"Superior" Exceptional" Masterful"Artifact*Ordinary* WellCrafted* FinelyCrafted*Superior* Exceptional* Masterful*Artifact \ No newline at end of file +b +TOOLWOOD \ No newline at end of file From b5d4f04d2ff176836cf8bf3ec0a2edeeca8bf556 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Tue, 21 Mar 2023 00:19:49 -0700 Subject: [PATCH 047/115] differentiate fish --- docs/plugins/stockpiles.rst | 181 ++++++++++++++------- plugins/stockpiles/StockpileSerializer.cpp | 4 +- 2 files changed, 122 insertions(+), 63 deletions(-) diff --git a/docs/plugins/stockpiles.rst b/docs/plugins/stockpiles.rst index c36031ad7..987be3299 100644 --- a/docs/plugins/stockpiles.rst +++ b/docs/plugins/stockpiles.rst @@ -48,7 +48,7 @@ Examples exist. ``stockpiles import -m enable plants`` Enables plants in the selected stockpile. -``stockpiles import -m disable category_food -f tallow`` +``stockpiles import -m disable cat_food -f tallow`` Disables all tallow in the selected food stockpile. ``stockpiles export mysettings`` Export the settings for the currently selected stockpile to a file named @@ -109,7 +109,7 @@ stockpile configurations can only be achieved with filters since the stockpile lists are different for each world. For example, to disable all tallow in your main food stockpile, you'd run this command:: - stockpiles import category_food -m disable -f tallow + stockpiles import cat_food -m disable -f tallow Top-level categories ~~~~~~~~~~~~~~~~~~~~ @@ -117,27 +117,27 @@ Top-level categories Each stockpile category has a file that allows you to enable or disable the entire category, or with a filter, any matchable subset thereof:: - category_ammo - category_animals - category_armor - category_bars_blocks - category_cloth - category_coins - category_corpses - category_finished_goods - category_food - category_furniture - category_gems - category_leather - category_refuse - category_sheets - category_stone - category_weapons - category_wood - -For many of the categories, there are also subcategory prefixes that you can -match with filters and convenient pre-made settings files that manipulate -interesting category subsets. + cat_ammo + cat_animals + cat_armor + cat_bars_blocks + cat_cloth + cat_coins + cat_corpses + cat_finished_goods + cat_food + cat_furniture + cat_gems + cat_leather + cat_refuse + cat_sheets + cat_stone + cat_weapons + cat_wood + +For many of the categories, there are also flags and subcategory prefixes that +you can match with filters and convenient pre-made settings files that +manipulate interesting category subsets. Ammo stockpile adjustments ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -150,7 +150,7 @@ Subcategory prefixes:: core/ total/ -Convenience settings files:: +Settings files:: bolts metalammo @@ -159,59 +159,118 @@ Convenience settings files:: Example commands for a stockpile of metal bolts:: - stockpiles import category_ammo - stockpiles import -m disable -f other/ category_ammo - stockpiles import -m disable -f type/ category_ammo + stockpiles import cat_ammo -f mats/,core/,total/ stockpiles import -m enable bolts Animal stockpile adjustments ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -traps -cages +Flags:: + + cages + traps + +Settings files:: + + cages + traps + +Example commands for a stockpile of empty cages:: + + stockpiles import cages + +Or, using the flag for the same effect:: + + stockpiles import cat_animals -f cages Armor stockpile adjustments ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -metalarmor -otherarmor -ironarmor -bronzearmor -copperarmor -steelarmor -masterworkarmor -artifactarmor -usablearmor -unusablearmor +Flags and subcategory prefixes:: + + nouse + canuse + body/ + head/ + feet/ + hands/ + legs/ + shield/ + mats/ + other/ + core/ + total/ + +Settings files:: + metalarmor + otherarmor + ironarmor + bronzearmor + copperarmor + steelarmor + usablearmor + unusablearmor + +Example commands for a stockpile of sub-masterwork meltable armor:: + + stockpiles import cat_armor + stockpiles import -m disable -f other/,core/mas,core/art cat_armor Bar stockpile adjustments ~~~~~~~~~~~~~~~~~~~~~~~~~ -bars -metalbars -ironbars -pigironbars -steelbars -otherbars -coal -potash -ash -pearlash -soap -blocks +Subcategory prefixes:: + + mats/bars/ + other/bars/ + mats/blocks/ + other/blocks/ + +Settings files:: + + bars + metalbars + ironbars + pigironbars + steelbars + otherbars + coal + potash + ash + pearlash + soap + blocks + +Example commands for a stockpile of blocks:: + + stockpiles import blocks Cloth stockpile adjustments ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -thread -adamantinethread -cloth -adamantinecloth +Subcategory prefixes:: + + thread/silk/ + thread/plant/ + thread/yarn/ + thread/metal/ + cloth/silk/ + cloth/plant/ + cloth/yarn/ + cloth/metal/ + +Settings files:: + + thread + adamantinethread + cloth + adamantinecloth Notes: -* ``thread`` and ``cloth`` refers to all materials that are not adamantine. +* ``thread`` and ``cloth`` settings files set all materials that are not +adamantine. Finished goods stockpile adjustments ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -287,11 +346,11 @@ usablehair You can get a stockpile of usable refuse with the following set of commands:: - stockpiles import category_refuse -m enable -f skulls - stockpiles import category_refuse -m enable -f bones - stockpiles import category_refuse -m enable -f shells - stockpiles import category_refuse -m enable -f teeth - stockpiles import category_refuse -m enable -f horns + stockpiles import cat_refuse -m enable -f skulls + stockpiles import cat_refuse -m enable -f bones + stockpiles import cat_refuse -m enable -f shells + stockpiles import cat_refuse -m enable -f teeth + stockpiles import cat_refuse -m enable -f horns stockpiles import usablehair -m enable Stone stockpile adjustments diff --git a/plugins/stockpiles/StockpileSerializer.cpp b/plugins/stockpiles/StockpileSerializer.cpp index ca51c0b3e..dd418c840 100644 --- a/plugins/stockpiles/StockpileSerializer.cpp +++ b/plugins/stockpiles/StockpileSerializer.cpp @@ -1457,7 +1457,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_fish(id); }; FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().fish(idx); }; - return food_pair("fish", setter, &mPile->settings.food.fish, getter, mBuffer.food().fish_size()); + return food_pair("fish/prepared", setter, &mPile->settings.food.fish, getter, mBuffer.food().fish_size()); } case organic_mat_category::UnpreparedFish: { @@ -1465,7 +1465,7 @@ food_pair StockpileSerializer::food_map(organic_mat_category::organic_mat_catego mBuffer.mutable_food()->add_unprepared_fish(id); }; FuncReadImport getter = [&](size_t idx) -> string { return mBuffer.food().unprepared_fish(idx); }; - return food_pair("unpreparedfish", setter, &mPile->settings.food.unprepared_fish, getter, mBuffer.food().unprepared_fish_size()); + return food_pair("fish/unprepared", setter, &mPile->settings.food.unprepared_fish, getter, mBuffer.food().unprepared_fish_size()); } case organic_mat_category::Eggs: { From f6ebe36012a3ceb364d0105f98c2f90421e3ada5 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Tue, 21 Mar 2023 00:46:06 -0700 Subject: [PATCH 048/115] final stockpile library update --- data/stockpiles/bags.dfstock | 4 ++-- data/stockpiles/buckets.dfstock | 4 ++-- data/stockpiles/pots.dfstock | 4 ++-- data/stockpiles/sand.dfstock | 5 +++-- data/stockpiles/weapons.dfstock | Bin 709 -> 0 bytes 5 files changed, 9 insertions(+), 8 deletions(-) delete mode 100644 data/stockpiles/weapons.dfstock diff --git a/data/stockpiles/bags.dfstock b/data/stockpiles/bags.dfstock index 6f95e7638..3bfa1a1a1 100644 --- a/data/stockpiles/bags.dfstock +++ b/data/stockpiles/bags.dfstock @@ -1,2 +1,2 @@ - -BAG PLANT_CLOTHLEATHERSILKYARN"Ordinary" WellCrafted" FinelyCrafted"Superior" Exceptional" Masterful"Artifact*Ordinary* WellCrafted* FinelyCrafted*Superior* Exceptional* Masterful*Artifact \ No newline at end of file + +BAG \ No newline at end of file diff --git a/data/stockpiles/buckets.dfstock b/data/stockpiles/buckets.dfstock index 656e21309..cb6b8c4bb 100644 --- a/data/stockpiles/buckets.dfstock +++ b/data/stockpiles/buckets.dfstock @@ -1,2 +1,2 @@ - -BUCKETWOOD PLANT_CLOTHBONETOOTHHORNPEARLSHELLLEATHERSILKAMBERCORAL GREEN_GLASS CLEAR_GLASS CRYSTAL_GLASSYARNINORGANIC:IRONINORGANIC:SILVERINORGANIC:COPPERINORGANIC:NICKELINORGANIC:ZINCINORGANIC:BRONZEINORGANIC:BRASSINORGANIC:STEELINORGANIC:PIG_IRONINORGANIC:PLATINUMINORGANIC:ELECTRUM INORGANIC:TININORGANIC:PEWTER_FINEINORGANIC:PEWTER_TRIFLEINORGANIC:PEWTER_LAYINORGANIC:LEADINORGANIC:ALUMINUMINORGANIC:NICKEL_SILVERINORGANIC:BILLONINORGANIC:STERLING_SILVERINORGANIC:BLACK_BRONZEINORGANIC:ROSE_GOLDINORGANIC:BISMUTHINORGANIC:BISMUTH_BRONZEINORGANIC:ADAMANTINEINORGANIC:PLASTERINORGANIC:CERAMIC_EARTHENWAREINORGANIC:CERAMIC_STONEWAREINORGANIC:CERAMIC_PORCELAININORGANIC:ASH_GLAZEINORGANIC:TIN_GLAZEINORGANIC:SANDSTONEINORGANIC:SILTSTONEINORGANIC:MUDSTONEINORGANIC:SHALEINORGANIC:CLAYSTONEINORGANIC:ROCK_SALTINORGANIC:LIMESTONEINORGANIC:CONGLOMERATEINORGANIC:DOLOMITEINORGANIC:CHERTINORGANIC:CHALKINORGANIC:GRANITEINORGANIC:DIORITEINORGANIC:GABBROINORGANIC:RHYOLITEINORGANIC:BASALTINORGANIC:ANDESITEINORGANIC:DACITEINORGANIC:OBSIDIANINORGANIC:QUARTZITEINORGANIC:SLATEINORGANIC:PHYLLITEINORGANIC:SCHISTINORGANIC:GNEISSINORGANIC:MARBLEINORGANIC:HEMATITEINORGANIC:LIMONITEINORGANIC:GARNIERITEINORGANIC:NATIVE_GOLDINORGANIC:NATIVE_SILVERINORGANIC:NATIVE_COPPERINORGANIC:MALACHITEINORGANIC:GALENAINORGANIC:SPHALERITEINORGANIC:CASSITERITEINORGANIC:COAL_BITUMINOUSINORGANIC:LIGNITEINORGANIC:NATIVE_PLATINUMINORGANIC:CINNABARINORGANIC:COBALTITEINORGANIC:TETRAHEDRITEINORGANIC:HORN_SILVERINORGANIC:GYPSUMINORGANIC:TALC INORGANIC:JETINORGANIC:PUDDINGSTONEINORGANIC:PETRIFIED_WOODINORGANIC:GRAPHITEINORGANIC:BRIMSTONEINORGANIC:KIMBERLITEINORGANIC:BISMUTHINITEINORGANIC:REALGARINORGANIC:ORPIMENTINORGANIC:STIBNITEINORGANIC:MARCASITEINORGANIC:SYLVITEINORGANIC:CRYOLITEINORGANIC:PERICLASEINORGANIC:ILMENITEINORGANIC:RUTILEINORGANIC:MAGNETITEINORGANIC:CHROMITEINORGANIC:PYROLUSITEINORGANIC:PITCHBLENDEINORGANIC:BAUXITEINORGANIC:NATIVE_ALUMINUMINORGANIC:BORAXINORGANIC:OLIVINEINORGANIC:HORNBLENDEINORGANIC:KAOLINITEINORGANIC:SERPENTINEINORGANIC:ORTHOCLASEINORGANIC:MICROCLINEINORGANIC:MICAINORGANIC:CALCITEINORGANIC:SALTPETERINORGANIC:ALABASTERINORGANIC:SELENITEINORGANIC:SATINSPARINORGANIC:ANHYDRITEINORGANIC:ALUNITEINORGANIC:RAW_ADAMANTINEINORGANIC:SLADE INORGANIC:BROMS_CLEAN_CORPSEDUSTINORGANIC:GOLDINORGANIC:DIVINE_1INORGANIC:DIVINE_3INORGANIC:DIVINE_5INORGANIC:DIVINE_7INORGANIC:DIVINE_9INORGANIC:DIVINE_11INORGANIC:DIVINE_13INORGANIC:DIVINE_15INORGANIC:DIVINE_17INORGANIC:DIVINE_19"Ordinary" WellCrafted" FinelyCrafted"Superior" Exceptional" Masterful"Artifact*Ordinary* WellCrafted* FinelyCrafted*Superior* Exceptional* Masterful*Artifact \ No newline at end of file + +BUCKET \ No newline at end of file diff --git a/data/stockpiles/pots.dfstock b/data/stockpiles/pots.dfstock index 016b086b3..2c1fe0e5c 100644 --- a/data/stockpiles/pots.dfstock +++ b/data/stockpiles/pots.dfstock @@ -1,2 +1,2 @@ - - FOOD_STORAGEWOOD PLANT_CLOTHBONETOOTHHORNPEARLSHELLLEATHERSILKAMBERCORAL GREEN_GLASS CLEAR_GLASS CRYSTAL_GLASSYARNINORGANIC:IRONINORGANIC:SILVERINORGANIC:COPPERINORGANIC:NICKELINORGANIC:ZINCINORGANIC:BRONZEINORGANIC:BRASSINORGANIC:STEELINORGANIC:PIG_IRONINORGANIC:PLATINUMINORGANIC:ELECTRUM INORGANIC:TININORGANIC:PEWTER_FINEINORGANIC:PEWTER_TRIFLEINORGANIC:PEWTER_LAYINORGANIC:LEADINORGANIC:ALUMINUMINORGANIC:NICKEL_SILVERINORGANIC:BILLONINORGANIC:STERLING_SILVERINORGANIC:BLACK_BRONZEINORGANIC:ROSE_GOLDINORGANIC:BISMUTHINORGANIC:BISMUTH_BRONZEINORGANIC:ADAMANTINEINORGANIC:PLASTERINORGANIC:CERAMIC_EARTHENWAREINORGANIC:CERAMIC_STONEWAREINORGANIC:CERAMIC_PORCELAININORGANIC:ASH_GLAZEINORGANIC:TIN_GLAZEINORGANIC:SANDSTONEINORGANIC:SILTSTONEINORGANIC:MUDSTONEINORGANIC:SHALEINORGANIC:CLAYSTONEINORGANIC:ROCK_SALTINORGANIC:LIMESTONEINORGANIC:CONGLOMERATEINORGANIC:DOLOMITEINORGANIC:CHERTINORGANIC:CHALKINORGANIC:GRANITEINORGANIC:DIORITEINORGANIC:GABBROINORGANIC:RHYOLITEINORGANIC:BASALTINORGANIC:ANDESITEINORGANIC:DACITEINORGANIC:OBSIDIANINORGANIC:QUARTZITEINORGANIC:SLATEINORGANIC:PHYLLITEINORGANIC:SCHISTINORGANIC:GNEISSINORGANIC:MARBLEINORGANIC:HEMATITEINORGANIC:LIMONITEINORGANIC:GARNIERITEINORGANIC:NATIVE_GOLDINORGANIC:NATIVE_SILVERINORGANIC:NATIVE_COPPERINORGANIC:MALACHITEINORGANIC:GALENAINORGANIC:SPHALERITEINORGANIC:CASSITERITEINORGANIC:COAL_BITUMINOUSINORGANIC:LIGNITEINORGANIC:NATIVE_PLATINUMINORGANIC:CINNABARINORGANIC:COBALTITEINORGANIC:TETRAHEDRITEINORGANIC:HORN_SILVERINORGANIC:GYPSUMINORGANIC:TALC INORGANIC:JETINORGANIC:PUDDINGSTONEINORGANIC:PETRIFIED_WOODINORGANIC:GRAPHITEINORGANIC:BRIMSTONEINORGANIC:KIMBERLITEINORGANIC:BISMUTHINITEINORGANIC:REALGARINORGANIC:ORPIMENTINORGANIC:STIBNITEINORGANIC:MARCASITEINORGANIC:SYLVITEINORGANIC:CRYOLITEINORGANIC:PERICLASEINORGANIC:ILMENITEINORGANIC:RUTILEINORGANIC:MAGNETITEINORGANIC:CHROMITEINORGANIC:PYROLUSITEINORGANIC:PITCHBLENDEINORGANIC:BAUXITEINORGANIC:NATIVE_ALUMINUMINORGANIC:BORAXINORGANIC:OLIVINEINORGANIC:HORNBLENDEINORGANIC:KAOLINITEINORGANIC:SERPENTINEINORGANIC:ORTHOCLASEINORGANIC:MICROCLINEINORGANIC:MICAINORGANIC:CALCITEINORGANIC:SALTPETERINORGANIC:ALABASTERINORGANIC:SELENITEINORGANIC:SATINSPARINORGANIC:ANHYDRITEINORGANIC:ALUNITEINORGANIC:RAW_ADAMANTINEINORGANIC:SLADE INORGANIC:BROMS_CLEAN_CORPSEDUSTINORGANIC:GOLDINORGANIC:DIVINE_1INORGANIC:DIVINE_3INORGANIC:DIVINE_5INORGANIC:DIVINE_7INORGANIC:DIVINE_9INORGANIC:DIVINE_11INORGANIC:DIVINE_13INORGANIC:DIVINE_15INORGANIC:DIVINE_17INORGANIC:DIVINE_19"Ordinary" WellCrafted" FinelyCrafted"Superior" Exceptional" Masterful"Artifact*Ordinary* WellCrafted* FinelyCrafted*Superior* Exceptional* Masterful*Artifact \ No newline at end of file + + FOOD_STORAGE \ No newline at end of file diff --git a/data/stockpiles/sand.dfstock b/data/stockpiles/sand.dfstock index 87b2fe9ce..b97921e81 100644 --- a/data/stockpiles/sand.dfstock +++ b/data/stockpiles/sand.dfstock @@ -1,2 +1,3 @@ - -SAND_BAG PLANT_CLOTHLEATHERSILKYARN"Ordinary" WellCrafted" FinelyCrafted"Superior" Exceptional" Masterful"Artifact*Ordinary* WellCrafted* FinelyCrafted*Superior* Exceptional* Masterful*Artifact \ No newline at end of file + + +SAND_BAG \ No newline at end of file diff --git a/data/stockpiles/weapons.dfstock b/data/stockpiles/weapons.dfstock deleted file mode 100644 index e4968f56d4a16f14d4fc2edfca5a24651d83c615..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 709 zcmZ{iJx&BM42741#s>hz@*^sGDnzxOj7g%+&&bIrbh!&R<7P}W5>Pz4D9_LNoafJr zuS>da!b?tXzDn%-xi{w*x(5P(NT0aYAW(K3qiAoe^Z?wYWu1F*Su5QjeUZ(HfFc{A zBd{3FrA)a&*W%5Yu7GP8Zqa?n&93R6W@mvW$6*qkA>Kami-W(liyz Date: Tue, 21 Mar 2023 00:46:21 -0700 Subject: [PATCH 049/115] finalize docs, clear flags --- docs/plugins/stockpiles.rst | 241 ++++++++++++++------- plugins/stockpiles/StockpileSerializer.cpp | 4 + 2 files changed, 170 insertions(+), 75 deletions(-) diff --git a/docs/plugins/stockpiles.rst b/docs/plugins/stockpiles.rst index 987be3299..6b87d7a96 100644 --- a/docs/plugins/stockpiles.rst +++ b/docs/plugins/stockpiles.rst @@ -275,113 +275,204 @@ adamantine. Finished goods stockpile adjustments ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -stonetools -woodtools -crafts -goblets -toys -masterworkfinishedgoods -artifactfinishedgoods +Subcategory prefixes:: + + type/ + mats/ + other/ + core/ + total/ + +Settings files:: + + stonetools + woodtools + crafts + goblets + toys + +Example commands for a toy stockpile:: + + stockpiles import cat_furniture -f mats/,other/,core/,total/ + stockpiles import -m enable toys Food stockpile adjustments ~~~~~~~~~~~~~~~~~~~~~~~~~~ -preparedmeals -unpreparedfish -plants -booze -seeds -dye -miscliquid -wax +Flags and subcategory prefixes:: + + preparedmeals + meat/ + fish/prepared/ + fish/unprepared/ + egg/ + plants/ + drink/plant/ + drink/animal/ + cheese/plant/ + cheese/animal/ + seeds/ + leaves/ + powder/plant/ + powder/animal/ + glob/ + liquid/plant/ + liquid/animal/ + liquid/misc/ + paste/ + pressed/ + +Settings files:: + + preparedmeals + unpreparedfish + plants + booze + seeds + dye + miscliquid + wax + +Example commands for a kitchen ingredients stockpile:: + + stockpiles import cat_food -f meat/,fish/prepared/,egg/,cheese/,leaves/,powder/,glob/,liquid/plant/,paste/,pressed/ + stockpiles import cat_food -m enable -f milk,royal_jelly + stockpiles import dye -m disable + stockpiles import cat_food -m disable -f tallow,thread,liquid/misc/ Furniture stockpile adjustments ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -pots -bags -buckets -sand -masterworkfurniture -artifactfurniture +Subcategory prefixes:: + + type/ + mats/ + other/ + core/ + total/ + +Settings files:: + + pots + bags + buckets + sand * Because of the limitations of Dwarf Fortress, ``bags`` cannot distinguish between empty bags and bags filled with gypsum powder. +Example commands for a sand bag stockpile:: + + stockpiles import cat_furniture + stockpiles import cat_furniture -m disable -f type/ + stockpiles import sand -m enable + Gem stockpile adjustments ~~~~~~~~~~~~~~~~~~~~~~~~~ -roughgems -roughglass -cutgems -cutglass -cutstone +Subcategory prefixes:: + + mats/rough/ + mats/cut/ + other/rough/ + other/cut/ + +Settings files:: + + roughgems + roughglass + cutgems + cutglass + cutstone Refuse stockpile adjustments ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -=========== ================== ================== -Exclusive Forbid Permit -=========== ================== ================== -corpses forbidcorpses permitcorpses -skulls forbidskulls permitskulls -bones forbidbones permitbones -shells forbidshells permitshells -teeth forbidteeth permitteeth -horns forbidhorns permithorns -hair forbidhair permithair -craftrefuse forbidcraftrefuse permitcraftrefuse -=========== ================== ================== +Flags and subcategory prefixes:: + + rawhide/fresh + rawhide/rotten + type/ + corpses/ + bodyparts/ + skulls/ + bones/ + hair/ + shells/ + teeth/ + horns/ + +Settings files:: + + rawhides + tannedhides + usablehair 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). - -rawhides -tannedhides -usablehair -You can get a stockpile of usable refuse with the following set of commands:: +Example commands for a craftable refuse stockpile:: - stockpiles import cat_refuse -m enable -f skulls - stockpiles import cat_refuse -m enable -f bones - stockpiles import cat_refuse -m enable -f shells - stockpiles import cat_refuse -m enable -f teeth - stockpiles import cat_refuse -m enable -f horns + stockpiles import cat_refuse -f skulls/,bones/,shells',teeth/,horns/ stockpiles import usablehair -m enable +Sheet stockpile adjustments +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Subcategory prefixes:: + + paper/ + parchment/ + Stone stockpile adjustments ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -metalore -ironore -economic -flux -plasterproducing -coalproducing -otherstone -bauxite -clay +Settings files:: + + metalore + ironore + economic + flux + plasterproducing + coalproducing + otherstone + bauxite + clay Weapon stockpile adjustments ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -weapons -metalweapons -stoneweapons -otherweapons -trapcomponents -ironweapons -silverweapons -bronzeweapons -copperweapons -steelweapons -platinumweapons -adamantineweapons -masterworkweapons -artifactweapons -usableweapons -unusableweapons +Flags and subcategory prefixes:: + + nouse + canuse + type/weapon/ + type/trapcomp/ + mats/ + other/ + core/ + total/ + +Settings files:: + + metalweapons + stoneweapons + otherweapons + trapcomponents + ironweapons + silverweapons + bronzeweapons + copperweapons + steelweapons + platinumweapons + adamantineweapons + usableweapons + unusableweapons + +Example commands for a non-metallic trap components stockpile:: + + stockpiles import cat_weapons + stockpiles import cat_weapons -m disable -f type/weapon/ + stockpiles metalweapons -m disable diff --git a/plugins/stockpiles/StockpileSerializer.cpp b/plugins/stockpiles/StockpileSerializer.cpp index dd418c840..f6a63ff4f 100644 --- a/plugins/stockpiles/StockpileSerializer.cpp +++ b/plugins/stockpiles/StockpileSerializer.cpp @@ -1090,6 +1090,8 @@ void StockpileSerializer::read_armor(DeserializeMode mode, const vector& mPile->settings.flags.whole, mPile->settings.flags.mask_armor, [&]() { + parmor.unusable = false; + parmor.usable = false; parmor.body.clear(); parmor.head.clear(); parmor.feet.clear(); @@ -2158,6 +2160,8 @@ void StockpileSerializer::read_weapons(DeserializeMode mode, const vectorsettings.flags.whole, mPile->settings.flags.mask_weapons, [&]() { + pweapons.unusable = false; + pweapons.usable = false; pweapons.weapon_type.clear(); pweapons.trapcomp_type.clear(); pweapons.other_mats.clear(); From 22872f61c408d0763b98fb09e4ded0c35bafbb52 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Tue, 21 Mar 2023 02:13:23 -0700 Subject: [PATCH 050/115] fix indent --- docs/plugins/stockpiles.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/plugins/stockpiles.rst b/docs/plugins/stockpiles.rst index 6b87d7a96..8093b6c1d 100644 --- a/docs/plugins/stockpiles.rst +++ b/docs/plugins/stockpiles.rst @@ -270,7 +270,7 @@ Settings files:: Notes: * ``thread`` and ``cloth`` settings files set all materials that are not -adamantine. + adamantine. Finished goods stockpile adjustments ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From 9154a52d0a869a065cf2c7ec3183b56d5b7a5962 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Wed, 22 Mar 2023 23:58:02 -0700 Subject: [PATCH 051/115] remove spaces and dashes from allowed filename chars since this will likely make it more difficult to represent stockpile filenames in quickfort's stockpile configuration language --- docs/plugins/stockpiles.rst | 3 +-- plugins/lua/stockpiles.lua | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/plugins/stockpiles.rst b/docs/plugins/stockpiles.rst index 8093b6c1d..560ae2497 100644 --- a/docs/plugins/stockpiles.rst +++ b/docs/plugins/stockpiles.rst @@ -20,8 +20,7 @@ Usage Exported stockpile settings are saved in the ``dfhack-config/stockpiles`` folder, where you can view and delete them, if desired. Names can only -contain numbers, letters, periods, underscores, dashes, and spaces. If -the name has spaces, be sure to surround it with double quotes (:kbd:`"`). +contain numbers, letters, periods, and underscores. The names of library settings files are all prefixed by the string ``library/``. You can specify library files explicitly by including the prefix, or you can diff --git a/plugins/lua/stockpiles.lua b/plugins/lua/stockpiles.lua index f9c7d7b4a..6134f0a1b 100644 --- a/plugins/lua/stockpiles.lua +++ b/plugins/lua/stockpiles.lua @@ -62,8 +62,8 @@ local function assert_safe_name(name) if not name or #name == 0 then qerror('name missing or empty') end - if name:find('[^%a ._-]') then - qerror('name can only contain numbers, letters, periods, underscores, dashes, and spaces') + if name:find('[^%a._]') then + qerror('name can only contain numbers, letters, periods, and underscores') end end From 05f407e10bedde8102eac52f235d55eecb9d70d7 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Thu, 23 Mar 2023 02:36:20 -0700 Subject: [PATCH 052/115] update changelog --- docs/changelog.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/changelog.txt b/docs/changelog.txt index 2b88261f8..c7baf4df8 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -41,6 +41,11 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: - `buildingplan`: upright spike traps are now placed extended rather than retracted ## Misc Improvements +- `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 +- `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) ## Documentation From 873e94ea5df894780f67e64b5f7f161ba3d7e5af Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Thu, 23 Mar 2023 10:48:33 -0700 Subject: [PATCH 053/115] actually record the deserialized material mask val --- docs/changelog.txt | 1 + plugins/buildingplan/buildingplan.cpp | 4 ++-- plugins/buildingplan/itemfilter.cpp | 14 ++++++-------- plugins/buildingplan/itemfilter.h | 2 +- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 142b10e83..976490f97 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -39,6 +39,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: ## Fixes - `tailor`: now properly discriminates between dyed and undyed cloth and no longer defaults to using adamantine - `buildingplan`: upright spike traps are now placed extended rather than retracted +- `buildingplan`: fixed material filter getting lost for planning buildings on save/reload ## Misc Improvements - `stockpiles`: support applying stockpile configurations with fully enabled categories to stockpiles in worlds other than the one where the configuration was exported from diff --git a/plugins/buildingplan/buildingplan.cpp b/plugins/buildingplan/buildingplan.cpp index b472c7390..1e2d2c80e 100644 --- a/plugins/buildingplan/buildingplan.cpp +++ b/plugins/buildingplan/buildingplan.cpp @@ -130,7 +130,7 @@ static const vector & get_job_items(color_ostream &out, Bu }, [&](lua_State *L) { df::job_item *jitem = Lua::GetDFObject(L, -1); - DEBUG(status,out).print("retrieving job_item for (%d, %d, %d) index=%d: %p\n", + DEBUG(status,out).print("retrieving job_item for (%d, %d, %d) index=%d: 0x%p\n", std::get<0>(key), std::get<1>(key), std::get<2>(key), index, jitem); if (!jitem) failed = true; @@ -311,7 +311,7 @@ DFhackCExport command_result plugin_load_data (color_ostream &out) { PlannedBuilding pb(out, building_configs[idx]); df::building *bld = df::building::find(pb.id); if (!bld) { - INFO(status,out).print("building %d no longer exists; skipping\n", pb.id); + DEBUG(status,out).print("building %d no longer exists; skipping\n", pb.id); pb.remove(out); continue; } diff --git a/plugins/buildingplan/itemfilter.cpp b/plugins/buildingplan/itemfilter.cpp index 8e66c3ed7..dac5f98d6 100644 --- a/plugins/buildingplan/itemfilter.cpp +++ b/plugins/buildingplan/itemfilter.cpp @@ -35,7 +35,7 @@ bool ItemFilter::isEmpty() const { && materials.empty(); } -static bool deserializeMaterialMask(string ser, df::dfhack_material_category mat_mask) { +static bool deserializeMaterialMask(const string& ser, df::dfhack_material_category& mat_mask) { if (ser.empty()) return true; @@ -46,7 +46,7 @@ static bool deserializeMaterialMask(string ser, df::dfhack_material_category mat return true; } -static bool deserializeMaterials(string ser, set &materials) { +static bool deserializeMaterials(const string& ser, set &materials) { if (ser.empty()) return true; @@ -63,7 +63,7 @@ static bool deserializeMaterials(string ser, set &material return true; } -ItemFilter::ItemFilter(color_ostream &out, string serialized) : ItemFilter() { +ItemFilter::ItemFilter(color_ostream &out, const string& serialized) : ItemFilter() { vector tokens; split_string(&tokens, serialized, "/"); if (tokens.size() < 5) { @@ -87,11 +87,9 @@ string ItemFilter::serialize() const { std::ostringstream ser; ser << bitfield_to_string(mat_mask, ",") << "/"; vector matstrs; - if (!materials.empty()) { - for (auto &mat : materials) - matstrs.emplace_back(mat.getToken()); - ser << join_strings(",", matstrs); - } + for (auto &mat : materials) + matstrs.emplace_back(mat.getToken()); + ser << join_strings(",", matstrs); ser << "/" << static_cast(min_quality); ser << "/" << static_cast(max_quality); ser << "/" << static_cast(decorated_only); diff --git a/plugins/buildingplan/itemfilter.h b/plugins/buildingplan/itemfilter.h index 5ae59dd4a..c74150434 100644 --- a/plugins/buildingplan/itemfilter.h +++ b/plugins/buildingplan/itemfilter.h @@ -8,7 +8,7 @@ class ItemFilter { public: ItemFilter(); - ItemFilter(DFHack::color_ostream &out, std::string serialized); + ItemFilter(DFHack::color_ostream &out, const std::string& serialized); void clear(); bool isEmpty() const; From 95f6e6e5beab4ad2367b561dbd080dbafc22e8d4 Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Thu, 23 Mar 2023 16:21:14 -0500 Subject: [PATCH 054/115] tailor: fix material overrun issue properly track materials required for already-queued jobs fixes #3056 --- docs/changelog.txt | 2 +- library/xml | 2 +- plugins/tailor.cpp | 31 ++++++++++++++++++++++++------- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 142b10e83..ca5b87255 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -37,8 +37,8 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: - `prospector`: prospector tool in fort mode is now available. embark prospect is not yet available and is disabled at this time. ## Fixes -- `tailor`: now properly discriminates between dyed and undyed cloth and no longer defaults to using adamantine - `buildingplan`: upright spike traps are now placed extended rather than retracted +- `tailor`: now properly discriminates between dyed and undyed cloth, no longer defaults to using adamantine, and properly tracks material requirements for already queued orders ## Misc Improvements - `stockpiles`: support applying stockpile configurations with fully enabled categories to stockpiles in worlds other than the one where the configuration was exported from diff --git a/library/xml b/library/xml index 8b8ac2de0..0dc8ae877 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit 8b8ac2de03ab5f8e5506864a751933059abfd03e +Subproject commit 0dc8ae87746e287538be01f01dc628662e756794 diff --git a/plugins/tailor.cpp b/plugins/tailor.cpp index 66e54dd60..2c5a1a027 100644 --- a/plugins/tailor.cpp +++ b/plugins/tailor.cpp @@ -383,6 +383,17 @@ public: auto sub = o->item_subtype; int race = o->hist_figure_id; + + for (auto& m : all_materials) + { + if (o->material_category.whole == m.job_material.whole) + { + supply[m] -= o->amount_left; + TRACE(cycle).print("tailor: supply of %s reduced by %d due to being required for an existing order\n", + m.name.c_str(), o->amount_left); + } + } + if (race == -1) continue; // -1 means that the race of the worker will determine the size made; we must ignore these jobs @@ -525,6 +536,18 @@ public: } return ordered; } + + int do_cycle() + { + reset(); + scan_clothing(); + scan_materials(); + scan_replacements(); + create_orders(); + scan_existing_orders(); + return place_orders(); + } + }; static std::unique_ptr tailor_instance; @@ -684,13 +707,7 @@ static int do_cycle(color_ostream &out) { DEBUG(cycle,out).print("running %s cycle\n", plugin_name); - tailor_instance->reset(); - tailor_instance->scan_clothing(); - tailor_instance->scan_materials(); - tailor_instance->scan_replacements(); - tailor_instance->create_orders(); - tailor_instance->scan_existing_orders(); - return tailor_instance->place_orders(); + return tailor_instance->do_cycle(); } ///////////////////////////////////////////////////// From 013c6fe02a376fa1a2b4d6823879a8171a2f5ee1 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Thu, 23 Mar 2023 11:07:10 -0700 Subject: [PATCH 055/115] don't render footprint if we're minmized --- plugins/lua/buildingplan/planneroverlay.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/lua/buildingplan/planneroverlay.lua b/plugins/lua/buildingplan/planneroverlay.lua index a60b2ebcd..ec05e90f6 100644 --- a/plugins/lua/buildingplan/planneroverlay.lua +++ b/plugins/lua/buildingplan/planneroverlay.lua @@ -694,6 +694,8 @@ function PlannerOverlay:onRenderFrame(dc, rect) uibs.building_type, uibs.building_subtype, uibs.custom_type)) end + if self.minimized then return end + local selection_pos = self.saved_selection_pos or uibs.selection_pos if not selection_pos or selection_pos.x < 0 then return end From 0f8478df17596ffb07589c0500592827e509f8be Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Fri, 24 Mar 2023 07:13:34 +0000 Subject: [PATCH 056/115] Auto-update submodules library/xml: master scripts: master --- library/xml | 2 +- scripts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library/xml b/library/xml index 0dc8ae877..8b8ac2de0 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit 0dc8ae87746e287538be01f01dc628662e756794 +Subproject commit 8b8ac2de03ab5f8e5506864a751933059abfd03e diff --git a/scripts b/scripts index 7f388c0c1..0b37dcf99 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 7f388c0c1bf9ed5fa3f7abf1153da54921a93e15 +Subproject commit 0b37dcf996bf4b64423d2acb3e3ca224ad76c6bc From 99d050d0a85f6120f8bed2fa1775dc479b7f852c Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 24 Mar 2023 14:06:39 -0700 Subject: [PATCH 057/115] respect building size limits --- docs/changelog.txt | 1 + plugins/lua/buildingplan/planneroverlay.lua | 135 +++++++++++++------- 2 files changed, 92 insertions(+), 44 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 2a5b2cf15..88c6eac3b 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -39,6 +39,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: ## Fixes - `buildingplan`: upright spike traps are now placed extended rather than retracted - `buildingplan`: fixed material filter 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`: now properly discriminates between dyed and undyed cloth, no longer defaults to using adamantine, and properly tracks material requirements for already queued orders ## Misc Improvements diff --git a/plugins/lua/buildingplan/planneroverlay.lua b/plugins/lua/buildingplan/planneroverlay.lua index ec05e90f6..e92824f5f 100644 --- a/plugins/lua/buildingplan/planneroverlay.lua +++ b/plugins/lua/buildingplan/planneroverlay.lua @@ -23,13 +23,68 @@ local function is_choosing_area() return uibs.selection_pos.x >= 0 end -local function get_cur_area_dims(placement_data) - if not placement_data and not is_choosing_area() then return 1, 1, 1 end - local selection_pos = placement_data and placement_data.p1 or uibs.selection_pos - local pos = placement_data and placement_data.p2 or uibs.pos - return math.abs(selection_pos.x - pos.x) + 1, - math.abs(selection_pos.y - pos.y) + 1, - math.abs(selection_pos.z - pos.z) + 1 +-- TODO: reuse data in quickfort database +local function get_selection_size_limits() + local btype = uibs.building_type + if btype == df.building_type.Bridge + or btype == df.building_type.FarmPlot + or btype == df.building_type.RoadPaved + or btype == df.building_type.RoadDirt then + return {w=31, h=31} + elseif btype == df.building_type.AxleHorizontal + or btype == df.building_type.Rollers then + return uibs.direction == 1 and {w=1, h=31} or {w=31, h=1} + end +end + +local function get_selected_bounds(selection_pos, pos) + selection_pos = selection_pos or uibs.selection_pos + if not is_choosing_area() then return end + + pos = pos or uibs.pos + + local bounds = { + x1=math.min(selection_pos.x, pos.x), + x2=math.max(selection_pos.x, pos.x), + y1=math.min(selection_pos.y, pos.y), + y2=math.max(selection_pos.y, pos.y), + z1=math.min(selection_pos.z, pos.z), + z2=math.max(selection_pos.z, pos.z), + } + + -- clamp to map edges + bounds = { + x1=math.max(0, bounds.x1), + x2=math.min(df.global.world.map.x_count-1, bounds.x2), + y1=math.max(0, bounds.y1), + y2=math.min(df.global.world.map.y_count-1, bounds.y2), + z1=math.max(0, bounds.z1), + z2=math.min(df.global.world.map.z_count-1, bounds.z2), + } + + local limits = get_selection_size_limits() + if limits then + -- clamp to building type area limit + bounds = { + x1=math.max(selection_pos.x - (limits.w-1), bounds.x1), + x2=math.min(selection_pos.x + (limits.w-1), bounds.x2), + y1=math.max(selection_pos.y - (limits.h-1), bounds.y1), + y2=math.min(selection_pos.y + (limits.h-1), bounds.y2), + z1=bounds.z1, + z2=bounds.z2, + } + end + + return bounds +end + +local function get_cur_area_dims(bounds) + if not bounds and not is_choosing_area() then return 1, 1, 1 end + bounds = bounds or get_selected_bounds() + if not bounds then return 1, 1, 1 end + return bounds.x2 - bounds.x1 + 1, + bounds.y2 - bounds.y1 + 1, + bounds.z2 - bounds.z1 + 1 end local function is_pressure_plate() @@ -53,7 +108,7 @@ end -- adjusted from CycleHotkeyLabel on the planner panel local weapon_quantity = 1 -local function get_quantity(filter, hollow, placement_data) +local function get_quantity(filter, hollow, bounds) if is_pressure_plate() then local flags = uibs.plate_info.flags return (flags.units and 1 or 0) + (flags.water and 1 or 0) + @@ -62,7 +117,7 @@ local function get_quantity(filter, hollow, placement_data) return weapon_quantity end local quantity = filter.quantity or 1 - local dimx, dimy, dimz = get_cur_area_dims(placement_data) + local dimx, dimy, dimz = get_cur_area_dims(bounds) if quantity < 1 then return (((dimx * dimy) // 4) + 1) * dimz end @@ -519,19 +574,18 @@ function PlannerOverlay:clear_filter(idx) end local function get_placement_data() - local pos = uibs.pos local direction = uibs.direction - local width, height, depth = get_cur_area_dims() + local bounds = get_selected_bounds() + local width, height, depth = get_cur_area_dims(bounds) local _, adjusted_width, adjusted_height = dfhack.buildings.getCorrectSize( width, height, uibs.building_type, uibs.building_subtype, uibs.custom_type, direction) -- get the upper-left corner of the building/area at min z-level - local has_selection = is_choosing_area() - local start_pos = xyz2pos( - has_selection and math.min(uibs.selection_pos.x, pos.x) or pos.x - adjusted_width//2, - has_selection and math.min(uibs.selection_pos.y, pos.y) or pos.y - adjusted_height//2, - has_selection and math.min(uibs.selection_pos.z, pos.z) or pos.z - ) + local start_pos = bounds and xyz2pos(bounds.x1, bounds.y1, bounds.z1) or + xyz2pos( + uibs.pos.x - adjusted_width//2, + uibs.pos.y - adjusted_height//2, + uibs.pos.z) if uibs.building_type == df.building_type.ScrewPump then if direction == df.screw_pump_direction.FromSouth then start_pos.y = start_pos.y + 1 @@ -546,11 +600,11 @@ local function get_placement_data() and (width > 1 or height > 1 or depth > 1) then max_x = min_x + width - 1 max_y = min_y + height - 1 - max_z = math.max(uibs.selection_pos.z, pos.z) + max_z = math.max(uibs.selection_pos.z, uibs.pos.z) end return { - p1=xyz2pos(min_x, min_y, min_z), - p2=xyz2pos(max_x, max_y, max_z), + x1=min_x, y1=min_y, z1=min_z, + x2=max_x, y2=max_y, z2=max_z, width=adjusted_width, height=adjusted_height } @@ -564,10 +618,11 @@ function PlannerOverlay:save_placement() self.saved_pos = copyall(uibs.pos) uibs.selection_pos:clear() else - self.saved_selection_pos = copyall(self.saved_placement.p1) - self.saved_pos = copyall(self.saved_placement.p2) - self.saved_pos.x = self.saved_pos.x + self.saved_placement.width - 1 - self.saved_pos.y = self.saved_pos.y + self.saved_placement.height - 1 + local sp = self.saved_placement + self.saved_selection_pos = xyz2pos(sp.x1, sp.y1, sp.z1) + self.saved_pos = xyz2pos(sp.x2, sp.y2, sp.z2) + self.saved_pos.x = self.saved_pos.x + sp.width - 1 + self.saved_pos.y = self.saved_pos.y + sp.height - 1 end end @@ -624,6 +679,7 @@ function PlannerOverlay:onInput(keys) local num_filters = #filters local choose = self.subviews.choose if choose.enabled() and choose:getOptionValue() then + local bounds = get_selected_bounds() self:save_placement() local is_hollow = self.subviews.hollow:getOptionValue() local chosen_items, active_screens = {}, {} @@ -636,8 +692,7 @@ function PlannerOverlay:onInput(keys) active_screens[idx] = itemselection.ItemSelectionScreen{ index=idx, desc=require('plugins.buildingplan').get_desc(filter), - quantity=get_quantity(filter, is_hollow, - self.saved_placement), + quantity=get_quantity(filter, is_hollow, bounds), on_submit=function(items) chosen_items[idx] = items active_screens[idx]:dismiss() @@ -696,16 +751,8 @@ function PlannerOverlay:onRenderFrame(dc, rect) if self.minimized then return end - local selection_pos = self.saved_selection_pos or uibs.selection_pos - if not selection_pos or selection_pos.x < 0 then return end - - local pos = self.saved_pos or uibs.pos - local bounds = { - x1 = math.max(0, math.min(selection_pos.x, pos.x)), - x2 = math.min(df.global.world.map.x_count-1, math.max(selection_pos.x, pos.x)), - y1 = math.max(0, math.min(selection_pos.y, pos.y)), - y2 = math.min(df.global.world.map.y_count-1, math.max(selection_pos.y, pos.y)), - } + local bounds = get_selected_bounds(self.saved_selection_pos, self.saved_pos) + if not bounds then return end local hollow = self.subviews.hollow:getOptionValue() local default_pen = (self.saved_selection_pos or #uibs.errors == 0) and pens.GOOD_TILE_PEN or pens.BAD_TILE_PEN @@ -728,9 +775,9 @@ function PlannerOverlay:onRenderFrame(dc, rect) guidm.renderMapOverlay(get_overlay_pen, bounds) end -function PlannerOverlay:get_stairs_subtype(pos, corner1, corner2) +function PlannerOverlay:get_stairs_subtype(pos, bounds) local subtype = uibs.building_subtype - if pos.z == corner1.z then + if pos.z == bounds.z1 then local opt = self.subviews.stairs_bottom_subtype:getOptionValue() if opt == 'auto' then local tt = dfhack.maps.getTileType(pos) @@ -741,7 +788,7 @@ function PlannerOverlay:get_stairs_subtype(pos, corner1, corner2) else subtype = opt end - elseif pos.z == corner2.z then + elseif pos.z == bounds.z2 then local opt = self.subviews.stairs_top_subtype:getOptionValue() if opt == 'auto' then local tt = dfhack.maps.getTileType(pos) @@ -757,7 +804,7 @@ function PlannerOverlay:get_stairs_subtype(pos, corner1, corner2) end function PlannerOverlay:place_building(placement_data, chosen_items) - local p1, p2 = placement_data.p1, placement_data.p2 + local pd = placement_data local blds = {} local hollow = self.subviews.hollow:getOptionValue() local subtype = uibs.building_subtype @@ -767,17 +814,17 @@ function PlannerOverlay:place_building(placement_data, chosen_items) elseif is_weapon_trap() then filters[2].quantity = get_quantity(filters[2]) end - for z=p1.z,p2.z do for y=p1.y,p2.y do for x=p1.x,p2.x do - if hollow and x ~= p1.x and x ~= p2.x and y ~= p1.y and y ~= p2.y then + for z=pd.z1,pd.z2 do for y=pd.y1,pd.y2 do for x=pd.x1,pd.x2 do + if hollow and x ~= pd.x1 and x ~= pd.x2 and y ~= pd.y1 and y ~= pd.y2 then goto continue end local pos = xyz2pos(x, y, z) if is_stairs() then - subtype = self:get_stairs_subtype(pos, p1, p2) + subtype = self:get_stairs_subtype(pos, pd) end local bld, err = dfhack.buildings.constructBuilding{pos=pos, type=uibs.building_type, subtype=subtype, custom=uibs.custom_type, - width=placement_data.width, height=placement_data.height, + width=pd.width, height=pd.height, direction=uibs.direction, filters=filters} if err then -- it's ok if some buildings fail to build From c8f590cbacefad8121216041ec215a597effc082 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 24 Mar 2023 14:36:06 -0700 Subject: [PATCH 058/115] allow player to choose any item when choosing items manually that is, ignore the global and building-specific filters --- docs/changelog.txt | 1 + plugins/buildingplan/buildingplan.cpp | 23 +++++---- plugins/buildingplan/buildingplan.h | 2 +- plugins/buildingplan/plannedbuilding.cpp | 2 +- plugins/lua/buildingplan/planneroverlay.lua | 57 +++++++++------------ 5 files changed, 38 insertions(+), 47 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 88c6eac3b..11d849e9b 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -43,6 +43,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: - `tailor`: now properly discriminates between dyed and undyed cloth, no longer defaults to using adamantine, and properly tracks material requirements for already queued orders ## Misc Improvements +- `buildingplan`: filters and global settings are now ignored when manually choosing items for a building - `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 - `stockpiles`: additive and subtractive modes when applying a second stockpile configuration on top of a first diff --git a/plugins/buildingplan/buildingplan.cpp b/plugins/buildingplan/buildingplan.cpp index 1e2d2c80e..7f43f4a3c 100644 --- a/plugins/buildingplan/buildingplan.cpp +++ b/plugins/buildingplan/buildingplan.cpp @@ -424,7 +424,7 @@ static string getBucket(const df::job_item & ji, const PlannedBuilding & pb, int } // get a list of item vectors that we should search for matches -vector getVectorIds(color_ostream &out, const df::job_item *job_item) { +vector getVectorIds(color_ostream &out, const df::job_item *job_item, bool ignore_filters) { std::vector ret; // if the filter already has the vector_id set to something specific, use it @@ -440,13 +440,13 @@ vector getVectorIds(color_ostream &out, const df::job_it // which vectors to search if (job_item->flags2.bits.building_material) { - if (get_config_bool(config, CONFIG_BLOCKS)) + if (ignore_filters || get_config_bool(config, CONFIG_BLOCKS)) ret.push_back(df::job_item_vector_id::BLOCKS); - if (get_config_bool(config, CONFIG_BOULDERS)) + if (ignore_filters || get_config_bool(config, CONFIG_BOULDERS)) ret.push_back(df::job_item_vector_id::BOULDER); - if (get_config_bool(config, CONFIG_LOGS)) + if (ignore_filters || get_config_bool(config, CONFIG_LOGS)) ret.push_back(df::job_item_vector_id::WOOD); - if (get_config_bool(config, CONFIG_BARS)) + if (ignore_filters || get_config_bool(config, CONFIG_BARS)) ret.push_back(df::job_item_vector_id::BAR); } @@ -624,7 +624,7 @@ static void scheduleCycle(color_ostream &out) { } static int scanAvailableItems(color_ostream &out, df::building_type type, int16_t subtype, - int32_t custom, int index, vector *item_ids = NULL, + int32_t custom, int index, bool ignore_filters, vector *item_ids = NULL, map *counts = NULL) { DEBUG(status,out).print( "entering countAvailableItems building_type=%d subtype=%d custom=%d index=%d\n", @@ -639,7 +639,7 @@ static int scanAvailableItems(color_ostream &out, df::building_type type, int16_ auto &specials = item_filters.getSpecials(); auto &jitem = job_items[index]; - auto vector_ids = getVectorIds(out, jitem); + auto vector_ids = getVectorIds(out, jitem, ignore_filters); int count = 0; for (auto vector_id : vector_ids) { @@ -651,7 +651,8 @@ static int scanAvailableItems(color_ostream &out, df::building_type type, int16_ filter.setMaterialMask(0); filter.setMaterials(set()); } - if (itemPassesScreen(item) && matchesFilters(item, jitem, heat, filter, specials)) { + if (itemPassesScreen(item) && + (ignore_filters || matchesFilters(item, jitem, heat, filter, specials))) { if (item_ids) item_ids->emplace_back(item->id); if (counts) { @@ -680,7 +681,7 @@ static int getAvailableItems(lua_State *L) { "entering getAvailableItems building_type=%d subtype=%d custom=%d index=%d\n", type, subtype, custom, index); vector item_ids; - scanAvailableItems(*out, type, subtype, custom, index, &item_ids); + scanAvailableItems(*out, type, subtype, custom, index, true, &item_ids); Lua::PushVector(L, item_ids); return 1; } @@ -703,7 +704,7 @@ static int countAvailableItems(color_ostream &out, df::building_type type, int16 DEBUG(status,out).print( "entering countAvailableItems building_type=%d subtype=%d custom=%d index=%d\n", type, subtype, custom, index); - return scanAvailableItems(out, type, subtype, custom, index); + return scanAvailableItems(out, type, subtype, custom, index, false); } static bool hasFilter(color_ostream &out, df::building_type type, int16_t subtype, int32_t custom, int index) { @@ -871,7 +872,7 @@ static int getMaterialFilter(lua_State *L) { return 0; const auto &mat_filter = filters[index].getMaterials(); map counts; - scanAvailableItems(*out, type, subtype, custom, index, NULL, &counts); + scanAvailableItems(*out, type, subtype, custom, index, false, NULL, &counts); HeatSafety heat = get_heat_safety_filter(key); df::job_item jitem_cur_heat = getJobItemWithHeatSafety( get_job_items(*out, key)[index], heat); diff --git a/plugins/buildingplan/buildingplan.h b/plugins/buildingplan/buildingplan.h index 495602b0b..756a81f83 100644 --- a/plugins/buildingplan/buildingplan.h +++ b/plugins/buildingplan/buildingplan.h @@ -47,7 +47,7 @@ bool get_config_bool(DFHack::PersistentDataItem &c, int index); void set_config_val(DFHack::PersistentDataItem &c, int index, int value); void set_config_bool(DFHack::PersistentDataItem &c, int index, bool value); -std::vector getVectorIds(DFHack::color_ostream &out, const df::job_item *job_item); +std::vector getVectorIds(DFHack::color_ostream &out, const df::job_item *job_item, bool ignore_filters); bool itemPassesScreen(df::item * item); df::job_item getJobItemWithHeatSafety(const df::job_item *job_item, HeatSafety heat); bool matchesFilters(df::item * item, const df::job_item * job_item, HeatSafety heat, const ItemFilter &item_filter, const std::set &special); diff --git a/plugins/buildingplan/plannedbuilding.cpp b/plugins/buildingplan/plannedbuilding.cpp index 2be2cf26f..a20d7b29a 100644 --- a/plugins/buildingplan/plannedbuilding.cpp +++ b/plugins/buildingplan/plannedbuilding.cpp @@ -29,7 +29,7 @@ static vector> get_vector_ids(color_ostream &out, auto &jitems = bld->jobs[0]->job_items; int num_job_items = (int)jitems.size(); for (int jitem_idx = num_job_items - 1; jitem_idx >= 0; --jitem_idx) { - ret.emplace_back(getVectorIds(out, jitems[jitem_idx])); + ret.emplace_back(getVectorIds(out, jitems[jitem_idx], false)); } return ret; } diff --git a/plugins/lua/buildingplan/planneroverlay.lua b/plugins/lua/buildingplan/planneroverlay.lua index e92824f5f..7db3dc3a3 100644 --- a/plugins/lua/buildingplan/planneroverlay.lua +++ b/plugins/lua/buildingplan/planneroverlay.lua @@ -496,13 +496,6 @@ function PlannerOverlay:init() options={{label='Yes', value=true}, {label='No', value=false}}, initial_option=false, - enabled=function() - for idx = 1,4 do - if (self.subviews['item'..idx].available or 0) > 0 then - return true - end - end - end, on_change=function(choose) buildingplan.setChooseItems(uibs.building_type, uibs.building_subtype, uibs.custom_type, choose) end, @@ -678,7 +671,7 @@ function PlannerOverlay:onInput(keys) local filters = get_cur_filters() local num_filters = #filters local choose = self.subviews.choose - if choose.enabled() and choose:getOptionValue() then + if choose:getOptionValue() then local bounds = get_selected_bounds() self:save_placement() local is_hollow = self.subviews.hollow:getOptionValue() @@ -687,33 +680,29 @@ function PlannerOverlay:onInput(keys) df.global.game.main_interface.bottom_mode_selected = -1 for idx = num_filters,1,-1 do chosen_items[idx] = {} - if (self.subviews['item'..idx].available or 0) > 0 then - local filter = filters[idx] - active_screens[idx] = itemselection.ItemSelectionScreen{ - index=idx, - desc=require('plugins.buildingplan').get_desc(filter), - quantity=get_quantity(filter, is_hollow, bounds), - on_submit=function(items) - chosen_items[idx] = items - active_screens[idx]:dismiss() - active_screens[idx] = nil - pending = pending - 1 - if pending == 0 then - df.global.game.main_interface.bottom_mode_selected = df.main_bottom_mode_type.BUILDING_PLACEMENT - self:place_building(self:restore_placement(), chosen_items) - end - end, - on_cancel=function() - for i,scr in pairs(active_screens) do - scr:dismiss() - end + local filter = filters[idx] + active_screens[idx] = itemselection.ItemSelectionScreen{ + index=idx, + desc=require('plugins.buildingplan').get_desc(filter), + quantity=get_quantity(filter, is_hollow, bounds), + on_submit=function(items) + chosen_items[idx] = items + active_screens[idx]:dismiss() + active_screens[idx] = nil + pending = pending - 1 + if pending == 0 then df.global.game.main_interface.bottom_mode_selected = df.main_bottom_mode_type.BUILDING_PLACEMENT - self:restore_placement() - end, - }:show() - else - pending = pending - 1 - end + self:place_building(self:restore_placement(), chosen_items) + end + end, + on_cancel=function() + for i,scr in pairs(active_screens) do + scr:dismiss() + end + df.global.game.main_interface.bottom_mode_selected = df.main_bottom_mode_type.BUILDING_PLACEMENT + self:restore_placement() + end, + }:show() end else self:place_building(get_placement_data()) From fe0590503fa680426afe0d1e66f845e71a2de5b1 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 24 Mar 2023 15:05:17 -0700 Subject: [PATCH 059/115] mark tiles with magma or deep water as "not free" --- docs/changelog.txt | 1 + library/modules/Buildings.cpp | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 88c6eac3b..11e552abe 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -38,6 +38,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: ## Fixes - `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 - `buildingplan`: fixed material filter 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`: now properly discriminates between dyed and undyed cloth, no longer defaults to using adamantine, and properly tracks material requirements for already queued orders diff --git a/library/modules/Buildings.cpp b/library/modules/Buildings.cpp index 1d1ba9318..de87d3fb8 100644 --- a/library/modules/Buildings.cpp +++ b/library/modules/Buildings.cpp @@ -799,10 +799,13 @@ bool Buildings::checkFreeTiles(df::coord pos, df::coord2d size, if (!allow_occupied && block->occupancy[btile.x][btile.y].bits.building) allowed = false; - else + else if (!allow_wall) { - auto tile = block->tiletype[btile.x][btile.y]; - if (!allow_wall && !HighPassable(tile)) + auto &tt = block->tiletype[btile.x][btile.y]; + auto &des = block->designation[btile.x][btile.y]; + if (!HighPassable(tt) || + des.bits.flow_size > 1 || + (des.bits.flow_size >= 1 && des.bits.liquid_type == df::tile_liquid::Magma)) allowed = false; } From 58eaf33b085f11bcc32dc940f061e9debb014178 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 24 Mar 2023 15:26:17 -0700 Subject: [PATCH 060/115] normalize stairs so they all use the same filter --- docs/changelog.txt | 1 + plugins/buildingplan/buildingplan.cpp | 27 ++++++++++++++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 88c6eac3b..c550fbc8a 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -37,6 +37,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: - `prospector`: prospector tool in fort mode is now available. embark prospect is not yet available and is disabled at this time. ## Fixes +- `buildingplan`: filters are now properly applied to planned stairs - `buildingplan`: upright spike traps are now placed extended rather than retracted - `buildingplan`: fixed material filter 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) diff --git a/plugins/buildingplan/buildingplan.cpp b/plugins/buildingplan/buildingplan.cpp index 1e2d2c80e..fd77194e5 100644 --- a/plugins/buildingplan/buildingplan.cpp +++ b/plugins/buildingplan/buildingplan.cpp @@ -9,6 +9,7 @@ #include "modules/World.h" +#include "df/construction_type.h" #include "df/item.h" #include "df/job_item.h" #include "df/world.h" @@ -282,6 +283,18 @@ static void clear_state(color_ostream &out) { call_buildingplan_lua(&out, "reload_pens"); } +static int16_t get_subtype(df::building *bld) { + if (!bld) + return -1; + + int16_t subtype = bld->getSubtype(); + if (bld->getType() == df::building_type::Construction && + subtype >= df::construction_type::UpStair && + subtype <= df::construction_type::UpDownStair) + subtype = df::construction_type::UpDownStair; + return subtype; +} + DFhackCExport command_result plugin_load_data (color_ostream &out) { cycle_timestamp = 0; config = World::GetPersistentData(CONFIG_KEY); @@ -315,7 +328,7 @@ DFhackCExport command_result plugin_load_data (color_ostream &out) { pb.remove(out); continue; } - BuildingTypeKey key(bld->getType(), bld->getSubtype(), bld->getCustomType()); + BuildingTypeKey key(bld->getType(), get_subtype(bld), bld->getCustomType()); if (pb.item_filters.size() != get_item_filters(out, key).getItemFilters().size()) { WARN(status).print("loaded state for building %d doesn't match world\n", pb.id); pb.remove(out); @@ -604,11 +617,15 @@ static bool isPlannedBuilding(color_ostream &out, df::building *bld) { static bool addPlannedBuilding(color_ostream &out, df::building *bld) { DEBUG(status,out).print("entering addPlannedBuilding\n"); - if (!bld || planned_buildings.count(bld->id) - || !isPlannableBuilding(out, bld->getType(), bld->getSubtype(), - bld->getCustomType())) + if (!bld || planned_buildings.count(bld->id)) return false; - BuildingTypeKey key(bld->getType(), bld->getSubtype(), bld->getCustomType()); + + int16_t subtype = get_subtype(bld); + + if (!isPlannableBuilding(out, bld->getType(), subtype, bld->getCustomType())) + return false; + + BuildingTypeKey key(bld->getType(), subtype, bld->getCustomType()); PlannedBuilding pb(out, bld, get_heat_safety_filter(key), get_item_filters(out, key)); return registerPlannedBuilding(out, pb); } From a8822bdefa2268c55affe0e0d5e8fe5fc429e48d Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 24 Mar 2023 15:43:02 -0700 Subject: [PATCH 061/115] take carved stairs into account when auto building stairs --- docs/changelog.txt | 1 + plugins/lua/buildingplan/planneroverlay.lua | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index c550fbc8a..3e340cf94 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -38,6 +38,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: ## 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`: fixed material filter 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) diff --git a/plugins/lua/buildingplan/planneroverlay.lua b/plugins/lua/buildingplan/planneroverlay.lua index e92824f5f..8231a8f46 100644 --- a/plugins/lua/buildingplan/planneroverlay.lua +++ b/plugins/lua/buildingplan/planneroverlay.lua @@ -782,7 +782,7 @@ function PlannerOverlay:get_stairs_subtype(pos, bounds) if opt == 'auto' then local tt = dfhack.maps.getTileType(pos) local shape = df.tiletype.attrs[tt].shape - if shape ~= df.tiletype_shape.STAIR_DOWN then + if shape ~= df.tiletype_shape.STAIR_DOWN and shape ~= df.tiletype_shape.STAIR_UPDOWN then subtype = df.construction_type.UpStair end else @@ -793,7 +793,7 @@ function PlannerOverlay:get_stairs_subtype(pos, bounds) if opt == 'auto' then local tt = dfhack.maps.getTileType(pos) local shape = df.tiletype.attrs[tt].shape - if shape ~= df.tiletype_shape.STAIR_UP then + if shape ~= df.tiletype_shape.STAIR_UP and shape ~= df.tiletype_shape.STAIR_UPDOWN then subtype = df.construction_type.DownStair end else From d67d57af3dbac5c71f0e273bfa5827e359091933 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 24 Mar 2023 23:25:14 -0700 Subject: [PATCH 062/115] tombstone autounsuspend and add alias --- data/init/dfhack.tools.init | 1 + docs/about/Removed.rst | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/data/init/dfhack.tools.init b/data/init/dfhack.tools.init index 0ca764e8e..aaf0cf277 100644 --- a/data/init/dfhack.tools.init +++ b/data/init/dfhack.tools.init @@ -142,4 +142,5 @@ enable \ # Default Aliases # ################### +alias add autounsuspend suspendmanager alias add gui/dig gui/design diff --git a/docs/about/Removed.rst b/docs/about/Removed.rst index 4a8cdbccf..a0365e621 100644 --- a/docs/about/Removed.rst +++ b/docs/about/Removed.rst @@ -26,6 +26,12 @@ 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`. +.. _autounsuspend: + +autounsuspend +============= +Replaced by `suspendmanager`. + .. _combine-drinks: combine-drinks From 2bc92042a5b17266a4c425a14d8c73862949334b Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 24 Mar 2023 23:25:24 -0700 Subject: [PATCH 063/115] allow enable to interpret aliases --- docs/changelog.txt | 1 + library/Core.cpp | 13 ++++++++----- library/include/Core.h | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 11e552abe..7cb1fafcf 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -51,6 +51,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: - `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 +- `enable`: can now interpret aliases defined with the `alias` command ## Documentation diff --git a/library/Core.cpp b/library/Core.cpp index 01bc89480..d55959ceb 100644 --- a/library/Core.cpp +++ b/library/Core.cpp @@ -763,6 +763,8 @@ command_result Core::runCommand(color_ostream &con, const std::string &first_, s } } + part = GetAliasCommand(part, true); + Plugin * plug = (*plug_mgr)[part]; if(!plug) @@ -2657,13 +2659,14 @@ std::map> Core::ListAliases() return aliases; } -std::string Core::GetAliasCommand(const std::string &name, const std::string &default_) +std::string Core::GetAliasCommand(const std::string &name, bool ignore_params) { std::lock_guard lock(alias_mutex); - if (IsAlias(name)) - return join_strings(" ", aliases[name]); - else - return default_; + if (!IsAlias(name) || aliases[name].empty()) + return name; + if (ignore_params) + return aliases[name][0]; + return join_strings(" ", aliases[name]); } ///////////////// diff --git a/library/include/Core.h b/library/include/Core.h index 6c99e62be..8232708b5 100644 --- a/library/include/Core.h +++ b/library/include/Core.h @@ -173,7 +173,7 @@ namespace DFHack bool RunAlias(color_ostream &out, const std::string &name, const std::vector ¶meters, command_result &result); std::map> ListAliases(); - std::string GetAliasCommand(const std::string &name, const std::string &default_ = ""); + std::string GetAliasCommand(const std::string &name, bool ignore_params = false); std::string getHackPath(); From a1c2df23c52e7784536fa31e65a222e0c33be33c Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 24 Mar 2023 23:55:54 -0700 Subject: [PATCH 064/115] fix vscode lint warning --- library/lua/dfhack.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/lua/dfhack.lua b/library/lua/dfhack.lua index 2ee03dfed..51d6a0dfb 100644 --- a/library/lua/dfhack.lua +++ b/library/lua/dfhack.lua @@ -770,7 +770,7 @@ function dfhack.run_script_with_env(envVars, name, flags, ...) elseif ((type(v.required) == 'boolean' and v.required) or (type(v.required) == 'function' and v.required(flags))) then if not script_flags[flag] then - local msg = v.error or 'Flag "' .. flag .. '" not recognized' + local msg = v.error or ('Flag "' .. flag .. '" not recognized') error(name .. ': ' .. msg) end end From df286ab71e92f81ad54636b991045bfbaafeea5c Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Sat, 25 Mar 2023 10:18:06 -0500 Subject: [PATCH 065/115] reenable getplants --- docs/changelog.txt | 1 + plugins/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 11e552abe..bf833d19b 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -34,6 +34,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: # Future ## New Plugins +- `getplants`: getplants is now available - `prospector`: prospector tool in fort mode is now available. embark prospect is not yet available and is disabled at this time. ## Fixes diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 8fac3d467..fde94b711 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -119,7 +119,7 @@ dfhack_plugin(filltraffic filltraffic.cpp) #dfhack_plugin(follow follow.cpp) #dfhack_plugin(forceequip forceequip.cpp) #dfhack_plugin(generated-creature-renamer generated-creature-renamer.cpp) -#dfhack_plugin(getplants getplants.cpp) +dfhack_plugin(getplants getplants.cpp) dfhack_plugin(hotkeys hotkeys.cpp LINK_LIBRARIES lua) #dfhack_plugin(infiniteSky infiniteSky.cpp) #dfhack_plugin(isoworldremote isoworldremote.cpp PROTOBUFS isoworldremote) From 9f5e4eeda17630f8597f952f7c38a177621e21f3 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 24 Mar 2023 23:55:54 -0700 Subject: [PATCH 066/115] fix vscode lint warning --- library/lua/dfhack.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/lua/dfhack.lua b/library/lua/dfhack.lua index 2ee03dfed..51d6a0dfb 100644 --- a/library/lua/dfhack.lua +++ b/library/lua/dfhack.lua @@ -770,7 +770,7 @@ function dfhack.run_script_with_env(envVars, name, flags, ...) elseif ((type(v.required) == 'boolean' and v.required) or (type(v.required) == 'function' and v.required(flags))) then if not script_flags[flag] then - local msg = v.error or 'Flag "' .. flag .. '" not recognized' + local msg = v.error or ('Flag "' .. flag .. '" not recognized') error(name .. ': ' .. msg) end end From 1c25c9b80cd732c5f562f6029da7124d1e47affa Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Sat, 25 Mar 2023 12:25:45 -0500 Subject: [PATCH 067/115] autoclothing: support disable this also includes some minor refactorings: * some debug messages have been "tagged" so it's obvious they're from autoclothing * a serialized list of flag checks has been replaced with a maskcheck * partial lua api added, currently only supports enable/disable --- plugins/CMakeLists.txt | 2 +- plugins/autoclothing.cpp | 114 +++++++++++++++++++++++++++++---------- 2 files changed, 86 insertions(+), 30 deletions(-) diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 8fac3d467..047bd2269 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -77,7 +77,7 @@ set_source_files_properties( Brushes.h PROPERTIES HEADER_FILE_ONLY TRUE ) #dfhack_plugin(add-spatter add-spatter.cpp) dfhack_plugin(autobutcher autobutcher.cpp LINK_LIBRARIES lua) dfhack_plugin(autochop autochop.cpp LINK_LIBRARIES lua) -dfhack_plugin(autoclothing autoclothing.cpp) +dfhack_plugin(autoclothing autoclothing.cpp LINK_LIBRARIES lua) dfhack_plugin(autodump autodump.cpp) dfhack_plugin(autofarm autofarm.cpp) #dfhack_plugin(autogems autogems.cpp LINK_LIBRARIES jsoncpp_static) diff --git a/plugins/autoclothing.cpp b/plugins/autoclothing.cpp index fc8b1e43b..aa114cb84 100644 --- a/plugins/autoclothing.cpp +++ b/plugins/autoclothing.cpp @@ -61,7 +61,25 @@ namespace DFHack { } static const string CONFIG_KEY = string(plugin_name) + "/config"; +enum ConfigValues { + CONFIG_IS_ENABLED = 0, +}; +//static int get_config_val(PersistentDataItem& c, int index) { +// if (!c.isValid()) +// return -1; +// return c.ival(index); +//} +//static bool get_config_bool(PersistentDataItem& c, int index) { +// return get_config_val(c, index) == 1; +//} +static void set_config_val(PersistentDataItem& c, int index, int value) { + if (c.isValid()) + c.ival(index) = value; +} +static void set_config_bool(PersistentDataItem& c, int index, bool value) { + set_config_val(c, index, value ? 1 : 0); +} // Here go all the command declarations... // mostly to allow having the mandatory stuff on top of the file and commands on the bottom @@ -250,6 +268,29 @@ DFhackCExport command_result plugin_onstatechange(color_ostream &out, state_chan } +DFhackCExport command_result plugin_enable(color_ostream& out, bool enable) { + if (!Core::getInstance().isWorldLoaded()) { + out.printerr("Cannot enable %s without a loaded world.\n", plugin_name); + return CR_FAILURE; + } + + if (enable != autoclothing_enabled) { + auto enabled = World::GetPersistentData("autoclothing/enabled"); + autoclothing_enabled = enable; + DEBUG(report, out).print("%s from the API; persisting\n", + autoclothing_enabled ? "enabled" : "disabled"); + set_config_bool(enabled, CONFIG_IS_ENABLED, autoclothing_enabled); + if (enable) + do_autoclothing(); + } + else { + DEBUG(report, out).print("%s from the API, but already %s; no action\n", + autoclothing_enabled ? "enabled" : "disabled", + autoclothing_enabled ? "enabled" : "disabled"); + } + return CR_OK; +} + // Whatever you put here will be done in each game step. Don't abuse it. // It's optional, so you can just comment it out like this if you don't need it. @@ -389,6 +430,7 @@ command_result autoclothing(color_ostream &out, vector & parameters) if (parameters.size() == 0) { CoreSuspender suspend; + out << "Automatic clothing management is currently " << (autoclothing_enabled ? "enabled" : "disabled") << "." << endl; out << "Currently set " << clothingOrders.size() << " automatic clothing orders" << endl; for (size_t i = 0; i < clothingOrders.size(); i++) { @@ -523,7 +565,7 @@ static void find_needed_clothing_items() if (!item) { - WARN(cycle).print("Invalid inventory item ID: %d\n", ownedItem); + WARN(cycle).print("autoclothing: Invalid inventory item ID: %d\n", ownedItem); continue; } @@ -728,34 +770,28 @@ static void list_unit_counts(color_ostream& out, map& unitList) static bool isAvailableItem(df::item* item) { - if (item->flags.bits.in_job) - return false; - if (item->flags.bits.hostile) - return false; - if (item->flags.bits.in_building) - return false; - if (item->flags.bits.in_building) - return false; - if (item->flags.bits.encased) - return false; - if (item->flags.bits.foreign) - return false; - if (item->flags.bits.trader) - return false; - if (item->flags.bits.owned) - return false; - if (item->flags.bits.artifact) - return false; - if (item->flags.bits.forbid) - return false; - if (item->flags.bits.dump) - return false; - if (item->flags.bits.on_fire) - return false; - if (item->flags.bits.melt) - return false; - if (item->flags.bits.hidden) + static struct BadFlags { + uint32_t whole; + + BadFlags() { + df::item_flags flags; +#define F(x) flags.bits.x = true; + F(in_job); F(hostile); F(in_building); F(encased); + F(foreign); F(trader); F(owned); F(forbid); + F(dump); F(on_fire); F(melt); F(hidden); + + F(garbage_collect); F(rotten); F(construction); + F(in_chest); F(removed); F(spider_web); + + // F(artifact); -- TODO: should this be included? +#undef F + whole = flags.whole; + } + } badFlags; + + if ((item->flags.whole & badFlags.whole) != 0) return false; + if (item->getWear() > 1) return false; if (!item->isClothing()) @@ -782,7 +818,7 @@ static void generate_report(color_ostream& out) auto item = Items::findItemByID(itemId); if (!item) { - WARN(cycle,out).print("Invalid inventory item ID: %d\n", itemId); + WARN(cycle,out).print("autoclothing: Invalid inventory item ID: %d\n", itemId); continue; } if (item->getWear() >= 1) @@ -915,3 +951,23 @@ static void generate_report(color_ostream& out) } } + +///////////////////////////////////////////////////// +// Lua API +// TODO: implement Lua hooks to manipulate the persistent order configuration +// + +static void autoclothing_doCycle(color_ostream& out) { + DEBUG(report, out).print("entering autoclothing_doCycle\n"); + do_autoclothing(); +} + + +DFHACK_PLUGIN_LUA_FUNCTIONS{ + DFHACK_LUA_FUNCTION(autoclothing_doCycle), + DFHACK_LUA_END +}; + +DFHACK_PLUGIN_LUA_COMMANDS{ + DFHACK_LUA_END +}; From 2627820bfa3df3841d78e79f9895f166346d0041 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 24 Mar 2023 22:34:09 -0700 Subject: [PATCH 068/115] untested -> unavailable --- docs/Tags.rst | 2 +- docs/changelog.txt | 1 + docs/plugins/3dveins.rst | 2 +- docs/plugins/add-spatter.rst | 2 +- docs/plugins/autogems.rst | 2 +- docs/plugins/autotrade.rst | 2 +- docs/plugins/building-hacks.rst | 2 +- docs/plugins/burrows.rst | 2 +- docs/plugins/changeitem.rst | 2 +- docs/plugins/channel-safely.rst | 2 +- docs/plugins/createitem.rst | 2 +- docs/plugins/deramp.rst | 2 +- docs/plugins/digFlood.rst | 2 +- docs/plugins/diggingInvaders.rst | 2 +- docs/plugins/dwarfmonitor.rst | 2 +- docs/plugins/dwarfvet.rst | 2 +- docs/plugins/embark-assistant.rst | 2 +- docs/plugins/embark-tools.rst | 2 +- docs/plugins/fix-unit-occupancy.rst | 2 +- docs/plugins/fixveins.rst | 2 +- docs/plugins/flows.rst | 2 +- docs/plugins/follow.rst | 2 +- docs/plugins/forceequip.rst | 2 +- docs/plugins/generated-creature-renamer.rst | 2 +- docs/plugins/getplants.rst | 2 +- docs/plugins/infiniteSky.rst | 2 +- docs/plugins/isoworldremote.rst | 2 +- docs/plugins/jobutils.rst | 2 +- docs/plugins/labormanager.rst | 2 +- docs/plugins/lair.rst | 2 +- docs/plugins/luasocket.rst | 2 +- docs/plugins/manipulator.rst | 2 +- docs/plugins/map-render.rst | 2 +- docs/plugins/mode.rst | 2 +- docs/plugins/mousequery.rst | 2 +- docs/plugins/petcapRemover.rst | 2 +- docs/plugins/plants.rst | 2 +- docs/plugins/power-meter.rst | 2 +- docs/plugins/prospector.rst | 2 +- docs/plugins/rename.rst | 2 +- docs/plugins/rendermax.rst | 2 +- docs/plugins/search.rst | 2 +- docs/plugins/siege-engine.rst | 2 +- docs/plugins/sort.rst | 2 +- docs/plugins/spectate.rst | 2 +- docs/plugins/steam-engine.rst | 2 +- docs/plugins/stockflow.rst | 2 +- docs/plugins/stocks.rst | 2 +- docs/plugins/title-folder.rst | 2 +- docs/plugins/title-version.rst | 2 +- docs/plugins/trackstop.rst | 2 +- docs/plugins/tubefill.rst | 2 +- docs/plugins/tweak.rst | 2 +- docs/plugins/workNow.rst | 2 +- docs/plugins/workflow.rst | 2 +- docs/plugins/zone.rst | 2 +- library/lua/dfhack.lua | 2 +- 57 files changed, 57 insertions(+), 56 deletions(-) diff --git a/docs/Tags.rst b/docs/Tags.rst index 60a6a6813..5ff13d632 100644 --- a/docs/Tags.rst +++ b/docs/Tags.rst @@ -49,4 +49,4 @@ for the tag assignment spreadsheet. "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/changelog.txt b/docs/changelog.txt index 7cb1fafcf..032ca52ad 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -54,6 +54,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: - `enable`: can now interpret aliases defined with the `alias` command ## Documentation +- ``untested`` tag has been renamed to ``unavailable`` to better reflect the status of the remaining unavaialable tools. all 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. ## API diff --git a/docs/plugins/3dveins.rst b/docs/plugins/3dveins.rst index 1d7acd94f..3112934ab 100644 --- a/docs/plugins/3dveins.rst +++ b/docs/plugins/3dveins.rst @@ -3,7 +3,7 @@ .. dfhack-tool:: :summary: Rewrite layer veins to expand in 3D space. - :tags: untested fort gameplay map + :tags: unavailable fort gameplay map Existing, flat veins are removed and new 3D veins that naturally span z-levels are generated in their place. The transformation preserves the mineral counts diff --git a/docs/plugins/add-spatter.rst b/docs/plugins/add-spatter.rst index fc3c507c2..6914690ea 100644 --- a/docs/plugins/add-spatter.rst +++ b/docs/plugins/add-spatter.rst @@ -3,7 +3,7 @@ add-spatter .. dfhack-tool:: :summary: Make tagged reactions produce contaminants. - :tags: untested adventure fort gameplay items + :tags: unavailable adventure fort gameplay items :no-command: Give some use to all those poisons that can be bought from caravans! The plugin diff --git a/docs/plugins/autogems.rst b/docs/plugins/autogems.rst index f18b671a1..6135b39d2 100644 --- a/docs/plugins/autogems.rst +++ b/docs/plugins/autogems.rst @@ -3,7 +3,7 @@ autogems .. dfhack-tool:: :summary: Automatically cut rough gems. - :tags: untested fort auto workorders + :tags: unavailable fort auto workorders :no-command: .. dfhack-command:: autogems-reload diff --git a/docs/plugins/autotrade.rst b/docs/plugins/autotrade.rst index 439eead40..24c1b42fa 100644 --- a/docs/plugins/autotrade.rst +++ b/docs/plugins/autotrade.rst @@ -3,7 +3,7 @@ autotrade .. dfhack-tool:: :summary: Quickly designate items to be traded. - :tags: untested fort productivity items stockpiles + :tags: unavailable fort productivity items stockpiles :no-command: When `enabled `, this plugin adds an option to the :kbd:`q` menu for diff --git a/docs/plugins/building-hacks.rst b/docs/plugins/building-hacks.rst index cce3479d8..b45b23be4 100644 --- a/docs/plugins/building-hacks.rst +++ b/docs/plugins/building-hacks.rst @@ -3,7 +3,7 @@ building-hacks .. dfhack-tool:: :summary: Provides a Lua API for creating powered workshops. - :tags: untested fort gameplay buildings + :tags: unavailable fort gameplay buildings :no-command: See `building-hacks-api` for more details. diff --git a/docs/plugins/burrows.rst b/docs/plugins/burrows.rst index 54812ece5..299656cf5 100644 --- a/docs/plugins/burrows.rst +++ b/docs/plugins/burrows.rst @@ -3,7 +3,7 @@ burrows .. dfhack-tool:: :summary: Auto-expand burrows as you dig. - :tags: untested fort auto design productivity map units + :tags: unavailable fort auto design productivity map units :no-command: .. dfhack-command:: burrow diff --git a/docs/plugins/changeitem.rst b/docs/plugins/changeitem.rst index fe9229a09..788b49247 100644 --- a/docs/plugins/changeitem.rst +++ b/docs/plugins/changeitem.rst @@ -3,7 +3,7 @@ changeitem .. dfhack-tool:: :summary: Change item material or base quality. - :tags: untested adventure fort armok items + :tags: unavailable adventure fort armok items By default, a change is only allowed if the existing and desired item materials are of the same subtype (for example wood -> wood, stone -> stone, etc). But diff --git a/docs/plugins/channel-safely.rst b/docs/plugins/channel-safely.rst index 3acbe66cd..c24f352b0 100644 --- a/docs/plugins/channel-safely.rst +++ b/docs/plugins/channel-safely.rst @@ -3,7 +3,7 @@ channel-safely .. dfhack-tool:: :summary: Auto-manage channel designations to keep dwarves safe. - :tags: untested fort auto + :tags: unavailable fort auto Multi-level channel projects can be dangerous, and managing the safety of your dwarves throughout the completion of such projects can be difficult and time diff --git a/docs/plugins/createitem.rst b/docs/plugins/createitem.rst index 7abe06cff..b287042c7 100644 --- a/docs/plugins/createitem.rst +++ b/docs/plugins/createitem.rst @@ -3,7 +3,7 @@ createitem .. dfhack-tool:: :summary: Create arbitrary items. - :tags: untested adventure fort armok items + :tags: unavailable adventure fort armok items You can create new items of any type and made of any material. A unit must be selected in-game to use this command. By default, items created are spawned at diff --git a/docs/plugins/deramp.rst b/docs/plugins/deramp.rst index 641f370a6..4a1f34548 100644 --- a/docs/plugins/deramp.rst +++ b/docs/plugins/deramp.rst @@ -3,7 +3,7 @@ deramp .. dfhack-tool:: :summary: Removes all ramps designated for removal from the map. - :tags: untested fort armok map + :tags: unavailable fort armok map It also removes any "floating" down ramps that can remain after a cave-in. diff --git a/docs/plugins/digFlood.rst b/docs/plugins/digFlood.rst index 70dd9b388..ee502371a 100644 --- a/docs/plugins/digFlood.rst +++ b/docs/plugins/digFlood.rst @@ -3,7 +3,7 @@ digFlood .. dfhack-tool:: :summary: Digs out veins as they are discovered. - :tags: untested fort auto map + :tags: unavailable fort auto map Once you register specific vein types, this tool will automatically designate tiles of those types of veins for digging as your miners complete adjacent diff --git a/docs/plugins/diggingInvaders.rst b/docs/plugins/diggingInvaders.rst index 4ea52013e..001636709 100644 --- a/docs/plugins/diggingInvaders.rst +++ b/docs/plugins/diggingInvaders.rst @@ -3,7 +3,7 @@ diggingInvaders .. dfhack-tool:: :summary: Invaders dig and destroy to get to your dwarves. - :tags: untested fort gameplay military units + :tags: unavailable fort gameplay military units Usage ----- diff --git a/docs/plugins/dwarfmonitor.rst b/docs/plugins/dwarfmonitor.rst index 47d49d1e0..45a5d8f85 100644 --- a/docs/plugins/dwarfmonitor.rst +++ b/docs/plugins/dwarfmonitor.rst @@ -3,7 +3,7 @@ dwarfmonitor .. dfhack-tool:: :summary: Report on dwarf preferences and efficiency. - :tags: untested fort inspection jobs units + :tags: unavailable fort inspection jobs units It can also show heads-up display widgets with live fort statistics. diff --git a/docs/plugins/dwarfvet.rst b/docs/plugins/dwarfvet.rst index 7480c10a6..b4dfe0ada 100644 --- a/docs/plugins/dwarfvet.rst +++ b/docs/plugins/dwarfvet.rst @@ -3,7 +3,7 @@ dwarfvet .. dfhack-tool:: :summary: Allows animals to be treated at animal hospitals. - :tags: untested fort gameplay animals + :tags: unavailable fort gameplay animals Annoyed that your dragons become useless after a minor injury? Well, with dwarfvet, injured animals will be treated at an animal hospital, which is simply diff --git a/docs/plugins/embark-assistant.rst b/docs/plugins/embark-assistant.rst index bb74f221d..282d4b122 100644 --- a/docs/plugins/embark-assistant.rst +++ b/docs/plugins/embark-assistant.rst @@ -3,7 +3,7 @@ embark-assistant .. dfhack-tool:: :summary: Embark site selection support. - :tags: untested embark fort interface + :tags: unavailable embark fort interface Run this command while the pre-embark screen is displayed to show extended (and reasonably correct) resource information for the embark rectangle as well as diff --git a/docs/plugins/embark-tools.rst b/docs/plugins/embark-tools.rst index 6a600019b..f320706ff 100644 --- a/docs/plugins/embark-tools.rst +++ b/docs/plugins/embark-tools.rst @@ -3,7 +3,7 @@ embark-tools .. dfhack-tool:: :summary: Extend the embark screen functionality. - :tags: untested embark fort interface + Usage ----- diff --git a/docs/plugins/fix-unit-occupancy.rst b/docs/plugins/fix-unit-occupancy.rst index 8589f765a..6ba01b712 100644 --- a/docs/plugins/fix-unit-occupancy.rst +++ b/docs/plugins/fix-unit-occupancy.rst @@ -3,7 +3,7 @@ fix-unit-occupancy .. dfhack-tool:: :summary: Fix phantom unit occupancy issues. - :tags: untested fort bugfix map + :tags: unavailable fort bugfix map If you see "unit blocking tile" messages that you can't account for (:bug:`3499`), this tool can help. diff --git a/docs/plugins/fixveins.rst b/docs/plugins/fixveins.rst index c13bbe9a1..552c5f8c3 100644 --- a/docs/plugins/fixveins.rst +++ b/docs/plugins/fixveins.rst @@ -3,7 +3,7 @@ fixveins .. dfhack-tool:: :summary: Restore missing mineral inclusions. - :tags: untested fort bugfix map + :tags: unavailable fort bugfix map This tool can also remove invalid references to mineral inclusions if you broke your embark with tools like `tiletypes`. diff --git a/docs/plugins/flows.rst b/docs/plugins/flows.rst index 209bb577c..56840d999 100644 --- a/docs/plugins/flows.rst +++ b/docs/plugins/flows.rst @@ -3,7 +3,7 @@ flows .. dfhack-tool:: :summary: Counts map blocks with flowing liquids. - :tags: untested fort inspection map + :tags: unavailable fort inspection map If you suspect that your magma sea leaks into HFS, you can use this tool to be sure without revealing the map. diff --git a/docs/plugins/follow.rst b/docs/plugins/follow.rst index 47db40bd8..e72f79ce0 100644 --- a/docs/plugins/follow.rst +++ b/docs/plugins/follow.rst @@ -3,7 +3,7 @@ follow .. dfhack-tool:: :summary: Make the screen follow the selected unit. - :tags: untested fort interface units + :tags: unavailable fort interface units Once you exit from the current menu or cursor mode, the screen will stay centered on the unit. Handy for watching dwarves running around. Deactivated by diff --git a/docs/plugins/forceequip.rst b/docs/plugins/forceequip.rst index d4c9a6c4a..2565d12c3 100644 --- a/docs/plugins/forceequip.rst +++ b/docs/plugins/forceequip.rst @@ -3,7 +3,7 @@ forceequip .. dfhack-tool:: :summary: Move items into a unit's inventory. - :tags: untested adventure fort animals items military units + :tags: unavailable adventure fort animals items military units This tool is typically used to equip specific clothing/armor items onto a dwarf, but can also be used to put armor onto a war animal or to add unusual items diff --git a/docs/plugins/generated-creature-renamer.rst b/docs/plugins/generated-creature-renamer.rst index ba1761a1b..ea386eacf 100644 --- a/docs/plugins/generated-creature-renamer.rst +++ b/docs/plugins/generated-creature-renamer.rst @@ -3,7 +3,7 @@ generated-creature-renamer .. dfhack-tool:: :summary: Automatically renames generated creatures. - :tags: untested adventure fort legends units + :tags: unavailable adventure fort legends units :no-command: .. dfhack-command:: list-generated diff --git a/docs/plugins/getplants.rst b/docs/plugins/getplants.rst index 756fa1aaa..0a59f2492 100644 --- a/docs/plugins/getplants.rst +++ b/docs/plugins/getplants.rst @@ -3,7 +3,7 @@ getplants .. dfhack-tool:: :summary: Designate trees for chopping and shrubs for gathering. - :tags: untested fort productivity plants + :tags: unavailable fort productivity plants Specify the types of trees to cut down and/or shrubs to gather by their plant names. diff --git a/docs/plugins/infiniteSky.rst b/docs/plugins/infiniteSky.rst index 7e8ec2f31..789709c9f 100644 --- a/docs/plugins/infiniteSky.rst +++ b/docs/plugins/infiniteSky.rst @@ -3,7 +3,7 @@ infiniteSky .. dfhack-tool:: :summary: Automatically allocate new z-levels of sky - :tags: untested fort auto design map + :tags: unavailable fort auto design map If enabled, this plugin will automatically allocate new z-levels of sky at the top of the map as you build up. Or it can allocate one or many additional levels diff --git a/docs/plugins/isoworldremote.rst b/docs/plugins/isoworldremote.rst index 2442f70ef..b792cb649 100644 --- a/docs/plugins/isoworldremote.rst +++ b/docs/plugins/isoworldremote.rst @@ -3,7 +3,7 @@ isoworldremote .. dfhack-tool:: :summary: Provides a remote API used by Isoworld. - :tags: untested dev graphics + :tags: unavailable dev graphics :no-command: See `remote` for related remote APIs. diff --git a/docs/plugins/jobutils.rst b/docs/plugins/jobutils.rst index f68c200b2..674c6897a 100644 --- a/docs/plugins/jobutils.rst +++ b/docs/plugins/jobutils.rst @@ -5,7 +5,7 @@ jobutils .. dfhack-tool:: :summary: Provides commands for interacting with jobs. - :tags: untested fort inspection jobs + :tags: unavailable fort inspection jobs :no-command: .. dfhack-command:: job diff --git a/docs/plugins/labormanager.rst b/docs/plugins/labormanager.rst index f808fcb59..731f706b8 100644 --- a/docs/plugins/labormanager.rst +++ b/docs/plugins/labormanager.rst @@ -3,7 +3,7 @@ labormanager .. dfhack-tool:: :summary: Automatically manage dwarf labors. - :tags: untested fort auto labors + :tags: unavailable fort auto labors Labormanager is derived from `autolabor` but uses a completely different approach to assigning jobs to dwarves. While autolabor tries to keep as many diff --git a/docs/plugins/lair.rst b/docs/plugins/lair.rst index 77ad0a045..82c5e211c 100644 --- a/docs/plugins/lair.rst +++ b/docs/plugins/lair.rst @@ -3,7 +3,7 @@ lair .. dfhack-tool:: :summary: Mark the map as a monster lair. - :tags: untested fort armok map + :tags: unavailable fort armok map This avoids item scatter when the fortress is abandoned. diff --git a/docs/plugins/luasocket.rst b/docs/plugins/luasocket.rst index 69f566e24..1aa320ed7 100644 --- a/docs/plugins/luasocket.rst +++ b/docs/plugins/luasocket.rst @@ -3,7 +3,7 @@ luasocket .. dfhack-tool:: :summary: Provides a Lua API for accessing network sockets. - :tags: untested dev + :tags: unavailable dev :no-command: See `luasocket-api` for details. diff --git a/docs/plugins/manipulator.rst b/docs/plugins/manipulator.rst index b4c0d6160..734800e77 100644 --- a/docs/plugins/manipulator.rst +++ b/docs/plugins/manipulator.rst @@ -3,7 +3,7 @@ manipulator .. dfhack-tool:: :summary: An in-game labor management interface. - :tags: untested fort productivity labors + :tags: unavailable fort productivity labors :no-command: It is equivalent to the popular Dwarf Therapist utility. diff --git a/docs/plugins/map-render.rst b/docs/plugins/map-render.rst index bbd01aa97..4f3c6ba72 100644 --- a/docs/plugins/map-render.rst +++ b/docs/plugins/map-render.rst @@ -3,7 +3,7 @@ map-render .. dfhack-tool:: :summary: Provides a Lua API for re-rendering portions of the map. - :tags: untested dev graphics + :tags: unavailable dev graphics :no-command: See `map-render-api` for details. diff --git a/docs/plugins/mode.rst b/docs/plugins/mode.rst index 42c7f6fcc..061e3a548 100644 --- a/docs/plugins/mode.rst +++ b/docs/plugins/mode.rst @@ -3,7 +3,7 @@ mode .. dfhack-tool:: :summary: See and change the game mode. - :tags: untested armok dev gameplay + :tags: unavailable armok dev gameplay .. warning:: diff --git a/docs/plugins/mousequery.rst b/docs/plugins/mousequery.rst index 0e49d3924..bff110f0e 100644 --- a/docs/plugins/mousequery.rst +++ b/docs/plugins/mousequery.rst @@ -3,7 +3,7 @@ mousequery .. dfhack-tool:: :summary: Adds mouse controls to the DF interface. - :tags: untested fort productivity interface + :tags: unavailable fort productivity interface Adds mouse controls to the DF interface. For example, with ``mousequery`` you can click on buildings to configure them, hold the mouse button to draw dig diff --git a/docs/plugins/petcapRemover.rst b/docs/plugins/petcapRemover.rst index 798e39f32..4f6ea4160 100644 --- a/docs/plugins/petcapRemover.rst +++ b/docs/plugins/petcapRemover.rst @@ -3,7 +3,7 @@ petcapRemover .. dfhack-tool:: :summary: Modify the pet population cap. - :tags: untested fort auto animals + :tags: unavailable fort auto animals In vanilla DF, pets will not reproduce unless the population is below 50 and the number of children of that species is below a certain percentage. This plugin diff --git a/docs/plugins/plants.rst b/docs/plugins/plants.rst index cdcc0daac..281b295cf 100644 --- a/docs/plugins/plants.rst +++ b/docs/plugins/plants.rst @@ -5,7 +5,7 @@ plants .. dfhack-tool:: :summary: Provides commands that interact with plants. - :tags: untested adventure fort armok map plants + :tags: unavailable adventure fort armok map plants :no-command: .. dfhack-command:: plant diff --git a/docs/plugins/power-meter.rst b/docs/plugins/power-meter.rst index 8ffc79e3e..f3a76c60a 100644 --- a/docs/plugins/power-meter.rst +++ b/docs/plugins/power-meter.rst @@ -3,7 +3,7 @@ power-meter .. dfhack-tool:: :summary: Allow pressure plates to measure power. - :tags: untested fort gameplay buildings + :tags: unavailable fort gameplay buildings :no-command: If you run `gui/power-meter` while building a pressure plate, the pressure diff --git a/docs/plugins/prospector.rst b/docs/plugins/prospector.rst index 3fb47cc57..4628d11c8 100644 --- a/docs/plugins/prospector.rst +++ b/docs/plugins/prospector.rst @@ -5,7 +5,7 @@ prospector .. dfhack-tool:: :summary: Provides commands that help you analyze natural resources. - :tags: untested embark fort armok inspection map + :tags: embark fort armok inspection map :no-command: .. dfhack-command:: prospect diff --git a/docs/plugins/rename.rst b/docs/plugins/rename.rst index 3c6ed4a77..903a1a1d4 100644 --- a/docs/plugins/rename.rst +++ b/docs/plugins/rename.rst @@ -3,7 +3,7 @@ rename .. dfhack-tool:: :summary: Easily rename things. - :tags: untested adventure fort productivity buildings stockpiles units + :tags: unavailable adventure fort productivity buildings stockpiles units Use `gui/rename` for an in-game interface. diff --git a/docs/plugins/rendermax.rst b/docs/plugins/rendermax.rst index 370771d6b..91faa6f5c 100644 --- a/docs/plugins/rendermax.rst +++ b/docs/plugins/rendermax.rst @@ -3,7 +3,7 @@ rendermax .. dfhack-tool:: :summary: Modify the map lighting. - :tags: untested adventure fort gameplay graphics + :tags: unavailable adventure fort gameplay graphics This plugin provides a collection of OpenGL lighting filters that affect how the map is drawn to the screen. diff --git a/docs/plugins/search.rst b/docs/plugins/search.rst index 8e1a93143..c1493f992 100644 --- a/docs/plugins/search.rst +++ b/docs/plugins/search.rst @@ -5,7 +5,7 @@ search .. dfhack-tool:: :summary: Adds search capabilities to the UI. - :tags: untested fort productivity interface + :tags: unavailable fort productivity interface :no-command: Search options are added to the Stocks, Animals, Trading, Stockpile, Noble diff --git a/docs/plugins/siege-engine.rst b/docs/plugins/siege-engine.rst index fa18dcd48..57693fa11 100644 --- a/docs/plugins/siege-engine.rst +++ b/docs/plugins/siege-engine.rst @@ -3,7 +3,7 @@ siege-engine .. dfhack-tool:: :summary: Extend the functionality and usability of siege engines. - :tags: untested fort gameplay buildings + :tags: unavailable fort gameplay buildings :no-command: Siege engines in DF haven't been updated since the game was 2D, and can only aim diff --git a/docs/plugins/sort.rst b/docs/plugins/sort.rst index 3a8c7c0f5..067e188fd 100644 --- a/docs/plugins/sort.rst +++ b/docs/plugins/sort.rst @@ -3,7 +3,7 @@ sort .. dfhack-tool:: :summary: Sort lists shown in the DF interface. - :tags: untested fort productivity interface + :tags: unavailable fort productivity interface :no-command: .. dfhack-command:: sort-items diff --git a/docs/plugins/spectate.rst b/docs/plugins/spectate.rst index 448369cd8..95ce852ae 100644 --- a/docs/plugins/spectate.rst +++ b/docs/plugins/spectate.rst @@ -3,7 +3,7 @@ spectate .. dfhack-tool:: :summary: Automatically follow productive dwarves. - :tags: untested fort interface + :tags: unavailable fort interface Usage ----- diff --git a/docs/plugins/steam-engine.rst b/docs/plugins/steam-engine.rst index 11d0145f3..532b311d0 100644 --- a/docs/plugins/steam-engine.rst +++ b/docs/plugins/steam-engine.rst @@ -3,7 +3,7 @@ steam-engine .. dfhack-tool:: :summary: Allow modded steam engine buildings to function. - :tags: untested fort gameplay buildings + :tags: unavailable fort gameplay buildings :no-command: The steam-engine plugin detects custom workshops with the string diff --git a/docs/plugins/stockflow.rst b/docs/plugins/stockflow.rst index f501fc904..29b7838fc 100644 --- a/docs/plugins/stockflow.rst +++ b/docs/plugins/stockflow.rst @@ -3,7 +3,7 @@ stockflow .. dfhack-tool:: :summary: Queue manager jobs based on free space in stockpiles. - :tags: untested fort auto stockpiles workorders + :tags: unavailable fort auto stockpiles workorders With this plugin, the fortress bookkeeper can tally up free space in specific stockpiles and queue jobs through the manager to produce items to fill the free diff --git a/docs/plugins/stocks.rst b/docs/plugins/stocks.rst index c924b748c..f8db4ee67 100644 --- a/docs/plugins/stocks.rst +++ b/docs/plugins/stocks.rst @@ -3,7 +3,7 @@ stocks .. dfhack-tool:: :summary: Enhanced fortress stock management interface. - :tags: untested fort productivity items + :tags: unavailable fort productivity items When the plugin is enabled, two new hotkeys become available: diff --git a/docs/plugins/title-folder.rst b/docs/plugins/title-folder.rst index 32818071b..ee4068547 100644 --- a/docs/plugins/title-folder.rst +++ b/docs/plugins/title-folder.rst @@ -3,7 +3,7 @@ title-folder .. dfhack-tool:: :summary: Displays the DF folder name in the window title bar. - :tags: untested interface + :tags: unavailable interface :no-command: Usage diff --git a/docs/plugins/title-version.rst b/docs/plugins/title-version.rst index 18c7c3ba8..4d0ef0c0b 100644 --- a/docs/plugins/title-version.rst +++ b/docs/plugins/title-version.rst @@ -3,7 +3,7 @@ title-version .. dfhack-tool:: :summary: Displays the DFHack version on DF's title screen. - :tags: untested interface + :tags: unavailable interface :no-command: Usage diff --git a/docs/plugins/trackstop.rst b/docs/plugins/trackstop.rst index 6ae23dcd0..041bcac2c 100644 --- a/docs/plugins/trackstop.rst +++ b/docs/plugins/trackstop.rst @@ -3,7 +3,7 @@ trackstop .. dfhack-tool:: :summary: Add dynamic configuration options for track stops. - :tags: untested fort gameplay buildings + :tags: unavailable fort gameplay buildings :no-command: When enabled, this plugin adds a :kbd:`q` menu for track stops, which is diff --git a/docs/plugins/tubefill.rst b/docs/plugins/tubefill.rst index eb568ef03..a8684c765 100644 --- a/docs/plugins/tubefill.rst +++ b/docs/plugins/tubefill.rst @@ -3,7 +3,7 @@ tubefill .. dfhack-tool:: :summary: Replenishes mined-out adamantine. - :tags: untested fort armok map + :tags: unavailable fort armok map Veins that were originally hollow will be left alone. diff --git a/docs/plugins/tweak.rst b/docs/plugins/tweak.rst index dc5ed19a8..f9467e333 100644 --- a/docs/plugins/tweak.rst +++ b/docs/plugins/tweak.rst @@ -3,7 +3,7 @@ tweak .. dfhack-tool:: :summary: A collection of tweaks and bugfixes. - :tags: untested adventure fort armok bugfix fps interface + :tags: unavailable adventure fort armok bugfix fps interface Usage ----- diff --git a/docs/plugins/workNow.rst b/docs/plugins/workNow.rst index 66bc822ae..cec39c667 100644 --- a/docs/plugins/workNow.rst +++ b/docs/plugins/workNow.rst @@ -3,7 +3,7 @@ workNow .. dfhack-tool:: :summary: Reduce the time that dwarves idle after completing a job. - :tags: untested fort auto labors + :tags: unavailable fort auto labors After finishing a job, dwarves will wander away for a while before picking up a new job. This plugin will automatically poke the game to assign dwarves to new diff --git a/docs/plugins/workflow.rst b/docs/plugins/workflow.rst index 72b7a8e2b..c95054c0e 100644 --- a/docs/plugins/workflow.rst +++ b/docs/plugins/workflow.rst @@ -3,7 +3,7 @@ workflow .. dfhack-tool:: :summary: Manage automated item production rules. - :tags: untested fort auto jobs + :tags: unavailable fort auto jobs Manage repeat jobs according to stock levels. `gui/workflow` provides a simple front-end integrated in the game UI. diff --git a/docs/plugins/zone.rst b/docs/plugins/zone.rst index 9d9991dde..af6ee2b5f 100644 --- a/docs/plugins/zone.rst +++ b/docs/plugins/zone.rst @@ -3,7 +3,7 @@ zone .. dfhack-tool:: :summary: Manage activity zones, cages, and the animals therein. - :tags: untested fort productivity animals buildings + :tags: unavailable fort productivity animals buildings Usage ----- diff --git a/library/lua/dfhack.lua b/library/lua/dfhack.lua index 51d6a0dfb..aa33b62d6 100644 --- a/library/lua/dfhack.lua +++ b/library/lua/dfhack.lua @@ -702,7 +702,7 @@ local warned_scripts = {} function dfhack.run_script(name,...) if not warned_scripts[name] then local helpdb = require('helpdb') - if helpdb.is_entry(name) and helpdb.get_entry_tags(name).untested then + if helpdb.is_entry(name) and helpdb.get_entry_tags(name).unavailable then warned_scripts[name] = true dfhack.printerr(('UNTESTED WARNING: the "%s" script has not been validated to work well with this version of DF.'):format(name)) dfhack.printerr('It may not work as expected, or it may corrupt your game.') From 5cfa968b38f9f0834a7b7a127ef70f183fdbadf3 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sat, 25 Mar 2023 12:35:16 -0700 Subject: [PATCH 069/115] update scripts ref --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 0b37dcf99..f637dc4bf 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 0b37dcf996bf4b64423d2acb3e3ca224ad76c6bc +Subproject commit f637dc4bf18a7ca4968f45e79790893c6d22c3f5 From c8c004067803e74f9508e58d0e3c51eeb93bdd6e Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Sat, 25 Mar 2023 14:56:04 -0500 Subject: [PATCH 070/115] tailor: add inventory sanity check debug mode enable with "tailor debugging on" disable with "tailor debugging off" this setting is not persisted --- plugins/lua/tailor.lua | 7 +++++ plugins/tailor.cpp | 58 ++++++++++++++++++++++++++++++++++++------ 2 files changed, 57 insertions(+), 8 deletions(-) diff --git a/plugins/lua/tailor.lua b/plugins/lua/tailor.lua index e9a88bfe1..46b3526d9 100644 --- a/plugins/lua/tailor.lua +++ b/plugins/lua/tailor.lua @@ -32,6 +32,11 @@ function setMaterials(names) idxs.adamantine or -1) end +function setDebugMode(opt) + local fl = (opt[1] == "true" or opt[1] == "on") + tailor_setDebugFlag(fl) +end + function parse_commandline(...) local args, opts = {...}, {} local positionals = process_args(opts, args) @@ -47,6 +52,8 @@ function parse_commandline(...) tailor_doCycle() elseif command == 'materials' then setMaterials(positionals) + elseif command == 'debugging' then + setDebugMode(positionals) else return false end diff --git a/plugins/tailor.cpp b/plugins/tailor.cpp index 2c5a1a027..3ba6744bb 100644 --- a/plugins/tailor.cpp +++ b/plugins/tailor.cpp @@ -157,7 +157,14 @@ private: int default_reserve = 10; + bool inventory_sanity_checking = false; + public: + void set_debug_flag(bool f) + { + inventory_sanity_checking = f; + } + void reset() { available.clear(); @@ -170,16 +177,42 @@ public: void scan_clothing() { - for (auto i : world->items.other[df::items_other_id::ANY_GENERIC37]) // GENERIC37 is "clothing" + if (!inventory_sanity_checking) { - if (i->flags.whole & badFlags.whole) - continue; - if (i->getWear() >= 1) - continue; - df::item_type t = i->getType(); - int size = world->raws.creatures.all[i->getMakerRace()]->adultsize; + for (auto i : world->items.other[df::items_other_id::ANY_GENERIC37]) // GENERIC37 is "clothing" + { + if (i->flags.whole & badFlags.whole) + continue; + if (i->getWear() >= 1) + continue; + df::item_type t = i->getType(); + int size = world->raws.creatures.all[i->getMakerRace()]->adultsize; + + available[std::make_pair(t, size)] += 1; + } + } + else + { + auto& l = world->items.other[df::items_other_id::ANY_GENERIC37]; + + for (auto i : world->items.other[df::items_other_id::IN_PLAY]) + { + if (i->flags.whole & badFlags.whole) + continue; + if (!i->isClothing()) + continue; + if (std::find(std::begin(l), std::end(l), i) == std::end(l)) + { + DEBUG(cycle).print("tailor: clothing item %d missing from GENERIC37 list\n", i->id); + } + if (i->getWear() >= 1) + continue; + df::item_type t = i->getType(); + int size = world->raws.creatures.all[i->getMakerRace()]->adultsize; + + available[std::make_pair(t, size)] += 1; + } - available[std::make_pair(t, size)] += 1; } } @@ -748,9 +781,18 @@ static int tailor_getMaterialPreferences(lua_State *L) { return 1; } +static void tailor_setDebugFlag(color_ostream& out, bool enable) +{ + DEBUG(config, out).print("entering tailor_setDebugFlag\n"); + + tailor_instance->set_debug_flag(enable); + +} + DFHACK_PLUGIN_LUA_FUNCTIONS { DFHACK_LUA_FUNCTION(tailor_doCycle), DFHACK_LUA_FUNCTION(tailor_setMaterialPreferences), + DFHACK_LUA_FUNCTION(tailor_setDebugFlag), DFHACK_LUA_END }; From 76bacee2382298c857afc3c3cca093900dceef7f Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sat, 11 Mar 2023 02:07:59 -0800 Subject: [PATCH 071/115] dynamically add mod scripts to the script path --- docs/changelog.txt | 1 + library/Core.cpp | 101 +++++++++++++++++++++++++++++++++++------ library/include/Core.h | 3 +- 3 files changed, 91 insertions(+), 14 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index d70b7882c..f968d79ac 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -55,6 +55,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: - `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 - `enable`: can now interpret aliases defined with the `alias` command +- scripts in installed 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 - ``untested`` tag has been renamed to ``unavailable`` to better reflect the status of the remaining unavaialable tools. all 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. diff --git a/library/Core.cpp b/library/Core.cpp index d55959ceb..1bca0f5ed 100644 --- a/library/Core.cpp +++ b/library/Core.cpp @@ -105,6 +105,7 @@ DBG_DECLARE(core,script,DebugCategory::LINFO); static const std::string CONFIG_PATH = "dfhack-config/"; static const std::string CONFIG_DEFAULTS_PATH = "hack/data/dfhack-config-defaults/"; +static const std::string MOD_PATH = "data/installed_mods/"; class MainThread { public: @@ -440,6 +441,12 @@ bool Core::addScriptPath(std::string path, bool search_before) return true; } +bool Core::setModScriptPaths(const std::vector &mod_script_paths) { + std::lock_guard lock(script_path_mutex); + script_paths[2] = mod_script_paths; + return true; +} + bool Core::removeScriptPath(std::string path) { std::lock_guard lock(script_path_mutex); @@ -464,20 +471,21 @@ void Core::getScriptPaths(std::vector *dest) std::lock_guard lock(script_path_mutex); dest->clear(); std::string df_path = this->p->getPath() + "/"; - for (auto it = script_paths[0].begin(); it != script_paths[0].end(); ++it) - dest->push_back(*it); + for (auto & path : script_paths[0]) + dest->emplace_back(path); dest->push_back(df_path + CONFIG_PATH + "scripts"); if (df::global::world && isWorldLoaded()) { std::string save = World::ReadWorldFolder(); if (save.size()) - dest->push_back(df_path + "/save/" + save + "/scripts"); + dest->emplace_back(df_path + "save/" + save + "/scripts"); } - dest->push_back(df_path + "/hack/scripts"); - for (auto it = script_paths[1].begin(); it != script_paths[1].end(); ++it) - dest->push_back(*it); + dest->emplace_back(df_path + "hack/scripts"); + for (auto & path : script_paths[2]) + dest->emplace_back(path); + for (auto & path : script_paths[1]) + dest->emplace_back(path); } - std::string Core::findScript(std::string name) { std::vector paths; @@ -526,6 +534,61 @@ bool loadScriptPaths(color_ostream &out, bool silent = false) return true; } +bool loadModScriptPaths(color_ostream &out) { + std::map files; + Filesystem::listdir_recursive(MOD_PATH, files, 0); + + DEBUG(script,out).print("found %zd installed mods\n", files.size()); + if (!files.size()) + return true; + + for (auto & entry : files) { + DEBUG(script,out).print(" %s\n", entry.first.c_str()); + } + + std::vector mod_paths; + if (Core::getInstance().isWorldLoaded()) { + DEBUG(script,out).print("active load order:\n"); + for (auto & path : df::global::world->object_loader.object_load_order_src_dir) { + DEBUG(script,out).print(" %s\n", path->c_str()); + if (0 == path->find(MOD_PATH)) + mod_paths.emplace_back(*path); + } + } + + std::vector mod_script_paths; + for (auto pathit = mod_paths.rbegin(); pathit != mod_paths.rend(); ++pathit) { + std::string active_path = *pathit + "scripts_modactive"; + std::string installed_path = *pathit + "scripts_modinstalled"; + DEBUG(script,out).print("checking active path: %s\n", pathit->c_str()); + if (Filesystem::isdir(active_path)) + mod_script_paths.emplace_back(active_path); + if (Filesystem::isdir(installed_path)) + mod_script_paths.emplace_back(installed_path); + std::string slashless = *pathit; + slashless.resize(slashless.size()-1); + if (0 == files.erase(slashless)) + WARN(script,out).print("script path not found: '%s'\n", pathit->c_str()); + } + + for (auto & entry : files) { + if (!entry.second) + continue; + DEBUG(script,out).print("checking inactive path: %s\n", entry.first.c_str()); + std::string installed_path = entry.first + "/scripts_modinstalled"; + if (Filesystem::isdir(installed_path)) + mod_script_paths.emplace_back(installed_path); + } + + DEBUG(script,out).print("final mod script paths:\n"); + for (auto & path : mod_script_paths) + DEBUG(script,out).print(" %s\n", path.c_str()); + + Core::getInstance().setModScriptPaths(mod_script_paths); + + return true; +} + static std::map state_change_event_map; static void sc_event_map_init() { if (!state_change_event_map.size()) @@ -2113,14 +2176,22 @@ void Core::onStateChange(color_ostream &out, state_change_event event) switch (event) { case SC_CORE_INITIALIZED: - { - auto L = Lua::Core::State; - Lua::StackUnwinder top(L); - Lua::CallLuaModuleFunction(con, L, "helpdb", "refresh"); - Lua::CallLuaModuleFunction(con, L, "script-manager", "reload"); - } + { + loadModScriptPaths(out); + auto L = Lua::Core::State; + Lua::StackUnwinder top(L); + Lua::CallLuaModuleFunction(con, L, "helpdb", "refresh"); + Lua::CallLuaModuleFunction(con, L, "script-manager", "reload"); break; + } case SC_WORLD_LOADED: + { + loadModScriptPaths(out); + auto L = Lua::Core::State; + Lua::StackUnwinder top(L); + Lua::CallLuaModuleFunction(con, L, "script-manager", "reload"); + // fallthrough + } case SC_WORLD_UNLOADED: case SC_MAP_LOADED: case SC_MAP_UNLOADED: @@ -2185,6 +2256,10 @@ void Core::onStateChange(color_ostream &out, state_change_event event) if (event == SC_WORLD_UNLOADED) { Persistence::Internal::clear(); + loadModScriptPaths(out); + auto L = Lua::Core::State; + Lua::StackUnwinder top(L); + Lua::CallLuaModuleFunction(con, L, "script-manager", "reload"); } } diff --git a/library/include/Core.h b/library/include/Core.h index 8232708b5..2e022d6ca 100644 --- a/library/include/Core.h +++ b/library/include/Core.h @@ -158,6 +158,7 @@ namespace DFHack bool loadScriptFile(color_ostream &out, std::string fname, bool silent = false); bool addScriptPath(std::string path, bool search_before = false); + bool setModScriptPaths(const std::vector &mod_script_paths); bool removeScriptPath(std::string path); std::string findScript(std::string name); void getScriptPaths(std::vector *dest); @@ -239,7 +240,7 @@ namespace DFHack std::vector> allModules; DFHack::PluginManager * plug_mgr; - std::vector script_paths[2]; + std::vector script_paths[3]; std::mutex script_path_mutex; // hotkey-related stuff From e7f8fbb235eefdd7806befabaafefb9cd4fea991 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sat, 11 Mar 2023 08:53:29 -0800 Subject: [PATCH 072/115] apparaently the macro expansion has an ambiguous else --- library/Core.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/Core.cpp b/library/Core.cpp index 1bca0f5ed..b5337b827 100644 --- a/library/Core.cpp +++ b/library/Core.cpp @@ -567,8 +567,9 @@ bool loadModScriptPaths(color_ostream &out) { mod_script_paths.emplace_back(installed_path); std::string slashless = *pathit; slashless.resize(slashless.size()-1); - if (0 == files.erase(slashless)) + if (0 == files.erase(slashless)) { WARN(script,out).print("script path not found: '%s'\n", pathit->c_str()); + } } for (auto & entry : files) { From 42b18d001bca119b44328fe70c52e2c60135307d Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sat, 11 Mar 2023 12:51:46 -0800 Subject: [PATCH 073/115] refresh overlay and helpdb on new world to pick up mod content --- library/lua/helpdb.lua | 10 ++++++++++ plugins/lua/overlay.lua | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/library/lua/helpdb.lua b/library/lua/helpdb.lua index df5482aec..a7ac6226f 100644 --- a/library/lua/helpdb.lua +++ b/library/lua/helpdb.lua @@ -12,6 +12,8 @@ local TAG_DEFINITIONS = 'hack/docs/docs/Tags.txt' local SCRIPT_DOC_BEGIN = '[====[' local SCRIPT_DOC_END = ']====]' +local GLOBAL_KEY = 'HELPDB' + -- enums local ENTRY_TYPES = { BUILTIN='builtin', @@ -423,6 +425,14 @@ function refresh() ensure_db() end +dfhack.onStateChange[GLOBAL_KEY] = function(sc) + if sc ~= SC_WORLD_LOADED then + return + end + -- pick up widgets from active mods + refresh() +end + local function parse_blocks(text) local blocks = {} for line in text:gmatch('[^\n]*') do diff --git a/plugins/lua/overlay.lua b/plugins/lua/overlay.lua index 3d476bf0d..ff8bf7c98 100644 --- a/plugins/lua/overlay.lua +++ b/plugins/lua/overlay.lua @@ -8,6 +8,7 @@ local widgets = require('gui.widgets') local OVERLAY_CONFIG_FILE = 'dfhack-config/overlay.json' local OVERLAY_WIDGETS_VAR = 'OVERLAY_WIDGETS' +local GLOBAL_KEY = 'OVERLAY' local DEFAULT_X_POS, DEFAULT_Y_POS = -2, -2 @@ -311,6 +312,14 @@ function reload() reposition_widgets() end +dfhack.onStateChange[GLOBAL_KEY] = function(sc) + if sc ~= SC_WORLD_LOADED then + return + end + -- pick up widgets from active mods + reload() +end + local function dump_widget_config(name, widget) local pos = overlay_config[name].pos print(('widget %s is positioned at x=%d, y=%d'):format(name, pos.x, pos.y)) From c3946247d689d9c13e1001f45798bd5a21ab074f Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 12 Mar 2023 17:05:54 -0700 Subject: [PATCH 074/115] update docs for Core --- docs/Core.rst | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/docs/Core.rst b/docs/Core.rst index 86e357b27..56597e9f2 100644 --- a/docs/Core.rst +++ b/docs/Core.rst @@ -235,10 +235,41 @@ 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 +......................... + +Script directories in installed mods are automatically added to the script path +according to the following rules: + +**If a world is not loaded**, then directories matching the pattern +``data/installed_mods/*/scripts_modinstalled/`` are added to the script path +in alphabetical order of the mod name. + +**If a world is loaded**, then the ``scripts_modactive`` directories of active +mods are also added to the script path according to the active mod load order, +and scripts in active mods take precedence over scripts in +``scripts_modinstalled`` in non-active mods. For example, the search paths for +mods might look like this:: + + activemod1/scripts_modactive + activemod1/scripts_modinstalled + activemod2/scripts_modactive + activemod2/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. + +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: From 57d6cab10fef346c2faeeac7a1fac5c57ad13fb9 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 12 Mar 2023 17:14:02 -0700 Subject: [PATCH 075/115] wording --- docs/Core.rst | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/Core.rst b/docs/Core.rst index 56597e9f2..b6cdb2066 100644 --- a/docs/Core.rst +++ b/docs/Core.rst @@ -248,7 +248,7 @@ according to the following rules: **If a world is not loaded**, then directories matching the pattern ``data/installed_mods/*/scripts_modinstalled/`` are added to the script path -in alphabetical order of the mod name. +in alphabetical order. **If a world is loaded**, then the ``scripts_modactive`` directories of active mods are also added to the script path according to the active mod load order, @@ -256,12 +256,14 @@ and scripts in active mods take precedence over scripts in ``scripts_modinstalled`` in non-active mods. For example, the search paths for mods might look like this:: - activemod1/scripts_modactive - activemod1/scripts_modinstalled - activemod2/scripts_modactive - activemod2/scripts_modinstalled + 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 From de576b558615a87d00245ce20dc4f87804273551 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 17 Mar 2023 21:11:18 -0700 Subject: [PATCH 076/115] start updating modding guide --- docs/guides/modding-guide.rst | 70 ++++++++++++++++++++++++++++------- 1 file changed, 57 insertions(+), 13 deletions(-) diff --git a/docs/guides/modding-guide.rst b/docs/guides/modding-guide.rst index 73d9407d6..43e066105 100644 --- a/docs/guides/modding-guide.rst +++ b/docs/guides/modding-guide.rst @@ -8,29 +8,73 @@ 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 both. +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 +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. 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. +The structure of a mod +---------------------- + +For reference, `Tachy Guns `__ is a +full mod that conforms to this guide. + +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:: + + init.d/example-mod.lua + raw/objects/... + raw/scripts/example-mod.lua + raw/scripts/example-mod/... + README.md + +Let's go through that line by line. + +* 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. + +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. + +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``:: + + +/path/to/mymods/example-mod/scripts/ + A mod-maker's development environment ------------------------------------- @@ -54,7 +98,7 @@ 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. +of older copies that you may have in mods installed in the DF directory. For scripts with the same name, the `order of precedence ` will be: From e4579a4aa13f6da015b4e5eb7d1a04ee0f4996d4 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 24 Mar 2023 18:42:42 -0700 Subject: [PATCH 077/115] update modding guide --- docs/Core.rst | 3 +- docs/guides/modding-guide.rst | 309 ++++++++++++++++++---------------- 2 files changed, 162 insertions(+), 150 deletions(-) diff --git a/docs/Core.rst b/docs/Core.rst index b6cdb2066..c06a413da 100644 --- a/docs/Core.rst +++ b/docs/Core.rst @@ -267,7 +267,8 @@ mods might look like this:: 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. +or unloaded. For more information on scripts and mods, check out the +`modding-guide`. Custom script paths ................... diff --git a/docs/guides/modding-guide.rst b/docs/guides/modding-guide.rst index 43e066105..73758db6f 100644 --- a/docs/guides/modding-guide.rst +++ b/docs/guides/modding-guide.rst @@ -9,16 +9,16 @@ What is the difference between a script and a mod? -------------------------------------------------- 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 both. -There are already resources out there for +which can be graphics overrides, content in the raws, DFHack scripts, any, or +all. 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. +raws-based mods. -If you don't already know Lua, there's a great primer at -`lua.org `__. +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? -------------------------- @@ -26,13 +26,14 @@ 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. 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. +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 ---------------------- @@ -40,82 +41,102 @@ The structure of a mod For reference, `Tachy Guns `__ is a full mod that conforms to this guide. -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:: +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:: - init.d/example-mod.lua - raw/objects/... - raw/scripts/example-mod.lua - raw/scripts/example-mod/... - README.md + info.txt + graphics/... + objects/... + scripts_modactive/example-mod.lua + scripts_modactive/internal/example-mod/... + scripts_modinstalled/... + README.md (optional) Let's go through that line by line. -* 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. +- 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 `__. +- 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. +- 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:`data/installed_mods/` when +the mod is selected as "active" for the first time. + +What if I just want to distribute a simple script? +-------------------------------------------------- + +If your mod is just a script with no raws modifications, things get a bit +simpler. All you need is:: -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. + info.txt + scripts_modinstalled/yourscript.lua + README.md (optional) -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``:: +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". - +/path/to/mymods/example-mod/scripts/ +Be sure to remind players to mark your mod as "active" at least once so it gets +installed to the :file:`data/installed_mods/` folder. They may have to create a +new world just so they can mark the mod as "active". This is true both for +players who copied the mod into the :file:`mods/` folder manually and for +players who subscribed via +`Steam Workshop `__. A mod-maker's development environment ------------------------------------- -While you're writing your mod, you need a place to store your in-development -scripts that will: +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. -- be directly runnable by DFHack -- not get lost when you upgrade DFHack +If you have changes to the raws, you'll 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. This way, you can edit +your scripts and have the changes available in the game immediately: no +copying, no restarting. -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. +How does this magic work? Just add a line like this to your +``dfhack-config/script-paths.txt`` file:: -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:: - - +/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 in mods installed in the 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 ``data/installed_mods/``). 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" is in the global variable `df `. Most of the information +relevant to a script is found in ``df.global.world``, which contains things +like the list of all items, 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 ----------------- @@ -127,8 +148,8 @@ First line, we get the 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, ``unit`` will be ``nil`` and an error message will be +printed (which can be silenced by passing ``true`` to ``getSelectedUnit``). If ``unit`` is ``nil``, we don't want the script to run anymore:: @@ -138,33 +159,32 @@ If ``unit`` is ``nil``, we don't want the script to run anymore:: 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:: +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. Save this 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. -Exploring DF structures ------------------------ +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 +Reacting to events ------------------ The common method for injecting new behaviour into the game is to define a @@ -174,7 +194,7 @@ 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 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 @@ -371,7 +391,8 @@ 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:: +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 @@ -385,82 +406,78 @@ worn items to calculate how much we are going to take from their on-foot movemen 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) + dfhack.units.subtractActionTimers(unit, amount, + df.unit_action_type_group.MovementFeet) end end -The structure of a full mod ---------------------------- - -For reference, `Tachy Guns `__ is a -full mod that conforms to this guide. - -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:: - - 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 example-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` + -- Documentation on how to format docs here: + -- see possible tags here: https://docs.dfhack.org/en/latest/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') -- 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') + local moduleA = reqscript('internal/example-mod/module-a') + local moduleB = reqscript('internal/example-mod/module-b') + local moduleC = reqscript('internal/example-mod/module-c') + local moduleD = reqscript('internal/example-mod/module-d') + + local GLOBAL_KEY = 'example-mod' enabled = enabled or false - local modId = 'example-mod' + + function isEnabled() + return enabled + end + + dfhack.onStateChange[GLOBAL_KEY] = function(sc) + if sc == SC_MAP_UNLOADED then + dfhack.run_command('disable', 'example-mod') + return + end + + if sc ~= SC_MAP_LOADED or df.global.gamemode ~= df.game_mode.DWARF then + return + end + + dfhack.run_command('enable', 'example-mod') + end if not dfhack_flags.enable then - print(usage) + print(dfhack.script_help()) print() print(('Example mod is currently '):format( enabled and 'enabled' or 'disabled')) @@ -516,23 +533,17 @@ Ok, you're all set up! Now, let's take a look at an example enabled = false 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``:: - - dfhack.run_command('enable example-mod') - -Inside ``raw/scripts/example-mod/module-a.lua`` you could have code like this:: +Inside ``scripts_modinstalled/internal/example-mod/module-a.lua`` you could +have code like this:: --@ module = true - -- The above line is required for reqscript to work function onLoad() -- global variables are exported -- do initialization here end - -- this is an internal function: local functions/variables - -- are not exported + -- this is a local function: local functions/variables + -- are not accessible to other scripts. local function usedByOnTick(unit) -- ... end @@ -543,6 +554,6 @@ Inside ``raw/scripts/example-mod/module-a.lua`` you could have code like this:: 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 ongoing game! From 7cb9d3fe8cf4e1ca209e094ba7317aaba9b297d0 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 24 Mar 2023 18:47:18 -0700 Subject: [PATCH 078/115] formatting --- docs/guides/modding-guide.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/guides/modding-guide.rst b/docs/guides/modding-guide.rst index 73758db6f..cf61c801c 100644 --- a/docs/guides/modding-guide.rst +++ b/docs/guides/modding-guide.rst @@ -419,15 +419,15 @@ Ok, you're all set up! Now, let's take a look at an example -- main file for example-mod - -- 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" + -- 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 - -- this is the help text that will appear in `help` and `gui/launcher` - -- Documentation on how to format docs here: - -- see possible tags here: https://docs.dfhack.org/en/latest/docs/Tags.html + -- this is the help text that will appear in `help` and + -- `gui/launcher`. see possible tags here: + -- https://docs.dfhack.org/en/latest/docs/Tags.html --[====[ example-mod =========== From 6a3e61519a1fd4af6a1802177e8090e50223787c Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sat, 25 Mar 2023 01:55:35 -0700 Subject: [PATCH 079/115] remove reference to Tachy Guns --- docs/guides/modding-guide.rst | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/guides/modding-guide.rst b/docs/guides/modding-guide.rst index cf61c801c..5cabf0856 100644 --- a/docs/guides/modding-guide.rst +++ b/docs/guides/modding-guide.rst @@ -38,9 +38,6 @@ require a mix of raw modding and DFHack scripting. The structure of a mod ---------------------- -For reference, `Tachy Guns `__ is a -full mod that conforms to this guide. - 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:: From 0ba4225d85924a86c97cad7938fdbfe95827f590 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sat, 25 Mar 2023 15:19:24 -0700 Subject: [PATCH 080/115] support showing a different tile on hover for Labels --- docs/changelog.txt | 1 + docs/dev/Lua API.rst | 12 +++++++----- library/lua/gui/widgets.lua | 4 ++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index b9c31f146..ced0f961e 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -64,6 +64,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: ## API ## Lua +- ``widget.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 ## Removed diff --git a/docs/dev/Lua API.rst b/docs/dev/Lua API.rst index 9f2386660..862c5bccc 100644 --- a/docs/dev/Lua API.rst +++ b/docs/dev/Lua API.rst @@ -4731,10 +4731,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 +4764,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`` diff --git a/library/lua/gui/widgets.lua b/library/lua/gui/widgets.lua index b86e31710..b5497f0d0 100644 --- a/library/lua/gui/widgets.lua +++ b/library/lua/gui/widgets.lua @@ -1121,10 +1121,10 @@ function render_text(obj,dc,x0,y0,pen,dpen,disabled,hpen,hovered) end end - if token.tile then + if token.tile or (hovered and token.htile) then x = x + 1 if dc then - local tile = getval(token.tile) + local tile = hovered and getval(token.htile or token.tile) or getval(token.tile) local tile_pen = tonumber(tile) and to_pen{tile=tile} or tile dc:char(nil, tile_pen) if token.width then From 28eeb95eedca903efeb35024ffd8fa4d5ebb8254 Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Sat, 25 Mar 2023 22:28:21 +0000 Subject: [PATCH 081/115] Auto-update submodules scripts: master --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index f637dc4bf..2568b79c3 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit f637dc4bf18a7ca4968f45e79790893c6d22c3f5 +Subproject commit 2568b79c3a74128b649bab8fdd20ce67cd88790f From b3a20e771b8b32d7015f7286673514329fa1b6d5 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sat, 25 Mar 2023 15:53:42 -0700 Subject: [PATCH 082/115] remove lua's ability to load binary chunks to protect against malware attacks --- depends/lua/src/ldo.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/depends/lua/src/ldo.c b/depends/lua/src/ldo.c index 316e45c8f..65158df0b 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); } From e2d4d45c023438af92e2abbaa00bb2c206e9ac4c Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Mon, 27 Mar 2023 04:44:38 +0000 Subject: [PATCH 083/115] Auto-update submodules scripts: master --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 2568b79c3..bb3dfc0d3 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 2568b79c3a74128b649bab8fdd20ce67cd88790f +Subproject commit bb3dfc0d3e2bdebc4ba6fd814371662457b18917 From 4a173aac997c05b7921ccd96ee0446250c82b318 Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Mon, 27 Mar 2023 00:07:40 -0500 Subject: [PATCH 084/115] tailor: fix #3093, #3103 I significantly restructured the assignment algorithm to eliminate the overproduction issues in #3093 #3103 is addressed by excluding units that don't have the caste-level EQUIPS flag closes #3093 closes #3103 --- docs/changelog.txt | 2 +- plugins/tailor.cpp | 151 ++++++++++++++++++++++----------------------- 2 files changed, 75 insertions(+), 78 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index ced0f961e..619a538e3 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -44,7 +44,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: - `buildingplan`: you can no longer designate constructions on tiles with magma or deep water - `buildingplan`: fixed material filter 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`: now properly discriminates between dyed and undyed cloth, no longer defaults to using adamantine, and properly tracks material requirements for already queued orders +- `tailor`: now properly discriminates between dyed and undyed cloth, no longer defaults to using adamantine, properly tracks material requirements for already queued orders, skips units who can't wear clothes, and hopefully won't over-order items anymore ## Misc Improvements - `buildingplan`: filters and global settings are now ignored when manually choosing items for a building diff --git a/plugins/tailor.cpp b/plugins/tailor.cpp index 3ba6744bb..bb84c438c 100644 --- a/plugins/tailor.cpp +++ b/plugins/tailor.cpp @@ -144,13 +144,15 @@ static struct BadFlags { } badFlags; class Tailor { -private: - std::map, int> available; // key is item type & size - std::map, int> needed; // same - std::map, int> queued; // same +private: std::map sizes; // this maps body size to races - std::map, int> orders; // key is item type, item subtype, size + + std::map, int> available; + + std::map, int> needed; + + std::map, int> orders; std::map supply; std::map reserves; @@ -169,50 +171,34 @@ public: { available.clear(); needed.clear(); - queued.clear(); sizes.clear(); - orders.clear(); supply.clear(); + orders.clear(); } void scan_clothing() { - if (!inventory_sanity_checking) + for (auto i : world->items.other[df::items_other_id::ANY_GENERIC37]) // GENERIC37 is "nontattered clothing" { - for (auto i : world->items.other[df::items_other_id::ANY_GENERIC37]) // GENERIC37 is "clothing" + if (i->flags.whole & badFlags.whole) { - if (i->flags.whole & badFlags.whole) - continue; - if (i->getWear() >= 1) - continue; - df::item_type t = i->getType(); - int size = world->raws.creatures.all[i->getMakerRace()]->adultsize; - - available[std::make_pair(t, size)] += 1; + continue; } - } - else - { - auto& l = world->items.other[df::items_other_id::ANY_GENERIC37]; - - for (auto i : world->items.other[df::items_other_id::IN_PLAY]) - { - if (i->flags.whole & badFlags.whole) - continue; - if (!i->isClothing()) - continue; - if (std::find(std::begin(l), std::end(l), i) == std::end(l)) - { - DEBUG(cycle).print("tailor: clothing item %d missing from GENERIC37 list\n", i->id); - } - if (i->getWear() >= 1) - continue; - df::item_type t = i->getType(); - int size = world->raws.creatures.all[i->getMakerRace()]->adultsize; + if (i->getWear() >= 1) + continue; + df::item_type t = i->getType(); + int size = world->raws.creatures.all[i->getMakerRace()]->adultsize; - available[std::make_pair(t, size)] += 1; - } + available[std::make_pair(t, size)] += 1; + } + for (auto& i : available) + { + df::item_type t; + int size; + std::tie(t, size) = i.first; + DEBUG(cycle).print("tailor: %d %s of size %d found\n", + i.second, ENUM_KEY_STR(item_type, t).c_str(), size); } } @@ -273,14 +259,13 @@ public: if (!Units::isOwnCiv(u) || !Units::isOwnGroup(u) || !Units::isActive(u) || - Units::isBaby(u)) - continue; // skip units we don't control + Units::isBaby(u) || + !Units::casteFlagSet(u->race, u->caste, df::enums::caste_raw_flags::EQUIPS)) + continue; // skip units we don't control or that can't wear clothes std::set wearing; - wearing.clear(); - + std::set ordered; std::deque worn; - worn.clear(); for (auto inv : u->inventory) { @@ -295,33 +280,37 @@ public: int usize = world->raws.creatures.all[u->race]->adultsize; sizes[usize] = u->race; - for (auto ty : std::set{ df::item_type::ARMOR, df::item_type::PANTS, df::item_type::SHOES }) - { - if (wearing.count(ty) == 0) - { - TRACE(cycle).print("tailor: one %s of size %d needed to cover %s\n", - ENUM_KEY_STR(item_type, ty).c_str(), - usize, - Translation::TranslateName(&u->name, false).c_str()); - needed[std::make_pair(ty, usize)] += 1; - } - } - for (auto w : worn) { auto ty = w->getType(); - auto oo = itemTypeMap.find(ty); - if (oo == itemTypeMap.end()) - { - continue; - } - const df::job_type o = oo->second; int isize = world->raws.creatures.all[w->getMakerRace()]->adultsize; std::string description; w->getItemDescription(&description, 0); - if (available[std::make_pair(ty, usize)] > 0) + bool allocated = false; + + if (wearing.count(ty) == 0) + { + if (available[std::make_pair(ty, usize)] > 0) + { + available[std::make_pair(ty, usize)] -= 1; + DEBUG(cycle).print("tailor: allocating a %s (size %d) to %s\n", + ENUM_KEY_STR(item_type, ty).c_str(), usize, + Translation::TranslateName(&u->name, false).c_str()); + wearing.insert(ty); + } + else if (ordered.count(ty) == 0) + { + DEBUG(cycle).print ("tailor: %s (size %d) worn by %s (size %d) needs replacement, but none available\n", + description.c_str(), isize, + Translation::TranslateName(&u->name, false).c_str(), usize); + needed[std::make_pair(ty, usize)] += 1; + ordered.insert(ty); + } + } + + if (wearing.count(ty) > 0) { if (w->flags.bits.owned) { @@ -335,23 +324,21 @@ public: ); } - if (wearing.count(ty) == 0) - { - DEBUG(cycle).print("tailor: allocating a %s (size %d) to %s\n", - ENUM_KEY_STR(item_type, ty).c_str(), usize, - Translation::TranslateName(&u->name, false).c_str()); - available[std::make_pair(ty, usize)] -= 1; - } - if (w->getWear() > 1) w->flags.bits.dump = true; } - else + + } + + for (auto ty : std::set{ df::item_type::ARMOR, df::item_type::PANTS, df::item_type::SHOES }) + { + if (wearing.count(ty) == 0 && ordered.count(ty) == 0) { - DEBUG(cycle).print ("tailor: %s (size %d) worn by %s (size %d) needs replacement, but none available\n", - description.c_str(), isize, - Translation::TranslateName(&u->name, false).c_str(), usize); - orders[std::make_tuple(o, w->getSubtype(), usize)] += 1; + TRACE(cycle).print("tailor: one %s of size %d needed to cover %s\n", + ENUM_KEY_STR(item_type, ty).c_str(), + usize, + Translation::TranslateName(&u->name, false).c_str()); + needed[std::make_pair(ty, usize)] += 1; } } } @@ -367,6 +354,9 @@ public: int size = a.first.second; int count = a.second; + if (count <= 0) + continue; + int sub = 0; std::vector v; @@ -432,7 +422,14 @@ public: int size = world->raws.creatures.all[race]->adultsize; - orders[std::make_tuple(o->job_type, sub, size)] -= o->amount_left; + + auto tt = jobTypeMap.find(o->job_type); + if (tt == jobTypeMap.end()) + { + continue; + } + + needed[std::make_pair(tt->second, size)] -= o->amount_left; TRACE(cycle).print("tailor: existing order for %d %s of size %d detected\n", o->amount_left, ENUM_KEY_STR(job_type, o->job_type).c_str(), @@ -576,8 +573,8 @@ public: scan_clothing(); scan_materials(); scan_replacements(); - create_orders(); scan_existing_orders(); + create_orders(); return place_orders(); } From 0f5456c45b3324e9eb8135908cf425e83fe5481e Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Mon, 27 Mar 2023 00:31:47 -0500 Subject: [PATCH 085/115] tidy up after self remove a couple of no-longer-used variables that i missed last time --- plugins/tailor.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/plugins/tailor.cpp b/plugins/tailor.cpp index bb84c438c..286bd9c0d 100644 --- a/plugins/tailor.cpp +++ b/plugins/tailor.cpp @@ -288,8 +288,6 @@ public: std::string description; w->getItemDescription(&description, 0); - bool allocated = false; - if (wearing.count(ty) == 0) { if (available[std::make_pair(ty, usize)] > 0) @@ -404,7 +402,6 @@ public: if (f == jobTypeMap.end()) continue; - auto sub = o->item_subtype; int race = o->hist_figure_id; for (auto& m : all_materials) From f3862e3eecacd5af65d0799c49dcee6c3a964980 Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Mon, 27 Mar 2023 00:44:03 -0500 Subject: [PATCH 086/115] tailor: gatekeep debugging code --- docs/changelog.txt | 6 +++++- plugins/tailor.cpp | 15 +++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 619a538e3..65194dcfa 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -44,7 +44,11 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: - `buildingplan`: you can no longer designate constructions on tiles with magma or deep water - `buildingplan`: fixed material filter 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`: now properly discriminates between dyed and undyed cloth, no longer defaults to using adamantine, properly tracks material requirements for already queued orders, skips units who can't wear clothes, and hopefully won't over-order items anymore +- `tailor`: properly discriminates between dyed and undyed cloth +- `tailor`: no longer defaults to using adamantine +- `tailor`: properly tracks material requirements for already queued orders +- `tailor`: skips units who can't wear clothes +- `tailor`: hopefully won't over-order items any more ## Misc Improvements - `buildingplan`: filters and global settings are now ignored when manually choosing items for a building diff --git a/plugins/tailor.cpp b/plugins/tailor.cpp index 286bd9c0d..2b44d11ae 100644 --- a/plugins/tailor.cpp +++ b/plugins/tailor.cpp @@ -192,13 +192,16 @@ public: available[std::make_pair(t, size)] += 1; } - for (auto& i : available) + if (DBG_NAME(cycle).isEnabled(DebugCategory::LDEBUG)) { - df::item_type t; - int size; - std::tie(t, size) = i.first; - DEBUG(cycle).print("tailor: %d %s of size %d found\n", - i.second, ENUM_KEY_STR(item_type, t).c_str(), size); + for (auto& i : available) + { + df::item_type t; + int size; + std::tie(t, size) = i.first; + DEBUG(cycle).print("tailor: %d %s of size %d found\n", + i.second, ENUM_KEY_STR(item_type, t).c_str(), size); + } } } From 8da7e216a4a2dac1576ff68045c3fd79e34fcc9f Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 27 Mar 2023 02:24:56 -0700 Subject: [PATCH 087/115] buildingplan - suspendmanager integration --- docs/changelog.txt | 1 + docs/plugins/buildingplan.rst | 5 ++- plugins/buildingplan/buildingplan.cpp | 39 ++++++++++++++------- plugins/buildingplan/buildingplan.h | 2 +- plugins/buildingplan/buildingplan_cycle.cpp | 19 +++++----- plugins/lua/buildingplan.lua | 5 +++ 6 files changed, 49 insertions(+), 22 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 65194dcfa..df153d43e 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -52,6 +52,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: ## Misc Improvements - `buildingplan`: filters and global settings are now ignored when manually choosing items for a building +- `buildingplan`: if `suspendmanager` is running, then planned buildings will be left suspended when their items are all attached. `suspendmanager` will unsuspsend them for construction when it is safe to do so. - `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 - `stockpiles`: additive and subtractive modes when applying a second stockpile configuration on top of a first diff --git a/docs/plugins/buildingplan.rst b/docs/plugins/buildingplan.rst index 71951f386..9cc7e68a2 100644 --- a/docs/plugins/buildingplan.rst +++ b/docs/plugins/buildingplan.rst @@ -20,7 +20,10 @@ building. Once all items are attached, the construction job will be unsuspended and a dwarf will come and build the building. If you have the `unsuspend` overlay enabled (it is enabled by default), then buildingplan-suspended buildings will appear with a ``P`` marker on the main map, as opposed to the -usual ``x`` marker for "regular" suspended buildings. +usual ``x`` marker for "regular" suspended buildings. If you have +`suspendmanager` running, then buildings will be left suspended when their +items are all attached and ``suspendmanager`` will unsuspend them for +construction when it is safe to do so. If you want to impose restrictions on which items are chosen for the buildings, buildingplan has full support for quality and material filters (see `below diff --git a/plugins/buildingplan/buildingplan.cpp b/plugins/buildingplan/buildingplan.cpp index 101349fde..11e08c2a0 100644 --- a/plugins/buildingplan/buildingplan.cpp +++ b/plugins/buildingplan/buildingplan.cpp @@ -72,7 +72,7 @@ static Tasks tasks; void PlannedBuilding::remove(color_ostream &out) { DEBUG(status,out).print("removing persistent data for building %d\n", id); World::DeletePersistentData(bld_config); - if (planned_buildings.count(id) > 0) + if (planned_buildings.count(id)) planned_buildings.erase(id); } @@ -212,9 +212,9 @@ static DefaultItemFilters & get_item_filters(color_ostream &out, const BuildingT static command_result do_command(color_ostream &out, vector ¶meters); void buildingplan_cycle(color_ostream &out, Tasks &tasks, - unordered_map &planned_buildings); + unordered_map &planned_buildings, bool unsuspend_on_finalize); -static bool registerPlannedBuilding(color_ostream &out, PlannedBuilding & pb); +static bool registerPlannedBuilding(color_ostream &out, PlannedBuilding & pb, bool unsuspend_on_finalize); DFhackCExport command_result plugin_init(color_ostream &out, std::vector &commands) { DEBUG(status,out).print("initializing %s\n", plugin_name); @@ -295,6 +295,16 @@ static int16_t get_subtype(df::building *bld) { return subtype; } +static bool is_suspendmanager_enabled(color_ostream &out) { + bool suspendmanager_enabled = false; + call_buildingplan_lua(&out, "is_suspendmanager_enabled", 0, 1, + Lua::DEFAULT_LUA_LAMBDA, + [&](lua_State *L){ + suspendmanager_enabled = lua_toboolean(L, -1); + }); + return suspendmanager_enabled; +} + DFhackCExport command_result plugin_load_data (color_ostream &out) { cycle_timestamp = 0; config = World::GetPersistentData(CONFIG_KEY); @@ -320,6 +330,7 @@ DFhackCExport command_result plugin_load_data (color_ostream &out) { vector building_configs; World::GetPersistentData(&building_configs, BLD_CONFIG_KEY); const size_t num_building_configs = building_configs.size(); + bool unsuspend_on_finalize = !is_suspendmanager_enabled(out); for (size_t idx = 0; idx < num_building_configs; ++idx) { PlannedBuilding pb(out, building_configs[idx]); df::building *bld = df::building::find(pb.id); @@ -334,7 +345,7 @@ DFhackCExport command_result plugin_load_data (color_ostream &out) { pb.remove(out); continue; } - registerPlannedBuilding(out, pb); + registerPlannedBuilding(out, pb, unsuspend_on_finalize); } return CR_OK; @@ -347,7 +358,8 @@ static void do_cycle(color_ostream &out) { cycle_timestamp = world->frame_counter; cycle_requested = false; - buildingplan_cycle(out, tasks, planned_buildings); + bool unsuspend_on_finalize = !is_suspendmanager_enabled(out); + buildingplan_cycle(out, tasks, planned_buildings, unsuspend_on_finalize); call_buildingplan_lua(&out, "signal_reset"); } @@ -469,7 +481,7 @@ vector getVectorIds(color_ostream &out, const df::job_it return ret; } -static bool registerPlannedBuilding(color_ostream &out, PlannedBuilding & pb) { +static bool registerPlannedBuilding(color_ostream &out, PlannedBuilding & pb, bool unsuspend_on_finalize) { df::building * bld = pb.getBuildingIfValidOrRemoveIfNot(out); if (!bld) return false; @@ -479,10 +491,15 @@ static bool registerPlannedBuilding(color_ostream &out, PlannedBuilding & pb) { return false; } + // suspend jobs + for (auto job : bld->jobs) + job->flags.bits.suspend = true; + auto job_items = bld->jobs[0]->job_items; if (isJobReady(out, job_items)) { // all items are already attached - finalizeBuilding(out, bld); + finalizeBuilding(out, bld, unsuspend_on_finalize); + pb.remove(out); return true; } @@ -508,10 +525,6 @@ static bool registerPlannedBuilding(color_ostream &out, PlannedBuilding & pb) { } } - // suspend jobs - for (auto job : bld->jobs) - job->flags.bits.suspend = true; - // add the planned buildings to our register planned_buildings.emplace(bld->id, pb); @@ -627,7 +640,9 @@ static bool addPlannedBuilding(color_ostream &out, df::building *bld) { BuildingTypeKey key(bld->getType(), subtype, bld->getCustomType()); PlannedBuilding pb(out, bld, get_heat_safety_filter(key), get_item_filters(out, key)); - return registerPlannedBuilding(out, pb); + + bool unsuspend_on_finalize = !is_suspendmanager_enabled(out); + return registerPlannedBuilding(out, pb, unsuspend_on_finalize); } static void doCycle(color_ostream &out) { diff --git a/plugins/buildingplan/buildingplan.h b/plugins/buildingplan/buildingplan.h index 756a81f83..26aa77fbc 100644 --- a/plugins/buildingplan/buildingplan.h +++ b/plugins/buildingplan/buildingplan.h @@ -52,4 +52,4 @@ bool itemPassesScreen(df::item * item); df::job_item getJobItemWithHeatSafety(const df::job_item *job_item, HeatSafety heat); bool matchesFilters(df::item * item, const df::job_item * job_item, HeatSafety heat, const ItemFilter &item_filter, const std::set &special); bool isJobReady(DFHack::color_ostream &out, const std::vector &jitems); -void finalizeBuilding(DFHack::color_ostream &out, df::building *bld); +void finalizeBuilding(DFHack::color_ostream &out, df::building *bld, bool unsuspend_on_finalize); diff --git a/plugins/buildingplan/buildingplan_cycle.cpp b/plugins/buildingplan/buildingplan_cycle.cpp index 803f1f130..3213e741d 100644 --- a/plugins/buildingplan/buildingplan_cycle.cpp +++ b/plugins/buildingplan/buildingplan_cycle.cpp @@ -111,7 +111,7 @@ static bool job_item_idx_lt(df::job_item_ref *a, df::job_item_ref *b) { // now all at 0, so there is no risk of having extra items attached. we don't // remove them to keep the "finalize with buildingplan active" path as similar // as possible to the "finalize with buildingplan disabled" path. -void finalizeBuilding(color_ostream &out, df::building *bld) { +void finalizeBuilding(color_ostream &out, df::building *bld, bool unsuspend_on_finalize) { DEBUG(cycle,out).print("finalizing building %d\n", bld->id); auto job = bld->jobs[0]; @@ -143,8 +143,10 @@ void finalizeBuilding(color_ostream &out, df::building *bld) { } // we're good to go! - job->flags.bits.suspend = false; - Job::checkBuildingsNow(); + if (unsuspend_on_finalize) { + job->flags.bits.suspend = false; + Job::checkBuildingsNow(); + } } static df::building * popInvalidTasks(color_ostream &out, Bucket &task_queue, @@ -181,7 +183,8 @@ static bool isAccessibleFrom(color_ostream &out, df::item *item, df::job *job) { static void doVector(color_ostream &out, df::job_item_vector_id vector_id, map &buckets, - unordered_map &planned_buildings) { + unordered_map &planned_buildings, + bool unsuspend_on_finalize) { auto other_id = ENUM_ATTR(job_item_vector_id, other, vector_id); auto item_vector = df::global::world->items.other[other_id]; DEBUG(cycle,out).print("matching %zu item(s) in vector %s against %zu filter bucket(s)\n", @@ -239,7 +242,7 @@ static void doVector(color_ostream &out, df::job_item_vector_id vector_id, --jitems[filter_idx]->quantity; task_queue.pop_front(); if (isJobReady(out, jitems)) { - finalizeBuilding(out, bld); + finalizeBuilding(out, bld, unsuspend_on_finalize); planned_buildings.at(id).remove(out); } if (task_queue.empty()) { @@ -274,7 +277,7 @@ struct VectorsToScanLast { }; void buildingplan_cycle(color_ostream &out, Tasks &tasks, - unordered_map &planned_buildings) { + unordered_map &planned_buildings, bool unsuspend_on_finalize) { static const VectorsToScanLast vectors_to_scan_last; DEBUG(cycle,out).print( @@ -292,7 +295,7 @@ void buildingplan_cycle(color_ostream &out, Tasks &tasks, } auto & buckets = it->second; - doVector(out, vector_id, buckets, planned_buildings); + doVector(out, vector_id, buckets, planned_buildings, unsuspend_on_finalize); if (buckets.empty()) { DEBUG(cycle,out).print("removing empty vector: %s; %zu vector(s) left\n", ENUM_KEY_STR(job_item_vector_id, vector_id).c_str(), @@ -306,7 +309,7 @@ void buildingplan_cycle(color_ostream &out, Tasks &tasks, if (tasks.count(vector_id) == 0) continue; auto & buckets = tasks[vector_id]; - doVector(out, vector_id, buckets, planned_buildings); + doVector(out, vector_id, buckets, planned_buildings, unsuspend_on_finalize); if (buckets.empty()) { DEBUG(cycle,out).print("removing empty vector: %s; %zu vector(s) left\n", ENUM_KEY_STR(job_item_vector_id, vector_id).c_str(), diff --git a/plugins/lua/buildingplan.lua b/plugins/lua/buildingplan.lua index 077470409..a33c1684f 100644 --- a/plugins/lua/buildingplan.lua +++ b/plugins/lua/buildingplan.lua @@ -51,6 +51,11 @@ function parse_commandline(...) return true end +function is_suspendmanager_enabled() + local ok, sm = pcall(reqscript, 'suspendmanager') + return ok and sm.isEnabled() +end + function get_num_filters(btype, subtype, custom) local filters = dfhack.buildings.getFiltersByType({}, btype, subtype, custom) return filters and #filters or 0 From 63772fd808107c37627ae5d5946a25baa7173d64 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 27 Mar 2023 03:51:45 -0700 Subject: [PATCH 088/115] ensure rclicks don't bleed through for dialogs --- library/lua/gui/dialogs.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/library/lua/gui/dialogs.lua b/library/lua/gui/dialogs.lua index 3b2470114..1b7858416 100644 --- a/library/lua/gui/dialogs.lua +++ b/library/lua/gui/dialogs.lua @@ -4,9 +4,6 @@ local _ENV = mkmodule('gui.dialogs') local gui = require('gui') local widgets = require('gui.widgets') -local utils = require('utils') - -local dscreen = dfhack.screen MessageBox = defclass(MessageBox, gui.FramedScreen) @@ -66,6 +63,7 @@ function MessageBox:onInput(keys) elseif (keys.LEAVESCREEN or keys._MOUSE_R_DOWN) and self.on_cancel then self.on_cancel() end + gui.markMouseClicksHandled(keys) return true end return self:inputToSubviews(keys) @@ -135,6 +133,7 @@ function InputBox:onInput(keys) if self.on_cancel then self.on_cancel() end + gui.markMouseClicksHandled(keys) return true end return self:inputToSubviews(keys) @@ -218,9 +217,9 @@ end function ListBox:onRenderFrame(dc,rect) ListBox.super.onRenderFrame(self,dc,rect) - --if self.select2_hint then - -- dc:seek(rect.x1+2,rect.y2):key('SEC_SELECT'):string(': '..self.select2_hint,COLOR_GREY) - --end + if self.select2_hint then + dc:seek(rect.x1+2,rect.y2):string('Shift-Click', COLOR_LIGHTGREEN):string(': '..self.select2_hint, COLOR_GREY) + end end function ListBox:getWantedFrameSize() @@ -236,6 +235,7 @@ function ListBox:onInput(keys) if self.on_cancel then self.on_cancel() end + gui.markMouseClicksHandled(keys) return true end return self:inputToSubviews(keys) From 0ed311c108ec68bcc0ddcd9063f08417130479b1 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 27 Mar 2023 03:52:12 -0700 Subject: [PATCH 089/115] allow exported orders files to be deleted from the import dialog --- plugins/lua/orders.lua | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/plugins/lua/orders.lua b/plugins/lua/orders.lua index 6f5bc677a..50197fce4 100644 --- a/plugins/lua/orders.lua +++ b/plugins/lua/orders.lua @@ -19,15 +19,37 @@ local function do_clear() function() dfhack.run_command('orders', 'clear') end) end +local function get_import_choices() + return dfhack.run_command_silent('orders', 'list'):split('\n') +end + local function do_import() - local output = dfhack.run_command_silent('orders', 'list') - dialogs.ListBox{ - frame_title='Import Manager Orders', + local dlg + local function get_dlg() return dlg end + dlg = dialogs.ListBox{ + frame_title='Import/Delete Manager Orders', with_filter=true, - choices=output:split('\n'), - on_select=function(idx, choice) + choices=get_import_choices(), + on_select=function(_, choice) dfhack.run_command('orders', 'import', choice.text) end, + dismiss_on_select2=false, + on_select2=function(_, choice) + if choice.text:startswith('library/') then return end + local fname = 'dfhack-config/orders/'..choice.text..'.json' + if not dfhack.filesystem.isfile(fname) then return end + dialogs.showYesNoPrompt('Delete orders file?', + 'Are you sure you want to delete "' .. fname .. '"?', nil, + function() + print('deleting ' .. fname) + os.remove(fname) + local list = get_dlg().subviews.list + local filter = list:getFilter() + list:setChoices(get_import_choices(), list:getSelected()) + list:setFilter(filter) + end) + end, + select2_hint='Delete file', }:show() end From d5c8237c913b655d9dc3060aa98810740c129ffa Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 27 Mar 2023 03:53:10 -0700 Subject: [PATCH 090/115] update changelog --- docs/changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/changelog.txt b/docs/changelog.txt index 65194dcfa..d55ab6585 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -59,6 +59,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: - `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 - scripts in installed 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. From b515b337ea55ed06c5223f81f861a77920014d5b Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 27 Mar 2023 08:38:18 -0700 Subject: [PATCH 091/115] silence noisy buildingplan warning about itemless buildings not having items --- plugins/buildingplan/defaultitemfilters.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/buildingplan/defaultitemfilters.cpp b/plugins/buildingplan/defaultitemfilters.cpp index fc7dd9f56..ac0a4699e 100644 --- a/plugins/buildingplan/defaultitemfilters.cpp +++ b/plugins/buildingplan/defaultitemfilters.cpp @@ -60,6 +60,8 @@ DefaultItemFilters::DefaultItemFilters(color_ostream &out, PersistentDataItem &f auto &serialized = filter_config.val(); DEBUG(status,out).print("deserializing default item filters for key %d,%d,%d: %s\n", std::get<0>(key), std::get<1>(key), std::get<2>(key), serialized.c_str()); + if (!jitems.size()) + return; std::vector elems; split_string(&elems, serialized, "|"); std::vector filters = deserialize_item_filters(out, elems[0]); From df51835b1c5d076f3e7440b37e307100bc8b25be Mon Sep 17 00:00:00 2001 From: Tachytaenius Date: Mon, 27 Mar 2023 22:05:06 +0100 Subject: [PATCH 092/115] Amend main module code in modding guide --- docs/guides/modding-guide.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/guides/modding-guide.rst b/docs/guides/modding-guide.rst index 5cabf0856..b386b48c3 100644 --- a/docs/guides/modding-guide.rst +++ b/docs/guides/modding-guide.rst @@ -457,6 +457,8 @@ Ok, you're all set up! Now, let's take a look at an example enabled = enabled or false function isEnabled() + -- this function is for the enabled API, the script won't show up on the + -- control panel without it return enabled end @@ -473,6 +475,10 @@ Ok, you're all set up! Now, let's take a look at an example dfhack.run_command('enable', 'example-mod') end + if dfhack_flags.module then + return + end + if not dfhack_flags.enable then print(dfhack.script_help()) print() From 02b52fcb3decced37bad3dfd6226f35e7ddf6457 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 27 Mar 2023 16:11:21 -0700 Subject: [PATCH 093/115] confirm for removing burrows via the repaint menu --- docs/changelog.txt | 1 + docs/plugins/confirm.rst | 5 +++-- plugins/lua/confirm.lua | 7 +++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index d55ab6585..62aa4a037 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -52,6 +52,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: ## Misc Improvements - `buildingplan`: filters and global settings are now ignored when manually choosing items for a building +- `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 - `stockpiles`: additive and subtractive modes when applying a second stockpile configuration on top of a first diff --git a/docs/plugins/confirm.rst b/docs/plugins/confirm.rst index f0a34b909..1e6270187 100644 --- a/docs/plugins/confirm.rst +++ b/docs/plugins/confirm.rst @@ -5,8 +5,9 @@ confirm :summary: Adds confirmation dialogs for destructive actions. :tags: fort interface -Now you can get the chance to avoid accidentally disbanding a squad or deleting a -hauling route in case you hit the key accidentally. +In the base game, it is frightenly easy to destroy hours of work with a single +misclick. Now you can avoid the consequences of accidentally disbanding a squad +(for example), or deleting a hauling route. Usage ----- diff --git a/plugins/lua/confirm.lua b/plugins/lua/confirm.lua index 13964645b..1ddf190b4 100644 --- a/plugins/lua/confirm.lua +++ b/plugins/lua/confirm.lua @@ -12,10 +12,11 @@ setmetatable(keys, { -- Mouse keys will be sent as a string instead of interface_key local MOUSE_LEFT = "MOUSE_LEFT" local MOUSE_RIGHT = "MOUSE_RIGHT" + --[[ The screen where a confirmation has been triggered Note that this is *not* necessarily the topmost viewscreen, so do not use gui.getCurViewscreen() or related functions. ]] -screen = nil +--screen = nil function if_nil(obj, default) if obj == nil then @@ -118,7 +119,9 @@ zone_remove.message = "Are you sure you want to remove this zone?" burrow_remove = defconf('burrow-remove') function burrow_remove.intercept_key(key) - return key == MOUSE_LEFT and df.global.game.main_interface.current_hover == 171 + return key == MOUSE_LEFT and + (df.global.game.main_interface.current_hover == 171 or + df.global.game.main_interface.current_hover == 168) end burrow_remove.title = "Remove burrow" burrow_remove.message = "Are you sure you want to remove this burrow?" From db45d20c237904d63a13a752bdce7c917374d3c1 Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Tue, 28 Mar 2023 07:14:31 +0000 Subject: [PATCH 094/115] Auto-update submodules scripts: master --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index bb3dfc0d3..27089b81b 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit bb3dfc0d3e2bdebc4ba6fd814371662457b18917 +Subproject commit 27089b81be6f9de9486118a97a15be4dde09b1b3 From 147b0ba84ab39cd4b180cd5c8241656bdd11f78f Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Tue, 28 Mar 2023 23:36:49 -0700 Subject: [PATCH 095/115] fix and extend Labels/CycleHotkeyLabels --- docs/changelog.txt | 3 +++ docs/dev/Lua API.rst | 4 ++-- library/lua/gui/widgets.lua | 12 ++++++------ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index f09fa8cc1..86ed0f148 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -72,6 +72,9 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: ## Lua - ``widget.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 +- ``widget.Label``: click handlers no longer get the label itself as the first param to the click handler +- ``widget.CycleHotkeyLabel``: options that are bare integers will no longer be interpreted as the pen color in addition to being the label and value +- ``widget.CycleHotkeyLabel``: option labels and pens can now be functions that return a label or pen ## Removed diff --git a/docs/dev/Lua API.rst b/docs/dev/Lua API.rst index 862c5bccc..2af9e39f1 100644 --- a/docs/dev/Lua API.rst +++ b/docs/dev/Lua API.rst @@ -4901,8 +4901,8 @@ It has the following attributes: :label_below: If ``true``, then the option value will apear below the label instead of to the right of it. Defaults to ``false``. :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 diff --git a/library/lua/gui/widgets.lua b/library/lua/gui/widgets.lua index b5497f0d0..b33076cdc 100644 --- a/library/lua/gui/widgets.lua +++ b/library/lua/gui/widgets.lua @@ -1361,11 +1361,11 @@ function Label:onInput(keys) return true end if keys._MOUSE_L_DOWN and self:getMousePos() and self.on_click then - self:on_click() + self.on_click() return true end if keys._MOUSE_R_DOWN and self:getMousePos() and self.on_rclick then - self:on_rclick() + self.on_rclick() return true end for k,v in pairs(self.scroll_keys) do @@ -1560,17 +1560,17 @@ function CycleHotkeyLabel:setOption(value_or_index, call_on_change) end end -local function cyclehotkeylabel_getOptionElem(self, option_idx, key) +local function cyclehotkeylabel_getOptionElem(self, option_idx, key, require_key) option_idx = option_idx or self.option_idx local option = self.options[option_idx] if type(option) == 'table' then return option[key] end - return option + return not require_key and option or nil end function CycleHotkeyLabel:getOptionLabel(option_idx) - return cyclehotkeylabel_getOptionElem(self, option_idx, 'label') + return getval(cyclehotkeylabel_getOptionElem(self, option_idx, 'label')) end function CycleHotkeyLabel:getOptionValue(option_idx) @@ -1578,7 +1578,7 @@ function CycleHotkeyLabel:getOptionValue(option_idx) end function CycleHotkeyLabel:getOptionPen(option_idx) - local pen = cyclehotkeylabel_getOptionElem(self, option_idx, 'pen') + local pen = getval(cyclehotkeylabel_getOptionElem(self, option_idx, 'pen', true)) if type(pen) == 'string' then return nil end return pen end From f2958a552901c5c04505af8b28f1638bd535868b Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Tue, 28 Mar 2023 23:51:52 -0700 Subject: [PATCH 096/115] implement automaterial selection for buildingplan --- docs/changelog.txt | 1 + plugins/buildingplan/buildingplan.cpp | 6 +- plugins/buildingplan/buildingplan.h | 6 ++ plugins/buildingplan/defaultitemfilters.cpp | 10 ++-- plugins/buildingplan/defaultitemfilters.h | 6 +- plugins/lua/buildingplan/itemselection.lua | 61 +++++++++++++++++---- plugins/lua/buildingplan/planneroverlay.lua | 43 +++++++++++---- 7 files changed, 100 insertions(+), 33 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index f09fa8cc1..49c5bc0b5 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -53,6 +53,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: ## Misc Improvements - `buildingplan`: filters and global settings are now ignored when manually choosing items for a building - `buildingplan`: if `suspendmanager` is running, then planned buildings will be left suspended when their items are all attached. `suspendmanager` will unsuspsend 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 diff --git a/plugins/buildingplan/buildingplan.cpp b/plugins/buildingplan/buildingplan.cpp index 11e08c2a0..7debbbf79 100644 --- a/plugins/buildingplan/buildingplan.cpp +++ b/plugins/buildingplan/buildingplan.cpp @@ -938,8 +938,10 @@ static int getMaterialFilter(lua_State *L) { return 1; } -static void setChooseItems(color_ostream &out, df::building_type type, int16_t subtype, int32_t custom, bool choose) { - DEBUG(status,out).print("entering setChooseItems\n"); +static void setChooseItems(color_ostream &out, df::building_type type, int16_t subtype, int32_t custom, int choose) { + DEBUG(status,out).print( + "entering setChooseItems building_type=%d subtype=%d custom=%d choose=%d\n", + type, subtype, custom, choose); BuildingTypeKey key(type, subtype, custom); auto &filters = get_item_filters(out, key); filters.setChooseItems(choose); diff --git a/plugins/buildingplan/buildingplan.h b/plugins/buildingplan/buildingplan.h index 26aa77fbc..5c4f25aa4 100644 --- a/plugins/buildingplan/buildingplan.h +++ b/plugins/buildingplan/buildingplan.h @@ -42,6 +42,12 @@ enum HeatSafety { HEAT_SAFETY_MAGMA = 2, }; +enum ItemSelectionChoice { + ITEM_SELECTION_CHOICE_FILTER = 0, + ITEM_SELECTION_CHOICE_MANUAL = 1, + ITEM_SELECTION_CHOICE_AUTOMATERIAL = 2, +}; + int get_config_val(DFHack::PersistentDataItem &c, int index); bool get_config_bool(DFHack::PersistentDataItem &c, int index); void set_config_val(DFHack::PersistentDataItem &c, int index, int value); diff --git a/plugins/buildingplan/defaultitemfilters.cpp b/plugins/buildingplan/defaultitemfilters.cpp index ac0a4699e..35147579c 100644 --- a/plugins/buildingplan/defaultitemfilters.cpp +++ b/plugins/buildingplan/defaultitemfilters.cpp @@ -39,14 +39,14 @@ static string serialize(const std::vector &item_filters, const std:: } DefaultItemFilters::DefaultItemFilters(color_ostream &out, BuildingTypeKey key, const std::vector &jitems) - : key(key), choose_items(false) { + : key(key), choose_items(ItemSelectionChoice::ITEM_SELECTION_CHOICE_FILTER) { DEBUG(status,out).print("creating persistent data for filter key %d,%d,%d\n", std::get<0>(key), std::get<1>(key), std::get<2>(key)); filter_config = World::AddPersistentData(FILTER_CONFIG_KEY); set_config_val(filter_config, FILTER_CONFIG_TYPE, std::get<0>(key)); set_config_val(filter_config, FILTER_CONFIG_SUBTYPE, std::get<1>(key)); set_config_val(filter_config, FILTER_CONFIG_CUSTOM, std::get<2>(key)); - set_config_bool(filter_config, FILTER_CONFIG_CHOOSE_ITEMS, choose_items); + set_config_val(filter_config, FILTER_CONFIG_CHOOSE_ITEMS, choose_items); item_filters.resize(jitems.size()); for (size_t idx = 0; idx < jitems.size(); ++idx) { item_filters[idx].setMaxQuality(get_max_quality(jitems[idx]), true); @@ -56,7 +56,7 @@ DefaultItemFilters::DefaultItemFilters(color_ostream &out, BuildingTypeKey key, DefaultItemFilters::DefaultItemFilters(color_ostream &out, PersistentDataItem &filter_config, const std::vector &jitems) : key(getKey(filter_config)), filter_config(filter_config) { - choose_items = get_config_bool(filter_config, FILTER_CONFIG_CHOOSE_ITEMS); + choose_items = get_config_val(filter_config, FILTER_CONFIG_CHOOSE_ITEMS); auto &serialized = filter_config.val(); DEBUG(status,out).print("deserializing default item filters for key %d,%d,%d: %s\n", std::get<0>(key), std::get<1>(key), std::get<2>(key), serialized.c_str()); @@ -81,9 +81,9 @@ DefaultItemFilters::DefaultItemFilters(color_ostream &out, PersistentDataItem &f } } -void DefaultItemFilters::setChooseItems(bool choose) { +void DefaultItemFilters::setChooseItems(int choose) { choose_items = choose; - set_config_bool(filter_config, FILTER_CONFIG_CHOOSE_ITEMS, choose); + set_config_val(filter_config, FILTER_CONFIG_CHOOSE_ITEMS, choose); } void DefaultItemFilters::setSpecial(const std::string &special, bool val) { diff --git a/plugins/buildingplan/defaultitemfilters.h b/plugins/buildingplan/defaultitemfilters.h index d7ed12a7b..7d285ce4c 100644 --- a/plugins/buildingplan/defaultitemfilters.h +++ b/plugins/buildingplan/defaultitemfilters.h @@ -14,17 +14,17 @@ public: DefaultItemFilters(DFHack::color_ostream &out, BuildingTypeKey key, const std::vector &jitems); DefaultItemFilters(DFHack::color_ostream &out, DFHack::PersistentDataItem &filter_config, const std::vector &jitems); - void setChooseItems(bool choose); + void setChooseItems(int choose); void setItemFilter(DFHack::color_ostream &out, const ItemFilter &filter, int index); void setSpecial(const std::string &special, bool val); - bool getChooseItems() const { return choose_items; } + int getChooseItems() const { return choose_items; } const std::vector & getItemFilters() const { return item_filters; } const std::set & getSpecials() const { return specials; } private: DFHack::PersistentDataItem filter_config; - bool choose_items; + int choose_items; std::vector item_filters; std::set specials; }; diff --git a/plugins/lua/buildingplan/itemselection.lua b/plugins/lua/buildingplan/itemselection.lua index 8134b9455..9cfe0f843 100644 --- a/plugins/lua/buildingplan/itemselection.lua +++ b/plugins/lua/buildingplan/itemselection.lua @@ -15,6 +15,12 @@ local BUILD_TEXT_HPEN = to_pen{fg=COLOR_WHITE, bg=COLOR_GREEN, keep_lower=true} -- most recent entries are at the *end* of the list local recently_used = {} +function get_automaterial_selection(building_type) + local tracker = recently_used[building_type] + if not tracker or not tracker.list then return end + return tracker.list[#tracker.list] +end + local function sort_by_type(a, b) local ad, bd = a.data, b.data return ad.item_type < bd.item_type or @@ -54,6 +60,7 @@ ItemSelection.ATTRS{ index=DEFAULT_NIL, desc=DEFAULT_NIL, quantity=DEFAULT_NIL, + autoselect=DEFAULT_NIL, on_submit=DEFAULT_NIL, on_cancel=DEFAULT_NIL, } @@ -63,34 +70,55 @@ function ItemSelection:init() self.selected_set = {} local plural = self.quantity == 1 and '' or 's' + local choices = self:get_choices(sort_by_recency) + + if self.autoselect then + self:do_autoselect(choices) + if self.num_selected >= self.quantity then + self:submit(choices) + return + end + end + self:addviews{ widgets.Label{ - frame={t=0, l=0, r=10}, + frame={t=0, l=0, r=16}, text={ - self.desc, - plural, - NEWLINE, + self.desc, plural, NEWLINE, ('Select up to %d item%s ('):format(self.quantity, plural), {text=function() return self.num_selected end}, ' selected)', }, }, widgets.Label{ - frame={r=0, w=11, t=0, h=3}, + frame={r=0, w=15, t=0, h=3}, text_pen=BUILD_TEXT_PEN, text_hpen=BUILD_TEXT_HPEN, text={ - ' ', NEWLINE, - ' Confirm ', NEWLINE, - ' ', + ' Use filter ', NEWLINE, + ' for remaining ', NEWLINE, + ' items ', }, on_click=self:callback('submit'), + visible=function() return self.num_selected < self.quantity end, + }, + widgets.Label{ + frame={r=0, w=15, t=0, h=3}, + text_pen=BUILD_TEXT_PEN, + text_hpen=BUILD_TEXT_HPEN, + text={ + ' ', NEWLINE, + ' Continue ', NEWLINE, + ' ', + }, + on_click=self:callback('submit'), + visible=function() return self.num_selected >= self.quantity end, }, widgets.FilteredList{ view_id='flist', frame={t=3, l=0, r=0, b=4}, case_sensitive=false, - choices=self:get_choices(sort_by_recency), + choices=choices, icon_width=2, on_submit=self:callback('toggle_group'), edit_on_char=function(ch) return ch:match('[%l -]') end, @@ -116,7 +144,7 @@ function ItemSelection:init() widgets.HotkeyLabel{ frame={l=22, b=1}, key='CUSTOM_SHIFT_C', - label='Confirm', + label='Continue', auto_width=true, on_activate=self:callback('submit'), }, @@ -215,6 +243,13 @@ function ItemSelection:get_choices(sort_fn) return choices end +function ItemSelection:do_autoselect(choices) + if #choices == 0 then return end + local desired = get_automaterial_selection(uibs.building_type) + if choices[1].search_key ~= desired then return end + self:toggle_group(1, choices[1]) +end + function ItemSelection:increment_group(idx, choice) local data = choice.data if self.quantity <= self.num_selected then return false end @@ -282,13 +317,13 @@ local function track_recently_used(choices) end end -function ItemSelection:submit() +function ItemSelection:submit(choices) local selected_items = {} for item_id in pairs(self.selected_set) do table.insert(selected_items, item_id) end if #selected_items > 0 then - track_recently_used(self.subviews.flist:getChoices()) + track_recently_used(choices or self.subviews.flist:getChoices()) end self.on_submit(selected_items) end @@ -328,6 +363,7 @@ ItemSelectionScreen.ATTRS { index=DEFAULT_NIL, desc=DEFAULT_NIL, quantity=DEFAULT_NIL, + autoselect=DEFAULT_NIL, on_submit=DEFAULT_NIL, on_cancel=DEFAULT_NIL, } @@ -338,6 +374,7 @@ function ItemSelectionScreen:init() index=self.index, desc=self.desc, quantity=self.quantity, + autoselect=self.autoselect, on_submit=self.on_submit, on_cancel=self.on_cancel, } diff --git a/plugins/lua/buildingplan/planneroverlay.lua b/plugins/lua/buildingplan/planneroverlay.lua index 1ae7885cb..3c08597d3 100644 --- a/plugins/lua/buildingplan/planneroverlay.lua +++ b/plugins/lua/buildingplan/planneroverlay.lua @@ -490,12 +490,21 @@ function PlannerOverlay:init() }, widgets.CycleHotkeyLabel{ view_id='choose', - frame={b=0, l=0, w=25}, + frame={b=0, l=0}, key='CUSTOM_I', - label='Choose from items:', - options={{label='Yes', value=true}, - {label='No', value=false}}, - initial_option=false, + label='Item selection:', + options={ + {label='Use filters', value=0}, + { + label=function() + local automaterial = itemselection.get_automaterial_selection(uibs.building_type) + return ('Last choice (%s)'):format(automaterial or 'Will ask') + end, + value=2, + }, + {label='Manual choice', value=1}, + }, + initial_option=0, on_change=function(choose) buildingplan.setChooseItems(uibs.building_type, uibs.building_subtype, uibs.custom_type, choose) end, @@ -670,10 +679,11 @@ function PlannerOverlay:onInput(keys) if is_choosing_area() or cur_building_has_no_area() then local filters = get_cur_filters() local num_filters = #filters - local choose = self.subviews.choose - if choose:getOptionValue() then + local choose = self.subviews.choose:getOptionValue() + if choose > 0 then local bounds = get_selected_bounds() self:save_placement() + local autoselect = choose == 2 local is_hollow = self.subviews.hollow:getOptionValue() local chosen_items, active_screens = {}, {} local pending = num_filters @@ -681,14 +691,19 @@ function PlannerOverlay:onInput(keys) for idx = num_filters,1,-1 do chosen_items[idx] = {} local filter = filters[idx] - active_screens[idx] = itemselection.ItemSelectionScreen{ + local selection_screen = itemselection.ItemSelectionScreen{ index=idx, desc=require('plugins.buildingplan').get_desc(filter), quantity=get_quantity(filter, is_hollow, bounds), + autoselect=autoselect, on_submit=function(items) chosen_items[idx] = items - active_screens[idx]:dismiss() - active_screens[idx] = nil + if active_screens[idx] then + active_screens[idx]:dismiss() + active_screens[idx] = nil + else + active_screens[idx] = true + end pending = pending - 1 if pending == 0 then df.global.game.main_interface.bottom_mode_selected = df.main_bottom_mode_type.BUILDING_PLACEMENT @@ -702,7 +717,13 @@ function PlannerOverlay:onInput(keys) df.global.game.main_interface.bottom_mode_selected = df.main_bottom_mode_type.BUILDING_PLACEMENT self:restore_placement() end, - }:show() + } + if active_screens[idx] then + -- we've already returned via autoselect + active_screens[idx] = nil + else + active_screens[idx] = selection_screen:show() + end end else self:place_building(get_placement_data()) From 94728489524d682e26499e2cdecfbfaefb76be64 Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Wed, 29 Mar 2023 07:03:34 +0000 Subject: [PATCH 097/115] Auto-update submodules scripts: master --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 27089b81b..71c58248e 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 27089b81be6f9de9486118a97a15be4dde09b1b3 +Subproject commit 71c58248e915b0ccf8ad090fd9a27bc5b9641883 From 12e7ae1207fc3792a266ccc4d8b306013dc14692 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Wed, 29 Mar 2023 00:29:44 -0700 Subject: [PATCH 098/115] sync tags from spreadsheet --- docs/plugins/getplants.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/plugins/getplants.rst b/docs/plugins/getplants.rst index 0a59f2492..05bac71c9 100644 --- a/docs/plugins/getplants.rst +++ b/docs/plugins/getplants.rst @@ -3,7 +3,7 @@ getplants .. dfhack-tool:: :summary: Designate trees for chopping and shrubs for gathering. - :tags: unavailable fort productivity plants + :tags: fort productivity plants Specify the types of trees to cut down and/or shrubs to gather by their plant names. From 0db93762cf495b589658e8d07ee9aa6ca608aef6 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Wed, 29 Mar 2023 15:09:18 -0700 Subject: [PATCH 099/115] bounds check the choice data old forts that persisted data before this attribute existed will have an invalid value --- plugins/buildingplan/defaultitemfilters.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/buildingplan/defaultitemfilters.cpp b/plugins/buildingplan/defaultitemfilters.cpp index 35147579c..069459841 100644 --- a/plugins/buildingplan/defaultitemfilters.cpp +++ b/plugins/buildingplan/defaultitemfilters.cpp @@ -57,6 +57,9 @@ DefaultItemFilters::DefaultItemFilters(color_ostream &out, BuildingTypeKey key, DefaultItemFilters::DefaultItemFilters(color_ostream &out, PersistentDataItem &filter_config, const std::vector &jitems) : key(getKey(filter_config)), filter_config(filter_config) { choose_items = get_config_val(filter_config, FILTER_CONFIG_CHOOSE_ITEMS); + if (choose_items < ItemSelectionChoice::ITEM_SELECTION_CHOICE_FILTER || + choose_items > ItemSelectionChoice::ITEM_SELECTION_CHOICE_AUTOMATERIAL) + choose_items = ItemSelectionChoice::ITEM_SELECTION_CHOICE_FILTER; auto &serialized = filter_config.val(); DEBUG(status,out).print("deserializing default item filters for key %d,%d,%d: %s\n", std::get<0>(key), std::get<1>(key), std::get<2>(key), serialized.c_str()); From 58cbed877b572bee210d0b3ebe98362b8aec25e1 Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Thu, 30 Mar 2023 07:14:18 +0000 Subject: [PATCH 100/115] Auto-update submodules scripts: master --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 71c58248e..f6c4bc97e 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 71c58248e915b0ccf8ad090fd9a27bc5b9641883 +Subproject commit f6c4bc97ec50646b4dc813b0130025e0e0012382 From 0771fddcd3ff1fdc3474ba5571fa25df93bd9135 Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Fri, 31 Mar 2023 07:13:59 +0000 Subject: [PATCH 101/115] Auto-update submodules scripts: master --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index f6c4bc97e..2cb58469e 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit f6c4bc97ec50646b4dc813b0130025e0e0012382 +Subproject commit 2cb58469e0696111d8a29a2d3ce0ca585d29b3f5 From 44adae24abaea4400962eb693401017f0769934c Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 31 Mar 2023 04:45:59 -0700 Subject: [PATCH 102/115] fix items not being filtered correctly in item selection screen --- plugins/buildingplan/buildingplan.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/plugins/buildingplan/buildingplan.cpp b/plugins/buildingplan/buildingplan.cpp index 7debbbf79..81b5feaae 100644 --- a/plugins/buildingplan/buildingplan.cpp +++ b/plugins/buildingplan/buildingplan.cpp @@ -678,13 +678,14 @@ static int scanAvailableItems(color_ostream &out, df::building_type type, int16_ auto other_id = ENUM_ATTR(job_item_vector_id, other, vector_id); for (auto &item : df::global::world->items.other[other_id]) { ItemFilter filter = filters[index]; - if (counts) { + set special = specials; + if (ignore_filters || counts) { // don't filter by material; we want counts for all materials filter.setMaterialMask(0); filter.setMaterials(set()); + special.clear(); } - if (itemPassesScreen(item) && - (ignore_filters || matchesFilters(item, jitem, heat, filter, specials))) { + if (itemPassesScreen(item) && matchesFilters(item, jitem, heat, filter, specials)) { if (item_ids) item_ids->emplace_back(item->id); if (counts) { From 99e2e596c08635ad83d6b4997552622abdbdce9b Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 31 Mar 2023 04:47:54 -0700 Subject: [PATCH 103/115] use normalized specials vector --- plugins/buildingplan/buildingplan.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/buildingplan/buildingplan.cpp b/plugins/buildingplan/buildingplan.cpp index 81b5feaae..eb765c1c4 100644 --- a/plugins/buildingplan/buildingplan.cpp +++ b/plugins/buildingplan/buildingplan.cpp @@ -685,7 +685,7 @@ static int scanAvailableItems(color_ostream &out, df::building_type type, int16_ filter.setMaterials(set()); special.clear(); } - if (itemPassesScreen(item) && matchesFilters(item, jitem, heat, filter, specials)) { + if (itemPassesScreen(item) && matchesFilters(item, jitem, heat, filter, special)) { if (item_ids) item_ids->emplace_back(item->id); if (counts) { From 38d4eea7acc54dc7f6aa540bd9833c21a3a5363d Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 31 Mar 2023 05:02:02 -0700 Subject: [PATCH 104/115] bump to 50.07-beta2 --- CMakeLists.txt | 2 +- docs/changelog.txt | 47 +++++++++++++++++++++++++++++----------------- library/xml | 2 +- scripts | 2 +- 4 files changed, 33 insertions(+), 20 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 790e8f59b..dfb6dfb21 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -192,7 +192,7 @@ endif() # set up versioning. set(DF_VERSION "50.07") -set(DFHACK_RELEASE "beta1") +set(DFHACK_RELEASE "beta2") set(DFHACK_PRERELEASE TRUE) set(DFHACK_VERSION "${DF_VERSION}-${DFHACK_RELEASE}") diff --git a/docs/changelog.txt b/docs/changelog.txt index 790e0a2ea..3fe5fdbbb 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -34,29 +34,45 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: # Future ## New Plugins -- `getplants`: getplants is now available -- `prospector`: prospector tool in fort mode is now available. embark prospect is not yet available and is disabled at this time. + +## Fixes + +## Misc Improvements + +## Documentation + +## API + +## Lua + +## Removed + +# 50.07-beta2 + +## New Plugins +- `getplants`: designate trees for chopping and shrubs for gathering according to type +- `prospector`: get stone, ore, gem, and other tile property counts in fort mode. embark site estimates are not yet available. ## 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 -- `buildingplan`: fixed material filter getting lost for planning buildings on save/reload +- `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 discriminates between dyed and undyed cloth -- `tailor`: no longer defaults to using adamantine -- `tailor`: properly tracks material requirements for already queued orders -- `tailor`: skips units who can't wear clothes -- `tailor`: hopefully won't over-order items any more +- `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 +- `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 unsuspsend 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 +- `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) @@ -64,12 +80,11 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: - `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 -- scripts in installed 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. +- scripts in ``data/installed mods/`` subfolders 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 -- ``untested`` tag has been renamed to ``unavailable`` to better reflect the status of the remaining unavaialable tools. all 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. - -## API +- `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 unavaialable 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 - ``widget.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 @@ -77,8 +92,6 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: - ``widget.CycleHotkeyLabel``: options that are bare integers will no longer be interpreted as the pen color in addition to being the label and value - ``widget.CycleHotkeyLabel``: option labels and pens can now be functions that return a label or pen -## Removed - # 50.07-beta1 ## Fixes diff --git a/library/xml b/library/xml index 8b8ac2de0..739d17867 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit 8b8ac2de03ab5f8e5506864a751933059abfd03e +Subproject commit 739d1786723bbe912f448064c5705092a7936cc6 diff --git a/scripts b/scripts index 2cb58469e..0b55c5418 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 2cb58469e0696111d8a29a2d3ce0ca585d29b3f5 +Subproject commit 0b55c5418970917310bfd437499adfac0be80e0e From 18f1b5c675b99ec067f6423f326e49300908491a Mon Sep 17 00:00:00 2001 From: TaxiService Date: Fri, 31 Mar 2023 17:33:23 +0200 Subject: [PATCH 105/115] attempt#2 to fix masterwork/exceptional/decorated symbols this time we're using a couple of `static_cast(...)` thingies --- library/modules/Items.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/library/modules/Items.cpp b/library/modules/Items.cpp index bfdd525be..9c1217c93 100644 --- a/library/modules/Items.cpp +++ b/library/modules/Items.cpp @@ -720,13 +720,13 @@ df::coord Items::getPosition(df::item *item) return item->pos; } -static char quality_table[] = { 0, '-', '+', '*', '=', '@' }; +static int quality_table[] = { 0, 45, 43, 42, 240, 15 }; static void addQuality(std::string &tmp, int quality) { if (quality > 0 && quality <= 5) { - char c = quality_table[quality]; - tmp = c + tmp + c; + int c = quality_table[quality]; + tmp = static_cast(c) + tmp + static_cast(c); } } @@ -825,7 +825,7 @@ std::string Items::getDescription(df::item *item, int type, bool decorate) addQuality(tmp, item->getQuality()); if (item->isImproved()) { - tmp = "<" + tmp + ">"; + tmp = static_cast(174) + tmp + static_cast(175); addQuality(tmp, item->getImprovementQuality()); } } From 51236f90fa79a1ef810bdea4574f86ffda5cbc0a Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Fri, 31 Mar 2023 21:05:19 -0500 Subject: [PATCH 106/115] update steam launcher this version launches dwarf fortress via the steam client the existing one doesn't set up the steam app context which means access to DF's steam workshop is broken. launching through the steam client avoids this issue. --- docs/changelog.txt | 1 + package/windows/launchdf.c | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 3fe5fdbbb..279acdef7 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -36,6 +36,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: ## New Plugins ## Fixes +- Steam launcher now launches Dwarf Fortress via the Steam client ## Misc Improvements diff --git a/package/windows/launchdf.c b/package/windows/launchdf.c index 9f4b01fcb..588624511 100644 --- a/package/windows/launchdf.c +++ b/package/windows/launchdf.c @@ -2,15 +2,28 @@ int WINAPI wWinMain(HINSTANCE hi, HINSTANCE hpi, PWSTR cmd, int ns) { - STARTUPINFOA si; + STARTUPINFOW si; PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); - if (CreateProcessA("Dwarf Fortress.exe", - NULL, + WCHAR steamPath[1024]; + DWORD datasize = 1024; + + LONG retCode = RegGetValueW(HKEY_CURRENT_USER, L"SOFTWARE\\Valve\\Steam", L"SteamExe", RRF_RT_REG_SZ, NULL, &steamPath, &datasize); + + if (retCode != ERROR_SUCCESS) + { + MessageBoxW(NULL, L"Could not find Steam client executable", NULL, 0); + exit(1); + } + + WCHAR commandLine[1024] = L"steam.exe -applaunch 975370"; + + if (CreateProcessW(steamPath, + commandLine, NULL, NULL, FALSE, @@ -20,7 +33,7 @@ int WINAPI wWinMain(HINSTANCE hi, HINSTANCE hpi, PWSTR cmd, int ns) &si, &pi) == 0) { - MessageBoxA(NULL, "could not launch 'Dwarf Fortress.exe'", NULL, 0); + MessageBoxW(NULL, L"could not launch Dwarf Fortress", NULL, 0); exit(1); } From 92438ed98c39fe18510bbd2c78d12de87fc29aa3 Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Sat, 1 Apr 2023 02:26:16 +0000 Subject: [PATCH 107/115] Auto-update submodules scripts: master --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 0b55c5418..298d9c00c 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 0b55c5418970917310bfd437499adfac0be80e0e +Subproject commit 298d9c00c7df81fc4ca363366dbaebf7f47be489 From d13dfd7d496cf45a5a56e5951457efb4ed9a5e70 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 31 Mar 2023 19:29:01 -0700 Subject: [PATCH 108/115] interpret shrubbery as floor instead of wall --- docs/changelog.txt | 3 ++- plugins/blueprint.cpp | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 279acdef7..b34e66aaa 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -36,7 +36,8 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: ## New Plugins ## Fixes -- Steam launcher now launches Dwarf Fortress via the Steam client +- ``launchdf``: launch Dwarf Fortress via the Steam client so Steam Workshop is functional +- `blueprint`: interpret saplings, shrubs, and twigs as floors instead of walls ## Misc Improvements diff --git a/plugins/blueprint.cpp b/plugins/blueprint.cpp index b09c4d497..39847935d 100644 --- a/plugins/blueprint.cpp +++ b/plugins/blueprint.cpp @@ -229,6 +229,9 @@ static const char * get_tile_dig(const df::coord &pos, const tile_context &) { case tiletype_shape::BOULDER: case tiletype_shape::PEBBLES: case tiletype_shape::BROOK_TOP: + case tiletype_shape::SAPLING: + case tiletype_shape::SHRUB: + case tiletype_shape::TWIG: return "d"; case tiletype_shape::STAIR_UP: return "u"; From 3a6893de53ee3994aa68641dd8b49a423ff617ab Mon Sep 17 00:00:00 2001 From: TaxiService Date: Sat, 1 Apr 2023 16:43:05 +0200 Subject: [PATCH 109/115] attempt to increase code readability following lethosor and myk's suggestions, each symbol now is its own constant with a descriptive name. ...will it work though? --- library/modules/Items.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/library/modules/Items.cpp b/library/modules/Items.cpp index 9c1217c93..75951aaa5 100644 --- a/library/modules/Items.cpp +++ b/library/modules/Items.cpp @@ -720,13 +720,18 @@ df::coord Items::getPosition(df::item *item) return item->pos; } -static int quality_table[] = { 0, 45, 43, 42, 240, 15 }; +static const char MARKER_EXCEPTIONAL = static_cast(240); +static const char MARKER_MASTERWORK = static_cast(15); +static const char MARKER_IMPROVED_LEFT = static_cast(174); +static const char MARKER_IMPROVED_RIGHT = static_cast(175); + +static char quality_table[] = { 0, '-', '+', '*', MARKER_EXCEPTIONAL, MARKER_MASTERWORK }; static void addQuality(std::string &tmp, int quality) { if (quality > 0 && quality <= 5) { - int c = quality_table[quality]; - tmp = static_cast(c) + tmp + static_cast(c); + char c = quality_table[quality]; + tmp = c + tmp + c; } } @@ -825,7 +830,7 @@ std::string Items::getDescription(df::item *item, int type, bool decorate) addQuality(tmp, item->getQuality()); if (item->isImproved()) { - tmp = static_cast(174) + tmp + static_cast(175); + tmp = MARKER_IMPROVED_LEFT + tmp + MARKER_IMPROVED_RIGHT; addQuality(tmp, item->getImprovementQuality()); } } From e3bab1eb6b0c464d33b2a0f981d1e0b645eb1759 Mon Sep 17 00:00:00 2001 From: TaxiService Date: Sat, 1 Apr 2023 23:40:45 +0200 Subject: [PATCH 110/115] simplifying character definition even more removed those pesky superfluous consts and casts... --- library/modules/Items.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/library/modules/Items.cpp b/library/modules/Items.cpp index 75951aaa5..5a34d7385 100644 --- a/library/modules/Items.cpp +++ b/library/modules/Items.cpp @@ -720,12 +720,7 @@ df::coord Items::getPosition(df::item *item) return item->pos; } -static const char MARKER_EXCEPTIONAL = static_cast(240); -static const char MARKER_MASTERWORK = static_cast(15); -static const char MARKER_IMPROVED_LEFT = static_cast(174); -static const char MARKER_IMPROVED_RIGHT = static_cast(175); - -static char quality_table[] = { 0, '-', '+', '*', MARKER_EXCEPTIONAL, MARKER_MASTERWORK }; +static char quality_table[] = { 0, '-', '+', '*', '\xF0', '\x0F' }; static void addQuality(std::string &tmp, int quality) { @@ -830,7 +825,7 @@ std::string Items::getDescription(df::item *item, int type, bool decorate) addQuality(tmp, item->getQuality()); if (item->isImproved()) { - tmp = MARKER_IMPROVED_LEFT + tmp + MARKER_IMPROVED_RIGHT; + tmp = '\xAE' + tmp + '\xAF'; addQuality(tmp, item->getImprovementQuality()); } } From 8d8a4abd13e96c17214dfb84fcbb94ab77f87b9e Mon Sep 17 00:00:00 2001 From: TaxiService Date: Sun, 2 Apr 2023 02:33:09 +0200 Subject: [PATCH 111/115] reverted loss of readability --- library/modules/Items.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/library/modules/Items.cpp b/library/modules/Items.cpp index 5a34d7385..303f9771e 100644 --- a/library/modules/Items.cpp +++ b/library/modules/Items.cpp @@ -720,7 +720,13 @@ df::coord Items::getPosition(df::item *item) return item->pos; } -static char quality_table[] = { 0, '-', '+', '*', '\xF0', '\x0F' }; +// These '\xFF' chars refer to quality markers from curses.png, namely: 250 (≡), 15 (☼), 174 («) and 175 (»). +static const char MARKER_EXCEPTIONAL = '\xF0'; +static const char MARKER_MASTERWORK = '\x0F'; +static const char MARKER_IMPROVED_LEFT = '\xAE'; +static const char MARKER_IMPROVED_RIGHT = '\xAF'; + +static char quality_table[] = { 0, '-', '+', '*', MARKER_EXCEPTIONAL, MARKER_MASTERWORK }; static void addQuality(std::string &tmp, int quality) { @@ -825,7 +831,7 @@ std::string Items::getDescription(df::item *item, int type, bool decorate) addQuality(tmp, item->getQuality()); if (item->isImproved()) { - tmp = '\xAE' + tmp + '\xAF'; + tmp = MARKER_IMPROVED_LEFT + tmp + MARKER_IMPROVED_RIGHT; addQuality(tmp, item->getImprovementQuality()); } } From 5846c3fc12d2021509e501d4d0da10abaa55d0cf Mon Sep 17 00:00:00 2001 From: Myk Date: Sat, 1 Apr 2023 22:11:38 -0700 Subject: [PATCH 112/115] Update changelog.txt --- docs/changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/changelog.txt b/docs/changelog.txt index b34e66aaa..6dde716b3 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -40,6 +40,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: - `blueprint`: interpret saplings, shrubs, and twigs as floors instead of walls ## Misc Improvements +- `buildingplan`: items in the item selection dialog should now use the same item quality symbols as the base game ## Documentation From 9461e609a0a9ea23ecd9b4088c14c7aface63d33 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sat, 1 Apr 2023 22:53:35 -0700 Subject: [PATCH 113/115] adjust text margin in hotkey menu for wide scrollbar --- docs/changelog.txt | 1 + plugins/lua/hotkeys.lua | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index b34e66aaa..6ad97f8fa 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -36,6 +36,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: ## New Plugins ## 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 diff --git a/plugins/lua/hotkeys.lua b/plugins/lua/hotkeys.lua index 0eb09d244..e8121fded 100644 --- a/plugins/lua/hotkeys.lua +++ b/plugins/lua/hotkeys.lua @@ -107,7 +107,7 @@ local function get_bindings_to_hotkeys(hotkeys, bindings) end -- number of non-text tiles: icon, space, space between cmd and hk, scrollbar -local LIST_BUFFER = 2 + 1 + 1 +local LIST_BUFFER = 2 + 1 + 1 + 2 local function get_choices(hotkeys, bindings, is_inverted) local choices, max_width, seen = {}, 0, {} @@ -143,7 +143,7 @@ local function get_choices(hotkeys, bindings, is_inverted) -- adjust width of command fields so the hotkey tokens are right justified for _,choice in ipairs(choices) do local command_token = choice.text[1] - command_token.width = max_width - choice.hk_width - 3 + command_token.width = max_width - choice.hk_width - 5 end return choices, max_width From 55f7643381f973ddb19e3be93f08c4bcfb26160a Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sat, 1 Apr 2023 23:50:14 -0700 Subject: [PATCH 114/115] use the defined constant instead of a magic number --- plugins/lua/hotkeys.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/lua/hotkeys.lua b/plugins/lua/hotkeys.lua index e8121fded..8edb70073 100644 --- a/plugins/lua/hotkeys.lua +++ b/plugins/lua/hotkeys.lua @@ -106,8 +106,8 @@ local function get_bindings_to_hotkeys(hotkeys, bindings) return bindings_to_hotkeys end --- number of non-text tiles: icon, space, space between cmd and hk, scrollbar -local LIST_BUFFER = 2 + 1 + 1 + 2 +-- number of non-text tiles: icon, space between cmd and hk, scrollbar+margin +local LIST_BUFFER = 2 + 1 + 3 local function get_choices(hotkeys, bindings, is_inverted) local choices, max_width, seen = {}, 0, {} @@ -143,7 +143,7 @@ local function get_choices(hotkeys, bindings, is_inverted) -- adjust width of command fields so the hotkey tokens are right justified for _,choice in ipairs(choices) do local command_token = choice.text[1] - command_token.width = max_width - choice.hk_width - 5 + command_token.width = max_width - choice.hk_width - (LIST_BUFFER - 1) end return choices, max_width From 40a6d968bf4425eb8b1ee355aa2c9e784186372e Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Sun, 2 Apr 2023 07:12:31 +0000 Subject: [PATCH 115/115] Auto-update submodules scripts: master --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 298d9c00c..d2dad272e 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 298d9c00c7df81fc4ca363366dbaebf7f47be489 +Subproject commit d2dad272e4b24c043ca62f843511c763fb1f67b5