Repository: rschurade/Ingnomia Branch: master Commit: 5676b6ffc105 Files: 489 Total size: 6.6 MB Directory structure: gitextract_k1kbwdwj/ ├── .clang-format ├── .gitattributes ├── .github/ │ └── workflows/ │ ├── cmake.yml │ └── docs.yml ├── .gitignore ├── .gitmodules ├── 3rdparty/ │ ├── CMakeLists.txt │ ├── NoesisApp/ │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── pch.h │ │ └── register.cpp │ ├── exprtk/ │ │ ├── CMakeLists.txt │ │ ├── exprtk.cpp │ │ ├── exprtk.hpp │ │ └── license/ │ │ └── license.json │ └── fastnoise/ │ ├── CMakeLists.txt │ ├── FastNoise.cpp │ ├── FastNoise.h │ ├── LICENSE │ └── README.md ├── CMakeLists.txt ├── Changelog.md ├── LICENSE ├── README.md ├── cmake/ │ └── modules/ │ ├── FindBugSplat.cmake │ ├── FindNoesis.cmake │ ├── FindOpenAL.cmake │ ├── FindSteam.cmake │ └── windeployqt.cmake ├── content/ │ ├── CMakeLists.txt │ ├── JSON/ │ │ ├── config.json │ │ ├── embarkpresets.json │ │ ├── menusettings.json │ │ ├── newgame.json │ │ └── profs.json │ ├── ai/ │ │ ├── animal_big.xml │ │ ├── animal_guard_dog.xml │ │ ├── animal_hunter.xml │ │ ├── animal_nighthunter.xml │ │ ├── animal_small_pasture.xml │ │ ├── animal_standard.xml │ │ ├── automaton_mark1.xml │ │ ├── automaton_mark2.xml │ │ ├── egg.xml │ │ ├── gnome_standard.xml │ │ ├── gnome_trader.xml │ │ ├── monster_mant_queen.xml │ │ ├── monster_mant_soldier.xml │ │ ├── monster_mant_worker.xml │ │ └── monster_standard.xml │ ├── db/ │ │ └── ingnomia.db.sql │ ├── shaders/ │ │ ├── axle_f.glsl │ │ ├── axle_v.glsl │ │ ├── selection_f.glsl │ │ ├── selection_v.glsl │ │ ├── thoughtbubble_f.glsl │ │ ├── thoughtbubble_v.glsl │ │ ├── world_f.glsl │ │ ├── world_v.glsl │ │ └── worldupdate_c.glsl │ └── xaml/ │ ├── Agriculture.xaml │ ├── CreatureInfo.xaml │ ├── DebugGui.xaml │ ├── Fonts/ │ │ └── SIL Open Font License.txt │ ├── GameGui.xaml │ ├── IngamePage.xaml │ ├── InventoryGui.xaml │ ├── LoadGamePage.xaml │ ├── Main.xaml │ ├── MainMenu.xaml │ ├── MainPage.xaml │ ├── MilitaryGui.xaml │ ├── Neighbors.xaml │ ├── NewGamePage.xaml │ ├── PopulationWindow.xaml │ ├── SelectionGui.xaml │ ├── SettingsPage.xaml │ ├── StockpileGui.xaml │ ├── Theme/ │ │ ├── Fonts/ │ │ │ ├── PT Root UI_Bold.otf │ │ │ └── PT Root UI_Regular.otf │ │ ├── NoesisTheme.Brushes.DarkAqua.xaml │ │ ├── NoesisTheme.Brushes.DarkBlue.xaml │ │ ├── NoesisTheme.Brushes.DarkCrimson.xaml │ │ ├── NoesisTheme.Brushes.DarkEmerald.xaml │ │ ├── NoesisTheme.Brushes.DarkGreen.xaml │ │ ├── NoesisTheme.Brushes.DarkLime.xaml │ │ ├── NoesisTheme.Brushes.DarkOrange.xaml │ │ ├── NoesisTheme.Brushes.DarkPurple.xaml │ │ ├── NoesisTheme.Brushes.DarkRed.xaml │ │ ├── NoesisTheme.Brushes.LightAqua.xaml │ │ ├── NoesisTheme.Brushes.LightBlue.xaml │ │ ├── NoesisTheme.Brushes.LightCrimson.xaml │ │ ├── NoesisTheme.Brushes.LightEmerald.xaml │ │ ├── NoesisTheme.Brushes.LightGreen.xaml │ │ ├── NoesisTheme.Brushes.LightLime.xaml │ │ ├── NoesisTheme.Brushes.LightOrange.xaml │ │ ├── NoesisTheme.Brushes.LightPurple.xaml │ │ ├── NoesisTheme.Brushes.LightRed.xaml │ │ ├── NoesisTheme.Colors.Dark.xaml │ │ ├── NoesisTheme.Colors.Light.xaml │ │ ├── NoesisTheme.DarkAqua.xaml │ │ ├── NoesisTheme.DarkBlue.xaml │ │ ├── NoesisTheme.DarkCrimson.xaml │ │ ├── NoesisTheme.DarkEmerald.xaml │ │ ├── NoesisTheme.DarkGreen.xaml │ │ ├── NoesisTheme.DarkLime.xaml │ │ ├── NoesisTheme.DarkOrange.xaml │ │ ├── NoesisTheme.DarkPurple.xaml │ │ ├── NoesisTheme.DarkRed.xaml │ │ ├── NoesisTheme.Fonts.xaml │ │ ├── NoesisTheme.LightAqua.xaml │ │ ├── NoesisTheme.LightBlue.xaml │ │ ├── NoesisTheme.LightCrimson.xaml │ │ ├── NoesisTheme.LightEmerald.xaml │ │ ├── NoesisTheme.LightGreen.xaml │ │ ├── NoesisTheme.LightLime.xaml │ │ ├── NoesisTheme.LightOrange.xaml │ │ ├── NoesisTheme.LightPurple.xaml │ │ ├── NoesisTheme.LightRed.xaml │ │ └── NoesisTheme.Styles.xaml │ ├── TileInfo.xaml │ ├── WaitPage.xaml │ ├── WorkshopGui.xaml │ ├── localization/ │ │ ├── _.xaml │ │ ├── en_US.xaml │ │ ├── fr_FR.xaml │ │ └── pt_BR.xaml │ └── styles/ │ ├── colors.xaml │ └── mainmenu/ │ ├── pageswap.xaml │ └── styles.xaml ├── devmessages.txt ├── docs/ │ ├── Pipfile │ ├── generate.py │ └── lib/ │ ├── __init__.py │ ├── db.py │ ├── material.py │ ├── render.py │ ├── sprites/ │ │ ├── __init__.py │ │ ├── layout.py │ │ ├── render.py │ │ └── sprite.py │ ├── store.py │ ├── themes/ │ │ ├── __init__.py │ │ └── default/ │ │ ├── __init__.py │ │ ├── assets/ │ │ │ ├── doc.js │ │ │ └── style.css │ │ ├── sprites.py │ │ ├── templates/ │ │ │ ├── base.html.j2 │ │ │ ├── constructions.html.j2 │ │ │ ├── food.html.j2 │ │ │ ├── index.html.j2 │ │ │ ├── item.html.j2 │ │ │ ├── items.html.j2 │ │ │ ├── macros.html.j2 │ │ │ ├── navtable.html.j2 │ │ │ ├── plants.html.j2 │ │ │ ├── sprites.css.j2 │ │ │ ├── tints.svg.j2 │ │ │ ├── workshop.html.j2 │ │ │ └── workshops.html.j2 │ │ └── theme.py │ └── util.py ├── gui/ │ ├── SampleData/ │ │ ├── GameModelSampleData.xaml │ │ ├── StockpileModelSampleData.xaml │ │ └── ViewModelSampleData.xaml │ ├── Src/ │ │ ├── App.config │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ └── stubs.cs │ ├── app.config │ └── gui.csproj ├── keybindings.json ├── resources/ │ └── Plants.docx ├── src/ │ ├── CMakeLists.txt │ ├── base/ │ │ ├── PathFinderThread.cpp │ │ ├── PathFinderThread.h │ │ ├── behaviortree/ │ │ │ ├── bt_factory.cpp │ │ │ ├── bt_factory.h │ │ │ ├── bt_node.cpp │ │ │ ├── bt_node.h │ │ │ ├── bt_nodeaction.cpp │ │ │ ├── bt_nodeaction.h │ │ │ ├── bt_nodebbprecondition.cpp │ │ │ ├── bt_nodebbprecondition.h │ │ │ ├── bt_nodeconditional.cpp │ │ │ ├── bt_nodeconditional.h │ │ │ ├── bt_nodefallback.cpp │ │ │ ├── bt_nodefallback.h │ │ │ ├── bt_nodefallbackstar.cpp │ │ │ ├── bt_nodefallbackstar.h │ │ │ ├── bt_nodeforcefailure.cpp │ │ │ ├── bt_nodeforcefailure.h │ │ │ ├── bt_nodeforcesuccess.cpp │ │ │ ├── bt_nodeforcesuccess.h │ │ │ ├── bt_nodeinverter.cpp │ │ │ ├── bt_nodeinverter.h │ │ │ ├── bt_noderepeat.cpp │ │ │ ├── bt_noderepeat.h │ │ │ ├── bt_noderepeatuntilsuccess.cpp │ │ │ ├── bt_noderepeatuntilsuccess.h │ │ │ ├── bt_nodesequence.cpp │ │ │ ├── bt_nodesequence.h │ │ │ ├── bt_nodesequencestar.cpp │ │ │ ├── bt_nodesequencestar.h │ │ │ └── bt_tree.h │ │ ├── config.cpp │ │ ├── config.h │ │ ├── counter.h │ │ ├── crashhandler.cpp │ │ ├── crashhandler.h │ │ ├── db.cpp │ │ ├── db.h │ │ ├── dbhelper.cpp │ │ ├── dbhelper.h │ │ ├── dbstructs.h │ │ ├── enums.h │ │ ├── filter.cpp │ │ ├── filter.h │ │ ├── gamestate.cpp │ │ ├── gamestate.h │ │ ├── global.cpp │ │ ├── global.h │ │ ├── io.cpp │ │ ├── io.h │ │ ├── lightmap.cpp │ │ ├── lightmap.h │ │ ├── logger.cpp │ │ ├── logger.h │ │ ├── octree.cpp │ │ ├── octree.h │ │ ├── pathfinder.cpp │ │ ├── pathfinder.h │ │ ├── position.h │ │ ├── priorityqueue.h │ │ ├── region.cpp │ │ ├── region.h │ │ ├── regionmap.cpp │ │ ├── regionmap.h │ │ ├── selection.cpp │ │ ├── selection.h │ │ ├── tile.h │ │ ├── util.cpp │ │ ├── util.h │ │ └── vptr.h │ ├── game/ │ │ ├── anatomy.cpp │ │ ├── anatomy.h │ │ ├── animal.cpp │ │ ├── animal.h │ │ ├── automaton.cpp │ │ ├── automaton.h │ │ ├── canwork.cpp │ │ ├── canwork.h │ │ ├── creature.cpp │ │ ├── creature.h │ │ ├── creatureEquipment.cpp │ │ ├── creaturefactory.cpp │ │ ├── creaturefactory.h │ │ ├── creaturemanager.cpp │ │ ├── creaturemanager.h │ │ ├── eventmanager.cpp │ │ ├── eventmanager.h │ │ ├── farm.cpp │ │ ├── farm.h │ │ ├── farmingmanager.cpp │ │ ├── farmingmanager.h │ │ ├── fluidmanager.cpp │ │ ├── fluidmanager.h │ │ ├── game.cpp │ │ ├── game.h │ │ ├── gamemanager.cpp │ │ ├── gamemanager.h │ │ ├── gnome.cpp │ │ ├── gnome.h │ │ ├── gnomeactions.cpp │ │ ├── gnomeconditions.cpp │ │ ├── gnomefactory.cpp │ │ ├── gnomefactory.h │ │ ├── gnomemanager.cpp │ │ ├── gnomemanager.h │ │ ├── gnometrader.cpp │ │ ├── gnometrader.h │ │ ├── grove.cpp │ │ ├── grove.h │ │ ├── inventory.cpp │ │ ├── inventory.h │ │ ├── item.cpp │ │ ├── item.h │ │ ├── itemhistory.cpp │ │ ├── itemhistory.h │ │ ├── job.cpp │ │ ├── job.h │ │ ├── jobmanager.cpp │ │ ├── jobmanager.h │ │ ├── mechanismmanager.cpp │ │ ├── mechanismmanager.h │ │ ├── militarymanager.cpp │ │ ├── militarymanager.h │ │ ├── monster.cpp │ │ ├── monster.h │ │ ├── neighbormanager.cpp │ │ ├── neighbormanager.h │ │ ├── newgamesettings.cpp │ │ ├── newgamesettings.h │ │ ├── object.cpp │ │ ├── object.h │ │ ├── pasture.cpp │ │ ├── pasture.h │ │ ├── plant.cpp │ │ ├── plant.h │ │ ├── room.cpp │ │ ├── room.h │ │ ├── roommanager.cpp │ │ ├── roommanager.h │ │ ├── soundmanager.cpp │ │ ├── soundmanager.h │ │ ├── stockpile.cpp │ │ ├── stockpile.h │ │ ├── stockpilemanager.cpp │ │ ├── stockpilemanager.h │ │ ├── techtree.cpp │ │ ├── techtree.h │ │ ├── workshop.cpp │ │ ├── workshop.h │ │ ├── workshopmanager.cpp │ │ ├── workshopmanager.h │ │ ├── world.cpp │ │ ├── world.h │ │ ├── worldconstructions.cpp │ │ ├── worldgenerator.cpp │ │ ├── worldgenerator.h │ │ ├── worldgetters.cpp │ │ ├── worldobject.cpp │ │ └── worldobject.h │ ├── gfx/ │ │ ├── sprite.cpp │ │ ├── sprite.h │ │ ├── spritefactory.cpp │ │ └── spritefactory.h │ ├── gui/ │ │ ├── aggregatoragri.cpp │ │ ├── aggregatoragri.h │ │ ├── aggregatorcreatureinfo.cpp │ │ ├── aggregatorcreatureinfo.h │ │ ├── aggregatordebug.cpp │ │ ├── aggregatordebug.h │ │ ├── aggregatorinventory.cpp │ │ ├── aggregatorinventory.h │ │ ├── aggregatorloadgame.cpp │ │ ├── aggregatorloadgame.h │ │ ├── aggregatormilitary.cpp │ │ ├── aggregatormilitary.h │ │ ├── aggregatorneighbors.cpp │ │ ├── aggregatorneighbors.h │ │ ├── aggregatorpopulation.cpp │ │ ├── aggregatorpopulation.h │ │ ├── aggregatorrenderer.cpp │ │ ├── aggregatorrenderer.h │ │ ├── aggregatorselection.cpp │ │ ├── aggregatorselection.h │ │ ├── aggregatorsettings.cpp │ │ ├── aggregatorsettings.h │ │ ├── aggregatorsound.cpp │ │ ├── aggregatorsound.h │ │ ├── aggregatorstockpile.cpp │ │ ├── aggregatorstockpile.h │ │ ├── aggregatortileinfo.cpp │ │ ├── aggregatortileinfo.h │ │ ├── aggregatorworkshop.cpp │ │ ├── aggregatorworkshop.h │ │ ├── eventconnector.cpp │ │ ├── eventconnector.h │ │ ├── keybindings.cpp │ │ ├── keybindings.h │ │ ├── license.h.in │ │ ├── mainwindow.cpp │ │ ├── mainwindow.h │ │ ├── mainwindowrenderer.cpp │ │ ├── mainwindowrenderer.h │ │ ├── openalwrapper.cpp │ │ ├── openalwrapper.h │ │ ├── strings.cpp │ │ ├── strings.h │ │ └── xaml/ │ │ ├── GameGui.xaml.cpp │ │ ├── GameGui.xaml.h │ │ ├── GameModel.cpp │ │ ├── GameModel.h │ │ ├── IngamePage.xaml.cpp │ │ ├── IngamePage.xaml.h │ │ ├── LoadGameModel.cpp │ │ ├── LoadGameModel.h │ │ ├── LoadGamePage.xaml.cpp │ │ ├── LoadGamePage.xaml.h │ │ ├── Main.xaml.cpp │ │ ├── Main.xaml.h │ │ ├── MainMenu.xaml.cpp │ │ ├── MainMenu.xaml.h │ │ ├── MainPage.xaml.cpp │ │ ├── MainPage.xaml.h │ │ ├── NewGameModel.cpp │ │ ├── NewGameModel.h │ │ ├── NewGamePage.xaml.cpp │ │ ├── NewGamePage.xaml.h │ │ ├── Population.xaml.cpp │ │ ├── Population.xaml.h │ │ ├── PopulationModel.cpp │ │ ├── PopulationModel.h │ │ ├── ProxyGameView.cpp │ │ ├── ProxyGameView.h │ │ ├── ProxyMainView.cpp │ │ ├── ProxyMainView.h │ │ ├── ProxyTileInfo.cpp │ │ ├── ProxyTileInfo.h │ │ ├── SettingsModel.cpp │ │ ├── SettingsModel.h │ │ ├── SettingsPage.xaml.cpp │ │ ├── SettingsPage.xaml.h │ │ ├── StockpileModel.cpp │ │ ├── StockpileModel.h │ │ ├── StockpileProxy.cpp │ │ ├── StockpileProxy.h │ │ ├── TileInfo.xaml.cpp │ │ ├── TileInfo.xaml.h │ │ ├── TileInfoModel.cpp │ │ ├── TileInfoModel.h │ │ ├── ViewModel.cpp │ │ ├── ViewModel.h │ │ ├── WaitPage.xaml.cpp │ │ ├── WaitPage.xaml.h │ │ ├── agriculture.xaml.cpp │ │ ├── agriculture.xaml.h │ │ ├── agriculturemodel.cpp │ │ ├── agriculturemodel.h │ │ ├── agricultureproxy.cpp │ │ ├── agricultureproxy.h │ │ ├── converters.cpp │ │ ├── converters.h │ │ ├── creatureinfo.xaml.cpp │ │ ├── creatureinfo.xaml.h │ │ ├── creatureinfomodel.cpp │ │ ├── creatureinfomodel.h │ │ ├── creatureinfoproxy.cpp │ │ ├── creatureinfoproxy.h │ │ ├── debug.xaml.cpp │ │ ├── debug.xaml.h │ │ ├── debugmodel.cpp │ │ ├── debugmodel.h │ │ ├── debugproxy.cpp │ │ ├── debugproxy.h │ │ ├── inventory.xaml.cpp │ │ ├── inventory.xaml.h │ │ ├── inventorymodel.cpp │ │ ├── inventorymodel.h │ │ ├── inventoryproxy.cpp │ │ ├── inventoryproxy.h │ │ ├── loadgameproxy.cpp │ │ ├── loadgameproxy.h │ │ ├── military.xaml.cpp │ │ ├── military.xaml.h │ │ ├── militarymodel.cpp │ │ ├── militarymodel.h │ │ ├── militaryproxy.cpp │ │ ├── militaryproxy.h │ │ ├── neighbors.xaml.cpp │ │ ├── neighbors.xaml.h │ │ ├── neighborsmodel.cpp │ │ ├── neighborsmodel.h │ │ ├── neighborsproxy.cpp │ │ ├── neighborsproxy.h │ │ ├── populationproxy.cpp │ │ ├── populationproxy.h │ │ ├── selection.xaml.cpp │ │ ├── selection.xaml.h │ │ ├── selectionmodel.cpp │ │ ├── selectionmodel.h │ │ ├── selectionproxy.cpp │ │ ├── selectionproxy.h │ │ ├── settingsproxy.cpp │ │ ├── settingsproxy.h │ │ ├── stockpilegui.xaml.cpp │ │ ├── stockpilegui.xaml.h │ │ ├── workshopgui.xaml.cpp │ │ ├── workshopgui.xaml.h │ │ ├── workshopmodel.cpp │ │ ├── workshopmodel.h │ │ ├── workshopproxy.cpp │ │ └── workshopproxy.h │ ├── main.cpp │ ├── pch.h │ └── version.h.in └── windows/ ├── Ingnomia.manifest ├── Ingnomia.rc └── resource.h ================================================ FILE CONTENTS ================================================ ================================================ FILE: .clang-format ================================================ --- BasedOnStyle: Microsoft AccessModifierOffset: '-4' AlignAfterOpenBracket: AlwaysBreak AlignConsecutiveAssignments: 'true' AlignConsecutiveMacros: 'true' BinPackArguments: 'true' BinPackParameters: 'true' BreakBeforeBraces: Allman BreakConstructorInitializers: AfterColon BreakInheritanceList: AfterColon ColumnLimit: '0' Cpp11BracedListStyle: 'false' IncludeBlocks: 'Regroup' IncludeCategories: - Regex: '".*"' Priority: 1 - Regex: '' Priority: 2 - Regex: '' Priority: 3 - Regex: '<[[:alnum:_]]+>' Priority: 4 - Regex: '<[[:alnum:]._]+\>' Priority: 5 IndentCaseLabels: 'true' IndentWidth: '4' SortIncludes: 'true' SpaceBeforeCpp11BracedList: 'true' SpaceBeforeRangeBasedForLoopColon: 'true' SpaceInEmptyParentheses: 'false' SpacesInParentheses: 'true' TabWidth: '4' UseTab: ForContinuationAndIndentation PointerAlignment: Left ... ================================================ FILE: .gitattributes ================================================ /src/gui/license.h *.h diff=cpp *.c diff=cpp *.cpp diff=cpp *.rc text=auto diff=cpp ================================================ FILE: .github/workflows/cmake.yml ================================================ name: CMake on: [push, workflow_dispatch] env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) BUILD_TYPE: RelWithDebInfo jobs: build: # The CMake configure and build commands are platform agnostic and should work equally # well on Windows or Mac. You can convert this to a matrix build if you need # cross-platform coverage. # See: https://docs.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow#configuring-a-build-matrix strategy: fail-fast: false matrix: config: - { os: 'windows-2019', sfml: 'https://github.com/rschurade/IngnomiaBuildDeps/raw/master/SFML-2.5.1-windows-vc15-64-bit.zip', noesis: 'https://github.com/rschurade/IngnomiaBuildDeps/raw/master/NoesisGUI-NativeSDK-win-3.0.12.zip', steam: 'https://github.com/rschurade/IngnomiaBuildDeps/raw/master/steamworks_sdk_150.zip', } - { os: 'ubuntu-18.04', sfml: 'https://github.com/rschurade/IngnomiaBuildDeps/raw/master/SFML-2.5.1-linux-gcc-64-bit.tar', noesis: 'https://github.com/rschurade/IngnomiaBuildDeps/raw/master/NoesisGUI-NativeSDK-linux-3.0.12.zip', steam: 'https://github.com/rschurade/IngnomiaBuildDeps/raw/master/steamworks_sdk_150.zip', } runs-on: ${{ matrix.config.os }} steps: - uses: actions/checkout@v2 - name: Get latest CMake # Using 'latest' branch, the latest CMake is installed. uses: lukka/get-cmake@latest - name: Cache Qt id: cache-qt uses: actions/cache@v1 with: path: '${{ github.workspace }}/Qt/' key: ${{ runner.os }}-QtCache - name: Install Qt uses: jurplel/install-qt-action@v2 with: version: '5.14.2' dir: '${{ github.workspace }}/Qt/' cached: ${{ steps.cache-qt.outputs.cache-hit }} - name: Download Steam uses: carlosperate/download-file-action@v1.0.3 id: download-steam with: file-url: ${{ matrix.config.steam }} - name: Unpack Steam uses: DuckSoft/extract-7z-action@v1.0 with: pathSource: ${{ steps.download-steam.outputs.file-path }} pathTarget: steamworks_sdk - name: Download Noesis uses: carlosperate/download-file-action@v1.0.3 id: download-noesis with: file-url: ${{ matrix.config.noesis }} - name: Unpack Noesis uses: DuckSoft/extract-7z-action@v1.0 with: pathSource: ${{ steps.download-noesis.outputs.file-path }} pathTarget: noesis_sdk - name: Download BugSplat uses: carlosperate/download-file-action@v1.0.3 id: download-bugsplat with: file-url: 'https://github.com/rschurade/IngnomiaBuildDeps/raw/master/BugSplatNative.zip' - name: Unpack BugSplat uses: DuckSoft/extract-7z-action@v1.0 with: pathSource: ${{ steps.download-bugsplat.outputs.file-path }} pathTarget: bugsplat_sdk - name: Install OpenAL Linux if: (!startsWith(matrix.config.os, 'windows')) shell: bash run: sudo apt-get -yq install libopenal-dev - name: Download OpenAL Windows if: (startsWith(matrix.config.os, 'windows')) uses: carlosperate/download-file-action@v1.0.3 id: download-openal with: file-url: 'https://github.com/rschurade/IngnomiaBuildDeps/raw/master/openal.zip' - name: Unpack OpenAL Windows if: (startsWith(matrix.config.os, 'windows')) uses: DuckSoft/extract-7z-action@v1.0 with: pathSource: ${{ steps.download-openal.outputs.file-path }} pathTarget: openal_sdk - name: Download Tilesheets uses: carlosperate/download-file-action@v1.0.3 id: download-tilesheet with: file-url: 'https://github.com/rschurade/IngnomiaBuildDeps/raw/master/tilesheet.zip' - name: Unpack Tilesheets uses: DuckSoft/extract-7z-action@v1.0 with: pathSource: ${{ steps.download-tilesheet.outputs.file-path }} pathTarget: content - name: Download Audio Files uses: carlosperate/download-file-action@v1.0.3 id: download-audio with: file-url: 'https://github.com/rschurade/IngnomiaBuildDeps/raw/master/audio.zip' - name: Unpack Audio Files uses: DuckSoft/extract-7z-action@v1.0 with: pathSource: ${{ steps.download-audio.outputs.file-path }} pathTarget: content - name: Fix permissions if: (!startsWith(matrix.config.os, 'windows')) shell: bash run: chmod +x ${{github.workspace}}/noesis_sdk/Src/Tools/Bin2h/bin2h.py - name: Create Build Environment run: cmake -E make_directory build - name: Configure CMake working-directory: ${{github.workspace}}/build shell: bash env: NOESIS_LICENSE_KEY: ${{ secrets.NOESIS_LICENSE_KEY }} NOESIS_LICENSE_NAME: ${{ secrets.NOESIS_LICENSE_NAME }} BUGSPLAT_DB: ${{ secrets.BUGSPLAT_DB }} run: | cmake -S .. -B . -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_INSTALL_BINDIR="." -DSTEAM_SDK_ROOT=../steamworks_sdk/sdk -DNOESIS_ROOT=../noesis_sdk -DBUGSPLAT_SDK_ROOT=../bugsplat_sdk/bugsplat -DOPENAL_ROOT=../openal_sdk -DNOESIS_LICENSE_NAME="$NOESIS_LICENSE_NAME" -DNOESIS_LICENSE_KEY="$NOESIS_LICENSE_KEY" -DBUGSPLAT_DB="$BUGSPLAT_DB" -DGIT_REPO="${{github.repository}}" -DGIT_REF="${{github.ref}}" -DGIT_SHA="${{github.sha}}" -DBUILD_ID="${{github.run_id}}" - name: Build working-directory: ${{github.workspace}}/build shell: bash run: | cmake --build . --config ${{env.BUILD_TYPE}} --target Ingnomia - name: Install working-directory: ${{github.workspace}}/build shell: bash run: | cmake --install . --prefix ../install --config ${{env.BUILD_TYPE}} - name: Find msbuild if: (startsWith(matrix.config.os, 'windows')) uses: microsoft/setup-msbuild@v1.0.2 id: msbuild - name: Build Blend project if: (startsWith(matrix.config.os, 'windows')) working-directory: ${{github.workspace}}/gui shell: pwsh # Ignore errors for now run: | MSBuild.exe -t:restore gui.csproj MSBuild.exe gui.csproj - uses: actions/upload-artifact@v2 with: name: "${{matrix.config.os}}-${{github.run_id}}" path: | install/ !**./*.iobj !**./*.ipdb ================================================ FILE: .github/workflows/docs.yml ================================================ name: Docs on: push: tags: - '*' workflow_dispatch: jobs: docs: runs-on: ubuntu-latest steps: - uses: actions/setup-python@v2 with: python-version: '3.9' - uses: dschep/install-pipenv-action@v1 - uses: actions/checkout@v2 - name: Download Tilesheets uses: carlosperate/download-file-action@v1.0.3 id: download-tilesheet with: file-url: 'https://github.com/rschurade/IngnomiaBuildDeps/raw/master/tilesheet.zip' - name: Unpack Tilesheets uses: DuckSoft/extract-7z-action@v1.0 with: pathSource: ${{ steps.download-tilesheet.outputs.file-path }} pathTarget: content - name: Setup venv working-directory: docs run: | pipenv install - name: Generate docs working-directory: docs run: | pipenv run ./generate.py --build ${GITHUB_REF#refs/*/} - name: Deploy docs to gh-pages uses: crazy-max/ghaction-github-pages@v2 with: keep_history: true build_dir: docs/html fqdn: ${{ secrets.DOCS_DOMAIN }} jekyll: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ================================================ FILE: .gitignore ================================================ # Created by https://www.gitignore.io/api/visualstudio # Edit at https://www.gitignore.io/?templates=visualstudio ### VisualStudio ### ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # User-specific files *.rsuser *.suo *.user *.userosscache *.sln.docstates # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ x64/ x86/ [Aa][Rr][Mm]/ [Aa][Rr][Mm]64/ bld/ [Bb]in/ [Oo]bj/ [Ll]og/ # Visual Studio 2015/2017 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ # Visual Studio 2017 auto generated files Generated\ Files/ # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* # NUNIT *.VisualState.xml TestResult.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c # Benchmark Results BenchmarkDotNet.Artifacts/ # .NET Core project.lock.json project.fragment.lock.json artifacts/ # StyleCop StyleCopReport.xml # Files built by Visual Studio *_i.c *_p.c *_h.h *.ilk *.meta *.obj *.iobj *.pch *.pdb *.ipdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *_wpftmp.csproj *.log *.vspscc *.vssscc .builds *.pidb *.svclog *.scc # Chutzpah Test files _Chutzpah* # Visual C++ cache files ipch/ *.aps *.ncb *.opendb *.opensdf *.sdf *.cachefile *.VC.db *.VC.VC.opendb # Visual Studio profiler *.psess *.vsp *.vspx *.sap # Visual Studio Trace Files *.e2e # TFS 2012 Local Workspace $tf/ # Guidance Automation Toolkit *.gpState # ReSharper is a .NET coding add-in _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user # JustCode is a .NET coding add-in .JustCode # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover # AxoCover is a Code Coverage Tool .axoCover/* !.axoCover/settings.json # Visual Studio code coverage results *.coverage *.coveragexml # NCrunch _NCrunch_* .*crunch*.local.xml nCrunchTemp_* # MightyMoose *.mm.* AutoTest.Net/ # Web workbench (sass) .sass-cache/ # Installshield output folder [Ee]xpress/ # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT DocProject/Help/*.HxC DocProject/Help/*.hhc DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html # Click-Once directory publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml # Note: Comment the next line if you want to checkin your web deploy settings, # but database connection strings (with potential passwords) will be unencrypted *.pubxml *.publishproj # Microsoft Azure Web App publish settings. Comment the next line if you want to # checkin your Azure Web App publish settings, but sensitive information contained # in these scripts will be unencrypted PublishScripts/ # NuGet Packages *.nupkg # The packages folder can be ignored because of Package Restore **/[Pp]ackages/* # except build/, which is used as an MSBuild target. !**/[Pp]ackages/build/ # Uncomment if necessary however generally it will be regenerated when needed #!**/[Pp]ackages/repositories.config # NuGet v3's project.json files produces more ignorable files *.nuget.props *.nuget.targets # Microsoft Azure Build Output csx/ *.build.csdef # Microsoft Azure Emulator ecf/ rcf/ # Windows Store app package directories and files AppPackages/ BundleArtifacts/ Package.StoreAssociation.xml _pkginfo.txt *.appx # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache !?*.[Cc]ache/ # Others ClientBin/ ~$* *~ *.dbmdl *.dbproj.schemaview *.jfm *.pfx *.publishsettings orleans.codegen.cs # Including strong name files can present a security risk # (https://github.com/github/gitignore/pull/2483#issue-259490424) #*.snk # Since there are multiple workflows, uncomment next line to ignore bower_components # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) #bower_components/ # ASP.NET Core default setup: bower directory is configured as wwwroot/lib/ and bower restore is true **/wwwroot/lib/ # RIA/Silverlight projects Generated_Code/ # Backup & report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm ServiceFabricBackup/ *.rptproj.bak # SQL Server files *.mdf *.ldf *.ndf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings *.rptproj.rsuser # Microsoft Fakes FakesAssemblies/ # GhostDoc plugin setting file *.GhostDoc.xml # Node.js Tools for Visual Studio .ntvs_analysis.dat node_modules/ # Visual Studio 6 build log *.plg # Visual Studio 6 workspace options file *.opt # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) *.vbw # Visual Studio LightSwitch build output **/*.HTMLClient/GeneratedArtifacts **/*.DesktopClient/GeneratedArtifacts **/*.DesktopClient/ModelManifest.xml **/*.Server/GeneratedArtifacts **/*.Server/ModelManifest.xml _Pvt_Extensions # Paket dependency manager .paket/paket.exe paket-files/ # FAKE - F# Make .fake/ # JetBrains Rider .idea/ *.sln.iml # CodeRush personal settings .cr/personal # Python Tools for Visual Studio (PTVS) __pycache__/ *.pyc # Cake - Uncomment if you are using it # tools/** # !tools/packages.config # Tabs Studio *.tss # Telerik's JustMock configuration file *.jmconfig # BizTalk build output *.btp.cs *.btm.cs *.odx.cs *.xsd.cs # OpenCover UI analysis results OpenCover/ # Azure Stream Analytics local run output ASALocalRun/ # MSBuild Binary and Structured Log *.binlog # NVidia Nsight GPU debugger configuration file *.nvuser # MFractors (Xamarin productivity tool) working folder .mfractor/ # Local History for Visual Studio .localhistory/ # BeatPulse healthcheck temp database healthchecksdb # End of https://www.gitignore.io/api/visualstudio GeneratedFiles /RetrofitMenuCreator/settings.ini /spriteconv.json /file /src/gui/license.h /src/version.h /content/tilesheet /content/db/ingnomia.db # create by https://github.com/iamcco/coc-gitignore (Mon Aug 10 2020 12:20:22 GMT-0500 (hora estándar de Perú)) # CMake.gitignore: CMakeLists.txt.user CMakeCache.txt CMakeFiles CMakeScripts Testing Makefile cmake_install.cmake install_manifest.txt compile_commands.json CTestTestfile.cmake _deps # CMake.patch: # External projects *-prefix/ build/ /content/db/*.db # Visual studio code .vscode # Doc /docs/html /content/audio ================================================ FILE: .gitmodules ================================================ [submodule "src/base/beehive"] path = src/base/beehive url = https://github.com/crust/beehive.git ================================================ FILE: 3rdparty/CMakeLists.txt ================================================ add_subdirectory(exprtk) add_subdirectory(fastnoise) add_subdirectory(NoesisApp) set_target_properties(exprtk PROPERTIES FOLDER 3rdParty) set_target_properties(fastnoise PROPERTIES FOLDER 3rdParty) set_target_properties(NoesisApp PROPERTIES FOLDER 3rdParty) ================================================ FILE: 3rdparty/NoesisApp/CMakeLists.txt ================================================ project(NoesisApp) add_library(${PROJECT_NAME}) # All used packages. Same list of packages must be added to register.cpp set(NOESIS_APP_PACKAGES App/ApplicationLauncher App/DisplayLauncher App/Display App/Launcher App/Providers App/Theme App/Interactivity App/MediaElement Render/GLRenderContext Render/GLRenderDevice Render/RenderContext ) find_package(Noesis REQUIRED) target_link_libraries(${PROJECT_NAME} PUBLIC Noesis ) target_compile_definitions( ${PROJECT_NAME} PUBLIC NS_DEBUG NS_PROFILE NS_MINIMUM_LOG_LEVEL=0 PRIVATE NS_APP_FRAMEWORK ) target_precompile_headers(${PROJECT_NAME} PRIVATE pch.h ) # Iterate over packages, and collect include + source directories foreach(PACKAGE ${NOESIS_APP_PACKAGES}) set(PACKAGE_ROOT "${NOESIS_ROOT}/Src/Packages/${PACKAGE}") set(INCLUDE_DIR "${PACKAGE_ROOT}/Include") file(GLOB_RECURSE PKG_SRCS "${PACKAGE_ROOT}/*.cpp" "${PACKAGE_ROOT}/*.h") file(GLOB_RECURSE PKG_RES "${PACKAGE_ROOT}/*.xaml" "${PACKAGE_ROOT}/*.ttf" "${PACKAGE_ROOT}/*.ttf" "${PACKAGE_ROOT}/*.otf") list(APPEND NOESIS_APP_SRC ${PKG_SRCS}) list(APPEND NOESIS_APP_BIN2H ${PKG_RES}) if(EXISTS ${INCLUDE_DIR}) target_include_directories(${PROJECT_NAME} PUBLIC ${INCLUDE_DIR} ) string(REPLACE "/" ";" PACKAGE_SPLIT ${PACKAGE}) list(GET PACKAGE_SPLIT 0 PACKAGE_NAME) list(GET PACKAGE_SPLIT 1 COMPONENT_NAME) set(MAIN_INCLUDE ${INCLUDE_DIR}/Ns${PACKAGE_NAME}/${COMPONENT_NAME}.h) if(EXISTS ${MAIN_INCLUDE}) target_precompile_headers(${PROJECT_NAME} PRIVATE ${MAIN_INCLUDE} ) endif() endif() # Switch package to static linkage string(REPLACE "/" "_" PACKAGENAME ${PACKAGE}) string(TOUPPER ${PACKAGENAME} PACKAGENAME) target_compile_definitions(${PROJECT_NAME} PUBLIC "NS_${PACKAGENAME}_API=" ) endforeach() # Generated sources if(UNIX) set(BIN2H_EXE "${NOESIS_ROOT}/Src/Tools/Bin2h/bin2h.py") elseif(WIN32) set(BIN2H_EXE "${NOESIS_ROOT}/Src/Tools/Bin2h/bin2h.exe") endif() foreach(BIN2H_FILE ${NOESIS_APP_BIN2H}) get_filename_component(BASENAME ${BIN2H_FILE} NAME) set(OUTPUTNAME "${BASENAME}.bin.h") set(OUTPUTPATH "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUTNAME}") add_custom_command( OUTPUT ${OUTPUTNAME} COMMAND ${BIN2H_EXE} ${BIN2H_FILE} > ${OUTPUTPATH} DEPENDS ${BIN2H_FILE} ) list(APPEND NOESIS_APP_GENERATED_PATHS ${OUTPUTPATH}) endforeach() target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ) file(GLOB_RECURSE NOESIS_CORE_INCLUDES "${NOESIS_ROOT}/Include/*.h") target_sources(${PROJECT_NAME} PRIVATE ${NOESIS_APP_GENERATED_PATHS} ${NOESIS_APP_SRC} ${NOESIS_APP_BIN2H} ${NOESIS_CORE_INCLUDES} pch.h register.cpp README.md ) source_group(TREE "${CMAKE_CURRENT_BINARY_DIR}" PREFIX "Generated" FILES ${NOESIS_APP_GENERATED_PATHS}) source_group(TREE "${NOESIS_ROOT}/Src/Packages" PREFIX "NoesisApp" FILES ${NOESIS_APP_SRC}) source_group(TREE "${NOESIS_ROOT}/Src/Packages" PREFIX "Resources" FILES ${NOESIS_APP_BIN2H}) source_group(TREE "${NOESIS_ROOT}/Include" PREFIX "Core" FILES ${NOESIS_CORE_INCLUDES}) if(UNIX) # NoesisApp requires several additional libraries on Linux find_package(Threads REQUIRED) find_package(OpenGL REQUIRED) find_package(X11 REQUIRED) target_link_libraries(${PROJECT_NAME} PRIVATE OpenGL::GL Threads::Threads ${X11_LIBRARIES} ${CMAKE_DL_LIBS} ) endif() ================================================ FILE: 3rdparty/NoesisApp/README.md ================================================ Do NOT add the source code here. Noesis is not under a license which would allow redistribution in source code form. Provide NOESIS_ROOT to CMake and let the source be pulled in from there. ================================================ FILE: 3rdparty/NoesisApp/pch.h ================================================ #pragma once #include ================================================ FILE: 3rdparty/NoesisApp/register.cpp ================================================ //////////////////////////////////////////////////////////////////////////////////////////////////// // NoesisGUI - http://www.noesisengine.com // Copyright (c) 2013 Noesis Technologies S.L. All Rights Reserved. //////////////////////////////////////////////////////////////////////////////////////////////////// #include #define PACKAGE_REGISTER(MODULE, PACKAGE) \ void NsRegisterReflection##MODULE##PACKAGE(); \ NsRegisterReflection##MODULE##PACKAGE() #define PACKAGE_INIT(MODULE, PACKAGE) \ void NsInitPackage##MODULE##PACKAGE(); \ NsInitPackage##MODULE##PACKAGE() #define PACKAGE_SHUTDOWN(MODULE, PACKAGE) \ void NsShutdownPackage##MODULE##PACKAGE(); \ NsShutdownPackage##MODULE##PACKAGE() //////////////////////////////////////////////////////////////////////////////////////////////////// extern "C" void NsRegisterReflection_NoesisApp() { PACKAGE_REGISTER(Render, RenderContext); PACKAGE_REGISTER(Render, GLRenderDevice); PACKAGE_REGISTER(App, Display); PACKAGE_REGISTER(Render, GLRenderContext); PACKAGE_REGISTER(App, Providers); PACKAGE_REGISTER(App, Launcher); PACKAGE_REGISTER(App, Theme); PACKAGE_REGISTER(App, DisplayLauncher); PACKAGE_REGISTER(App, ApplicationLauncher); PACKAGE_REGISTER(App, Interactivity); } //////////////////////////////////////////////////////////////////////////////////////////////////// extern "C" void NsInitPackages_NoesisApp() { PACKAGE_INIT(Render, RenderContext); PACKAGE_INIT(Render, GLRenderDevice); PACKAGE_INIT(App, Display); PACKAGE_INIT(Render, GLRenderContext); PACKAGE_INIT(App, Providers); PACKAGE_INIT(App, Launcher); PACKAGE_INIT(App, Theme); PACKAGE_INIT(App, DisplayLauncher); PACKAGE_INIT(App, ApplicationLauncher); PACKAGE_INIT(App, Interactivity); } //////////////////////////////////////////////////////////////////////////////////////////////////// extern "C" void NsShutdownPackages_NoesisApp() { PACKAGE_SHUTDOWN(App, Interactivity); PACKAGE_SHUTDOWN(App, ApplicationLauncher); PACKAGE_SHUTDOWN(App, DisplayLauncher); PACKAGE_SHUTDOWN(App, Theme); PACKAGE_SHUTDOWN(App, Launcher); PACKAGE_SHUTDOWN(App, Providers); PACKAGE_SHUTDOWN(Render, GLRenderContext); PACKAGE_SHUTDOWN(App, Display); PACKAGE_SHUTDOWN(Render, GLRenderDevice); PACKAGE_SHUTDOWN(Render, RenderContext); } ================================================ FILE: 3rdparty/exprtk/CMakeLists.txt ================================================ add_library(exprtk) target_include_directories(exprtk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ) target_sources(exprtk PRIVATE exprtk.hpp exprtk.cpp ) ================================================ FILE: 3rdparty/exprtk/exprtk.cpp ================================================ #include "exprtk.hpp" ================================================ FILE: 3rdparty/exprtk/exprtk.hpp ================================================ /* ****************************************************************** * C++ Mathematical Expression Toolkit Library * * * * Author: Arash Partow (1999-2017) * * URL: http://www.partow.net/programming/exprtk/index.html * * * * Copyright notice: * * Free use of the C++ Mathematical Expression Toolkit Library is * * permitted under the guidelines and in accordance with the most * * current version of the MIT License. * * http://www.opensource.org/licenses/MIT * * * * Example expressions: * * (00) (y + x / y) * (x - y / x) * * (01) (x^2 / sin(2 * pi / y)) - x / 2 * * (02) sqrt(1 - (x^2)) * * (03) 1 - sin(2 * x) + cos(pi / y) * * (04) a * exp(2 * t) + c * * (05) if(((x + 2) == 3) and ((y + 5) <= 9),1 + w, 2 / z) * * (06) (avg(x,y) <= x + y ? x - y : x * y) + 2 * pi / x * * (07) z := x + sin(2 * pi / y) * * (08) u := 2 * (pi * z) / (w := x + cos(y / pi)) * * (09) clamp(-1,sin(2 * pi * x) + cos(y / 2 * pi),+1) * * (10) inrange(-2,m,+2) == if(({-2 <= m} and [m <= +2]),1,0) * * (11) (2sin(x)cos(2y)7 + 1) == (2 * sin(x) * cos(2*y) * 7 + 1) * * (12) (x ilike 's*ri?g') and [y < (3 z^7 + w)] * * * ****************************************************************** */ #ifndef INCLUDE_EXPRTK_HPP #define INCLUDE_EXPRTK_HPP #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace exprtk { #ifdef exprtk_enable_debugging #define exprtk_debug(params) printf params #else #define exprtk_debug(params) (void)0 #endif #define exprtk_error_location \ "exprtk.hpp:" + details::to_str(__LINE__) \ #if __GNUC__ >= 7 #define exprtk_disable_fallthrough_begin \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wimplicit-fallthrough\"") \ #define exprtk_disable_fallthrough_end \ _Pragma ("GCC diagnostic pop") \ #else #define exprtk_disable_fallthrough_begin (void)0; #define exprtk_disable_fallthrough_end (void)0; #endif namespace details { typedef unsigned char uchar_t; typedef char char_t; inline bool is_whitespace(const char_t c) { return (' ' == c) || ('\n' == c) || ('\r' == c) || ('\t' == c) || ('\b' == c) || ('\v' == c) || ('\f' == c) ; } inline bool is_operator_char(const char_t c) { return ('+' == c) || ('-' == c) || ('*' == c) || ('/' == c) || ('^' == c) || ('<' == c) || ('>' == c) || ('=' == c) || (',' == c) || ('!' == c) || ('(' == c) || (')' == c) || ('[' == c) || (']' == c) || ('{' == c) || ('}' == c) || ('%' == c) || (':' == c) || ('?' == c) || ('&' == c) || ('|' == c) || (';' == c) ; } inline bool is_letter(const char_t c) { return (('a' <= c) && (c <= 'z')) || (('A' <= c) && (c <= 'Z')) ; } inline bool is_digit(const char_t c) { return ('0' <= c) && (c <= '9'); } inline bool is_letter_or_digit(const char_t c) { return is_letter(c) || is_digit(c); } inline bool is_left_bracket(const char_t c) { return ('(' == c) || ('[' == c) || ('{' == c); } inline bool is_right_bracket(const char_t c) { return (')' == c) || (']' == c) || ('}' == c); } inline bool is_bracket(const char_t c) { return is_left_bracket(c) || is_right_bracket(c); } inline bool is_sign(const char_t c) { return ('+' == c) || ('-' == c); } inline bool is_invalid(const char_t c) { return !is_whitespace (c) && !is_operator_char(c) && !is_letter (c) && !is_digit (c) && ('.' != c) && ('_' != c) && ('$' != c) && ('~' != c) && ('\'' != c); } #ifndef exprtk_disable_caseinsensitivity inline void case_normalise(std::string& s) { for (std::size_t i = 0; i < s.size(); ++i) { s[i] = static_cast(std::tolower(s[i])); } } inline bool imatch(const char_t c1, const char_t c2) { return std::tolower(c1) == std::tolower(c2); } inline bool imatch(const std::string& s1, const std::string& s2) { if (s1.size() == s2.size()) { for (std::size_t i = 0; i < s1.size(); ++i) { if (std::tolower(s1[i]) != std::tolower(s2[i])) { return false; } } return true; } return false; } struct ilesscompare { inline bool operator() (const std::string& s1, const std::string& s2) const { const std::size_t length = std::min(s1.size(),s2.size()); for (std::size_t i = 0; i < length; ++i) { const char_t c1 = static_cast(std::tolower(s1[i])); const char_t c2 = static_cast(std::tolower(s2[i])); if (c1 > c2) return false; else if (c1 < c2) return true; } return s1.size() < s2.size(); } }; #else inline void case_normalise(std::string&) {} inline bool imatch(const char_t c1, const char_t c2) { return c1 == c2; } inline bool imatch(const std::string& s1, const std::string& s2) { return s1 == s2; } struct ilesscompare { inline bool operator() (const std::string& s1, const std::string& s2) const { return s1 < s2; } }; #endif inline bool is_valid_sf_symbol(const std::string& symbol) { // Special function: $f12 or $F34 return (4 == symbol.size()) && ('$' == symbol[0]) && imatch('f',symbol[1]) && is_digit(symbol[2]) && is_digit(symbol[3]); } inline const char_t& front(const std::string& s) { return s[0]; } inline const char_t& back(const std::string& s) { return s[s.size() - 1]; } inline std::string to_str(int i) { if (0 == i) return std::string("0"); std::string result; if (i < 0) { for ( ; i; i /= 10) { result += '0' + char(-(i % 10)); } result += '-'; } else { for ( ; i; i /= 10) { result += '0' + char(i % 10); } } std::reverse(result.begin(), result.end()); return result; } inline std::string to_str(std::size_t i) { return to_str(static_cast(i)); } inline bool is_hex_digit(const std::string::value_type digit) { return (('0' <= digit) && (digit <= '9')) || (('A' <= digit) && (digit <= 'F')) || (('a' <= digit) && (digit <= 'f')) ; } inline uchar_t hex_to_bin(uchar_t h) { if (('0' <= h) && (h <= '9')) return (h - '0'); else return static_cast(std::toupper(h) - 'A'); } template inline void parse_hex(Iterator& itr, Iterator end, std::string::value_type& result) { if ( (end != (itr )) && (end != (itr + 1)) && (end != (itr + 2)) && (end != (itr + 3)) && ('0' == *(itr )) && ( ('x' == *(itr + 1)) || ('X' == *(itr + 1)) ) && (is_hex_digit(*(itr + 2))) && (is_hex_digit(*(itr + 3))) ) { result = hex_to_bin(static_cast(*(itr + 2))) << 4 | hex_to_bin(static_cast(*(itr + 3))) ; itr += 3; } else result = '\0'; } inline void cleanup_escapes(std::string& s) { typedef std::string::iterator str_itr_t; str_itr_t itr1 = s.begin(); str_itr_t itr2 = s.begin(); str_itr_t end = s.end (); std::size_t removal_count = 0; while (end != itr1) { if ('\\' == (*itr1)) { ++removal_count; if (end == ++itr1) break; else if ('\\' != (*itr1)) { switch (*itr1) { case 'n' : (*itr1) = '\n'; break; case 'r' : (*itr1) = '\r'; break; case 't' : (*itr1) = '\t'; break; case '0' : parse_hex(itr1, end, (*itr1)); removal_count += 3; break; } continue; } } if (itr1 != itr2) { (*itr2) = (*itr1); } ++itr1; ++itr2; } s.resize(s.size() - removal_count); } class build_string { public: build_string(const std::size_t& initial_size = 64) { data_.reserve(initial_size); } inline build_string& operator << (const std::string& s) { data_ += s; return (*this); } inline build_string& operator << (const char_t* s) { data_ += std::string(s); return (*this); } inline operator std::string () const { return data_; } inline std::string as_string() const { return data_; } private: std::string data_; }; static const std::string reserved_words[] = { "break", "case", "continue", "default", "false", "for", "if", "else", "ilike", "in", "like", "and", "nand", "nor", "not", "null", "or", "repeat", "return", "shl", "shr", "swap", "switch", "true", "until", "var", "while", "xnor", "xor", "&", "|" }; static const std::size_t reserved_words_size = sizeof(reserved_words) / sizeof(std::string); static const std::string reserved_symbols[] = { "abs", "acos", "acosh", "and", "asin", "asinh", "atan", "atanh", "atan2", "avg", "break", "case", "ceil", "clamp", "continue", "cos", "cosh", "cot", "csc", "default", "deg2grad", "deg2rad", "equal", "erf", "erfc", "exp", "expm1", "false", "floor", "for", "frac", "grad2deg", "hypot", "iclamp", "if", "else", "ilike", "in", "inrange", "like", "log", "log10", "log2", "logn", "log1p", "mand", "max", "min", "mod", "mor", "mul", "ncdf", "nand", "nor", "not", "not_equal", "null", "or", "pow", "rad2deg", "repeat", "return", "root", "round", "roundn", "sec", "sgn", "shl", "shr", "sin", "sinc", "sinh", "sqrt", "sum", "swap", "switch", "tan", "tanh", "true", "trunc", "until", "var", "while", "xnor", "xor", "&", "|" }; static const std::size_t reserved_symbols_size = sizeof(reserved_symbols) / sizeof(std::string); static const std::string base_function_list[] = { "abs", "acos", "acosh", "asin", "asinh", "atan", "atanh", "atan2", "avg", "ceil", "clamp", "cos", "cosh", "cot", "csc", "equal", "erf", "erfc", "exp", "expm1", "floor", "frac", "hypot", "iclamp", "like", "log", "log10", "log2", "logn", "log1p", "mand", "max", "min", "mod", "mor", "mul", "ncdf", "pow", "root", "round", "roundn", "sec", "sgn", "sin", "sinc", "sinh", "sqrt", "sum", "swap", "tan", "tanh", "trunc", "not_equal", "inrange", "deg2grad", "deg2rad", "rad2deg", "grad2deg" }; static const std::size_t base_function_list_size = sizeof(base_function_list) / sizeof(std::string); static const std::string logic_ops_list[] = { "and", "nand", "nor", "not", "or", "xnor", "xor", "&", "|" }; static const std::size_t logic_ops_list_size = sizeof(logic_ops_list) / sizeof(std::string); static const std::string cntrl_struct_list[] = { "if", "switch", "for", "while", "repeat", "return" }; static const std::size_t cntrl_struct_list_size = sizeof(cntrl_struct_list) / sizeof(std::string); static const std::string arithmetic_ops_list[] = { "+", "-", "*", "/", "%", "^" }; static const std::size_t arithmetic_ops_list_size = sizeof(arithmetic_ops_list) / sizeof(std::string); static const std::string assignment_ops_list[] = { ":=", "+=", "-=", "*=", "/=", "%=" }; static const std::size_t assignment_ops_list_size = sizeof(assignment_ops_list) / sizeof(std::string); static const std::string inequality_ops_list[] = { "<", "<=", "==", "=", "!=", "<>", ">=", ">" }; static const std::size_t inequality_ops_list_size = sizeof(inequality_ops_list) / sizeof(std::string); inline bool is_reserved_word(const std::string& symbol) { for (std::size_t i = 0; i < reserved_words_size; ++i) { if (imatch(symbol, reserved_words[i])) { return true; } } return false; } inline bool is_reserved_symbol(const std::string& symbol) { for (std::size_t i = 0; i < reserved_symbols_size; ++i) { if (imatch(symbol, reserved_symbols[i])) { return true; } } return false; } inline bool is_base_function(const std::string& function_name) { for (std::size_t i = 0; i < base_function_list_size; ++i) { if (imatch(function_name, base_function_list[i])) { return true; } } return false; } inline bool is_control_struct(const std::string& cntrl_strct) { for (std::size_t i = 0; i < cntrl_struct_list_size; ++i) { if (imatch(cntrl_strct, cntrl_struct_list[i])) { return true; } } return false; } inline bool is_logic_opr(const std::string& lgc_opr) { for (std::size_t i = 0; i < logic_ops_list_size; ++i) { if (imatch(lgc_opr, logic_ops_list[i])) { return true; } } return false; } struct cs_match { static inline bool cmp(const char_t c0, const char_t c1) { return (c0 == c1); } }; struct cis_match { static inline bool cmp(const char_t c0, const char_t c1) { return (std::tolower(c0) == std::tolower(c1)); } }; template inline bool match_impl(const Iterator pattern_begin, const Iterator pattern_end, const Iterator data_begin, const Iterator data_end, const typename std::iterator_traits::value_type& zero_or_more, const typename std::iterator_traits::value_type& zero_or_one) { if (0 == std::distance(data_begin,data_end)) { return false; } Iterator d_itr = data_begin; Iterator p_itr = pattern_begin; Iterator c_itr = data_begin; Iterator m_itr = data_begin; while ((data_end != d_itr) && (zero_or_more != (*p_itr))) { if ((!Compare::cmp((*p_itr),(*d_itr))) && (zero_or_one != (*p_itr))) { return false; } ++p_itr; ++d_itr; } while (data_end != d_itr) { if (zero_or_more == (*p_itr)) { if (pattern_end == (++p_itr)) { return true; } m_itr = p_itr; c_itr = d_itr; ++c_itr; } else if ((Compare::cmp((*p_itr),(*d_itr))) || (zero_or_one == (*p_itr))) { ++p_itr; ++d_itr; } else { p_itr = m_itr; d_itr = c_itr++; } } while ((p_itr != pattern_end) && (zero_or_more == (*p_itr))) { ++p_itr; } return (p_itr == pattern_end); } inline bool wc_match(const std::string& wild_card, const std::string& str) { return match_impl(wild_card.data(), wild_card.data() + wild_card.size(), str.data(), str.data() + str.size(), '*', '?'); } inline bool wc_imatch(const std::string& wild_card, const std::string& str) { return match_impl(wild_card.data(), wild_card.data() + wild_card.size(), str.data(), str.data() + str.size(), '*', '?'); } inline bool sequence_match(const std::string& pattern, const std::string& str, std::size_t& diff_index, char_t& diff_value) { if (str.empty()) { return ("Z" == pattern); } else if ('*' == pattern[0]) return false; typedef std::string::const_iterator itr_t; itr_t p_itr = pattern.begin(); itr_t s_itr = str .begin(); itr_t p_end = pattern.end(); itr_t s_end = str .end(); while ((s_end != s_itr) && (p_end != p_itr)) { if ('*' == (*p_itr)) { const char_t target = static_cast(std::toupper(*(p_itr - 1))); if ('*' == target) { diff_index = static_cast(std::distance(str.begin(),s_itr)); diff_value = static_cast(std::toupper(*p_itr)); return false; } else ++p_itr; while (s_itr != s_end) { if (target != std::toupper(*s_itr)) break; else ++s_itr; } continue; } else if ( ('?' != *p_itr) && std::toupper(*p_itr) != std::toupper(*s_itr) ) { diff_index = static_cast(std::distance(str.begin(),s_itr)); diff_value = static_cast(std::toupper(*p_itr)); return false; } ++p_itr; ++s_itr; } return ( (s_end == s_itr) && ( (p_end == p_itr) || ('*' == *p_itr) ) ); } static const double pow10[] = { 1.0, 1.0E+001, 1.0E+002, 1.0E+003, 1.0E+004, 1.0E+005, 1.0E+006, 1.0E+007, 1.0E+008, 1.0E+009, 1.0E+010, 1.0E+011, 1.0E+012, 1.0E+013, 1.0E+014, 1.0E+015, 1.0E+016 }; static const std::size_t pow10_size = sizeof(pow10) / sizeof(double); namespace numeric { namespace constant { static const double e = 2.71828182845904523536028747135266249775724709369996; static const double pi = 3.14159265358979323846264338327950288419716939937510; static const double pi_2 = 1.57079632679489661923132169163975144209858469968755; static const double pi_4 = 0.78539816339744830961566084581987572104929234984378; static const double pi_180 = 0.01745329251994329576923690768488612713442871888542; static const double _1_pi = 0.31830988618379067153776752674502872406891929148091; static const double _2_pi = 0.63661977236758134307553505349005744813783858296183; static const double _180_pi = 57.29577951308232087679815481410517033240547246656443; static const double log2 = 0.69314718055994530941723212145817656807550013436026; static const double sqrt2 = 1.41421356237309504880168872420969807856967187537695; } namespace details { struct unknown_type_tag { unknown_type_tag() {} }; struct real_type_tag { real_type_tag () {} }; struct complex_type_tag { complex_type_tag() {} }; struct int_type_tag { int_type_tag () {} }; template struct number_type { typedef unknown_type_tag type; number_type() {} }; #define exprtk_register_real_type_tag(T) \ template<> struct number_type \ { typedef real_type_tag type; number_type() {} }; \ #define exprtk_register_complex_type_tag(T) \ template<> struct number_type > \ { typedef complex_type_tag type; number_type() {} }; \ #define exprtk_register_int_type_tag(T) \ template<> struct number_type \ { typedef int_type_tag type; number_type() {} }; \ exprtk_register_real_type_tag(double ) exprtk_register_real_type_tag(long double) exprtk_register_real_type_tag(float ) exprtk_register_complex_type_tag(double ) exprtk_register_complex_type_tag(long double) exprtk_register_complex_type_tag(float ) exprtk_register_int_type_tag(short ) exprtk_register_int_type_tag(int ) exprtk_register_int_type_tag(long long int ) exprtk_register_int_type_tag(unsigned short ) exprtk_register_int_type_tag(unsigned int ) exprtk_register_int_type_tag(unsigned long long int) #undef exprtk_register_real_type_tag #undef exprtk_register_int_type_tag template struct epsilon_type { static inline T value() { const T epsilon = T(0.0000000001); return epsilon; } }; template <> struct epsilon_type { static inline float value() { const float epsilon = float(0.000001f); return epsilon; } }; template <> struct epsilon_type { static inline long double value() { const long double epsilon = (long double)(0.000000000001); return epsilon; } }; template inline bool is_nan_impl(const T v, real_type_tag) { return std::not_equal_to()(v,v); } template inline int to_int32_impl(const T v, real_type_tag) { return static_cast(v); } template inline long long int to_int64_impl(const T v, real_type_tag) { return static_cast(v); } template inline bool is_true_impl(const T v) { return std::not_equal_to()(T(0),v); } template inline bool is_false_impl(const T v) { return std::equal_to()(T(0),v); } template inline T abs_impl(const T v, real_type_tag) { return ((v < T(0)) ? -v : v); } template inline T min_impl(const T v0, const T v1, real_type_tag) { return std::min(v0,v1); } template inline T max_impl(const T v0, const T v1, real_type_tag) { return std::max(v0,v1); } template inline T equal_impl(const T v0, const T v1, real_type_tag) { const T epsilon = epsilon_type::value(); return (abs_impl(v0 - v1,real_type_tag()) <= (std::max(T(1),std::max(abs_impl(v0,real_type_tag()),abs_impl(v1,real_type_tag()))) * epsilon)) ? T(1) : T(0); } inline float equal_impl(const float v0, const float v1, real_type_tag) { const float epsilon = epsilon_type::value(); return (abs_impl(v0 - v1,real_type_tag()) <= (std::max(1.0f,std::max(abs_impl(v0,real_type_tag()),abs_impl(v1,real_type_tag()))) * epsilon)) ? 1.0f : 0.0f; } template inline T equal_impl(const T v0, const T v1, int_type_tag) { return (v0 == v1) ? 1 : 0; } template inline T expm1_impl(const T v, real_type_tag) { // return std::expm1(v); if (abs_impl(v,real_type_tag()) < T(0.00001)) return v + (T(0.5) * v * v); else return std::exp(v) - T(1); } template inline T expm1_impl(const T v, int_type_tag) { return T(std::exp(v)) - T(1); } template inline T nequal_impl(const T v0, const T v1, real_type_tag) { typedef real_type_tag rtg; const T epsilon = epsilon_type::value(); return (abs_impl(v0 - v1,rtg()) > (std::max(T(1),std::max(abs_impl(v0,rtg()),abs_impl(v1,rtg()))) * epsilon)) ? T(1) : T(0); } inline float nequal_impl(const float v0, const float v1, real_type_tag) { typedef real_type_tag rtg; const float epsilon = epsilon_type::value(); return (abs_impl(v0 - v1,rtg()) > (std::max(1.0f,std::max(abs_impl(v0,rtg()),abs_impl(v1,rtg()))) * epsilon)) ? 1.0f : 0.0f; } template inline T nequal_impl(const T v0, const T v1, int_type_tag) { return (v0 != v1) ? 1 : 0; } template inline T modulus_impl(const T v0, const T v1, real_type_tag) { return std::fmod(v0,v1); } template inline T modulus_impl(const T v0, const T v1, int_type_tag) { return v0 % v1; } template inline T pow_impl(const T v0, const T v1, real_type_tag) { return std::pow(v0,v1); } template inline T pow_impl(const T v0, const T v1, int_type_tag) { return std::pow(static_cast(v0),static_cast(v1)); } template inline T logn_impl(const T v0, const T v1, real_type_tag) { return std::log(v0) / std::log(v1); } template inline T logn_impl(const T v0, const T v1, int_type_tag) { return static_cast(logn_impl(static_cast(v0),static_cast(v1),real_type_tag())); } template inline T log1p_impl(const T v, real_type_tag) { if (v > T(-1)) { if (abs_impl(v,real_type_tag()) > T(0.0001)) { return std::log(T(1) + v); } else return (T(-0.5) * v + T(1)) * v; } else return std::numeric_limits::quiet_NaN(); } template inline T log1p_impl(const T v, int_type_tag) { if (v > T(-1)) { return std::log(T(1) + v); } else return std::numeric_limits::quiet_NaN(); } template inline T root_impl(const T v0, const T v1, real_type_tag) { if (v1 < T(0)) return std::numeric_limits::quiet_NaN(); const std::size_t n = static_cast(v1); if ((v0 < T(0)) && (0 == (n % 2))) return std::numeric_limits::quiet_NaN(); return std::pow(v0, T(1) / n); } template inline T root_impl(const T v0, const T v1, int_type_tag) { return root_impl(static_cast(v0),static_cast(v1),real_type_tag()); } template inline T round_impl(const T v, real_type_tag) { return ((v < T(0)) ? std::ceil(v - T(0.5)) : std::floor(v + T(0.5))); } template inline T roundn_impl(const T v0, const T v1, real_type_tag) { const int index = std::max(0, std::min(pow10_size - 1, (int)std::floor(v1))); const T p10 = T(pow10[index]); if (v0 < T(0)) return T(std::ceil ((v0 * p10) - T(0.5)) / p10); else return T(std::floor((v0 * p10) + T(0.5)) / p10); } template inline T roundn_impl(const T v0, const T, int_type_tag) { return v0; } template inline T hypot_impl(const T v0, const T v1, real_type_tag) { return std::sqrt((v0 * v0) + (v1 * v1)); } template inline T hypot_impl(const T v0, const T v1, int_type_tag) { return static_cast(std::sqrt(static_cast((v0 * v0) + (v1 * v1)))); } template inline T atan2_impl(const T v0, const T v1, real_type_tag) { return std::atan2(v0,v1); } template inline T atan2_impl(const T, const T, int_type_tag) { return 0; } template inline T shr_impl(const T v0, const T v1, real_type_tag) { return v0 * (T(1) / std::pow(T(2),static_cast(static_cast(v1)))); } template inline T shr_impl(const T v0, const T v1, int_type_tag) { return v0 >> v1; } template inline T shl_impl(const T v0, const T v1, real_type_tag) { return v0 * std::pow(T(2),static_cast(static_cast(v1))); } template inline T shl_impl(const T v0, const T v1, int_type_tag) { return v0 << v1; } template inline T sgn_impl(const T v, real_type_tag) { if (v > T(0)) return T(+1); else if (v < T(0)) return T(-1); else return T( 0); } template inline T sgn_impl(const T v, int_type_tag) { if (v > T(0)) return T(+1); else if (v < T(0)) return T(-1); else return T( 0); } template inline T and_impl(const T v0, const T v1, real_type_tag) { return (is_true_impl(v0) && is_true_impl(v1)) ? T(1) : T(0); } template inline T and_impl(const T v0, const T v1, int_type_tag) { return v0 && v1; } template inline T nand_impl(const T v0, const T v1, real_type_tag) { return (is_false_impl(v0) || is_false_impl(v1)) ? T(1) : T(0); } template inline T nand_impl(const T v0, const T v1, int_type_tag) { return !(v0 && v1); } template inline T or_impl(const T v0, const T v1, real_type_tag) { return (is_true_impl(v0) || is_true_impl(v1)) ? T(1) : T(0); } template inline T or_impl(const T v0, const T v1, int_type_tag) { return (v0 || v1); } template inline T nor_impl(const T v0, const T v1, real_type_tag) { return (is_false_impl(v0) && is_false_impl(v1)) ? T(1) : T(0); } template inline T nor_impl(const T v0, const T v1, int_type_tag) { return !(v0 || v1); } template inline T xor_impl(const T v0, const T v1, real_type_tag) { return (is_false_impl(v0) != is_false_impl(v1)) ? T(1) : T(0); } template inline T xor_impl(const T v0, const T v1, int_type_tag) { return v0 ^ v1; } template inline T xnor_impl(const T v0, const T v1, real_type_tag) { const bool v0_true = is_true_impl(v0); const bool v1_true = is_true_impl(v1); if ((v0_true && v1_true) || (!v0_true && !v1_true)) return T(1); else return T(0); } template inline T xnor_impl(const T v0, const T v1, int_type_tag) { const bool v0_true = is_true_impl(v0); const bool v1_true = is_true_impl(v1); if ((v0_true && v1_true) || (!v0_true && !v1_true)) return T(1); else return T(0); } #if (defined(_MSC_VER) && (_MSC_VER >= 1900)) || !defined(_MSC_VER) #define exprtk_define_erf(TT,impl) \ inline TT erf_impl(TT v) { return impl(v); } \ exprtk_define_erf( float,::erff) exprtk_define_erf( double,::erf ) exprtk_define_erf(long double,::erfl) #undef exprtk_define_erf #endif template inline T erf_impl(T v, real_type_tag) { #if defined(_MSC_VER) && (_MSC_VER < 1900) // Credits: Abramowitz & Stegun Equations 7.1.25-28 static const T c[] = { T( 1.26551223), T(1.00002368), T( 0.37409196), T(0.09678418), T(-0.18628806), T(0.27886807), T(-1.13520398), T(1.48851587), T(-0.82215223), T(0.17087277) }; const T t = T(1) / (T(1) + T(0.5) * abs_impl(v,real_type_tag())); T result = T(1) - t * std::exp((-v * v) - c[0] + t * (c[1] + t * (c[2] + t * (c[3] + t * (c[4] + t * (c[5] + t * (c[6] + t * (c[7] + t * (c[8] + t * (c[9])))))))))); return (v >= T(0)) ? result : -result; #else return erf_impl(v); #endif } template inline T erf_impl(T v, int_type_tag) { return erf_impl(static_cast(v),real_type_tag()); } #if (defined(_MSC_VER) && (_MSC_VER >= 1900)) || !defined(_MSC_VER) #define exprtk_define_erfc(TT,impl) \ inline TT erfc_impl(TT v) { return impl(v); } \ exprtk_define_erfc( float,::erfcf) exprtk_define_erfc( double,::erfc ) exprtk_define_erfc(long double,::erfcl) #undef exprtk_define_erfc #endif template inline T erfc_impl(T v, real_type_tag) { #if defined(_MSC_VER) && (_MSC_VER < 1900) return T(1) - erf_impl(v,real_type_tag()); #else return erfc_impl(v); #endif } template inline T erfc_impl(T v, int_type_tag) { return erfc_impl(static_cast(v),real_type_tag()); } template inline T ncdf_impl(T v, real_type_tag) { T cnd = T(0.5) * (T(1) + erf_impl( abs_impl(v,real_type_tag()) / T(numeric::constant::sqrt2),real_type_tag())); return (v < T(0)) ? (T(1) - cnd) : cnd; } template inline T ncdf_impl(T v, int_type_tag) { return ncdf_impl(static_cast(v),real_type_tag()); } template inline T sinc_impl(T v, real_type_tag) { if (std::abs(v) >= std::numeric_limits::epsilon()) return(std::sin(v) / v); else return T(1); } template inline T sinc_impl(T v, int_type_tag) { return sinc_impl(static_cast(v),real_type_tag()); } template inline T acos_impl(const T v, real_type_tag) { return std::acos (v); } template inline T acosh_impl(const T v, real_type_tag) { return std::log(v + std::sqrt((v * v) - T(1))); } template inline T asin_impl(const T v, real_type_tag) { return std::asin (v); } template inline T asinh_impl(const T v, real_type_tag) { return std::log(v + std::sqrt((v * v) + T(1))); } template inline T atan_impl(const T v, real_type_tag) { return std::atan (v); } template inline T atanh_impl(const T v, real_type_tag) { return (std::log(T(1) + v) - std::log(T(1) - v)) / T(2); } template inline T ceil_impl(const T v, real_type_tag) { return std::ceil (v); } template inline T cos_impl(const T v, real_type_tag) { return std::cos (v); } template inline T cosh_impl(const T v, real_type_tag) { return std::cosh (v); } template inline T exp_impl(const T v, real_type_tag) { return std::exp (v); } template inline T floor_impl(const T v, real_type_tag) { return std::floor(v); } template inline T log_impl(const T v, real_type_tag) { return std::log (v); } template inline T log10_impl(const T v, real_type_tag) { return std::log10(v); } template inline T log2_impl(const T v, real_type_tag) { return std::log(v)/T(numeric::constant::log2); } template inline T neg_impl(const T v, real_type_tag) { return -v; } template inline T pos_impl(const T v, real_type_tag) { return +v; } template inline T sin_impl(const T v, real_type_tag) { return std::sin (v); } template inline T sinh_impl(const T v, real_type_tag) { return std::sinh (v); } template inline T sqrt_impl(const T v, real_type_tag) { return std::sqrt (v); } template inline T tan_impl(const T v, real_type_tag) { return std::tan (v); } template inline T tanh_impl(const T v, real_type_tag) { return std::tanh (v); } template inline T cot_impl(const T v, real_type_tag) { return T(1) / std::tan(v); } template inline T sec_impl(const T v, real_type_tag) { return T(1) / std::cos(v); } template inline T csc_impl(const T v, real_type_tag) { return T(1) / std::sin(v); } template inline T r2d_impl(const T v, real_type_tag) { return (v * T(numeric::constant::_180_pi)); } template inline T d2r_impl(const T v, real_type_tag) { return (v * T(numeric::constant::pi_180)); } template inline T d2g_impl(const T v, real_type_tag) { return (v * T(20.0/9.0)); } template inline T g2d_impl(const T v, real_type_tag) { return (v * T(9.0/20.0)); } template inline T notl_impl(const T v, real_type_tag) { return (std::not_equal_to()(T(0),v) ? T(0) : T(1)); } template inline T frac_impl(const T v, real_type_tag) { return (v - static_cast(v)); } template inline T trunc_impl(const T v, real_type_tag) { return T(static_cast(v)); } template inline T const_pi_impl(real_type_tag) { return numeric::constant::pi; } template inline T const_e_impl (real_type_tag) { return numeric::constant::e; } template inline T abs_impl(const T v, int_type_tag) { return ((v >= T(0)) ? v : -v); } template inline T exp_impl(const T v, int_type_tag) { return std::exp (v); } template inline T log_impl(const T v, int_type_tag) { return std::log (v); } template inline T log10_impl(const T v, int_type_tag) { return std::log10(v); } template inline T log2_impl(const T v, int_type_tag) { return std::log(v)/T(numeric::constant::log2); } template inline T neg_impl(const T v, int_type_tag) { return -v; } template inline T pos_impl(const T v, int_type_tag) { return +v; } template inline T ceil_impl(const T v, int_type_tag) { return v; } template inline T floor_impl(const T v, int_type_tag) { return v; } template inline T round_impl(const T v, int_type_tag) { return v; } template inline T notl_impl(const T v, int_type_tag) { return !v; } template inline T sqrt_impl(const T v, int_type_tag) { return std::sqrt (v); } template inline T frac_impl(const T , int_type_tag) { return T(0); } template inline T trunc_impl(const T v, int_type_tag) { return v; } template inline T acos_impl(const T , int_type_tag) { return std::numeric_limits::quiet_NaN(); } template inline T acosh_impl(const T , int_type_tag) { return std::numeric_limits::quiet_NaN(); } template inline T asin_impl(const T , int_type_tag) { return std::numeric_limits::quiet_NaN(); } template inline T asinh_impl(const T , int_type_tag) { return std::numeric_limits::quiet_NaN(); } template inline T atan_impl(const T , int_type_tag) { return std::numeric_limits::quiet_NaN(); } template inline T atanh_impl(const T , int_type_tag) { return std::numeric_limits::quiet_NaN(); } template inline T cos_impl(const T , int_type_tag) { return std::numeric_limits::quiet_NaN(); } template inline T cosh_impl(const T , int_type_tag) { return std::numeric_limits::quiet_NaN(); } template inline T sin_impl(const T , int_type_tag) { return std::numeric_limits::quiet_NaN(); } template inline T sinh_impl(const T , int_type_tag) { return std::numeric_limits::quiet_NaN(); } template inline T tan_impl(const T , int_type_tag) { return std::numeric_limits::quiet_NaN(); } template inline T tanh_impl(const T , int_type_tag) { return std::numeric_limits::quiet_NaN(); } template inline T cot_impl(const T , int_type_tag) { return std::numeric_limits::quiet_NaN(); } template inline T sec_impl(const T , int_type_tag) { return std::numeric_limits::quiet_NaN(); } template inline T csc_impl(const T , int_type_tag) { return std::numeric_limits::quiet_NaN(); } template inline bool is_integer_impl(const T& v, real_type_tag) { return std::equal_to()(T(0),std::fmod(v,T(1))); } template inline bool is_integer_impl(const T&, int_type_tag) { return true; } } template struct numeric_info { enum { length = 0, size = 32, bound_length = 0, min_exp = 0, max_exp = 0 }; }; template<> struct numeric_info { enum { length = 10, size = 16, bound_length = 9}; }; template<> struct numeric_info { enum { min_exp = -38, max_exp = +38}; }; template<> struct numeric_info { enum { min_exp = -308, max_exp = +308}; }; template<> struct numeric_info { enum { min_exp = -308, max_exp = +308}; }; template inline int to_int32(const T v) { const typename details::number_type::type num_type; return to_int32_impl(v, num_type); } template inline long long int to_int64(const T v) { const typename details::number_type::type num_type; return to_int64_impl(v, num_type); } template inline bool is_nan(const T v) { const typename details::number_type::type num_type; return is_nan_impl(v, num_type); } template inline T min(const T v0, const T v1) { const typename details::number_type::type num_type; return min_impl(v0, v1, num_type); } template inline T max(const T v0, const T v1) { const typename details::number_type::type num_type; return max_impl(v0, v1, num_type); } template inline T equal(const T v0, const T v1) { const typename details::number_type::type num_type; return equal_impl(v0, v1, num_type); } template inline T nequal(const T v0, const T v1) { const typename details::number_type::type num_type; return nequal_impl(v0, v1, num_type); } template inline T modulus(const T v0, const T v1) { const typename details::number_type::type num_type; return modulus_impl(v0, v1, num_type); } template inline T pow(const T v0, const T v1) { const typename details::number_type::type num_type; return pow_impl(v0, v1, num_type); } template inline T logn(const T v0, const T v1) { const typename details::number_type::type num_type; return logn_impl(v0, v1, num_type); } template inline T root(const T v0, const T v1) { const typename details::number_type::type num_type; return root_impl(v0, v1, num_type); } template inline T roundn(const T v0, const T v1) { const typename details::number_type::type num_type; return roundn_impl(v0, v1, num_type); } template inline T hypot(const T v0, const T v1) { const typename details::number_type::type num_type; return hypot_impl(v0, v1, num_type); } template inline T atan2(const T v0, const T v1) { const typename details::number_type::type num_type; return atan2_impl(v0, v1, num_type); } template inline T shr(const T v0, const T v1) { const typename details::number_type::type num_type; return shr_impl(v0, v1, num_type); } template inline T shl(const T v0, const T v1) { const typename details::number_type::type num_type; return shl_impl(v0, v1, num_type); } template inline T and_opr(const T v0, const T v1) { const typename details::number_type::type num_type; return and_impl(v0, v1, num_type); } template inline T nand_opr(const T v0, const T v1) { const typename details::number_type::type num_type; return nand_impl(v0, v1, num_type); } template inline T or_opr(const T v0, const T v1) { const typename details::number_type::type num_type; return or_impl(v0, v1, num_type); } template inline T nor_opr(const T v0, const T v1) { const typename details::number_type::type num_type; return nor_impl(v0, v1, num_type); } template inline T xor_opr(const T v0, const T v1) { const typename details::number_type::type num_type; return xor_impl(v0, v1, num_type); } template inline T xnor_opr(const T v0, const T v1) { const typename details::number_type::type num_type; return xnor_impl(v0, v1, num_type); } template inline bool is_integer(const T v) { const typename details::number_type::type num_type; return is_integer_impl(v, num_type); } template struct fast_exp { static inline T result(T v) { unsigned int k = N; T l = T(1); while (k) { if (k & 1) { l *= v; --k; } v *= v; k >>= 1; } return l; } }; template struct fast_exp { static inline T result(T v) { T v_5 = fast_exp::result(v); return v_5 * v_5; } }; template struct fast_exp { static inline T result(T v) { return fast_exp::result(v) * v; } }; template struct fast_exp { static inline T result(T v) { T v_4 = fast_exp::result(v); return v_4 * v_4; } }; template struct fast_exp { static inline T result(T v) { return fast_exp::result(v) * v; } }; template struct fast_exp { static inline T result(T v) { T v_3 = fast_exp::result(v); return v_3 * v_3; } }; template struct fast_exp { static inline T result(T v) { return fast_exp::result(v) * v; } }; template struct fast_exp { static inline T result(T v) { T v_2 = v * v; return v_2 * v_2; } }; template struct fast_exp { static inline T result(T v) { return v * v * v; } }; template struct fast_exp { static inline T result(T v) { return v * v; } }; template struct fast_exp { static inline T result(T v) { return v; } }; template struct fast_exp { static inline T result(T ) { return T(1); } }; #define exprtk_define_unary_function(FunctionName) \ template \ inline T FunctionName (const T v) \ { \ const typename details::number_type::type num_type; \ return FunctionName##_impl(v,num_type); \ } \ exprtk_define_unary_function(abs ) exprtk_define_unary_function(acos ) exprtk_define_unary_function(acosh) exprtk_define_unary_function(asin ) exprtk_define_unary_function(asinh) exprtk_define_unary_function(atan ) exprtk_define_unary_function(atanh) exprtk_define_unary_function(ceil ) exprtk_define_unary_function(cos ) exprtk_define_unary_function(cosh ) exprtk_define_unary_function(exp ) exprtk_define_unary_function(expm1) exprtk_define_unary_function(floor) exprtk_define_unary_function(log ) exprtk_define_unary_function(log10) exprtk_define_unary_function(log2 ) exprtk_define_unary_function(log1p) exprtk_define_unary_function(neg ) exprtk_define_unary_function(pos ) exprtk_define_unary_function(round) exprtk_define_unary_function(sin ) exprtk_define_unary_function(sinc ) exprtk_define_unary_function(sinh ) exprtk_define_unary_function(sqrt ) exprtk_define_unary_function(tan ) exprtk_define_unary_function(tanh ) exprtk_define_unary_function(cot ) exprtk_define_unary_function(sec ) exprtk_define_unary_function(csc ) exprtk_define_unary_function(r2d ) exprtk_define_unary_function(d2r ) exprtk_define_unary_function(d2g ) exprtk_define_unary_function(g2d ) exprtk_define_unary_function(notl ) exprtk_define_unary_function(sgn ) exprtk_define_unary_function(erf ) exprtk_define_unary_function(erfc ) exprtk_define_unary_function(ncdf ) exprtk_define_unary_function(frac ) exprtk_define_unary_function(trunc) #undef exprtk_define_unary_function } template inline T compute_pow10(T d, const int exponent) { static const double fract10[] = { 0.0, 1.0E+001, 1.0E+002, 1.0E+003, 1.0E+004, 1.0E+005, 1.0E+006, 1.0E+007, 1.0E+008, 1.0E+009, 1.0E+010, 1.0E+011, 1.0E+012, 1.0E+013, 1.0E+014, 1.0E+015, 1.0E+016, 1.0E+017, 1.0E+018, 1.0E+019, 1.0E+020, 1.0E+021, 1.0E+022, 1.0E+023, 1.0E+024, 1.0E+025, 1.0E+026, 1.0E+027, 1.0E+028, 1.0E+029, 1.0E+030, 1.0E+031, 1.0E+032, 1.0E+033, 1.0E+034, 1.0E+035, 1.0E+036, 1.0E+037, 1.0E+038, 1.0E+039, 1.0E+040, 1.0E+041, 1.0E+042, 1.0E+043, 1.0E+044, 1.0E+045, 1.0E+046, 1.0E+047, 1.0E+048, 1.0E+049, 1.0E+050, 1.0E+051, 1.0E+052, 1.0E+053, 1.0E+054, 1.0E+055, 1.0E+056, 1.0E+057, 1.0E+058, 1.0E+059, 1.0E+060, 1.0E+061, 1.0E+062, 1.0E+063, 1.0E+064, 1.0E+065, 1.0E+066, 1.0E+067, 1.0E+068, 1.0E+069, 1.0E+070, 1.0E+071, 1.0E+072, 1.0E+073, 1.0E+074, 1.0E+075, 1.0E+076, 1.0E+077, 1.0E+078, 1.0E+079, 1.0E+080, 1.0E+081, 1.0E+082, 1.0E+083, 1.0E+084, 1.0E+085, 1.0E+086, 1.0E+087, 1.0E+088, 1.0E+089, 1.0E+090, 1.0E+091, 1.0E+092, 1.0E+093, 1.0E+094, 1.0E+095, 1.0E+096, 1.0E+097, 1.0E+098, 1.0E+099, 1.0E+100, 1.0E+101, 1.0E+102, 1.0E+103, 1.0E+104, 1.0E+105, 1.0E+106, 1.0E+107, 1.0E+108, 1.0E+109, 1.0E+110, 1.0E+111, 1.0E+112, 1.0E+113, 1.0E+114, 1.0E+115, 1.0E+116, 1.0E+117, 1.0E+118, 1.0E+119, 1.0E+120, 1.0E+121, 1.0E+122, 1.0E+123, 1.0E+124, 1.0E+125, 1.0E+126, 1.0E+127, 1.0E+128, 1.0E+129, 1.0E+130, 1.0E+131, 1.0E+132, 1.0E+133, 1.0E+134, 1.0E+135, 1.0E+136, 1.0E+137, 1.0E+138, 1.0E+139, 1.0E+140, 1.0E+141, 1.0E+142, 1.0E+143, 1.0E+144, 1.0E+145, 1.0E+146, 1.0E+147, 1.0E+148, 1.0E+149, 1.0E+150, 1.0E+151, 1.0E+152, 1.0E+153, 1.0E+154, 1.0E+155, 1.0E+156, 1.0E+157, 1.0E+158, 1.0E+159, 1.0E+160, 1.0E+161, 1.0E+162, 1.0E+163, 1.0E+164, 1.0E+165, 1.0E+166, 1.0E+167, 1.0E+168, 1.0E+169, 1.0E+170, 1.0E+171, 1.0E+172, 1.0E+173, 1.0E+174, 1.0E+175, 1.0E+176, 1.0E+177, 1.0E+178, 1.0E+179, 1.0E+180, 1.0E+181, 1.0E+182, 1.0E+183, 1.0E+184, 1.0E+185, 1.0E+186, 1.0E+187, 1.0E+188, 1.0E+189, 1.0E+190, 1.0E+191, 1.0E+192, 1.0E+193, 1.0E+194, 1.0E+195, 1.0E+196, 1.0E+197, 1.0E+198, 1.0E+199, 1.0E+200, 1.0E+201, 1.0E+202, 1.0E+203, 1.0E+204, 1.0E+205, 1.0E+206, 1.0E+207, 1.0E+208, 1.0E+209, 1.0E+210, 1.0E+211, 1.0E+212, 1.0E+213, 1.0E+214, 1.0E+215, 1.0E+216, 1.0E+217, 1.0E+218, 1.0E+219, 1.0E+220, 1.0E+221, 1.0E+222, 1.0E+223, 1.0E+224, 1.0E+225, 1.0E+226, 1.0E+227, 1.0E+228, 1.0E+229, 1.0E+230, 1.0E+231, 1.0E+232, 1.0E+233, 1.0E+234, 1.0E+235, 1.0E+236, 1.0E+237, 1.0E+238, 1.0E+239, 1.0E+240, 1.0E+241, 1.0E+242, 1.0E+243, 1.0E+244, 1.0E+245, 1.0E+246, 1.0E+247, 1.0E+248, 1.0E+249, 1.0E+250, 1.0E+251, 1.0E+252, 1.0E+253, 1.0E+254, 1.0E+255, 1.0E+256, 1.0E+257, 1.0E+258, 1.0E+259, 1.0E+260, 1.0E+261, 1.0E+262, 1.0E+263, 1.0E+264, 1.0E+265, 1.0E+266, 1.0E+267, 1.0E+268, 1.0E+269, 1.0E+270, 1.0E+271, 1.0E+272, 1.0E+273, 1.0E+274, 1.0E+275, 1.0E+276, 1.0E+277, 1.0E+278, 1.0E+279, 1.0E+280, 1.0E+281, 1.0E+282, 1.0E+283, 1.0E+284, 1.0E+285, 1.0E+286, 1.0E+287, 1.0E+288, 1.0E+289, 1.0E+290, 1.0E+291, 1.0E+292, 1.0E+293, 1.0E+294, 1.0E+295, 1.0E+296, 1.0E+297, 1.0E+298, 1.0E+299, 1.0E+300, 1.0E+301, 1.0E+302, 1.0E+303, 1.0E+304, 1.0E+305, 1.0E+306, 1.0E+307, 1.0E+308 }; static const int fract10_size = static_cast(sizeof(fract10) / sizeof(double)); const int e = std::abs(exponent); if (exponent >= std::numeric_limits::min_exponent10) { if (e < fract10_size) { if (exponent > 0) return T(d * fract10[e]); else return T(d / fract10[e]); } else return T(d * std::pow(10.0, 10.0 * exponent)); } else { d /= T(fract10[ -std::numeric_limits::min_exponent10]); return T(d / fract10[-exponent + std::numeric_limits::min_exponent10]); } } template inline bool string_to_type_converter_impl_ref(Iterator& itr, const Iterator end, T& result) { if (itr == end) return false; const bool negative = ('-' == (*itr)); if (negative || ('+' == (*itr))) { if (end == ++itr) return false; } static const uchar_t zero = static_cast('0'); while ((end != itr) && (zero == (*itr))) ++itr; bool return_result = true; unsigned int digit = 0; const std::size_t length = static_cast(std::distance(itr,end)); if (length <= 4) { exprtk_disable_fallthrough_begin switch (length) { #ifdef exprtk_use_lut #define exprtk_process_digit \ if ((digit = details::digit_table[(int)*itr++]) < 10) \ result = result * 10 + (digit); \ else \ { \ return_result = false; \ break; \ } \ #else #define exprtk_process_digit \ if ((digit = (*itr++ - zero)) < 10) \ result = result * T(10) + digit; \ else \ { \ return_result = false; \ break; \ } \ #endif case 4 : exprtk_process_digit case 3 : exprtk_process_digit case 2 : exprtk_process_digit case 1 : if ((digit = (*itr - zero))>= 10) { digit = 0; return_result = false; } #undef exprtk_process_digit } exprtk_disable_fallthrough_end } else return_result = false; if (length && return_result) { result = result * 10 + static_cast(digit); ++itr; } result = negative ? -result : result; return return_result; } template static inline bool parse_nan(Iterator& itr, const Iterator end, T& t) { typedef typename std::iterator_traits::value_type type; static const std::size_t nan_length = 3; if (std::distance(itr,end) != static_cast(nan_length)) return false; if (static_cast('n') == (*itr)) { if ( (static_cast('a') != *(itr + 1)) || (static_cast('n') != *(itr + 2)) ) { return false; } } else if ( (static_cast('A') != *(itr + 1)) || (static_cast('N') != *(itr + 2)) ) { return false; } t = std::numeric_limits::quiet_NaN(); return true; } template static inline bool parse_inf(Iterator& itr, const Iterator end, T& t, bool negative) { static const char_t inf_uc[] = "INFINITY"; static const char_t inf_lc[] = "infinity"; static const std::size_t inf_length = 8; const std::size_t length = static_cast(std::distance(itr,end)); if ((3 != length) && (inf_length != length)) return false; const char_t* inf_itr = ('i' == (*itr)) ? inf_lc : inf_uc; while (end != itr) { if (*inf_itr == static_cast(*itr)) { ++itr; ++inf_itr; continue; } else return false; } if (negative) t = -std::numeric_limits::infinity(); else t = std::numeric_limits::infinity(); return true; } template inline bool string_to_real(Iterator& itr_external, const Iterator end, T& t, numeric::details::real_type_tag) { if (end == itr_external) return false; Iterator itr = itr_external; T d = T(0); const bool negative = ('-' == (*itr)); if (negative || '+' == (*itr)) { if (end == ++itr) return false; } bool instate = false; static const char zero = static_cast('0'); #define parse_digit_1(d) \ if ((digit = (*itr - zero)) < 10) \ { d = d * T(10) + digit; } \ else \ { break; } \ if (end == ++itr) break; \ #define parse_digit_2(d) \ if ((digit = (*itr - zero)) < 10) \ { d = d * T(10) + digit; } \ else { break; } \ ++itr; \ if ('.' != (*itr)) { const Iterator curr = itr; while ((end != itr) && (zero == (*itr))) ++itr; unsigned int digit; while (end != itr) { // Note: For 'physical' superscalar architectures it // is advised that the following loop be: 4xPD1 and 1xPD2 #ifdef exprtk_enable_superscalar parse_digit_1(d) parse_digit_1(d) #endif parse_digit_1(d) parse_digit_1(d) parse_digit_2(d) } if (curr != itr) instate = true; } int exponent = 0; if (end != itr) { if ('.' == (*itr)) { const Iterator curr = ++itr; unsigned int digit; T tmp_d = T(0); while (end != itr) { #ifdef exprtk_enable_superscalar parse_digit_1(tmp_d) parse_digit_1(tmp_d) parse_digit_1(tmp_d) #endif parse_digit_1(tmp_d) parse_digit_1(tmp_d) parse_digit_2(tmp_d) } if (curr != itr) { instate = true; d += compute_pow10(tmp_d,static_cast(-std::distance(curr,itr))); } #undef parse_digit_1 #undef parse_digit_2 } if (end != itr) { typename std::iterator_traits::value_type c = (*itr); if (('e' == c) || ('E' == c)) { int exp = 0; if (!details::string_to_type_converter_impl_ref(++itr, end, exp)) { if (end == itr) return false; else c = (*itr); } exponent += exp; } if (end != itr) { if (('f' == c) || ('F' == c) || ('l' == c) || ('L' == c)) ++itr; else if ('#' == c) { if (end == ++itr) return false; else if (('I' <= (*itr)) && ((*itr) <= 'n')) { if (('i' == (*itr)) || ('I' == (*itr))) { return parse_inf(itr, end, t, negative); } else if (('n' == (*itr)) || ('N' == (*itr))) { return parse_nan(itr, end, t); } else return false; } else return false; } else if (('I' <= (*itr)) && ((*itr) <= 'n')) { if (('i' == (*itr)) || ('I' == (*itr))) { return parse_inf(itr, end, t, negative); } else if (('n' == (*itr)) || ('N' == (*itr))) { return parse_nan(itr, end, t); } else return false; } else return false; } } } if ((end != itr) || (!instate)) return false; else if (exponent) d = compute_pow10(d,exponent); t = static_cast((negative) ? -d : d); return true; } template inline bool string_to_real(const std::string& s, T& t) { const typename numeric::details::number_type::type num_type; const char_t* begin = s.data(); const char_t* end = s.data() + s.size(); return string_to_real(begin, end, t, num_type); } template struct functor_t { /* Note: The following definitions for Type, may require tweaking based on the compiler and target architecture. The benchmark should provide enough information to make the right choice. */ //typedef T Type; //typedef const T Type; typedef const T& Type; typedef T& RefType; typedef T (*qfunc_t)(Type t0, Type t1, Type t2, Type t3); typedef T (*tfunc_t)(Type t0, Type t1, Type t2); typedef T (*bfunc_t)(Type t0, Type t1); typedef T (*ufunc_t)(Type t0); }; } // namespace details namespace lexer { struct token { enum token_type { e_none = 0, e_error = 1, e_err_symbol = 2, e_err_number = 3, e_err_string = 4, e_err_sfunc = 5, e_eof = 6, e_number = 7, e_symbol = 8, e_string = 9, e_assign = 10, e_addass = 11, e_subass = 12, e_mulass = 13, e_divass = 14, e_modass = 15, e_shr = 16, e_shl = 17, e_lte = 18, e_ne = 19, e_gte = 20, e_swap = 21, e_lt = '<', e_gt = '>', e_eq = '=', e_rbracket = ')', e_lbracket = '(', e_rsqrbracket = ']', e_lsqrbracket = '[', e_rcrlbracket = '}', e_lcrlbracket = '{', e_comma = ',', e_add = '+', e_sub = '-', e_div = '/', e_mul = '*', e_mod = '%', e_pow = '^', e_colon = ':', e_ternary = '?' }; token() : type(e_none), value(""), position(std::numeric_limits::max()) {} void clear() { type = e_none; value = ""; position = std::numeric_limits::max(); } template inline token& set_operator(const token_type tt, const Iterator begin, const Iterator end, const Iterator base_begin = Iterator(0)) { type = tt; value.assign(begin,end); if (base_begin) position = static_cast(std::distance(base_begin,begin)); return (*this); } template inline token& set_symbol(const Iterator begin, const Iterator end, const Iterator base_begin = Iterator(0)) { type = e_symbol; value.assign(begin,end); if (base_begin) position = static_cast(std::distance(base_begin,begin)); return (*this); } template inline token& set_numeric(const Iterator begin, const Iterator end, const Iterator base_begin = Iterator(0)) { type = e_number; value.assign(begin,end); if (base_begin) position = static_cast(std::distance(base_begin,begin)); return (*this); } template inline token& set_string(const Iterator begin, const Iterator end, const Iterator base_begin = Iterator(0)) { type = e_string; value.assign(begin,end); if (base_begin) position = static_cast(std::distance(base_begin,begin)); return (*this); } inline token& set_string(const std::string& s, const std::size_t p) { type = e_string; value = s; position = p; return (*this); } template inline token& set_error(const token_type et, const Iterator begin, const Iterator end, const Iterator base_begin = Iterator(0)) { if ( (e_error == et) || (e_err_symbol == et) || (e_err_number == et) || (e_err_string == et) || (e_err_sfunc == et) ) { type = et; } else type = e_error; value.assign(begin,end); if (base_begin) position = static_cast(std::distance(base_begin,begin)); return (*this); } static inline std::string to_str(token_type t) { switch (t) { case e_none : return "NONE"; case e_error : return "ERROR"; case e_err_symbol : return "ERROR_SYMBOL"; case e_err_number : return "ERROR_NUMBER"; case e_err_string : return "ERROR_STRING"; case e_eof : return "EOF"; case e_number : return "NUMBER"; case e_symbol : return "SYMBOL"; case e_string : return "STRING"; case e_assign : return ":="; case e_addass : return "+="; case e_subass : return "-="; case e_mulass : return "*="; case e_divass : return "/="; case e_modass : return "%="; case e_shr : return ">>"; case e_shl : return "<<"; case e_lte : return "<="; case e_ne : return "!="; case e_gte : return ">="; case e_lt : return "<"; case e_gt : return ">"; case e_eq : return "="; case e_rbracket : return ")"; case e_lbracket : return "("; case e_rsqrbracket : return "]"; case e_lsqrbracket : return "["; case e_rcrlbracket : return "}"; case e_lcrlbracket : return "{"; case e_comma : return ","; case e_add : return "+"; case e_sub : return "-"; case e_div : return "/"; case e_mul : return "*"; case e_mod : return "%"; case e_pow : return "^"; case e_colon : return ":"; case e_ternary : return "?"; case e_swap : return "<=>"; default : return "UNKNOWN"; } } inline bool is_error() const { return ( (e_error == type) || (e_err_symbol == type) || (e_err_number == type) || (e_err_string == type) || (e_err_sfunc == type) ); } token_type type; std::string value; std::size_t position; }; class generator { public: typedef token token_t; typedef std::vector token_list_t; typedef std::vector::iterator token_list_itr_t; typedef details::char_t char_t; generator() : base_itr_(0), s_itr_ (0), s_end_ (0) { clear(); } inline void clear() { base_itr_ = 0; s_itr_ = 0; s_end_ = 0; token_list_.clear(); token_itr_ = token_list_.end(); store_token_itr_ = token_list_.end(); } inline bool process(const std::string& str) { base_itr_ = str.data(); s_itr_ = str.data(); s_end_ = str.data() + str.size(); eof_token_.set_operator(token_t::e_eof,s_end_,s_end_,base_itr_); token_list_.clear(); while (!is_end(s_itr_)) { scan_token(); if (token_list_.empty()) return true; else if (token_list_.back().is_error()) return false; } return true; } inline bool empty() const { return token_list_.empty(); } inline std::size_t size() const { return token_list_.size(); } inline void begin() { token_itr_ = token_list_.begin(); store_token_itr_ = token_list_.begin(); } inline void store() { store_token_itr_ = token_itr_; } inline void restore() { token_itr_ = store_token_itr_; } inline token_t& next_token() { if (token_list_.end() != token_itr_) { return *token_itr_++; } else return eof_token_; } inline token_t& peek_next_token() { if (token_list_.end() != token_itr_) { return *token_itr_; } else return eof_token_; } inline token_t& operator[](const std::size_t& index) { if (index < token_list_.size()) return token_list_[index]; else return eof_token_; } inline token_t operator[](const std::size_t& index) const { if (index < token_list_.size()) return token_list_[index]; else return eof_token_; } inline bool finished() const { return (token_list_.end() == token_itr_); } inline void insert_front(token_t::token_type tk_type) { if ( !token_list_.empty() && (token_list_.end() != token_itr_) ) { token_t t = *token_itr_; t.type = tk_type; token_itr_ = token_list_.insert(token_itr_,t); } } inline std::string substr(const std::size_t& begin, const std::size_t& end) { const char_t* begin_itr = ((base_itr_ + begin) < s_end_) ? (base_itr_ + begin) : s_end_; const char_t* end_itr = ((base_itr_ + end) < s_end_) ? (base_itr_ + end) : s_end_; return std::string(begin_itr,end_itr); } inline std::string remaining() const { if (finished()) return ""; else if (token_list_.begin() != token_itr_) return std::string(base_itr_ + (token_itr_ - 1)->position,s_end_); else return std::string(base_itr_ + token_itr_->position,s_end_); } private: inline bool is_end(const char_t* itr) { return (s_end_ == itr); } inline void skip_whitespace() { while (!is_end(s_itr_) && details::is_whitespace(*s_itr_)) { ++s_itr_; } } inline void skip_comments() { #ifndef exprtk_disable_comments // The following comment styles are supported: // 1. // .... \n // 2. # .... \n // 3. /* .... */ struct test { static inline bool comment_start(const char_t c0, const char_t c1, int& mode, int& incr) { mode = 0; if ('#' == c0) { mode = 1; incr = 1; } else if ('/' == c0) { if ('/' == c1) { mode = 1; incr = 2; } else if ('*' == c1) { mode = 2; incr = 2; } } return (0 != mode); } static inline bool comment_end(const char_t c0, const char_t c1, const int mode) { return ( ((1 == mode) && ('\n' == c0)) || ((2 == mode) && ( '*' == c0) && ('/' == c1)) ); } }; int mode = 0; int increment = 0; if (is_end(s_itr_) || is_end((s_itr_ + 1))) return; else if (!test::comment_start(*s_itr_, *(s_itr_ + 1), mode, increment)) return; s_itr_ += increment; while (!is_end(s_itr_) && !test::comment_end(*s_itr_, *(s_itr_ + 1), mode)) { ++s_itr_; } if (!is_end(s_itr_)) { s_itr_ += mode; skip_whitespace(); skip_comments (); } #endif } inline void scan_token() { skip_whitespace(); skip_comments (); if (is_end(s_itr_)) { return; } else if (details::is_operator_char(*s_itr_)) { scan_operator(); return; } else if (details::is_letter(*s_itr_)) { scan_symbol(); return; } else if (details::is_digit((*s_itr_)) || ('.' == (*s_itr_))) { scan_number(); return; } else if ('$' == (*s_itr_)) { scan_special_function(); return; } #ifndef exprtk_disable_string_capabilities else if ('\'' == (*s_itr_)) { scan_string(); return; } #endif else if ('~' == (*s_itr_)) { token_t t; t.set_symbol(s_itr_, s_itr_ + 1, base_itr_); token_list_.push_back(t); ++s_itr_; return; } else { token_t t; t.set_error(token::e_error, s_itr_, s_itr_ + 2, base_itr_); token_list_.push_back(t); ++s_itr_; } } inline void scan_operator() { token_t t; const char_t c0 = s_itr_[0]; if (!is_end(s_itr_ + 1)) { const char_t c1 = s_itr_[1]; if (!is_end(s_itr_ + 2)) { const char_t c2 = s_itr_[2]; if ((c0 == '<') && (c1 == '=') && (c2 == '>')) { t.set_operator(token_t::e_swap, s_itr_, s_itr_ + 3, base_itr_); token_list_.push_back(t); s_itr_ += 3; return; } } token_t::token_type ttype = token_t::e_none; if ((c0 == '<') && (c1 == '=')) ttype = token_t::e_lte; else if ((c0 == '>') && (c1 == '=')) ttype = token_t::e_gte; else if ((c0 == '<') && (c1 == '>')) ttype = token_t::e_ne; else if ((c0 == '!') && (c1 == '=')) ttype = token_t::e_ne; else if ((c0 == '=') && (c1 == '=')) ttype = token_t::e_eq; else if ((c0 == ':') && (c1 == '=')) ttype = token_t::e_assign; else if ((c0 == '<') && (c1 == '<')) ttype = token_t::e_shl; else if ((c0 == '>') && (c1 == '>')) ttype = token_t::e_shr; else if ((c0 == '+') && (c1 == '=')) ttype = token_t::e_addass; else if ((c0 == '-') && (c1 == '=')) ttype = token_t::e_subass; else if ((c0 == '*') && (c1 == '=')) ttype = token_t::e_mulass; else if ((c0 == '/') && (c1 == '=')) ttype = token_t::e_divass; else if ((c0 == '%') && (c1 == '=')) ttype = token_t::e_modass; if (token_t::e_none != ttype) { t.set_operator(ttype, s_itr_, s_itr_ + 2, base_itr_); token_list_.push_back(t); s_itr_ += 2; return; } } if ('<' == c0) t.set_operator(token_t::e_lt , s_itr_, s_itr_ + 1, base_itr_); else if ('>' == c0) t.set_operator(token_t::e_gt , s_itr_, s_itr_ + 1, base_itr_); else if (';' == c0) t.set_operator(token_t::e_eof, s_itr_, s_itr_ + 1, base_itr_); else if ('&' == c0) t.set_symbol(s_itr_, s_itr_ + 1, base_itr_); else if ('|' == c0) t.set_symbol(s_itr_, s_itr_ + 1, base_itr_); else t.set_operator(token_t::token_type(c0), s_itr_, s_itr_ + 1, base_itr_); token_list_.push_back(t); ++s_itr_; } inline void scan_symbol() { const char_t* initial_itr = s_itr_; while (!is_end(s_itr_)) { if (!details::is_letter_or_digit(*s_itr_) && ('_' != (*s_itr_))) { if ('.' != (*s_itr_)) break; /* Permit symbols that contain a 'dot' Allowed : abc.xyz, a123.xyz, abc.123, abc_.xyz a123_.xyz abc._123 Disallowed: .abc, abc., abc., abc. */ if ( (s_itr_ != initial_itr) && !is_end(s_itr_ + 1) && !details::is_letter_or_digit(*(s_itr_ + 1)) && ('_' != (*(s_itr_ + 1))) ) break; } ++s_itr_; } token_t t; t.set_symbol(initial_itr,s_itr_,base_itr_); token_list_.push_back(t); } inline void scan_number() { /* Attempt to match a valid numeric value in one of the following formats: (01) 123456 (02) 123456. (03) 123.456 (04) 123.456e3 (05) 123.456E3 (06) 123.456e+3 (07) 123.456E+3 (08) 123.456e-3 (09) 123.456E-3 (00) .1234 (11) .1234e3 (12) .1234E+3 (13) .1234e+3 (14) .1234E-3 (15) .1234e-3 */ const char_t* initial_itr = s_itr_; bool dot_found = false; bool e_found = false; bool post_e_sign_found = false; bool post_e_digit_found = false; token_t t; while (!is_end(s_itr_)) { if ('.' == (*s_itr_)) { if (dot_found) { t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_); token_list_.push_back(t); return; } dot_found = true; ++s_itr_; continue; } else if ('e' == std::tolower(*s_itr_)) { const char_t& c = *(s_itr_ + 1); if (is_end(s_itr_ + 1)) { t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_); token_list_.push_back(t); return; } else if ( ('+' != c) && ('-' != c) && !details::is_digit(c) ) { t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_); token_list_.push_back(t); return; } e_found = true; ++s_itr_; continue; } else if (e_found && details::is_sign(*s_itr_) && !post_e_digit_found) { if (post_e_sign_found) { t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_); token_list_.push_back(t); return; } post_e_sign_found = true; ++s_itr_; continue; } else if (e_found && details::is_digit(*s_itr_)) { post_e_digit_found = true; ++s_itr_; continue; } else if (('.' != (*s_itr_)) && !details::is_digit(*s_itr_)) break; else ++s_itr_; } t.set_numeric(initial_itr, s_itr_, base_itr_); token_list_.push_back(t); return; } inline void scan_special_function() { const char_t* initial_itr = s_itr_; token_t t; // $fdd(x,x,x) = at least 11 chars if (std::distance(s_itr_,s_end_) < 11) { t.set_error(token::e_err_sfunc, initial_itr, s_itr_, base_itr_); token_list_.push_back(t); return; } if ( !(('$' == *s_itr_) && (details::imatch ('f',*(s_itr_ + 1))) && (details::is_digit(*(s_itr_ + 2))) && (details::is_digit(*(s_itr_ + 3)))) ) { t.set_error(token::e_err_sfunc, initial_itr, s_itr_, base_itr_); token_list_.push_back(t); return; } s_itr_ += 4; // $fdd = 4chars t.set_symbol(initial_itr, s_itr_, base_itr_); token_list_.push_back(t); return; } #ifndef exprtk_disable_string_capabilities inline void scan_string() { const char_t* initial_itr = s_itr_ + 1; token_t t; if (std::distance(s_itr_,s_end_) < 2) { t.set_error(token::e_err_string, s_itr_, s_end_, base_itr_); token_list_.push_back(t); return; } ++s_itr_; bool escaped_found = false; bool escaped = false; while (!is_end(s_itr_)) { if (!escaped && ('\\' == *s_itr_)) { escaped_found = true; escaped = true; ++s_itr_; continue; } else if (!escaped) { if ('\'' == *s_itr_) break; } else if (escaped) { if (!is_end(s_itr_) && ('0' == *(s_itr_))) { /* Note: The following 'awkward' conditional is due to various broken msvc compilers. */ #if _MSC_VER == 1600 const bool within_range = !is_end(s_itr_ + 2) && !is_end(s_itr_ + 3) ; #else const bool within_range = !is_end(s_itr_ + 1) && !is_end(s_itr_ + 2) && !is_end(s_itr_ + 3) ; #endif const bool x_seperator = ('x' == *(s_itr_ + 1)) || ('X' == *(s_itr_ + 1)) ; const bool both_digits = details::is_hex_digit(*(s_itr_ + 2)) && details::is_hex_digit(*(s_itr_ + 3)) ; if (!within_range || !x_seperator || !both_digits) { t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_); token_list_.push_back(t); return; } else s_itr_ += 3; } escaped = false; } ++s_itr_; } if (is_end(s_itr_)) { t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_); token_list_.push_back(t); return; } if (!escaped_found) t.set_string(initial_itr, s_itr_, base_itr_); else { std::string parsed_string(initial_itr,s_itr_); details::cleanup_escapes(parsed_string); t.set_string( parsed_string, static_cast(std::distance(base_itr_,initial_itr))); } token_list_.push_back(t); ++s_itr_; return; } #endif private: token_list_t token_list_; token_list_itr_t token_itr_; token_list_itr_t store_token_itr_; token_t eof_token_; const char_t* base_itr_; const char_t* s_itr_; const char_t* s_end_; friend class token_scanner; friend class token_modifier; friend class token_inserter; friend class token_joiner; }; class helper_interface { public: virtual void init() { } virtual void reset() { } virtual bool result() { return true; } virtual std::size_t process(generator&) { return 0; } virtual ~helper_interface() { } }; class token_scanner : public helper_interface { public: virtual ~token_scanner() {} explicit token_scanner(const std::size_t& stride) : stride_(stride) { if (stride > 4) { throw std::invalid_argument("token_scanner() - Invalid stride value"); } } inline std::size_t process(generator& g) { if (g.token_list_.size() >= stride_) { for (std::size_t i = 0; i < (g.token_list_.size() - stride_ + 1); ++i) { token t; switch (stride_) { case 1 : { const token& t0 = g.token_list_[i]; if (!operator()(t0)) { return i; } } break; case 2 : { const token& t0 = g.token_list_[i ]; const token& t1 = g.token_list_[i + 1]; if (!operator()(t0, t1)) { return i; } } break; case 3 : { const token& t0 = g.token_list_[i ]; const token& t1 = g.token_list_[i + 1]; const token& t2 = g.token_list_[i + 2]; if (!operator()(t0, t1, t2)) { return i; } } break; case 4 : { const token& t0 = g.token_list_[i ]; const token& t1 = g.token_list_[i + 1]; const token& t2 = g.token_list_[i + 2]; const token& t3 = g.token_list_[i + 3]; if (!operator()(t0, t1, t2, t3)) { return i; } } break; } } } return (g.token_list_.size() - stride_ + 1); } virtual bool operator() (const token&) { return false; } virtual bool operator() (const token&, const token&) { return false; } virtual bool operator() (const token&, const token&, const token&) { return false; } virtual bool operator() (const token&, const token&, const token&, const token&) { return false; } private: const std::size_t stride_; }; class token_modifier : public helper_interface { public: inline std::size_t process(generator& g) { std::size_t changes = 0; for (std::size_t i = 0; i < g.token_list_.size(); ++i) { if (modify(g.token_list_[i])) changes++; } return changes; } virtual bool modify(token& t) = 0; }; class token_inserter : public helper_interface { public: explicit token_inserter(const std::size_t& stride) : stride_(stride) { if (stride > 5) { throw std::invalid_argument("token_inserter() - Invalid stride value"); } } inline std::size_t process(generator& g) { if (g.token_list_.empty()) return 0; else if (g.token_list_.size() < stride_) return 0; std::size_t changes = 0; for (std::size_t i = 0; i < (g.token_list_.size() - stride_ + 1); ++i) { int insert_index = -1; token t; switch (stride_) { case 1 : insert_index = insert(g.token_list_[i],t); break; case 2 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], t); break; case 3 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], g.token_list_[i + 2], t); break; case 4 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], g.token_list_[i + 2], g.token_list_[i + 3], t); break; case 5 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], g.token_list_[i + 2], g.token_list_[i + 3], g.token_list_[i + 4], t); break; } typedef std::iterator_traits::difference_type diff_t; if ((insert_index >= 0) && (insert_index <= (static_cast(stride_) + 1))) { g.token_list_.insert( g.token_list_.begin() + static_cast(i + static_cast(insert_index)), t); changes++; } } return changes; } #define token_inserter_empty_body \ { \ return -1; \ } \ inline virtual int insert(const token&, token&) token_inserter_empty_body inline virtual int insert(const token&, const token&, token&) token_inserter_empty_body inline virtual int insert(const token&, const token&, const token&, token&) token_inserter_empty_body inline virtual int insert(const token&, const token&, const token&, const token&, token&) token_inserter_empty_body inline virtual int insert(const token&, const token&, const token&, const token&, const token&, token&) token_inserter_empty_body #undef token_inserter_empty_body private: const std::size_t stride_; }; class token_joiner : public helper_interface { public: token_joiner(const std::size_t& stride) : stride_(stride) {} inline std::size_t process(generator& g) { if (g.token_list_.empty()) return 0; switch (stride_) { case 2 : return process_stride_2(g); case 3 : return process_stride_3(g); default : return 0; } } virtual bool join(const token&, const token&, token&) { return false; } virtual bool join(const token&, const token&, const token&, token&) { return false; } private: inline std::size_t process_stride_2(generator& g) { typedef std::iterator_traits::difference_type diff_t; if (g.token_list_.size() < 2) return 0; std::size_t changes = 0; for (std::size_t i = 0; i < (g.token_list_.size() - 1); ++i) { token t; while (join(g[i], g[i + 1], t)) { g.token_list_[i] = t; g.token_list_.erase(g.token_list_.begin() + static_cast(i + 1)); ++changes; } } return changes; } inline std::size_t process_stride_3(generator& g) { typedef std::iterator_traits::difference_type diff_t; if (g.token_list_.size() < 3) return 0; std::size_t changes = 0; for (std::size_t i = 0; i < (g.token_list_.size() - 2); ++i) { token t; while (join(g[i], g[i + 1], g[i + 2], t)) { g.token_list_[i] = t; g.token_list_.erase(g.token_list_.begin() + static_cast(i + 1), g.token_list_.begin() + static_cast(i + 3)); ++changes; } } return changes; } const std::size_t stride_; }; namespace helper { inline void dump(lexer::generator& generator) { for (std::size_t i = 0; i < generator.size(); ++i) { lexer::token t = generator[i]; printf("Token[%02d] @ %03d %6s --> '%s'\n", static_cast(i), static_cast(t.position), t.to_str(t.type).c_str(), t.value.c_str()); } } class commutative_inserter : public lexer::token_inserter { public: using lexer::token_inserter::insert; commutative_inserter() : lexer::token_inserter(2) {} inline void ignore_symbol(const std::string& symbol) { ignore_set_.insert(symbol); } inline int insert(const lexer::token& t0, const lexer::token& t1, lexer::token& new_token) { bool match = false; new_token.type = lexer::token::e_mul; new_token.value = "*"; new_token.position = t1.position; if (t0.type == lexer::token::e_symbol) { if (ignore_set_.end() != ignore_set_.find(t0.value)) { return -1; } else if (!t0.value.empty() && ('$' == t0.value[0])) { return -1; } } if (t1.type == lexer::token::e_symbol) { if (ignore_set_.end() != ignore_set_.find(t1.value)) { return -1; } } if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_symbol )) match = true; else if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_lbracket )) match = true; else if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_lcrlbracket)) match = true; else if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_lsqrbracket)) match = true; else if ((t0.type == lexer::token::e_symbol ) && (t1.type == lexer::token::e_number )) match = true; else if ((t0.type == lexer::token::e_rbracket ) && (t1.type == lexer::token::e_number )) match = true; else if ((t0.type == lexer::token::e_rcrlbracket) && (t1.type == lexer::token::e_number )) match = true; else if ((t0.type == lexer::token::e_rsqrbracket) && (t1.type == lexer::token::e_number )) match = true; else if ((t0.type == lexer::token::e_rbracket ) && (t1.type == lexer::token::e_symbol )) match = true; else if ((t0.type == lexer::token::e_rcrlbracket) && (t1.type == lexer::token::e_symbol )) match = true; else if ((t0.type == lexer::token::e_rsqrbracket) && (t1.type == lexer::token::e_symbol )) match = true; return (match) ? 1 : -1; } private: std::set ignore_set_; }; class operator_joiner : public token_joiner { public: operator_joiner(const std::size_t& stride) : token_joiner(stride) {} inline bool join(const lexer::token& t0, const lexer::token& t1, lexer::token& t) { // ': =' --> ':=' if ((t0.type == lexer::token::e_colon) && (t1.type == lexer::token::e_eq)) { t.type = lexer::token::e_assign; t.value = ":="; t.position = t0.position; return true; } // '+ =' --> '+=' else if ((t0.type == lexer::token::e_add) && (t1.type == lexer::token::e_eq)) { t.type = lexer::token::e_addass; t.value = "+="; t.position = t0.position; return true; } // '- =' --> '-=' else if ((t0.type == lexer::token::e_sub) && (t1.type == lexer::token::e_eq)) { t.type = lexer::token::e_subass; t.value = "-="; t.position = t0.position; return true; } // '* =' --> '*=' else if ((t0.type == lexer::token::e_mul) && (t1.type == lexer::token::e_eq)) { t.type = lexer::token::e_mulass; t.value = "*="; t.position = t0.position; return true; } // '/ =' --> '/=' else if ((t0.type == lexer::token::e_div) && (t1.type == lexer::token::e_eq)) { t.type = lexer::token::e_divass; t.value = "/="; t.position = t0.position; return true; } // '% =' --> '%=' else if ((t0.type == lexer::token::e_mod) && (t1.type == lexer::token::e_eq)) { t.type = lexer::token::e_modass; t.value = "%="; t.position = t0.position; return true; } // '> =' --> '>=' else if ((t0.type == lexer::token::e_gt) && (t1.type == lexer::token::e_eq)) { t.type = lexer::token::e_gte; t.value = ">="; t.position = t0.position; return true; } // '< =' --> '<=' else if ((t0.type == lexer::token::e_lt) && (t1.type == lexer::token::e_eq)) { t.type = lexer::token::e_lte; t.value = "<="; t.position = t0.position; return true; } // '= =' --> '==' else if ((t0.type == lexer::token::e_eq) && (t1.type == lexer::token::e_eq)) { t.type = lexer::token::e_eq; t.value = "=="; t.position = t0.position; return true; } // '! =' --> '!=' else if ((static_cast(t0.type) == '!') && (t1.type == lexer::token::e_eq)) { t.type = lexer::token::e_ne; t.value = "!="; t.position = t0.position; return true; } // '< >' --> '<>' else if ((t0.type == lexer::token::e_lt) && (t1.type == lexer::token::e_gt)) { t.type = lexer::token::e_ne; t.value = "<>"; t.position = t0.position; return true; } // '<= >' --> '<=>' else if ((t0.type == lexer::token::e_lte) && (t1.type == lexer::token::e_gt)) { t.type = lexer::token::e_swap; t.value = "<=>"; t.position = t0.position; return true; } // '+ -' --> '-' else if ((t0.type == lexer::token::e_add) && (t1.type == lexer::token::e_sub)) { t.type = lexer::token::e_sub; t.value = "-"; t.position = t0.position; return true; } // '- +' --> '-' else if ((t0.type == lexer::token::e_sub) && (t1.type == lexer::token::e_add)) { t.type = lexer::token::e_sub; t.value = "-"; t.position = t0.position; return true; } // '- -' --> '+' else if ((t0.type == lexer::token::e_sub) && (t1.type == lexer::token::e_sub)) { /* Note: May need to reconsider this when wanting to implement pre/postfix decrement operator */ t.type = lexer::token::e_add; t.value = "+"; t.position = t0.position; return true; } else return false; } inline bool join(const lexer::token& t0, const lexer::token& t1, const lexer::token& t2, lexer::token& t) { // '[ * ]' --> '[*]' if ( (t0.type == lexer::token::e_lsqrbracket) && (t1.type == lexer::token::e_mul ) && (t2.type == lexer::token::e_rsqrbracket) ) { t.type = lexer::token::e_symbol; t.value = "[*]"; t.position = t0.position; return true; } else return false; } }; class bracket_checker : public lexer::token_scanner { public: using lexer::token_scanner::operator(); bracket_checker() : token_scanner(1), state_(true) {} bool result() { if (!stack_.empty()) { lexer::token t; t.value = stack_.top().first; t.position = stack_.top().second; error_token_ = t; state_ = false; return false; } else return state_; } lexer::token error_token() { return error_token_; } void reset() { // Why? because msvc doesn't support swap properly. stack_ = std::stack >(); state_ = true; error_token_.clear(); } bool operator() (const lexer::token& t) { if ( !t.value.empty() && (lexer::token::e_string != t.type) && (lexer::token::e_symbol != t.type) && exprtk::details::is_bracket(t.value[0]) ) { details::char_t c = t.value[0]; if (t.type == lexer::token::e_lbracket ) stack_.push(std::make_pair(')',t.position)); else if (t.type == lexer::token::e_lcrlbracket) stack_.push(std::make_pair('}',t.position)); else if (t.type == lexer::token::e_lsqrbracket) stack_.push(std::make_pair(']',t.position)); else if (exprtk::details::is_right_bracket(c)) { if (stack_.empty()) { state_ = false; error_token_ = t; return false; } else if (c != stack_.top().first) { state_ = false; error_token_ = t; return false; } else stack_.pop(); } } return true; } private: bool state_; std::stack > stack_; lexer::token error_token_; }; class numeric_checker : public lexer::token_scanner { public: using lexer::token_scanner::operator(); numeric_checker() : token_scanner (1), current_index_(0) {} bool result() { return error_list_.empty(); } void reset() { error_list_.clear(); current_index_ = 0; } bool operator() (const lexer::token& t) { if (token::e_number == t.type) { double v; if (!exprtk::details::string_to_real(t.value,v)) { error_list_.push_back(current_index_); } } ++current_index_; return true; } std::size_t error_count() const { return error_list_.size(); } std::size_t error_index(const std::size_t& i) { if (i < error_list_.size()) return error_list_[i]; else return std::numeric_limits::max(); } void clear_errors() { error_list_.clear(); } private: std::size_t current_index_; std::vector error_list_; }; class symbol_replacer : public lexer::token_modifier { private: typedef std::map,details::ilesscompare> replace_map_t; public: bool remove(const std::string& target_symbol) { const replace_map_t::iterator itr = replace_map_.find(target_symbol); if (replace_map_.end() == itr) return false; replace_map_.erase(itr); return true; } bool add_replace(const std::string& target_symbol, const std::string& replace_symbol, const lexer::token::token_type token_type = lexer::token::e_symbol) { const replace_map_t::iterator itr = replace_map_.find(target_symbol); if (replace_map_.end() != itr) { return false; } replace_map_[target_symbol] = std::make_pair(replace_symbol,token_type); return true; } void clear() { replace_map_.clear(); } private: bool modify(lexer::token& t) { if (lexer::token::e_symbol == t.type) { if (replace_map_.empty()) return false; const replace_map_t::iterator itr = replace_map_.find(t.value); if (replace_map_.end() != itr) { t.value = itr->second.first; t.type = itr->second.second; return true; } } return false; } replace_map_t replace_map_; }; class sequence_validator : public lexer::token_scanner { private: typedef std::pair token_pair_t; typedef std::set set_t; public: using lexer::token_scanner::operator(); sequence_validator() : lexer::token_scanner(2) { add_invalid(lexer::token::e_number ,lexer::token::e_number ); add_invalid(lexer::token::e_string ,lexer::token::e_string ); add_invalid(lexer::token::e_number ,lexer::token::e_string ); add_invalid(lexer::token::e_string ,lexer::token::e_number ); add_invalid_set1(lexer::token::e_assign ); add_invalid_set1(lexer::token::e_shr ); add_invalid_set1(lexer::token::e_shl ); add_invalid_set1(lexer::token::e_lte ); add_invalid_set1(lexer::token::e_ne ); add_invalid_set1(lexer::token::e_gte ); add_invalid_set1(lexer::token::e_lt ); add_invalid_set1(lexer::token::e_gt ); add_invalid_set1(lexer::token::e_eq ); add_invalid_set1(lexer::token::e_comma ); add_invalid_set1(lexer::token::e_add ); add_invalid_set1(lexer::token::e_sub ); add_invalid_set1(lexer::token::e_div ); add_invalid_set1(lexer::token::e_mul ); add_invalid_set1(lexer::token::e_mod ); add_invalid_set1(lexer::token::e_pow ); add_invalid_set1(lexer::token::e_colon ); add_invalid_set1(lexer::token::e_ternary); } bool result() { return error_list_.empty(); } bool operator() (const lexer::token& t0, const lexer::token& t1) { set_t::value_type p = std::make_pair(t0.type,t1.type); if (invalid_bracket_check(t0.type,t1.type)) { error_list_.push_back(std::make_pair(t0,t1)); } else if (invalid_comb_.find(p) != invalid_comb_.end()) { error_list_.push_back(std::make_pair(t0,t1)); } return true; } std::size_t error_count() { return error_list_.size(); } std::pair error(const std::size_t index) { if (index < error_list_.size()) { return error_list_[index]; } else { static const lexer::token error_token; return std::make_pair(error_token,error_token); } } void clear_errors() { error_list_.clear(); } private: void add_invalid(lexer::token::token_type base, lexer::token::token_type t) { invalid_comb_.insert(std::make_pair(base,t)); } void add_invalid_set1(lexer::token::token_type t) { add_invalid(t,lexer::token::e_assign); add_invalid(t,lexer::token::e_shr ); add_invalid(t,lexer::token::e_shl ); add_invalid(t,lexer::token::e_lte ); add_invalid(t,lexer::token::e_ne ); add_invalid(t,lexer::token::e_gte ); add_invalid(t,lexer::token::e_lt ); add_invalid(t,lexer::token::e_gt ); add_invalid(t,lexer::token::e_eq ); add_invalid(t,lexer::token::e_comma ); add_invalid(t,lexer::token::e_div ); add_invalid(t,lexer::token::e_mul ); add_invalid(t,lexer::token::e_mod ); add_invalid(t,lexer::token::e_pow ); add_invalid(t,lexer::token::e_colon ); } bool invalid_bracket_check(lexer::token::token_type base, lexer::token::token_type t) { if (details::is_right_bracket(static_cast(base))) { switch (t) { case lexer::token::e_assign : return (']' != base); case lexer::token::e_string : return true; default : return false; } } else if (details::is_left_bracket(static_cast(base))) { if (details::is_right_bracket(static_cast(t))) return false; else if (details::is_left_bracket(static_cast(t))) return false; else { switch (t) { case lexer::token::e_number : return false; case lexer::token::e_symbol : return false; case lexer::token::e_string : return false; case lexer::token::e_add : return false; case lexer::token::e_sub : return false; case lexer::token::e_colon : return false; case lexer::token::e_ternary : return false; default : return true; } } } else if (details::is_right_bracket(static_cast(t))) { switch (base) { case lexer::token::e_number : return false; case lexer::token::e_symbol : return false; case lexer::token::e_string : return false; case lexer::token::e_eof : return false; case lexer::token::e_colon : return false; case lexer::token::e_ternary : return false; default : return true; } } else if (details::is_left_bracket(static_cast(t))) { switch (base) { case lexer::token::e_rbracket : return true; case lexer::token::e_rsqrbracket : return true; case lexer::token::e_rcrlbracket : return true; default : return false; } } return false; } set_t invalid_comb_; std::vector > error_list_; }; struct helper_assembly { inline bool register_scanner(lexer::token_scanner* scanner) { if (token_scanner_list.end() != std::find(token_scanner_list.begin(), token_scanner_list.end (), scanner)) { return false; } token_scanner_list.push_back(scanner); return true; } inline bool register_modifier(lexer::token_modifier* modifier) { if (token_modifier_list.end() != std::find(token_modifier_list.begin(), token_modifier_list.end (), modifier)) { return false; } token_modifier_list.push_back(modifier); return true; } inline bool register_joiner(lexer::token_joiner* joiner) { if (token_joiner_list.end() != std::find(token_joiner_list.begin(), token_joiner_list.end (), joiner)) { return false; } token_joiner_list.push_back(joiner); return true; } inline bool register_inserter(lexer::token_inserter* inserter) { if (token_inserter_list.end() != std::find(token_inserter_list.begin(), token_inserter_list.end (), inserter)) { return false; } token_inserter_list.push_back(inserter); return true; } inline bool run_modifiers(lexer::generator& g) { error_token_modifier = reinterpret_cast(0); for (std::size_t i = 0; i < token_modifier_list.size(); ++i) { lexer::token_modifier& modifier = (*token_modifier_list[i]); modifier.reset(); modifier.process(g); if (!modifier.result()) { error_token_modifier = token_modifier_list[i]; return false; } } return true; } inline bool run_joiners(lexer::generator& g) { error_token_joiner = reinterpret_cast(0); for (std::size_t i = 0; i < token_joiner_list.size(); ++i) { lexer::token_joiner& joiner = (*token_joiner_list[i]); joiner.reset(); joiner.process(g); if (!joiner.result()) { error_token_joiner = token_joiner_list[i]; return false; } } return true; } inline bool run_inserters(lexer::generator& g) { error_token_inserter = reinterpret_cast(0); for (std::size_t i = 0; i < token_inserter_list.size(); ++i) { lexer::token_inserter& inserter = (*token_inserter_list[i]); inserter.reset(); inserter.process(g); if (!inserter.result()) { error_token_inserter = token_inserter_list[i]; return false; } } return true; } inline bool run_scanners(lexer::generator& g) { error_token_scanner = reinterpret_cast(0); for (std::size_t i = 0; i < token_scanner_list.size(); ++i) { lexer::token_scanner& scanner = (*token_scanner_list[i]); scanner.reset(); scanner.process(g); if (!scanner.result()) { error_token_scanner = token_scanner_list[i]; return false; } } return true; } std::vector token_scanner_list; std::vector token_modifier_list; std::vector token_joiner_list; std::vector token_inserter_list; lexer::token_scanner* error_token_scanner; lexer::token_modifier* error_token_modifier; lexer::token_joiner* error_token_joiner; lexer::token_inserter* error_token_inserter; }; } class parser_helper { public: typedef token token_t; typedef generator generator_t; inline bool init(const std::string& str) { if (!lexer_.process(str)) { return false; } lexer_.begin(); next_token(); return true; } inline generator_t& lexer() { return lexer_; } inline const generator_t& lexer() const { return lexer_; } inline void store_token() { lexer_.store(); store_current_token_ = current_token_; } inline void restore_token() { lexer_.restore(); current_token_ = store_current_token_; } inline void next_token() { current_token_ = lexer_.next_token(); } inline const token_t& current_token() const { return current_token_; } enum token_advance_mode { e_hold = 0, e_advance = 1 }; inline void advance_token(const token_advance_mode mode) { if (e_advance == mode) { next_token(); } } inline bool token_is(const token_t::token_type& ttype, const token_advance_mode mode = e_advance) { if (current_token().type != ttype) { return false; } advance_token(mode); return true; } inline bool token_is(const token_t::token_type& ttype, const std::string& value, const token_advance_mode mode = e_advance) { if ( (current_token().type != ttype) || !exprtk::details::imatch(value,current_token().value) ) { return false; } advance_token(mode); return true; } inline bool token_is_then_assign(const token_t::token_type& ttype, std::string& token, const token_advance_mode mode = e_advance) { if (current_token_.type != ttype) { return false; } token = current_token_.value; advance_token(mode); return true; } template class Container> inline bool token_is_then_assign(const token_t::token_type& ttype, Container& token_list, const token_advance_mode mode = e_advance) { if (current_token_.type != ttype) { return false; } token_list.push_back(current_token_.value); advance_token(mode); return true; } inline bool peek_token_is(const token_t::token_type& ttype) { return (lexer_.peek_next_token().type == ttype); } inline bool peek_token_is(const std::string& s) { return (exprtk::details::imatch(lexer_.peek_next_token().value,s)); } private: generator_t lexer_; token_t current_token_; token_t store_current_token_; }; } template class vector_view { public: typedef T* data_ptr_t; vector_view(data_ptr_t data, const std::size_t& size) : size_(size), data_(data), data_ref_(0) {} vector_view(const vector_view& vv) : size_(vv.size_), data_(vv.data_), data_ref_(0) {} inline void rebase(data_ptr_t data) { data_ = data; if (!data_ref_.empty()) { for (std::size_t i = 0; i < data_ref_.size(); ++i) { (*data_ref_[i]) = data; } } } inline data_ptr_t data() const { return data_; } inline std::size_t size() const { return size_; } inline const T& operator[](const std::size_t index) const { return data_[index]; } inline T& operator[](const std::size_t index) { return data_[index]; } void set_ref(data_ptr_t* data_ref) { data_ref_.push_back(data_ref); } private: const std::size_t size_; data_ptr_t data_; std::vector data_ref_; }; template inline vector_view make_vector_view(T* data, const std::size_t size, const std::size_t offset = 0) { return vector_view(data + offset,size); } template inline vector_view make_vector_view(std::vector& v, const std::size_t size, const std::size_t offset = 0) { return vector_view(v.data() + offset,size); } template class results_context; template struct type_store { enum store_type { e_unknown, e_scalar , e_vector , e_string }; type_store() : size(0), data(0), type(e_unknown) {} std::size_t size; void* data; store_type type; class parameter_list { public: parameter_list(std::vector& pl) : parameter_list_(pl) {} inline bool empty() const { return parameter_list_.empty(); } inline std::size_t size() const { return parameter_list_.size(); } inline type_store& operator[](const std::size_t& index) { return parameter_list_[index]; } inline const type_store& operator[](const std::size_t& index) const { return parameter_list_[index]; } inline type_store& front() { return parameter_list_[0]; } inline const type_store& front() const { return parameter_list_[0]; } inline type_store& back() { return parameter_list_.back(); } inline const type_store& back() const { return parameter_list_.back(); } private: std::vector& parameter_list_; friend class results_context; }; template struct type_view { typedef type_store type_store_t; typedef ViewType value_t; type_view(type_store_t& ts) : ts_(ts), data_(reinterpret_cast(ts_.data)) {} type_view(const type_store_t& ts) : ts_(const_cast(ts)), data_(reinterpret_cast(ts_.data)) {} inline std::size_t size() const { return ts_.size; } inline value_t& operator[](const std::size_t& i) { return data_[i]; } inline const value_t& operator[](const std::size_t& i) const { return data_[i]; } inline const value_t* begin() const { return data_; } inline value_t* begin() { return data_; } inline const value_t* end() const { return static_cast(data_ + ts_.size); } inline value_t* end() { return static_cast(data_ + ts_.size); } type_store_t& ts_; value_t* data_; }; typedef type_view vector_view; typedef type_view string_view; struct scalar_view { typedef type_store type_store_t; typedef T value_t; scalar_view(type_store_t& ts) : v_(*reinterpret_cast(ts.data)) {} scalar_view(const type_store_t& ts) : v_(*reinterpret_cast(const_cast(ts).data)) {} inline value_t& operator() () { return v_; } inline const value_t& operator() () const { return v_; } template inline bool to_int(IntType& i) const { if (!exprtk::details::numeric::is_integer(v_)) return false; i = static_cast(v_); return true; } template inline bool to_uint(UIntType& u) const { if (v_ < T(0)) return false; else if (!exprtk::details::numeric::is_integer(v_)) return false; u = static_cast(v_); return true; } T& v_; }; }; template inline std::string to_str(const StringView& view) { return std::string(view.begin(),view.size()); } #ifndef exprtk_disable_return_statement namespace details { template class return_node; template class return_envelope_node; } #endif template class results_context { public: typedef type_store type_store_t; results_context() : results_available_(false) {} inline std::size_t count() const { if (results_available_) return parameter_list_.size(); else return 0; } inline type_store_t& operator[](const std::size_t& index) { return parameter_list_[index]; } inline const type_store_t& operator[](const std::size_t& index) const { return parameter_list_[index]; } private: inline void clear() { results_available_ = false; } typedef std::vector ts_list_t; typedef typename type_store_t::parameter_list parameter_list_t; inline void assign(const parameter_list_t& pl) { parameter_list_ = pl.parameter_list_; results_available_ = true; } bool results_available_; ts_list_t parameter_list_; #ifndef exprtk_disable_return_statement friend class details::return_node; friend class details::return_envelope_node; #endif }; namespace details { enum operator_type { e_default , e_null , e_add , e_sub , e_mul , e_div , e_mod , e_pow , e_atan2 , e_min , e_max , e_avg , e_sum , e_prod , e_lt , e_lte , e_eq , e_equal , e_ne , e_nequal , e_gte , e_gt , e_and , e_nand , e_or , e_nor , e_xor , e_xnor , e_mand , e_mor , e_scand , e_scor , e_shr , e_shl , e_abs , e_acos , e_acosh , e_asin , e_asinh , e_atan , e_atanh , e_ceil , e_cos , e_cosh , e_exp , e_expm1 , e_floor , e_log , e_log10 , e_log2 , e_log1p , e_logn , e_neg , e_pos , e_round , e_roundn , e_root , e_sqrt , e_sin , e_sinc , e_sinh , e_sec , e_csc , e_tan , e_tanh , e_cot , e_clamp , e_iclamp , e_inrange , e_sgn , e_r2d , e_d2r , e_d2g , e_g2d , e_hypot , e_notl , e_erf , e_erfc , e_ncdf , e_frac , e_trunc , e_assign , e_addass , e_subass , e_mulass , e_divass , e_modass , e_in , e_like , e_ilike , e_multi , e_smulti , e_swap , // Do not add new functions/operators after this point. e_sf00 = 1000, e_sf01 = 1001, e_sf02 = 1002, e_sf03 = 1003, e_sf04 = 1004, e_sf05 = 1005, e_sf06 = 1006, e_sf07 = 1007, e_sf08 = 1008, e_sf09 = 1009, e_sf10 = 1010, e_sf11 = 1011, e_sf12 = 1012, e_sf13 = 1013, e_sf14 = 1014, e_sf15 = 1015, e_sf16 = 1016, e_sf17 = 1017, e_sf18 = 1018, e_sf19 = 1019, e_sf20 = 1020, e_sf21 = 1021, e_sf22 = 1022, e_sf23 = 1023, e_sf24 = 1024, e_sf25 = 1025, e_sf26 = 1026, e_sf27 = 1027, e_sf28 = 1028, e_sf29 = 1029, e_sf30 = 1030, e_sf31 = 1031, e_sf32 = 1032, e_sf33 = 1033, e_sf34 = 1034, e_sf35 = 1035, e_sf36 = 1036, e_sf37 = 1037, e_sf38 = 1038, e_sf39 = 1039, e_sf40 = 1040, e_sf41 = 1041, e_sf42 = 1042, e_sf43 = 1043, e_sf44 = 1044, e_sf45 = 1045, e_sf46 = 1046, e_sf47 = 1047, e_sf48 = 1048, e_sf49 = 1049, e_sf50 = 1050, e_sf51 = 1051, e_sf52 = 1052, e_sf53 = 1053, e_sf54 = 1054, e_sf55 = 1055, e_sf56 = 1056, e_sf57 = 1057, e_sf58 = 1058, e_sf59 = 1059, e_sf60 = 1060, e_sf61 = 1061, e_sf62 = 1062, e_sf63 = 1063, e_sf64 = 1064, e_sf65 = 1065, e_sf66 = 1066, e_sf67 = 1067, e_sf68 = 1068, e_sf69 = 1069, e_sf70 = 1070, e_sf71 = 1071, e_sf72 = 1072, e_sf73 = 1073, e_sf74 = 1074, e_sf75 = 1075, e_sf76 = 1076, e_sf77 = 1077, e_sf78 = 1078, e_sf79 = 1079, e_sf80 = 1080, e_sf81 = 1081, e_sf82 = 1082, e_sf83 = 1083, e_sf84 = 1084, e_sf85 = 1085, e_sf86 = 1086, e_sf87 = 1087, e_sf88 = 1088, e_sf89 = 1089, e_sf90 = 1090, e_sf91 = 1091, e_sf92 = 1092, e_sf93 = 1093, e_sf94 = 1094, e_sf95 = 1095, e_sf96 = 1096, e_sf97 = 1097, e_sf98 = 1098, e_sf99 = 1099, e_sffinal = 1100, e_sf4ext00 = 2000, e_sf4ext01 = 2001, e_sf4ext02 = 2002, e_sf4ext03 = 2003, e_sf4ext04 = 2004, e_sf4ext05 = 2005, e_sf4ext06 = 2006, e_sf4ext07 = 2007, e_sf4ext08 = 2008, e_sf4ext09 = 2009, e_sf4ext10 = 2010, e_sf4ext11 = 2011, e_sf4ext12 = 2012, e_sf4ext13 = 2013, e_sf4ext14 = 2014, e_sf4ext15 = 2015, e_sf4ext16 = 2016, e_sf4ext17 = 2017, e_sf4ext18 = 2018, e_sf4ext19 = 2019, e_sf4ext20 = 2020, e_sf4ext21 = 2021, e_sf4ext22 = 2022, e_sf4ext23 = 2023, e_sf4ext24 = 2024, e_sf4ext25 = 2025, e_sf4ext26 = 2026, e_sf4ext27 = 2027, e_sf4ext28 = 2028, e_sf4ext29 = 2029, e_sf4ext30 = 2030, e_sf4ext31 = 2031, e_sf4ext32 = 2032, e_sf4ext33 = 2033, e_sf4ext34 = 2034, e_sf4ext35 = 2035, e_sf4ext36 = 2036, e_sf4ext37 = 2037, e_sf4ext38 = 2038, e_sf4ext39 = 2039, e_sf4ext40 = 2040, e_sf4ext41 = 2041, e_sf4ext42 = 2042, e_sf4ext43 = 2043, e_sf4ext44 = 2044, e_sf4ext45 = 2045, e_sf4ext46 = 2046, e_sf4ext47 = 2047, e_sf4ext48 = 2048, e_sf4ext49 = 2049, e_sf4ext50 = 2050, e_sf4ext51 = 2051, e_sf4ext52 = 2052, e_sf4ext53 = 2053, e_sf4ext54 = 2054, e_sf4ext55 = 2055, e_sf4ext56 = 2056, e_sf4ext57 = 2057, e_sf4ext58 = 2058, e_sf4ext59 = 2059, e_sf4ext60 = 2060, e_sf4ext61 = 2061 }; inline std::string to_str(const operator_type opr) { switch (opr) { case e_add : return "+"; case e_sub : return "-"; case e_mul : return "*"; case e_div : return "/"; case e_mod : return "%"; case e_pow : return "^"; case e_assign : return ":="; case e_addass : return "+="; case e_subass : return "-="; case e_mulass : return "*="; case e_divass : return "/="; case e_modass : return "%="; case e_lt : return "<"; case e_lte : return "<="; case e_eq : return "=="; case e_equal : return "="; case e_ne : return "!="; case e_nequal : return "<>"; case e_gte : return ">="; case e_gt : return ">"; default : return"N/A"; } } struct base_operation_t { base_operation_t(const operator_type t, const unsigned int& np) : type(t), num_params(np) {} operator_type type; unsigned int num_params; }; namespace loop_unroll { #ifndef exprtk_disable_superscalar_unroll const unsigned int global_loop_batch_size = 16; #else const unsigned int global_loop_batch_size = 4; #endif struct details { details(const std::size_t& vsize, const unsigned int loop_batch_size = global_loop_batch_size) : batch_size(loop_batch_size ), remainder (vsize % batch_size), upper_bound(static_cast(vsize - (remainder ? loop_batch_size : 0))) {} unsigned int batch_size; int remainder; int upper_bound; }; } #ifdef exprtk_enable_debugging inline void dump_ptr(const std::string& s, const void* ptr, const std::size_t size = 0) { if (size) exprtk_debug(("%s - addr: %p\n",s.c_str(),ptr)); else exprtk_debug(("%s - addr: %p size: %d\n", s.c_str(), ptr, static_cast(size))); } #else inline void dump_ptr(const std::string&, const void*) {} inline void dump_ptr(const std::string&, const void*, const std::size_t) {} #endif template class vec_data_store { public: typedef vec_data_store type; typedef T* data_t; private: struct control_block { control_block() : ref_count(1), size (0), data (0), destruct (true) {} control_block(const std::size_t& dsize) : ref_count(1), size (dsize), data (0), destruct (true) { create_data(); } control_block(const std::size_t& dsize, data_t dptr, bool dstrct = false) : ref_count(1), size (dsize), data (dptr ), destruct (dstrct) {} ~control_block() { if (data && destruct && (0 == ref_count)) { dump_ptr("~control_block() data",data); delete[] data; data = reinterpret_cast(0); } } static inline control_block* create(const std::size_t& dsize, data_t data_ptr = data_t(0), bool dstrct = false) { if (dsize) { if (0 == data_ptr) return (new control_block(dsize)); else return (new control_block(dsize, data_ptr, dstrct)); } else return (new control_block); } static inline void destroy(control_block*& cntrl_blck) { if (cntrl_blck) { if ( (0 != cntrl_blck->ref_count) && (0 == --cntrl_blck->ref_count) ) { delete cntrl_blck; } cntrl_blck = 0; } } std::size_t ref_count; std::size_t size; data_t data; bool destruct; private: control_block(const control_block&); control_block& operator=(const control_block&); inline void create_data() { destruct = true; data = new T[size]; std::fill_n(data,size,T(0)); dump_ptr("control_block::create_data() - data",data,size); } }; public: vec_data_store() : control_block_(control_block::create(0)) {} vec_data_store(const std::size_t& size) : control_block_(control_block::create(size,(data_t)(0),true)) {} vec_data_store(const std::size_t& size, data_t data, bool dstrct = false) : control_block_(control_block::create(size, data, dstrct)) {} vec_data_store(const type& vds) { control_block_ = vds.control_block_; control_block_->ref_count++; } ~vec_data_store() { control_block::destroy(control_block_); } type& operator=(const type& vds) { if (this != &vds) { std::size_t final_size = min_size(control_block_, vds.control_block_); vds.control_block_->size = final_size; control_block_->size = final_size; if (control_block_->destruct || (0 == control_block_->data)) { control_block::destroy(control_block_); control_block_ = vds.control_block_; control_block_->ref_count++; } } return (*this); } inline data_t data() { return control_block_->data; } inline data_t data() const { return control_block_->data; } inline std::size_t size() { return control_block_->size; } inline std::size_t size() const { return control_block_->size; } inline data_t& ref() { return control_block_->data; } inline void dump() const { #ifdef exprtk_enable_debugging exprtk_debug(("size: %d\taddress:%p\tdestruct:%c\n", size(), data(), (control_block_->destruct ? 'T' : 'F'))); for (std::size_t i = 0; i < size(); ++i) { if (5 == i) exprtk_debug(("\n")); exprtk_debug(("%15.10f ",data()[i])); } exprtk_debug(("\n")); #endif } static inline void match_sizes(type& vds0, type& vds1) { std::size_t size = min_size(vds0.control_block_,vds1.control_block_); vds0.control_block_->size = size; vds1.control_block_->size = size; } private: static inline std::size_t min_size(control_block* cb0, control_block* cb1) { std::size_t size0 = cb0->size; std::size_t size1 = cb1->size; if (size0 && size1) return std::min(size0,size1); else return (size0) ? size0 : size1; } control_block* control_block_; }; namespace numeric { namespace details { template inline T process_impl(const operator_type operation, const T arg) { switch (operation) { case e_abs : return numeric::abs (arg); case e_acos : return numeric::acos (arg); case e_acosh : return numeric::acosh(arg); case e_asin : return numeric::asin (arg); case e_asinh : return numeric::asinh(arg); case e_atan : return numeric::atan (arg); case e_atanh : return numeric::atanh(arg); case e_ceil : return numeric::ceil (arg); case e_cos : return numeric::cos (arg); case e_cosh : return numeric::cosh (arg); case e_exp : return numeric::exp (arg); case e_expm1 : return numeric::expm1(arg); case e_floor : return numeric::floor(arg); case e_log : return numeric::log (arg); case e_log10 : return numeric::log10(arg); case e_log2 : return numeric::log2 (arg); case e_log1p : return numeric::log1p(arg); case e_neg : return numeric::neg (arg); case e_pos : return numeric::pos (arg); case e_round : return numeric::round(arg); case e_sin : return numeric::sin (arg); case e_sinc : return numeric::sinc (arg); case e_sinh : return numeric::sinh (arg); case e_sqrt : return numeric::sqrt (arg); case e_tan : return numeric::tan (arg); case e_tanh : return numeric::tanh (arg); case e_cot : return numeric::cot (arg); case e_sec : return numeric::sec (arg); case e_csc : return numeric::csc (arg); case e_r2d : return numeric::r2d (arg); case e_d2r : return numeric::d2r (arg); case e_d2g : return numeric::d2g (arg); case e_g2d : return numeric::g2d (arg); case e_notl : return numeric::notl (arg); case e_sgn : return numeric::sgn (arg); case e_erf : return numeric::erf (arg); case e_erfc : return numeric::erfc (arg); case e_ncdf : return numeric::ncdf (arg); case e_frac : return numeric::frac (arg); case e_trunc : return numeric::trunc(arg); default : exprtk_debug(("numeric::details::process_impl - Invalid unary operation.\n")); return std::numeric_limits::quiet_NaN(); } } template inline T process_impl(const operator_type operation, const T arg0, const T arg1) { switch (operation) { case e_add : return (arg0 + arg1); case e_sub : return (arg0 - arg1); case e_mul : return (arg0 * arg1); case e_div : return (arg0 / arg1); case e_mod : return modulus(arg0,arg1); case e_pow : return pow(arg0,arg1); case e_atan2 : return atan2(arg0,arg1); case e_min : return std::min(arg0,arg1); case e_max : return std::max(arg0,arg1); case e_logn : return logn(arg0,arg1); case e_lt : return (arg0 < arg1) ? T(1) : T(0); case e_lte : return (arg0 <= arg1) ? T(1) : T(0); case e_eq : return std::equal_to()(arg0,arg1) ? T(1) : T(0); case e_ne : return std::not_equal_to()(arg0,arg1) ? T(1) : T(0); case e_gte : return (arg0 >= arg1) ? T(1) : T(0); case e_gt : return (arg0 > arg1) ? T(1) : T(0); case e_and : return and_opr (arg0,arg1); case e_nand : return nand_opr(arg0,arg1); case e_or : return or_opr (arg0,arg1); case e_nor : return nor_opr (arg0,arg1); case e_xor : return xor_opr (arg0,arg1); case e_xnor : return xnor_opr(arg0,arg1); case e_root : return root (arg0,arg1); case e_roundn : return roundn (arg0,arg1); case e_equal : return equal (arg0,arg1); case e_nequal : return nequal (arg0,arg1); case e_hypot : return hypot (arg0,arg1); case e_shr : return shr (arg0,arg1); case e_shl : return shl (arg0,arg1); default : exprtk_debug(("numeric::details::process_impl - Invalid binary operation.\n")); return std::numeric_limits::quiet_NaN(); } } template inline T process_impl(const operator_type operation, const T arg0, const T arg1, int_type_tag) { switch (operation) { case e_add : return (arg0 + arg1); case e_sub : return (arg0 - arg1); case e_mul : return (arg0 * arg1); case e_div : return (arg0 / arg1); case e_mod : return arg0 % arg1; case e_pow : return pow(arg0,arg1); case e_min : return std::min(arg0,arg1); case e_max : return std::max(arg0,arg1); case e_logn : return logn(arg0,arg1); case e_lt : return (arg0 < arg1) ? T(1) : T(0); case e_lte : return (arg0 <= arg1) ? T(1) : T(0); case e_eq : return (arg0 == arg1) ? T(1) : T(0); case e_ne : return (arg0 != arg1) ? T(1) : T(0); case e_gte : return (arg0 >= arg1) ? T(1) : T(0); case e_gt : return (arg0 > arg1) ? T(1) : T(0); case e_and : return ((arg0 != T(0)) && (arg1 != T(0))) ? T(1) : T(0); case e_nand : return ((arg0 != T(0)) && (arg1 != T(0))) ? T(0) : T(1); case e_or : return ((arg0 != T(0)) || (arg1 != T(0))) ? T(1) : T(0); case e_nor : return ((arg0 != T(0)) || (arg1 != T(0))) ? T(0) : T(1); case e_xor : return arg0 ^ arg1; case e_xnor : return !(arg0 ^ arg1); case e_root : return root(arg0,arg1); case e_equal : return arg0 == arg1; case e_nequal : return arg0 != arg1; case e_hypot : return hypot(arg0,arg1); case e_shr : return arg0 >> arg1; case e_shl : return arg0 << arg1; default : exprtk_debug(("numeric::details::process_impl - Invalid binary operation.\n")); return std::numeric_limits::quiet_NaN(); } } } template inline T process(const operator_type operation, const T arg) { return exprtk::details::numeric::details::process_impl(operation,arg); } template inline T process(const operator_type operation, const T arg0, const T arg1) { return exprtk::details::numeric::details::process_impl(operation,arg0,arg1); } } template class expression_node { public: enum node_type { e_none , e_null , e_constant , e_unary , e_binary , e_binary_ext , e_trinary , e_quaternary , e_vararg , e_conditional , e_while , e_repeat , e_for , e_switch , e_mswitch , e_return , e_retenv , e_variable , e_stringvar , e_stringconst , e_stringvarrng , e_cstringvarrng, e_strgenrange , e_strconcat , e_stringvarsize, e_strswap , e_stringsize , e_stringvararg , e_function , e_vafunction , e_genfunction , e_strfunction , e_strcondition , e_strccondition, e_add , e_sub , e_mul , e_div , e_mod , e_pow , e_lt , e_lte , e_gt , e_gte , e_eq , e_ne , e_and , e_nand , e_or , e_nor , e_xor , e_xnor , e_in , e_like , e_ilike , e_inranges , e_ipow , e_ipowinv , e_abs , e_acos , e_acosh , e_asin , e_asinh , e_atan , e_atanh , e_ceil , e_cos , e_cosh , e_exp , e_expm1 , e_floor , e_log , e_log10 , e_log2 , e_log1p , e_neg , e_pos , e_round , e_sin , e_sinc , e_sinh , e_sqrt , e_tan , e_tanh , e_cot , e_sec , e_csc , e_r2d , e_d2r , e_d2g , e_g2d , e_notl , e_sgn , e_erf , e_erfc , e_ncdf , e_frac , e_trunc , e_uvouv , e_vov , e_cov , e_voc , e_vob , e_bov , e_cob , e_boc , e_vovov , e_vovoc , e_vocov , e_covov , e_covoc , e_vovovov , e_vovovoc , e_vovocov , e_vocovov , e_covovov , e_covocov , e_vocovoc , e_covovoc , e_vococov , e_sf3ext , e_sf4ext , e_nulleq , e_strass , e_vector , e_vecelem , e_rbvecelem , e_rbveccelem , e_vecdefass , e_vecvalass , e_vecvecass , e_vecopvalass , e_vecopvecass , e_vecfunc , e_vecvecswap , e_vecvecineq , e_vecvalineq , e_valvecineq , e_vecvecarith , e_vecvalarith , e_valvecarith , e_vecunaryop , e_break , e_continue , e_swap }; typedef T value_type; typedef expression_node* expression_ptr; virtual ~expression_node() {} inline virtual T value() const { return std::numeric_limits::quiet_NaN(); } inline virtual expression_node* branch(const std::size_t& index = 0) const { return reinterpret_cast(index * 0); } inline virtual node_type type() const { return e_none; } }; template inline bool is_generally_string_node(const expression_node* node); inline bool is_true(const double v) { return std::not_equal_to()(0.0,v); } inline bool is_true(const long double v) { return std::not_equal_to()(0.0L,v); } inline bool is_true(const float v) { return std::not_equal_to()(0.0f,v); } template inline bool is_true(const std::complex& v) { return std::not_equal_to >()(std::complex(0),v); } template inline bool is_true(const expression_node* node) { return std::not_equal_to()(T(0),node->value()); } template inline bool is_false(const expression_node* node) { return std::equal_to()(T(0),node->value()); } template inline bool is_unary_node(const expression_node* node) { return node && (details::expression_node::e_unary == node->type()); } template inline bool is_neg_unary_node(const expression_node* node) { return node && (details::expression_node::e_neg == node->type()); } template inline bool is_binary_node(const expression_node* node) { return node && (details::expression_node::e_binary == node->type()); } template inline bool is_variable_node(const expression_node* node) { return node && (details::expression_node::e_variable == node->type()); } template inline bool is_ivariable_node(const expression_node* node) { return node && ( details::expression_node::e_variable == node->type() || details::expression_node::e_vecelem == node->type() || details::expression_node::e_rbvecelem == node->type() || details::expression_node::e_rbveccelem == node->type() ); } template inline bool is_vector_elem_node(const expression_node* node) { return node && (details::expression_node::e_vecelem == node->type()); } template inline bool is_rebasevector_elem_node(const expression_node* node) { return node && (details::expression_node::e_rbvecelem == node->type()); } template inline bool is_rebasevector_celem_node(const expression_node* node) { return node && (details::expression_node::e_rbveccelem == node->type()); } template inline bool is_vector_node(const expression_node* node) { return node && (details::expression_node::e_vector == node->type()); } template inline bool is_ivector_node(const expression_node* node) { if (node) { switch (node->type()) { case details::expression_node::e_vector : case details::expression_node::e_vecvalass : case details::expression_node::e_vecvecass : case details::expression_node::e_vecopvalass : case details::expression_node::e_vecopvecass : case details::expression_node::e_vecvecswap : case details::expression_node::e_vecvecarith : case details::expression_node::e_vecvalarith : case details::expression_node::e_valvecarith : case details::expression_node::e_vecunaryop : return true; default : return false; } } else return false; } template inline bool is_constant_node(const expression_node* node) { return node && (details::expression_node::e_constant == node->type()); } template inline bool is_null_node(const expression_node* node) { return node && (details::expression_node::e_null == node->type()); } template inline bool is_break_node(const expression_node* node) { return node && (details::expression_node::e_break == node->type()); } template inline bool is_continue_node(const expression_node* node) { return node && (details::expression_node::e_continue == node->type()); } template inline bool is_swap_node(const expression_node* node) { return node && (details::expression_node::e_swap == node->type()); } template inline bool is_function(const expression_node* node) { return node && (details::expression_node::e_function == node->type()); } template inline bool is_return_node(const expression_node* node) { return node && (details::expression_node::e_return == node->type()); } template class unary_node; template inline bool is_negate_node(const expression_node* node) { if (node && is_unary_node(node)) { return (details::e_neg == static_cast*>(node)->operation()); } else return false; } template inline bool branch_deletable(expression_node* node) { return !is_variable_node(node) && !is_string_node (node) ; } template inline bool all_nodes_valid(expression_node* (&b)[N]) { for (std::size_t i = 0; i < N; ++i) { if (0 == b[i]) return false; } return true; } template class Sequence> inline bool all_nodes_valid(const Sequence*,Allocator>& b) { for (std::size_t i = 0; i < b.size(); ++i) { if (0 == b[i]) return false; } return true; } template inline bool all_nodes_variables(expression_node* (&b)[N]) { for (std::size_t i = 0; i < N; ++i) { if (0 == b[i]) return false; else if (!is_variable_node(b[i])) return false; } return true; } template class Sequence> inline bool all_nodes_variables(Sequence*,Allocator>& b) { for (std::size_t i = 0; i < b.size(); ++i) { if (0 == b[i]) return false; else if (!is_variable_node(b[i])) return false; } return true; } template inline void free_all_nodes(NodeAllocator& node_allocator, expression_node* (&b)[N]) { for (std::size_t i = 0; i < N; ++i) { free_node(node_allocator,b[i]); } } template class Sequence> inline void free_all_nodes(NodeAllocator& node_allocator, Sequence*,Allocator>& b) { for (std::size_t i = 0; i < b.size(); ++i) { free_node(node_allocator,b[i]); } b.clear(); } template inline void free_node(NodeAllocator& node_allocator, expression_node*& node, const bool force_delete = false) { if (0 != node) { if ( (is_variable_node(node) || is_string_node(node)) || force_delete ) return; node_allocator.free(node); node = reinterpret_cast*>(0); } } template inline void destroy_node(expression_node*& node) { delete node; node = reinterpret_cast*>(0); } template class vector_holder { private: typedef Type value_type; typedef value_type* value_ptr; typedef const value_ptr const_value_ptr; class vector_holder_base { public: virtual ~vector_holder_base() {} inline value_ptr operator[](const std::size_t& index) const { return value_at(index); } inline std::size_t size() const { return vector_size(); } inline value_ptr data() const { return value_at(0); } virtual inline bool rebaseable() const { return false; } virtual void set_ref(value_ptr*) {} protected: virtual value_ptr value_at(const std::size_t&) const = 0; virtual std::size_t vector_size() const = 0; }; class array_vector_impl : public vector_holder_base { public: array_vector_impl(const Type* vec, const std::size_t& vec_size) : vec_(vec), size_(vec_size) {} protected: value_ptr value_at(const std::size_t& index) const { if (index < size_) return const_cast(vec_ + index); else return const_value_ptr(0); } std::size_t vector_size() const { return size_; } private: array_vector_impl operator=(const array_vector_impl&); const Type* vec_; const std::size_t size_; }; template class Sequence> class sequence_vector_impl : public vector_holder_base { public: typedef Sequence sequence_t; sequence_vector_impl(sequence_t& seq) : sequence_(seq) {} protected: value_ptr value_at(const std::size_t& index) const { return (index < sequence_.size()) ? (&sequence_[index]) : const_value_ptr(0); } std::size_t vector_size() const { return sequence_.size(); } private: sequence_vector_impl operator=(const sequence_vector_impl&); sequence_t& sequence_; }; class vector_view_impl : public vector_holder_base { public: typedef exprtk::vector_view vector_view_t; vector_view_impl(vector_view_t& vec_view) : vec_view_(vec_view) {} void set_ref(value_ptr* ref) { vec_view_.set_ref(ref); } virtual inline bool rebaseable() const { return true; } protected: value_ptr value_at(const std::size_t& index) const { return (index < vec_view_.size()) ? (&vec_view_[index]) : const_value_ptr(0); } std::size_t vector_size() const { return vec_view_.size(); } private: vector_view_impl operator=(const vector_view_impl&); vector_view_t& vec_view_; }; public: typedef typename details::vec_data_store vds_t; vector_holder(Type* vec, const std::size_t& vec_size) : vector_holder_base_(new(buffer)array_vector_impl(vec,vec_size)) {} vector_holder(const vds_t& vds) : vector_holder_base_(new(buffer)array_vector_impl(vds.data(),vds.size())) {} template vector_holder(std::vector& vec) : vector_holder_base_(new(buffer)sequence_vector_impl(vec)) {} vector_holder(exprtk::vector_view& vec) : vector_holder_base_(new(buffer)vector_view_impl(vec)) {} inline value_ptr operator[](const std::size_t& index) const { return (*vector_holder_base_)[index]; } inline std::size_t size() const { return vector_holder_base_->size(); } inline value_ptr data() const { return vector_holder_base_->data(); } void set_ref(value_ptr* ref) { vector_holder_base_->set_ref(ref); } bool rebaseable() const { return vector_holder_base_->rebaseable(); } private: mutable vector_holder_base* vector_holder_base_; uchar_t buffer[64]; }; template class null_node : public expression_node { public: inline T value() const { return std::numeric_limits::quiet_NaN(); } inline typename expression_node::node_type type() const { return expression_node::e_null; } }; template class null_eq_node : public expression_node { public: typedef expression_node* expression_ptr; null_eq_node(expression_ptr brnch, const bool equality = true) : branch_(brnch), branch_deletable_(branch_deletable(branch_)), equality_(equality) {} ~null_eq_node() { if (branch_ && branch_deletable_) { destroy_node(branch_); } } inline T value() const { const T v = branch_->value(); const bool result = details::numeric::is_nan(v); if (result) return (equality_) ? T(1) : T(0); else return (equality_) ? T(0) : T(1); } inline typename expression_node::node_type type() const { return expression_node::e_nulleq; } inline operator_type operation() const { return details::e_eq; } inline expression_node* branch(const std::size_t&) const { return branch_; } private: expression_ptr branch_; const bool branch_deletable_; bool equality_; }; template class literal_node : public expression_node { public: explicit literal_node(const T& v) : value_(v) {} inline T value() const { return value_; } inline typename expression_node::node_type type() const { return expression_node::e_constant; } inline expression_node* branch(const std::size_t&) const { return reinterpret_cast*>(0); } private: literal_node(literal_node&) {} literal_node& operator=(literal_node&) { return (*this); } const T value_; }; template struct range_pack; template struct range_data_type; template class range_interface { public: typedef range_pack range_t; virtual ~range_interface() {} virtual range_t& range_ref() = 0; virtual const range_t& range_ref() const = 0; }; #ifndef exprtk_disable_string_capabilities template class string_base_node { public: typedef range_data_type range_data_type_t; virtual ~string_base_node() {} virtual std::string str () const = 0; virtual const char_t* base() const = 0; virtual std::size_t size() const = 0; }; template class string_literal_node : public expression_node , public string_base_node, public range_interface { public: typedef range_pack range_t; explicit string_literal_node(const std::string& v) : value_(v) { rp_.n0_c = std::make_pair(true,0); rp_.n1_c = std::make_pair(true,v.size() - 1); rp_.cache.first = rp_.n0_c.second; rp_.cache.second = rp_.n1_c.second; } inline T value() const { return std::numeric_limits::quiet_NaN(); } inline typename expression_node::node_type type() const { return expression_node::e_stringconst; } inline expression_node* branch(const std::size_t&) const { return reinterpret_cast*>(0); } std::string str() const { return value_; } const char_t* base() const { return value_.data(); } std::size_t size() const { return value_.size(); } range_t& range_ref() { return rp_; } const range_t& range_ref() const { return rp_; } private: string_literal_node(const string_literal_node&); string_literal_node& operator=(const string_literal_node&); const std::string value_; range_t rp_; }; #endif template class unary_node : public expression_node { public: typedef expression_node* expression_ptr; unary_node(const operator_type& opr, expression_ptr brnch) : operation_(opr), branch_(brnch), branch_deletable_(branch_deletable(branch_)) {} ~unary_node() { if (branch_ && branch_deletable_) { destroy_node(branch_); } } inline T value() const { const T arg = branch_->value(); return numeric::process(operation_,arg); } inline typename expression_node::node_type type() const { return expression_node::e_unary; } inline operator_type operation() const { return operation_; } inline expression_node* branch(const std::size_t&) const { return branch_; } inline void release() { branch_deletable_ = false; } protected: operator_type operation_; expression_ptr branch_; bool branch_deletable_; }; template struct construct_branch_pair { template static inline void process(std::pair*,bool> (&)[N], expression_node*) {} }; template struct construct_branch_pair { template static inline void process(std::pair*,bool> (&branch)[N], expression_node* b) { if (b) { branch[D] = std::make_pair(b,branch_deletable(b)); } } }; template inline void init_branches(std::pair*,bool> (&branch)[N], expression_node* b0, expression_node* b1 = reinterpret_cast*>(0), expression_node* b2 = reinterpret_cast*>(0), expression_node* b3 = reinterpret_cast*>(0), expression_node* b4 = reinterpret_cast*>(0), expression_node* b5 = reinterpret_cast*>(0), expression_node* b6 = reinterpret_cast*>(0), expression_node* b7 = reinterpret_cast*>(0), expression_node* b8 = reinterpret_cast*>(0), expression_node* b9 = reinterpret_cast*>(0)) { construct_branch_pair 0)>::process(branch,b0); construct_branch_pair 1)>::process(branch,b1); construct_branch_pair 2)>::process(branch,b2); construct_branch_pair 3)>::process(branch,b3); construct_branch_pair 4)>::process(branch,b4); construct_branch_pair 5)>::process(branch,b5); construct_branch_pair 6)>::process(branch,b6); construct_branch_pair 7)>::process(branch,b7); construct_branch_pair 8)>::process(branch,b8); construct_branch_pair 9)>::process(branch,b9); } struct cleanup_branches { template static inline void execute(std::pair*,bool> (&branch)[N]) { for (std::size_t i = 0; i < N; ++i) { if (branch[i].first && branch[i].second) { destroy_node(branch[i].first); } } } template class Sequence> static inline void execute(Sequence*,bool>,Allocator>& branch) { for (std::size_t i = 0; i < branch.size(); ++i) { if (branch[i].first && branch[i].second) { destroy_node(branch[i].first); } } } }; template class binary_node : public expression_node { public: typedef expression_node* expression_ptr; typedef std::pair branch_t; binary_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : operation_(opr) { init_branches<2>(branch_, branch0, branch1); } ~binary_node() { cleanup_branches::execute(branch_); } inline T value() const { const T arg0 = branch_[0].first->value(); const T arg1 = branch_[1].first->value(); return numeric::process(operation_,arg0,arg1); } inline typename expression_node::node_type type() const { return expression_node::e_binary; } inline operator_type operation() { return operation_; } inline expression_node* branch(const std::size_t& index = 0) const { if (0 == index) return branch_[0].first; else if (1 == index) return branch_[1].first; else return reinterpret_cast(0); } protected: operator_type operation_; branch_t branch_[2]; }; template class binary_ext_node : public expression_node { public: typedef expression_node* expression_ptr; typedef std::pair branch_t; binary_ext_node(expression_ptr branch0, expression_ptr branch1) { init_branches<2>(branch_, branch0, branch1); } ~binary_ext_node() { cleanup_branches::execute(branch_); } inline T value() const { const T arg0 = branch_[0].first->value(); const T arg1 = branch_[1].first->value(); return Operation::process(arg0,arg1); } inline typename expression_node::node_type type() const { return expression_node::e_binary_ext; } inline operator_type operation() { return Operation::operation(); } inline expression_node* branch(const std::size_t& index = 0) const { if (0 == index) return branch_[0].first; else if (1 == index) return branch_[1].first; else return reinterpret_cast(0); } protected: branch_t branch_[2]; }; template class trinary_node : public expression_node { public: typedef expression_node* expression_ptr; typedef std::pair branch_t; trinary_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1, expression_ptr branch2) : operation_(opr) { init_branches<3>(branch_, branch0, branch1, branch2); } ~trinary_node() { cleanup_branches::execute(branch_); } inline T value() const { const T arg0 = branch_[0].first->value(); const T arg1 = branch_[1].first->value(); const T arg2 = branch_[2].first->value(); switch (operation_) { case e_inrange : return (arg1 < arg0) ? T(0) : ((arg1 > arg2) ? T(0) : T(1)); case e_clamp : return (arg1 < arg0) ? arg0 : (arg1 > arg2 ? arg2 : arg1); case e_iclamp : if ((arg1 <= arg0) || (arg1 >= arg2)) return arg1; else return ((T(2) * arg1 <= (arg2 + arg0)) ? arg0 : arg2); default : { exprtk_debug(("trinary_node::value() - Error: Invalid operation\n")); return std::numeric_limits::quiet_NaN(); } } } inline typename expression_node::node_type type() const { return expression_node::e_trinary; } protected: operator_type operation_; branch_t branch_[3]; }; template class quaternary_node : public expression_node { public: typedef expression_node* expression_ptr; typedef std::pair branch_t; quaternary_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1, expression_ptr branch2, expression_ptr branch3) : operation_(opr) { init_branches<4>(branch_, branch0, branch1, branch2, branch3); } ~quaternary_node() { cleanup_branches::execute(branch_); } inline T value() const { return std::numeric_limits::quiet_NaN(); } inline typename expression_node::node_type type() const { return expression_node::e_quaternary; } protected: operator_type operation_; branch_t branch_[4]; }; template class conditional_node : public expression_node { public: typedef expression_node* expression_ptr; conditional_node(expression_ptr test, expression_ptr consequent, expression_ptr alternative) : test_(test), consequent_(consequent), alternative_(alternative), test_deletable_(branch_deletable(test_)), consequent_deletable_(branch_deletable(consequent_)), alternative_deletable_(branch_deletable(alternative_)) {} ~conditional_node() { if (test_ && test_deletable_) { destroy_node(test_); } if (consequent_ && consequent_deletable_ ) { destroy_node(consequent_); } if (alternative_ && alternative_deletable_) { destroy_node(alternative_); } } inline T value() const { if (is_true(test_)) return consequent_->value(); else return alternative_->value(); } inline typename expression_node::node_type type() const { return expression_node::e_conditional; } private: expression_ptr test_; expression_ptr consequent_; expression_ptr alternative_; const bool test_deletable_; const bool consequent_deletable_; const bool alternative_deletable_; }; template class cons_conditional_node : public expression_node { public: // Consequent only conditional statement node typedef expression_node* expression_ptr; cons_conditional_node(expression_ptr test, expression_ptr consequent) : test_(test), consequent_(consequent), test_deletable_(branch_deletable(test_)), consequent_deletable_(branch_deletable(consequent_)) {} ~cons_conditional_node() { if (test_ && test_deletable_) { destroy_node(test_); } if (consequent_ && consequent_deletable_) { destroy_node(consequent_); } } inline T value() const { if (is_true(test_)) return consequent_->value(); else return std::numeric_limits::quiet_NaN(); } inline typename expression_node::node_type type() const { return expression_node::e_conditional; } private: expression_ptr test_; expression_ptr consequent_; const bool test_deletable_; const bool consequent_deletable_; }; #ifndef exprtk_disable_break_continue template class break_exception { public: break_exception(const T& v) : value(v) {} T value; }; class continue_exception {}; template class break_node : public expression_node { public: typedef expression_node* expression_ptr; break_node(expression_ptr ret = expression_ptr(0)) : return_(ret), return_deletable_(branch_deletable(return_)) {} ~break_node() { if (return_deletable_) { destroy_node(return_); } } inline T value() const { throw break_exception(return_ ? return_->value() : std::numeric_limits::quiet_NaN()); #ifndef _MSC_VER return std::numeric_limits::quiet_NaN(); #endif } inline typename expression_node::node_type type() const { return expression_node::e_break; } private: expression_ptr return_; const bool return_deletable_; }; template class continue_node : public expression_node { public: inline T value() const { throw continue_exception(); #ifndef _MSC_VER return std::numeric_limits::quiet_NaN(); #endif } inline typename expression_node::node_type type() const { return expression_node::e_break; } }; #endif template class while_loop_node : public expression_node { public: typedef expression_node* expression_ptr; while_loop_node(expression_ptr condition, expression_ptr loop_body) : condition_(condition), loop_body_(loop_body), condition_deletable_(branch_deletable(condition_)), loop_body_deletable_(branch_deletable(loop_body_)) {} ~while_loop_node() { if (condition_ && condition_deletable_) { destroy_node(condition_); } if (loop_body_ && loop_body_deletable_) { destroy_node(loop_body_); } } inline T value() const { T result = T(0); while (is_true(condition_)) { result = loop_body_->value(); } return result; } inline typename expression_node::node_type type() const { return expression_node::e_while; } private: expression_ptr condition_; expression_ptr loop_body_; const bool condition_deletable_; const bool loop_body_deletable_; }; template class repeat_until_loop_node : public expression_node { public: typedef expression_node* expression_ptr; repeat_until_loop_node(expression_ptr condition, expression_ptr loop_body) : condition_(condition), loop_body_(loop_body), condition_deletable_(branch_deletable(condition_)), loop_body_deletable_(branch_deletable(loop_body_)) {} ~repeat_until_loop_node() { if (condition_ && condition_deletable_) { destroy_node(condition_); } if (loop_body_ && loop_body_deletable_) { destroy_node(loop_body_); } } inline T value() const { T result = T(0); do { result = loop_body_->value(); } while (is_false(condition_)); return result; } inline typename expression_node::node_type type() const { return expression_node::e_repeat; } private: expression_ptr condition_; expression_ptr loop_body_; const bool condition_deletable_; const bool loop_body_deletable_; }; template class for_loop_node : public expression_node { public: typedef expression_node* expression_ptr; for_loop_node(expression_ptr initialiser, expression_ptr condition, expression_ptr incrementor, expression_ptr loop_body) : initialiser_(initialiser), condition_ (condition ), incrementor_(incrementor), loop_body_ (loop_body ), initialiser_deletable_(branch_deletable(initialiser_)), condition_deletable_ (branch_deletable(condition_ )), incrementor_deletable_(branch_deletable(incrementor_)), loop_body_deletable_ (branch_deletable(loop_body_ )) {} ~for_loop_node() { if (initialiser_ && initialiser_deletable_) { destroy_node(initialiser_); } if (condition_ && condition_deletable_) { destroy_node(condition_); } if (incrementor_ && incrementor_deletable_) { destroy_node(incrementor_); } if (loop_body_ && loop_body_deletable_) { destroy_node(loop_body_); } } inline T value() const { T result = T(0); if (initialiser_) initialiser_->value(); if (incrementor_) { while (is_true(condition_)) { result = loop_body_->value(); incrementor_->value(); } } else { while (is_true(condition_)) { result = loop_body_->value(); } } return result; } inline typename expression_node::node_type type() const { return expression_node::e_for; } private: expression_ptr initialiser_ ; expression_ptr condition_ ; expression_ptr incrementor_ ; expression_ptr loop_body_ ; const bool initialiser_deletable_; const bool condition_deletable_ ; const bool incrementor_deletable_; const bool loop_body_deletable_ ; }; #ifndef exprtk_disable_break_continue template class while_loop_bc_node : public expression_node { public: typedef expression_node* expression_ptr; while_loop_bc_node(expression_ptr condition, expression_ptr loop_body) : condition_(condition), loop_body_(loop_body), condition_deletable_(branch_deletable(condition_)), loop_body_deletable_(branch_deletable(loop_body_)) {} ~while_loop_bc_node() { if (condition_ && condition_deletable_) { destroy_node(condition_); } if (loop_body_ && loop_body_deletable_) { destroy_node(loop_body_); } } inline T value() const { T result = T(0); while (is_true(condition_)) { try { result = loop_body_->value(); } catch(const break_exception& e) { return e.value; } catch(const continue_exception&) {} } return result; } inline typename expression_node::node_type type() const { return expression_node::e_while; } private: expression_ptr condition_; expression_ptr loop_body_; const bool condition_deletable_; const bool loop_body_deletable_; }; template class repeat_until_loop_bc_node : public expression_node { public: typedef expression_node* expression_ptr; repeat_until_loop_bc_node(expression_ptr condition, expression_ptr loop_body) : condition_(condition), loop_body_(loop_body), condition_deletable_(branch_deletable(condition_)), loop_body_deletable_(branch_deletable(loop_body_)) {} ~repeat_until_loop_bc_node() { if (condition_ && condition_deletable_) { destroy_node(condition_); } if (loop_body_ && loop_body_deletable_) { destroy_node(loop_body_); } } inline T value() const { T result = T(0); do { try { result = loop_body_->value(); } catch(const break_exception& e) { return e.value; } catch(const continue_exception&) {} } while (is_false(condition_)); return result; } inline typename expression_node::node_type type() const { return expression_node::e_repeat; } private: expression_ptr condition_; expression_ptr loop_body_; const bool condition_deletable_; const bool loop_body_deletable_; }; template class for_loop_bc_node : public expression_node { public: typedef expression_node* expression_ptr; for_loop_bc_node(expression_ptr initialiser, expression_ptr condition, expression_ptr incrementor, expression_ptr loop_body) : initialiser_(initialiser), condition_ (condition ), incrementor_(incrementor), loop_body_ (loop_body ), initialiser_deletable_(branch_deletable(initialiser_)), condition_deletable_ (branch_deletable(condition_ )), incrementor_deletable_(branch_deletable(incrementor_)), loop_body_deletable_ (branch_deletable(loop_body_ )) {} ~for_loop_bc_node() { if (initialiser_ && initialiser_deletable_) { destroy_node(initialiser_); } if (condition_ && condition_deletable_) { destroy_node(condition_); } if (incrementor_ && incrementor_deletable_) { destroy_node(incrementor_); } if (loop_body_ && loop_body_deletable_) { destroy_node(loop_body_); } } inline T value() const { T result = T(0); if (initialiser_) initialiser_->value(); if (incrementor_) { while (is_true(condition_)) { try { result = loop_body_->value(); } catch(const break_exception& e) { return e.value; } catch(const continue_exception&) {} incrementor_->value(); } } else { while (is_true(condition_)) { try { result = loop_body_->value(); } catch(const break_exception& e) { return e.value; } catch(const continue_exception&) {} } } return result; } inline typename expression_node::node_type type() const { return expression_node::e_for; } private: expression_ptr initialiser_; expression_ptr condition_ ; expression_ptr incrementor_; expression_ptr loop_body_ ; const bool initialiser_deletable_; const bool condition_deletable_ ; const bool incrementor_deletable_; const bool loop_body_deletable_ ; }; #endif template class switch_node : public expression_node { public: typedef expression_node* expression_ptr; template class Sequence> switch_node(const Sequence& arg_list) { if (1 != (arg_list.size() & 1)) return; arg_list_.resize(arg_list.size()); delete_branch_.resize(arg_list.size()); for (std::size_t i = 0; i < arg_list.size(); ++i) { if (arg_list[i]) { arg_list_[i] = arg_list[i]; delete_branch_[i] = static_cast(branch_deletable(arg_list_[i]) ? 1 : 0); } else { arg_list_.clear(); delete_branch_.clear(); return; } } } ~switch_node() { for (std::size_t i = 0; i < arg_list_.size(); ++i) { if (arg_list_[i] && delete_branch_[i]) { destroy_node(arg_list_[i]); } } } inline T value() const { if (!arg_list_.empty()) { const std::size_t upper_bound = (arg_list_.size() - 1); for (std::size_t i = 0; i < upper_bound; i += 2) { expression_ptr condition = arg_list_[i ]; expression_ptr consequent = arg_list_[i + 1]; if (is_true(condition)) { return consequent->value(); } } return arg_list_[upper_bound]->value(); } else return std::numeric_limits::quiet_NaN(); } inline typename expression_node::node_type type() const { return expression_node::e_switch; } protected: std::vector arg_list_; std::vector delete_branch_; }; template class switch_n_node : public switch_node { public: typedef expression_node* expression_ptr; template class Sequence> switch_n_node(const Sequence& arg_list) : switch_node(arg_list) {} inline T value() const { return Switch_N::process(switch_node::arg_list_); } }; template class multi_switch_node : public expression_node { public: typedef expression_node* expression_ptr; template class Sequence> multi_switch_node(const Sequence& arg_list) { if (0 != (arg_list.size() & 1)) return; arg_list_.resize(arg_list.size()); delete_branch_.resize(arg_list.size()); for (std::size_t i = 0; i < arg_list.size(); ++i) { if (arg_list[i]) { arg_list_[i] = arg_list[i]; delete_branch_[i] = static_cast(branch_deletable(arg_list_[i]) ? 1 : 0); } else { arg_list_.clear(); delete_branch_.clear(); return; } } } ~multi_switch_node() { for (std::size_t i = 0; i < arg_list_.size(); ++i) { if (arg_list_[i] && delete_branch_[i]) { destroy_node(arg_list_[i]); } } } inline T value() const { T result = T(0); if (arg_list_.empty()) { return std::numeric_limits::quiet_NaN(); } const std::size_t upper_bound = (arg_list_.size() - 1); for (std::size_t i = 0; i < upper_bound; i += 2) { expression_ptr condition = arg_list_[i ]; expression_ptr consequent = arg_list_[i + 1]; if (is_true(condition)) { result = consequent->value(); } } return result; } inline typename expression_node::node_type type() const { return expression_node::e_mswitch; } private: std::vector arg_list_; std::vector delete_branch_; }; template class ivariable { public: virtual ~ivariable() {} virtual T& ref() = 0; virtual const T& ref() const = 0; }; template class variable_node : public expression_node, public ivariable { public: static T null_value; explicit variable_node() : value_(&null_value) {} variable_node(T& v) : value_(&v) {} inline bool operator <(const variable_node& v) const { return this < (&v); } inline T value() const { return (*value_); } inline T& ref() { return (*value_); } inline const T& ref() const { return (*value_); } inline typename expression_node::node_type type() const { return expression_node::e_variable; } private: T* value_; }; template T variable_node::null_value = T(std::numeric_limits::quiet_NaN()); template struct range_pack { typedef expression_node* expression_node_ptr; typedef std::pair cached_range_t; range_pack() : n0_e (std::make_pair(false,expression_node_ptr(0))), n1_e (std::make_pair(false,expression_node_ptr(0))), n0_c (std::make_pair(false,0)), n1_c (std::make_pair(false,0)), cache(std::make_pair(0,0)) {} void clear() { n0_e = std::make_pair(false,expression_node_ptr(0)); n1_e = std::make_pair(false,expression_node_ptr(0)); n0_c = std::make_pair(false,0); n1_c = std::make_pair(false,0); cache = std::make_pair(0,0); } void free() { if (n0_e.first && n0_e.second) { n0_e.first = false; if ( !is_variable_node(n0_e.second) && !is_string_node (n0_e.second) ) { destroy_node(n0_e.second); } } if (n1_e.first && n1_e.second) { n1_e.first = false; if ( !is_variable_node(n1_e.second) && !is_string_node (n1_e.second) ) { destroy_node(n1_e.second); } } } bool const_range() { return ( n0_c.first && n1_c.first) && (!n0_e.first && !n1_e.first); } bool var_range() { return ( n0_e.first && n1_e.first) && (!n0_c.first && !n1_c.first); } bool operator() (std::size_t& r0, std::size_t& r1, const std::size_t& size = std::numeric_limits::max()) const { if (n0_c.first) r0 = n0_c.second; else if (n0_e.first) { T r0_value = n0_e.second->value(); if (r0_value < 0) return false; else r0 = static_cast(details::numeric::to_int64(r0_value)); } else return false; if (n1_c.first) r1 = n1_c.second; else if (n1_e.first) { T r1_value = n1_e.second->value(); if (r1_value < 0) return false; else r1 = static_cast(details::numeric::to_int64(r1_value)); } else return false; if ( (std::numeric_limits::max() != size) && (std::numeric_limits::max() == r1 ) ) { r1 = size - 1; } cache.first = r0; cache.second = r1; return (r0 <= r1); } inline std::size_t const_size() const { return (n1_c.second - n0_c.second + 1); } inline std::size_t cache_size() const { return (cache.second - cache.first + 1); } std::pair n0_e; std::pair n1_e; std::pair n0_c; std::pair n1_c; mutable cached_range_t cache; }; template class string_base_node; template struct range_data_type { typedef range_pack range_t; typedef string_base_node* strbase_ptr_t; range_data_type() : range(0), data (0), size (0), type_size(0), str_node (0) {} range_t* range; void* data; std::size_t size; std::size_t type_size; strbase_ptr_t str_node; }; template class vector_node; template class vector_interface { public: typedef vector_node* vector_node_ptr; typedef vec_data_store vds_t; virtual ~vector_interface() {} virtual std::size_t size () const = 0; virtual vector_node_ptr vec() const = 0; virtual vector_node_ptr vec() = 0; virtual vds_t& vds () = 0; virtual const vds_t& vds () const = 0; virtual bool side_effect () const { return false; } }; template class vector_node : public expression_node , public vector_interface { public: typedef expression_node* expression_ptr; typedef vector_holder vector_holder_t; typedef vector_node* vector_node_ptr; typedef vec_data_store vds_t; vector_node(vector_holder_t* vh) : vector_holder_(vh), vds_((*vector_holder_).size(),(*vector_holder_)[0]) { vector_holder_->set_ref(&vds_.ref()); } vector_node(const vds_t& vds, vector_holder_t* vh) : vector_holder_(vh), vds_(vds) {} inline T value() const { return vds().data()[0]; } vector_node_ptr vec() const { return const_cast(this); } vector_node_ptr vec() { return this; } inline typename expression_node::node_type type() const { return expression_node::e_vector; } std::size_t size() const { return vds().size(); } vds_t& vds() { return vds_; } const vds_t& vds() const { return vds_; } inline vector_holder_t& vec_holder() { return (*vector_holder_); } private: vector_holder_t* vector_holder_; vds_t vds_; }; template class vector_elem_node : public expression_node, public ivariable { public: typedef expression_node* expression_ptr; typedef vector_holder vector_holder_t; typedef vector_holder_t* vector_holder_ptr; vector_elem_node(expression_ptr index, vector_holder_ptr vec_holder) : index_(index), vec_holder_(vec_holder), vector_base_((*vec_holder)[0]), index_deletable_(branch_deletable(index_)) {} ~vector_elem_node() { if (index_ && index_deletable_) { destroy_node(index_); } } inline T value() const { return *(vector_base_ + static_cast(details::numeric::to_int64(index_->value()))); } inline T& ref() { return *(vector_base_ + static_cast(details::numeric::to_int64(index_->value()))); } inline const T& ref() const { return *(vector_base_ + static_cast(details::numeric::to_int64(index_->value()))); } inline typename expression_node::node_type type() const { return expression_node::e_vecelem; } inline vector_holder_t& vec_holder() { return (*vec_holder_); } private: expression_ptr index_; vector_holder_ptr vec_holder_; T* vector_base_; const bool index_deletable_; }; template class rebasevector_elem_node : public expression_node, public ivariable { public: typedef expression_node* expression_ptr; typedef vector_holder vector_holder_t; typedef vector_holder_t* vector_holder_ptr; typedef vec_data_store vds_t; rebasevector_elem_node(expression_ptr index, vector_holder_ptr vec_holder) : index_(index), index_deletable_(branch_deletable(index_)), vector_holder_(vec_holder), vds_((*vector_holder_).size(),(*vector_holder_)[0]) { vector_holder_->set_ref(&vds_.ref()); } ~rebasevector_elem_node() { if (index_ && index_deletable_) { destroy_node(index_); } } inline T value() const { return *(vds_.data() + static_cast(details::numeric::to_int64(index_->value()))); } inline T& ref() { return *(vds_.data() + static_cast(details::numeric::to_int64(index_->value()))); } inline const T& ref() const { return *(vds_.data() + static_cast(details::numeric::to_int64(index_->value()))); } inline typename expression_node::node_type type() const { return expression_node::e_rbvecelem; } inline vector_holder_t& vec_holder() { return (*vector_holder_); } private: expression_ptr index_; const bool index_deletable_; vector_holder_ptr vector_holder_; vds_t vds_; }; template class rebasevector_celem_node : public expression_node, public ivariable { public: typedef expression_node* expression_ptr; typedef vector_holder vector_holder_t; typedef vector_holder_t* vector_holder_ptr; typedef vec_data_store vds_t; rebasevector_celem_node(const std::size_t index, vector_holder_ptr vec_holder) : index_(index), vector_holder_(vec_holder), vds_((*vector_holder_).size(),(*vector_holder_)[0]) { vector_holder_->set_ref(&vds_.ref()); } inline T value() const { return *(vds_.data() + index_); } inline T& ref() { return *(vds_.data() + index_); } inline const T& ref() const { return *(vds_.data() + index_); } inline typename expression_node::node_type type() const { return expression_node::e_rbveccelem; } inline vector_holder_t& vec_holder() { return (*vector_holder_); } private: const std::size_t index_; vector_holder_ptr vector_holder_; vds_t vds_; }; template class vector_assignment_node : public expression_node { public: typedef expression_node* expression_ptr; vector_assignment_node(T* vector_base, const std::size_t& size, const std::vector& initialiser_list, const bool single_value_initialse) : vector_base_(vector_base), initialiser_list_(initialiser_list), size_(size), single_value_initialse_(single_value_initialse) {} ~vector_assignment_node() { for (std::size_t i = 0; i < initialiser_list_.size(); ++i) { if (branch_deletable(initialiser_list_[i])) { destroy_node(initialiser_list_[i]); } } } inline T value() const { if (single_value_initialse_) { for (std::size_t i = 0; i < size_; ++i) { *(vector_base_ + i) = initialiser_list_[0]->value(); } } else { std::size_t il_size = initialiser_list_.size(); for (std::size_t i = 0; i < il_size; ++i) { *(vector_base_ + i) = initialiser_list_[i]->value(); } if (il_size < size_) { for (std::size_t i = il_size; i < size_; ++i) { *(vector_base_ + i) = T(0); } } } return *(vector_base_); } inline typename expression_node::node_type type() const { return expression_node::e_vecdefass; } private: vector_assignment_node& operator=(const vector_assignment_node&); mutable T* vector_base_; std::vector initialiser_list_; const std::size_t size_; const bool single_value_initialse_; }; template class swap_node : public expression_node { public: typedef expression_node* expression_ptr; typedef variable_node* variable_node_ptr; swap_node(variable_node_ptr var0, variable_node_ptr var1) : var0_(var0), var1_(var1) {} inline T value() const { std::swap(var0_->ref(),var1_->ref()); return var1_->ref(); } inline typename expression_node::node_type type() const { return expression_node::e_swap; } private: variable_node_ptr var0_; variable_node_ptr var1_; }; template class swap_generic_node : public binary_node { public: typedef expression_node* expression_ptr; typedef ivariable* ivariable_ptr; swap_generic_node(expression_ptr var0, expression_ptr var1) : binary_node(details::e_swap, var0, var1), var0_(dynamic_cast(var0)), var1_(dynamic_cast(var1)) {} inline T value() const { std::swap(var0_->ref(),var1_->ref()); return var1_->ref(); } inline typename expression_node::node_type type() const { return expression_node::e_swap; } private: ivariable_ptr var0_; ivariable_ptr var1_; }; template class swap_vecvec_node : public binary_node , public vector_interface { public: typedef expression_node* expression_ptr; typedef vector_node* vector_node_ptr; typedef vec_data_store vds_t; swap_vecvec_node(expression_ptr branch0, expression_ptr branch1) : binary_node(details::e_swap, branch0, branch1), vec0_node_ptr_(0), vec1_node_ptr_(0), vec_size_ (0), initialised_ (false) { if (is_ivector_node(binary_node::branch_[0].first)) { vector_interface* vi = reinterpret_cast*>(0); if (0 != (vi = dynamic_cast*>(binary_node::branch_[0].first))) { vec0_node_ptr_ = vi->vec(); vds() = vi->vds(); } } if (is_ivector_node(binary_node::branch_[1].first)) { vector_interface* vi = reinterpret_cast*>(0); if (0 != (vi = dynamic_cast*>(binary_node::branch_[1].first))) { vec1_node_ptr_ = vi->vec(); } } if (vec0_node_ptr_ && vec1_node_ptr_) { vec_size_ = std::min(vec0_node_ptr_->vds().size(), vec1_node_ptr_->vds().size()); initialised_ = true; } } inline T value() const { if (initialised_) { binary_node::branch_[0].first->value(); binary_node::branch_[1].first->value(); T* vec0 = vec0_node_ptr_->vds().data(); T* vec1 = vec1_node_ptr_->vds().data(); for (std::size_t i = 0; i < vec_size_; ++i) { std::swap(vec0[i],vec1[i]); } return vec1_node_ptr_->value(); } else return std::numeric_limits::quiet_NaN(); } vector_node_ptr vec() const { return vec0_node_ptr_; } vector_node_ptr vec() { return vec0_node_ptr_; } inline typename expression_node::node_type type() const { return expression_node::e_vecvecswap; } std::size_t size() const { return vec_size_; } vds_t& vds() { return vds_; } const vds_t& vds() const { return vds_; } private: vector_node* vec0_node_ptr_; vector_node* vec1_node_ptr_; std::size_t vec_size_; bool initialised_; vds_t vds_; }; #ifndef exprtk_disable_string_capabilities template class stringvar_node : public expression_node , public string_base_node, public range_interface { public: typedef range_pack range_t; static std::string null_value; explicit stringvar_node() : value_(&null_value) {} explicit stringvar_node(std::string& v) : value_(&v) { rp_.n0_c = std::make_pair(true,0); rp_.n1_c = std::make_pair(true,v.size() - 1); rp_.cache.first = rp_.n0_c.second; rp_.cache.second = rp_.n1_c.second; } inline bool operator <(const stringvar_node& v) const { return this < (&v); } inline T value() const { rp_.n1_c.second = (*value_).size() - 1; rp_.cache.second = rp_.n1_c.second; return std::numeric_limits::quiet_NaN(); } std::string str() const { return ref(); } const char_t* base() const { return &(*value_)[0]; } std::size_t size() const { return ref().size(); } std::string& ref() { return (*value_); } const std::string& ref() const { return (*value_); } range_t& range_ref() { return rp_; } const range_t& range_ref() const { return rp_; } inline typename expression_node::node_type type() const { return expression_node::e_stringvar; } private: std::string* value_; mutable range_t rp_; }; template std::string stringvar_node::null_value = std::string(""); template class string_range_node : public expression_node , public string_base_node, public range_interface { public: typedef range_pack range_t; static std::string null_value; explicit string_range_node(std::string& v, const range_t& rp) : value_(&v), rp_(rp) {} virtual ~string_range_node() { rp_.free(); } inline bool operator <(const string_range_node& v) const { return this < (&v); } inline T value() const { return std::numeric_limits::quiet_NaN(); } inline std::string str() const { return (*value_); } const char_t* base() const { return &(*value_)[0]; } std::size_t size() const { return ref().size(); } inline range_t range() const { return rp_; } inline virtual std::string& ref() { return (*value_); } inline virtual const std::string& ref() const { return (*value_); } inline range_t& range_ref() { return rp_; } inline const range_t& range_ref() const { return rp_; } inline typename expression_node::node_type type() const { return expression_node::e_stringvarrng; } private: std::string* value_; range_t rp_; }; template std::string string_range_node::null_value = std::string(""); template class const_string_range_node : public expression_node , public string_base_node, public range_interface { public: typedef range_pack range_t; explicit const_string_range_node(const std::string& v, const range_t& rp) : value_(v), rp_(rp) {} ~const_string_range_node() { rp_.free(); } inline T value() const { return std::numeric_limits::quiet_NaN(); } std::string str() const { return value_; } const char_t* base() const { return value_.data(); } std::size_t size() const { return value_.size(); } range_t range() const { return rp_; } range_t& range_ref() { return rp_; } const range_t& range_ref() const { return rp_; } inline typename expression_node::node_type type() const { return expression_node::e_cstringvarrng; } private: const_string_range_node& operator=(const const_string_range_node&); const std::string value_; range_t rp_; }; template class generic_string_range_node : public expression_node , public string_base_node, public range_interface { public: typedef expression_node * expression_ptr; typedef stringvar_node * strvar_node_ptr; typedef string_base_node* str_base_ptr; typedef range_pack range_t; typedef range_t* range_ptr; typedef range_interface irange_t; typedef irange_t* irange_ptr; generic_string_range_node(expression_ptr str_branch, const range_t& brange) : initialised_(false), branch_(str_branch), branch_deletable_(branch_deletable(branch_)), str_base_ptr_ (0), str_range_ptr_(0), base_range_(brange) { range_.n0_c = std::make_pair(true,0); range_.n1_c = std::make_pair(true,0); range_.cache.first = range_.n0_c.second; range_.cache.second = range_.n1_c.second; if (is_generally_string_node(branch_)) { str_base_ptr_ = dynamic_cast(branch_); if (0 == str_base_ptr_) return; str_range_ptr_ = dynamic_cast(branch_); if (0 == str_range_ptr_) return; } initialised_ = (str_base_ptr_ && str_range_ptr_); } ~generic_string_range_node() { base_range_.free(); if (branch_ && branch_deletable_) { destroy_node(branch_); } } inline T value() const { if (initialised_) { branch_->value(); std::size_t str_r0 = 0; std::size_t str_r1 = 0; std::size_t r0 = 0; std::size_t r1 = 0; range_t& range = str_range_ptr_->range_ref(); const std::size_t base_str_size = str_base_ptr_->size(); if ( range (str_r0,str_r1,base_str_size) && base_range_( r0, r1,base_str_size) ) { const std::size_t size = (r1 - r0) + 1; range_.n1_c.second = size - 1; range_.cache.second = range_.n1_c.second; value_.assign(str_base_ptr_->base() + str_r0 + r0, size); } } return std::numeric_limits::quiet_NaN(); } std::string str() const { return value_; } const char_t* base() const { return &value_[0]; } std::size_t size() const { return value_.size(); } range_t& range_ref() { return range_; } const range_t& range_ref() const { return range_; } inline typename expression_node::node_type type() const { return expression_node::e_strgenrange; } private: bool initialised_; expression_ptr branch_; const bool branch_deletable_; str_base_ptr str_base_ptr_; irange_ptr str_range_ptr_; mutable range_t base_range_; mutable range_t range_; mutable std::string value_; }; template class string_concat_node : public binary_node , public string_base_node, public range_interface { public: typedef expression_node * expression_ptr; typedef string_base_node* str_base_ptr; typedef range_pack range_t; typedef range_t* range_ptr; typedef range_interface irange_t; typedef irange_t* irange_ptr; string_concat_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), initialised_(false), str0_base_ptr_ (0), str1_base_ptr_ (0), str0_range_ptr_(0), str1_range_ptr_(0) { range_.n0_c = std::make_pair(true,0); range_.n1_c = std::make_pair(true,0); range_.cache.first = range_.n0_c.second; range_.cache.second = range_.n1_c.second; if (is_generally_string_node(binary_node::branch_[0].first)) { str0_base_ptr_ = dynamic_cast(binary_node::branch_[0].first); if (0 == str0_base_ptr_) return; str0_range_ptr_ = dynamic_cast(binary_node::branch_[0].first); if (0 == str0_range_ptr_) return; } if (is_generally_string_node(binary_node::branch_[1].first)) { str1_base_ptr_ = dynamic_cast(binary_node::branch_[1].first); if (0 == str1_base_ptr_) return; str1_range_ptr_ = dynamic_cast(binary_node::branch_[1].first); if (0 == str1_range_ptr_) return; } initialised_ = str0_base_ptr_ && str1_base_ptr_ && str0_range_ptr_ && str1_range_ptr_ ; } inline T value() const { if (initialised_) { binary_node::branch_[0].first->value(); binary_node::branch_[1].first->value(); std::size_t str0_r0 = 0; std::size_t str0_r1 = 0; std::size_t str1_r0 = 0; std::size_t str1_r1 = 0; range_t& range0 = str0_range_ptr_->range_ref(); range_t& range1 = str1_range_ptr_->range_ref(); if ( range0(str0_r0,str0_r1,str0_base_ptr_->size()) && range1(str1_r0,str1_r1,str1_base_ptr_->size()) ) { const std::size_t size0 = (str0_r1 - str0_r0) + 1; const std::size_t size1 = (str1_r1 - str1_r0) + 1; value_.assign(str0_base_ptr_->base() + str0_r0, size0); value_.append(str1_base_ptr_->base() + str1_r0, size1); range_.n1_c.second = value_.size() - 1; range_.cache.second = range_.n1_c.second; } } return std::numeric_limits::quiet_NaN(); } std::string str() const { return value_; } const char_t* base() const { return &value_[0]; } std::size_t size() const { return value_.size(); } range_t& range_ref() { return range_; } const range_t& range_ref() const { return range_; } inline typename expression_node::node_type type() const { return expression_node::e_strconcat; } private: bool initialised_; str_base_ptr str0_base_ptr_; str_base_ptr str1_base_ptr_; irange_ptr str0_range_ptr_; irange_ptr str1_range_ptr_; mutable range_t range_; mutable std::string value_; }; template class swap_string_node : public binary_node , public string_base_node, public range_interface { public: typedef expression_node * expression_ptr; typedef stringvar_node * strvar_node_ptr; typedef string_base_node* str_base_ptr; typedef range_pack range_t; typedef range_t* range_ptr; typedef range_interface irange_t; typedef irange_t* irange_ptr; swap_string_node(expression_ptr branch0, expression_ptr branch1) : binary_node(details::e_swap, branch0, branch1), initialised_(false), str0_node_ptr_(0), str1_node_ptr_(0) { if (is_string_node(binary_node::branch_[0].first)) { str0_node_ptr_ = static_cast(binary_node::branch_[0].first); } if (is_string_node(binary_node::branch_[1].first)) { str1_node_ptr_ = static_cast(binary_node::branch_[1].first); } initialised_ = (str0_node_ptr_ && str1_node_ptr_); } inline T value() const { if (initialised_) { binary_node::branch_[0].first->value(); binary_node::branch_[1].first->value(); std::swap(str0_node_ptr_->ref(),str1_node_ptr_->ref()); } return std::numeric_limits::quiet_NaN(); } std::string str() const { return str0_node_ptr_->str(); } const char_t* base() const { return str0_node_ptr_->base(); } std::size_t size() const { return str0_node_ptr_->size(); } range_t& range_ref() { return str0_node_ptr_->range_ref(); } const range_t& range_ref() const { return str0_node_ptr_->range_ref(); } inline typename expression_node::node_type type() const { return expression_node::e_strswap; } private: bool initialised_; strvar_node_ptr str0_node_ptr_; strvar_node_ptr str1_node_ptr_; }; template class swap_genstrings_node : public binary_node { public: typedef expression_node * expression_ptr; typedef string_base_node* str_base_ptr; typedef range_pack range_t; typedef range_t* range_ptr; typedef range_interface irange_t; typedef irange_t* irange_ptr; swap_genstrings_node(expression_ptr branch0, expression_ptr branch1) : binary_node(details::e_default, branch0, branch1), str0_base_ptr_ (0), str1_base_ptr_ (0), str0_range_ptr_(0), str1_range_ptr_(0), initialised_(false) { if (is_generally_string_node(binary_node::branch_[0].first)) { str0_base_ptr_ = dynamic_cast(binary_node::branch_[0].first); if (0 == str0_base_ptr_) return; irange_ptr range_ptr = dynamic_cast(binary_node::branch_[0].first); if (0 == range_ptr) return; str0_range_ptr_ = &(range_ptr->range_ref()); } if (is_generally_string_node(binary_node::branch_[1].first)) { str1_base_ptr_ = dynamic_cast(binary_node::branch_[1].first); if (0 == str1_base_ptr_) return; irange_ptr range_ptr = dynamic_cast(binary_node::branch_[1].first); if (0 == range_ptr) return; str1_range_ptr_ = &(range_ptr->range_ref()); } initialised_ = str0_base_ptr_ && str1_base_ptr_ && str0_range_ptr_ && str1_range_ptr_ ; } inline T value() const { if (initialised_) { binary_node::branch_[0].first->value(); binary_node::branch_[1].first->value(); std::size_t str0_r0 = 0; std::size_t str0_r1 = 0; std::size_t str1_r0 = 0; std::size_t str1_r1 = 0; range_t& range0 = (*str0_range_ptr_); range_t& range1 = (*str1_range_ptr_); if ( range0(str0_r0,str0_r1,str0_base_ptr_->size()) && range1(str1_r0,str1_r1,str1_base_ptr_->size()) ) { const std::size_t size0 = range0.cache_size(); const std::size_t size1 = range1.cache_size(); const std::size_t max_size = std::min(size0,size1); char_t* s0 = const_cast(str0_base_ptr_->base() + str0_r0); char_t* s1 = const_cast(str1_base_ptr_->base() + str1_r0); loop_unroll::details lud(max_size); const char_t* upper_bound = s0 + lud.upper_bound; while (s0 < upper_bound) { #define exprtk_loop(N) \ std::swap(s0[N], s1[N]); \ exprtk_loop( 0) exprtk_loop( 1) exprtk_loop( 2) exprtk_loop( 3) #ifndef exprtk_disable_superscalar_unroll exprtk_loop( 4) exprtk_loop( 5) exprtk_loop( 6) exprtk_loop( 7) exprtk_loop( 8) exprtk_loop( 9) exprtk_loop(10) exprtk_loop(11) exprtk_loop(12) exprtk_loop(13) exprtk_loop(14) exprtk_loop(15) #endif s0 += lud.batch_size; s1 += lud.batch_size; } int i = 0; exprtk_disable_fallthrough_begin switch (lud.remainder) { #define case_stmt(N) \ case N : { std::swap(s0[i],s1[i]); ++i; } \ #ifndef exprtk_disable_superscalar_unroll case_stmt(15) case_stmt(14) case_stmt(13) case_stmt(12) case_stmt(11) case_stmt(10) case_stmt( 9) case_stmt( 8) case_stmt( 7) case_stmt( 6) case_stmt( 5) case_stmt( 4) #endif case_stmt( 3) case_stmt( 2) case_stmt( 1) } exprtk_disable_fallthrough_end #undef exprtk_loop #undef case_stmt } } return std::numeric_limits::quiet_NaN(); } inline typename expression_node::node_type type() const { return expression_node::e_strswap; } private: swap_genstrings_node(swap_genstrings_node&); swap_genstrings_node& operator=(swap_genstrings_node&); str_base_ptr str0_base_ptr_; str_base_ptr str1_base_ptr_; range_ptr str0_range_ptr_; range_ptr str1_range_ptr_; bool initialised_; }; template class stringvar_size_node : public expression_node { public: static std::string null_value; explicit stringvar_size_node() : value_(&null_value) {} explicit stringvar_size_node(std::string& v) : value_(&v) {} inline T value() const { return T((*value_).size()); } inline typename expression_node::node_type type() const { return expression_node::e_stringvarsize; } private: std::string* value_; }; template std::string stringvar_size_node::null_value = std::string(""); template class string_size_node : public expression_node { public: typedef expression_node * expression_ptr; typedef string_base_node* str_base_ptr; string_size_node(expression_ptr brnch) : branch_(brnch), branch_deletable_(branch_deletable(branch_)), str_base_ptr_(0) { if (is_generally_string_node(branch_)) { str_base_ptr_ = dynamic_cast(branch_); if (0 == str_base_ptr_) return; } } ~string_size_node() { if (branch_ && branch_deletable_) { destroy_node(branch_); } } inline T value() const { T result = std::numeric_limits::quiet_NaN(); if (str_base_ptr_) { branch_->value(); result = T(str_base_ptr_->size()); } return result; } inline typename expression_node::node_type type() const { return expression_node::e_stringsize; } private: expression_ptr branch_; const bool branch_deletable_; str_base_ptr str_base_ptr_; }; struct asn_assignment { static inline void execute(std::string& s, const char_t* data, const std::size_t size) { s.assign(data,size); } }; struct asn_addassignment { static inline void execute(std::string& s, const char_t* data, const std::size_t size) { s.append(data,size); } }; template class assignment_string_node : public binary_node , public string_base_node, public range_interface { public: typedef expression_node * expression_ptr; typedef stringvar_node * strvar_node_ptr; typedef string_base_node* str_base_ptr; typedef range_pack range_t; typedef range_t* range_ptr; typedef range_interface irange_t; typedef irange_t* irange_ptr; assignment_string_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), initialised_(false), str0_base_ptr_ (0), str1_base_ptr_ (0), str0_node_ptr_ (0), str1_range_ptr_(0) { if (is_string_node(binary_node::branch_[0].first)) { str0_node_ptr_ = static_cast(binary_node::branch_[0].first); str0_base_ptr_ = dynamic_cast(binary_node::branch_[0].first); } if (is_generally_string_node(binary_node::branch_[1].first)) { str1_base_ptr_ = dynamic_cast(binary_node::branch_[1].first); if (0 == str1_base_ptr_) return; irange_ptr range_ptr = dynamic_cast(binary_node::branch_[1].first); if (0 == range_ptr) return; str1_range_ptr_ = &(range_ptr->range_ref()); } initialised_ = str0_base_ptr_ && str1_base_ptr_ && str0_node_ptr_ && str1_range_ptr_ ; } inline T value() const { if (initialised_) { binary_node::branch_[1].first->value(); std::size_t r0 = 0; std::size_t r1 = 0; range_t& range = (*str1_range_ptr_); if (range(r0, r1, str1_base_ptr_->size())) { AssignmentProcess::execute(str0_node_ptr_->ref(), str1_base_ptr_->base() + r0, (r1 - r0) + 1); binary_node::branch_[0].first->value(); } } return std::numeric_limits::quiet_NaN(); } std::string str() const { return str0_node_ptr_->str(); } const char_t* base() const { return str0_node_ptr_->base(); } std::size_t size() const { return str0_node_ptr_->size(); } range_t& range_ref() { return str0_node_ptr_->range_ref(); } const range_t& range_ref() const { return str0_node_ptr_->range_ref(); } inline typename expression_node::node_type type() const { return expression_node::e_strass; } private: bool initialised_; str_base_ptr str0_base_ptr_; str_base_ptr str1_base_ptr_; strvar_node_ptr str0_node_ptr_; range_ptr str1_range_ptr_; }; template class assignment_string_range_node : public binary_node , public string_base_node, public range_interface { public: typedef expression_node * expression_ptr; typedef stringvar_node * strvar_node_ptr; typedef string_base_node* str_base_ptr; typedef range_pack range_t; typedef range_t* range_ptr; typedef range_interface irange_t; typedef irange_t* irange_ptr; assignment_string_range_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), initialised_(false), str0_base_ptr_ (0), str1_base_ptr_ (0), str0_node_ptr_ (0), str0_range_ptr_(0), str1_range_ptr_(0) { if (is_string_range_node(binary_node::branch_[0].first)) { str0_node_ptr_ = static_cast(binary_node::branch_[0].first); str0_base_ptr_ = dynamic_cast(binary_node::branch_[0].first); irange_ptr range_ptr = dynamic_cast(binary_node::branch_[0].first); if (0 == range_ptr) return; str0_range_ptr_ = &(range_ptr->range_ref()); } if (is_generally_string_node(binary_node::branch_[1].first)) { str1_base_ptr_ = dynamic_cast(binary_node::branch_[1].first); if (0 == str1_base_ptr_) return; irange_ptr range_ptr = dynamic_cast(binary_node::branch_[1].first); if (0 == range_ptr) return; str1_range_ptr_ = &(range_ptr->range_ref()); } initialised_ = str0_base_ptr_ && str1_base_ptr_ && str0_node_ptr_ && str0_range_ptr_ && str1_range_ptr_ ; } inline T value() const { if (initialised_) { binary_node::branch_[0].first->value(); binary_node::branch_[1].first->value(); std::size_t s0_r0 = 0; std::size_t s0_r1 = 0; std::size_t s1_r0 = 0; std::size_t s1_r1 = 0; range_t& range0 = (*str0_range_ptr_); range_t& range1 = (*str1_range_ptr_); if ( range0(s0_r0, s0_r1, str0_base_ptr_->size()) && range1(s1_r0, s1_r1, str1_base_ptr_->size()) ) { std::size_t size = std::min((s0_r1 - s0_r0),(s1_r1 - s1_r0)) + 1; std::copy(str1_base_ptr_->base() + s1_r0, str1_base_ptr_->base() + s1_r0 + size, const_cast(base() + s0_r0)); } } return std::numeric_limits::quiet_NaN(); } std::string str() const { return str0_node_ptr_->str(); } const char_t* base() const { return str0_node_ptr_->base(); } std::size_t size() const { return str0_node_ptr_->size(); } range_t& range_ref() { return str0_node_ptr_->range_ref(); } const range_t& range_ref() const { return str0_node_ptr_->range_ref(); } inline typename expression_node::node_type type() const { return expression_node::e_strass; } private: bool initialised_; str_base_ptr str0_base_ptr_; str_base_ptr str1_base_ptr_; strvar_node_ptr str0_node_ptr_; range_ptr str0_range_ptr_; range_ptr str1_range_ptr_; }; template class conditional_string_node : public trinary_node , public string_base_node, public range_interface { public: typedef expression_node * expression_ptr; typedef string_base_node* str_base_ptr; typedef range_pack range_t; typedef range_t* range_ptr; typedef range_interface irange_t; typedef irange_t* irange_ptr; conditional_string_node(expression_ptr test, expression_ptr consequent, expression_ptr alternative) : trinary_node(details::e_default,consequent,alternative,test), initialised_(false), str0_base_ptr_ (0), str1_base_ptr_ (0), str0_range_ptr_(0), str1_range_ptr_(0), test_ (test), consequent_ (consequent), alternative_(alternative) { range_.n0_c = std::make_pair(true,0); range_.n1_c = std::make_pair(true,0); range_.cache.first = range_.n0_c.second; range_.cache.second = range_.n1_c.second; if (is_generally_string_node(trinary_node::branch_[0].first)) { str0_base_ptr_ = dynamic_cast(trinary_node::branch_[0].first); if (0 == str0_base_ptr_) return; str0_range_ptr_ = dynamic_cast(trinary_node::branch_[0].first); if (0 == str0_range_ptr_) return; } if (is_generally_string_node(trinary_node::branch_[1].first)) { str1_base_ptr_ = dynamic_cast(trinary_node::branch_[1].first); if (0 == str1_base_ptr_) return; str1_range_ptr_ = dynamic_cast(trinary_node::branch_[1].first); if (0 == str1_range_ptr_) return; } initialised_ = str0_base_ptr_ && str1_base_ptr_ && str0_range_ptr_ && str1_range_ptr_ ; } inline T value() const { if (initialised_) { std::size_t r0 = 0; std::size_t r1 = 0; if (is_true(test_)) { consequent_->value(); range_t& range = str0_range_ptr_->range_ref(); if (range(r0,r1,str0_base_ptr_->size())) { const std::size_t size = (r1 - r0) + 1; value_.assign(str0_base_ptr_->base() + r0, size); range_.n1_c.second = value_.size() - 1; range_.cache.second = range_.n1_c.second; return T(1); } } else { alternative_->value(); range_t& range = str1_range_ptr_->range_ref(); if (range(r0,r1,str1_base_ptr_->size())) { const std::size_t size = (r1 - r0) + 1; value_.assign(str1_base_ptr_->base() + r0, size); range_.n1_c.second = value_.size() - 1; range_.cache.second = range_.n1_c.second; return T(0); } } } return std::numeric_limits::quiet_NaN(); } std::string str() const { return value_; } const char_t* base() const { return &value_[0]; } std::size_t size() const { return value_.size(); } range_t& range_ref() { return range_; } const range_t& range_ref() const { return range_; } inline typename expression_node::node_type type() const { return expression_node::e_strcondition; } private: bool initialised_; str_base_ptr str0_base_ptr_; str_base_ptr str1_base_ptr_; irange_ptr str0_range_ptr_; irange_ptr str1_range_ptr_; mutable range_t range_; mutable std::string value_; expression_ptr test_; expression_ptr consequent_; expression_ptr alternative_; }; template class cons_conditional_str_node : public binary_node , public string_base_node, public range_interface { public: typedef expression_node * expression_ptr; typedef string_base_node* str_base_ptr; typedef range_pack range_t; typedef range_t* range_ptr; typedef range_interface irange_t; typedef irange_t* irange_ptr; cons_conditional_str_node(expression_ptr test, expression_ptr consequent) : binary_node(details::e_default, consequent, test), initialised_(false), str0_base_ptr_ (0), str0_range_ptr_(0), test_ (test), consequent_(consequent) { range_.n0_c = std::make_pair(true,0); range_.n1_c = std::make_pair(true,0); range_.cache.first = range_.n0_c.second; range_.cache.second = range_.n1_c.second; if (is_generally_string_node(binary_node::branch_[0].first)) { str0_base_ptr_ = dynamic_cast(binary_node::branch_[0].first); if (0 == str0_base_ptr_) return; str0_range_ptr_ = dynamic_cast(binary_node::branch_[0].first); if (0 == str0_range_ptr_) return; } initialised_ = str0_base_ptr_ && str0_range_ptr_ ; } inline T value() const { if (initialised_) { if (is_true(test_)) { consequent_->value(); range_t& range = str0_range_ptr_->range_ref(); std::size_t r0 = 0; std::size_t r1 = 0; if (range(r0,r1,str0_base_ptr_->size())) { const std::size_t size = (r1 - r0) + 1; value_.assign(str0_base_ptr_->base() + r0, size); range_.n1_c.second = value_.size() - 1; range_.cache.second = range_.n1_c.second; return T(1); } } } return std::numeric_limits::quiet_NaN(); } std::string str() const { return value_; } const char_t* base() const { return &value_[0]; } std::size_t size() const { return value_.size(); } range_t& range_ref() { return range_; } const range_t& range_ref() const { return range_; } inline typename expression_node::node_type type() const { return expression_node::e_strccondition; } private: bool initialised_; str_base_ptr str0_base_ptr_; irange_ptr str0_range_ptr_; mutable range_t range_; mutable std::string value_; expression_ptr test_; expression_ptr consequent_; }; template class str_vararg_node : public expression_node , public string_base_node, public range_interface { public: typedef expression_node * expression_ptr; typedef string_base_node* str_base_ptr; typedef range_pack range_t; typedef range_t* range_ptr; typedef range_interface irange_t; typedef irange_t* irange_ptr; template class Sequence> str_vararg_node(const Sequence& arg_list) : final_node_(arg_list.back()), final_deletable_(branch_deletable(final_node_)), initialised_(false), str_base_ptr_ (0), str_range_ptr_(0) { if (0 == final_node_) return; else if (!is_generally_string_node(final_node_)) return; str_base_ptr_ = dynamic_cast(final_node_); if (0 == str_base_ptr_) return; str_range_ptr_ = dynamic_cast(final_node_); if (0 == str_range_ptr_) return; initialised_ = str_base_ptr_ && str_range_ptr_; if (arg_list.size() > 1) { const std::size_t arg_list_size = arg_list.size() - 1; arg_list_.resize(arg_list_size); delete_branch_.resize(arg_list_size); for (std::size_t i = 0; i < arg_list_size; ++i) { if (arg_list[i]) { arg_list_[i] = arg_list[i]; delete_branch_[i] = static_cast(branch_deletable(arg_list_[i]) ? 1 : 0); } else { arg_list_.clear(); delete_branch_.clear(); return; } } } } ~str_vararg_node() { if (final_node_ && final_deletable_) { destroy_node(final_node_); } for (std::size_t i = 0; i < arg_list_.size(); ++i) { if (arg_list_[i] && delete_branch_[i]) { destroy_node(arg_list_[i]); } } } inline T value() const { if (!arg_list_.empty()) { VarArgFunction::process(arg_list_); } final_node_->value(); return std::numeric_limits::quiet_NaN(); } std::string str() const { return str_base_ptr_->str(); } const char_t* base() const { return str_base_ptr_->base(); } std::size_t size() const { return str_base_ptr_->size(); } range_t& range_ref() { return str_range_ptr_->range_ref(); } const range_t& range_ref() const { return str_range_ptr_->range_ref(); } inline typename expression_node::node_type type() const { return expression_node::e_stringvararg; } private: expression_ptr final_node_; bool final_deletable_; bool initialised_; str_base_ptr str_base_ptr_; irange_ptr str_range_ptr_; std::vector arg_list_; std::vector delete_branch_; }; #endif template inline T axn(T a, T x) { // a*x^n return a * exprtk::details::numeric::fast_exp::result(x); } template inline T axnb(T a, T x, T b) { // a*x^n+b return a * exprtk::details::numeric::fast_exp::result(x) + b; } template struct sf_base { typedef typename details::functor_t::Type Type; typedef typename details::functor_t functor_t; typedef typename functor_t::qfunc_t quaternary_functor_t; typedef typename functor_t::tfunc_t trinary_functor_t; typedef typename functor_t::bfunc_t binary_functor_t; typedef typename functor_t::ufunc_t unary_functor_t; }; #define define_sfop3(NN,OP0,OP1) \ template \ struct sf##NN##_op : public sf_base \ { \ typedef typename sf_base::Type Type; \ static inline T process(Type x, Type y, Type z) \ { \ return (OP0); \ } \ static inline std::string id() \ { \ return OP1; \ } \ }; \ define_sfop3(00,(x + y) / z ,"(t+t)/t") define_sfop3(01,(x + y) * z ,"(t+t)*t") define_sfop3(02,(x + y) - z ,"(t+t)-t") define_sfop3(03,(x + y) + z ,"(t+t)+t") define_sfop3(04,(x - y) + z ,"(t-t)+t") define_sfop3(05,(x - y) / z ,"(t-t)/t") define_sfop3(06,(x - y) * z ,"(t-t)*t") define_sfop3(07,(x * y) + z ,"(t*t)+t") define_sfop3(08,(x * y) - z ,"(t*t)-t") define_sfop3(09,(x * y) / z ,"(t*t)/t") define_sfop3(10,(x * y) * z ,"(t*t)*t") define_sfop3(11,(x / y) + z ,"(t/t)+t") define_sfop3(12,(x / y) - z ,"(t/t)-t") define_sfop3(13,(x / y) / z ,"(t/t)/t") define_sfop3(14,(x / y) * z ,"(t/t)*t") define_sfop3(15,x / (y + z) ,"t/(t+t)") define_sfop3(16,x / (y - z) ,"t/(t-t)") define_sfop3(17,x / (y * z) ,"t/(t*t)") define_sfop3(18,x / (y / z) ,"t/(t/t)") define_sfop3(19,x * (y + z) ,"t*(t+t)") define_sfop3(20,x * (y - z) ,"t*(t-t)") define_sfop3(21,x * (y * z) ,"t*(t*t)") define_sfop3(22,x * (y / z) ,"t*(t/t)") define_sfop3(23,x - (y + z) ,"t-(t+t)") define_sfop3(24,x - (y - z) ,"t-(t-t)") define_sfop3(25,x - (y / z) ,"t-(t/t)") define_sfop3(26,x - (y * z) ,"t-(t*t)") define_sfop3(27,x + (y * z) ,"t+(t*t)") define_sfop3(28,x + (y / z) ,"t+(t/t)") define_sfop3(29,x + (y + z) ,"t+(t+t)") define_sfop3(30,x + (y - z) ,"t+(t-t)") define_sfop3(31,(axnb(x,y,z))," ") define_sfop3(32,(axnb(x,y,z))," ") define_sfop3(33,(axnb(x,y,z))," ") define_sfop3(34,(axnb(x,y,z))," ") define_sfop3(35,(axnb(x,y,z))," ") define_sfop3(36,(axnb(x,y,z))," ") define_sfop3(37,(axnb(x,y,z))," ") define_sfop3(38,(axnb(x,y,z))," ") define_sfop3(39,x * numeric::log(y) + z,"") define_sfop3(40,x * numeric::log(y) - z,"") define_sfop3(41,x * numeric::log10(y) + z,"") define_sfop3(42,x * numeric::log10(y) - z,"") define_sfop3(43,x * numeric::sin(y) + z ,"") define_sfop3(44,x * numeric::sin(y) - z ,"") define_sfop3(45,x * numeric::cos(y) + z ,"") define_sfop3(46,x * numeric::cos(y) - z ,"") define_sfop3(47,details::is_true(x) ? y : z,"") #define define_sfop4(NN,OP0,OP1) \ template \ struct sf##NN##_op : public sf_base \ { \ typedef typename sf_base::Type Type; \ static inline T process(Type x, Type y, Type z, Type w) \ { \ return (OP0); \ } \ static inline std::string id() { return OP1; } \ }; \ define_sfop4(48,(x + ((y + z) / w)),"t+((t+t)/t)") define_sfop4(49,(x + ((y + z) * w)),"t+((t+t)*t)") define_sfop4(50,(x + ((y - z) / w)),"t+((t-t)/t)") define_sfop4(51,(x + ((y - z) * w)),"t+((t-t)*t)") define_sfop4(52,(x + ((y * z) / w)),"t+((t*t)/t)") define_sfop4(53,(x + ((y * z) * w)),"t+((t*t)*t)") define_sfop4(54,(x + ((y / z) + w)),"t+((t/t)+t)") define_sfop4(55,(x + ((y / z) / w)),"t+((t/t)/t)") define_sfop4(56,(x + ((y / z) * w)),"t+((t/t)*t)") define_sfop4(57,(x - ((y + z) / w)),"t-((t+t)/t)") define_sfop4(58,(x - ((y + z) * w)),"t-((t+t)*t)") define_sfop4(59,(x - ((y - z) / w)),"t-((t-t)/t)") define_sfop4(60,(x - ((y - z) * w)),"t-((t-t)*t)") define_sfop4(61,(x - ((y * z) / w)),"t-((t*t)/t)") define_sfop4(62,(x - ((y * z) * w)),"t-((t*t)*t)") define_sfop4(63,(x - ((y / z) / w)),"t-((t/t)/t)") define_sfop4(64,(x - ((y / z) * w)),"t-((t/t)*t)") define_sfop4(65,(((x + y) * z) - w),"((t+t)*t)-t") define_sfop4(66,(((x - y) * z) - w),"((t-t)*t)-t") define_sfop4(67,(((x * y) * z) - w),"((t*t)*t)-t") define_sfop4(68,(((x / y) * z) - w),"((t/t)*t)-t") define_sfop4(69,(((x + y) / z) - w),"((t+t)/t)-t") define_sfop4(70,(((x - y) / z) - w),"((t-t)/t)-t") define_sfop4(71,(((x * y) / z) - w),"((t*t)/t)-t") define_sfop4(72,(((x / y) / z) - w),"((t/t)/t)-t") define_sfop4(73,((x * y) + (z * w)),"(t*t)+(t*t)") define_sfop4(74,((x * y) - (z * w)),"(t*t)-(t*t)") define_sfop4(75,((x * y) + (z / w)),"(t*t)+(t/t)") define_sfop4(76,((x * y) - (z / w)),"(t*t)-(t/t)") define_sfop4(77,((x / y) + (z / w)),"(t/t)+(t/t)") define_sfop4(78,((x / y) - (z / w)),"(t/t)-(t/t)") define_sfop4(79,((x / y) - (z * w)),"(t/t)-(t*t)") define_sfop4(80,(x / (y + (z * w))),"t/(t+(t*t))") define_sfop4(81,(x / (y - (z * w))),"t/(t-(t*t))") define_sfop4(82,(x * (y + (z * w))),"t*(t+(t*t))") define_sfop4(83,(x * (y - (z * w))),"t*(t-(t*t))") define_sfop4(84,(axn(x,y) + axn(z,w)),"") define_sfop4(85,(axn(x,y) + axn(z,w)),"") define_sfop4(86,(axn(x,y) + axn(z,w)),"") define_sfop4(87,(axn(x,y) + axn(z,w)),"") define_sfop4(88,(axn(x,y) + axn(z,w)),"") define_sfop4(89,(axn(x,y) + axn(z,w)),"") define_sfop4(90,(axn(x,y) + axn(z,w)),"") define_sfop4(91,(axn(x,y) + axn(z,w)),"") define_sfop4(92,((details::is_true(x) && details::is_true(y)) ? z : w),"") define_sfop4(93,((details::is_true(x) || details::is_true(y)) ? z : w),"") define_sfop4(94,((x < y) ? z : w),"") define_sfop4(95,((x <= y) ? z : w),"") define_sfop4(96,((x > y) ? z : w),"") define_sfop4(97,((x >= y) ? z : w),"") define_sfop4(98,(details::is_true(numeric::equal(x,y)) ? z : w),"") define_sfop4(99,(x * numeric::sin(y) + z * numeric::cos(w)),"") define_sfop4(ext00,((x + y) - (z * w)),"(t+t)-(t*t)") define_sfop4(ext01,((x + y) - (z / w)),"(t+t)-(t/t)") define_sfop4(ext02,((x + y) + (z * w)),"(t+t)+(t*t)") define_sfop4(ext03,((x + y) + (z / w)),"(t+t)+(t/t)") define_sfop4(ext04,((x - y) + (z * w)),"(t-t)+(t*t)") define_sfop4(ext05,((x - y) + (z / w)),"(t-t)+(t/t)") define_sfop4(ext06,((x - y) - (z * w)),"(t-t)-(t*t)") define_sfop4(ext07,((x - y) - (z / w)),"(t-t)-(t/t)") define_sfop4(ext08,((x + y) - (z - w)),"(t+t)-(t-t)") define_sfop4(ext09,((x + y) + (z - w)),"(t+t)+(t-t)") define_sfop4(ext10,((x + y) + (z + w)),"(t+t)+(t+t)") define_sfop4(ext11,((x + y) * (z - w)),"(t+t)*(t-t)") define_sfop4(ext12,((x + y) / (z - w)),"(t+t)/(t-t)") define_sfop4(ext13,((x - y) - (z + w)),"(t-t)-(t+t)") define_sfop4(ext14,((x - y) + (z + w)),"(t-t)+(t+t)") define_sfop4(ext15,((x - y) * (z + w)),"(t-t)*(t+t)") define_sfop4(ext16,((x - y) / (z + w)),"(t-t)/(t+t)") define_sfop4(ext17,((x * y) - (z + w)),"(t*t)-(t+t)") define_sfop4(ext18,((x / y) - (z + w)),"(t/t)-(t+t)") define_sfop4(ext19,((x * y) + (z + w)),"(t*t)+(t+t)") define_sfop4(ext20,((x / y) + (z + w)),"(t/t)+(t+t)") define_sfop4(ext21,((x * y) + (z - w)),"(t*t)+(t-t)") define_sfop4(ext22,((x / y) + (z - w)),"(t/t)+(t-t)") define_sfop4(ext23,((x * y) - (z - w)),"(t*t)-(t-t)") define_sfop4(ext24,((x / y) - (z - w)),"(t/t)-(t-t)") define_sfop4(ext25,((x + y) * (z * w)),"(t+t)*(t*t)") define_sfop4(ext26,((x + y) * (z / w)),"(t+t)*(t/t)") define_sfop4(ext27,((x + y) / (z * w)),"(t+t)/(t*t)") define_sfop4(ext28,((x + y) / (z / w)),"(t+t)/(t/t)") define_sfop4(ext29,((x - y) / (z * w)),"(t-t)/(t*t)") define_sfop4(ext30,((x - y) / (z / w)),"(t-t)/(t/t)") define_sfop4(ext31,((x - y) * (z * w)),"(t-t)*(t*t)") define_sfop4(ext32,((x - y) * (z / w)),"(t-t)*(t/t)") define_sfop4(ext33,((x * y) * (z + w)),"(t*t)*(t+t)") define_sfop4(ext34,((x / y) * (z + w)),"(t/t)*(t+t)") define_sfop4(ext35,((x * y) / (z + w)),"(t*t)/(t+t)") define_sfop4(ext36,((x / y) / (z + w)),"(t/t)/(t+t)") define_sfop4(ext37,((x * y) / (z - w)),"(t*t)/(t-t)") define_sfop4(ext38,((x / y) / (z - w)),"(t/t)/(t-t)") define_sfop4(ext39,((x * y) * (z - w)),"(t*t)*(t-t)") define_sfop4(ext40,((x * y) / (z * w)),"(t*t)/(t*t)") define_sfop4(ext41,((x / y) * (z / w)),"(t/t)*(t/t)") define_sfop4(ext42,((x / y) * (z - w)),"(t/t)*(t-t)") define_sfop4(ext43,((x * y) * (z * w)),"(t*t)*(t*t)") define_sfop4(ext44,(x + (y * (z / w))),"t+(t*(t/t))") define_sfop4(ext45,(x - (y * (z / w))),"t-(t*(t/t))") define_sfop4(ext46,(x + (y / (z * w))),"t+(t/(t*t))") define_sfop4(ext47,(x - (y / (z * w))),"t-(t/(t*t))") define_sfop4(ext48,(((x - y) - z) * w),"((t-t)-t)*t") define_sfop4(ext49,(((x - y) - z) / w),"((t-t)-t)/t") define_sfop4(ext50,(((x - y) + z) * w),"((t-t)+t)*t") define_sfop4(ext51,(((x - y) + z) / w),"((t-t)+t)/t") define_sfop4(ext52,((x + (y - z)) * w),"(t+(t-t))*t") define_sfop4(ext53,((x + (y - z)) / w),"(t+(t-t))/t") define_sfop4(ext54,((x + y) / (z + w)),"(t+t)/(t+t)") define_sfop4(ext55,((x - y) / (z - w)),"(t-t)/(t-t)") define_sfop4(ext56,((x + y) * (z + w)),"(t+t)*(t+t)") define_sfop4(ext57,((x - y) * (z - w)),"(t-t)*(t-t)") define_sfop4(ext58,((x - y) + (z - w)),"(t-t)+(t-t)") define_sfop4(ext59,((x - y) - (z - w)),"(t-t)-(t-t)") define_sfop4(ext60,((x / y) + (z * w)),"(t/t)+(t*t)") define_sfop4(ext61,(((x * y) * z) / w),"((t*t)*t)/t") #undef define_sfop3 #undef define_sfop4 template class sf3_node : public trinary_node { public: typedef expression_node* expression_ptr; sf3_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1, expression_ptr branch2) : trinary_node(opr, branch0, branch1, branch2) {} inline T value() const { const T x = trinary_node::branch_[0].first->value(); const T y = trinary_node::branch_[1].first->value(); const T z = trinary_node::branch_[2].first->value(); return SpecialFunction::process(x, y, z); } }; template class sf4_node : public quaternary_node { public: typedef expression_node* expression_ptr; sf4_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1, expression_ptr branch2, expression_ptr branch3) : quaternary_node(opr, branch0, branch1, branch2, branch3) {} inline T value() const { const T x = quaternary_node::branch_[0].first->value(); const T y = quaternary_node::branch_[1].first->value(); const T z = quaternary_node::branch_[2].first->value(); const T w = quaternary_node::branch_[3].first->value(); return SpecialFunction::process(x, y, z, w); } }; template class sf3_var_node : public expression_node { public: typedef expression_node* expression_ptr; sf3_var_node(const T& v0, const T& v1, const T& v2) : v0_(v0), v1_(v1), v2_(v2) {} inline T value() const { return SpecialFunction::process(v0_, v1_, v2_); } inline typename expression_node::node_type type() const { return expression_node::e_trinary; } private: sf3_var_node(sf3_var_node&); sf3_var_node& operator=(sf3_var_node&); const T& v0_; const T& v1_; const T& v2_; }; template class sf4_var_node : public expression_node { public: typedef expression_node* expression_ptr; sf4_var_node(const T& v0, const T& v1, const T& v2, const T& v3) : v0_(v0), v1_(v1), v2_(v2), v3_(v3) {} inline T value() const { return SpecialFunction::process(v0_, v1_, v2_, v3_); } inline typename expression_node::node_type type() const { return expression_node::e_trinary; } private: sf4_var_node(sf4_var_node&); sf4_var_node& operator=(sf4_var_node&); const T& v0_; const T& v1_; const T& v2_; const T& v3_; }; template class vararg_node : public expression_node { public: typedef expression_node* expression_ptr; template class Sequence> vararg_node(const Sequence& arg_list) { arg_list_ .resize(arg_list.size()); delete_branch_.resize(arg_list.size()); for (std::size_t i = 0; i < arg_list.size(); ++i) { if (arg_list[i]) { arg_list_[i] = arg_list[i]; delete_branch_[i] = static_cast(branch_deletable(arg_list_[i]) ? 1 : 0); } else { arg_list_.clear(); delete_branch_.clear(); return; } } } ~vararg_node() { for (std::size_t i = 0; i < arg_list_.size(); ++i) { if (arg_list_[i] && delete_branch_[i]) { destroy_node(arg_list_[i]); } } } inline T value() const { if (!arg_list_.empty()) return VarArgFunction::process(arg_list_); else return std::numeric_limits::quiet_NaN(); } inline typename expression_node::node_type type() const { return expression_node::e_vararg; } private: std::vector arg_list_; std::vector delete_branch_; }; template class vararg_varnode : public expression_node { public: typedef expression_node* expression_ptr; template class Sequence> vararg_varnode(const Sequence& arg_list) { arg_list_.resize(arg_list.size()); for (std::size_t i = 0; i < arg_list.size(); ++i) { if (arg_list[i] && is_variable_node(arg_list[i])) { variable_node* var_node_ptr = static_cast*>(arg_list[i]); arg_list_[i] = (&var_node_ptr->ref()); } else { arg_list_.clear(); return; } } } inline T value() const { if (!arg_list_.empty()) return VarArgFunction::process(arg_list_); else return std::numeric_limits::quiet_NaN(); } inline typename expression_node::node_type type() const { return expression_node::e_vararg; } private: std::vector arg_list_; }; template class vectorize_node : public expression_node { public: typedef expression_node* expression_ptr; vectorize_node(const expression_ptr v) : ivec_ptr_(0), v_(v), v_deletable_(branch_deletable(v_)) { if (is_ivector_node(v)) { ivec_ptr_ = dynamic_cast*>(v); } else ivec_ptr_ = 0; } ~vectorize_node() { if (v_ && v_deletable_) { destroy_node(v_); } } inline T value() const { if (ivec_ptr_) { v_->value(); return VecFunction::process(ivec_ptr_); } else return std::numeric_limits::quiet_NaN(); } inline typename expression_node::node_type type() const { return expression_node::e_vecfunc; } private: vector_interface* ivec_ptr_; expression_ptr v_; const bool v_deletable_; }; template class assignment_node : public binary_node { public: typedef expression_node* expression_ptr; assignment_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), var_node_ptr_(0) { if (is_variable_node(binary_node::branch_[0].first)) { var_node_ptr_ = static_cast*>(binary_node::branch_[0].first); } } inline T value() const { if (var_node_ptr_) { T& result = var_node_ptr_->ref(); result = binary_node::branch_[1].first->value(); return result; } else return std::numeric_limits::quiet_NaN(); } private: variable_node* var_node_ptr_; }; template class assignment_vec_elem_node : public binary_node { public: typedef expression_node* expression_ptr; assignment_vec_elem_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), vec_node_ptr_(0) { if (is_vector_elem_node(binary_node::branch_[0].first)) { vec_node_ptr_ = static_cast*>(binary_node::branch_[0].first); } } inline T value() const { if (vec_node_ptr_) { T& result = vec_node_ptr_->ref(); result = binary_node::branch_[1].first->value(); return result; } else return std::numeric_limits::quiet_NaN(); } private: vector_elem_node* vec_node_ptr_; }; template class assignment_rebasevec_elem_node : public binary_node { public: typedef expression_node* expression_ptr; assignment_rebasevec_elem_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), rbvec_node_ptr_(0) { if (is_rebasevector_elem_node(binary_node::branch_[0].first)) { rbvec_node_ptr_ = static_cast*>(binary_node::branch_[0].first); } } inline T value() const { if (rbvec_node_ptr_) { T& result = rbvec_node_ptr_->ref(); result = binary_node::branch_[1].first->value(); return result; } else return std::numeric_limits::quiet_NaN(); } private: rebasevector_elem_node* rbvec_node_ptr_; }; template class assignment_rebasevec_celem_node : public binary_node { public: typedef expression_node* expression_ptr; assignment_rebasevec_celem_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), rbvec_node_ptr_(0) { if (is_rebasevector_celem_node(binary_node::branch_[0].first)) { rbvec_node_ptr_ = static_cast*>(binary_node::branch_[0].first); } } inline T value() const { if (rbvec_node_ptr_) { T& result = rbvec_node_ptr_->ref(); result = binary_node::branch_[1].first->value(); return result; } else return std::numeric_limits::quiet_NaN(); } private: rebasevector_celem_node* rbvec_node_ptr_; }; template class assignment_vec_node : public binary_node , public vector_interface { public: typedef expression_node* expression_ptr; typedef vector_node* vector_node_ptr; typedef vec_data_store vds_t; assignment_vec_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), vec_node_ptr_(0) { if (is_vector_node(binary_node::branch_[0].first)) { vec_node_ptr_ = static_cast*>(binary_node::branch_[0].first); vds() = vec_node_ptr_->vds(); } } inline T value() const { if (vec_node_ptr_) { const T v = binary_node::branch_[1].first->value(); T* vec = vds().data(); loop_unroll::details lud(size()); const T* upper_bound = vec + lud.upper_bound; while (vec < upper_bound) { #define exprtk_loop(N) \ vec[N] = v; \ exprtk_loop( 0) exprtk_loop( 1) exprtk_loop( 2) exprtk_loop( 3) #ifndef exprtk_disable_superscalar_unroll exprtk_loop( 4) exprtk_loop( 5) exprtk_loop( 6) exprtk_loop( 7) exprtk_loop( 8) exprtk_loop( 9) exprtk_loop(10) exprtk_loop(11) exprtk_loop(12) exprtk_loop(13) exprtk_loop(14) exprtk_loop(15) #endif vec += lud.batch_size; } exprtk_disable_fallthrough_begin switch (lud.remainder) { #define case_stmt(N) \ case N : *vec++ = v; \ #ifndef exprtk_disable_superscalar_unroll case_stmt(15) case_stmt(14) case_stmt(13) case_stmt(12) case_stmt(11) case_stmt(10) case_stmt( 9) case_stmt( 8) case_stmt( 7) case_stmt( 6) case_stmt( 5) case_stmt( 4) #endif case_stmt( 3) case_stmt( 2) case_stmt( 1) } exprtk_disable_fallthrough_end #undef exprtk_loop #undef case_stmt return vec_node_ptr_->value(); } else return std::numeric_limits::quiet_NaN(); } vector_node_ptr vec() const { return vec_node_ptr_; } vector_node_ptr vec() { return vec_node_ptr_; } inline typename expression_node::node_type type() const { return expression_node::e_vecvalass; } std::size_t size() const { return vds().size(); } vds_t& vds() { return vds_; } const vds_t& vds() const { return vds_; } private: vector_node* vec_node_ptr_; vds_t vds_; }; template class assignment_vecvec_node : public binary_node , public vector_interface { public: typedef expression_node* expression_ptr; typedef vector_node* vector_node_ptr; typedef vec_data_store vds_t; assignment_vecvec_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), vec0_node_ptr_(0), vec1_node_ptr_(0), initialised_(false), src_is_ivec_(false) { if (is_vector_node(binary_node::branch_[0].first)) { vec0_node_ptr_ = static_cast*>(binary_node::branch_[0].first); vds() = vec0_node_ptr_->vds(); } if (is_vector_node(binary_node::branch_[1].first)) { vec1_node_ptr_ = static_cast*>(binary_node::branch_[1].first); vds_t::match_sizes(vds(),vec1_node_ptr_->vds()); } else if (is_ivector_node(binary_node::branch_[1].first)) { vector_interface* vi = reinterpret_cast*>(0); if (0 != (vi = dynamic_cast*>(binary_node::branch_[1].first))) { vec1_node_ptr_ = vi->vec(); if (!vi->side_effect()) { vi->vds() = vds(); src_is_ivec_ = true; } else vds_t::match_sizes(vds(),vi->vds()); } } initialised_ = (vec0_node_ptr_ && vec1_node_ptr_); } inline T value() const { if (initialised_) { binary_node::branch_[1].first->value(); if (src_is_ivec_) return vec0_node_ptr_->value(); T* vec0 = vec0_node_ptr_->vds().data(); T* vec1 = vec1_node_ptr_->vds().data(); loop_unroll::details lud(size()); const T* upper_bound = vec0 + lud.upper_bound; while (vec0 < upper_bound) { #define exprtk_loop(N) \ vec0[N] = vec1[N]; \ exprtk_loop( 0) exprtk_loop( 1) exprtk_loop( 2) exprtk_loop( 3) #ifndef exprtk_disable_superscalar_unroll exprtk_loop( 4) exprtk_loop( 5) exprtk_loop( 6) exprtk_loop( 7) exprtk_loop( 8) exprtk_loop( 9) exprtk_loop(10) exprtk_loop(11) exprtk_loop(12) exprtk_loop(13) exprtk_loop(14) exprtk_loop(15) #endif vec0 += lud.batch_size; vec1 += lud.batch_size; } exprtk_disable_fallthrough_begin switch (lud.remainder) { #define case_stmt(N) \ case N : *vec0++ = *vec1++; \ #ifndef exprtk_disable_superscalar_unroll case_stmt(15) case_stmt(14) case_stmt(13) case_stmt(12) case_stmt(11) case_stmt(10) case_stmt( 9) case_stmt( 8) case_stmt( 7) case_stmt( 6) case_stmt( 5) case_stmt( 4) #endif case_stmt( 3) case_stmt( 2) case_stmt( 1) } exprtk_disable_fallthrough_end #undef exprtk_loop #undef case_stmt return vec0_node_ptr_->value(); } else return std::numeric_limits::quiet_NaN(); } vector_node_ptr vec() const { return vec0_node_ptr_; } vector_node_ptr vec() { return vec0_node_ptr_; } inline typename expression_node::node_type type() const { return expression_node::e_vecvecass; } std::size_t size() const { return vds().size(); } vds_t& vds() { return vds_; } const vds_t& vds() const { return vds_; } private: vector_node* vec0_node_ptr_; vector_node* vec1_node_ptr_; bool initialised_; bool src_is_ivec_; vds_t vds_; }; template class assignment_op_node : public binary_node { public: typedef expression_node* expression_ptr; assignment_op_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), var_node_ptr_(0) { if (is_variable_node(binary_node::branch_[0].first)) { var_node_ptr_ = static_cast*>(binary_node::branch_[0].first); } } inline T value() const { if (var_node_ptr_) { T& v = var_node_ptr_->ref(); v = Operation::process(v,binary_node::branch_[1].first->value()); return v; } else return std::numeric_limits::quiet_NaN(); } private: variable_node* var_node_ptr_; }; template class assignment_vec_elem_op_node : public binary_node { public: typedef expression_node* expression_ptr; assignment_vec_elem_op_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), vec_node_ptr_(0) { if (is_vector_elem_node(binary_node::branch_[0].first)) { vec_node_ptr_ = static_cast*>(binary_node::branch_[0].first); } } inline T value() const { if (vec_node_ptr_) { T& v = vec_node_ptr_->ref(); v = Operation::process(v,binary_node::branch_[1].first->value()); return v; } else return std::numeric_limits::quiet_NaN(); } private: vector_elem_node* vec_node_ptr_; }; template class assignment_rebasevec_elem_op_node : public binary_node { public: typedef expression_node* expression_ptr; assignment_rebasevec_elem_op_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), rbvec_node_ptr_(0) { if (is_rebasevector_elem_node(binary_node::branch_[0].first)) { rbvec_node_ptr_ = static_cast*>(binary_node::branch_[0].first); } } inline T value() const { if (rbvec_node_ptr_) { T& v = rbvec_node_ptr_->ref(); v = Operation::process(v,binary_node::branch_[1].first->value()); return v; } else return std::numeric_limits::quiet_NaN(); } private: rebasevector_elem_node* rbvec_node_ptr_; }; template class assignment_rebasevec_celem_op_node : public binary_node { public: typedef expression_node* expression_ptr; assignment_rebasevec_celem_op_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), rbvec_node_ptr_(0) { if (is_rebasevector_celem_node(binary_node::branch_[0].first)) { rbvec_node_ptr_ = static_cast*>(binary_node::branch_[0].first); } } inline T value() const { if (rbvec_node_ptr_) { T& v = rbvec_node_ptr_->ref(); v = Operation::process(v,binary_node::branch_[1].first->value()); return v; } else return std::numeric_limits::quiet_NaN(); } private: rebasevector_celem_node* rbvec_node_ptr_; }; template class assignment_vec_op_node : public binary_node , public vector_interface { public: typedef expression_node* expression_ptr; typedef vector_node* vector_node_ptr; typedef vec_data_store vds_t; assignment_vec_op_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), vec_node_ptr_(0) { if (is_vector_node(binary_node::branch_[0].first)) { vec_node_ptr_ = static_cast*>(binary_node::branch_[0].first); vds() = vec_node_ptr_->vds(); } } inline T value() const { if (vec_node_ptr_) { const T v = binary_node::branch_[1].first->value(); T* vec = vds().data(); loop_unroll::details lud(size()); const T* upper_bound = vec + lud.upper_bound; while (vec < upper_bound) { #define exprtk_loop(N) \ Operation::assign(vec[N],v); \ exprtk_loop( 0) exprtk_loop( 1) exprtk_loop( 2) exprtk_loop( 3) #ifndef exprtk_disable_superscalar_unroll exprtk_loop( 4) exprtk_loop( 5) exprtk_loop( 6) exprtk_loop( 7) exprtk_loop( 8) exprtk_loop( 9) exprtk_loop(10) exprtk_loop(11) exprtk_loop(12) exprtk_loop(13) exprtk_loop(14) exprtk_loop(15) #endif vec += lud.batch_size; } exprtk_disable_fallthrough_begin switch (lud.remainder) { #define case_stmt(N) \ case N : Operation::assign(*vec++,v); \ #ifndef exprtk_disable_superscalar_unroll case_stmt(15) case_stmt(14) case_stmt(13) case_stmt(12) case_stmt(11) case_stmt(10) case_stmt( 9) case_stmt( 8) case_stmt( 7) case_stmt( 6) case_stmt( 5) case_stmt( 4) #endif case_stmt( 3) case_stmt( 2) case_stmt( 1) } exprtk_disable_fallthrough_end #undef exprtk_loop #undef case_stmt return vec_node_ptr_->value(); } else return std::numeric_limits::quiet_NaN(); } vector_node_ptr vec() const { return vec_node_ptr_; } vector_node_ptr vec() { return vec_node_ptr_; } inline typename expression_node::node_type type() const { return expression_node::e_vecopvalass; } std::size_t size() const { return vds().size(); } vds_t& vds() { return vds_; } const vds_t& vds() const { return vds_; } bool side_effect() const { return true; } private: vector_node* vec_node_ptr_; vds_t vds_; }; template class assignment_vecvec_op_node : public binary_node , public vector_interface { public: typedef expression_node* expression_ptr; typedef vector_node* vector_node_ptr; typedef vec_data_store vds_t; assignment_vecvec_op_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), vec0_node_ptr_(0), vec1_node_ptr_(0), initialised_(false) { if (is_vector_node(binary_node::branch_[0].first)) { vec0_node_ptr_ = static_cast*>(binary_node::branch_[0].first); vds() = vec0_node_ptr_->vds(); } if (is_vector_node(binary_node::branch_[1].first)) { vec1_node_ptr_ = static_cast*>(binary_node::branch_[1].first); vec1_node_ptr_->vds() = vds(); } else if (is_ivector_node(binary_node::branch_[1].first)) { vector_interface* vi = reinterpret_cast*>(0); if (0 != (vi = dynamic_cast*>(binary_node::branch_[1].first))) { vec1_node_ptr_ = vi->vec(); vec1_node_ptr_->vds() = vds(); } else vds_t::match_sizes(vds(),vec1_node_ptr_->vds()); } initialised_ = (vec0_node_ptr_ && vec1_node_ptr_); } inline T value() const { if (initialised_) { binary_node::branch_[0].first->value(); binary_node::branch_[1].first->value(); T* vec0 = vec0_node_ptr_->vds().data(); T* vec1 = vec1_node_ptr_->vds().data(); loop_unroll::details lud(size()); const T* upper_bound = vec0 + lud.upper_bound; while (vec0 < upper_bound) { #define exprtk_loop(N) \ vec0[N] = Operation::process(vec0[N],vec1[N]); \ exprtk_loop( 0) exprtk_loop( 1) exprtk_loop( 2) exprtk_loop( 3) #ifndef exprtk_disable_superscalar_unroll exprtk_loop( 4) exprtk_loop( 5) exprtk_loop( 6) exprtk_loop( 7) exprtk_loop( 8) exprtk_loop( 9) exprtk_loop(10) exprtk_loop(11) exprtk_loop(12) exprtk_loop(13) exprtk_loop(14) exprtk_loop(15) #endif vec0 += lud.batch_size; vec1 += lud.batch_size; } int i = 0; exprtk_disable_fallthrough_begin switch (lud.remainder) { #define case_stmt(N) \ case N : { vec0[i] = Operation::process(vec0[i],vec1[i]); ++i; } \ #ifndef exprtk_disable_superscalar_unroll case_stmt(15) case_stmt(14) case_stmt(13) case_stmt(12) case_stmt(11) case_stmt(10) case_stmt( 9) case_stmt( 8) case_stmt( 7) case_stmt( 6) case_stmt( 5) case_stmt( 4) #endif case_stmt( 3) case_stmt( 2) case_stmt( 1) } exprtk_disable_fallthrough_end #undef exprtk_loop #undef case_stmt return vec0_node_ptr_->value(); } else return std::numeric_limits::quiet_NaN(); } vector_node_ptr vec() const { return vec0_node_ptr_; } vector_node_ptr vec() { return vec0_node_ptr_; } inline typename expression_node::node_type type() const { return expression_node::e_vecopvecass; } std::size_t size() const { return vds().size(); } vds_t& vds() { return vds_; } const vds_t& vds() const { return vds_; } bool side_effect() const { return true; } private: vector_node* vec0_node_ptr_; vector_node* vec1_node_ptr_; bool initialised_; vds_t vds_; }; template class vec_binop_vecvec_node : public binary_node , public vector_interface { public: typedef expression_node* expression_ptr; typedef vector_node* vector_node_ptr; typedef vector_holder* vector_holder_ptr; typedef vec_data_store vds_t; vec_binop_vecvec_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), vec0_node_ptr_(0), vec1_node_ptr_(0), temp_ (0), temp_vec_node_(0), initialised_(false) { bool v0_is_ivec = false; bool v1_is_ivec = false; if (is_vector_node(binary_node::branch_[0].first)) { vec0_node_ptr_ = static_cast(binary_node::branch_[0].first); } else if (is_ivector_node(binary_node::branch_[0].first)) { vector_interface* vi = reinterpret_cast*>(0); if (0 != (vi = dynamic_cast*>(binary_node::branch_[0].first))) { vec0_node_ptr_ = vi->vec(); v0_is_ivec = true; } } if (is_vector_node(binary_node::branch_[1].first)) { vec1_node_ptr_ = static_cast(binary_node::branch_[1].first); } else if (is_ivector_node(binary_node::branch_[1].first)) { vector_interface* vi = reinterpret_cast*>(0); if (0 != (vi = dynamic_cast*>(binary_node::branch_[1].first))) { vec1_node_ptr_ = vi->vec(); v1_is_ivec = true; } } if (vec0_node_ptr_ && vec1_node_ptr_) { vector_holder& vec0 = vec0_node_ptr_->vec_holder(); vector_holder& vec1 = vec1_node_ptr_->vec_holder(); if (v0_is_ivec && (vec0.size() <= vec1.size())) vds_ = vds_t(vec0_node_ptr_->vds()); else if (v1_is_ivec && (vec1.size() <= vec0.size())) vds_ = vds_t(vec1_node_ptr_->vds()); else vds_ = vds_t(std::min(vec0.size(),vec1.size())); temp_ = new vector_holder(vds().data(),vds().size()); temp_vec_node_ = new vector_node (vds(),temp_); initialised_ = true; } } ~vec_binop_vecvec_node() { delete temp_; delete temp_vec_node_; } inline T value() const { if (initialised_) { binary_node::branch_[0].first->value(); binary_node::branch_[1].first->value(); T* vec0 = vec0_node_ptr_->vds().data(); T* vec1 = vec1_node_ptr_->vds().data(); T* vec2 = vds().data(); loop_unroll::details lud(size()); const T* upper_bound = vec2 + lud.upper_bound; while (vec2 < upper_bound) { #define exprtk_loop(N) \ vec2[N] = Operation::process(vec0[N],vec1[N]); \ exprtk_loop( 0) exprtk_loop( 1) exprtk_loop( 2) exprtk_loop( 3) #ifndef exprtk_disable_superscalar_unroll exprtk_loop( 4) exprtk_loop( 5) exprtk_loop( 6) exprtk_loop( 7) exprtk_loop( 8) exprtk_loop( 9) exprtk_loop(10) exprtk_loop(11) exprtk_loop(12) exprtk_loop(13) exprtk_loop(14) exprtk_loop(15) #endif vec0 += lud.batch_size; vec1 += lud.batch_size; vec2 += lud.batch_size; } int i = 0; exprtk_disable_fallthrough_begin switch (lud.remainder) { #define case_stmt(N) \ case N : { vec2[i] = Operation::process(vec0[i],vec1[i]); ++i; } \ #ifndef exprtk_disable_superscalar_unroll case_stmt(15) case_stmt(14) case_stmt(13) case_stmt(12) case_stmt(11) case_stmt(10) case_stmt( 9) case_stmt( 8) case_stmt( 7) case_stmt( 6) case_stmt( 5) case_stmt( 4) #endif case_stmt( 3) case_stmt( 2) case_stmt( 1) } exprtk_disable_fallthrough_end #undef exprtk_loop #undef case_stmt return (vds().data())[0]; } else return std::numeric_limits::quiet_NaN(); } vector_node_ptr vec() const { return temp_vec_node_; } vector_node_ptr vec() { return temp_vec_node_; } inline typename expression_node::node_type type() const { return expression_node::e_vecvecarith; } std::size_t size() const { return vds_.size(); } vds_t& vds() { return vds_; } const vds_t& vds() const { return vds_; } private: vector_node_ptr vec0_node_ptr_; vector_node_ptr vec1_node_ptr_; vector_holder_ptr temp_; vector_node_ptr temp_vec_node_; bool initialised_; vds_t vds_; }; template class vec_binop_vecval_node : public binary_node , public vector_interface { public: typedef expression_node* expression_ptr; typedef vector_node* vector_node_ptr; typedef vector_holder* vector_holder_ptr; typedef vec_data_store vds_t; vec_binop_vecval_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), vec0_node_ptr_(0), temp_ (0), temp_vec_node_(0) { bool v0_is_ivec = false; if (is_vector_node(binary_node::branch_[0].first)) { vec0_node_ptr_ = static_cast(binary_node::branch_[0].first); } else if (is_ivector_node(binary_node::branch_[0].first)) { vector_interface* vi = reinterpret_cast*>(0); if (0 != (vi = dynamic_cast*>(binary_node::branch_[0].first))) { vec0_node_ptr_ = vi->vec(); v0_is_ivec = true; } } if (vec0_node_ptr_) { if (v0_is_ivec) vds() = vec0_node_ptr_->vds(); else vds() = vds_t(vec0_node_ptr_->size()); temp_ = new vector_holder(vds()); temp_vec_node_ = new vector_node (vds(),temp_); } } ~vec_binop_vecval_node() { delete temp_; delete temp_vec_node_; } inline T value() const { if (vec0_node_ptr_) { binary_node::branch_[0].first->value(); const T v = binary_node::branch_[1].first->value(); T* vec0 = vec0_node_ptr_->vds().data(); T* vec1 = vds().data(); loop_unroll::details lud(size()); const T* upper_bound = vec0 + lud.upper_bound; while (vec0 < upper_bound) { #define exprtk_loop(N) \ vec1[N] = Operation::process(vec0[N],v); \ exprtk_loop( 0) exprtk_loop( 1) exprtk_loop( 2) exprtk_loop( 3) #ifndef exprtk_disable_superscalar_unroll exprtk_loop( 4) exprtk_loop( 5) exprtk_loop( 6) exprtk_loop( 7) exprtk_loop( 8) exprtk_loop( 9) exprtk_loop(10) exprtk_loop(11) exprtk_loop(12) exprtk_loop(13) exprtk_loop(14) exprtk_loop(15) #endif vec0 += lud.batch_size; vec1 += lud.batch_size; } int i = 0; exprtk_disable_fallthrough_begin switch (lud.remainder) { #define case_stmt(N) \ case N : { vec1[i] = Operation::process(vec0[i],v); ++i; } \ #ifndef exprtk_disable_superscalar_unroll case_stmt(15) case_stmt(14) case_stmt(13) case_stmt(12) case_stmt(11) case_stmt(10) case_stmt( 9) case_stmt( 8) case_stmt( 7) case_stmt( 6) case_stmt( 5) case_stmt( 4) #endif case_stmt( 3) case_stmt( 2) case_stmt( 1) } exprtk_disable_fallthrough_end #undef exprtk_loop #undef case_stmt return (vds().data())[0]; } else return std::numeric_limits::quiet_NaN(); } vector_node_ptr vec() const { return temp_vec_node_; } vector_node_ptr vec() { return temp_vec_node_; } inline typename expression_node::node_type type() const { return expression_node::e_vecvalarith; } std::size_t size() const { return vds().size(); } vds_t& vds() { return vds_; } const vds_t& vds() const { return vds_; } private: vector_node_ptr vec0_node_ptr_; vector_holder_ptr temp_; vector_node_ptr temp_vec_node_; vds_t vds_; }; template class vec_binop_valvec_node : public binary_node , public vector_interface { public: typedef expression_node* expression_ptr; typedef vector_node* vector_node_ptr; typedef vector_holder* vector_holder_ptr; typedef vec_data_store vds_t; vec_binop_valvec_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), vec1_node_ptr_(0), temp_ (0), temp_vec_node_(0) { bool v1_is_ivec = false; if (is_vector_node(binary_node::branch_[1].first)) { vec1_node_ptr_ = static_cast(binary_node::branch_[1].first); } else if (is_ivector_node(binary_node::branch_[1].first)) { vector_interface* vi = reinterpret_cast*>(0); if (0 != (vi = dynamic_cast*>(binary_node::branch_[1].first))) { vec1_node_ptr_ = vi->vec(); v1_is_ivec = true; } } if (vec1_node_ptr_) { if (v1_is_ivec) vds() = vec1_node_ptr_->vds(); else vds() = vds_t(vec1_node_ptr_->size()); temp_ = new vector_holder(vds()); temp_vec_node_ = new vector_node (vds(),temp_); } } ~vec_binop_valvec_node() { delete temp_; delete temp_vec_node_; } inline T value() const { if (vec1_node_ptr_) { const T v = binary_node::branch_[0].first->value(); binary_node::branch_[1].first->value(); T* vec0 = vds().data(); T* vec1 = vec1_node_ptr_->vds().data(); loop_unroll::details lud(size()); const T* upper_bound = vec0 + lud.upper_bound; while (vec0 < upper_bound) { #define exprtk_loop(N) \ vec0[N] = Operation::process(v,vec1[N]); \ exprtk_loop( 0) exprtk_loop( 1) exprtk_loop( 2) exprtk_loop( 3) #ifndef exprtk_disable_superscalar_unroll exprtk_loop( 4) exprtk_loop( 5) exprtk_loop( 6) exprtk_loop( 7) exprtk_loop( 8) exprtk_loop( 9) exprtk_loop(10) exprtk_loop(11) exprtk_loop(12) exprtk_loop(13) exprtk_loop(14) exprtk_loop(15) #endif vec0 += lud.batch_size; vec1 += lud.batch_size; } int i = 0; exprtk_disable_fallthrough_begin switch (lud.remainder) { #define case_stmt(N) \ case N : { vec0[i] = Operation::process(v,vec1[i]); ++i; } \ #ifndef exprtk_disable_superscalar_unroll case_stmt(15) case_stmt(14) case_stmt(13) case_stmt(12) case_stmt(11) case_stmt(10) case_stmt( 9) case_stmt( 8) case_stmt( 7) case_stmt( 6) case_stmt( 5) case_stmt( 4) #endif case_stmt( 3) case_stmt( 2) case_stmt( 1) } exprtk_disable_fallthrough_end #undef exprtk_loop #undef case_stmt return (vds().data())[0]; } else return std::numeric_limits::quiet_NaN(); } vector_node_ptr vec() const { return temp_vec_node_; } vector_node_ptr vec() { return temp_vec_node_; } inline typename expression_node::node_type type() const { return expression_node::e_vecvalarith; } std::size_t size() const { return vds().size(); } vds_t& vds() { return vds_; } const vds_t& vds() const { return vds_; } private: vector_node_ptr vec1_node_ptr_; vector_holder_ptr temp_; vector_node_ptr temp_vec_node_; vds_t vds_; }; template class unary_vector_node : public unary_node , public vector_interface { public: typedef expression_node* expression_ptr; typedef vector_node* vector_node_ptr; typedef vector_holder* vector_holder_ptr; typedef vec_data_store vds_t; unary_vector_node(const operator_type& opr, expression_ptr branch0) : unary_node(opr, branch0), vec0_node_ptr_(0), temp_ (0), temp_vec_node_(0) { bool vec0_is_ivec = false; if (is_vector_node(unary_node::branch_)) { vec0_node_ptr_ = static_cast(unary_node::branch_); } else if (is_ivector_node(unary_node::branch_)) { vector_interface* vi = reinterpret_cast*>(0); if (0 != (vi = dynamic_cast*>(unary_node::branch_))) { vec0_node_ptr_ = vi->vec(); vec0_is_ivec = true; } } if (vec0_node_ptr_) { if (vec0_is_ivec) vds_ = vec0_node_ptr_->vds(); else vds_ = vds_t(vec0_node_ptr_->size()); temp_ = new vector_holder(vds()); temp_vec_node_ = new vector_node (vds(),temp_); } } ~unary_vector_node() { delete temp_; delete temp_vec_node_; } inline T value() const { unary_node::branch_->value(); if (vec0_node_ptr_) { T* vec0 = vec0_node_ptr_->vds().data(); T* vec1 = vds().data(); loop_unroll::details lud(size()); const T* upper_bound = vec0 + lud.upper_bound; while (vec0 < upper_bound) { #define exprtk_loop(N) \ vec1[N] = Operation::process(vec0[N]); \ exprtk_loop( 0) exprtk_loop( 1) exprtk_loop( 2) exprtk_loop( 3) #ifndef exprtk_disable_superscalar_unroll exprtk_loop( 4) exprtk_loop( 5) exprtk_loop( 6) exprtk_loop( 7) exprtk_loop( 8) exprtk_loop( 9) exprtk_loop(10) exprtk_loop(11) exprtk_loop(12) exprtk_loop(13) exprtk_loop(14) exprtk_loop(15) #endif vec0 += lud.batch_size; vec1 += lud.batch_size; } int i = 0; exprtk_disable_fallthrough_begin switch (lud.remainder) { #define case_stmt(N) \ case N : { vec1[i] = Operation::process(vec0[i]); ++i; } \ #ifndef exprtk_disable_superscalar_unroll case_stmt(15) case_stmt(14) case_stmt(13) case_stmt(12) case_stmt(11) case_stmt(10) case_stmt( 9) case_stmt( 8) case_stmt( 7) case_stmt( 6) case_stmt( 5) case_stmt( 4) #endif case_stmt( 3) case_stmt( 2) case_stmt( 1) } exprtk_disable_fallthrough_end #undef exprtk_loop #undef case_stmt return (vds().data())[0]; } else return std::numeric_limits::quiet_NaN(); } vector_node_ptr vec() const { return temp_vec_node_; } vector_node_ptr vec() { return temp_vec_node_; } inline typename expression_node::node_type type() const { return expression_node::e_vecunaryop; } std::size_t size() const { return vds().size(); } vds_t& vds() { return vds_; } const vds_t& vds() const { return vds_; } private: vector_node_ptr vec0_node_ptr_; vector_holder_ptr temp_; vector_node_ptr temp_vec_node_; vds_t vds_; }; template class scand_node : public binary_node { public: typedef expression_node* expression_ptr; scand_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1) {} inline T value() const { return ( std::not_equal_to() (T(0),binary_node::branch_[0].first->value()) && std::not_equal_to() (T(0),binary_node::branch_[1].first->value()) ) ? T(1) : T(0); } }; template class scor_node : public binary_node { public: typedef expression_node* expression_ptr; scor_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1) {} inline T value() const { return ( std::not_equal_to() (T(0),binary_node::branch_[0].first->value()) || std::not_equal_to() (T(0),binary_node::branch_[1].first->value()) ) ? T(1) : T(0); } }; template class function_N_node : public expression_node { public: // Function of N paramters. typedef expression_node* expression_ptr; typedef std::pair branch_t; typedef IFunction ifunction; function_N_node(ifunction* func) : function_((N == func->param_count) ? func : reinterpret_cast(0)), parameter_count_(func->param_count) {} ~function_N_node() { cleanup_branches::execute(branch_); } template bool init_branches(expression_ptr (&b)[NumBranches]) { // Needed for incompetent and broken msvc compiler versions #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable: 4127) #endif if (N != NumBranches) return false; else { for (std::size_t i = 0; i < NumBranches; ++i) { if (b[i]) branch_[i] = std::make_pair(b[i],branch_deletable(b[i])); else return false; } return true; } #ifdef _MSC_VER #pragma warning(pop) #endif } inline bool operator <(const function_N_node& fn) const { return this < (&fn); } inline T value() const { // Needed for incompetent and broken msvc compiler versions #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable: 4127) #endif if ((0 == function_) || (0 == N)) return std::numeric_limits::quiet_NaN(); else { T v[N]; evaluate_branches::execute(v,branch_); return invoke::execute(*function_,v); } #ifdef _MSC_VER #pragma warning(pop) #endif } template struct evaluate_branches { static inline void execute(T_ (&v)[BranchCount], const branch_t (&b)[BranchCount]) { for (std::size_t i = 0; i < BranchCount; ++i) { v[i] = b[i].first->value(); } } }; template struct evaluate_branches { static inline void execute(T_ (&v)[5], const branch_t (&b)[5]) { v[0] = b[0].first->value(); v[1] = b[1].first->value(); v[2] = b[2].first->value(); v[3] = b[3].first->value(); v[4] = b[4].first->value(); } }; template struct evaluate_branches { static inline void execute(T_ (&v)[4], const branch_t (&b)[4]) { v[0] = b[0].first->value(); v[1] = b[1].first->value(); v[2] = b[2].first->value(); v[3] = b[3].first->value(); } }; template struct evaluate_branches { static inline void execute(T_ (&v)[3], const branch_t (&b)[3]) { v[0] = b[0].first->value(); v[1] = b[1].first->value(); v[2] = b[2].first->value(); } }; template struct evaluate_branches { static inline void execute(T_ (&v)[2], const branch_t (&b)[2]) { v[0] = b[0].first->value(); v[1] = b[1].first->value(); } }; template struct evaluate_branches { static inline void execute(T_ (&v)[1], const branch_t (&b)[1]) { v[0] = b[0].first->value(); } }; template struct invoke { static inline T execute(ifunction&, branch_t (&)[ParamCount]) { return std::numeric_limits::quiet_NaN(); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[20]) { return f(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9],v[10],v[11],v[12],v[13],v[14],v[15],v[16],v[17],v[18],v[19]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[19]) { return f(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9],v[10],v[11],v[12],v[13],v[14],v[15],v[16],v[17],v[18]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[18]) { return f(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9],v[10],v[11],v[12],v[13],v[14],v[15],v[16],v[17]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[17]) { return f(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9],v[10],v[11],v[12],v[13],v[14],v[15],v[16]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[16]) { return f(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9],v[10],v[11],v[12],v[13],v[14],v[15]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[15]) { return f(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9],v[10],v[11],v[12],v[13],v[14]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[14]) { return f(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9],v[10],v[11],v[12],v[13]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[13]) { return f(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9],v[10],v[11],v[12]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[12]) { return f(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9],v[10],v[11]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[11]) { return f(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9],v[10]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[10]) { return f(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[9]) { return f(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[8]) { return f(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[7]) { return f(v[0],v[1],v[2],v[3],v[4],v[5],v[6]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[6]) { return f(v[0],v[1],v[2],v[3],v[4],v[5]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[5]) { return f(v[0],v[1],v[2],v[3],v[4]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[4]) { return f(v[0],v[1],v[2],v[3]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[3]) { return f(v[0],v[1],v[2]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[2]) { return f(v[0],v[1]); } }; template struct invoke { static inline T_ execute(ifunction& f, T_ (&v)[1]) { return f(v[0]); } }; inline typename expression_node::node_type type() const { return expression_node::e_function; } private: ifunction* function_; std::size_t parameter_count_; branch_t branch_[N]; }; template class function_N_node : public expression_node { public: typedef expression_node* expression_ptr; typedef IFunction ifunction; function_N_node(ifunction* func) : function_((0 == func->param_count) ? func : reinterpret_cast(0)) {} inline bool operator <(const function_N_node& fn) const { return this < (&fn); } inline T value() const { if (function_) return (*function_)(); else return std::numeric_limits::quiet_NaN(); } inline typename expression_node::node_type type() const { return expression_node::e_function; } private: ifunction* function_; }; template class vararg_function_node : public expression_node { public: typedef expression_node* expression_ptr; vararg_function_node(VarArgFunction* func, const std::vector& arg_list) : function_(func), arg_list_(arg_list) { value_list_.resize(arg_list.size(),std::numeric_limits::quiet_NaN()); } ~vararg_function_node() { for (std::size_t i = 0; i < arg_list_.size(); ++i) { if (arg_list_[i] && !details::is_variable_node(arg_list_[i])) { destroy_node(arg_list_[i]); } } } inline bool operator <(const vararg_function_node& fn) const { return this < (&fn); } inline T value() const { if (function_) { populate_value_list(); return (*function_)(value_list_); } else return std::numeric_limits::quiet_NaN(); } inline typename expression_node::node_type type() const { return expression_node::e_vafunction; } private: inline void populate_value_list() const { for (std::size_t i = 0; i < arg_list_.size(); ++i) { value_list_[i] = arg_list_[i]->value(); } } VarArgFunction* function_; std::vector arg_list_; mutable std::vector value_list_; }; template class generic_function_node : public expression_node { public: typedef type_store type_store_t; typedef expression_node* expression_ptr; typedef variable_node variable_node_t; typedef vector_node vector_node_t; typedef variable_node_t* variable_node_ptr_t; typedef vector_node_t* vector_node_ptr_t; typedef range_interface range_interface_t; typedef range_data_type range_data_type_t; typedef range_pack range_t; typedef std::pair branch_t; typedef std::pair void_t; typedef std::vector tmp_vs_t; typedef std::vector typestore_list_t; typedef std::vector range_list_t; generic_function_node(const std::vector& arg_list, GenericFunction* func = (GenericFunction*)(0)) : function_(func), arg_list_(arg_list) {} virtual ~generic_function_node() { cleanup_branches::execute(branch_); } virtual bool init_branches() { expr_as_vec1_store_.resize(arg_list_.size(),T(0) ); typestore_list_ .resize(arg_list_.size(),type_store_t() ); range_list_ .resize(arg_list_.size(),range_data_type_t()); branch_ .resize(arg_list_.size(),branch_t((expression_ptr)0,false)); for (std::size_t i = 0; i < arg_list_.size(); ++i) { type_store_t& ts = typestore_list_[i]; if (0 == arg_list_[i]) return false; else if (is_ivector_node(arg_list_[i])) { vector_interface* vi = reinterpret_cast*>(0); if (0 == (vi = dynamic_cast*>(arg_list_[i]))) return false; ts.size = vi->size(); ts.data = vi->vds().data(); ts.type = type_store_t::e_vector; } #ifndef exprtk_disable_string_capabilities else if (is_generally_string_node(arg_list_[i])) { string_base_node* sbn = reinterpret_cast*>(0); if (0 == (sbn = dynamic_cast*>(arg_list_[i]))) return false; ts.size = sbn->size(); ts.data = reinterpret_cast(const_cast(sbn->base())); ts.type = type_store_t::e_string; range_list_[i].data = ts.data; range_list_[i].size = ts.size; range_list_[i].type_size = sizeof(char); range_list_[i].str_node = sbn; range_interface_t* ri = reinterpret_cast(0); if (0 == (ri = dynamic_cast(arg_list_[i]))) return false; range_t& rp = ri->range_ref(); if ( rp.const_range() && is_const_string_range_node(arg_list_[i]) ) { ts.size = rp.const_size(); ts.data = static_cast(ts.data) + rp.n0_c.second; range_list_[i].range = reinterpret_cast(0); } else range_list_[i].range = &(ri->range_ref()); } #endif else if (is_variable_node(arg_list_[i])) { variable_node_ptr_t var = variable_node_ptr_t(0); if (0 == (var = dynamic_cast(arg_list_[i]))) return false; ts.size = 1; ts.data = &var->ref(); ts.type = type_store_t::e_scalar; } else { ts.size = 1; ts.data = reinterpret_cast(&expr_as_vec1_store_[i]); ts.type = type_store_t::e_scalar; } branch_[i] = std::make_pair(arg_list_[i],branch_deletable(arg_list_[i])); } return true; } inline bool operator <(const generic_function_node& fn) const { return this < (&fn); } inline T value() const { if (function_) { if (populate_value_list()) { typedef typename GenericFunction::parameter_list_t parameter_list_t; return (*function_)(parameter_list_t(typestore_list_)); } } return std::numeric_limits::quiet_NaN(); } inline typename expression_node::node_type type() const { return expression_node::e_genfunction; } protected: inline virtual bool populate_value_list() const { for (std::size_t i = 0; i < branch_.size(); ++i) { expr_as_vec1_store_[i] = branch_[i].first->value(); } for (std::size_t i = 0; i < branch_.size(); ++i) { range_data_type_t& rdt = range_list_[i]; if (rdt.range) { range_t& rp = (*rdt.range); std::size_t r0 = 0; std::size_t r1 = 0; if (rp(r0,r1,rdt.size)) { type_store_t& ts = typestore_list_[i]; ts.size = rp.cache_size(); #ifndef exprtk_disable_string_capabilities if (ts.type == type_store_t::e_string) ts.data = const_cast(rdt.str_node->base()) + rp.cache.first; else #endif ts.data = static_cast(rdt.data) + (rp.cache.first * rdt.type_size); } else return false; } } return true; } GenericFunction* function_; mutable typestore_list_t typestore_list_; private: std::vector arg_list_; std::vector branch_; mutable tmp_vs_t expr_as_vec1_store_; mutable range_list_t range_list_; }; #ifndef exprtk_disable_string_capabilities template class string_function_node : public generic_function_node, public string_base_node, public range_interface { public: typedef generic_function_node gen_function_t; typedef range_pack range_t; string_function_node(StringFunction* func, const std::vector& arg_list) : gen_function_t(arg_list,func) { range_.n0_c = std::make_pair(true,0); range_.n1_c = std::make_pair(true,0); range_.cache.first = range_.n0_c.second; range_.cache.second = range_.n1_c.second; } inline bool operator <(const string_function_node& fn) const { return this < (&fn); } inline T value() const { T result = std::numeric_limits::quiet_NaN(); if (gen_function_t::function_) { if (gen_function_t::populate_value_list()) { typedef typename StringFunction::parameter_list_t parameter_list_t; result = (*gen_function_t::function_)(ret_string_, parameter_list_t(gen_function_t::typestore_list_)); range_.n1_c.second = ret_string_.size() - 1; range_.cache.second = range_.n1_c.second; return result; } } return result; } inline typename expression_node::node_type type() const { return expression_node::e_strfunction; } std::string str() const { return ret_string_; } const char_t* base() const { return &ret_string_[0]; } std::size_t size() const { return ret_string_.size(); } range_t& range_ref() { return range_; } const range_t& range_ref() const { return range_; } protected: mutable range_t range_; mutable std::string ret_string_; }; #endif template class multimode_genfunction_node : public generic_function_node { public: typedef generic_function_node gen_function_t; typedef range_pack range_t; multimode_genfunction_node(GenericFunction* func, const std::size_t& param_seq_index, const std::vector& arg_list) : gen_function_t(arg_list,func), param_seq_index_(param_seq_index) {} inline T value() const { T result = std::numeric_limits::quiet_NaN(); if (gen_function_t::function_) { if (gen_function_t::populate_value_list()) { typedef typename GenericFunction::parameter_list_t parameter_list_t; return (*gen_function_t::function_)(param_seq_index_, parameter_list_t(gen_function_t::typestore_list_)); } } return result; } inline typename expression_node::node_type type() const { return expression_node::e_genfunction; } private: std::size_t param_seq_index_; }; #ifndef exprtk_disable_string_capabilities template class multimode_strfunction_node : public string_function_node { public: typedef string_function_node str_function_t; typedef range_pack range_t; multimode_strfunction_node(StringFunction* func, const std::size_t& param_seq_index, const std::vector& arg_list) : str_function_t(func,arg_list), param_seq_index_(param_seq_index) {} inline T value() const { T result = std::numeric_limits::quiet_NaN(); if (str_function_t::function_) { if (str_function_t::populate_value_list()) { typedef typename StringFunction::parameter_list_t parameter_list_t; result = (*str_function_t::function_)(param_seq_index_, str_function_t::ret_string_, parameter_list_t(str_function_t::typestore_list_)); str_function_t::range_.n1_c.second = str_function_t::ret_string_.size() - 1; str_function_t::range_.cache.second = str_function_t::range_.n1_c.second; return result; } } return result; } inline typename expression_node::node_type type() const { return expression_node::e_strfunction; } private: const std::size_t param_seq_index_; }; #endif class return_exception {}; template class null_igenfunc { public: virtual ~null_igenfunc() {} typedef type_store generic_type; typedef typename generic_type::parameter_list parameter_list_t; inline virtual T operator() (parameter_list_t) { return std::numeric_limits::quiet_NaN(); } }; #ifndef exprtk_disable_return_statement template class return_node : public generic_function_node > { public: typedef null_igenfunc igeneric_function_t; typedef igeneric_function_t* igeneric_function_ptr; typedef generic_function_node gen_function_t; typedef results_context results_context_t; return_node(const std::vector& arg_list, results_context_t& rc) : gen_function_t (arg_list), results_context_(&rc) {} inline T value() const { if ( (0 != results_context_) && gen_function_t::populate_value_list() ) { typedef typename type_store::parameter_list parameter_list_t; results_context_-> assign(parameter_list_t(gen_function_t::typestore_list_)); throw return_exception(); } return std::numeric_limits::quiet_NaN(); } inline typename expression_node::node_type type() const { return expression_node::e_return; } private: results_context_t* results_context_; }; template class return_envelope_node : public expression_node { public: typedef expression_node* expression_ptr; typedef results_context results_context_t; return_envelope_node(expression_ptr body, results_context_t& rc) : results_context_(&rc ), return_invoked_ (false), body_ (body ), body_deletable_ (branch_deletable(body_)) {} ~return_envelope_node() { if (body_ && body_deletable_) { destroy_node(body_); } } inline T value() const { try { return_invoked_ = false; results_context_->clear(); return body_->value(); } catch(const return_exception&) { return_invoked_ = true; return std::numeric_limits::quiet_NaN(); } } inline typename expression_node::node_type type() const { return expression_node::e_retenv; } inline bool* retinvk_ptr() { return &return_invoked_; } private: results_context_t* results_context_; mutable bool return_invoked_; expression_ptr body_; const bool body_deletable_; }; #endif #define exprtk_define_unary_op(OpName) \ template \ struct OpName##_op \ { \ typedef typename functor_t::Type Type; \ typedef typename expression_node::node_type node_t; \ \ static inline T process(Type v) \ { \ return numeric:: OpName (v); \ } \ \ static inline node_t type() \ { \ return expression_node::e_##OpName; \ } \ \ static inline details::operator_type operation() \ { \ return details::e_##OpName; \ } \ }; \ exprtk_define_unary_op(abs ) exprtk_define_unary_op(acos ) exprtk_define_unary_op(acosh) exprtk_define_unary_op(asin ) exprtk_define_unary_op(asinh) exprtk_define_unary_op(atan ) exprtk_define_unary_op(atanh) exprtk_define_unary_op(ceil ) exprtk_define_unary_op(cos ) exprtk_define_unary_op(cosh ) exprtk_define_unary_op(cot ) exprtk_define_unary_op(csc ) exprtk_define_unary_op(d2g ) exprtk_define_unary_op(d2r ) exprtk_define_unary_op(erf ) exprtk_define_unary_op(erfc ) exprtk_define_unary_op(exp ) exprtk_define_unary_op(expm1) exprtk_define_unary_op(floor) exprtk_define_unary_op(frac ) exprtk_define_unary_op(g2d ) exprtk_define_unary_op(log ) exprtk_define_unary_op(log10) exprtk_define_unary_op(log2 ) exprtk_define_unary_op(log1p) exprtk_define_unary_op(ncdf ) exprtk_define_unary_op(neg ) exprtk_define_unary_op(notl ) exprtk_define_unary_op(pos ) exprtk_define_unary_op(r2d ) exprtk_define_unary_op(round) exprtk_define_unary_op(sec ) exprtk_define_unary_op(sgn ) exprtk_define_unary_op(sin ) exprtk_define_unary_op(sinc ) exprtk_define_unary_op(sinh ) exprtk_define_unary_op(sqrt ) exprtk_define_unary_op(tan ) exprtk_define_unary_op(tanh ) exprtk_define_unary_op(trunc) #undef exprtk_define_unary_op template struct opr_base { typedef typename details::functor_t::Type Type; typedef typename details::functor_t::RefType RefType; typedef typename details::functor_t functor_t; typedef typename functor_t::qfunc_t quaternary_functor_t; typedef typename functor_t::tfunc_t trinary_functor_t; typedef typename functor_t::bfunc_t binary_functor_t; typedef typename functor_t::ufunc_t unary_functor_t; }; template struct add_op : public opr_base { typedef typename opr_base::Type Type; typedef typename opr_base::RefType RefType; static inline T process(Type t1, Type t2) { return t1 + t2; } static inline T process(Type t1, Type t2, Type t3) { return t1 + t2 + t3; } static inline void assign(RefType t1, Type t2) { t1 += t2; } static inline typename expression_node::node_type type() { return expression_node::e_add; } static inline details::operator_type operation() { return details::e_add; } }; template struct mul_op : public opr_base { typedef typename opr_base::Type Type; typedef typename opr_base::RefType RefType; static inline T process(Type t1, Type t2) { return t1 * t2; } static inline T process(Type t1, Type t2, Type t3) { return t1 * t2 * t3; } static inline void assign(RefType t1, Type t2) { t1 *= t2; } static inline typename expression_node::node_type type() { return expression_node::e_mul; } static inline details::operator_type operation() { return details::e_mul; } }; template struct sub_op : public opr_base { typedef typename opr_base::Type Type; typedef typename opr_base::RefType RefType; static inline T process(Type t1, Type t2) { return t1 - t2; } static inline T process(Type t1, Type t2, Type t3) { return t1 - t2 - t3; } static inline void assign(RefType t1, Type t2) { t1 -= t2; } static inline typename expression_node::node_type type() { return expression_node::e_sub; } static inline details::operator_type operation() { return details::e_sub; } }; template struct div_op : public opr_base { typedef typename opr_base::Type Type; typedef typename opr_base::RefType RefType; static inline T process(Type t1, Type t2) { return t1 / t2; } static inline T process(Type t1, Type t2, Type t3) { return t1 / t2 / t3; } static inline void assign(RefType t1, Type t2) { t1 /= t2; } static inline typename expression_node::node_type type() { return expression_node::e_div; } static inline details::operator_type operation() { return details::e_div; } }; template struct mod_op : public opr_base { typedef typename opr_base::Type Type; typedef typename opr_base::RefType RefType; static inline T process(Type t1, Type t2) { return numeric::modulus(t1,t2); } static inline void assign(RefType t1, Type t2) { t1 = numeric::modulus(t1,t2); } static inline typename expression_node::node_type type() { return expression_node::e_mod; } static inline details::operator_type operation() { return details::e_mod; } }; template struct pow_op : public opr_base { typedef typename opr_base::Type Type; typedef typename opr_base::RefType RefType; static inline T process(Type t1, Type t2) { return numeric::pow(t1,t2); } static inline void assign(RefType t1, Type t2) { t1 = numeric::pow(t1,t2); } static inline typename expression_node::node_type type() { return expression_node::e_pow; } static inline details::operator_type operation() { return details::e_pow; } }; template struct lt_op : public opr_base { typedef typename opr_base::Type Type; static inline T process(Type t1, Type t2) { return ((t1 < t2) ? T(1) : T(0)); } static inline T process(const std::string& t1, const std::string& t2) { return ((t1 < t2) ? T(1) : T(0)); } static inline typename expression_node::node_type type() { return expression_node::e_lt; } static inline details::operator_type operation() { return details::e_lt; } }; template struct lte_op : public opr_base { typedef typename opr_base::Type Type; static inline T process(Type t1, Type t2) { return ((t1 <= t2) ? T(1) : T(0)); } static inline T process(const std::string& t1, const std::string& t2) { return ((t1 <= t2) ? T(1) : T(0)); } static inline typename expression_node::node_type type() { return expression_node::e_lte; } static inline details::operator_type operation() { return details::e_lte; } }; template struct gt_op : public opr_base { typedef typename opr_base::Type Type; static inline T process(Type t1, Type t2) { return ((t1 > t2) ? T(1) : T(0)); } static inline T process(const std::string& t1, const std::string& t2) { return ((t1 > t2) ? T(1) : T(0)); } static inline typename expression_node::node_type type() { return expression_node::e_gt; } static inline details::operator_type operation() { return details::e_gt; } }; template struct gte_op : public opr_base { typedef typename opr_base::Type Type; static inline T process(Type t1, Type t2) { return ((t1 >= t2) ? T(1) : T(0)); } static inline T process(const std::string& t1, const std::string& t2) { return ((t1 >= t2) ? T(1) : T(0)); } static inline typename expression_node::node_type type() { return expression_node::e_gte; } static inline details::operator_type operation() { return details::e_gte; } }; template struct eq_op : public opr_base { typedef typename opr_base::Type Type; static inline T process(Type t1, Type t2) { return (std::equal_to()(t1,t2) ? T(1) : T(0)); } static inline T process(const std::string& t1, const std::string& t2) { return ((t1 == t2) ? T(1) : T(0)); } static inline typename expression_node::node_type type() { return expression_node::e_eq; } static inline details::operator_type operation() { return details::e_eq; } }; template struct equal_op : public opr_base { typedef typename opr_base::Type Type; static inline T process(Type t1, Type t2) { return numeric::equal(t1,t2); } static inline T process(const std::string& t1, const std::string& t2) { return ((t1 == t2) ? T(1) : T(0)); } static inline typename expression_node::node_type type() { return expression_node::e_eq; } static inline details::operator_type operation() { return details::e_equal; } }; template struct ne_op : public opr_base { typedef typename opr_base::Type Type; static inline T process(Type t1, Type t2) { return (std::not_equal_to()(t1,t2) ? T(1) : T(0)); } static inline T process(const std::string& t1, const std::string& t2) { return ((t1 != t2) ? T(1) : T(0)); } static inline typename expression_node::node_type type() { return expression_node::e_ne; } static inline details::operator_type operation() { return details::e_ne; } }; template struct and_op : public opr_base { typedef typename opr_base::Type Type; static inline T process(Type t1, Type t2) { return (details::is_true(t1) && details::is_true(t2)) ? T(1) : T(0); } static inline typename expression_node::node_type type() { return expression_node::e_and; } static inline details::operator_type operation() { return details::e_and; } }; template struct nand_op : public opr_base { typedef typename opr_base::Type Type; static inline T process(Type t1, Type t2) { return (details::is_true(t1) && details::is_true(t2)) ? T(0) : T(1); } static inline typename expression_node::node_type type() { return expression_node::e_nand; } static inline details::operator_type operation() { return details::e_nand; } }; template struct or_op : public opr_base { typedef typename opr_base::Type Type; static inline T process(Type t1, Type t2) { return (details::is_true(t1) || details::is_true(t2)) ? T(1) : T(0); } static inline typename expression_node::node_type type() { return expression_node::e_or; } static inline details::operator_type operation() { return details::e_or; } }; template struct nor_op : public opr_base { typedef typename opr_base::Type Type; static inline T process(Type t1, Type t2) { return (details::is_true(t1) || details::is_true(t2)) ? T(0) : T(1); } static inline typename expression_node::node_type type() { return expression_node::e_nor; } static inline details::operator_type operation() { return details::e_nor; } }; template struct xor_op : public opr_base { typedef typename opr_base::Type Type; static inline T process(Type t1, Type t2) { return numeric::xor_opr(t1,t2); } static inline typename expression_node::node_type type() { return expression_node::e_nor; } static inline details::operator_type operation() { return details::e_xor; } }; template struct xnor_op : public opr_base { typedef typename opr_base::Type Type; static inline T process(Type t1, Type t2) { return numeric::xnor_opr(t1,t2); } static inline typename expression_node::node_type type() { return expression_node::e_nor; } static inline details::operator_type operation() { return details::e_xnor; } }; template struct in_op : public opr_base { typedef typename opr_base::Type Type; static inline T process(const T&, const T&) { return std::numeric_limits::quiet_NaN(); } static inline T process(const std::string& t1, const std::string& t2) { return ((std::string::npos != t2.find(t1)) ? T(1) : T(0)); } static inline typename expression_node::node_type type() { return expression_node::e_in; } static inline details::operator_type operation() { return details::e_in; } }; template struct like_op : public opr_base { typedef typename opr_base::Type Type; static inline T process(const T&, const T&) { return std::numeric_limits::quiet_NaN(); } static inline T process(const std::string& t1, const std::string& t2) { return (details::wc_match(t2,t1) ? T(1) : T(0)); } static inline typename expression_node::node_type type() { return expression_node::e_like; } static inline details::operator_type operation() { return details::e_like; } }; template struct ilike_op : public opr_base { typedef typename opr_base::Type Type; static inline T process(const T&, const T&) { return std::numeric_limits::quiet_NaN(); } static inline T process(const std::string& t1, const std::string& t2) { return (details::wc_imatch(t2,t1) ? T(1) : T(0)); } static inline typename expression_node::node_type type() { return expression_node::e_ilike; } static inline details::operator_type operation() { return details::e_ilike; } }; template struct inrange_op : public opr_base { typedef typename opr_base::Type Type; static inline T process(const T& t0, const T& t1, const T& t2) { return ((t0 <= t1) && (t1 <= t2)) ? T(1) : T(0); } static inline T process(const std::string& t0, const std::string& t1, const std::string& t2) { return ((t0 <= t1) && (t1 <= t2)) ? T(1) : T(0); } static inline typename expression_node::node_type type() { return expression_node::e_inranges; } static inline details::operator_type operation() { return details::e_inrange; } }; template inline T value(details::expression_node* n) { return n->value(); } template inline T value(T* t) { return (*t); } template struct vararg_add_op : public opr_base { typedef typename opr_base::Type Type; template class Sequence> static inline T process(const Sequence& arg_list) { switch (arg_list.size()) { case 0 : return T(0); case 1 : return process_1(arg_list); case 2 : return process_2(arg_list); case 3 : return process_3(arg_list); case 4 : return process_4(arg_list); case 5 : return process_5(arg_list); default : { T result = T(0); for (std::size_t i = 0; i < arg_list.size(); ++i) { result += value(arg_list[i]); } return result; } } } template static inline T process_1(const Sequence& arg_list) { return value(arg_list[0]); } template static inline T process_2(const Sequence& arg_list) { return value(arg_list[0]) + value(arg_list[1]); } template static inline T process_3(const Sequence& arg_list) { return value(arg_list[0]) + value(arg_list[1]) + value(arg_list[2]); } template static inline T process_4(const Sequence& arg_list) { return value(arg_list[0]) + value(arg_list[1]) + value(arg_list[2]) + value(arg_list[3]); } template static inline T process_5(const Sequence& arg_list) { return value(arg_list[0]) + value(arg_list[1]) + value(arg_list[2]) + value(arg_list[3]) + value(arg_list[4]); } }; template struct vararg_mul_op : public opr_base { typedef typename opr_base::Type Type; template class Sequence> static inline T process(const Sequence& arg_list) { switch (arg_list.size()) { case 0 : return T(0); case 1 : return process_1(arg_list); case 2 : return process_2(arg_list); case 3 : return process_3(arg_list); case 4 : return process_4(arg_list); case 5 : return process_5(arg_list); default : { T result = T(value(arg_list[0])); for (std::size_t i = 1; i < arg_list.size(); ++i) { result *= value(arg_list[i]); } return result; } } } template static inline T process_1(const Sequence& arg_list) { return value(arg_list[0]); } template static inline T process_2(const Sequence& arg_list) { return value(arg_list[0]) * value(arg_list[1]); } template static inline T process_3(const Sequence& arg_list) { return value(arg_list[0]) * value(arg_list[1]) * value(arg_list[2]); } template static inline T process_4(const Sequence& arg_list) { return value(arg_list[0]) * value(arg_list[1]) * value(arg_list[2]) * value(arg_list[3]); } template static inline T process_5(const Sequence& arg_list) { return value(arg_list[0]) * value(arg_list[1]) * value(arg_list[2]) * value(arg_list[3]) * value(arg_list[4]); } }; template struct vararg_avg_op : public opr_base { typedef typename opr_base::Type Type; template class Sequence> static inline T process(const Sequence& arg_list) { switch (arg_list.size()) { case 0 : return T(0); case 1 : return process_1(arg_list); case 2 : return process_2(arg_list); case 3 : return process_3(arg_list); case 4 : return process_4(arg_list); case 5 : return process_5(arg_list); default : return vararg_add_op::process(arg_list) / arg_list.size(); } } template static inline T process_1(const Sequence& arg_list) { return value(arg_list[0]); } template static inline T process_2(const Sequence& arg_list) { return (value(arg_list[0]) + value(arg_list[1])) / T(2); } template static inline T process_3(const Sequence& arg_list) { return (value(arg_list[0]) + value(arg_list[1]) + value(arg_list[2])) / T(3); } template static inline T process_4(const Sequence& arg_list) { return (value(arg_list[0]) + value(arg_list[1]) + value(arg_list[2]) + value(arg_list[3])) / T(4); } template static inline T process_5(const Sequence& arg_list) { return (value(arg_list[0]) + value(arg_list[1]) + value(arg_list[2]) + value(arg_list[3]) + value(arg_list[4])) / T(5); } }; template struct vararg_min_op : public opr_base { typedef typename opr_base::Type Type; template class Sequence> static inline T process(const Sequence& arg_list) { switch (arg_list.size()) { case 0 : return T(0); case 1 : return process_1(arg_list); case 2 : return process_2(arg_list); case 3 : return process_3(arg_list); case 4 : return process_4(arg_list); case 5 : return process_5(arg_list); default : { T result = T(value(arg_list[0])); for (std::size_t i = 1; i < arg_list.size(); ++i) { const T v = value(arg_list[i]); if (v < result) result = v; } return result; } } } template static inline T process_1(const Sequence& arg_list) { return value(arg_list[0]); } template static inline T process_2(const Sequence& arg_list) { return std::min(value(arg_list[0]),value(arg_list[1])); } template static inline T process_3(const Sequence& arg_list) { return std::min(std::min(value(arg_list[0]),value(arg_list[1])),value(arg_list[2])); } template static inline T process_4(const Sequence& arg_list) { return std::min( std::min(value(arg_list[0]),value(arg_list[1])), std::min(value(arg_list[2]),value(arg_list[3]))); } template static inline T process_5(const Sequence& arg_list) { return std::min( std::min(std::min(value(arg_list[0]),value(arg_list[1])), std::min(value(arg_list[2]),value(arg_list[3]))), value(arg_list[4])); } }; template struct vararg_max_op : public opr_base { typedef typename opr_base::Type Type; template class Sequence> static inline T process(const Sequence& arg_list) { switch (arg_list.size()) { case 0 : return T(0); case 1 : return process_1(arg_list); case 2 : return process_2(arg_list); case 3 : return process_3(arg_list); case 4 : return process_4(arg_list); case 5 : return process_5(arg_list); default : { T result = T(value(arg_list[0])); for (std::size_t i = 1; i < arg_list.size(); ++i) { const T v = value(arg_list[i]); if (v > result) result = v; } return result; } } } template static inline T process_1(const Sequence& arg_list) { return value(arg_list[0]); } template static inline T process_2(const Sequence& arg_list) { return std::max(value(arg_list[0]),value(arg_list[1])); } template static inline T process_3(const Sequence& arg_list) { return std::max(std::max(value(arg_list[0]),value(arg_list[1])),value(arg_list[2])); } template static inline T process_4(const Sequence& arg_list) { return std::max( std::max(value(arg_list[0]),value(arg_list[1])), std::max(value(arg_list[2]),value(arg_list[3]))); } template static inline T process_5(const Sequence& arg_list) { return std::max( std::max(std::max(value(arg_list[0]),value(arg_list[1])), std::max(value(arg_list[2]),value(arg_list[3]))), value(arg_list[4])); } }; template struct vararg_mand_op : public opr_base { typedef typename opr_base::Type Type; template class Sequence> static inline T process(const Sequence& arg_list) { switch (arg_list.size()) { case 1 : return process_1(arg_list); case 2 : return process_2(arg_list); case 3 : return process_3(arg_list); case 4 : return process_4(arg_list); case 5 : return process_5(arg_list); default : { for (std::size_t i = 0; i < arg_list.size(); ++i) { if (std::equal_to()(T(0),value(arg_list[i]))) return T(0); } return T(1); } } } template static inline T process_1(const Sequence& arg_list) { return std::not_equal_to() (T(0),value(arg_list[0])) ? T(1) : T(0); } template static inline T process_2(const Sequence& arg_list) { return ( std::not_equal_to()(T(0),value(arg_list[0])) && std::not_equal_to()(T(0),value(arg_list[1])) ) ? T(1) : T(0); } template static inline T process_3(const Sequence& arg_list) { return ( std::not_equal_to()(T(0),value(arg_list[0])) && std::not_equal_to()(T(0),value(arg_list[1])) && std::not_equal_to()(T(0),value(arg_list[2])) ) ? T(1) : T(0); } template static inline T process_4(const Sequence& arg_list) { return ( std::not_equal_to()(T(0),value(arg_list[0])) && std::not_equal_to()(T(0),value(arg_list[1])) && std::not_equal_to()(T(0),value(arg_list[2])) && std::not_equal_to()(T(0),value(arg_list[3])) ) ? T(1) : T(0); } template static inline T process_5(const Sequence& arg_list) { return ( std::not_equal_to()(T(0),value(arg_list[0])) && std::not_equal_to()(T(0),value(arg_list[1])) && std::not_equal_to()(T(0),value(arg_list[2])) && std::not_equal_to()(T(0),value(arg_list[3])) && std::not_equal_to()(T(0),value(arg_list[4])) ) ? T(1) : T(0); } }; template struct vararg_mor_op : public opr_base { typedef typename opr_base::Type Type; template class Sequence> static inline T process(const Sequence& arg_list) { switch (arg_list.size()) { case 1 : return process_1(arg_list); case 2 : return process_2(arg_list); case 3 : return process_3(arg_list); case 4 : return process_4(arg_list); case 5 : return process_5(arg_list); default : { for (std::size_t i = 0; i < arg_list.size(); ++i) { if (std::not_equal_to()(T(0),value(arg_list[i]))) return T(1); } return T(0); } } } template static inline T process_1(const Sequence& arg_list) { return std::not_equal_to() (T(0),value(arg_list[0])) ? T(1) : T(0); } template static inline T process_2(const Sequence& arg_list) { return ( std::not_equal_to()(T(0),value(arg_list[0])) || std::not_equal_to()(T(0),value(arg_list[1])) ) ? T(1) : T(0); } template static inline T process_3(const Sequence& arg_list) { return ( std::not_equal_to()(T(0),value(arg_list[0])) || std::not_equal_to()(T(0),value(arg_list[1])) || std::not_equal_to()(T(0),value(arg_list[2])) ) ? T(1) : T(0); } template static inline T process_4(const Sequence& arg_list) { return ( std::not_equal_to()(T(0),value(arg_list[0])) || std::not_equal_to()(T(0),value(arg_list[1])) || std::not_equal_to()(T(0),value(arg_list[2])) || std::not_equal_to()(T(0),value(arg_list[3])) ) ? T(1) : T(0); } template static inline T process_5(const Sequence& arg_list) { return ( std::not_equal_to()(T(0),value(arg_list[0])) || std::not_equal_to()(T(0),value(arg_list[1])) || std::not_equal_to()(T(0),value(arg_list[2])) || std::not_equal_to()(T(0),value(arg_list[3])) || std::not_equal_to()(T(0),value(arg_list[4])) ) ? T(1) : T(0); } }; template struct vararg_multi_op : public opr_base { typedef typename opr_base::Type Type; template class Sequence> static inline T process(const Sequence& arg_list) { switch (arg_list.size()) { case 0 : return std::numeric_limits::quiet_NaN(); case 1 : return process_1(arg_list); case 2 : return process_2(arg_list); case 3 : return process_3(arg_list); case 4 : return process_4(arg_list); case 5 : return process_5(arg_list); case 6 : return process_6(arg_list); case 7 : return process_7(arg_list); case 8 : return process_8(arg_list); default : { for (std::size_t i = 0; i < (arg_list.size() - 1); ++i) { value(arg_list[i]); } return value(arg_list.back()); } } } template static inline T process_1(const Sequence& arg_list) { return value(arg_list[0]); } template static inline T process_2(const Sequence& arg_list) { value(arg_list[0]); return value(arg_list[1]); } template static inline T process_3(const Sequence& arg_list) { value(arg_list[0]); value(arg_list[1]); return value(arg_list[2]); } template static inline T process_4(const Sequence& arg_list) { value(arg_list[0]); value(arg_list[1]); value(arg_list[2]); return value(arg_list[3]); } template static inline T process_5(const Sequence& arg_list) { value(arg_list[0]); value(arg_list[1]); value(arg_list[2]); value(arg_list[3]); return value(arg_list[4]); } template static inline T process_6(const Sequence& arg_list) { value(arg_list[0]); value(arg_list[1]); value(arg_list[2]); value(arg_list[3]); value(arg_list[4]); return value(arg_list[5]); } template static inline T process_7(const Sequence& arg_list) { value(arg_list[0]); value(arg_list[1]); value(arg_list[2]); value(arg_list[3]); value(arg_list[4]); value(arg_list[5]); return value(arg_list[6]); } template static inline T process_8(const Sequence& arg_list) { value(arg_list[0]); value(arg_list[1]); value(arg_list[2]); value(arg_list[3]); value(arg_list[4]); value(arg_list[5]); value(arg_list[6]); return value(arg_list[7]); } }; template struct vec_add_op { typedef vector_interface* ivector_ptr; static inline T process(const ivector_ptr v) { const T* vec = v->vec()->vds().data(); const std::size_t vec_size = v->vec()->vds().size(); loop_unroll::details lud(vec_size); if (vec_size <= static_cast(lud.batch_size)) { T result = T(0); int i = 0; exprtk_disable_fallthrough_begin switch (vec_size) { #define case_stmt(N) \ case N : result += vec[i++]; \ #ifndef exprtk_disable_superscalar_unroll case_stmt(16) case_stmt(15) case_stmt(14) case_stmt(13) case_stmt(12) case_stmt(11) case_stmt(10) case_stmt( 9) case_stmt( 8) case_stmt( 7) case_stmt( 6) case_stmt( 5) #endif case_stmt( 4) case_stmt( 3) case_stmt( 2) case_stmt( 1) } exprtk_disable_fallthrough_end #undef case_stmt return result; } T r[] = { T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0) }; const T* upper_bound = vec + lud.upper_bound; while (vec < upper_bound) { #define exprtk_loop(N) \ r[N] += vec[N]; \ exprtk_loop( 0) exprtk_loop( 1) exprtk_loop( 2) exprtk_loop( 3) #ifndef exprtk_disable_superscalar_unroll exprtk_loop( 4) exprtk_loop( 5) exprtk_loop( 6) exprtk_loop( 7) exprtk_loop( 8) exprtk_loop( 9) exprtk_loop(10) exprtk_loop(11) exprtk_loop(12) exprtk_loop(13) exprtk_loop(14) exprtk_loop(15) #endif vec += lud.batch_size; } int i = 0; exprtk_disable_fallthrough_begin switch (lud.remainder) { #define case_stmt(N) \ case N : r[0] += vec[i++]; \ #ifndef exprtk_disable_superscalar_unroll case_stmt(15) case_stmt(14) case_stmt(13) case_stmt(12) case_stmt(11) case_stmt(10) case_stmt( 9) case_stmt( 8) case_stmt( 7) case_stmt( 6) case_stmt( 5) case_stmt( 4) #endif case_stmt( 3) case_stmt( 2) case_stmt( 1) } exprtk_disable_fallthrough_end #undef exprtk_loop #undef case_stmt return (r[ 0] + r[ 1] + r[ 2] + r[ 3]) #ifndef exprtk_disable_superscalar_unroll + (r[ 4] + r[ 5] + r[ 6] + r[ 7]) + (r[ 8] + r[ 9] + r[10] + r[11]) + (r[12] + r[13] + r[14] + r[15]) #endif ; } }; template struct vec_mul_op { typedef vector_interface* ivector_ptr; static inline T process(const ivector_ptr v) { const T* vec = v->vec()->vds().data(); const std::size_t vec_size = v->vec()->vds().size(); loop_unroll::details lud(vec_size); if (vec_size <= static_cast(lud.batch_size)) { T result = T(1); int i = 0; exprtk_disable_fallthrough_begin switch (vec_size) { #define case_stmt(N) \ case N : result *= vec[i++]; \ #ifndef exprtk_disable_superscalar_unroll case_stmt(16) case_stmt(15) case_stmt(14) case_stmt(13) case_stmt(12) case_stmt(11) case_stmt(10) case_stmt( 9) case_stmt( 8) case_stmt( 7) case_stmt( 6) case_stmt( 5) #endif case_stmt( 4) case_stmt( 3) case_stmt( 2) case_stmt( 1) } exprtk_disable_fallthrough_end #undef case_stmt return result; } T r[] = { T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1) }; const T* upper_bound = vec + lud.upper_bound; while (vec < upper_bound) { #define exprtk_loop(N) \ r[N] *= vec[N]; \ exprtk_loop( 0) exprtk_loop( 1) exprtk_loop( 2) exprtk_loop( 3) #ifndef exprtk_disable_superscalar_unroll exprtk_loop( 4) exprtk_loop( 5) exprtk_loop( 6) exprtk_loop( 7) exprtk_loop( 8) exprtk_loop( 9) exprtk_loop(10) exprtk_loop(11) exprtk_loop(12) exprtk_loop(13) exprtk_loop(14) exprtk_loop(15) #endif vec += lud.batch_size; } int i = 0; exprtk_disable_fallthrough_begin switch (lud.remainder) { #define case_stmt(N) \ case N : r[0] *= vec[i++]; \ #ifndef exprtk_disable_superscalar_unroll case_stmt(15) case_stmt(14) case_stmt(13) case_stmt(12) case_stmt(11) case_stmt(10) case_stmt( 9) case_stmt( 8) case_stmt( 7) case_stmt( 6) case_stmt( 5) case_stmt( 4) #endif case_stmt( 3) case_stmt( 2) case_stmt( 1) } exprtk_disable_fallthrough_end #undef exprtk_loop #undef case_stmt return (r[ 0] * r[ 1] * r[ 2] * r[ 3]) #ifndef exprtk_disable_superscalar_unroll + (r[ 4] * r[ 5] * r[ 6] * r[ 7]) + (r[ 8] * r[ 9] * r[10] * r[11]) + (r[12] * r[13] * r[14] * r[15]) #endif ; } }; template struct vec_avg_op { typedef vector_interface* ivector_ptr; static inline T process(const ivector_ptr v) { const std::size_t vec_size = v->vec()->vds().size(); return vec_add_op::process(v) / vec_size; } }; template struct vec_min_op { typedef vector_interface* ivector_ptr; static inline T process(const ivector_ptr v) { const T* vec = v->vec()->vds().data(); const std::size_t vec_size = v->vec()->vds().size(); T result = vec[0]; for (std::size_t i = 1; i < vec_size; ++i) { T v_i = vec[i]; if (v_i < result) result = v_i; } return result; } }; template struct vec_max_op { typedef vector_interface* ivector_ptr; static inline T process(const ivector_ptr v) { const T* vec = v->vec()->vds().data(); const std::size_t vec_size = v->vec()->vds().size(); T result = vec[0]; for (std::size_t i = 1; i < vec_size; ++i) { T v_i = vec[i]; if (v_i > result) result = v_i; } return result; } }; template class vov_base_node : public expression_node { public: virtual ~vov_base_node() {} inline virtual operator_type operation() const { return details::e_default; } virtual const T& v0() const = 0; virtual const T& v1() const = 0; }; template class cov_base_node : public expression_node { public: virtual ~cov_base_node() {} inline virtual operator_type operation() const { return details::e_default; } virtual const T c() const = 0; virtual const T& v() const = 0; }; template class voc_base_node : public expression_node { public: virtual ~voc_base_node() {} inline virtual operator_type operation() const { return details::e_default; } virtual const T c() const = 0; virtual const T& v() const = 0; }; template class vob_base_node : public expression_node { public: virtual ~vob_base_node() {} virtual const T& v() const = 0; }; template class bov_base_node : public expression_node { public: virtual ~bov_base_node() {} virtual const T& v() const = 0; }; template class cob_base_node : public expression_node { public: virtual ~cob_base_node() {} inline virtual operator_type operation() const { return details::e_default; } virtual const T c() const = 0; virtual void set_c(const T) = 0; virtual expression_node* move_branch(const std::size_t& index) = 0; }; template class boc_base_node : public expression_node { public: virtual ~boc_base_node() {} inline virtual operator_type operation() const { return details::e_default; } virtual const T c() const = 0; virtual void set_c(const T) = 0; virtual expression_node* move_branch(const std::size_t& index) = 0; }; template class uv_base_node : public expression_node { public: virtual ~uv_base_node() {} inline virtual operator_type operation() const { return details::e_default; } virtual const T& v() const = 0; }; template class sos_base_node : public expression_node { public: virtual ~sos_base_node() {} inline virtual operator_type operation() const { return details::e_default; } }; template class sosos_base_node : public expression_node { public: virtual ~sosos_base_node() {} inline virtual operator_type operation() const { return details::e_default; } }; template class T0oT1oT2_base_node : public expression_node { public: virtual ~T0oT1oT2_base_node() {} virtual std::string type_id() const = 0; }; template class T0oT1oT2oT3_base_node : public expression_node { public: virtual ~T0oT1oT2oT3_base_node() {} virtual std::string type_id() const = 0; }; template class unary_variable_node : public uv_base_node { public: typedef expression_node* expression_ptr; typedef Operation operation_t; explicit unary_variable_node(const T& var) : v_(var) {} inline T value() const { return Operation::process(v_); } inline typename expression_node::node_type type() const { return Operation::type(); } inline operator_type operation() const { return Operation::operation(); } inline const T& v() const { return v_; } private: unary_variable_node(unary_variable_node&); unary_variable_node& operator=(unary_variable_node&); const T& v_; }; template class uvouv_node : public expression_node { public: // UOpr1(v0) Op UOpr2(v1) typedef expression_node* expression_ptr; typedef typename details::functor_t functor_t; typedef typename functor_t::bfunc_t bfunc_t; typedef typename functor_t::ufunc_t ufunc_t; explicit uvouv_node(const T& var0,const T& var1, ufunc_t uf0, ufunc_t uf1, bfunc_t bf) : v0_(var0), v1_(var1), u0_(uf0 ), u1_(uf1 ), f_ (bf ) {} inline T value() const { return f_(u0_(v0_),u1_(v1_)); } inline typename expression_node::node_type type() const { return expression_node::e_uvouv; } inline operator_type operation() const { return details::e_default; } inline const T& v0() { return v0_; } inline const T& v1() { return v1_; } inline ufunc_t u0() { return u0_; } inline ufunc_t u1() { return u1_; } inline ufunc_t f() { return f_; } private: uvouv_node(uvouv_node&); uvouv_node& operator=(uvouv_node&); const T& v0_; const T& v1_; const ufunc_t u0_; const ufunc_t u1_; const bfunc_t f_; }; template class unary_branch_node : public expression_node { public: typedef expression_node* expression_ptr; typedef Operation operation_t; explicit unary_branch_node(expression_ptr brnch) : branch_(brnch), branch_deletable_(branch_deletable(branch_)) {} ~unary_branch_node() { if (branch_ && branch_deletable_) { destroy_node(branch_); } } inline T value() const { return Operation::process(branch_->value()); } inline typename expression_node::node_type type() const { return Operation::type(); } inline operator_type operation() const { return Operation::operation(); } inline expression_node* branch(const std::size_t&) const { return branch_; } inline void release() { branch_deletable_ = false; } private: unary_branch_node(unary_branch_node&); unary_branch_node& operator=(unary_branch_node&); expression_ptr branch_; bool branch_deletable_; }; template struct is_const { enum {result = 0}; }; template struct is_const { enum {result = 1}; }; template struct is_const_ref { enum {result = 0}; }; template struct is_const_ref { enum {result = 1}; }; template struct is_ref { enum {result = 0}; }; template struct is_ref { enum {result = 1}; }; template struct is_ref { enum {result = 0}; }; template struct param_to_str { static std::string result() { static const std::string r("v"); return r; } }; template <> struct param_to_str<0> { static std::string result() { static const std::string r("c"); return r; } }; #define exprtk_crtype(Type) \ param_to_str::result>::result() \ template struct T0oT1oT2process { typedef typename details::functor_t functor_t; typedef typename functor_t::bfunc_t bfunc_t; struct mode0 { static inline T process(const T& t0, const T& t1, const T& t2, const bfunc_t bf0, const bfunc_t bf1) { // (T0 o0 T1) o1 T2 return bf1(bf0(t0,t1),t2); } template static inline std::string id() { static const std::string result = "(" + exprtk_crtype(T0) + "o" + exprtk_crtype(T1) + ")o(" + exprtk_crtype(T2) + ")" ; return result; } }; struct mode1 { static inline T process(const T& t0, const T& t1, const T& t2, const bfunc_t bf0, const bfunc_t bf1) { // T0 o0 (T1 o1 T2) return bf0(t0,bf1(t1,t2)); } template static inline std::string id() { static const std::string result = "(" + exprtk_crtype(T0) + ")o(" + exprtk_crtype(T1) + "o" + exprtk_crtype(T2) + ")" ; return result; } }; }; template struct T0oT1oT20T3process { typedef typename details::functor_t functor_t; typedef typename functor_t::bfunc_t bfunc_t; struct mode0 { static inline T process(const T& t0, const T& t1, const T& t2, const T& t3, const bfunc_t bf0, const bfunc_t bf1, const bfunc_t bf2) { // (T0 o0 T1) o1 (T2 o2 T3) return bf1(bf0(t0,t1),bf2(t2,t3)); } template static inline std::string id() { static const std::string result = "(" + exprtk_crtype(T0) + "o" + exprtk_crtype(T1) + ")o" + "(" + exprtk_crtype(T2) + "o" + exprtk_crtype(T3) + ")" ; return result; } }; struct mode1 { static inline T process(const T& t0, const T& t1, const T& t2, const T& t3, const bfunc_t bf0, const bfunc_t bf1, const bfunc_t bf2) { // (T0 o0 (T1 o1 (T2 o2 T3)) return bf0(t0,bf1(t1,bf2(t2,t3))); } template static inline std::string id() { static const std::string result = "(" + exprtk_crtype(T0) + ")o((" + exprtk_crtype(T1) + ")o(" + exprtk_crtype(T2) + "o" + exprtk_crtype(T3) + "))" ; return result; } }; struct mode2 { static inline T process(const T& t0, const T& t1, const T& t2, const T& t3, const bfunc_t bf0, const bfunc_t bf1, const bfunc_t bf2) { // (T0 o0 ((T1 o1 T2) o2 T3) return bf0(t0,bf2(bf1(t1,t2),t3)); } template static inline std::string id() { static const std::string result = "(" + exprtk_crtype(T0) + ")o((" + exprtk_crtype(T1) + "o" + exprtk_crtype(T2) + ")o(" + exprtk_crtype(T3) + "))" ; return result; } }; struct mode3 { static inline T process(const T& t0, const T& t1, const T& t2, const T& t3, const bfunc_t bf0, const bfunc_t bf1, const bfunc_t bf2) { // (((T0 o0 T1) o1 T2) o2 T3) return bf2(bf1(bf0(t0,t1),t2),t3); } template static inline std::string id() { static const std::string result = "((" + exprtk_crtype(T0) + "o" + exprtk_crtype(T1) + ")o(" + exprtk_crtype(T2) + "))o(" + exprtk_crtype(T3) + ")"; return result; } }; struct mode4 { static inline T process(const T& t0, const T& t1, const T& t2, const T& t3, const bfunc_t bf0, const bfunc_t bf1, const bfunc_t bf2) { // ((T0 o0 (T1 o1 T2)) o2 T3 return bf2(bf0(t0,bf1(t1,t2)),t3); } template static inline std::string id() { static const std::string result = "((" + exprtk_crtype(T0) + ")o(" + exprtk_crtype(T1) + "o" + exprtk_crtype(T2) + "))o(" + exprtk_crtype(T3) + ")" ; return result; } }; }; #undef exprtk_crtype template struct nodetype_T0oT1 { static const typename expression_node::node_type result; }; template const typename expression_node::node_type nodetype_T0oT1::result = expression_node::e_none; #define synthesis_node_type_define(T0_,T1_,v_) \ template \ struct nodetype_T0oT1 { static const typename expression_node::node_type result; }; \ template \ const typename expression_node::node_type nodetype_T0oT1::result = expression_node:: v_; \ synthesis_node_type_define(const T0&,const T1&, e_vov) synthesis_node_type_define(const T0&,const T1 , e_voc) synthesis_node_type_define(const T0 ,const T1&, e_cov) synthesis_node_type_define( T0&, T1&,e_none) synthesis_node_type_define(const T0 ,const T1 ,e_none) synthesis_node_type_define( T0&,const T1 ,e_none) synthesis_node_type_define(const T0 , T1&,e_none) synthesis_node_type_define(const T0&, T1&,e_none) synthesis_node_type_define( T0&,const T1&,e_none) #undef synthesis_node_type_define template struct nodetype_T0oT1oT2 { static const typename expression_node::node_type result; }; template const typename expression_node::node_type nodetype_T0oT1oT2::result = expression_node::e_none; #define synthesis_node_type_define(T0_,T1_,T2_,v_) \ template \ struct nodetype_T0oT1oT2 { static const typename expression_node::node_type result; }; \ template \ const typename expression_node::node_type nodetype_T0oT1oT2::result = expression_node:: v_; \ synthesis_node_type_define(const T0&,const T1&,const T2&, e_vovov) synthesis_node_type_define(const T0&,const T1&,const T2 , e_vovoc) synthesis_node_type_define(const T0&,const T1 ,const T2&, e_vocov) synthesis_node_type_define(const T0 ,const T1&,const T2&, e_covov) synthesis_node_type_define(const T0 ,const T1&,const T2 , e_covoc) synthesis_node_type_define(const T0 ,const T1 ,const T2 , e_none ) synthesis_node_type_define(const T0 ,const T1 ,const T2&, e_none ) synthesis_node_type_define(const T0&,const T1 ,const T2 , e_none ) synthesis_node_type_define( T0&, T1&, T2&, e_none ) #undef synthesis_node_type_define template struct nodetype_T0oT1oT2oT3 { static const typename expression_node::node_type result; }; template const typename expression_node::node_type nodetype_T0oT1oT2oT3::result = expression_node::e_none; #define synthesis_node_type_define(T0_,T1_,T2_,T3_,v_) \ template \ struct nodetype_T0oT1oT2oT3 { static const typename expression_node::node_type result; }; \ template \ const typename expression_node::node_type nodetype_T0oT1oT2oT3::result = expression_node:: v_; \ synthesis_node_type_define(const T0&,const T1&,const T2&, const T3&,e_vovovov) synthesis_node_type_define(const T0&,const T1&,const T2&, const T3 ,e_vovovoc) synthesis_node_type_define(const T0&,const T1&,const T2 , const T3&,e_vovocov) synthesis_node_type_define(const T0&,const T1 ,const T2&, const T3&,e_vocovov) synthesis_node_type_define(const T0 ,const T1&,const T2&, const T3&,e_covovov) synthesis_node_type_define(const T0 ,const T1&,const T2 , const T3&,e_covocov) synthesis_node_type_define(const T0&,const T1 ,const T2&, const T3 ,e_vocovoc) synthesis_node_type_define(const T0 ,const T1&,const T2&, const T3 ,e_covovoc) synthesis_node_type_define(const T0&,const T1 ,const T2 , const T3&,e_vococov) synthesis_node_type_define(const T0 ,const T1 ,const T2 , const T3 ,e_none ) synthesis_node_type_define(const T0 ,const T1 ,const T2 , const T3&,e_none ) synthesis_node_type_define(const T0 ,const T1 ,const T2&, const T3 ,e_none ) synthesis_node_type_define(const T0 ,const T1&,const T2 , const T3 ,e_none ) synthesis_node_type_define(const T0&,const T1 ,const T2 , const T3 ,e_none ) synthesis_node_type_define(const T0 ,const T1 ,const T2&, const T3&,e_none ) synthesis_node_type_define(const T0&,const T1&,const T2 , const T3 ,e_none ) #undef synthesis_node_type_define template class T0oT1 : public expression_node { public: typedef typename details::functor_t functor_t; typedef typename functor_t::bfunc_t bfunc_t; typedef T value_type; typedef T0oT1 node_type; T0oT1(T0 p0, T1 p1, const bfunc_t p2) : t0_(p0), t1_(p1), f_ (p2) {} inline typename expression_node::node_type type() const { static const typename expression_node::node_type result = nodetype_T0oT1::result; return result; } inline operator_type operation() const { return e_default; } inline T value() const { return f_(t0_,t1_); } inline T0 t0() const { return t0_; } inline T1 t1() const { return t1_; } inline bfunc_t f() const { return f_; } template static inline expression_node* allocate(Allocator& allocator, T0 p0, T1 p1, bfunc_t p2) { return allocator .template allocate_type (p0, p1, p2); } private: T0oT1(T0oT1&) {} T0oT1& operator=(T0oT1&) { return (*this); } T0 t0_; T1 t1_; const bfunc_t f_; }; template class T0oT1oT2 : public T0oT1oT2_base_node { public: typedef typename details::functor_t functor_t; typedef typename functor_t::bfunc_t bfunc_t; typedef T value_type; typedef T0oT1oT2 node_type; typedef ProcessMode process_mode_t; T0oT1oT2(T0 p0, T1 p1, T2 p2, const bfunc_t p3, const bfunc_t p4) : t0_(p0), t1_(p1), t2_(p2), f0_(p3), f1_(p4) {} inline typename expression_node::node_type type() const { static const typename expression_node::node_type result = nodetype_T0oT1oT2::result; return result; } inline operator_type operation() const { return e_default; } inline T value() const { return ProcessMode::process(t0_,t1_,t2_,f0_,f1_); } inline T0 t0() const { return t0_; } inline T1 t1() const { return t1_; } inline T2 t2() const { return t2_; } bfunc_t f0() const { return f0_; } bfunc_t f1() const { return f1_; } std::string type_id() const { return id(); } static inline std::string id() { return process_mode_t::template id(); } template static inline expression_node* allocate(Allocator& allocator, T0 p0, T1 p1, T2 p2, bfunc_t p3, bfunc_t p4) { return allocator .template allocate_type (p0, p1, p2, p3, p4); } private: T0oT1oT2(node_type&) {} node_type& operator=(node_type&) { return (*this); } T0 t0_; T1 t1_; T2 t2_; const bfunc_t f0_; const bfunc_t f1_; }; template class T0oT1oT2oT3 : public T0oT1oT2oT3_base_node { public: typedef typename details::functor_t functor_t; typedef typename functor_t::bfunc_t bfunc_t; typedef T value_type; typedef T0_ T0; typedef T1_ T1; typedef T2_ T2; typedef T3_ T3; typedef T0oT1oT2oT3 node_type; typedef ProcessMode process_mode_t; T0oT1oT2oT3(T0 p0, T1 p1, T2 p2, T3 p3, bfunc_t p4, bfunc_t p5, bfunc_t p6) : t0_(p0), t1_(p1), t2_(p2), t3_(p3), f0_(p4), f1_(p5), f2_(p6) {} inline T value() const { return ProcessMode::process(t0_, t1_, t2_, t3_, f0_, f1_, f2_); } inline T0 t0() const { return t0_; } inline T1 t1() const { return t1_; } inline T2 t2() const { return t2_; } inline T3 t3() const { return t3_; } inline bfunc_t f0() const { return f0_; } inline bfunc_t f1() const { return f1_; } inline bfunc_t f2() const { return f2_; } inline std::string type_id() const { return id(); } static inline std::string id() { return process_mode_t::template id(); } template static inline expression_node* allocate(Allocator& allocator, T0 p0, T1 p1, T2 p2, T3 p3, bfunc_t p4, bfunc_t p5, bfunc_t p6) { return allocator .template allocate_type (p0, p1, p2, p3, p4, p5, p6); } private: T0oT1oT2oT3(node_type&) {} node_type& operator=(node_type&) { return (*this); } T0 t0_; T1 t1_; T2 t2_; T3 t3_; const bfunc_t f0_; const bfunc_t f1_; const bfunc_t f2_; }; template class T0oT1oT2_sf3 : public T0oT1oT2_base_node { public: typedef typename details::functor_t functor_t; typedef typename functor_t::tfunc_t tfunc_t; typedef T value_type; typedef T0oT1oT2_sf3 node_type; T0oT1oT2_sf3(T0 p0, T1 p1, T2 p2, const tfunc_t p3) : t0_(p0), t1_(p1), t2_(p2), f_ (p3) {} inline typename expression_node::node_type type() const { static const typename expression_node::node_type result = nodetype_T0oT1oT2::result; return result; } inline operator_type operation() const { return e_default; } inline T value() const { return f_(t0_, t1_, t2_); } inline T0 t0() const { return t0_; } inline T1 t1() const { return t1_; } inline T2 t2() const { return t2_; } tfunc_t f() const { return f_; } std::string type_id() const { return id(); } static inline std::string id() { return "sf3"; } template static inline expression_node* allocate(Allocator& allocator, T0 p0, T1 p1, T2 p2, tfunc_t p3) { return allocator .template allocate_type (p0, p1, p2, p3); } private: T0oT1oT2_sf3(node_type&) {} node_type& operator=(node_type&) { return (*this); } T0 t0_; T1 t1_; T2 t2_; const tfunc_t f_; }; template class sf3ext_type_node : public T0oT1oT2_base_node { public: virtual ~sf3ext_type_node() {} virtual T0 t0() const = 0; virtual T1 t1() const = 0; virtual T2 t2() const = 0; }; template class T0oT1oT2_sf3ext : public sf3ext_type_node { public: typedef typename details::functor_t functor_t; typedef typename functor_t::tfunc_t tfunc_t; typedef T value_type; typedef T0oT1oT2_sf3ext node_type; T0oT1oT2_sf3ext(T0 p0, T1 p1, T2 p2) : t0_(p0), t1_(p1), t2_(p2) {} inline typename expression_node::node_type type() const { static const typename expression_node::node_type result = nodetype_T0oT1oT2::result; return result; } inline operator_type operation() const { return e_default; } inline T value() const { return SF3Operation::process(t0_, t1_, t2_); } T0 t0() const { return t0_; } T1 t1() const { return t1_; } T2 t2() const { return t2_; } std::string type_id() const { return id(); } static inline std::string id() { return SF3Operation::id(); } template static inline expression_node* allocate(Allocator& allocator, T0 p0, T1 p1, T2 p2) { return allocator .template allocate_type (p0, p1, p2); } private: T0oT1oT2_sf3ext(node_type&) {} node_type& operator=(node_type&) { return (*this); } T0 t0_; T1 t1_; T2 t2_; }; template inline bool is_sf3ext_node(const expression_node* n) { switch (n->type()) { case expression_node::e_vovov : return true; case expression_node::e_vovoc : return true; case expression_node::e_vocov : return true; case expression_node::e_covov : return true; case expression_node::e_covoc : return true; default : return false; } } template class T0oT1oT2oT3_sf4 : public T0oT1oT2_base_node { public: typedef typename details::functor_t functor_t; typedef typename functor_t::qfunc_t qfunc_t; typedef T value_type; typedef T0oT1oT2oT3_sf4 node_type; T0oT1oT2oT3_sf4(T0 p0, T1 p1, T2 p2, T3 p3, const qfunc_t p4) : t0_(p0), t1_(p1), t2_(p2), t3_(p3), f_ (p4) {} inline typename expression_node::node_type type() const { static const typename expression_node::node_type result = nodetype_T0oT1oT2oT3::result; return result; } inline operator_type operation() const { return e_default; } inline T value() const { return f_(t0_, t1_, t2_, t3_); } inline T0 t0() const { return t0_; } inline T1 t1() const { return t1_; } inline T2 t2() const { return t2_; } inline T3 t3() const { return t3_; } qfunc_t f() const { return f_; } std::string type_id() const { return id(); } static inline std::string id() { return "sf4"; } template static inline expression_node* allocate(Allocator& allocator, T0 p0, T1 p1, T2 p2, T3 p3, qfunc_t p4) { return allocator .template allocate_type (p0, p1, p2, p3, p4); } private: T0oT1oT2oT3_sf4(node_type&) {} node_type& operator=(node_type&) { return (*this); } T0 t0_; T1 t1_; T2 t2_; T3 t3_; const qfunc_t f_; }; template class T0oT1oT2oT3_sf4ext : public T0oT1oT2oT3_base_node { public: typedef typename details::functor_t functor_t; typedef typename functor_t::tfunc_t tfunc_t; typedef T value_type; typedef T0oT1oT2oT3_sf4ext node_type; T0oT1oT2oT3_sf4ext(T0 p0, T1 p1, T2 p2, T3 p3) : t0_(p0), t1_(p1), t2_(p2), t3_(p3) {} inline typename expression_node::node_type type() const { static const typename expression_node::node_type result = nodetype_T0oT1oT2oT3::result; return result; } inline operator_type operation() const { return e_default; } inline T value() const { return SF4Operation::process(t0_, t1_, t2_, t3_); } inline T0 t0() const { return t0_; } inline T1 t1() const { return t1_; } inline T2 t2() const { return t2_; } inline T3 t3() const { return t2_; } std::string type_id() const { return id(); } static inline std::string id() { return SF4Operation::id(); } template static inline expression_node* allocate(Allocator& allocator, T0 p0, T1 p1, T2 p2, T3 p3) { return allocator .template allocate_type (p0, p1, p2, p3); } private: T0oT1oT2oT3_sf4ext(node_type&) {} node_type& operator=(node_type&) { return (*this); } T0 t0_; T1 t1_; T2 t2_; T3 t3_; }; template inline bool is_sf4ext_node(const expression_node* n) { switch (n->type()) { case expression_node::e_vovovov : return true; case expression_node::e_vovovoc : return true; case expression_node::e_vovocov : return true; case expression_node::e_vocovov : return true; case expression_node::e_covovov : return true; case expression_node::e_covocov : return true; case expression_node::e_vocovoc : return true; case expression_node::e_covovoc : return true; case expression_node::e_vococov : return true; default : return false; } } template struct T0oT1_define { typedef details::T0oT1 type0; }; template struct T0oT1oT2_define { typedef details::T0oT1oT2::mode0> type0; typedef details::T0oT1oT2::mode1> type1; typedef details::T0oT1oT2_sf3 sf3_type; typedef details::sf3ext_type_node sf3_type_node; }; template struct T0oT1oT2oT3_define { typedef details::T0oT1oT2oT3::mode0> type0; typedef details::T0oT1oT2oT3::mode1> type1; typedef details::T0oT1oT2oT3::mode2> type2; typedef details::T0oT1oT2oT3::mode3> type3; typedef details::T0oT1oT2oT3::mode4> type4; typedef details::T0oT1oT2oT3_sf4 sf4_type; }; template class vov_node : public vov_base_node { public: typedef expression_node* expression_ptr; typedef Operation operation_t; // variable op variable node explicit vov_node(const T& var0, const T& var1) : v0_(var0), v1_(var1) {} inline T value() const { return Operation::process(v0_,v1_); } inline typename expression_node::node_type type() const { return Operation::type(); } inline operator_type operation() const { return Operation::operation(); } inline const T& v0() const { return v0_; } inline const T& v1() const { return v1_; } protected: const T& v0_; const T& v1_; private: vov_node(vov_node&); vov_node& operator=(vov_node&); }; template class cov_node : public cov_base_node { public: typedef expression_node* expression_ptr; typedef Operation operation_t; // constant op variable node explicit cov_node(const T& const_var, const T& var) : c_(const_var), v_(var) {} inline T value() const { return Operation::process(c_,v_); } inline typename expression_node::node_type type() const { return Operation::type(); } inline operator_type operation() const { return Operation::operation(); } inline const T c() const { return c_; } inline const T& v() const { return v_; } protected: const T c_; const T& v_; private: cov_node(const cov_node&); cov_node& operator=(const cov_node&); }; template class voc_node : public voc_base_node { public: typedef expression_node* expression_ptr; typedef Operation operation_t; // variable op constant node explicit voc_node(const T& var, const T& const_var) : v_(var), c_(const_var) {} inline T value() const { return Operation::process(v_,c_); } inline operator_type operation() const { return Operation::operation(); } inline const T c() const { return c_; } inline const T& v() const { return v_; } protected: const T& v_; const T c_; private: voc_node(const voc_node&); voc_node& operator=(const voc_node&); }; template class vob_node : public vob_base_node { public: typedef expression_node* expression_ptr; typedef std::pair branch_t; typedef Operation operation_t; // variable op constant node explicit vob_node(const T& var, const expression_ptr brnch) : v_(var) { init_branches<1>(branch_,brnch); } ~vob_node() { cleanup_branches::execute(branch_); } inline T value() const { return Operation::process(v_,branch_[0].first->value()); } inline operator_type operation() const { return Operation::operation(); } inline const T& v() const { return v_; } inline expression_node* branch(const std::size_t&) const { return branch_[0].first; } private: vob_node(const vob_node&); vob_node& operator=(const vob_node&); const T& v_; branch_t branch_[1]; }; template class bov_node : public bov_base_node { public: typedef expression_node* expression_ptr; typedef std::pair branch_t; typedef Operation operation_t; // variable op constant node explicit bov_node(const expression_ptr brnch, const T& var) : v_(var) { init_branches<1>(branch_,brnch); } ~bov_node() { cleanup_branches::execute(branch_); } inline T value() const { return Operation::process(branch_[0].first->value(),v_); } inline operator_type operation() const { return Operation::operation(); } inline const T& v() const { return v_; } inline expression_node* branch(const std::size_t&) const { return branch_[0].first; } private: bov_node(const bov_node&); bov_node& operator=(const bov_node&); const T& v_; branch_t branch_[1]; }; template class cob_node : public cob_base_node { public: typedef expression_node* expression_ptr; typedef std::pair branch_t; typedef Operation operation_t; // variable op constant node explicit cob_node(const T const_var, const expression_ptr brnch) : c_(const_var) { init_branches<1>(branch_,brnch); } ~cob_node() { cleanup_branches::execute(branch_); } inline T value() const { return Operation::process(c_,branch_[0].first->value()); } inline operator_type operation() const { return Operation::operation(); } inline const T c() const { return c_; } inline void set_c(const T new_c) { (*const_cast(&c_)) = new_c; } inline expression_node* branch(const std::size_t&) const { return branch_[0].first; } inline expression_node* move_branch(const std::size_t&) { branch_[0].second = false; return branch_[0].first; } private: cob_node(const cob_node&); cob_node& operator=(const cob_node&); const T c_; branch_t branch_[1]; }; template class boc_node : public boc_base_node { public: typedef expression_node* expression_ptr; typedef std::pair branch_t; typedef Operation operation_t; // variable op constant node explicit boc_node(const expression_ptr brnch, const T const_var) : c_(const_var) { init_branches<1>(branch_,brnch); } ~boc_node() { cleanup_branches::execute(branch_); } inline T value() const { return Operation::process(branch_[0].first->value(),c_); } inline operator_type operation() const { return Operation::operation(); } inline const T c() const { return c_; } inline void set_c(const T new_c) { (*const_cast(&c_)) = new_c; } inline expression_node* branch(const std::size_t&) const { return branch_[0].first; } inline expression_node* move_branch(const std::size_t&) { branch_[0].second = false; return branch_[0].first; } private: boc_node(const boc_node&); boc_node& operator=(const boc_node&); const T c_; branch_t branch_[1]; }; #ifndef exprtk_disable_string_capabilities template class sos_node : public sos_base_node { public: typedef expression_node* expression_ptr; typedef Operation operation_t; // string op string node explicit sos_node(SType0 p0, SType1 p1) : s0_(p0), s1_(p1) {} inline T value() const { return Operation::process(s0_,s1_); } inline typename expression_node::node_type type() const { return Operation::type(); } inline operator_type operation() const { return Operation::operation(); } inline std::string& s0() { return s0_; } inline std::string& s1() { return s1_; } protected: SType0 s0_; SType1 s1_; private: sos_node(sos_node&); sos_node& operator=(sos_node&); }; template class str_xrox_node : public sos_base_node { public: typedef expression_node* expression_ptr; typedef Operation operation_t; // string-range op string node explicit str_xrox_node(SType0 p0, SType1 p1, RangePack rp0) : s0_ (p0 ), s1_ (p1 ), rp0_(rp0) {} ~str_xrox_node() { rp0_.free(); } inline T value() const { std::size_t r0 = 0; std::size_t r1 = 0; if (rp0_(r0, r1, s0_.size())) return Operation::process(s0_.substr(r0, (r1 - r0) + 1), s1_); else return T(0); } inline typename expression_node::node_type type() const { return Operation::type(); } inline operator_type operation() const { return Operation::operation(); } inline std::string& s0() { return s0_; } inline std::string& s1() { return s1_; } protected: SType0 s0_; SType1 s1_; RangePack rp0_; private: str_xrox_node(str_xrox_node&); str_xrox_node& operator=(str_xrox_node&); }; template class str_xoxr_node : public sos_base_node { public: typedef expression_node* expression_ptr; typedef Operation operation_t; // string op string range node explicit str_xoxr_node(SType0 p0, SType1 p1, RangePack rp1) : s0_ (p0 ), s1_ (p1 ), rp1_(rp1) {} ~str_xoxr_node() { rp1_.free(); } inline T value() const { std::size_t r0 = 0; std::size_t r1 = 0; if (rp1_(r0, r1, s1_.size())) return Operation::process(s0_, s1_.substr(r0, (r1 - r0) + 1)); else return T(0); } inline typename expression_node::node_type type() const { return Operation::type(); } inline operator_type operation() const { return Operation::operation(); } inline std::string& s0() { return s0_; } inline std::string& s1() { return s1_; } protected: SType0 s0_; SType1 s1_; RangePack rp1_; private: str_xoxr_node(str_xoxr_node&); str_xoxr_node& operator=(str_xoxr_node&); }; template class str_xroxr_node : public sos_base_node { public: typedef expression_node* expression_ptr; typedef Operation operation_t; // string-range op string-range node explicit str_xroxr_node(SType0 p0, SType1 p1, RangePack rp0, RangePack rp1) : s0_ (p0 ), s1_ (p1 ), rp0_(rp0), rp1_(rp1) {} ~str_xroxr_node() { rp0_.free(); rp1_.free(); } inline T value() const { std::size_t r0_0 = 0; std::size_t r0_1 = 0; std::size_t r1_0 = 0; std::size_t r1_1 = 0; if ( rp0_(r0_0, r1_0, s0_.size()) && rp1_(r0_1, r1_1, s1_.size()) ) { return Operation::process( s0_.substr(r0_0, (r1_0 - r0_0) + 1), s1_.substr(r0_1, (r1_1 - r0_1) + 1) ); } else return T(0); } inline typename expression_node::node_type type() const { return Operation::type(); } inline operator_type operation() const { return Operation::operation(); } inline std::string& s0() { return s0_; } inline std::string& s1() { return s1_; } protected: SType0 s0_; SType1 s1_; RangePack rp0_; RangePack rp1_; private: str_xroxr_node(str_xroxr_node&); str_xroxr_node& operator=(str_xroxr_node&); }; template class str_sogens_node : public binary_node { public: typedef expression_node * expression_ptr; typedef string_base_node* str_base_ptr; typedef range_pack range_t; typedef range_t* range_ptr; typedef range_interface irange_t; typedef irange_t* irange_ptr; str_sogens_node(const operator_type& opr, expression_ptr branch0, expression_ptr branch1) : binary_node(opr, branch0, branch1), str0_base_ptr_ (0), str1_base_ptr_ (0), str0_range_ptr_(0), str1_range_ptr_(0) { if (is_generally_string_node(binary_node::branch_[0].first)) { str0_base_ptr_ = dynamic_cast(binary_node::branch_[0].first); if (0 == str0_base_ptr_) return; irange_ptr range_ptr = dynamic_cast(binary_node::branch_[0].first); if (0 == range_ptr) return; str0_range_ptr_ = &(range_ptr->range_ref()); } if (is_generally_string_node(binary_node::branch_[1].first)) { str1_base_ptr_ = dynamic_cast(binary_node::branch_[1].first); if (0 == str1_base_ptr_) return; irange_ptr range_ptr = dynamic_cast(binary_node::branch_[1].first); if (0 == range_ptr) return; str1_range_ptr_ = &(range_ptr->range_ref()); } } inline T value() const { if ( str0_base_ptr_ && str1_base_ptr_ && str0_range_ptr_ && str1_range_ptr_ ) { binary_node::branch_[0].first->value(); binary_node::branch_[1].first->value(); std::size_t str0_r0 = 0; std::size_t str0_r1 = 0; std::size_t str1_r0 = 0; std::size_t str1_r1 = 0; range_t& range0 = (*str0_range_ptr_); range_t& range1 = (*str1_range_ptr_); if ( range0(str0_r0, str0_r1, str0_base_ptr_->size()) && range1(str1_r0, str1_r1, str1_base_ptr_->size()) ) { return Operation::process( str0_base_ptr_->str().substr(str0_r0,(str0_r1 - str0_r0) + 1), str1_base_ptr_->str().substr(str1_r0,(str1_r1 - str1_r0) + 1) ); } } return std::numeric_limits::quiet_NaN(); } inline typename expression_node::node_type type() const { return Operation::type(); } inline operator_type operation() const { return Operation::operation(); } private: str_sogens_node(str_sogens_node&); str_sogens_node& operator=(str_sogens_node&); str_base_ptr str0_base_ptr_; str_base_ptr str1_base_ptr_; range_ptr str0_range_ptr_; range_ptr str1_range_ptr_; }; template class sosos_node : public sosos_base_node { public: typedef expression_node* expression_ptr; typedef Operation operation_t; // variable op variable node explicit sosos_node(SType0 p0, SType1 p1, SType2 p2) : s0_(p0), s1_(p1), s2_(p2) {} inline T value() const { return Operation::process(s0_,s1_,s2_); } inline typename expression_node::node_type type() const { return Operation::type(); } inline operator_type operation() const { return Operation::operation(); } inline std::string& s0() { return s0_; } inline std::string& s1() { return s1_; } inline std::string& s2() { return s2_; } protected: SType0 s0_; SType1 s1_; SType2 s2_; private: sosos_node(sosos_node&); sosos_node& operator=(sosos_node&); }; #endif template class ipow_node : public expression_node { public: typedef expression_node* expression_ptr; typedef PowOp operation_t; explicit ipow_node(const T& v) : v_(v) {} inline T value() const { return PowOp::result(v_); } inline typename expression_node::node_type type() const { return expression_node::e_ipow; } private: ipow_node(const ipow_node&); ipow_node& operator=(const ipow_node&); const T& v_; }; template class bipow_node : public expression_node { public: typedef expression_node* expression_ptr; typedef std::pair branch_t; typedef PowOp operation_t; explicit bipow_node(expression_ptr brnch) { init_branches<1>(branch_, brnch); } ~bipow_node() { cleanup_branches::execute(branch_); } inline T value() const { return PowOp::result(branch_[0].first->value()); } inline typename expression_node::node_type type() const { return expression_node::e_ipow; } private: bipow_node(const bipow_node&); bipow_node& operator=(const bipow_node&); branch_t branch_[1]; }; template class ipowinv_node : public expression_node { public: typedef expression_node* expression_ptr; typedef PowOp operation_t; explicit ipowinv_node(const T& v) : v_(v) {} inline T value() const { return (T(1) / PowOp::result(v_)); } inline typename expression_node::node_type type() const { return expression_node::e_ipowinv; } private: ipowinv_node(const ipowinv_node&); ipowinv_node& operator=(const ipowinv_node&); const T& v_; }; template class bipowninv_node : public expression_node { public: typedef expression_node* expression_ptr; typedef std::pair branch_t; typedef PowOp operation_t; explicit bipowninv_node(expression_ptr brnch) { init_branches<1>(branch_, brnch); } ~bipowninv_node() { cleanup_branches::execute(branch_); } inline T value() const { return (T(1) / PowOp::result(branch_[0].first->value())); } inline typename expression_node::node_type type() const { return expression_node::e_ipowinv; } private: bipowninv_node(const bipowninv_node&); bipowninv_node& operator=(const bipowninv_node&); branch_t branch_[1]; }; template inline bool is_vov_node(const expression_node* node) { return (0 != dynamic_cast*>(node)); } template inline bool is_cov_node(const expression_node* node) { return (0 != dynamic_cast*>(node)); } template inline bool is_voc_node(const expression_node* node) { return (0 != dynamic_cast*>(node)); } template inline bool is_cob_node(const expression_node* node) { return (0 != dynamic_cast*>(node)); } template inline bool is_boc_node(const expression_node* node) { return (0 != dynamic_cast*>(node)); } template inline bool is_t0ot1ot2_node(const expression_node* node) { return (0 != dynamic_cast*>(node)); } template inline bool is_t0ot1ot2ot3_node(const expression_node* node) { return (0 != dynamic_cast*>(node)); } template inline bool is_uv_node(const expression_node* node) { return (0 != dynamic_cast*>(node)); } template inline bool is_string_node(const expression_node* node) { return node && (expression_node::e_stringvar == node->type()); } template inline bool is_string_range_node(const expression_node* node) { return node && (expression_node::e_stringvarrng == node->type()); } template inline bool is_const_string_node(const expression_node* node) { return node && (expression_node::e_stringconst == node->type()); } template inline bool is_const_string_range_node(const expression_node* node) { return node && (expression_node::e_cstringvarrng == node->type()); } template inline bool is_string_assignment_node(const expression_node* node) { return node && (expression_node::e_strass == node->type()); } template inline bool is_string_concat_node(const expression_node* node) { return node && (expression_node::e_strconcat == node->type()); } template inline bool is_string_function_node(const expression_node* node) { return node && (expression_node::e_strfunction == node->type()); } template inline bool is_string_condition_node(const expression_node* node) { return node && (expression_node::e_strcondition == node->type()); } template inline bool is_string_ccondition_node(const expression_node* node) { return node && (expression_node::e_strccondition == node->type()); } template inline bool is_string_vararg_node(const expression_node* node) { return node && (expression_node::e_stringvararg == node->type()); } template inline bool is_genricstring_range_node(const expression_node* node) { return node && (expression_node::e_strgenrange == node->type()); } template inline bool is_generally_string_node(const expression_node* node) { if (node) { switch (node->type()) { case expression_node::e_stringvar : case expression_node::e_stringconst : case expression_node::e_stringvarrng : case expression_node::e_cstringvarrng : case expression_node::e_strgenrange : case expression_node::e_strass : case expression_node::e_strconcat : case expression_node::e_strfunction : case expression_node::e_strcondition : case expression_node::e_strccondition : case expression_node::e_stringvararg : return true; default : return false; } } return false; } class node_allocator { public: template inline expression_node* allocate(OpType& operation, ExprNode (&branch)[1]) { return allocate(operation,branch[0]); } template inline expression_node* allocate(OpType& operation, ExprNode (&branch)[2]) { return allocate(operation,branch[0],branch[1]); } template inline expression_node* allocate(OpType& operation, ExprNode (&branch)[3]) { return allocate(operation,branch[0],branch[1],branch[2]); } template inline expression_node* allocate(OpType& operation, ExprNode (&branch)[4]) { return allocate(operation,branch[0],branch[1],branch[2],branch[3]); } template inline expression_node* allocate(OpType& operation, ExprNode (&branch)[5]) { return allocate(operation,branch[0],branch[1],branch[2],branch[3],branch[4]); } template inline expression_node* allocate(OpType& operation, ExprNode (&branch)[6]) { return allocate(operation,branch[0],branch[1],branch[2],branch[3],branch[4],branch[5]); } template inline expression_node* allocate() const { return (new node_type()); } template class Sequence> inline expression_node* allocate(const Sequence& seq) const { return (new node_type(seq)); } template inline expression_node* allocate(T1& t1) const { return (new node_type(t1)); } template inline expression_node* allocate_c(const T1& t1) const { return (new node_type(t1)); } template inline expression_node* allocate(const T1& t1, const T2& t2) const { return (new node_type(t1,t2)); } template inline expression_node* allocate_cr(const T1& t1, T2& t2) const { return (new node_type(t1,t2)); } template inline expression_node* allocate_rc(T1& t1, const T2& t2) const { return (new node_type(t1,t2)); } template inline expression_node* allocate_rr(T1& t1, T2& t2) const { return (new node_type(t1,t2)); } template inline expression_node* allocate_tt(T1 t1, T2 t2) const { return (new node_type(t1,t2)); } template inline expression_node* allocate_ttt(T1 t1, T2 t2, T3 t3) const { return (new node_type(t1,t2,t3)); } template inline expression_node* allocate_tttt(T1 t1, T2 t2, T3 t3, T4 t4) const { return (new node_type(t1,t2,t3,t4)); } template inline expression_node* allocate_rrr(T1& t1, T2& t2, T3& t3) const { return (new node_type(t1,t2,t3)); } template inline expression_node* allocate_rrrr(T1& t1, T2& t2, T3& t3, T4& t4) const { return (new node_type(t1,t2,t3,t4)); } template inline expression_node* allocate_rrrrr(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5) const { return (new node_type(t1,t2,t3,t4,t5)); } template inline expression_node* allocate(const T1& t1, const T2& t2, const T3& t3) const { return (new node_type(t1,t2,t3)); } template inline expression_node* allocate(const T1& t1, const T2& t2, const T3& t3, const T4& t4) const { return (new node_type(t1,t2,t3,t4)); } template inline expression_node* allocate(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5) const { return (new node_type(t1,t2,t3,t4,t5)); } template inline expression_node* allocate(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6) const { return (new node_type(t1,t2,t3,t4,t5,t6)); } template inline expression_node* allocate(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7) const { return (new node_type(t1,t2,t3,t4,t5,t6,t7)); } template inline expression_node* allocate(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8) const { return (new node_type(t1,t2,t3,t4,t5,t6,t7,t8)); } template inline expression_node* allocate(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9) const { return (new node_type(t1,t2,t3,t4,t5,t6,t7,t8,t9)); } template inline expression_node* allocate(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10) const { return (new node_type(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)); } template inline expression_node* allocate_type(T1 t1, T2 t2, T3 t3) const { return (new node_type(t1,t2,t3)); } template inline expression_node* allocate_type(T1 t1, T2 t2, T3 t3, T4 t4) const { return (new node_type(t1,t2,t3,t4)); } template inline expression_node* allocate_type(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5) const { return (new node_type(t1,t2,t3,t4,t5)); } template inline expression_node* allocate_type(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6) const { return (new node_type(t1,t2,t3,t4,t5,t6)); } template inline expression_node* allocate_type(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7) const { return (new node_type(t1,t2,t3,t4,t5,t6,t7)); } template void inline free(expression_node*& e) const { delete e; e = 0; } }; inline void load_operations_map(std::multimap& m) { #define register_op(Symbol,Type,Args) \ m.insert(std::make_pair(std::string(Symbol),details::base_operation_t(Type,Args))); \ register_op( "abs", e_abs , 1) register_op( "acos", e_acos , 1) register_op( "acosh", e_acosh , 1) register_op( "asin", e_asin , 1) register_op( "asinh", e_asinh , 1) register_op( "atan", e_atan , 1) register_op( "atanh", e_atanh , 1) register_op( "ceil", e_ceil , 1) register_op( "cos", e_cos , 1) register_op( "cosh", e_cosh , 1) register_op( "exp", e_exp , 1) register_op( "expm1", e_expm1 , 1) register_op( "floor", e_floor , 1) register_op( "log", e_log , 1) register_op( "log10", e_log10 , 1) register_op( "log2", e_log2 , 1) register_op( "log1p", e_log1p , 1) register_op( "round", e_round , 1) register_op( "sin", e_sin , 1) register_op( "sinc", e_sinc , 1) register_op( "sinh", e_sinh , 1) register_op( "sec", e_sec , 1) register_op( "csc", e_csc , 1) register_op( "sqrt", e_sqrt , 1) register_op( "tan", e_tan , 1) register_op( "tanh", e_tanh , 1) register_op( "cot", e_cot , 1) register_op( "rad2deg", e_r2d , 1) register_op( "deg2rad", e_d2r , 1) register_op( "deg2grad", e_d2g , 1) register_op( "grad2deg", e_g2d , 1) register_op( "sgn", e_sgn , 1) register_op( "not", e_notl , 1) register_op( "erf", e_erf , 1) register_op( "erfc", e_erfc , 1) register_op( "ncdf", e_ncdf , 1) register_op( "frac", e_frac , 1) register_op( "trunc", e_trunc , 1) register_op( "atan2", e_atan2 , 2) register_op( "mod", e_mod , 2) register_op( "logn", e_logn , 2) register_op( "pow", e_pow , 2) register_op( "root", e_root , 2) register_op( "roundn", e_roundn , 2) register_op( "equal", e_equal , 2) register_op("not_equal", e_nequal , 2) register_op( "hypot", e_hypot , 2) register_op( "shr", e_shr , 2) register_op( "shl", e_shl , 2) register_op( "clamp", e_clamp , 3) register_op( "iclamp", e_iclamp , 3) register_op( "inrange", e_inrange , 3) #undef register_op } } // namespace details class function_traits { public: function_traits() : allow_zero_parameters_(false), has_side_effects_(true), min_num_args_(0), max_num_args_(std::numeric_limits::max()) {} inline bool& allow_zero_parameters() { return allow_zero_parameters_; } inline bool& has_side_effects() { return has_side_effects_; } std::size_t& min_num_args() { return min_num_args_; } std::size_t& max_num_args() { return max_num_args_; } private: bool allow_zero_parameters_; bool has_side_effects_; std::size_t min_num_args_; std::size_t max_num_args_; }; template void enable_zero_parameters(FunctionType& func) { func.allow_zero_parameters() = true; if (0 != func.min_num_args()) { func.min_num_args() = 0; } } template void disable_zero_parameters(FunctionType& func) { func.allow_zero_parameters() = false; } template void enable_has_side_effects(FunctionType& func) { func.has_side_effects() = true; } template void disable_has_side_effects(FunctionType& func) { func.has_side_effects() = false; } template void set_min_num_args(FunctionType& func, const std::size_t& num_args) { func.min_num_args() = num_args; if ((0 != func.min_num_args()) && func.allow_zero_parameters()) func.allow_zero_parameters() = false; } template void set_max_num_args(FunctionType& func, const std::size_t& num_args) { func.max_num_args() = num_args; } template class ifunction : public function_traits { public: explicit ifunction(const std::size_t& pc) : param_count(pc) {} virtual ~ifunction() {} #define empty_method_body \ { \ return std::numeric_limits::quiet_NaN(); \ } \ inline virtual T operator() () empty_method_body inline virtual T operator() (const T&) empty_method_body inline virtual T operator() (const T&,const T&) empty_method_body inline virtual T operator() (const T&, const T&, const T&) empty_method_body inline virtual T operator() (const T&, const T&, const T&, const T&) empty_method_body inline virtual T operator() (const T&, const T&, const T&, const T&, const T&) empty_method_body inline virtual T operator() (const T&, const T&, const T&, const T&, const T&, const T&) empty_method_body inline virtual T operator() (const T&, const T&, const T&, const T&, const T&, const T&, const T&) empty_method_body inline virtual T operator() (const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&) empty_method_body inline virtual T operator() (const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&) empty_method_body inline virtual T operator() (const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&) empty_method_body inline virtual T operator() (const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&) empty_method_body inline virtual T operator() (const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&) empty_method_body inline virtual T operator() (const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&) empty_method_body inline virtual T operator() (const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&) empty_method_body inline virtual T operator() (const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&) empty_method_body inline virtual T operator() (const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&) empty_method_body inline virtual T operator() (const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&) empty_method_body inline virtual T operator() (const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&) empty_method_body inline virtual T operator() (const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&) empty_method_body inline virtual T operator() (const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&, const T&) empty_method_body #undef empty_method_body std::size_t param_count; }; template class ivararg_function : public function_traits { public: virtual ~ivararg_function() {} inline virtual T operator() (const std::vector&) { exprtk_debug(("ivararg_function::operator() - Operator has not been overridden.\n")); return std::numeric_limits::quiet_NaN(); } }; template class igeneric_function : public function_traits { public: enum return_type { e_rtrn_scalar = 0, e_rtrn_string = 1 }; typedef T type; typedef type_store generic_type; typedef typename generic_type::parameter_list parameter_list_t; igeneric_function(const std::string& param_seq = "", const return_type rtr_type = e_rtrn_scalar) : parameter_sequence(param_seq), rtrn_type(rtr_type) {} virtual ~igeneric_function() {} #define igeneric_function_empty_body(N) \ { \ exprtk_debug(("igeneric_function::operator() - Operator has not been overridden. ["#N"]\n")); \ return std::numeric_limits::quiet_NaN(); \ } \ // f(i_0,i_1,....,i_N) --> Scalar inline virtual T operator() (parameter_list_t) igeneric_function_empty_body(1) // f(i_0,i_1,....,i_N) --> String inline virtual T operator() (std::string&, parameter_list_t) igeneric_function_empty_body(2) // f(psi,i_0,i_1,....,i_N) --> Scalar inline virtual T operator() (const std::size_t&, parameter_list_t) igeneric_function_empty_body(3) // f(psi,i_0,i_1,....,i_N) --> String inline virtual T operator() (const std::size_t&, std::string&, parameter_list_t) igeneric_function_empty_body(4) std::string parameter_sequence; return_type rtrn_type; }; template class parser; template class expression_helper; template class symbol_table { public: typedef T (*ff00_functor)(); typedef T (*ff01_functor)(T); typedef T (*ff02_functor)(T,T); typedef T (*ff03_functor)(T,T,T); typedef T (*ff04_functor)(T,T,T,T); typedef T (*ff05_functor)(T,T,T,T,T); typedef T (*ff06_functor)(T,T,T,T,T,T); typedef T (*ff07_functor)(T,T,T,T,T,T,T); typedef T (*ff08_functor)(T,T,T,T,T,T,T,T); typedef T (*ff09_functor)(T,T,T,T,T,T,T,T,T); typedef T (*ff10_functor)(T,T,T,T,T,T,T,T,T,T); typedef T (*ff11_functor)(T,T,T,T,T,T,T,T,T,T,T); typedef T (*ff12_functor)(T,T,T,T,T,T,T,T,T,T,T,T); typedef T (*ff13_functor)(T,T,T,T,T,T,T,T,T,T,T,T,T); typedef T (*ff14_functor)(T,T,T,T,T,T,T,T,T,T,T,T,T,T); typedef T (*ff15_functor)(T,T,T,T,T,T,T,T,T,T,T,T,T,T,T); protected: struct freefunc00 : public exprtk::ifunction { using exprtk::ifunction::operator(); freefunc00(ff00_functor ff) : exprtk::ifunction(0), f(ff) {} inline T operator() () { return f(); } ff00_functor f; }; struct freefunc01 : public exprtk::ifunction { using exprtk::ifunction::operator(); freefunc01(ff01_functor ff) : exprtk::ifunction(1), f(ff) {} inline T operator() (const T& v0) { return f(v0); } ff01_functor f; }; struct freefunc02 : public exprtk::ifunction { using exprtk::ifunction::operator(); freefunc02(ff02_functor ff) : exprtk::ifunction(2), f(ff) {} inline T operator() (const T& v0, const T& v1) { return f(v0, v1); } ff02_functor f; }; struct freefunc03 : public exprtk::ifunction { using exprtk::ifunction::operator(); freefunc03(ff03_functor ff) : exprtk::ifunction(3), f(ff) {} inline T operator() (const T& v0, const T& v1, const T& v2) { return f(v0, v1, v2); } ff03_functor f; }; struct freefunc04 : public exprtk::ifunction { using exprtk::ifunction::operator(); freefunc04(ff04_functor ff) : exprtk::ifunction(4), f(ff) {} inline T operator() (const T& v0, const T& v1, const T& v2, const T& v3) { return f(v0, v1, v2, v3); } ff04_functor f; }; struct freefunc05 : public exprtk::ifunction { using exprtk::ifunction::operator(); freefunc05(ff05_functor ff) : exprtk::ifunction(5), f(ff) {} inline T operator() (const T& v0, const T& v1, const T& v2, const T& v3, const T& v4) { return f(v0, v1, v2, v3, v4); } ff05_functor f; }; struct freefunc06 : public exprtk::ifunction { using exprtk::ifunction::operator(); freefunc06(ff06_functor ff) : exprtk::ifunction(6), f(ff) {} inline T operator() (const T& v0, const T& v1, const T& v2, const T& v3, const T& v4, const T& v5) { return f(v0, v1, v2, v3, v4, v5); } ff06_functor f; }; struct freefunc07 : public exprtk::ifunction { using exprtk::ifunction::operator(); freefunc07(ff07_functor ff) : exprtk::ifunction(7), f(ff) {} inline T operator() (const T& v0, const T& v1, const T& v2, const T& v3, const T& v4, const T& v5, const T& v6) { return f(v0, v1, v2, v3, v4, v5, v6); } ff07_functor f; }; struct freefunc08 : public exprtk::ifunction { using exprtk::ifunction::operator(); freefunc08(ff08_functor ff) : exprtk::ifunction(8), f(ff) {} inline T operator() (const T& v0, const T& v1, const T& v2, const T& v3, const T& v4, const T& v5, const T& v6, const T& v7) { return f(v0, v1, v2, v3, v4, v5, v6, v7); } ff08_functor f; }; struct freefunc09 : public exprtk::ifunction { using exprtk::ifunction::operator(); freefunc09(ff09_functor ff) : exprtk::ifunction(9), f(ff) {} inline T operator() (const T& v0, const T& v1, const T& v2, const T& v3, const T& v4, const T& v5, const T& v6, const T& v7, const T& v8) { return f(v0, v1, v2, v3, v4, v5, v6, v7, v8); } ff09_functor f; }; struct freefunc10 : public exprtk::ifunction { using exprtk::ifunction::operator(); freefunc10(ff10_functor ff) : exprtk::ifunction(10), f(ff) {} inline T operator() (const T& v0, const T& v1, const T& v2, const T& v3, const T& v4, const T& v5, const T& v6, const T& v7, const T& v8, const T& v9) { return f(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9); } ff10_functor f; }; struct freefunc11 : public exprtk::ifunction { using exprtk::ifunction::operator(); freefunc11(ff11_functor ff) : exprtk::ifunction(11), f(ff) {} inline T operator() (const T& v0, const T& v1, const T& v2, const T& v3, const T& v4, const T& v5, const T& v6, const T& v7, const T& v8, const T& v9, const T& v10) { return f(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10); } ff11_functor f; }; struct freefunc12 : public exprtk::ifunction { using exprtk::ifunction::operator(); freefunc12(ff12_functor ff) : exprtk::ifunction(12), f(ff) {} inline T operator() (const T& v00, const T& v01, const T& v02, const T& v03, const T& v04, const T& v05, const T& v06, const T& v07, const T& v08, const T& v09, const T& v10, const T& v11) { return f(v00, v01, v02, v03, v04, v05, v06, v07, v08, v09, v10, v11); } ff12_functor f; }; struct freefunc13 : public exprtk::ifunction { using exprtk::ifunction::operator(); freefunc13(ff13_functor ff) : exprtk::ifunction(13), f(ff) {} inline T operator() (const T& v00, const T& v01, const T& v02, const T& v03, const T& v04, const T& v05, const T& v06, const T& v07, const T& v08, const T& v09, const T& v10, const T& v11, const T& v12) { return f(v00, v01, v02, v03, v04, v05, v06, v07, v08, v09, v10, v11, v12); } ff13_functor f; }; struct freefunc14 : public exprtk::ifunction { using exprtk::ifunction::operator(); freefunc14(ff14_functor ff) : exprtk::ifunction(14), f(ff) {} inline T operator() (const T& v00, const T& v01, const T& v02, const T& v03, const T& v04, const T& v05, const T& v06, const T& v07, const T& v08, const T& v09, const T& v10, const T& v11, const T& v12, const T& v13) { return f(v00, v01, v02, v03, v04, v05, v06, v07, v08, v09, v10, v11, v12, v13); } ff14_functor f; }; struct freefunc15 : public exprtk::ifunction { using exprtk::ifunction::operator(); freefunc15(ff15_functor ff) : exprtk::ifunction(15), f(ff) {} inline T operator() (const T& v00, const T& v01, const T& v02, const T& v03, const T& v04, const T& v05, const T& v06, const T& v07, const T& v08, const T& v09, const T& v10, const T& v11, const T& v12, const T& v13, const T& v14) { return f(v00, v01, v02, v03, v04, v05, v06, v07, v08, v09, v10, v11, v12, v13, v14); } ff15_functor f; }; template struct type_store { typedef details::expression_node* expression_ptr; typedef typename details::variable_node variable_node_t; typedef ifunction ifunction_t; typedef ivararg_function ivararg_function_t; typedef igeneric_function igeneric_function_t; typedef details::vector_holder vector_t; #ifndef exprtk_disable_string_capabilities typedef typename details::stringvar_node stringvar_node_t; #endif typedef Type type_t; typedef type_t* type_ptr; typedef std::pair type_pair_t; typedef std::map type_map_t; typedef typename type_map_t::iterator tm_itr_t; typedef typename type_map_t::const_iterator tm_const_itr_t; enum { lut_size = 256 }; type_map_t map; std::size_t size; type_store() : size(0) {} inline bool symbol_exists(const std::string& symbol_name) const { if (symbol_name.empty()) return false; else if (map.end() != map.find(symbol_name)) return true; else return false; } template inline std::string entity_name(const PtrType& ptr) const { if (map.empty()) return std::string(); tm_const_itr_t itr = map.begin(); while (map.end() != itr) { if (itr->second.second == ptr) { return itr->first; } else ++itr; } return std::string(); } inline bool is_constant(const std::string& symbol_name) const { if (symbol_name.empty()) return false; else { const tm_const_itr_t itr = map.find(symbol_name); if (map.end() == itr) return false; else return (*itr).second.first; } } template inline bool add_impl(const std::string& symbol_name, RType t, const bool is_const) { if (symbol_name.size() > 1) { for (std::size_t i = 0; i < details::reserved_symbols_size; ++i) { if (details::imatch(symbol_name, details::reserved_symbols[i])) { return false; } } } const tm_itr_t itr = map.find(symbol_name); if (map.end() == itr) { map[symbol_name] = Tie::make(t,is_const); ++size; } return true; } struct tie_array { static inline std::pair make(std::pair v, const bool is_const = false) { return std::make_pair(is_const, new vector_t(v.first, v.second)); } }; struct tie_stdvec { template static inline std::pair make(std::vector& v, const bool is_const = false) { return std::make_pair(is_const, new vector_t(v)); } }; struct tie_vecview { static inline std::pair make(exprtk::vector_view& v, const bool is_const = false) { return std::make_pair(is_const, new vector_t(v)); } }; struct tie_stddeq { template static inline std::pair make(std::deque& v, const bool is_const = false) { return std::make_pair(is_const, new vector_t(v)); } }; template inline bool add(const std::string& symbol_name, T (&v)[v_size], const bool is_const = false) { return add_impl > (symbol_name, std::make_pair(v,v_size), is_const); } inline bool add(const std::string& symbol_name, T* v, const std::size_t v_size, const bool is_const = false) { return add_impl > (symbol_name, std::make_pair(v,v_size), is_const); } template inline bool add(const std::string& symbol_name, std::vector& v, const bool is_const = false) { return add_impl&> (symbol_name, v, is_const); } inline bool add(const std::string& symbol_name, exprtk::vector_view& v, const bool is_const = false) { return add_impl&> (symbol_name, v, is_const); } template inline bool add(const std::string& symbol_name, std::deque& v, const bool is_const = false) { return add_impl&> (symbol_name, v, is_const); } inline bool add(const std::string& symbol_name, RawType& t, const bool is_const = false) { struct tie { static inline std::pair make(T& t,const bool is_const = false) { return std::make_pair(is_const, new variable_node_t(t)); } #ifndef exprtk_disable_string_capabilities static inline std::pair make(std::string& t,const bool is_const = false) { return std::make_pair(is_const, new stringvar_node_t(t)); } #endif static inline std::pair make(function_t& t, const bool is_constant = false) { return std::make_pair(is_constant,&t); } static inline std::pair make(vararg_function_t& t, const bool is_const = false) { return std::make_pair(is_const,&t); } static inline std::pair make(generic_function_t& t, const bool is_constant = false) { return std::make_pair(is_constant,&t); } }; const tm_itr_t itr = map.find(symbol_name); if (map.end() == itr) { map[symbol_name] = tie::make(t,is_const); ++size; } return true; } inline type_ptr get(const std::string& symbol_name) const { const tm_const_itr_t itr = map.find(symbol_name); if (map.end() == itr) return reinterpret_cast(0); else return itr->second.second; } template struct ptr_match { static inline bool test(const PtrType, const void*) { return false; } }; template struct ptr_match { static inline bool test(const variable_node_t* p, const void* ptr) { exprtk_debug(("ptr_match::test() - %p <--> %p\n",(void*)(&(p->ref())),ptr)); return (&(p->ref()) == ptr); } }; inline type_ptr get_from_varptr(const void* ptr) const { tm_const_itr_t itr = map.begin(); while (map.end() != itr) { type_ptr ret_ptr = itr->second.second; if (ptr_match::test(ret_ptr,ptr)) { return ret_ptr; } ++itr; } return type_ptr(0); } inline bool remove(const std::string& symbol_name, const bool delete_node = true) { const tm_itr_t itr = map.find(symbol_name); if (map.end() != itr) { struct deleter { static inline void process(std::pair& n) { delete n.second; } static inline void process(std::pair& n) { delete n.second; } #ifndef exprtk_disable_string_capabilities static inline void process(std::pair& n) { delete n.second; } #endif static inline void process(std::pair&) { } }; if (delete_node) { deleter::process((*itr).second); } map.erase(itr); --size; return true; } else return false; } inline RawType& type_ref(const std::string& symbol_name) { struct init_type { static inline double set(double) { return (0.0); } static inline double set(long double) { return (0.0); } static inline float set(float) { return (0.0f); } static inline std::string set(std::string) { return std::string(""); } }; static RawType null_type = init_type::set(RawType()); const tm_const_itr_t itr = map.find(symbol_name); if (map.end() == itr) return null_type; else return itr->second.second->ref(); } inline void clear(const bool delete_node = true) { struct deleter { static inline void process(std::pair& n) { delete n.second; } static inline void process(std::pair& n) { delete n.second; } static inline void process(std::pair&) { } #ifndef exprtk_disable_string_capabilities static inline void process(std::pair& n) { delete n.second; } #endif }; if (!map.empty()) { if (delete_node) { tm_itr_t itr = map.begin(); tm_itr_t end = map.end (); while (end != itr) { deleter::process((*itr).second); ++itr; } } map.clear(); } size = 0; } template class Sequence> inline std::size_t get_list(Sequence,Allocator>& list) const { std::size_t count = 0; if (!map.empty()) { tm_const_itr_t itr = map.begin(); tm_const_itr_t end = map.end (); while (end != itr) { list.push_back(std::make_pair((*itr).first,itr->second.second->ref())); ++itr; ++count; } } return count; } template class Sequence> inline std::size_t get_list(Sequence& vlist) const { std::size_t count = 0; if (!map.empty()) { tm_const_itr_t itr = map.begin(); tm_const_itr_t end = map.end (); while (end != itr) { vlist.push_back((*itr).first); ++itr; ++count; } } return count; } }; typedef details::expression_node* expression_ptr; typedef typename details::variable_node variable_t; typedef typename details::vector_holder vector_holder_t; typedef variable_t* variable_ptr; #ifndef exprtk_disable_string_capabilities typedef typename details::stringvar_node stringvar_t; typedef stringvar_t* stringvar_ptr; #endif typedef ifunction function_t; typedef ivararg_function vararg_function_t; typedef igeneric_function generic_function_t; typedef function_t* function_ptr; typedef vararg_function_t* vararg_function_ptr; typedef generic_function_t* generic_function_ptr; static const std::size_t lut_size = 256; // Symbol Table Holder struct control_block { struct st_data { type_store,T> variable_store; #ifndef exprtk_disable_string_capabilities type_store,std::string> stringvar_store; #endif type_store,ifunction > function_store; type_store,ivararg_function > vararg_function_store; type_store,igeneric_function > generic_function_store; type_store,igeneric_function > string_function_store; type_store vector_store; st_data() { for (std::size_t i = 0; i < details::reserved_words_size; ++i) { reserved_symbol_table_.insert(details::reserved_words[i]); } for (std::size_t i = 0; i < details::reserved_symbols_size; ++i) { reserved_symbol_table_.insert(details::reserved_symbols[i]); } } ~st_data() { for (std::size_t i = 0; i < free_function_list_.size(); ++i) { delete free_function_list_[i]; } } inline bool is_reserved_symbol(const std::string& symbol) const { return (reserved_symbol_table_.end() != reserved_symbol_table_.find(symbol)); } static inline st_data* create() { return (new st_data); } static inline void destroy(st_data*& sd) { delete sd; sd = reinterpret_cast(0); } std::list local_symbol_list_; std::list local_stringvar_list_; std::set reserved_symbol_table_; std::vector*> free_function_list_; }; control_block() : ref_count(1), data_(st_data::create()) {} control_block(st_data* data) : ref_count(1), data_(data) {} ~control_block() { if (data_ && (0 == ref_count)) { st_data::destroy(data_); } } static inline control_block* create() { return (new control_block); } template static inline void destroy(control_block*& cntrl_blck, SymTab* sym_tab) { if (cntrl_blck) { if ( (0 != cntrl_blck->ref_count) && (0 == --cntrl_blck->ref_count) ) { if (sym_tab) sym_tab->clear(); delete cntrl_blck; } cntrl_blck = 0; } } std::size_t ref_count; st_data* data_; }; public: symbol_table() : control_block_(control_block::create()) { clear(); } ~symbol_table() { control_block::destroy(control_block_,this); } symbol_table(const symbol_table& st) { control_block_ = st.control_block_; control_block_->ref_count++; } inline symbol_table& operator=(const symbol_table& st) { if (this != &st) { control_block::destroy(control_block_,reinterpret_cast*>(0)); control_block_ = st.control_block_; control_block_->ref_count++; } return (*this); } inline bool operator==(const symbol_table& st) { return (this == &st) || (control_block_ == st.control_block_); } inline void clear_variables(const bool delete_node = true) { local_data().variable_store.clear(delete_node); } inline void clear_functions() { local_data().function_store.clear(); } inline void clear_strings() { #ifndef exprtk_disable_string_capabilities local_data().stringvar_store.clear(); #endif } inline void clear_vectors() { local_data().vector_store.clear(); } inline void clear_local_constants() { local_data().local_symbol_list_.clear(); } inline void clear() { if (!valid()) return; clear_variables (); clear_functions (); clear_strings (); clear_vectors (); clear_local_constants(); } inline std::size_t variable_count() const { if (valid()) return local_data().variable_store.size; else return 0; } #ifndef exprtk_disable_string_capabilities inline std::size_t stringvar_count() const { if (valid()) return local_data().stringvar_store.size; else return 0; } #endif inline std::size_t function_count() const { if (valid()) return local_data().function_store.size; else return 0; } inline std::size_t vector_count() const { if (valid()) return local_data().vector_store.size; else return 0; } inline variable_ptr get_variable(const std::string& variable_name) const { if (!valid()) return reinterpret_cast(0); else if (!valid_symbol(variable_name)) return reinterpret_cast(0); else return local_data().variable_store.get(variable_name); } inline variable_ptr get_variable(const T& var_ref) const { if (!valid()) return reinterpret_cast(0); else return local_data().variable_store.get_from_varptr( reinterpret_cast(&var_ref)); } #ifndef exprtk_disable_string_capabilities inline stringvar_ptr get_stringvar(const std::string& string_name) const { if (!valid()) return reinterpret_cast(0); else if (!valid_symbol(string_name)) return reinterpret_cast(0); else return local_data().stringvar_store.get(string_name); } #endif inline function_ptr get_function(const std::string& function_name) const { if (!valid()) return reinterpret_cast(0); else if (!valid_symbol(function_name)) return reinterpret_cast(0); else return local_data().function_store.get(function_name); } inline vararg_function_ptr get_vararg_function(const std::string& vararg_function_name) const { if (!valid()) return reinterpret_cast(0); else if (!valid_symbol(vararg_function_name)) return reinterpret_cast(0); else return local_data().vararg_function_store.get(vararg_function_name); } inline generic_function_ptr get_generic_function(const std::string& function_name) const { if (!valid()) return reinterpret_cast(0); else if (!valid_symbol(function_name)) return reinterpret_cast(0); else return local_data().generic_function_store.get(function_name); } inline generic_function_ptr get_string_function(const std::string& function_name) const { if (!valid()) return reinterpret_cast(0); else if (!valid_symbol(function_name)) return reinterpret_cast(0); else return local_data().string_function_store.get(function_name); } typedef vector_holder_t* vector_holder_ptr; inline vector_holder_ptr get_vector(const std::string& vector_name) const { if (!valid()) return reinterpret_cast(0); else if (!valid_symbol(vector_name)) return reinterpret_cast(0); else return local_data().vector_store.get(vector_name); } inline T& variable_ref(const std::string& symbol_name) { static T null_var = T(0); if (!valid()) return null_var; else if (!valid_symbol(symbol_name)) return null_var; else return local_data().variable_store.type_ref(symbol_name); } #ifndef exprtk_disable_string_capabilities inline std::string& stringvar_ref(const std::string& symbol_name) { static std::string null_stringvar; if (!valid()) return null_stringvar; else if (!valid_symbol(symbol_name)) return null_stringvar; else return local_data().stringvar_store.type_ref(symbol_name); } #endif inline bool is_constant_node(const std::string& symbol_name) const { if (!valid()) return false; else if (!valid_symbol(symbol_name)) return false; else return local_data().variable_store.is_constant(symbol_name); } #ifndef exprtk_disable_string_capabilities inline bool is_constant_string(const std::string& symbol_name) const { if (!valid()) return false; else if (!valid_symbol(symbol_name)) return false; else if (!local_data().stringvar_store.symbol_exists(symbol_name)) return false; else return local_data().stringvar_store.is_constant(symbol_name); } #endif inline bool create_variable(const std::string& variable_name, const T& value = T(0)) { if (!valid()) return false; else if (!valid_symbol(variable_name)) return false; else if (symbol_exists(variable_name)) return false; local_data().local_symbol_list_.push_back(value); T& t = local_data().local_symbol_list_.back(); return add_variable(variable_name,t); } #ifndef exprtk_disable_string_capabilities inline bool create_stringvar(const std::string& stringvar_name, const std::string& value = std::string("")) { if (!valid()) return false; else if (!valid_symbol(stringvar_name)) return false; else if (symbol_exists(stringvar_name)) return false; local_data().local_stringvar_list_.push_back(value); std::string& s = local_data().local_stringvar_list_.back(); return add_stringvar(stringvar_name,s); } #endif inline bool add_variable(const std::string& variable_name, T& t, const bool is_constant = false) { if (!valid()) return false; else if (!valid_symbol(variable_name)) return false; else if (symbol_exists(variable_name)) return false; else return local_data().variable_store.add(variable_name,t,is_constant); } inline bool add_constant(const std::string& constant_name, const T& value) { if (!valid()) return false; else if (!valid_symbol(constant_name)) return false; else if (symbol_exists(constant_name)) return false; local_data().local_symbol_list_.push_back(value); T& t = local_data().local_symbol_list_.back(); return add_variable(constant_name,t,true); } #ifndef exprtk_disable_string_capabilities inline bool add_stringvar(const std::string& stringvar_name, std::string& s, const bool is_constant = false) { if (!valid()) return false; else if (!valid_symbol(stringvar_name)) return false; else if (symbol_exists(stringvar_name)) return false; else return local_data().stringvar_store.add(stringvar_name,s,is_constant); } #endif inline bool add_function(const std::string& function_name, function_t& function) { if (!valid()) return false; else if (!valid_symbol(function_name)) return false; else if (symbol_exists(function_name)) return false; else return local_data().function_store.add(function_name,function); } inline bool add_function(const std::string& vararg_function_name, vararg_function_t& vararg_function) { if (!valid()) return false; else if (!valid_symbol(vararg_function_name)) return false; else if (symbol_exists(vararg_function_name)) return false; else return local_data().vararg_function_store.add(vararg_function_name,vararg_function); } inline bool add_function(const std::string& function_name, generic_function_t& function) { if (!valid()) return false; else if (!valid_symbol(function_name)) return false; else if (symbol_exists(function_name)) return false; else if (std::string::npos != function.parameter_sequence.find_first_not_of("STVZ*?|")) return false; else if (generic_function_t::e_rtrn_scalar == function.rtrn_type) return local_data().generic_function_store.add(function_name,function); else if (generic_function_t::e_rtrn_string == function.rtrn_type) return local_data().string_function_store.add(function_name, function); else return false; } #define exprtk_define_freefunction(NN) \ inline bool add_function(const std::string& function_name, ff##NN##_functor function) \ { \ if (!valid()) \ return false; \ else if (!valid_symbol(function_name)) \ return false; \ else if (symbol_exists(function_name)) \ return false; \ \ exprtk::ifunction* ifunc = new freefunc##NN(function); \ \ local_data().free_function_list_.push_back(ifunc); \ \ return add_function(function_name,(*local_data().free_function_list_.back())); \ } \ exprtk_define_freefunction(00) exprtk_define_freefunction(01) exprtk_define_freefunction(02) exprtk_define_freefunction(03) exprtk_define_freefunction(04) exprtk_define_freefunction(05) exprtk_define_freefunction(06) exprtk_define_freefunction(07) exprtk_define_freefunction(08) exprtk_define_freefunction(09) exprtk_define_freefunction(10) exprtk_define_freefunction(11) exprtk_define_freefunction(12) exprtk_define_freefunction(13) exprtk_define_freefunction(14) exprtk_define_freefunction(15) #undef exprtk_define_freefunction inline bool add_reserved_function(const std::string& function_name, function_t& function) { if (!valid()) return false; else if (!valid_symbol(function_name,false)) return false; else if (symbol_exists(function_name,false)) return false; else return local_data().function_store.add(function_name,function); } inline bool add_reserved_function(const std::string& vararg_function_name, vararg_function_t& vararg_function) { if (!valid()) return false; else if (!valid_symbol(vararg_function_name,false)) return false; else if (symbol_exists(vararg_function_name,false)) return false; else return local_data().vararg_function_store.add(vararg_function_name,vararg_function); } inline bool add_reserved_function(const std::string& function_name, generic_function_t& function) { if (!valid()) return false; else if (!valid_symbol(function_name,false)) return false; else if (symbol_exists(function_name,false)) return false; else if (std::string::npos != function.parameter_sequence.find_first_not_of("STV*?|")) return false; else if (generic_function_t::e_rtrn_scalar == function.rtrn_type) return local_data().generic_function_store.add(function_name,function); else if (generic_function_t::e_rtrn_string == function.rtrn_type) return local_data().string_function_store.add(function_name, function); else return false; } template inline bool add_vector(const std::string& vector_name, T (&v)[N]) { if (!valid()) return false; else if (!valid_symbol(vector_name)) return false; else if (symbol_exists(vector_name)) return false; else return local_data().vector_store.add(vector_name,v); } inline bool add_vector(const std::string& vector_name, T* v, const std::size_t& v_size) { if (!valid()) return false; else if (!valid_symbol(vector_name)) return false; else if (symbol_exists(vector_name)) return false; else if (0 == v_size) return false; else return local_data().vector_store.add(vector_name,v,v_size); } template inline bool add_vector(const std::string& vector_name, std::vector& v) { if (!valid()) return false; else if (!valid_symbol(vector_name)) return false; else if (symbol_exists(vector_name)) return false; else if (0 == v.size()) return false; else return local_data().vector_store.add(vector_name,v); } inline bool add_vector(const std::string& vector_name, exprtk::vector_view& v) { if (!valid()) return false; else if (!valid_symbol(vector_name)) return false; else if (symbol_exists(vector_name)) return false; else if (0 == v.size()) return false; else return local_data().vector_store.add(vector_name,v); } inline bool remove_variable(const std::string& variable_name, const bool delete_node = true) { if (!valid()) return false; else return local_data().variable_store.remove(variable_name, delete_node); } #ifndef exprtk_disable_string_capabilities inline bool remove_stringvar(const std::string& string_name) { if (!valid()) return false; else return local_data().stringvar_store.remove(string_name); } #endif inline bool remove_function(const std::string& function_name) { if (!valid()) return false; else return local_data().function_store.remove(function_name); } inline bool remove_vararg_function(const std::string& vararg_function_name) { if (!valid()) return false; else return local_data().vararg_function_store.remove(vararg_function_name); } inline bool remove_vector(const std::string& vector_name) { if (!valid()) return false; else return local_data().vector_store.remove(vector_name); } inline bool add_constants() { return add_pi () && add_epsilon () && add_infinity() ; } inline bool add_pi() { const typename details::numeric::details::number_type::type num_type; static const T local_pi = details::numeric::details::const_pi_impl(num_type); return add_constant("pi",local_pi); } inline bool add_epsilon() { static const T local_epsilon = details::numeric::details::epsilon_type::value(); return add_constant("epsilon",local_epsilon); } inline bool add_infinity() { static const T local_infinity = std::numeric_limits::infinity(); return add_constant("inf",local_infinity); } template inline bool add_package(Package& package) { return package.register_package(*this); } template class Sequence> inline std::size_t get_variable_list(Sequence,Allocator>& vlist) const { if (!valid()) return 0; else return local_data().variable_store.get_list(vlist); } template class Sequence> inline std::size_t get_variable_list(Sequence& vlist) const { if (!valid()) return 0; else return local_data().variable_store.get_list(vlist); } #ifndef exprtk_disable_string_capabilities template class Sequence> inline std::size_t get_stringvar_list(Sequence,Allocator>& svlist) const { if (!valid()) return 0; else return local_data().stringvar_store.get_list(svlist); } template class Sequence> inline std::size_t get_stringvar_list(Sequence& svlist) const { if (!valid()) return 0; else return local_data().stringvar_store.get_list(svlist); } #endif template class Sequence> inline std::size_t get_vector_list(Sequence& vlist) const { if (!valid()) return 0; else return local_data().vector_store.get_list(vlist); } inline bool symbol_exists(const std::string& symbol_name, const bool check_reserved_symb = true) const { /* Function will return true if symbol_name exists as either a reserved symbol, variable, stringvar or function name in any of the type stores. */ if (!valid()) return false; else if (local_data().variable_store.symbol_exists(symbol_name)) return true; #ifndef exprtk_disable_string_capabilities else if (local_data().stringvar_store.symbol_exists(symbol_name)) return true; #endif else if (local_data().function_store.symbol_exists(symbol_name)) return true; else if (check_reserved_symb && local_data().is_reserved_symbol(symbol_name)) return true; else return false; } inline bool is_variable(const std::string& variable_name) const { if (!valid()) return false; else return local_data().variable_store.symbol_exists(variable_name); } #ifndef exprtk_disable_string_capabilities inline bool is_stringvar(const std::string& stringvar_name) const { if (!valid()) return false; else return local_data().stringvar_store.symbol_exists(stringvar_name); } inline bool is_conststr_stringvar(const std::string& symbol_name) const { if (!valid()) return false; else if (!valid_symbol(symbol_name)) return false; else if (!local_data().stringvar_store.symbol_exists(symbol_name)) return false; return ( local_data().stringvar_store.symbol_exists(symbol_name) || local_data().stringvar_store.is_constant (symbol_name) ); } #endif inline bool is_function(const std::string& function_name) const { if (!valid()) return false; else return local_data().function_store.symbol_exists(function_name); } inline bool is_vararg_function(const std::string& vararg_function_name) const { if (!valid()) return false; else return local_data().vararg_function_store.symbol_exists(vararg_function_name); } inline bool is_vector(const std::string& vector_name) const { if (!valid()) return false; else return local_data().vector_store.symbol_exists(vector_name); } inline std::string get_variable_name(const expression_ptr& ptr) const { return local_data().variable_store.entity_name(ptr); } inline std::string get_vector_name(const vector_holder_ptr& ptr) const { return local_data().vector_store.entity_name(ptr); } #ifndef exprtk_disable_string_capabilities inline std::string get_stringvar_name(const expression_ptr& ptr) const { return local_data().stringvar_store.entity_name(ptr); } inline std::string get_conststr_stringvar_name(const expression_ptr& ptr) const { return local_data().stringvar_store.entity_name(ptr); } #endif inline bool valid() const { // Symbol table sanity check. return control_block_ && control_block_->data_; } inline void load_from(const symbol_table& st) { { std::vector name_list; st.local_data().function_store.get_list(name_list); if (!name_list.empty()) { for (std::size_t i = 0; i < name_list.size(); ++i) { exprtk::ifunction& ifunc = *st.get_function(name_list[i]); add_function(name_list[i],ifunc); } } } { std::vector name_list; st.local_data().vararg_function_store.get_list(name_list); if (!name_list.empty()) { for (std::size_t i = 0; i < name_list.size(); ++i) { exprtk::ivararg_function& ivafunc = *st.get_vararg_function(name_list[i]); add_function(name_list[i],ivafunc); } } } { std::vector name_list; st.local_data().generic_function_store.get_list(name_list); if (!name_list.empty()) { for (std::size_t i = 0; i < name_list.size(); ++i) { exprtk::igeneric_function& ifunc = *st.get_generic_function(name_list[i]); add_function(name_list[i],ifunc); } } } { std::vector name_list; st.local_data().string_function_store.get_list(name_list); if (!name_list.empty()) { for (std::size_t i = 0; i < name_list.size(); ++i) { exprtk::igeneric_function& ifunc = *st.get_string_function(name_list[i]); add_function(name_list[i],ifunc); } } } } private: inline bool valid_symbol(const std::string& symbol, const bool check_reserved_symb = true) const { if (symbol.empty()) return false; else if (!details::is_letter(symbol[0])) return false; else if (symbol.size() > 1) { for (std::size_t i = 1; i < symbol.size(); ++i) { if ( !details::is_letter_or_digit(symbol[i]) && ('_' != symbol[i]) ) { if (('.' == symbol[i]) && (i < (symbol.size() - 1))) continue; else return false; } } } return (check_reserved_symb) ? (!local_data().is_reserved_symbol(symbol)) : true; } inline bool valid_function(const std::string& symbol) const { if (symbol.empty()) return false; else if (!details::is_letter(symbol[0])) return false; else if (symbol.size() > 1) { for (std::size_t i = 1; i < symbol.size(); ++i) { if ( !details::is_letter_or_digit(symbol[i]) && ('_' != symbol[i]) ) { if (('.' == symbol[i]) && (i < (symbol.size() - 1))) continue; else return false; } } } return true; } typedef typename control_block::st_data local_data_t; inline local_data_t& local_data() { return *(control_block_->data_); } inline const local_data_t& local_data() const { return *(control_block_->data_); } control_block* control_block_; friend class parser; }; template class function_compositor; template class expression { private: typedef details::expression_node* expression_ptr; typedef details::vector_holder* vector_holder_ptr; typedef std::vector > symtab_list_t; struct control_block { enum data_type { e_unknown , e_expr , e_vecholder, e_data , e_vecdata , e_string }; struct data_pack { data_pack() : pointer(0), type(e_unknown), size(0) {} data_pack(void* ptr, data_type dt, std::size_t sz = 0) : pointer(ptr), type(dt), size(sz) {} void* pointer; data_type type; std::size_t size; }; typedef std::vector local_data_list_t; typedef results_context results_context_t; control_block() : ref_count(0), expr (0), results (0), retinv_null(false), return_invoked(&retinv_null) {} control_block(expression_ptr e) : ref_count(1), expr (e), results (0), retinv_null(false), return_invoked(&retinv_null) {} ~control_block() { if (expr && details::branch_deletable(expr)) { destroy_node(expr); } if (!local_data_list.empty()) { for (std::size_t i = 0; i < local_data_list.size(); ++i) { switch (local_data_list[i].type) { case e_expr : delete reinterpret_cast(local_data_list[i].pointer); break; case e_vecholder : delete reinterpret_cast(local_data_list[i].pointer); break; case e_data : delete (T*)(local_data_list[i].pointer); break; case e_vecdata : delete [] (T*)(local_data_list[i].pointer); break; case e_string : delete (std::string*)(local_data_list[i].pointer); break; default : break; } } } if (results) { delete results; } } static inline control_block* create(expression_ptr e) { return new control_block(e); } static inline void destroy(control_block*& cntrl_blck) { if (cntrl_blck) { if ( (0 != cntrl_blck->ref_count) && (0 == --cntrl_blck->ref_count) ) { delete cntrl_blck; } cntrl_blck = 0; } } std::size_t ref_count; expression_ptr expr; local_data_list_t local_data_list; results_context_t* results; bool retinv_null; bool* return_invoked; friend class function_compositor; }; public: expression() : control_block_(0) { set_expression(new details::null_node()); } expression(const expression& e) : control_block_ (e.control_block_ ), symbol_table_list_(e.symbol_table_list_) { control_block_->ref_count++; } inline expression& operator=(const expression& e) { if (this != &e) { if (control_block_) { if ( (0 != control_block_->ref_count) && (0 == --control_block_->ref_count) ) { delete control_block_; } control_block_ = 0; } control_block_ = e.control_block_; control_block_->ref_count++; symbol_table_list_ = e.symbol_table_list_; } return *this; } inline bool operator==(const expression& e) { return (this == &e); } inline bool operator!() const { return ( (0 == control_block_ ) || (0 == control_block_->expr) ); } inline expression& release() { control_block::destroy(control_block_); return (*this); } ~expression() { control_block::destroy(control_block_); } inline T value() const { return control_block_->expr->value(); } inline T operator() () const { return value(); } inline operator T() const { return value(); } inline operator bool() const { return details::is_true(value()); } inline void register_symbol_table(symbol_table& st) { symbol_table_list_.push_back(st); } inline const symbol_table& get_symbol_table(const std::size_t& index = 0) const { return symbol_table_list_[index]; } inline symbol_table& get_symbol_table(const std::size_t& index = 0) { return symbol_table_list_[index]; } typedef results_context results_context_t; inline const results_context_t& results() const { if (control_block_->results) return (*control_block_->results); else { static const results_context_t null_results; return null_results; } } inline bool return_invoked() const { return (*control_block_->return_invoked); } private: inline symtab_list_t get_symbol_table_list() const { return symbol_table_list_; } inline void set_expression(const expression_ptr expr) { if (expr) { if (control_block_) { if (0 == --control_block_->ref_count) { delete control_block_; } } control_block_ = control_block::create(expr); } } inline void register_local_var(expression_ptr expr) { if (expr) { if (control_block_) { control_block_-> local_data_list.push_back( typename expression::control_block:: data_pack(reinterpret_cast(expr), control_block::e_expr)); } } } inline void register_local_var(vector_holder_ptr vec_holder) { if (vec_holder) { if (control_block_) { control_block_-> local_data_list.push_back( typename expression::control_block:: data_pack(reinterpret_cast(vec_holder), control_block::e_vecholder)); } } } inline void register_local_data(void* data, const std::size_t& size = 0, const std::size_t data_mode = 0) { if (data) { if (control_block_) { typename control_block::data_type dt = control_block::e_data; switch (data_mode) { case 0 : dt = control_block::e_data; break; case 1 : dt = control_block::e_vecdata; break; case 2 : dt = control_block::e_string; break; } control_block_-> local_data_list.push_back( typename expression::control_block:: data_pack(reinterpret_cast(data),dt,size)); } } } inline const typename control_block::local_data_list_t& local_data_list() { if (control_block_) { return control_block_->local_data_list; } else { static typename control_block::local_data_list_t null_local_data_list; return null_local_data_list; } } inline void register_return_results(results_context_t* rc) { if (control_block_ && rc) { control_block_->results = rc; } } inline void set_retinvk(bool* retinvk_ptr) { if (control_block_) { control_block_->return_invoked = retinvk_ptr; } } control_block* control_block_; symtab_list_t symbol_table_list_; friend class parser; friend class expression_helper; friend class function_compositor; }; template class expression_helper { public: static inline bool is_constant(const expression& expr) { return details::is_constant_node(expr.control_block_->expr); } static inline bool is_variable(const expression& expr) { return details::is_variable_node(expr.control_block_->expr); } static inline bool is_unary(const expression& expr) { return details::is_unary_node(expr.control_block_->expr); } static inline bool is_binary(const expression& expr) { return details::is_binary_node(expr.control_block_->expr); } static inline bool is_function(const expression& expr) { return details::is_function(expr.control_block_->expr); } static inline bool is_null(const expression& expr) { return details::is_null_node(expr.control_block_->expr); } }; template inline bool is_valid(const expression& expr) { return !expression_helper::is_null(expr); } namespace parser_error { enum error_mode { e_unknown = 0, e_syntax = 1, e_token = 2, e_numeric = 4, e_symtab = 5, e_lexer = 6, e_helper = 7 }; struct type { type() : mode(parser_error::e_unknown), line_no (0), column_no(0) {} lexer::token token; error_mode mode; std::string diagnostic; std::string src_location; std::string error_line; std::size_t line_no; std::size_t column_no; }; inline type make_error(error_mode mode, const std::string& diagnostic = "", const std::string& src_location = "") { type t; t.mode = mode; t.token.type = lexer::token::e_error; t.diagnostic = diagnostic; t.src_location = src_location; exprtk_debug(("%s\n",diagnostic .c_str())); return t; } inline type make_error(error_mode mode, const lexer::token& tk, const std::string& diagnostic = "", const std::string& src_location = "") { type t; t.mode = mode; t.token = tk; t.diagnostic = diagnostic; t.src_location = src_location; exprtk_debug(("%s\n",diagnostic .c_str())); return t; } inline std::string to_str(error_mode mode) { switch (mode) { case e_unknown : return std::string("Unknown Error"); case e_syntax : return std::string("Syntax Error" ); case e_token : return std::string("Token Error" ); case e_numeric : return std::string("Numeric Error"); case e_symtab : return std::string("Symbol Error" ); case e_lexer : return std::string("Lexer Error" ); case e_helper : return std::string("Helper Error" ); default : return std::string("Unknown Error"); } } inline bool update_error(type& error, const std::string& expression) { if ( expression.empty() || (error.token.position > expression.size()) || (std::numeric_limits::max() == error.token.position) ) { return false; } std::size_t error_line_start = 0; for (std::size_t i = error.token.position; i > 0; --i) { const details::char_t c = expression[i]; if (('\n' == c) || ('\r' == c)) { error_line_start = i + 1; break; } } std::size_t next_nl_position = std::min(expression.size(), expression.find_first_of('\n',error.token.position + 1)); error.column_no = error.token.position - error_line_start; error.error_line = expression.substr(error_line_start, next_nl_position - error_line_start); error.line_no = 0; for (std::size_t i = 0; i < next_nl_position; ++i) { if ('\n' == expression[i]) ++error.line_no; } return true; } inline void dump_error(const type& error) { printf("Position: %02d Type: [%s] Msg: %s\n", static_cast(error.token.position), exprtk::parser_error::to_str(error.mode).c_str(), error.diagnostic.c_str()); } } namespace details { template inline void disable_type_checking(Parser& p) { p.state_.type_check_enabled = false; } } template class parser : public lexer::parser_helper { private: enum precedence_level { e_level00, e_level01, e_level02, e_level03, e_level04, e_level05, e_level06, e_level07, e_level08, e_level09, e_level10, e_level11, e_level12, e_level13, e_level14 }; typedef const T& cref_t; typedef const T const_t; typedef ifunction F; typedef ivararg_function VAF; typedef igeneric_function GF; typedef ifunction ifunction_t; typedef ivararg_function ivararg_function_t; typedef igeneric_function igeneric_function_t; typedef details::expression_node expression_node_t; typedef details::literal_node literal_node_t; typedef details::unary_node unary_node_t; typedef details::binary_node binary_node_t; typedef details::trinary_node trinary_node_t; typedef details::quaternary_node quaternary_node_t; typedef details::conditional_node conditional_node_t; typedef details::cons_conditional_node cons_conditional_node_t; typedef details::while_loop_node while_loop_node_t; typedef details::repeat_until_loop_node repeat_until_loop_node_t; typedef details::for_loop_node for_loop_node_t; #ifndef exprtk_disable_break_continue typedef details::while_loop_bc_node while_loop_bc_node_t; typedef details::repeat_until_loop_bc_node repeat_until_loop_bc_node_t; typedef details::for_loop_bc_node for_loop_bc_node_t; #endif typedef details::switch_node switch_node_t; typedef details::variable_node variable_node_t; typedef details::vector_elem_node vector_elem_node_t; typedef details::rebasevector_elem_node rebasevector_elem_node_t; typedef details::rebasevector_celem_node rebasevector_celem_node_t; typedef details::vector_node vector_node_t; typedef details::range_pack range_t; #ifndef exprtk_disable_string_capabilities typedef details::stringvar_node stringvar_node_t; typedef details::string_literal_node string_literal_node_t; typedef details::string_range_node string_range_node_t; typedef details::const_string_range_node const_string_range_node_t; typedef details::generic_string_range_node generic_string_range_node_t; typedef details::string_concat_node string_concat_node_t; typedef details::assignment_string_node assignment_string_node_t; typedef details::assignment_string_range_node assignment_string_range_node_t; typedef details::conditional_string_node conditional_string_node_t; typedef details::cons_conditional_str_node cons_conditional_str_node_t; #endif typedef details::assignment_node assignment_node_t; typedef details::assignment_vec_elem_node assignment_vec_elem_node_t; typedef details::assignment_rebasevec_elem_node assignment_rebasevec_elem_node_t; typedef details::assignment_rebasevec_celem_node assignment_rebasevec_celem_node_t; typedef details::assignment_vec_node assignment_vec_node_t; typedef details::assignment_vecvec_node assignment_vecvec_node_t; typedef details::scand_node scand_node_t; typedef details::scor_node scor_node_t; typedef lexer::token token_t; typedef expression_node_t* expression_node_ptr; typedef expression expression_t; typedef symbol_table symbol_table_t; typedef typename expression::symtab_list_t symbol_table_list_t; typedef details::vector_holder* vector_holder_ptr; typedef typename details::functor_t functor_t; typedef typename functor_t::qfunc_t quaternary_functor_t; typedef typename functor_t::tfunc_t trinary_functor_t; typedef typename functor_t::bfunc_t binary_functor_t; typedef typename functor_t::ufunc_t unary_functor_t; typedef details::operator_type operator_t; typedef std::map unary_op_map_t; typedef std::map binary_op_map_t; typedef std::map trinary_op_map_t; typedef std::map > sf3_map_t; typedef std::map > sf4_map_t; typedef std::map inv_binary_op_map_t; typedef std::multimap base_ops_map_t; typedef std::set disabled_func_set_t; typedef details::T0oT1_define vov_t; typedef details::T0oT1_define cov_t; typedef details::T0oT1_define voc_t; typedef details::T0oT1oT2_define vovov_t; typedef details::T0oT1oT2_define vovoc_t; typedef details::T0oT1oT2_define vocov_t; typedef details::T0oT1oT2_define covov_t; typedef details::T0oT1oT2_define covoc_t; typedef details::T0oT1oT2_define cocov_t; typedef details::T0oT1oT2_define vococ_t; typedef details::T0oT1oT2oT3_define vovovov_t; typedef details::T0oT1oT2oT3_define vovovoc_t; typedef details::T0oT1oT2oT3_define vovocov_t; typedef details::T0oT1oT2oT3_define vocovov_t; typedef details::T0oT1oT2oT3_define covovov_t; typedef details::T0oT1oT2oT3_define covocov_t; typedef details::T0oT1oT2oT3_define vocovoc_t; typedef details::T0oT1oT2oT3_define covovoc_t; typedef details::T0oT1oT2oT3_define vococov_t; typedef results_context results_context_t; typedef parser_helper prsrhlpr_t; struct scope_element { enum element_type { e_none , e_variable, e_vector , e_vecelem , e_string }; typedef details::vector_holder vector_holder_t; typedef variable_node_t* variable_node_ptr; typedef vector_holder_t* vector_holder_ptr; typedef expression_node_t* expression_node_ptr; #ifndef exprtk_disable_string_capabilities typedef stringvar_node_t* stringvar_node_ptr; #endif scope_element() : name("???"), size (std::numeric_limits::max()), index(std::numeric_limits::max()), depth(std::numeric_limits::max()), ref_count(0), ip_index (0), type (e_none), active(false), data (0), var_node(0), vec_node(0) #ifndef exprtk_disable_string_capabilities ,str_node(0) #endif {} bool operator < (const scope_element& se) const { if (ip_index < se.ip_index) return true; else if (ip_index > se.ip_index) return false; else if (depth < se.depth) return true; else if (depth > se.depth) return false; else if (index < se.index) return true; else if (index > se.index) return false; else return (name < se.name); } void clear() { name = "???"; size = std::numeric_limits::max(); index = std::numeric_limits::max(); depth = std::numeric_limits::max(); type = e_none; active = false; ref_count = 0; ip_index = 0; data = 0; var_node = 0; vec_node = 0; #ifndef exprtk_disable_string_capabilities str_node = 0; #endif } std::string name; std::size_t size; std::size_t index; std::size_t depth; std::size_t ref_count; std::size_t ip_index; element_type type; bool active; void* data; expression_node_ptr var_node; vector_holder_ptr vec_node; #ifndef exprtk_disable_string_capabilities stringvar_node_ptr str_node; #endif }; class scope_element_manager { public: typedef expression_node_t* expression_node_ptr; typedef variable_node_t* variable_node_ptr; typedef parser parser_t; scope_element_manager(parser& p) : parser_(p), input_param_cnt_(0) {} inline std::size_t size() const { return element_.size(); } inline bool empty() const { return element_.empty(); } inline scope_element& get_element(const std::size_t& index) { if (index < element_.size()) return element_[index]; else return null_element_; } inline scope_element& get_element(const std::string& var_name, const std::size_t index = std::numeric_limits::max()) { const std::size_t current_depth = parser_.state_.scope_depth; for (std::size_t i = 0; i < element_.size(); ++i) { scope_element& se = element_[i]; if (se.depth > current_depth) continue; else if ( details::imatch(se.name, var_name) && (se.index == index) ) return se; } return null_element_; } inline scope_element& get_active_element(const std::string& var_name, const std::size_t index = std::numeric_limits::max()) { const std::size_t current_depth = parser_.state_.scope_depth; for (std::size_t i = 0; i < element_.size(); ++i) { scope_element& se = element_[i]; if (se.depth > current_depth) continue; else if ( details::imatch(se.name, var_name) && (se.index == index) && (se.active) ) return se; } return null_element_; } inline bool add_element(const scope_element& se) { for (std::size_t i = 0; i < element_.size(); ++i) { scope_element& cse = element_[i]; if ( details::imatch(cse.name, se.name) && (cse.depth <= se.depth) && (cse.index == se.index) && (cse.size == se.size ) && (cse.type == se.type ) && (cse.active) ) return false; } element_.push_back(se); std::sort(element_.begin(),element_.end()); return true; } inline void deactivate(const std::size_t& scope_depth) { exprtk_debug(("deactivate() - Scope depth: %d\n", static_cast(parser_.state_.scope_depth))); for (std::size_t i = 0; i < element_.size(); ++i) { scope_element& se = element_[i]; if (se.active && (se.depth >= scope_depth)) { exprtk_debug(("deactivate() - element[%02d] '%s'\n", static_cast(i), se.name.c_str())); se.active = false; } } } inline void free_element(scope_element& se) { switch (se.type) { case scope_element::e_variable : if (se.data ) delete (T*) se.data; if (se.var_node) delete se.var_node; break; case scope_element::e_vector : if (se.data ) delete[] (T*) se.data; if (se.vec_node) delete se.vec_node; break; case scope_element::e_vecelem : if (se.var_node) delete se.var_node; break; #ifndef exprtk_disable_string_capabilities case scope_element::e_string : if (se.data ) delete (std::string*) se.data; if (se.str_node) delete se.str_node; break; #endif default : return; } se.clear(); } inline void cleanup() { for (std::size_t i = 0; i < element_.size(); ++i) { free_element(element_[i]); } element_.clear(); input_param_cnt_ = 0; } inline std::size_t next_ip_index() { return ++input_param_cnt_; } inline expression_node_ptr get_variable(const T& v) { for (std::size_t i = 0; i < element_.size(); ++i) { scope_element& se = element_[i]; if ( se.active && se.var_node && details::is_variable_node(se.var_node) ) { variable_node_ptr vn = reinterpret_cast(se.var_node); if (&(vn->ref()) == (&v)) { return se.var_node; } } } return expression_node_ptr(0); } private: scope_element_manager& operator=(const scope_element_manager&); parser_t& parser_; std::vector element_; scope_element null_element_; std::size_t input_param_cnt_; }; class scope_handler { public: typedef parser parser_t; scope_handler(parser& p) : parser_(p) { parser_.state_.scope_depth++; #ifdef exprtk_enable_debugging std::string depth(2 * parser_.state_.scope_depth,'-'); exprtk_debug(("%s> Scope Depth: %02d\n", depth.c_str(), static_cast(parser_.state_.scope_depth))); #endif } ~scope_handler() { parser_.sem_.deactivate(parser_.state_.scope_depth); parser_.state_.scope_depth--; #ifdef exprtk_enable_debugging std::string depth(2 * parser_.state_.scope_depth,'-'); exprtk_debug(("<%s Scope Depth: %02d\n", depth.c_str(), static_cast(parser_.state_.scope_depth))); #endif } private: scope_handler& operator=(const scope_handler&); parser_t& parser_; }; struct symtab_store { symbol_table_list_t symtab_list_; typedef typename symbol_table_t::local_data_t local_data_t; typedef typename symbol_table_t::variable_ptr variable_ptr; typedef typename symbol_table_t::function_ptr function_ptr; #ifndef exprtk_disable_string_capabilities typedef typename symbol_table_t::stringvar_ptr stringvar_ptr; #endif typedef typename symbol_table_t::vector_holder_ptr vector_holder_ptr; typedef typename symbol_table_t::vararg_function_ptr vararg_function_ptr; typedef typename symbol_table_t::generic_function_ptr generic_function_ptr; inline bool empty() const { return symtab_list_.empty(); } inline void clear() { symtab_list_.clear(); } inline bool valid() const { if (!empty()) { for (std::size_t i = 0; i < symtab_list_.size(); ++i) { if (symtab_list_[i].valid()) return true; } } return false; } inline bool valid_symbol(const std::string& symbol) const { if (!symtab_list_.empty()) return symtab_list_[0].valid_symbol(symbol); else return false; } inline bool valid_function_name(const std::string& symbol) const { if (!symtab_list_.empty()) return symtab_list_[0].valid_function(symbol); else return false; } inline variable_ptr get_variable(const std::string& variable_name) const { if (!valid_symbol(variable_name)) return reinterpret_cast(0); variable_ptr result = reinterpret_cast(0); for (std::size_t i = 0; i < symtab_list_.size(); ++i) { if (!symtab_list_[i].valid()) continue; else result = local_data(i) .variable_store.get(variable_name); if (result) break; } return result; } inline variable_ptr get_variable(const T& var_ref) const { variable_ptr result = reinterpret_cast(0); for (std::size_t i = 0; i < symtab_list_.size(); ++i) { if (!symtab_list_[i].valid()) continue; else result = local_data(i).variable_store .get_from_varptr(reinterpret_cast(&var_ref)); if (result) break; } return result; } #ifndef exprtk_disable_string_capabilities inline stringvar_ptr get_stringvar(const std::string& string_name) const { if (!valid_symbol(string_name)) return reinterpret_cast(0); stringvar_ptr result = reinterpret_cast(0); for (std::size_t i = 0; i < symtab_list_.size(); ++i) { if (!symtab_list_[i].valid()) continue; else result = local_data(i) .stringvar_store.get(string_name); if (result) break; } return result; } #endif inline function_ptr get_function(const std::string& function_name) const { if (!valid_function_name(function_name)) return reinterpret_cast(0); function_ptr result = reinterpret_cast(0); for (std::size_t i = 0; i < symtab_list_.size(); ++i) { if (!symtab_list_[i].valid()) continue; else result = local_data(i) .function_store.get(function_name); if (result) break; } return result; } inline vararg_function_ptr get_vararg_function(const std::string& vararg_function_name) const { if (!valid_function_name(vararg_function_name)) return reinterpret_cast(0); vararg_function_ptr result = reinterpret_cast(0); for (std::size_t i = 0; i < symtab_list_.size(); ++i) { if (!symtab_list_[i].valid()) continue; else result = local_data(i) .vararg_function_store.get(vararg_function_name); if (result) break; } return result; } inline generic_function_ptr get_generic_function(const std::string& function_name) const { if (!valid_function_name(function_name)) return reinterpret_cast(0); generic_function_ptr result = reinterpret_cast(0); for (std::size_t i = 0; i < symtab_list_.size(); ++i) { if (!symtab_list_[i].valid()) continue; else result = local_data(i) .generic_function_store.get(function_name); if (result) break; } return result; } inline generic_function_ptr get_string_function(const std::string& function_name) const { if (!valid_function_name(function_name)) return reinterpret_cast(0); generic_function_ptr result = reinterpret_cast(0); for (std::size_t i = 0; i < symtab_list_.size(); ++i) { if (!symtab_list_[i].valid()) continue; else result = local_data(i).string_function_store.get(function_name); if (result) break; } return result; } inline vector_holder_ptr get_vector(const std::string& vector_name) const { if (!valid_symbol(vector_name)) return reinterpret_cast(0); vector_holder_ptr result = reinterpret_cast(0); for (std::size_t i = 0; i < symtab_list_.size(); ++i) { if (!symtab_list_[i].valid()) continue; else result = local_data(i).vector_store.get(vector_name); if (result) break; } return result; } inline bool is_constant_node(const std::string& symbol_name) const { if (!valid_symbol(symbol_name)) return false; for (std::size_t i = 0; i < symtab_list_.size(); ++i) { if (!symtab_list_[i].valid()) continue; else if (local_data(i).variable_store.is_constant(symbol_name)) return true; } return false; } #ifndef exprtk_disable_string_capabilities inline bool is_constant_string(const std::string& symbol_name) const { if (!valid_symbol(symbol_name)) return false; for (std::size_t i = 0; i < symtab_list_.size(); ++i) { if (!symtab_list_[i].valid()) continue; else if (!local_data(i).stringvar_store.symbol_exists(symbol_name)) continue; else if ( local_data(i).stringvar_store.is_constant(symbol_name)) return true; } return false; } #endif inline bool symbol_exists(const std::string& symbol) const { for (std::size_t i = 0; i < symtab_list_.size(); ++i) { if (!symtab_list_[i].valid()) continue; else if (symtab_list_[i].symbol_exists(symbol)) return true; } return false; } inline bool is_variable(const std::string& variable_name) const { for (std::size_t i = 0; i < symtab_list_.size(); ++i) { if (!symtab_list_[i].valid()) continue; else if ( symtab_list_[i].local_data().variable_store .symbol_exists(variable_name) ) return true; } return false; } #ifndef exprtk_disable_string_capabilities inline bool is_stringvar(const std::string& stringvar_name) const { for (std::size_t i = 0; i < symtab_list_.size(); ++i) { if (!symtab_list_[i].valid()) continue; else if ( symtab_list_[i].local_data().stringvar_store .symbol_exists(stringvar_name) ) return true; } return false; } inline bool is_conststr_stringvar(const std::string& symbol_name) const { for (std::size_t i = 0; i < symtab_list_.size(); ++i) { if (!symtab_list_[i].valid()) continue; else if ( symtab_list_[i].local_data().stringvar_store .symbol_exists(symbol_name) ) { return ( local_data(i).stringvar_store.symbol_exists(symbol_name) || local_data(i).stringvar_store.is_constant (symbol_name) ); } } return false; } #endif inline bool is_function(const std::string& function_name) const { for (std::size_t i = 0; i < symtab_list_.size(); ++i) { if (!symtab_list_[i].valid()) continue; else if ( local_data(i).vararg_function_store .symbol_exists(function_name) ) return true; } return false; } inline bool is_vararg_function(const std::string& vararg_function_name) const { for (std::size_t i = 0; i < symtab_list_.size(); ++i) { if (!symtab_list_[i].valid()) continue; else if ( local_data(i).vararg_function_store .symbol_exists(vararg_function_name) ) return true; } return false; } inline bool is_vector(const std::string& vector_name) const { for (std::size_t i = 0; i < symtab_list_.size(); ++i) { if (!symtab_list_[i].valid()) continue; else if ( local_data(i).vector_store .symbol_exists(vector_name) ) return true; } return false; } inline std::string get_variable_name(const expression_node_ptr& ptr) const { return local_data().variable_store.entity_name(ptr); } inline std::string get_vector_name(const vector_holder_ptr& ptr) const { return local_data().vector_store.entity_name(ptr); } #ifndef exprtk_disable_string_capabilities inline std::string get_stringvar_name(const expression_node_ptr& ptr) const { return local_data().stringvar_store.entity_name(ptr); } inline std::string get_conststr_stringvar_name(const expression_node_ptr& ptr) const { return local_data().stringvar_store.entity_name(ptr); } #endif inline local_data_t& local_data(const std::size_t& index = 0) { return symtab_list_[index].local_data(); } inline const local_data_t& local_data(const std::size_t& index = 0) const { return symtab_list_[index].local_data(); } inline symbol_table_t& get_symbol_table(const std::size_t& index = 0) { return symtab_list_[index]; } }; struct parser_state { parser_state() : type_check_enabled(true) { reset(); } void reset() { parsing_return_stmt = false; parsing_break_stmt = false; return_stmt_present = false; side_effect_present = false; scope_depth = 0; } #ifndef exprtk_enable_debugging void activate_side_effect(const std::string&) #else void activate_side_effect(const std::string& source) #endif { if (!side_effect_present) { side_effect_present = true; exprtk_debug(("activate_side_effect() - caller: %s\n",source.c_str())); } } bool parsing_return_stmt; bool parsing_break_stmt; bool return_stmt_present; bool side_effect_present; bool type_check_enabled; std::size_t scope_depth; }; public: struct unknown_symbol_resolver { enum usr_symbol_type { e_usr_variable_type = 0, e_usr_constant_type = 1 }; enum usr_mode { e_usrmode_default = 0, e_usrmode_extended = 1 }; usr_mode mode; unknown_symbol_resolver(const usr_mode m = e_usrmode_default) : mode(m) {} virtual ~unknown_symbol_resolver() {} virtual bool process(const std::string& /*unknown_symbol*/, usr_symbol_type& st, T& default_value, std::string& error_message) { if (e_usrmode_default != mode) return false; st = e_usr_variable_type; default_value = T(0); error_message.clear(); return true; } virtual bool process(const std::string& /* unknown_symbol */, symbol_table_t& /* symbol_table */, std::string& /* error_message */) { return false; } }; enum collect_type { e_ct_none = 0, e_ct_variables = 1, e_ct_functions = 2, e_ct_assignments = 4 }; enum symbol_type { e_st_unknown = 0, e_st_variable = 1, e_st_vector = 2, e_st_vecelem = 3, e_st_string = 4, e_st_function = 5, e_st_local_variable = 6, e_st_local_vector = 7, e_st_local_string = 8 }; class dependent_entity_collector { public: typedef std::pair symbol_t; typedef std::vector symbol_list_t; dependent_entity_collector(const std::size_t options = e_ct_none) : options_(options), collect_variables_ ((options_ & e_ct_variables ) == e_ct_variables ), collect_functions_ ((options_ & e_ct_functions ) == e_ct_functions ), collect_assignments_((options_ & e_ct_assignments) == e_ct_assignments), return_present_ (false), final_stmt_return_(false) {} template class Sequence> inline std::size_t symbols(Sequence& symbols_list) { if (!collect_variables_ && !collect_functions_) return 0; else if (symbol_name_list_.empty()) return 0; for (std::size_t i = 0; i < symbol_name_list_.size(); ++i) { details::case_normalise(symbol_name_list_[i].first); } std::sort(symbol_name_list_.begin(),symbol_name_list_.end()); std::unique_copy(symbol_name_list_.begin(), symbol_name_list_.end (), std::back_inserter(symbols_list)); return symbols_list.size(); } template class Sequence> inline std::size_t assignment_symbols(Sequence& assignment_list) { if (!collect_assignments_) return 0; else if (assignment_name_list_.empty()) return 0; for (std::size_t i = 0; i < assignment_name_list_.size(); ++i) { details::case_normalise(assignment_name_list_[i].first); } std::sort(assignment_name_list_.begin(),assignment_name_list_.end()); std::unique_copy(assignment_name_list_.begin(), assignment_name_list_.end (), std::back_inserter(assignment_list)); return assignment_list.size(); } void clear() { symbol_name_list_ .clear(); assignment_name_list_.clear(); retparam_list_ .clear(); return_present_ = false; final_stmt_return_ = false; } bool& collect_variables() { return collect_variables_; } bool& collect_functions() { return collect_functions_; } bool& collect_assignments() { return collect_assignments_; } bool return_present() const { return return_present_; } bool final_stmt_return() const { return final_stmt_return_; } typedef std::vector retparam_list_t; retparam_list_t return_param_type_list() const { return retparam_list_; } private: inline void add_symbol(const std::string& symbol, const symbol_type st) { switch (st) { case e_st_variable : case e_st_vector : case e_st_string : case e_st_local_variable : case e_st_local_vector : case e_st_local_string : if (collect_variables_) symbol_name_list_ .push_back(std::make_pair(symbol, st)); break; case e_st_function : if (collect_functions_) symbol_name_list_ .push_back(std::make_pair(symbol, st)); break; default : return; } } inline void add_assignment(const std::string& symbol, const symbol_type st) { switch (st) { case e_st_variable : case e_st_vector : case e_st_string : if (collect_assignments_) assignment_name_list_ .push_back(std::make_pair(symbol, st)); break; default : return; } } std::size_t options_; bool collect_variables_; bool collect_functions_; bool collect_assignments_; bool return_present_; bool final_stmt_return_; symbol_list_t symbol_name_list_; symbol_list_t assignment_name_list_; retparam_list_t retparam_list_; friend class parser; }; class settings_store { private: typedef std::set disabled_entity_set_t; typedef disabled_entity_set_t::iterator des_itr_t; public: enum settings_compilation_options { e_unknown = 0, e_replacer = 1, e_joiner = 2, e_numeric_check = 4, e_bracket_check = 8, e_sequence_check = 16, e_commutative_check = 32, e_strength_reduction = 64, e_disable_vardef = 128, e_collect_vars = 256, e_collect_funcs = 512, e_collect_assings = 1024, e_disable_usr_on_rsrvd = 2048, e_disable_zero_return = 4096 }; enum settings_base_funcs { e_bf_unknown = 0, e_bf_abs , e_bf_acos , e_bf_acosh , e_bf_asin , e_bf_asinh , e_bf_atan , e_bf_atan2 , e_bf_atanh , e_bf_avg , e_bf_ceil , e_bf_clamp , e_bf_cos , e_bf_cosh , e_bf_cot , e_bf_csc , e_bf_equal , e_bf_erf , e_bf_erfc , e_bf_exp , e_bf_expm1 , e_bf_floor , e_bf_frac , e_bf_hypot , e_bf_iclamp , e_bf_like , e_bf_log , e_bf_log10 , e_bf_log1p , e_bf_log2 , e_bf_logn , e_bf_mand , e_bf_max , e_bf_min , e_bf_mod , e_bf_mor , e_bf_mul , e_bf_ncdf , e_bf_pow , e_bf_root , e_bf_round , e_bf_roundn , e_bf_sec , e_bf_sgn , e_bf_sin , e_bf_sinc , e_bf_sinh , e_bf_sqrt , e_bf_sum , e_bf_swap , e_bf_tan , e_bf_tanh , e_bf_trunc , e_bf_not_equal , e_bf_inrange , e_bf_deg2grad , e_bf_deg2rad, e_bf_rad2deg , e_bf_grad2deg }; enum settings_control_structs { e_ctrl_unknown = 0, e_ctrl_ifelse, e_ctrl_switch, e_ctrl_for_loop, e_ctrl_while_loop, e_ctrl_repeat_loop, e_ctrl_return }; enum settings_logic_opr { e_logic_unknown = 0, e_logic_and, e_logic_nand, e_logic_nor, e_logic_not, e_logic_or, e_logic_xnor, e_logic_xor, e_logic_scand, e_logic_scor }; enum settings_arithmetic_opr { e_arith_unknown = 0, e_arith_add, e_arith_sub, e_arith_mul, e_arith_div, e_arith_mod, e_arith_pow }; enum settings_assignment_opr { e_assign_unknown = 0, e_assign_assign, e_assign_addass, e_assign_subass, e_assign_mulass, e_assign_divass, e_assign_modass }; enum settings_inequality_opr { e_ineq_unknown = 0, e_ineq_lt, e_ineq_lte, e_ineq_eq, e_ineq_equal, e_ineq_ne, e_ineq_nequal, e_ineq_gte, e_ineq_gt }; static const std::size_t compile_all_opts = e_replacer + e_joiner + e_numeric_check + e_bracket_check + e_sequence_check + e_commutative_check + e_strength_reduction; settings_store(const std::size_t compile_options = compile_all_opts) { load_compile_options(compile_options); } settings_store& enable_all_base_functions() { disabled_func_set_.clear(); return (*this); } settings_store& enable_all_control_structures() { disabled_ctrl_set_.clear(); return (*this); } settings_store& enable_all_logic_ops() { disabled_logic_set_.clear(); return (*this); } settings_store& enable_all_arithmetic_ops() { disabled_arithmetic_set_.clear(); return (*this); } settings_store& enable_all_assignment_ops() { disabled_assignment_set_.clear(); return (*this); } settings_store& enable_all_inequality_ops() { disabled_inequality_set_.clear(); return (*this); } settings_store& enable_local_vardef() { disable_vardef_ = false; return (*this); } settings_store& disable_all_base_functions() { std::copy(details::base_function_list, details::base_function_list + details::base_function_list_size, std::insert_iterator (disabled_func_set_, disabled_func_set_.begin())); return (*this); } settings_store& disable_all_control_structures() { std::copy(details::cntrl_struct_list, details::cntrl_struct_list + details::cntrl_struct_list_size, std::insert_iterator (disabled_ctrl_set_, disabled_ctrl_set_.begin())); return (*this); } settings_store& disable_all_logic_ops() { std::copy(details::logic_ops_list, details::logic_ops_list + details::logic_ops_list_size, std::insert_iterator (disabled_logic_set_, disabled_logic_set_.begin())); return (*this); } settings_store& disable_all_arithmetic_ops() { std::copy(details::arithmetic_ops_list, details::arithmetic_ops_list + details::arithmetic_ops_list_size, std::insert_iterator (disabled_arithmetic_set_, disabled_arithmetic_set_.begin())); return (*this); } settings_store& disable_all_assignment_ops() { std::copy(details::assignment_ops_list, details::assignment_ops_list + details::assignment_ops_list_size, std::insert_iterator (disabled_assignment_set_, disabled_assignment_set_.begin())); return (*this); } settings_store& disable_all_inequality_ops() { std::copy(details::inequality_ops_list, details::inequality_ops_list + details::inequality_ops_list_size, std::insert_iterator (disabled_inequality_set_, disabled_inequality_set_.begin())); return (*this); } settings_store& disable_local_vardef() { disable_vardef_ = true; return (*this); } bool replacer_enabled () const { return enable_replacer_; } bool commutative_check_enabled () const { return enable_commutative_check_; } bool joiner_enabled () const { return enable_joiner_; } bool numeric_check_enabled () const { return enable_numeric_check_; } bool bracket_check_enabled () const { return enable_bracket_check_; } bool sequence_check_enabled () const { return enable_sequence_check_; } bool strength_reduction_enabled () const { return enable_strength_reduction_; } bool collect_variables_enabled () const { return enable_collect_vars_; } bool collect_functions_enabled () const { return enable_collect_funcs_; } bool collect_assignments_enabled() const { return enable_collect_assings_; } bool vardef_disabled () const { return disable_vardef_; } bool rsrvd_sym_usr_disabled () const { return disable_rsrvd_sym_usr_; } bool zero_return_disabled () const { return disable_zero_return_; } bool function_enabled(const std::string& function_name) { if (disabled_func_set_.empty()) return true; else return (disabled_func_set_.end() == disabled_func_set_.find(function_name)); } bool control_struct_enabled(const std::string& control_struct) { if (disabled_ctrl_set_.empty()) return true; else return (disabled_ctrl_set_.end() == disabled_ctrl_set_.find(control_struct)); } bool logic_enabled(const std::string& logic_operation) { if (disabled_logic_set_.empty()) return true; else return (disabled_logic_set_.end() == disabled_logic_set_.find(logic_operation)); } bool arithmetic_enabled(const details::operator_type& arithmetic_operation) { if (disabled_logic_set_.empty()) return true; else return disabled_arithmetic_set_.end() == disabled_arithmetic_set_ .find(arith_opr_to_string(arithmetic_operation)); } bool assignment_enabled(const details::operator_type& assignment) { if (disabled_assignment_set_.empty()) return true; else return disabled_assignment_set_.end() == disabled_assignment_set_ .find(assign_opr_to_string(assignment)); } bool inequality_enabled(const details::operator_type& inequality) { if (disabled_inequality_set_.empty()) return true; else return disabled_inequality_set_.end() == disabled_inequality_set_ .find(inequality_opr_to_string(inequality)); } bool function_disabled(const std::string& function_name) { if (disabled_func_set_.empty()) return false; else return (disabled_func_set_.end() != disabled_func_set_.find(function_name)); } bool control_struct_disabled(const std::string& control_struct) { if (disabled_ctrl_set_.empty()) return false; else return (disabled_ctrl_set_.end() != disabled_ctrl_set_.find(control_struct)); } bool logic_disabled(const std::string& logic_operation) { if (disabled_logic_set_.empty()) return false; else return (disabled_logic_set_.end() != disabled_logic_set_.find(logic_operation)); } bool assignment_disabled(const details::operator_type assignment_operation) { if (disabled_assignment_set_.empty()) return false; else return disabled_assignment_set_.end() != disabled_assignment_set_ .find(assign_opr_to_string(assignment_operation)); } bool arithmetic_disabled(const details::operator_type arithmetic_operation) { if (disabled_arithmetic_set_.empty()) return false; else return disabled_arithmetic_set_.end() != disabled_arithmetic_set_ .find(arith_opr_to_string(arithmetic_operation)); } bool inequality_disabled(const details::operator_type& inequality) { if (disabled_inequality_set_.empty()) return false; else return disabled_inequality_set_.end() != disabled_inequality_set_ .find(inequality_opr_to_string(inequality)); } settings_store& disable_base_function(settings_base_funcs bf) { if ( (e_bf_unknown != bf) && (static_cast(bf) < (details::base_function_list_size + 1)) ) { disabled_func_set_.insert(details::base_function_list[bf - 1]); } return (*this); } settings_store& disable_control_structure(settings_control_structs ctrl_struct) { if ( (e_ctrl_unknown != ctrl_struct) && (static_cast(ctrl_struct) < (details::cntrl_struct_list_size + 1)) ) { disabled_ctrl_set_.insert(details::cntrl_struct_list[ctrl_struct - 1]); } return (*this); } settings_store& disable_logic_operation(settings_logic_opr logic) { if ( (e_logic_unknown != logic) && (static_cast(logic) < (details::logic_ops_list_size + 1)) ) { disabled_logic_set_.insert(details::logic_ops_list[logic - 1]); } return (*this); } settings_store& disable_arithmetic_operation(settings_arithmetic_opr arithmetic) { if ( (e_arith_unknown != arithmetic) && (static_cast(arithmetic) < (details::arithmetic_ops_list_size + 1)) ) { disabled_arithmetic_set_.insert(details::arithmetic_ops_list[arithmetic - 1]); } return (*this); } settings_store& disable_assignment_operation(settings_assignment_opr assignment) { if ( (e_assign_unknown != assignment) && (static_cast(assignment) < (details::assignment_ops_list_size + 1)) ) { disabled_assignment_set_.insert(details::assignment_ops_list[assignment - 1]); } return (*this); } settings_store& disable_inequality_operation(settings_inequality_opr inequality) { if ( (e_ineq_unknown != inequality) && (static_cast(inequality) < (details::inequality_ops_list_size + 1)) ) { disabled_inequality_set_.insert(details::inequality_ops_list[inequality - 1]); } return (*this); } settings_store& enable_base_function(settings_base_funcs bf) { if ( (e_bf_unknown != bf) && (static_cast(bf) < (details::base_function_list_size + 1)) ) { const des_itr_t itr = disabled_func_set_.find(details::base_function_list[bf - 1]); if (disabled_func_set_.end() != itr) { disabled_func_set_.erase(itr); } } return (*this); } settings_store& enable_control_structure(settings_control_structs ctrl_struct) { if ( (e_ctrl_unknown != ctrl_struct) && (static_cast(ctrl_struct) < (details::cntrl_struct_list_size + 1)) ) { const des_itr_t itr = disabled_ctrl_set_.find(details::cntrl_struct_list[ctrl_struct - 1]); if (disabled_ctrl_set_.end() != itr) { disabled_ctrl_set_.erase(itr); } } return (*this); } settings_store& enable_logic_operation(settings_logic_opr logic) { if ( (e_logic_unknown != logic) && (static_cast(logic) < (details::logic_ops_list_size + 1)) ) { const des_itr_t itr = disabled_logic_set_.find(details::logic_ops_list[logic - 1]); if (disabled_logic_set_.end() != itr) { disabled_logic_set_.erase(itr); } } return (*this); } settings_store& enable_arithmetic_operation(settings_arithmetic_opr arithmetic) { if ( (e_arith_unknown != arithmetic) && (static_cast(arithmetic) < (details::arithmetic_ops_list_size + 1)) ) { const des_itr_t itr = disabled_arithmetic_set_.find(details::arithmetic_ops_list[arithmetic - 1]); if (disabled_arithmetic_set_.end() != itr) { disabled_arithmetic_set_.erase(itr); } } return (*this); } settings_store& enable_assignment_operation(settings_assignment_opr assignment) { if ( (e_assign_unknown != assignment) && (static_cast(assignment) < (details::assignment_ops_list_size + 1)) ) { const des_itr_t itr = disabled_assignment_set_.find(details::assignment_ops_list[assignment - 1]); if (disabled_assignment_set_.end() != itr) { disabled_assignment_set_.erase(itr); } } return (*this); } settings_store& enable_inequality_operation(settings_inequality_opr inequality) { if ( (e_ineq_unknown != inequality) && (static_cast(inequality) < (details::inequality_ops_list_size + 1)) ) { const des_itr_t itr = disabled_inequality_set_.find(details::inequality_ops_list[inequality - 1]); if (disabled_inequality_set_.end() != itr) { disabled_inequality_set_.erase(itr); } } return (*this); } private: void load_compile_options(const std::size_t compile_options) { enable_replacer_ = (compile_options & e_replacer ) == e_replacer; enable_joiner_ = (compile_options & e_joiner ) == e_joiner; enable_numeric_check_ = (compile_options & e_numeric_check ) == e_numeric_check; enable_bracket_check_ = (compile_options & e_bracket_check ) == e_bracket_check; enable_sequence_check_ = (compile_options & e_sequence_check ) == e_sequence_check; enable_commutative_check_ = (compile_options & e_commutative_check ) == e_commutative_check; enable_strength_reduction_ = (compile_options & e_strength_reduction ) == e_strength_reduction; enable_collect_vars_ = (compile_options & e_collect_vars ) == e_collect_vars; enable_collect_funcs_ = (compile_options & e_collect_funcs ) == e_collect_funcs; enable_collect_assings_ = (compile_options & e_collect_assings ) == e_collect_assings; disable_vardef_ = (compile_options & e_disable_vardef ) == e_disable_vardef; disable_rsrvd_sym_usr_ = (compile_options & e_disable_usr_on_rsrvd) == e_disable_usr_on_rsrvd; disable_zero_return_ = (compile_options & e_disable_zero_return ) == e_disable_zero_return; } std::string assign_opr_to_string(details::operator_type opr) { switch (opr) { case details::e_assign : return ":="; case details::e_addass : return "+="; case details::e_subass : return "-="; case details::e_mulass : return "*="; case details::e_divass : return "/="; case details::e_modass : return "%="; default : return ""; } } std::string arith_opr_to_string(details::operator_type opr) { switch (opr) { case details::e_add : return "+"; case details::e_sub : return "-"; case details::e_mul : return "*"; case details::e_div : return "/"; case details::e_mod : return "%"; default : return ""; } } std::string inequality_opr_to_string(details::operator_type opr) { switch (opr) { case details::e_lt : return "<"; case details::e_lte : return "<="; case details::e_eq : return "=="; case details::e_equal : return "="; case details::e_ne : return "!="; case details::e_nequal: return "<>"; case details::e_gte : return ">="; case details::e_gt : return ">"; default : return ""; } } bool enable_replacer_; bool enable_joiner_; bool enable_numeric_check_; bool enable_bracket_check_; bool enable_sequence_check_; bool enable_commutative_check_; bool enable_strength_reduction_; bool enable_collect_vars_; bool enable_collect_funcs_; bool enable_collect_assings_; bool disable_vardef_; bool disable_rsrvd_sym_usr_; bool disable_zero_return_; disabled_entity_set_t disabled_func_set_ ; disabled_entity_set_t disabled_ctrl_set_ ; disabled_entity_set_t disabled_logic_set_; disabled_entity_set_t disabled_arithmetic_set_; disabled_entity_set_t disabled_assignment_set_; disabled_entity_set_t disabled_inequality_set_; friend class parser; }; typedef settings_store settings_t; parser(const settings_t& settings = settings_t()) : settings_(settings), resolve_unknown_symbol_(false), results_context_(0), unknown_symbol_resolver_(reinterpret_cast(0)), #ifdef _MSC_VER #pragma warning(push) #pragma warning (disable:4355) #endif sem_(*this), #ifdef _MSC_VER #pragma warning(pop) #endif operator_joiner_2_(2), operator_joiner_3_(3) { init_precompilation(); load_operations_map (base_ops_map_ ); load_unary_operations_map (unary_op_map_ ); load_binary_operations_map (binary_op_map_ ); load_inv_binary_operations_map(inv_binary_op_map_); load_sf3_map (sf3_map_ ); load_sf4_map (sf4_map_ ); expression_generator_.init_synthesize_map(); expression_generator_.set_parser(*this); expression_generator_.set_uom(unary_op_map_); expression_generator_.set_bom(binary_op_map_); expression_generator_.set_ibom(inv_binary_op_map_); expression_generator_.set_sf3m(sf3_map_); expression_generator_.set_sf4m(sf4_map_); expression_generator_.set_strength_reduction_state(settings_.strength_reduction_enabled()); } ~parser() {} inline void init_precompilation() { if (settings_.collect_variables_enabled()) dec_.collect_variables() = true; if (settings_.collect_functions_enabled()) dec_.collect_functions() = true; if (settings_.collect_assignments_enabled()) dec_.collect_assignments() = true; if (settings_.replacer_enabled()) { symbol_replacer_.clear(); symbol_replacer_.add_replace("true" ,"1",lexer::token::e_number); symbol_replacer_.add_replace("false","0",lexer::token::e_number); helper_assembly_.token_modifier_list.clear(); helper_assembly_.register_modifier(&symbol_replacer_); } if (settings_.commutative_check_enabled()) { for (std::size_t i = 0; i < details::reserved_words_size; ++i) { commutative_inserter_.ignore_symbol(details::reserved_words[i]); } helper_assembly_.token_inserter_list.clear(); helper_assembly_.register_inserter(&commutative_inserter_); } if (settings_.joiner_enabled()) { helper_assembly_.token_joiner_list.clear(); helper_assembly_.register_joiner(&operator_joiner_2_); helper_assembly_.register_joiner(&operator_joiner_3_); } if ( settings_.numeric_check_enabled () || settings_.bracket_check_enabled () || settings_.sequence_check_enabled() ) { helper_assembly_.token_scanner_list.clear(); if (settings_.numeric_check_enabled()) { helper_assembly_.register_scanner(&numeric_checker_); } if (settings_.bracket_check_enabled()) { helper_assembly_.register_scanner(&bracket_checker_); } if (settings_.sequence_check_enabled()) { helper_assembly_.register_scanner(&sequence_validator_); } } } inline bool compile(const std::string& expression_string, expression& expr) { state_ .reset(); error_list_ .clear(); brkcnt_list_ .clear(); synthesis_error_.clear(); sem_ .cleanup(); return_cleanup(); expression_generator_.set_allocator(node_allocator_); if (expression_string.empty()) { set_error( make_error(parser_error::e_syntax, "ERR000 - Empty expression!", exprtk_error_location)); return false; } if (!init(expression_string)) { process_lexer_errors(); return false; } if (lexer().empty()) { set_error( make_error(parser_error::e_syntax, "ERR001 - Empty expression!", exprtk_error_location)); return false; } if (!run_assemblies()) { return false; } symtab_store_.symtab_list_ = expr.get_symbol_table_list(); dec_.clear(); lexer().begin(); next_token(); expression_node_ptr e = parse_corpus(); if ((0 != e) && (token_t::e_eof == current_token().type)) { bool* retinvk_ptr = 0; if (state_.return_stmt_present) { dec_.return_present_ = true; e = expression_generator_ .return_envelope(e,results_context_,retinvk_ptr); } expr.set_expression(e); expr.set_retinvk(retinvk_ptr); register_local_vars(expr); register_return_results(expr); return !(!expr); } else { if (error_list_.empty()) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR002 - Invalid expression encountered", exprtk_error_location)); } dec_.clear (); sem_.cleanup (); return_cleanup(); if ((0 != e) && branch_deletable(e)) { destroy_node(e); } return false; } } inline expression_t compile(const std::string& expression_string, symbol_table_t& symtab) { expression_t expr; expr.register_symbol_table(symtab); compile(expression_string,expr); return expr; } void process_lexer_errors() { for (std::size_t i = 0; i < lexer().size(); ++i) { if (lexer()[i].is_error()) { std::string diagnostic = "ERR003 - "; switch (lexer()[i].type) { case lexer::token::e_error : diagnostic += "General token error"; break; case lexer::token::e_err_symbol : diagnostic += "Symbol error"; break; case lexer::token::e_err_number : diagnostic += "Invalid numeric token"; break; case lexer::token::e_err_string : diagnostic += "Invalid string token"; break; case lexer::token::e_err_sfunc : diagnostic += "Invalid special function token"; break; default : diagnostic += "Unknown compiler error"; } set_error( make_error(parser_error::e_lexer, lexer()[i], diagnostic + ": " + lexer()[i].value, exprtk_error_location)); } } } inline bool run_assemblies() { if (settings_.commutative_check_enabled()) { helper_assembly_.run_inserters(lexer()); } if (settings_.joiner_enabled()) { helper_assembly_.run_joiners(lexer()); } if (settings_.replacer_enabled()) { helper_assembly_.run_modifiers(lexer()); } if ( settings_.numeric_check_enabled () || settings_.bracket_check_enabled () || settings_.sequence_check_enabled() ) { if (!helper_assembly_.run_scanners(lexer())) { if (helper_assembly_.error_token_scanner) { lexer::helper::bracket_checker* bracket_checker_ptr = 0; lexer::helper::numeric_checker* numeric_checker_ptr = 0; lexer::helper::sequence_validator* sequence_validator_ptr = 0; if (0 != (bracket_checker_ptr = dynamic_cast(helper_assembly_.error_token_scanner))) { set_error( make_error(parser_error::e_token, bracket_checker_ptr->error_token(), "ERR004 - Mismatched brackets: '" + bracket_checker_ptr->error_token().value + "'", exprtk_error_location)); } else if (0 != (numeric_checker_ptr = dynamic_cast(helper_assembly_.error_token_scanner))) { for (std::size_t i = 0; i < numeric_checker_ptr->error_count(); ++i) { lexer::token error_token = lexer()[numeric_checker_ptr->error_index(i)]; set_error( make_error(parser_error::e_token, error_token, "ERR005 - Invalid numeric token: '" + error_token.value + "'", exprtk_error_location)); } if (numeric_checker_ptr->error_count()) { numeric_checker_ptr->clear_errors(); } } else if (0 != (sequence_validator_ptr = dynamic_cast(helper_assembly_.error_token_scanner))) { for (std::size_t i = 0; i < sequence_validator_ptr->error_count(); ++i) { std::pair error_token = sequence_validator_ptr->error(i); set_error( make_error(parser_error::e_token, error_token.first, "ERR006 - Invalid token sequence: '" + error_token.first.value + "' and '" + error_token.second.value + "'", exprtk_error_location)); } if (sequence_validator_ptr->error_count()) { sequence_validator_ptr->clear_errors(); } } } return false; } } return true; } inline settings_store& settings() { return settings_; } inline parser_error::type get_error(const std::size_t& index) { if (index < error_list_.size()) return error_list_[index]; else throw std::invalid_argument("parser::get_error() - Invalid error index specificed"); } inline std::string error() const { if (!error_list_.empty()) { return error_list_[0].diagnostic; } else return std::string("No Error"); } inline std::size_t error_count() const { return error_list_.size(); } inline dependent_entity_collector& dec() { return dec_; } inline bool replace_symbol(const std::string& old_symbol, const std::string& new_symbol) { if (!settings_.replacer_enabled()) return false; else if (details::is_reserved_word(old_symbol)) return false; else return symbol_replacer_.add_replace(old_symbol,new_symbol,lexer::token::e_symbol); } inline bool remove_replace_symbol(const std::string& symbol) { if (!settings_.replacer_enabled()) return false; else if (details::is_reserved_word(symbol)) return false; else return symbol_replacer_.remove(symbol); } inline void enable_unknown_symbol_resolver(unknown_symbol_resolver* usr = reinterpret_cast(0)) { resolve_unknown_symbol_ = true; if (usr) unknown_symbol_resolver_ = usr; else unknown_symbol_resolver_ = &default_usr_; } inline void enable_unknown_symbol_resolver(unknown_symbol_resolver& usr) { enable_unknown_symbol_resolver(&usr); } inline void disable_unknown_symbol_resolver() { resolve_unknown_symbol_ = false; unknown_symbol_resolver_ = &default_usr_; } private: inline bool valid_base_operation(const std::string& symbol) { const std::size_t length = symbol.size(); if ( (length < 3) || // Shortest base op symbol length (length > 9) // Longest base op symbol length ) return false; else return settings_.function_enabled(symbol) && (base_ops_map_.end() != base_ops_map_.find(symbol)); } inline bool valid_vararg_operation(const std::string& symbol) { static const std::string s_sum = "sum" ; static const std::string s_mul = "mul" ; static const std::string s_avg = "avg" ; static const std::string s_min = "min" ; static const std::string s_max = "max" ; static const std::string s_mand = "mand"; static const std::string s_mor = "mor" ; static const std::string s_multi = "~" ; static const std::string s_mswitch = "[*]" ; return ( details::imatch(symbol,s_sum ) || details::imatch(symbol,s_mul ) || details::imatch(symbol,s_avg ) || details::imatch(symbol,s_min ) || details::imatch(symbol,s_max ) || details::imatch(symbol,s_mand ) || details::imatch(symbol,s_mor ) || details::imatch(symbol,s_multi ) || details::imatch(symbol,s_mswitch) ) && settings_.function_enabled(symbol); } bool is_invalid_arithmetic_operation(const details::operator_type operation) { return settings_.arithmetic_disabled(operation); } bool is_invalid_assignment_operation(const details::operator_type operation) { return settings_.assignment_disabled(operation); } bool is_invalid_inequality_operation(const details::operator_type operation) { return settings_.inequality_disabled(operation); } #ifdef exprtk_enable_debugging inline void next_token() { std::string ct_str = current_token().value; parser_helper::next_token(); std::string depth(2 * state_.scope_depth,' '); exprtk_debug(("%s" "prev[%s] --> curr[%s]\n", depth.c_str(), ct_str.c_str(), current_token().value.c_str())); } #endif inline expression_node_ptr parse_corpus() { std::vector arg_list; std::vector side_effect_list; expression_node_ptr result = error_node(); scoped_vec_delete sdd((*this),arg_list); lexer::token begin_token; lexer::token end_token; for ( ; ; ) { state_.side_effect_present = false; begin_token = current_token(); expression_node_ptr arg = parse_expression(); if (0 == arg) { if (error_list_.empty()) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR007 - Invalid expression encountered", exprtk_error_location)); } return error_node(); } else { arg_list.push_back(arg); side_effect_list.push_back(state_.side_effect_present); end_token = current_token(); std::string sub_expr = construct_subexpr(begin_token,end_token); exprtk_debug(("parse_corpus(%02d) Subexpr: %s\n", static_cast(arg_list.size() - 1), sub_expr.c_str())); exprtk_debug(("parse_corpus(%02d) - Side effect present: %s\n", static_cast(arg_list.size() - 1), state_.side_effect_present ? "true" : "false")); exprtk_debug(("-------------------------------------------------\n")); } if (lexer().finished()) break; else if (token_is(token_t::e_eof,prsrhlpr_t::e_hold)) { if (lexer().finished()) break; else next_token(); } } if ( !arg_list.empty() && is_return_node(arg_list.back()) ) { dec_.final_stmt_return_ = true; } result = simplify(arg_list,side_effect_list); sdd.delete_ptr = (0 == result); return result; } std::string construct_subexpr(lexer::token& begin_token, lexer::token& end_token) { std::string result = lexer().substr(begin_token.position,end_token.position); for (std::size_t i = 0; i < result.size(); ++i) { if (details::is_whitespace(result[i])) result[i] = ' '; } return result; } static const precedence_level default_precedence = e_level00; struct state_t { inline void set(const precedence_level& l, const precedence_level& r, const details::operator_type& o) { left = l; right = r; operation = o; } inline void reset() { left = e_level00; right = e_level00; operation = details::e_default; } precedence_level left; precedence_level right; details::operator_type operation; }; inline expression_node_ptr parse_expression(precedence_level precedence = e_level00) { expression_node_ptr expression = parse_branch(precedence); if (0 == expression) { return error_node(); } bool break_loop = false; state_t current_state; for ( ; ; ) { current_state.reset(); switch (current_token().type) { case token_t::e_assign : current_state.set(e_level00,e_level00,details::e_assign); break; case token_t::e_addass : current_state.set(e_level00,e_level00,details::e_addass); break; case token_t::e_subass : current_state.set(e_level00,e_level00,details::e_subass); break; case token_t::e_mulass : current_state.set(e_level00,e_level00,details::e_mulass); break; case token_t::e_divass : current_state.set(e_level00,e_level00,details::e_divass); break; case token_t::e_modass : current_state.set(e_level00,e_level00,details::e_modass); break; case token_t::e_swap : current_state.set(e_level00,e_level00,details::e_swap ); break; case token_t::e_lt : current_state.set(e_level05,e_level06,details:: e_lt); break; case token_t::e_lte : current_state.set(e_level05,e_level06,details:: e_lte); break; case token_t::e_eq : current_state.set(e_level05,e_level06,details:: e_eq); break; case token_t::e_ne : current_state.set(e_level05,e_level06,details:: e_ne); break; case token_t::e_gte : current_state.set(e_level05,e_level06,details:: e_gte); break; case token_t::e_gt : current_state.set(e_level05,e_level06,details:: e_gt); break; case token_t::e_add : current_state.set(e_level07,e_level08,details:: e_add); break; case token_t::e_sub : current_state.set(e_level07,e_level08,details:: e_sub); break; case token_t::e_div : current_state.set(e_level10,e_level11,details:: e_div); break; case token_t::e_mul : current_state.set(e_level10,e_level11,details:: e_mul); break; case token_t::e_mod : current_state.set(e_level10,e_level11,details:: e_mod); break; case token_t::e_pow : current_state.set(e_level12,e_level12,details:: e_pow); break; default : if (token_t::e_symbol == current_token().type) { static const std::string s_and = "and"; static const std::string s_nand = "nand"; static const std::string s_or = "or"; static const std::string s_nor = "nor"; static const std::string s_xor = "xor"; static const std::string s_xnor = "xnor"; static const std::string s_in = "in"; static const std::string s_like = "like"; static const std::string s_ilike = "ilike"; static const std::string s_and1 = "&"; static const std::string s_or1 = "|"; static const std::string s_not = "not"; if (details::imatch(current_token().value,s_and)) { current_state.set(e_level03, e_level04, details::e_and); break; } else if (details::imatch(current_token().value,s_and1)) { #ifndef exprtk_disable_sc_andor current_state.set(e_level03, e_level04, details::e_scand); #else current_state.set(e_level03, e_level04, details::e_and); #endif break; } else if (details::imatch(current_token().value,s_nand)) { current_state.set(e_level03, e_level04, details::e_nand); break; } else if (details::imatch(current_token().value,s_or)) { current_state.set(e_level01, e_level02, details::e_or); break; } else if (details::imatch(current_token().value,s_or1)) { #ifndef exprtk_disable_sc_andor current_state.set(e_level01, e_level02, details::e_scor); #else current_state.set(e_level01, e_level02, details::e_or); #endif break; } else if (details::imatch(current_token().value,s_nor)) { current_state.set(e_level01, e_level02, details::e_nor); break; } else if (details::imatch(current_token().value,s_xor)) { current_state.set(e_level01, e_level02, details::e_xor); break; } else if (details::imatch(current_token().value,s_xnor)) { current_state.set(e_level01, e_level02, details::e_xnor); break; } else if (details::imatch(current_token().value,s_in)) { current_state.set(e_level04, e_level04, details::e_in); break; } else if (details::imatch(current_token().value,s_like)) { current_state.set(e_level04, e_level04, details::e_like); break; } else if (details::imatch(current_token().value,s_ilike)) { current_state.set(e_level04, e_level04, details::e_ilike); break; } else if (details::imatch(current_token().value,s_not)) { break; } } break_loop = true; } if (break_loop) { parse_pending_string_rangesize(expression); break; } else if (current_state.left < precedence) break; lexer::token prev_token = current_token(); next_token(); expression_node_ptr right_branch = error_node(); expression_node_ptr new_expression = error_node(); if (is_invalid_arithmetic_operation(current_state.operation)) { free_node(node_allocator_,expression); set_error( make_error(parser_error::e_syntax, prev_token, "ERR008 - Invalid arithmetic operation '" + details::to_str(current_state.operation) + "'", exprtk_error_location)); return error_node(); } else if (is_invalid_inequality_operation(current_state.operation)) { free_node(node_allocator_,expression); set_error( make_error(parser_error::e_syntax, prev_token, "ERR009 - Invalid inequality operation '" + details::to_str(current_state.operation) + "'", exprtk_error_location)); return error_node(); } else if (is_invalid_assignment_operation(current_state.operation)) { free_node(node_allocator_,expression); set_error( make_error(parser_error::e_syntax, prev_token, "ERR010 - Invalid assignment operation '" + details::to_str(current_state.operation) + "'", exprtk_error_location)); return error_node(); } if (0 != (right_branch = parse_expression(current_state.right))) { if ( details::is_return_node( expression) || details::is_return_node(right_branch) ) { free_node(node_allocator_, expression); free_node(node_allocator_,right_branch); set_error( make_error(parser_error::e_syntax, prev_token, "ERR011 - Return statements cannot be part of sub-expressions", exprtk_error_location)); return error_node(); } new_expression = expression_generator_ ( current_state.operation, expression, right_branch ); } if (0 == new_expression) { if (error_list_.empty()) { set_error( make_error(parser_error::e_syntax, prev_token, !synthesis_error_.empty() ? synthesis_error_ : "ERR012 - General parsing error at token: '" + prev_token.value + "'", exprtk_error_location)); } free_node(node_allocator_,expression); return error_node(); } else { if ( token_is(token_t::e_ternary,prsrhlpr_t::e_hold) && (precedence == e_level00) ) { expression = parse_ternary_conditional_statement(new_expression); } else expression = new_expression; parse_pending_string_rangesize(expression); } } return expression; } bool simplify_unary_negation_branch(expression_node_ptr& node) { { typedef details::unary_branch_node > ubn_t; ubn_t* n = dynamic_cast(node); if (n) { expression_node_ptr un_r = n->branch(0); n->release(); free_node(node_allocator_,node); node = un_r; return true; } } { typedef details::unary_variable_node > uvn_t; uvn_t* n = dynamic_cast(node); if (n) { const T& v = n->v(); expression_node_ptr return_node = error_node(); if ( (0 != (return_node = symtab_store_.get_variable(v))) || (0 != (return_node = sem_ .get_variable(v))) ) { free_node(node_allocator_,node); node = return_node; return true; } else { set_error( make_error(parser_error::e_syntax, current_token(), "ERR013 - Failed to find variable node in symbol table", exprtk_error_location)); free_node(node_allocator_,node); return false; } } } return false; } static inline expression_node_ptr error_node() { return reinterpret_cast(0); } template struct scoped_delete { typedef Type* ptr_t; scoped_delete(parser& pr, ptr_t& p) : delete_ptr(true), parser_(pr), p_(&p) {} scoped_delete(parser& pr, ptr_t (&p)[N]) : delete_ptr(true), parser_(pr), p_(&p[0]) {} ~scoped_delete() { if (delete_ptr) { for (std::size_t i = 0; i < N; ++i) { free_node(parser_.node_allocator_,p_[i]); } } } bool delete_ptr; parser& parser_; ptr_t* p_; private: scoped_delete& operator=(const scoped_delete&); }; template struct scoped_deq_delete { typedef Type* ptr_t; scoped_deq_delete(parser& pr, std::deque& deq) : delete_ptr(true), parser_(pr), deq_(deq) {} ~scoped_deq_delete() { if (delete_ptr && !deq_.empty()) { for (std::size_t i = 0; i < deq_.size(); ++i) { free_node(parser_.node_allocator_,deq_[i]); } deq_.clear(); } } bool delete_ptr; parser& parser_; std::deque& deq_; private: scoped_deq_delete& operator=(const scoped_deq_delete&); }; template struct scoped_vec_delete { typedef Type* ptr_t; scoped_vec_delete(parser& pr, std::vector& vec) : delete_ptr(true), parser_(pr), vec_(vec) {} ~scoped_vec_delete() { if (delete_ptr && !vec_.empty()) { for (std::size_t i = 0; i < vec_.size(); ++i) { free_node(parser_.node_allocator_,vec_[i]); } vec_.clear(); } } bool delete_ptr; parser& parser_; std::vector& vec_; private: scoped_vec_delete& operator=(const scoped_vec_delete&); }; struct scoped_bool_negator { scoped_bool_negator(bool& bb) : b(bb) { b = !b; } ~scoped_bool_negator() { b = !b; } bool& b; }; struct scoped_bool_or_restorer { scoped_bool_or_restorer(bool& bb) : b(bb), original_value_(bb) {} ~scoped_bool_or_restorer() { b = b || original_value_; } bool& b; bool original_value_; }; inline expression_node_ptr parse_function_invocation(ifunction* function, const std::string& function_name) { expression_node_ptr func_node = reinterpret_cast(0); switch (function->param_count) { case 0 : func_node = parse_function_call_0 (function,function_name); break; case 1 : func_node = parse_function_call< 1>(function,function_name); break; case 2 : func_node = parse_function_call< 2>(function,function_name); break; case 3 : func_node = parse_function_call< 3>(function,function_name); break; case 4 : func_node = parse_function_call< 4>(function,function_name); break; case 5 : func_node = parse_function_call< 5>(function,function_name); break; case 6 : func_node = parse_function_call< 6>(function,function_name); break; case 7 : func_node = parse_function_call< 7>(function,function_name); break; case 8 : func_node = parse_function_call< 8>(function,function_name); break; case 9 : func_node = parse_function_call< 9>(function,function_name); break; case 10 : func_node = parse_function_call<10>(function,function_name); break; case 11 : func_node = parse_function_call<11>(function,function_name); break; case 12 : func_node = parse_function_call<12>(function,function_name); break; case 13 : func_node = parse_function_call<13>(function,function_name); break; case 14 : func_node = parse_function_call<14>(function,function_name); break; case 15 : func_node = parse_function_call<15>(function,function_name); break; case 16 : func_node = parse_function_call<16>(function,function_name); break; case 17 : func_node = parse_function_call<17>(function,function_name); break; case 18 : func_node = parse_function_call<18>(function,function_name); break; case 19 : func_node = parse_function_call<19>(function,function_name); break; case 20 : func_node = parse_function_call<20>(function,function_name); break; default : { set_error( make_error(parser_error::e_syntax, current_token(), "ERR014 - Invalid number of parameters for function: '" + function_name + "'", exprtk_error_location)); return error_node(); } } if (func_node) return func_node; else { set_error( make_error(parser_error::e_syntax, current_token(), "ERR015 - Failed to generate call to function: '" + function_name + "'", exprtk_error_location)); return error_node(); } } template inline expression_node_ptr parse_function_call(ifunction* function, const std::string& function_name) { #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable: 4127) #endif if (0 == NumberofParameters) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR016 - Expecting ifunction '" + function_name + "' to have non-zero parameter count", exprtk_error_location)); return error_node(); } #ifdef _MSC_VER #pragma warning(pop) #endif expression_node_ptr branch[NumberofParameters]; expression_node_ptr result = error_node(); std::fill_n(branch, NumberofParameters, reinterpret_cast(0)); scoped_delete sd((*this),branch); next_token(); if (!token_is(token_t::e_lbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR017 - Expecting argument list for function: '" + function_name + "'", exprtk_error_location)); return error_node(); } for (int i = 0; i < static_cast(NumberofParameters); ++i) { branch[i] = parse_expression(); if (0 == branch[i]) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR018 - Failed to parse argument " + details::to_str(i) + " for function: '" + function_name + "'", exprtk_error_location)); return error_node(); } else if (i < static_cast(NumberofParameters - 1)) { if (!token_is(token_t::e_comma)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR019 - Invalid number of arguments for function: '" + function_name + "'", exprtk_error_location)); return error_node(); } } } if (!token_is(token_t::e_rbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR020 - Invalid number of arguments for function: '" + function_name + "'", exprtk_error_location)); return error_node(); } else result = expression_generator_.function(function,branch); sd.delete_ptr = false; return result; } inline expression_node_ptr parse_function_call_0(ifunction* function, const std::string& function_name) { expression_node_ptr result = expression_generator_.function(function); state_.side_effect_present = function->has_side_effects(); next_token(); if ( token_is(token_t::e_lbracket) && !token_is(token_t::e_rbracket) ) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR021 - Expecting '()' to proceed call to function: '" + function_name + "'", exprtk_error_location)); free_node(node_allocator_,result); return error_node(); } else return result; } template inline std::size_t parse_base_function_call(expression_node_ptr (¶m_list)[MaxNumberofParameters], const std::string& function_name = "") { std::fill_n(param_list, MaxNumberofParameters, reinterpret_cast(0)); scoped_delete sd((*this),param_list); next_token(); if (!token_is(token_t::e_lbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR022 - Expected a '(' at start of function call to '" + function_name + "', instead got: '" + current_token().value + "'", exprtk_error_location)); return 0; } if (token_is(token_t::e_rbracket, e_hold)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR023 - Expected at least one input parameter for function call '" + function_name + "'", exprtk_error_location)); return 0; } std::size_t param_index = 0; for (; param_index < MaxNumberofParameters; ++param_index) { param_list[param_index] = parse_expression(); if (0 == param_list[param_index]) return 0; else if (token_is(token_t::e_rbracket)) { sd.delete_ptr = false; break; } else if (token_is(token_t::e_comma)) continue; else { set_error( make_error(parser_error::e_syntax, current_token(), "ERR024 - Expected a ',' between function input parameters, instead got: '" + current_token().value + "'", exprtk_error_location)); return 0; } } if (sd.delete_ptr) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR025 - Invalid number of input parameters passed to function '" + function_name + "'", exprtk_error_location)); return 0; } return (param_index + 1); } inline expression_node_ptr parse_base_operation() { typedef std::pair map_range_t; const std::string operation_name = current_token().value; const token_t diagnostic_token = current_token(); map_range_t itr_range = base_ops_map_.equal_range(operation_name); if (0 == std::distance(itr_range.first,itr_range.second)) { set_error( make_error(parser_error::e_syntax, diagnostic_token, "ERR026 - No entry found for base operation: " + operation_name, exprtk_error_location)); return error_node(); } static const std::size_t MaxNumberofParameters = 4; expression_node_ptr param_list[MaxNumberofParameters] = {0}; const std::size_t parameter_count = parse_base_function_call(param_list, operation_name); if ((parameter_count > 0) && (parameter_count <= MaxNumberofParameters)) { for (base_ops_map_t::iterator itr = itr_range.first; itr != itr_range.second; ++itr) { details::base_operation_t& operation = itr->second; if (operation.num_params == parameter_count) { switch (parameter_count) { #define base_opr_case(N) \ case N : { \ expression_node_ptr pl##N[N] = {0}; \ std::copy(param_list, param_list + N, pl##N); \ lodge_symbol(operation_name, e_st_function); \ return expression_generator_(operation.type, pl##N); \ } \ base_opr_case(1) base_opr_case(2) base_opr_case(3) base_opr_case(4) #undef base_opr_case } } } } for (std::size_t i = 0; i < MaxNumberofParameters; ++i) { free_node(node_allocator_, param_list[i]); } set_error( make_error(parser_error::e_syntax, diagnostic_token, "ERR027 - Invalid number of input parameters for call to function: '" + operation_name + "'", exprtk_error_location)); return error_node(); } inline expression_node_ptr parse_conditional_statement_01(expression_node_ptr condition) { // Parse: [if][(][condition][,][consequent][,][alternative][)] expression_node_ptr consequent = error_node(); expression_node_ptr alternative = error_node(); bool result = true; if (!token_is(token_t::e_comma)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR028 - Expected ',' between if-statement condition and consequent", exprtk_error_location)); result = false; } else if (0 == (consequent = parse_expression())) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR029 - Failed to parse consequent for if-statement", exprtk_error_location)); result = false; } else if (!token_is(token_t::e_comma)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR030 - Expected ',' between if-statement consequent and alternative", exprtk_error_location)); result = false; } else if (0 == (alternative = parse_expression())) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR031 - Failed to parse alternative for if-statement", exprtk_error_location)); result = false; } else if (!token_is(token_t::e_rbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR032 - Expected ')' at the end of if-statement", exprtk_error_location)); result = false; } #ifndef exprtk_disable_string_capabilities if (result) { const bool consq_is_str = is_generally_string_node( consequent); const bool alter_is_str = is_generally_string_node(alternative); if (consq_is_str || alter_is_str) { if (consq_is_str && alter_is_str) { return expression_generator_ .conditional_string(condition,consequent,alternative); } set_error( make_error(parser_error::e_syntax, current_token(), "ERR033 - Return types of ternary if-statement differ", exprtk_error_location)); result = false; } } #endif if (!result) { free_node(node_allocator_, condition); free_node(node_allocator_, consequent); free_node(node_allocator_,alternative); return error_node(); } else return expression_generator_ .conditional(condition,consequent,alternative); } inline expression_node_ptr parse_conditional_statement_02(expression_node_ptr condition) { expression_node_ptr consequent = error_node(); expression_node_ptr alternative = error_node(); bool result = true; if (token_is(token_t::e_lcrlbracket,prsrhlpr_t::e_hold)) { if (0 == (consequent = parse_multi_sequence("if-statement-01"))) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR034 - Failed to parse body of consequent for if-statement", exprtk_error_location)); result = false; } } else { if ( settings_.commutative_check_enabled() && token_is(token_t::e_mul,prsrhlpr_t::e_hold) ) { next_token(); } if (0 != (consequent = parse_expression())) { if (!token_is(token_t::e_eof)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR035 - Expected ';' at the end of the consequent for if-statement", exprtk_error_location)); result = false; } } else { set_error( make_error(parser_error::e_syntax, current_token(), "ERR036 - Failed to parse body of consequent for if-statement", exprtk_error_location)); result = false; } } if (result) { if (details::imatch(current_token().value,"else")) { next_token(); if (token_is(token_t::e_lcrlbracket,prsrhlpr_t::e_hold)) { if (0 == (alternative = parse_multi_sequence("else-statement-01"))) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR037 - Failed to parse body of the 'else' for if-statement", exprtk_error_location)); result = false; } } else if (details::imatch(current_token().value,"if")) { if (0 == (alternative = parse_conditional_statement())) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR038 - Failed to parse body of if-else statement", exprtk_error_location)); result = false; } } else if (0 != (alternative = parse_expression())) { if (!token_is(token_t::e_eof)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR039 - Expected ';' at the end of the 'else-if' for the if-statement", exprtk_error_location)); result = false; } } else { set_error( make_error(parser_error::e_syntax, current_token(), "ERR040 - Failed to parse body of the 'else' for if-statement", exprtk_error_location)); result = false; } } } #ifndef exprtk_disable_string_capabilities if (result) { const bool consq_is_str = is_generally_string_node( consequent); const bool alter_is_str = is_generally_string_node(alternative); if (consq_is_str || alter_is_str) { if (consq_is_str && alter_is_str) { return expression_generator_ .conditional_string(condition,consequent,alternative); } set_error( make_error(parser_error::e_syntax, current_token(), "ERR041 - Return types of ternary if-statement differ", exprtk_error_location)); result = false; } } #endif if (!result) { free_node(node_allocator_, condition); free_node(node_allocator_, consequent); free_node(node_allocator_,alternative); return error_node(); } else return expression_generator_ .conditional(condition,consequent,alternative); } inline expression_node_ptr parse_conditional_statement() { expression_node_ptr condition = error_node(); next_token(); if (!token_is(token_t::e_lbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR042 - Expected '(' at start of if-statement, instead got: '" + current_token().value + "'", exprtk_error_location)); return error_node(); } else if (0 == (condition = parse_expression())) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR043 - Failed to parse condition for if-statement", exprtk_error_location)); return error_node(); } else if (token_is(token_t::e_comma,prsrhlpr_t::e_hold)) { // if (x,y,z) return parse_conditional_statement_01(condition); } else if (token_is(token_t::e_rbracket)) { // 00. if (x) y; // 01. if (x) y; else z; // 02. if (x) y; else {z0; ... zn;} // 03. if (x) y; else if (z) w; // 04. if (x) y; else if (z) w; else u; // 05. if (x) y; else if (z) w; else {u0; ... un;} // 06. if (x) y; else if (z) {w0; ... wn;} // 07. if (x) {y0; ... yn;} // 08. if (x) {y0; ... yn;} else z; // 09. if (x) {y0; ... yn;} else {z0; ... zn;}; // 10. if (x) {y0; ... yn;} else if (z) w; // 11. if (x) {y0; ... yn;} else if (z) w; else u; // 12. if (x) {y0; ... nex;} else if (z) w; else {u0 ... un;} // 13. if (x) {y0; ... yn;} else if (z) {w0; ... wn;} return parse_conditional_statement_02(condition); } set_error( make_error(parser_error::e_syntax, current_token(), "ERR044 - Invalid if-statement", exprtk_error_location)); free_node(node_allocator_,condition); return error_node(); } inline expression_node_ptr parse_ternary_conditional_statement(expression_node_ptr condition) { // Parse: [condition][?][consequent][:][alternative] expression_node_ptr consequent = error_node(); expression_node_ptr alternative = error_node(); bool result = true; if (0 == condition) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR045 - Encountered invalid condition branch for ternary if-statement", exprtk_error_location)); return error_node(); } else if (!token_is(token_t::e_ternary)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR046 - Expected '?' after condition of ternary if-statement", exprtk_error_location)); result = false; } else if (0 == (consequent = parse_expression())) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR047 - Failed to parse consequent for ternary if-statement", exprtk_error_location)); result = false; } else if (!token_is(token_t::e_colon)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR048 - Expected ':' between ternary if-statement consequent and alternative", exprtk_error_location)); result = false; } else if (0 == (alternative = parse_expression())) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR049 - Failed to parse alternative for ternary if-statement", exprtk_error_location)); result = false; } #ifndef exprtk_disable_string_capabilities if (result) { const bool consq_is_str = is_generally_string_node( consequent); const bool alter_is_str = is_generally_string_node(alternative); if (consq_is_str || alter_is_str) { if (consq_is_str && alter_is_str) { return expression_generator_ .conditional_string(condition, consequent, alternative); } set_error( make_error(parser_error::e_syntax, current_token(), "ERR050 - Return types of ternary if-statement differ", exprtk_error_location)); result = false; } } #endif if (!result) { free_node(node_allocator_, condition); free_node(node_allocator_, consequent); free_node(node_allocator_, alternative); return error_node(); } else return expression_generator_ .conditional(condition, consequent, alternative); } inline expression_node_ptr parse_while_loop() { // Parse: [while][(][test expr][)][{][expression][}] expression_node_ptr condition = error_node(); expression_node_ptr branch = error_node(); expression_node_ptr result_node = error_node(); bool result = true; next_token(); if (!token_is(token_t::e_lbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR051 - Expected '(' at start of while-loop condition statement", exprtk_error_location)); return error_node(); } else if (0 == (condition = parse_expression())) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR052 - Failed to parse condition for while-loop", exprtk_error_location)); return error_node(); } else if (!token_is(token_t::e_rbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR053 - Expected ')' at end of while-loop condition statement", exprtk_error_location)); result = false; } brkcnt_list_.push_front(false); if (result) { if (0 == (branch = parse_multi_sequence("while-loop"))) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR054 - Failed to parse body of while-loop")); result = false; } else if (0 == (result_node = expression_generator_.while_loop(condition, branch, brkcnt_list_.front()))) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR055 - Failed to synthesize while-loop", exprtk_error_location)); result = false; } } if (!result) { free_node(node_allocator_, branch); free_node(node_allocator_, condition); free_node(node_allocator_,result_node); brkcnt_list_.pop_front(); return error_node(); } else return result_node; } inline expression_node_ptr parse_repeat_until_loop() { // Parse: [repeat][{][expression][}][until][(][test expr][)] expression_node_ptr condition = error_node(); expression_node_ptr branch = error_node(); next_token(); std::vector arg_list; std::vector side_effect_list; scoped_vec_delete sdd((*this),arg_list); brkcnt_list_.push_front(false); if (details::imatch(current_token().value,"until")) { next_token(); branch = node_allocator_.allocate >(); } else { token_t::token_type seperator = token_t::e_eof; scope_handler sh(*this); scoped_bool_or_restorer sbr(state_.side_effect_present); for ( ; ; ) { state_.side_effect_present = false; expression_node_ptr arg = parse_expression(); if (0 == arg) return error_node(); else { arg_list.push_back(arg); side_effect_list.push_back(state_.side_effect_present); } if (details::imatch(current_token().value,"until")) { next_token(); break; } bool is_next_until = peek_token_is(token_t::e_symbol) && peek_token_is("until"); if (!token_is(seperator) && is_next_until) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR056 - Expected '" + token_t::to_str(seperator) + "' in body of repeat until loop", exprtk_error_location)); return error_node(); } if (details::imatch(current_token().value,"until")) { next_token(); break; } } branch = simplify(arg_list,side_effect_list); sdd.delete_ptr = (0 == branch); if (sdd.delete_ptr) { brkcnt_list_.pop_front(); set_error( make_error(parser_error::e_syntax, current_token(), "ERR057 - Failed to parse body of repeat until loop", exprtk_error_location)); return error_node(); } } if (!token_is(token_t::e_lbracket)) { brkcnt_list_.pop_front(); set_error( make_error(parser_error::e_syntax, current_token(), "ERR058 - Expected '(' before condition statement of repeat until loop", exprtk_error_location)); free_node(node_allocator_,branch); return error_node(); } else if (0 == (condition = parse_expression())) { brkcnt_list_.pop_front(); set_error( make_error(parser_error::e_syntax, current_token(), "ERR059 - Failed to parse condition for repeat until loop", exprtk_error_location)); free_node(node_allocator_,branch); return error_node(); } else if (!token_is(token_t::e_rbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR060 - Expected ')' after condition of repeat until loop", exprtk_error_location)); free_node(node_allocator_, branch); free_node(node_allocator_, condition); brkcnt_list_.pop_front(); return error_node(); } expression_node_ptr result; result = expression_generator_ .repeat_until_loop(condition, branch, brkcnt_list_.front()); if (0 == result) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR061 - Failed to synthesize repeat until loop", exprtk_error_location)); free_node(node_allocator_,condition); brkcnt_list_.pop_front(); return error_node(); } else { brkcnt_list_.pop_front(); return result; } } inline expression_node_ptr parse_for_loop() { expression_node_ptr initialiser = error_node(); expression_node_ptr condition = error_node(); expression_node_ptr incrementor = error_node(); expression_node_ptr loop_body = error_node(); scope_element* se = 0; bool result = true; std::string loop_counter_symbol; next_token(); scope_handler sh(*this); if (!token_is(token_t::e_lbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR062 - Expected '(' at start of for-loop", exprtk_error_location)); return error_node(); } if (!token_is(token_t::e_eof)) { if ( !token_is(token_t::e_symbol,prsrhlpr_t::e_hold) && details::imatch(current_token().value,"var") ) { next_token(); if (!token_is(token_t::e_symbol,prsrhlpr_t::e_hold)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR063 - Expected a variable at the start of initialiser section of for-loop", exprtk_error_location)); return error_node(); } else if (!peek_token_is(token_t::e_assign)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR064 - Expected variable assignment of initialiser section of for-loop", exprtk_error_location)); return error_node(); } loop_counter_symbol = current_token().value; se = &sem_.get_element(loop_counter_symbol); if ((se->name == loop_counter_symbol) && se->active) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR065 - For-loop variable '" + loop_counter_symbol+ "' is being shadowed by a previous declaration", exprtk_error_location)); return error_node(); } else if (!symtab_store_.is_variable(loop_counter_symbol)) { if ( !se->active && (se->name == loop_counter_symbol) && (se->type == scope_element::e_variable) ) { se->active = true; se->ref_count++; } else { scope_element nse; nse.name = loop_counter_symbol; nse.active = true; nse.ref_count = 1; nse.type = scope_element::e_variable; nse.depth = state_.scope_depth; nse.data = new T(T(0)); nse.var_node = node_allocator_.allocate(*(T*)(nse.data)); if (!sem_.add_element(nse)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR066 - Failed to add new local variable '" + loop_counter_symbol + "' to SEM", exprtk_error_location)); sem_.free_element(nse); result = false; } else { exprtk_debug(("parse_for_loop() - INFO - Added new local variable: %s\n",nse.name.c_str())); state_.activate_side_effect("parse_for_loop()"); } } } } if (0 == (initialiser = parse_expression())) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR067 - Failed to parse initialiser of for-loop", exprtk_error_location)); result = false; } else if (!token_is(token_t::e_eof)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR068 - Expected ';' after initialiser of for-loop", exprtk_error_location)); result = false; } } if (!token_is(token_t::e_eof)) { if (0 == (condition = parse_expression())) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR069 - Failed to parse condition of for-loop", exprtk_error_location)); result = false; } else if (!token_is(token_t::e_eof)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR070 - Expected ';' after condition section of for-loop", exprtk_error_location)); result = false; } } if (!token_is(token_t::e_rbracket)) { if (0 == (incrementor = parse_expression())) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR071 - Failed to parse incrementor of for-loop", exprtk_error_location)); result = false; } else if (!token_is(token_t::e_rbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR072 - Expected ')' after incrementor section of for-loop", exprtk_error_location)); result = false; } } if (result) { brkcnt_list_.push_front(false); if (0 == (loop_body = parse_multi_sequence("for-loop"))) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR073 - Failed to parse body of for-loop", exprtk_error_location)); result = false; } } if (!result) { if (se) { se->ref_count--; } sem_.cleanup(); free_node(node_allocator_, initialiser); free_node(node_allocator_, condition); free_node(node_allocator_, incrementor); free_node(node_allocator_, loop_body); if (!brkcnt_list_.empty()) { brkcnt_list_.pop_front(); } return error_node(); } else { expression_node_ptr result_node = expression_generator_.for_loop(initialiser, condition, incrementor, loop_body, brkcnt_list_.front()); brkcnt_list_.pop_front(); return result_node; } } inline expression_node_ptr parse_switch_statement() { std::vector arg_list; expression_node_ptr result = error_node(); if (!details::imatch(current_token().value,"switch")) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR074 - Expected keyword 'switch'", exprtk_error_location)); return error_node(); } scoped_vec_delete svd((*this),arg_list); next_token(); if (!token_is(token_t::e_lcrlbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR075 - Expected '{' for call to switch statement", exprtk_error_location)); return error_node(); } for ( ; ; ) { if (!details::imatch("case",current_token().value)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR076 - Expected either a 'case' or 'default' statement", exprtk_error_location)); return error_node(); } next_token(); expression_node_ptr condition = parse_expression(); if (0 == condition) return error_node(); else if (!token_is(token_t::e_colon)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR077 - Expected ':' for case of switch statement", exprtk_error_location)); return error_node(); } expression_node_ptr consequent = parse_expression(); if (0 == consequent) return error_node(); else if (!token_is(token_t::e_eof)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR078 - Expected ';' at end of case for switch statement", exprtk_error_location)); return error_node(); } // Can we optimise away the case statement? if (is_constant_node(condition) && is_false(condition)) { free_node(node_allocator_, condition); free_node(node_allocator_, consequent); } else { arg_list.push_back( condition); arg_list.push_back(consequent); } if (details::imatch("default",current_token().value)) { next_token(); if (!token_is(token_t::e_colon)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR079 - Expected ':' for default of switch statement", exprtk_error_location)); return error_node(); } expression_node_ptr default_statement = error_node(); if (token_is(token_t::e_lcrlbracket,prsrhlpr_t::e_hold)) default_statement = parse_multi_sequence("switch-default"); else default_statement = parse_expression(); if (0 == default_statement) return error_node(); else if (!token_is(token_t::e_eof)) { free_node(node_allocator_,default_statement); set_error( make_error(parser_error::e_syntax, current_token(), "ERR080 - Expected ';' at end of default for switch statement", exprtk_error_location)); return error_node(); } arg_list.push_back(default_statement); break; } } if (!token_is(token_t::e_rcrlbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR081 - Expected '}' at end of switch statement", exprtk_error_location)); return error_node(); } result = expression_generator_.switch_statement(arg_list); svd.delete_ptr = (0 == result); return result; } inline expression_node_ptr parse_multi_switch_statement() { std::vector arg_list; expression_node_ptr result = error_node(); if (!details::imatch(current_token().value,"[*]")) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR082 - Expected token '[*]'", exprtk_error_location)); return error_node(); } scoped_vec_delete svd((*this),arg_list); next_token(); if (!token_is(token_t::e_lcrlbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR083 - Expected '{' for call to [*] statement", exprtk_error_location)); return error_node(); } for ( ; ; ) { if (!details::imatch("case",current_token().value)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR084 - Expected a 'case' statement for multi-switch", exprtk_error_location)); return error_node(); } next_token(); expression_node_ptr condition = parse_expression(); if (0 == condition) return error_node(); if (!token_is(token_t::e_colon)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR085 - Expected ':' for case of [*] statement", exprtk_error_location)); return error_node(); } expression_node_ptr consequent = parse_expression(); if (0 == consequent) return error_node(); if (!token_is(token_t::e_eof)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR086 - Expected ';' at end of case for [*] statement", exprtk_error_location)); return error_node(); } // Can we optimise away the case statement? if (is_constant_node(condition) && is_false(condition)) { free_node(node_allocator_, condition); free_node(node_allocator_, consequent); } else { arg_list.push_back(condition); arg_list.push_back(consequent); } if (token_is(token_t::e_rcrlbracket,prsrhlpr_t::e_hold)) { break; } } if (!token_is(token_t::e_rcrlbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR087 - Expected '}' at end of [*] statement", exprtk_error_location)); return error_node(); } result = expression_generator_.multi_switch_statement(arg_list); svd.delete_ptr = (0 == result); return result; } inline expression_node_ptr parse_vararg_function() { std::vector arg_list; expression_node_ptr result = error_node(); details::operator_type opt_type = details::e_default; const std::string symbol = current_token().value; if (details::imatch(symbol,"~")) { next_token(); return parse_multi_sequence(); } else if (details::imatch(symbol,"[*]")) { return parse_multi_switch_statement(); } else if (details::imatch(symbol,"avg" )) opt_type = details::e_avg ; else if (details::imatch(symbol,"mand")) opt_type = details::e_mand; else if (details::imatch(symbol,"max" )) opt_type = details::e_max ; else if (details::imatch(symbol,"min" )) opt_type = details::e_min ; else if (details::imatch(symbol,"mor" )) opt_type = details::e_mor ; else if (details::imatch(symbol,"mul" )) opt_type = details::e_prod; else if (details::imatch(symbol,"sum" )) opt_type = details::e_sum ; else { set_error( make_error(parser_error::e_syntax, current_token(), "ERR088 - Unsupported vararg function: " + symbol, exprtk_error_location)); return error_node(); } scoped_vec_delete sdd((*this),arg_list); lodge_symbol(symbol,e_st_function); next_token(); if (!token_is(token_t::e_lbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR089 - Expected '(' for call to vararg function: " + symbol, exprtk_error_location)); return error_node(); } for ( ; ; ) { expression_node_ptr arg = parse_expression(); if (0 == arg) return error_node(); else arg_list.push_back(arg); if (token_is(token_t::e_rbracket)) break; else if (!token_is(token_t::e_comma)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR090 - Expected ',' for call to vararg function: " + symbol, exprtk_error_location)); return error_node(); } } result = expression_generator_.vararg_function(opt_type,arg_list); sdd.delete_ptr = (0 == result); return result; } #ifndef exprtk_disable_string_capabilities inline expression_node_ptr parse_string_range_statement(expression_node_ptr& expression) { if (!token_is(token_t::e_lsqrbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR091 - Expected '[' as start of string range definition", exprtk_error_location)); free_node(node_allocator_,expression); return error_node(); } else if (token_is(token_t::e_rsqrbracket)) { return node_allocator_.allocate >(expression); } range_t rp; if (!parse_range(rp,true)) { free_node(node_allocator_,expression); return error_node(); } expression_node_ptr result = expression_generator_(expression,rp); if (0 == result) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR092 - Failed to generate string range node", exprtk_error_location)); free_node(node_allocator_,expression); } rp.clear(); return result; } #else inline expression_node_ptr parse_string_range_statement(expression_node_ptr&) { return error_node(); } #endif inline void parse_pending_string_rangesize(expression_node_ptr& expression) { // Allow no more than 100 range calls, eg: s[][][]...[][] const std::size_t max_rangesize_parses = 100; std::size_t i = 0; while ( (0 != expression) && (i++ < max_rangesize_parses) && error_list_.empty() && is_generally_string_node(expression) && token_is(token_t::e_lsqrbracket,prsrhlpr_t::e_hold) ) { expression = parse_string_range_statement(expression); } } template class Sequence> inline expression_node_ptr simplify(Sequence& expression_list, Sequence& side_effect_list, const bool specialise_on_final_type = false) { if (expression_list.empty()) return error_node(); else if (1 == expression_list.size()) return expression_list[0]; Sequence tmp_expression_list; bool return_node_present = false; for (std::size_t i = 0; i < (expression_list.size() - 1); ++i) { if (is_variable_node(expression_list[i])) continue; else if ( is_return_node (expression_list[i]) || is_break_node (expression_list[i]) || is_continue_node(expression_list[i]) ) { tmp_expression_list.push_back(expression_list[i]); // Remove all subexpressions after first short-circuit // node has been encountered. for (std::size_t j = i + 1; j < expression_list.size(); ++j) { free_node(node_allocator_,expression_list[j]); } return_node_present = true; break; } else if ( is_constant_node(expression_list[i]) || is_null_node (expression_list[i]) || !side_effect_list[i] ) { free_node(node_allocator_,expression_list[i]); continue; } else tmp_expression_list.push_back(expression_list[i]); } if (!return_node_present) { tmp_expression_list.push_back(expression_list.back()); } expression_list.swap(tmp_expression_list); if (tmp_expression_list.size() > expression_list.size()) { exprtk_debug(("simplify() - Reduced subexpressions from %d to %d\n", static_cast(tmp_expression_list.size()), static_cast(expression_list .size()))); } if ( return_node_present || side_effect_list.back() || (expression_list.size() > 1) ) state_.activate_side_effect("simplify()"); if (1 == expression_list.size()) return expression_list[0]; else if (specialise_on_final_type && is_generally_string_node(expression_list.back())) return expression_generator_.vararg_function(details::e_smulti,expression_list); else return expression_generator_.vararg_function(details::e_multi,expression_list); } inline expression_node_ptr parse_multi_sequence(const std::string& source = "") { token_t::token_type close_bracket = token_t::e_rcrlbracket; token_t::token_type seperator = token_t::e_eof; if (!token_is(token_t::e_lcrlbracket)) { if (token_is(token_t::e_lbracket)) { close_bracket = token_t::e_rbracket; seperator = token_t::e_comma; } else { set_error( make_error(parser_error::e_syntax, current_token(), "ERR093 - Expected '" + token_t::to_str(close_bracket) + "' for call to multi-sequence" + ((!source.empty()) ? std::string(" section of " + source): ""), exprtk_error_location)); return error_node(); } } else if (token_is(token_t::e_rcrlbracket)) { return node_allocator_.allocate >(); } std::vector arg_list; std::vector side_effect_list; expression_node_ptr result = error_node(); scoped_vec_delete sdd((*this),arg_list); scope_handler sh(*this); scoped_bool_or_restorer sbr(state_.side_effect_present); for ( ; ; ) { state_.side_effect_present = false; expression_node_ptr arg = parse_expression(); if (0 == arg) return error_node(); else { arg_list.push_back(arg); side_effect_list.push_back(state_.side_effect_present); } if (token_is(close_bracket)) break; bool is_next_close = peek_token_is(close_bracket); if (!token_is(seperator) && is_next_close) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR094 - Expected '" + details::to_str(seperator) + "' for call to multi-sequence section of " + source, exprtk_error_location)); return error_node(); } if (token_is(close_bracket)) break; } result = simplify(arg_list,side_effect_list,source.empty()); sdd.delete_ptr = (0 == result); return result; } inline bool parse_range(range_t& rp, const bool skip_lsqr = false) { // Examples of valid ranges: // 1. [1:5] -> 1..5 // 2. [ :5] -> 0..5 // 3. [1: ] -> 1..end // 4. [x:y] -> x..y where x <= y // 5. [x+1:y/2] -> x+1..y/2 where x+1 <= y/2 // 6. [ :y] -> 0..y where 0 <= y // 7. [x: ] -> x..end where x <= end rp.clear(); if (!skip_lsqr && !token_is(token_t::e_lsqrbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR095 - Expected '[' for start of range", exprtk_error_location)); return false; } if (token_is(token_t::e_colon)) { rp.n0_c.first = true; rp.n0_c.second = 0; rp.cache.first = 0; } else { expression_node_ptr r0 = parse_expression(); if (0 == r0) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR096 - Failed parse begin section of range", exprtk_error_location)); return false; } else if (is_constant_node(r0)) { const T r0_value = r0->value(); if (r0_value >= T(0)) { rp.n0_c.first = true; rp.n0_c.second = static_cast(details::numeric::to_int64(r0_value)); rp.cache.first = rp.n0_c.second; } free_node(node_allocator_,r0); if (r0_value < T(0)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR097 - Range lower bound less than zero! Constraint: r0 >= 0", exprtk_error_location)); return false; } } else { rp.n0_e.first = true; rp.n0_e.second = r0; } if (!token_is(token_t::e_colon)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR098 - Expected ':' for break in range", exprtk_error_location)); rp.free(); return false; } } if (token_is(token_t::e_rsqrbracket)) { rp.n1_c.first = true; rp.n1_c.second = std::numeric_limits::max(); } else { expression_node_ptr r1 = parse_expression(); if (0 == r1) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR099 - Failed parse end section of range", exprtk_error_location)); rp.free(); return false; } else if (is_constant_node(r1)) { const T r1_value = r1->value(); if (r1_value >= T(0)) { rp.n1_c.first = true; rp.n1_c.second = static_cast(details::numeric::to_int64(r1_value)); rp.cache.second = rp.n1_c.second; } free_node(node_allocator_,r1); if (r1_value < T(0)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR100 - Range upper bound less than zero! Constraint: r1 >= 0", exprtk_error_location)); return false; } } else { rp.n1_e.first = true; rp.n1_e.second = r1; } if (!token_is(token_t::e_rsqrbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR101 - Expected ']' for start of range", exprtk_error_location)); rp.free(); return false; } } if (rp.const_range()) { std::size_t r0 = 0; std::size_t r1 = 0; const bool rp_result = rp(r0,r1); if (!rp_result || (r0 > r1)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR102 - Invalid range, Constraint: r0 <= r1", exprtk_error_location)); return false; } } return true; } inline void lodge_symbol(const std::string& symbol, const symbol_type st) { dec_.add_symbol(symbol,st); } #ifndef exprtk_disable_string_capabilities inline expression_node_ptr parse_string() { const std::string symbol = current_token().value; typedef details::stringvar_node* strvar_node_t; expression_node_ptr result = error_node(); strvar_node_t const_str_node = static_cast(0); scope_element& se = sem_.get_active_element(symbol); if (scope_element::e_string == se.type) { se.active = true; result = se.str_node; lodge_symbol(symbol,e_st_local_string); } else { if (!symtab_store_.is_conststr_stringvar(symbol)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR103 - Unknown string symbol", exprtk_error_location)); return error_node(); } result = symtab_store_.get_stringvar(symbol); if (symtab_store_.is_constant_string(symbol)) { const_str_node = static_cast(result); result = expression_generator_(const_str_node->str()); } lodge_symbol(symbol,e_st_string); } if (peek_token_is(token_t::e_lsqrbracket)) { next_token(); if (peek_token_is(token_t::e_rsqrbracket)) { next_token(); next_token(); if (const_str_node) { free_node(node_allocator_,result); return expression_generator_(T(const_str_node->size())); } else return node_allocator_.allocate > (static_cast*>(result)->ref()); } range_t rp; if (!parse_range(rp)) { free_node(node_allocator_,result); return error_node(); } else if (const_str_node) { free_node(node_allocator_,result); result = expression_generator_(const_str_node->ref(),rp); } else result = expression_generator_(static_cast*> (result)->ref(), rp); if (result) rp.clear(); } else next_token(); return result; } #else inline expression_node_ptr parse_string() { return error_node(); } #endif #ifndef exprtk_disable_string_capabilities inline expression_node_ptr parse_const_string() { const std::string const_str = current_token().value; expression_node_ptr result = expression_generator_(const_str); if (peek_token_is(token_t::e_lsqrbracket)) { next_token(); if (peek_token_is(token_t::e_rsqrbracket)) { next_token(); next_token(); free_node(node_allocator_,result); return expression_generator_(T(const_str.size())); } range_t rp; if (!parse_range(rp)) { free_node(node_allocator_,result); return error_node(); } free_node(node_allocator_,result); if (rp.n1_c.first && (rp.n1_c.second == std::numeric_limits::max())) { rp.n1_c.second = const_str.size() - 1; rp.cache.second = rp.n1_c.second; } if ( (rp.n0_c.first && (rp.n0_c.second >= const_str.size())) || (rp.n1_c.first && (rp.n1_c.second >= const_str.size())) ) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR104 - Overflow in range for string: '" + const_str + "'[" + (rp.n0_c.first ? details::to_str(static_cast(rp.n0_c.second)) : "?") + ":" + (rp.n1_c.first ? details::to_str(static_cast(rp.n1_c.second)) : "?") + "]", exprtk_error_location)); return error_node(); } result = expression_generator_(const_str,rp); if (result) rp.clear(); } else next_token(); return result; } #else inline expression_node_ptr parse_const_string() { return error_node(); } #endif inline expression_node_ptr parse_vector() { const std::string symbol = current_token().value; vector_holder_ptr vec = vector_holder_ptr(0); const scope_element& se = sem_.get_active_element(symbol); if ( !details::imatch(se.name, symbol) || (se.depth > state_.scope_depth) || (scope_element::e_vector != se.type) ) { if (0 == (vec = symtab_store_.get_vector(symbol))) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR105 - Symbol '" + symbol+ " not a vector", exprtk_error_location)); return error_node(); } } else vec = se.vec_node; expression_node_ptr index_expr = error_node(); next_token(); if (!token_is(token_t::e_lsqrbracket)) { return node_allocator_.allocate(vec); } else if (token_is(token_t::e_rsqrbracket)) { return expression_generator_(T(vec->size())); } else if (0 == (index_expr = parse_expression())) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR106 - Failed to parse index for vector: '" + symbol + "'", exprtk_error_location)); return error_node(); } else if (!token_is(token_t::e_rsqrbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR107 - Expected ']' for index of vector: '" + symbol + "'", exprtk_error_location)); free_node(node_allocator_,index_expr); return error_node(); } // Perform compile-time range check if (details::is_constant_node(index_expr)) { const std::size_t index = static_cast(details::numeric::to_int32(index_expr->value())); const std::size_t vec_size = vec->size(); if (index >= vec_size) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR108 - Index of " + details::to_str(index) + " out of range for " "vector '" + symbol + "' of size " + details::to_str(vec_size), exprtk_error_location)); free_node(node_allocator_,index_expr); return error_node(); } } return expression_generator_.vector_element(symbol,vec,index_expr); } inline expression_node_ptr parse_vararg_function_call(ivararg_function* vararg_function, const std::string& vararg_function_name) { std::vector arg_list; expression_node_ptr result = error_node(); scoped_vec_delete sdd((*this),arg_list); next_token(); if (token_is(token_t::e_lbracket)) { if (token_is(token_t::e_rbracket)) { if (!vararg_function->allow_zero_parameters()) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR109 - Zero parameter call to vararg function: " + vararg_function_name + " not allowed", exprtk_error_location)); return error_node(); } } else { for ( ; ; ) { expression_node_ptr arg = parse_expression(); if (0 == arg) return error_node(); else arg_list.push_back(arg); if (token_is(token_t::e_rbracket)) break; else if (!token_is(token_t::e_comma)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR110 - Expected ',' for call to vararg function: " + vararg_function_name, exprtk_error_location)); return error_node(); } } } } else if (!vararg_function->allow_zero_parameters()) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR111 - Zero parameter call to vararg function: " + vararg_function_name + " not allowed", exprtk_error_location)); return error_node(); } if (arg_list.size() < vararg_function->min_num_args()) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR112 - Invalid number of parameters to call to vararg function: " + vararg_function_name + ", require at least " + details::to_str(static_cast(vararg_function->min_num_args())) + " parameters", exprtk_error_location)); return error_node(); } else if (arg_list.size() > vararg_function->max_num_args()) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR113 - Invalid number of parameters to call to vararg function: " + vararg_function_name + ", require no more than " + details::to_str(static_cast(vararg_function->max_num_args())) + " parameters", exprtk_error_location)); return error_node(); } result = expression_generator_.vararg_function_call(vararg_function,arg_list); sdd.delete_ptr = (0 == result); return result; } class type_checker { public: typedef parser parser_t; typedef std::vector param_seq_list_t; type_checker(parser_t& p, const std::string& func_name, const std::string& param_seq) : invalid_state_(true), parser_(p), function_name_(func_name) { split(param_seq); } bool verify(const std::string& param_seq, std::size_t& pseq_index) { if (param_seq_list_.empty()) return true; std::vector > error_list; for (std::size_t i = 0; i < param_seq_list_.size(); ++i) { details::char_t diff_value = 0; std::size_t diff_index = 0; bool result = details::sequence_match(param_seq_list_[i], param_seq, diff_index,diff_value); if (result) { pseq_index = i; return true; } else error_list.push_back(std::make_pair(diff_index,diff_value)); } if (1 == error_list.size()) { parser_. set_error( make_error(parser_error::e_syntax, parser_.current_token(), "ERR114 - Failed parameter type check for function '" + function_name_ + "', " "Expected '" + param_seq_list_[0] + "' call set: '" + param_seq +"'", exprtk_error_location)); } else { // find first with largest diff_index; std::size_t max_diff_index = 0; for (std::size_t i = 1; i < error_list.size(); ++i) { if (error_list[i].first > error_list[max_diff_index].first) { max_diff_index = i; } } parser_. set_error( make_error(parser_error::e_syntax, parser_.current_token(), "ERR115 - Failed parameter type check for function '" + function_name_ + "', " "Best match: '" + param_seq_list_[max_diff_index] + "' call set: '" + param_seq +"'", exprtk_error_location)); } return false; } std::size_t paramseq_count() const { return param_seq_list_.size(); } std::string paramseq(const std::size_t& index) const { return param_seq_list_[index]; } bool invalid() const { return !invalid_state_; } bool allow_zero_parameters() const { return param_seq_list_.end() != std::find(param_seq_list_.begin(), param_seq_list_.end(), "Z"); } private: void split(const std::string& s) { if (s.empty()) return; std::size_t start = 0; std::size_t end = 0; param_seq_list_t param_seq_list; struct token_validator { static inline bool process(const std::string& str, std::size_t s, std::size_t e, param_seq_list_t& psl) { if ( (e - s) && (std::string::npos == str.find("?*")) && (std::string::npos == str.find("**")) ) { const std::string curr_str = str.substr(s, e - s); if ("Z" == curr_str) { psl.push_back(curr_str); return true; } else if (std::string::npos == curr_str.find_first_not_of("STV*?|")) { psl.push_back(curr_str); return true; } } return false; } }; while (std::string::npos != (end = s.find('|',start))) { if (!token_validator::process(s, start, end, param_seq_list)) { invalid_state_ = false; const std::string err_param_seq = s.substr(start, end - start); parser_. set_error( make_error(parser_error::e_syntax, parser_.current_token(), "ERR116 - Invalid parameter sequence of '" + err_param_seq + "' for function: " + function_name_, exprtk_error_location)); return; } else start = end + 1; } if (start < s.size()) { if (token_validator::process(s, start, s.size(), param_seq_list)) param_seq_list_ = param_seq_list; else { const std::string err_param_seq = s.substr(start, s.size() - start); parser_. set_error( make_error(parser_error::e_syntax, parser_.current_token(), "ERR117 - Invalid parameter sequence of '" + err_param_seq + "' for function: " + function_name_, exprtk_error_location)); return; } } } type_checker(const type_checker&); type_checker& operator=(const type_checker&); bool invalid_state_; parser_t& parser_; std::string function_name_; param_seq_list_t param_seq_list_; }; inline expression_node_ptr parse_generic_function_call(igeneric_function* function, const std::string& function_name) { std::vector arg_list; scoped_vec_delete sdd((*this),arg_list); next_token(); std::string param_type_list; type_checker tc((*this), function_name, function->parameter_sequence); if (tc.invalid()) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR118 - Type checker instantiation failure for generic function: " + function_name, exprtk_error_location)); return error_node(); } if ( !function->parameter_sequence.empty() && function->allow_zero_parameters () && !tc .allow_zero_parameters () ) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR119 - Mismatch in zero parameter condition for generic function: " + function_name, exprtk_error_location)); return error_node(); } if (token_is(token_t::e_lbracket)) { if (token_is(token_t::e_rbracket)) { if ( !function->allow_zero_parameters() && !tc .allow_zero_parameters() ) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR120 - Zero parameter call to generic function: " + function_name + " not allowed", exprtk_error_location)); return error_node(); } } else { for ( ; ; ) { expression_node_ptr arg = parse_expression(); if (0 == arg) return error_node(); if (is_ivector_node(arg)) param_type_list += 'V'; else if (is_generally_string_node(arg)) param_type_list += 'S'; else // Everything else is assumed to be a scalar returning expression param_type_list += 'T'; arg_list.push_back(arg); if (token_is(token_t::e_rbracket)) break; else if (!token_is(token_t::e_comma)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR121 - Expected ',' for call to generic function: " + function_name, exprtk_error_location)); return error_node(); } } } } else if ( !function->parameter_sequence.empty() && function->allow_zero_parameters () && !tc .allow_zero_parameters () ) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR122 - Zero parameter call to generic function: " + function_name + " not allowed", exprtk_error_location)); return error_node(); } std::size_t param_seq_index = 0; if ( state_.type_check_enabled && !tc.verify(param_type_list, param_seq_index) ) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR123 - Expected ',' for call to generic function: " + function_name, exprtk_error_location)); return error_node(); } expression_node_ptr result = error_node(); if (tc.paramseq_count() <= 1) result = expression_generator_ .generic_function_call(function, arg_list); else result = expression_generator_ .generic_function_call(function, arg_list, param_seq_index); sdd.delete_ptr = (0 == result); return result; } #ifndef exprtk_disable_string_capabilities inline expression_node_ptr parse_string_function_call(igeneric_function* function, const std::string& function_name) { std::vector arg_list; scoped_vec_delete sdd((*this),arg_list); next_token(); std::string param_type_list; type_checker tc((*this), function_name, function->parameter_sequence); if ( (!function->parameter_sequence.empty()) && (0 == tc.paramseq_count()) ) { return error_node(); } if (token_is(token_t::e_lbracket)) { if (!token_is(token_t::e_rbracket)) { for ( ; ; ) { expression_node_ptr arg = parse_expression(); if (0 == arg) return error_node(); if (is_ivector_node(arg)) param_type_list += 'V'; else if (is_generally_string_node(arg)) param_type_list += 'S'; else // Everything else is a scalar returning expression param_type_list += 'T'; arg_list.push_back(arg); if (token_is(token_t::e_rbracket)) break; else if (!token_is(token_t::e_comma)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR124 - Expected ',' for call to string function: " + function_name, exprtk_error_location)); return error_node(); } } } } std::size_t param_seq_index = 0; if (!tc.verify(param_type_list, param_seq_index)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR125 - Expected ',' for call to string function: " + function_name, exprtk_error_location)); return error_node(); } expression_node_ptr result = error_node(); if (tc.paramseq_count() <= 1) result = expression_generator_ .string_function_call(function, arg_list); else result = expression_generator_ .string_function_call(function, arg_list, param_seq_index); sdd.delete_ptr = (0 == result); return result; } #endif template struct parse_special_function_impl { static inline expression_node_ptr process(parser& p,const details::operator_type opt_type) { expression_node_ptr branch[NumberOfParameters]; expression_node_ptr result = error_node(); std::fill_n(branch,NumberOfParameters,reinterpret_cast(0)); scoped_delete sd(p,branch); p.next_token(); if (!p.token_is(token_t::e_lbracket)) { p.set_error( make_error(parser_error::e_syntax, p.current_token(), "ERR126 - Expected '(' for special function", exprtk_error_location)); return error_node(); } for (std::size_t i = 0; i < NumberOfParameters; ++i) { branch[i] = p.parse_expression(); if (0 == branch[i]) { return p.error_node(); } else if (i < (NumberOfParameters - 1)) { if (!p.token_is(token_t::e_comma)) { p.set_error( make_error(parser_error::e_syntax, p.current_token(), "ERR127 - Expected ',' before next parameter of special function", exprtk_error_location)); return p.error_node(); } } } if (!p.token_is(token_t::e_rbracket)) return p.error_node(); else result = p.expression_generator_.special_function(opt_type,branch); sd.delete_ptr = (0 == result); return result; } }; inline expression_node_ptr parse_special_function() { // Expect: $fDD(expr0,expr1,expr2) or $fDD(expr0,expr1,expr2,expr3) if ( !details::is_digit(current_token().value[2]) || !details::is_digit(current_token().value[3]) ) { set_error( make_error(parser_error::e_token, current_token(), "ERR128 - Invalid special function[1]: " + current_token().value, exprtk_error_location)); return error_node(); } const int id = (current_token().value[2] - '0') * 10 + (current_token().value[3] - '0'); if (id >= details::e_sffinal) { set_error( make_error(parser_error::e_token, current_token(), "ERR129 - Invalid special function[2]: " + current_token().value, exprtk_error_location)); return error_node(); } const int sf_3_to_4 = details::e_sf48; const details::operator_type opt_type = details::operator_type(id + 1000); const std::size_t NumberOfParameters = (id < (sf_3_to_4 - 1000)) ? 3U : 4U; switch (NumberOfParameters) { case 3 : return parse_special_function_impl::process((*this),opt_type); case 4 : return parse_special_function_impl::process((*this),opt_type); default : return error_node(); } } inline expression_node_ptr parse_null_statement() { next_token(); return node_allocator_.allocate >(); } #ifndef exprtk_disable_break_continue inline expression_node_ptr parse_break_statement() { if (state_.parsing_break_stmt) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR130 - Break call within a break call is not allowed", exprtk_error_location)); return error_node(); } scoped_bool_negator sbn(state_.parsing_break_stmt); if (!brkcnt_list_.empty()) { next_token(); brkcnt_list_.front() = true; expression_node_ptr return_expr = error_node(); if (token_is(token_t::e_lsqrbracket)) { if (0 == (return_expr = parse_expression())) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR131 - Failed to parse return expression for 'break' statement", exprtk_error_location)); return error_node(); } else if (!token_is(token_t::e_rsqrbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR132 - Expected ']' at the completion of break's return expression", exprtk_error_location)); free_node(node_allocator_,return_expr); return error_node(); } } state_.activate_side_effect("parse_break_statement()"); return node_allocator_.allocate >(return_expr); } else { set_error( make_error(parser_error::e_syntax, current_token(), "ERR133 - Invalid use of 'break', allowed only in the scope of a loop", exprtk_error_location)); } return error_node(); } inline expression_node_ptr parse_continue_statement() { if (!brkcnt_list_.empty()) { next_token(); brkcnt_list_.front() = true; state_.activate_side_effect("parse_continue_statement()"); return node_allocator_.allocate >(); } else { set_error( make_error(parser_error::e_syntax, current_token(), "ERR134 - Invalid use of 'continue', allowed only in the scope of a loop", exprtk_error_location)); return error_node(); } } #endif inline expression_node_ptr parse_define_vector_statement(const std::string& vec_name) { expression_node_ptr size_expr = error_node(); if (!token_is(token_t::e_lsqrbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR135 - Expected '[' as part of vector size definition", exprtk_error_location)); return error_node(); } else if (0 == (size_expr = parse_expression())) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR136 - Failed to determine size of vector '" + vec_name + "'", exprtk_error_location)); return error_node(); } else if (!is_constant_node(size_expr)) { free_node(node_allocator_,size_expr); set_error( make_error(parser_error::e_syntax, current_token(), "ERR137 - Expected a literal number as size of vector '" + vec_name + "'", exprtk_error_location)); return error_node(); } T vector_size = size_expr->value(); free_node(node_allocator_,size_expr); if ( (vector_size <= T(0)) || std::not_equal_to() (T(0),vector_size - details::numeric::trunc(vector_size)) ) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR138 - Invalid vector size. Must be an integer greater than zero, size: " + details::to_str(details::numeric::to_int32(vector_size)), exprtk_error_location)); return error_node(); } std::vector vec_initilizer_list; scoped_vec_delete svd((*this),vec_initilizer_list); bool single_value_initialiser = false; bool vec_to_vec_initialiser = false; bool null_initialisation = false; if (!token_is(token_t::e_rsqrbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR139 - Expected ']' as part of vector size definition", exprtk_error_location)); return error_node(); } else if (!token_is(token_t::e_eof)) { if (!token_is(token_t::e_assign)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR140 - Expected ':=' as part of vector definition", exprtk_error_location)); return error_node(); } else if (token_is(token_t::e_lsqrbracket)) { expression_node_ptr initialiser = parse_expression(); if (0 == initialiser) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR141 - Failed to parse single vector initialiser", exprtk_error_location)); return error_node(); } vec_initilizer_list.push_back(initialiser); if (!token_is(token_t::e_rsqrbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR142 - Expected ']' to close single value vector initialiser", exprtk_error_location)); return error_node(); } single_value_initialiser = true; } else if (!token_is(token_t::e_lcrlbracket)) { expression_node_ptr initialiser = error_node(); // Is this a vector to vector assignment and initialisation? if (token_t::e_symbol == current_token().type) { // Is it a locally defined vector? scope_element& se = sem_.get_active_element(current_token().value); if (scope_element::e_vector == se.type) { if (0 != (initialiser = parse_expression())) vec_initilizer_list.push_back(initialiser); else return error_node(); } // Are we dealing with a user defined vector? else if (symtab_store_.is_vector(current_token().value)) { lodge_symbol(current_token().value,e_st_vector); if (0 != (initialiser = parse_expression())) vec_initilizer_list.push_back(initialiser); else return error_node(); } // Are we dealing with a null initialisation vector definition? else if (token_is(token_t::e_symbol,"null")) null_initialisation = true; } if (!null_initialisation) { if (0 == initialiser) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR143 - Expected '{' as part of vector initialiser list", exprtk_error_location)); return error_node(); } else vec_to_vec_initialiser = true; } } else if (!token_is(token_t::e_rcrlbracket)) { for ( ; ; ) { expression_node_ptr initialiser = parse_expression(); if (0 == initialiser) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR144 - Expected '{' as part of vector initialiser list", exprtk_error_location)); return error_node(); } else vec_initilizer_list.push_back(initialiser); if (token_is(token_t::e_rcrlbracket)) break; bool is_next_close = peek_token_is(token_t::e_rcrlbracket); if (!token_is(token_t::e_comma) && is_next_close) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR145 - Expected ',' between vector initialisers", exprtk_error_location)); return error_node(); } if (token_is(token_t::e_rcrlbracket)) break; } } if ( !token_is(token_t::e_rbracket ,prsrhlpr_t::e_hold) && !token_is(token_t::e_rcrlbracket,prsrhlpr_t::e_hold) && !token_is(token_t::e_rsqrbracket,prsrhlpr_t::e_hold) ) { if (!token_is(token_t::e_eof)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR146 - Expected ';' at end of vector definition", exprtk_error_location)); return error_node(); } } if (vec_initilizer_list.size() > vector_size) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR147 - Initialiser list larger than the number of elements in the vector: '" + vec_name + "'", exprtk_error_location)); return error_node(); } } typename symbol_table_t::vector_holder_ptr vec_holder = typename symbol_table_t::vector_holder_ptr(0); const std::size_t vec_size = static_cast(details::numeric::to_int32(vector_size)); scope_element& se = sem_.get_element(vec_name); if (se.name == vec_name) { if (se.active) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR148 - Illegal redefinition of local vector: '" + vec_name + "'", exprtk_error_location)); return error_node(); } else if ( (se.size == vec_size) && (scope_element::e_vector == se.type) ) { vec_holder = se.vec_node; se.active = true; se.depth = state_.scope_depth; se.ref_count++; } } if (0 == vec_holder) { scope_element nse; nse.name = vec_name; nse.active = true; nse.ref_count = 1; nse.type = scope_element::e_vector; nse.depth = state_.scope_depth; nse.size = vec_size; nse.data = new T[vec_size]; nse.vec_node = new typename scope_element::vector_holder_t((T*)(nse.data),nse.size); if (!sem_.add_element(nse)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR149 - Failed to add new local vector '" + vec_name + "' to SEM", exprtk_error_location)); sem_.free_element(nse); return error_node(); } vec_holder = nse.vec_node; exprtk_debug(("parse_define_vector_statement() - INFO - Added new local vector: %s[%d]\n", nse.name.c_str(), static_cast(nse.size))); } state_.activate_side_effect("parse_define_vector_statement()"); lodge_symbol(vec_name,e_st_local_vector); expression_node_ptr result = error_node(); if (null_initialisation) result = expression_generator_(T(0.0)); else if (vec_to_vec_initialiser) result = expression_generator_( details::e_assign, node_allocator_.allocate(vec_holder), vec_initilizer_list[0]); else result = node_allocator_ .allocate >( (*vec_holder)[0], vec_size, vec_initilizer_list, single_value_initialiser); svd.delete_ptr = (0 == result); return result; } #ifndef exprtk_disable_string_capabilities inline expression_node_ptr parse_define_string_statement(const std::string& str_name, expression_node_ptr initialisation_expression) { stringvar_node_t* str_node = reinterpret_cast(0); scope_element& se = sem_.get_element(str_name); if (se.name == str_name) { if (se.active) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR150 - Illegal redefinition of local variable: '" + str_name + "'", exprtk_error_location)); free_node(node_allocator_,initialisation_expression); return error_node(); } else if (scope_element::e_string == se.type) { str_node = se.str_node; se.active = true; se.depth = state_.scope_depth; se.ref_count++; } } if (0 == str_node) { scope_element nse; nse.name = str_name; nse.active = true; nse.ref_count = 1; nse.type = scope_element::e_string; nse.depth = state_.scope_depth; nse.data = new std::string; nse.str_node = new stringvar_node_t(*(std::string*)(nse.data)); if (!sem_.add_element(nse)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR151 - Failed to add new local string variable '" + str_name + "' to SEM", exprtk_error_location)); free_node(node_allocator_,initialisation_expression); sem_.free_element(nse); return error_node(); } str_node = nse.str_node; exprtk_debug(("parse_define_string_statement() - INFO - Added new local string variable: %s\n",nse.name.c_str())); } lodge_symbol(str_name,e_st_local_string); state_.activate_side_effect("parse_define_string_statement()"); expression_node_ptr branch[2] = {0}; branch[0] = str_node; branch[1] = initialisation_expression; return expression_generator_(details::e_assign,branch); } #else inline expression_node_ptr parse_define_string_statement(const std::string&, expression_node_ptr) { return error_node(); } #endif inline bool local_variable_is_shadowed(const std::string& symbol) { const scope_element& se = sem_.get_element(symbol); return (se.name == symbol) && se.active; } inline expression_node_ptr parse_define_var_statement() { if (settings_.vardef_disabled()) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR152 - Illegal variable definition", exprtk_error_location)); return error_node(); } else if (!details::imatch(current_token().value,"var")) { return error_node(); } else next_token(); const std::string var_name = current_token().value; expression_node_ptr initialisation_expression = error_node(); if (!token_is(token_t::e_symbol)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR153 - Expected a symbol for variable definition", exprtk_error_location)); return error_node(); } else if (details::is_reserved_symbol(var_name)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR154 - Illegal redefinition of reserved keyword: '" + var_name + "'", exprtk_error_location)); return error_node(); } else if (symtab_store_.symbol_exists(var_name)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR155 - Illegal redefinition of variable '" + var_name + "'", exprtk_error_location)); return error_node(); } else if (local_variable_is_shadowed(var_name)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR156 - Illegal redefinition of local variable: '" + var_name + "'", exprtk_error_location)); return error_node(); } else if (token_is(token_t::e_lsqrbracket,prsrhlpr_t::e_hold)) { return parse_define_vector_statement(var_name); } else if (token_is(token_t::e_lcrlbracket,prsrhlpr_t::e_hold)) { return parse_uninitialised_var_statement(var_name); } else if (token_is(token_t::e_assign)) { if (0 == (initialisation_expression = parse_expression())) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR157 - Failed to parse initialisation expression", exprtk_error_location)); return error_node(); } } if ( !token_is(token_t::e_rbracket ,prsrhlpr_t::e_hold) && !token_is(token_t::e_rcrlbracket,prsrhlpr_t::e_hold) && !token_is(token_t::e_rsqrbracket,prsrhlpr_t::e_hold) ) { if (!token_is(token_t::e_eof,prsrhlpr_t::e_hold)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR158 - Expected ';' after variable definition", exprtk_error_location)); free_node(node_allocator_,initialisation_expression); return error_node(); } } if ( (0 != initialisation_expression) && details::is_generally_string_node(initialisation_expression) ) { return parse_define_string_statement(var_name,initialisation_expression); } expression_node_ptr var_node = reinterpret_cast(0); scope_element& se = sem_.get_element(var_name); if (se.name == var_name) { if (se.active) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR159 - Illegal redefinition of local variable: '" + var_name + "'", exprtk_error_location)); free_node(node_allocator_, initialisation_expression); return error_node(); } else if (scope_element::e_variable == se.type) { var_node = se.var_node; se.active = true; se.depth = state_.scope_depth; se.ref_count++; } } if (0 == var_node) { scope_element nse; nse.name = var_name; nse.active = true; nse.ref_count = 1; nse.type = scope_element::e_variable; nse.depth = state_.scope_depth; nse.data = new T(T(0)); nse.var_node = node_allocator_.allocate(*(T*)(nse.data)); if (!sem_.add_element(nse)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR160 - Failed to add new local variable '" + var_name + "' to SEM", exprtk_error_location)); free_node(node_allocator_, initialisation_expression); sem_.free_element(nse); return error_node(); } var_node = nse.var_node; exprtk_debug(("parse_define_var_statement() - INFO - Added new local variable: %s\n",nse.name.c_str())); } state_.activate_side_effect("parse_define_var_statement()"); lodge_symbol(var_name,e_st_local_variable); expression_node_ptr branch[2] = {0}; branch[0] = var_node; branch[1] = initialisation_expression ? initialisation_expression : expression_generator_(T(0)); return expression_generator_(details::e_assign,branch); } inline expression_node_ptr parse_uninitialised_var_statement(const std::string& var_name) { if ( !token_is(token_t::e_lcrlbracket) || !token_is(token_t::e_rcrlbracket) ) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR161 - Expected a '{}' for uninitialised var definition", exprtk_error_location)); return error_node(); } else if (!token_is(token_t::e_eof,prsrhlpr_t::e_hold)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR162 - Expected ';' after uninitialised variable definition", exprtk_error_location)); return error_node(); } expression_node_ptr var_node = reinterpret_cast(0); scope_element& se = sem_.get_element(var_name); if (se.name == var_name) { if (se.active) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR163 - Illegal redefinition of local variable: '" + var_name + "'", exprtk_error_location)); return error_node(); } else if (scope_element::e_variable == se.type) { var_node = se.var_node; se.active = true; se.ref_count++; } } if (0 == var_node) { scope_element nse; nse.name = var_name; nse.active = true; nse.ref_count = 1; nse.type = scope_element::e_variable; nse.depth = state_.scope_depth; nse.ip_index = sem_.next_ip_index(); nse.data = new T(T(0)); nse.var_node = node_allocator_.allocate(*(T*)(nse.data)); if (!sem_.add_element(nse)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR164 - Failed to add new local variable '" + var_name + "' to SEM", exprtk_error_location)); sem_.free_element(nse); return error_node(); } exprtk_debug(("parse_uninitialised_var_statement() - INFO - Added new local variable: %s\n", nse.name.c_str())); } lodge_symbol(var_name,e_st_local_variable); state_.activate_side_effect("parse_uninitialised_var_statement()"); return expression_generator_(T(0)); } inline expression_node_ptr parse_swap_statement() { if (!details::imatch(current_token().value,"swap")) { return error_node(); } else next_token(); if (!token_is(token_t::e_lbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR165 - Expected '(' at start of swap statement", exprtk_error_location)); return error_node(); } expression_node_ptr variable0 = error_node(); expression_node_ptr variable1 = error_node(); bool variable0_generated = false; bool variable1_generated = false; const std::string var0_name = current_token().value; if (!token_is(token_t::e_symbol,prsrhlpr_t::e_hold)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR166 - Expected a symbol for variable or vector element definition", exprtk_error_location)); return error_node(); } else if (peek_token_is(token_t::e_lsqrbracket)) { if (0 == (variable0 = parse_vector())) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR167 - First parameter to swap is an invalid vector element: '" + var0_name + "'", exprtk_error_location)); return error_node(); } variable0_generated = true; } else { if (symtab_store_.is_variable(var0_name)) { variable0 = symtab_store_.get_variable(var0_name); } scope_element& se = sem_.get_element(var0_name); if ( (se.active) && (se.name == var0_name) && (scope_element::e_variable == se.type) ) { variable0 = se.var_node; } lodge_symbol(var0_name,e_st_variable); if (0 == variable0) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR168 - First parameter to swap is an invalid variable: '" + var0_name + "'", exprtk_error_location)); return error_node(); } else next_token(); } if (!token_is(token_t::e_comma)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR169 - Expected ',' between parameters to swap", exprtk_error_location)); if (variable0_generated) { free_node(node_allocator_,variable0); } return error_node(); } const std::string var1_name = current_token().value; if (!token_is(token_t::e_symbol,prsrhlpr_t::e_hold)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR170 - Expected a symbol for variable or vector element definition", exprtk_error_location)); if (variable0_generated) { free_node(node_allocator_,variable0); } return error_node(); } else if (peek_token_is(token_t::e_lsqrbracket)) { if (0 == (variable1 = parse_vector())) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR171 - Second parameter to swap is an invalid vector element: '" + var1_name + "'", exprtk_error_location)); if (variable0_generated) { free_node(node_allocator_,variable0); } return error_node(); } variable1_generated = true; } else { if (symtab_store_.is_variable(var1_name)) { variable1 = symtab_store_.get_variable(var1_name); } scope_element& se = sem_.get_element(var1_name); if ( (se.active) && (se.name == var1_name) && (scope_element::e_variable == se.type) ) { variable1 = se.var_node; } lodge_symbol(var1_name,e_st_variable); if (0 == variable1) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR172 - Second parameter to swap is an invalid variable: '" + var1_name + "'", exprtk_error_location)); if (variable0_generated) { free_node(node_allocator_,variable0); } return error_node(); } else next_token(); } if (!token_is(token_t::e_rbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR173 - Expected ')' at end of swap statement", exprtk_error_location)); if (variable0_generated) { free_node(node_allocator_,variable0); } if (variable1_generated) { free_node(node_allocator_,variable1); } return error_node(); } typedef details::variable_node* variable_node_ptr; variable_node_ptr v0 = variable_node_ptr(0); variable_node_ptr v1 = variable_node_ptr(0); expression_node_ptr result = error_node(); if ( (0 != (v0 = dynamic_cast(variable0))) && (0 != (v1 = dynamic_cast(variable1))) ) { result = node_allocator_.allocate >(v0, v1); if (variable0_generated) { free_node(node_allocator_,variable0); } if (variable1_generated) { free_node(node_allocator_,variable1); } } else result = node_allocator_.allocate > (variable0, variable1); state_.activate_side_effect("parse_swap_statement()"); return result; } #ifndef exprtk_disable_return_statement inline expression_node_ptr parse_return_statement() { if (state_.parsing_return_stmt) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR174 - Return call within a return call is not allowed", exprtk_error_location)); return error_node(); } scoped_bool_negator sbn(state_.parsing_return_stmt); std::vector arg_list; scoped_vec_delete sdd((*this),arg_list); if (!details::imatch(current_token().value,"return")) { return error_node(); } else next_token(); if (!token_is(token_t::e_lsqrbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR175 - Expected '[' at start of return statement", exprtk_error_location)); return error_node(); } else if (!token_is(token_t::e_rsqrbracket)) { for ( ; ; ) { expression_node_ptr arg = parse_expression(); if (0 == arg) return error_node(); arg_list.push_back(arg); if (token_is(token_t::e_rsqrbracket)) break; else if (!token_is(token_t::e_comma)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR176 - Expected ',' between values during call to return", exprtk_error_location)); return error_node(); } } } else if (settings_.zero_return_disabled()) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR177 - Zero parameter return statement not allowed", exprtk_error_location)); return error_node(); } lexer::token prev_token = current_token(); if (token_is(token_t::e_rsqrbracket)) { if (!arg_list.empty()) { set_error( make_error(parser_error::e_syntax, prev_token, "ERR178 - Invalid ']' found during return call", exprtk_error_location)); return error_node(); } } std::string ret_param_type_list; for (std::size_t i = 0; i < arg_list.size(); ++i) { if (0 == arg_list[i]) return error_node(); else if (is_ivector_node(arg_list[i])) ret_param_type_list += 'V'; else if (is_generally_string_node(arg_list[i])) ret_param_type_list += 'S'; else ret_param_type_list += 'T'; } dec_.retparam_list_.push_back(ret_param_type_list); expression_node_ptr result = expression_generator_.return_call(arg_list); sdd.delete_ptr = (0 == result); state_.return_stmt_present = true; state_.activate_side_effect("parse_return_statement()"); return result; } #else inline expression_node_ptr parse_return_statement() { return error_node(); } #endif inline bool post_variable_process(const std::string& symbol) { if ( peek_token_is(token_t::e_lbracket ) || peek_token_is(token_t::e_lcrlbracket) || peek_token_is(token_t::e_lsqrbracket) ) { if (!settings_.commutative_check_enabled()) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR179 - Invalid sequence of variable '"+ symbol + "' and bracket", exprtk_error_location)); return false; } lexer().insert_front(token_t::e_mul); } return true; } inline bool post_bracket_process(const typename token_t::token_type& token, expression_node_ptr& branch) { bool implied_mul = false; if (is_generally_string_node(branch)) return true; const lexer::parser_helper::token_advance_mode hold = prsrhlpr_t::e_hold; switch (token) { case token_t::e_lcrlbracket : implied_mul = token_is(token_t::e_lbracket ,hold) || token_is(token_t::e_lcrlbracket,hold) || token_is(token_t::e_lsqrbracket,hold) ; break; case token_t::e_lbracket : implied_mul = token_is(token_t::e_lbracket ,hold) || token_is(token_t::e_lcrlbracket,hold) || token_is(token_t::e_lsqrbracket,hold) ; break; case token_t::e_lsqrbracket : implied_mul = token_is(token_t::e_lbracket ,hold) || token_is(token_t::e_lcrlbracket,hold) || token_is(token_t::e_lsqrbracket,hold) ; break; default : return true; } if (implied_mul) { if (!settings_.commutative_check_enabled()) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR180 - Invalid sequence of brackets", exprtk_error_location)); return false; } else if (token_t::e_eof != current_token().type) { lexer().insert_front(current_token().type); lexer().insert_front(token_t::e_mul); next_token(); } } return true; } inline expression_node_ptr parse_symtab_symbol() { const std::string symbol = current_token().value; // Are we dealing with a variable or a special constant? expression_node_ptr variable = symtab_store_.get_variable(symbol); if (variable) { if (symtab_store_.is_constant_node(symbol)) { variable = expression_generator_(variable->value()); } if (!post_variable_process(symbol)) return error_node(); lodge_symbol(symbol,e_st_variable); next_token(); return variable; } // Are we dealing with a locally defined variable, vector or string? if (!sem_.empty()) { scope_element& se = sem_.get_active_element(symbol); if (se.active && details::imatch(se.name, symbol)) { if (scope_element::e_variable == se.type) { se.active = true; lodge_symbol(symbol,e_st_local_variable); if (!post_variable_process(symbol)) return error_node(); next_token(); return se.var_node; } else if (scope_element::e_vector == se.type) { return parse_vector(); } #ifndef exprtk_disable_string_capabilities else if (scope_element::e_string == se.type) { return parse_string(); } #endif } } #ifndef exprtk_disable_string_capabilities // Are we dealing with a string variable? if (symtab_store_.is_stringvar(symbol)) { return parse_string(); } #endif { // Are we dealing with a function? ifunction* function = symtab_store_.get_function(symbol); if (function) { lodge_symbol(symbol,e_st_function); expression_node_ptr func_node = parse_function_invocation(function,symbol); if (func_node) return func_node; else { set_error( make_error(parser_error::e_syntax, current_token(), "ERR181 - Failed to generate node for function: '" + symbol + "'", exprtk_error_location)); return error_node(); } } } { // Are we dealing with a vararg function? ivararg_function* vararg_function = symtab_store_.get_vararg_function(symbol); if (vararg_function) { lodge_symbol(symbol,e_st_function); expression_node_ptr vararg_func_node = parse_vararg_function_call(vararg_function, symbol); if (vararg_func_node) return vararg_func_node; else { set_error( make_error(parser_error::e_syntax, current_token(), "ERR182 - Failed to generate node for vararg function: '" + symbol + "'", exprtk_error_location)); return error_node(); } } } { // Are we dealing with a vararg generic function? igeneric_function* generic_function = symtab_store_.get_generic_function(symbol); if (generic_function) { lodge_symbol(symbol,e_st_function); expression_node_ptr genericfunc_node = parse_generic_function_call(generic_function, symbol); if (genericfunc_node) return genericfunc_node; else { set_error( make_error(parser_error::e_syntax, current_token(), "ERR183 - Failed to generate node for generic function: '" + symbol + "'", exprtk_error_location)); return error_node(); } } } #ifndef exprtk_disable_string_capabilities { // Are we dealing with a vararg string returning function? igeneric_function* string_function = symtab_store_.get_string_function(symbol); if (string_function) { lodge_symbol(symbol,e_st_function); expression_node_ptr stringfunc_node = parse_string_function_call(string_function, symbol); if (stringfunc_node) return stringfunc_node; else { set_error( make_error(parser_error::e_syntax, current_token(), "ERR184 - Failed to generate node for string function: '" + symbol + "'", exprtk_error_location)); return error_node(); } } } #endif // Are we dealing with a vector? if (symtab_store_.is_vector(symbol)) { lodge_symbol(symbol,e_st_vector); return parse_vector(); } if (details::is_reserved_symbol(symbol)) { if ( settings_.function_enabled(symbol) || !details::is_base_function(symbol) ) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR185 - Invalid use of reserved symbol '" + symbol + "'", exprtk_error_location)); return error_node(); } } // Should we handle unknown symbols? if (resolve_unknown_symbol_ && unknown_symbol_resolver_) { if (!(settings_.rsrvd_sym_usr_disabled() && details::is_reserved_symbol(symbol))) { symbol_table_t& symtab = symtab_store_.get_symbol_table(); std::string error_message; if (unknown_symbol_resolver::e_usrmode_default == unknown_symbol_resolver_->mode) { T default_value = T(0); typename unknown_symbol_resolver::usr_symbol_type usr_symbol_type; if (unknown_symbol_resolver_->process(symbol, usr_symbol_type, default_value, error_message)) { bool create_result = false; switch (usr_symbol_type) { case unknown_symbol_resolver::e_usr_variable_type : create_result = symtab.create_variable(symbol, default_value); break; case unknown_symbol_resolver::e_usr_constant_type : create_result = symtab.add_constant(symbol, default_value); break; default : create_result = false; } if (create_result) { expression_node_ptr var = symtab_store_.get_variable(symbol); if (var) { if (symtab_store_.is_constant_node(symbol)) { var = expression_generator_(var->value()); } lodge_symbol(symbol,e_st_variable); if (!post_variable_process(symbol)) return error_node(); next_token(); return var; } } } set_error( make_error(parser_error::e_symtab, current_token(), "ERR186 - Failed to create variable: '" + symbol + "'" + (error_message.empty() ? "" : " - " + error_message), exprtk_error_location)); } else if (unknown_symbol_resolver::e_usrmode_extended == unknown_symbol_resolver_->mode) { if (unknown_symbol_resolver_->process(symbol, symtab, error_message)) { expression_node_ptr result = parse_symtab_symbol(); if (result) { return result; } } set_error( make_error(parser_error::e_symtab, current_token(), "ERR187 - Failed to resolve symbol: '" + symbol + "'" + (error_message.empty() ? "" : " - " + error_message), exprtk_error_location)); } return error_node(); } } set_error( make_error(parser_error::e_syntax, current_token(), "ERR188 - Undefined symbol: '" + symbol + "'", exprtk_error_location)); return error_node(); } inline expression_node_ptr parse_symbol() { static const std::string symbol_if = "if" ; static const std::string symbol_while = "while" ; static const std::string symbol_repeat = "repeat" ; static const std::string symbol_for = "for" ; static const std::string symbol_switch = "switch" ; static const std::string symbol_null = "null" ; static const std::string symbol_break = "break" ; static const std::string symbol_continue = "continue"; static const std::string symbol_var = "var" ; static const std::string symbol_swap = "swap" ; static const std::string symbol_return = "return" ; if (valid_vararg_operation(current_token().value)) { return parse_vararg_function(); } else if (valid_base_operation(current_token().value)) { return parse_base_operation(); } else if ( details::imatch(current_token().value, symbol_if) && settings_.control_struct_enabled(current_token().value) ) { return parse_conditional_statement(); } else if ( details::imatch(current_token().value, symbol_while) && settings_.control_struct_enabled(current_token().value) ) { return parse_while_loop(); } else if ( details::imatch(current_token().value, symbol_repeat) && settings_.control_struct_enabled(current_token().value) ) { return parse_repeat_until_loop(); } else if ( details::imatch(current_token().value, symbol_for) && settings_.control_struct_enabled(current_token().value) ) { return parse_for_loop(); } else if ( details::imatch(current_token().value, symbol_switch) && settings_.control_struct_enabled(current_token().value) ) { return parse_switch_statement(); } else if (details::is_valid_sf_symbol(current_token().value)) { return parse_special_function(); } else if (details::imatch(current_token().value, symbol_null)) { return parse_null_statement(); } #ifndef exprtk_disable_break_continue else if (details::imatch(current_token().value, symbol_break)) { return parse_break_statement(); } else if (details::imatch(current_token().value, symbol_continue)) { return parse_continue_statement(); } #endif else if (details::imatch(current_token().value, symbol_var)) { return parse_define_var_statement(); } else if (details::imatch(current_token().value, symbol_swap)) { return parse_swap_statement(); } #ifndef exprtk_disable_return_statement else if ( details::imatch(current_token().value, symbol_return) && settings_.control_struct_enabled(current_token().value) ) { return parse_return_statement(); } #endif else if (symtab_store_.valid() || !sem_.empty()) { return parse_symtab_symbol(); } else { set_error( make_error(parser_error::e_symtab, current_token(), "ERR189 - Variable or function detected, yet symbol-table is invalid, Symbol: " + current_token().value, exprtk_error_location)); return error_node(); } } inline expression_node_ptr parse_branch(precedence_level precedence = e_level00) { expression_node_ptr branch = error_node(); if (token_t::e_number == current_token().type) { T numeric_value = T(0); if (details::string_to_real(current_token().value, numeric_value)) { expression_node_ptr literal_exp = expression_generator_(numeric_value); if (0 == literal_exp) { set_error( make_error(parser_error::e_numeric, current_token(), "ERR190 - Failed generate node for scalar: '" + current_token().value + "'", exprtk_error_location)); return error_node(); } next_token(); branch = literal_exp; } else { set_error( make_error(parser_error::e_numeric, current_token(), "ERR191 - Failed to convert '" + current_token().value + "' to a number", exprtk_error_location)); return error_node(); } } else if (token_t::e_symbol == current_token().type) { branch = parse_symbol(); } #ifndef exprtk_disable_string_capabilities else if (token_t::e_string == current_token().type) { branch = parse_const_string(); } #endif else if (token_t::e_lbracket == current_token().type) { next_token(); if (0 == (branch = parse_expression())) return error_node(); else if (!token_is(token_t::e_rbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR192 - Expected ')' instead of: '" + current_token().value + "'", exprtk_error_location)); free_node(node_allocator_,branch); return error_node(); } else if (!post_bracket_process(token_t::e_lbracket,branch)) { free_node(node_allocator_,branch); return error_node(); } } else if (token_t::e_lsqrbracket == current_token().type) { next_token(); if (0 == (branch = parse_expression())) return error_node(); else if (!token_is(token_t::e_rsqrbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR193 - Expected ']' instead of: '" + current_token().value + "'", exprtk_error_location)); free_node(node_allocator_,branch); return error_node(); } else if (!post_bracket_process(token_t::e_lsqrbracket,branch)) { free_node(node_allocator_,branch); return error_node(); } } else if (token_t::e_lcrlbracket == current_token().type) { next_token(); if (0 == (branch = parse_expression())) return error_node(); else if (!token_is(token_t::e_rcrlbracket)) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR194 - Expected '}' instead of: '" + current_token().value + "'", exprtk_error_location)); free_node(node_allocator_,branch); return error_node(); } else if (!post_bracket_process(token_t::e_lcrlbracket,branch)) { free_node(node_allocator_,branch); return error_node(); } } else if (token_t::e_sub == current_token().type) { next_token(); branch = parse_expression(e_level11); if ( branch && !( details::is_neg_unary_node (branch) && simplify_unary_negation_branch(branch) ) ) { branch = expression_generator_(details::e_neg,branch); } } else if (token_t::e_add == current_token().type) { next_token(); branch = parse_expression(e_level13); } else if (token_t::e_eof == current_token().type) { set_error( make_error(parser_error::e_syntax, current_token(), "ERR195 - Premature end of expression[1]", exprtk_error_location)); return error_node(); } else { set_error( make_error(parser_error::e_syntax, current_token(), "ERR196 - Premature end of expression[2]", exprtk_error_location)); return error_node(); } if ( branch && (e_level00 == precedence) && token_is(token_t::e_ternary,prsrhlpr_t::e_hold) ) { branch = parse_ternary_conditional_statement(branch); } parse_pending_string_rangesize(branch); return branch; } template class expression_generator { public: typedef details::expression_node* expression_node_ptr; typedef expression_node_ptr (*synthesize_functor_t)(expression_generator&, const details::operator_type& operation, expression_node_ptr (&branch)[2]); typedef std::map synthesize_map_t; typedef typename exprtk::parser parser_t; typedef const Type& vtype; typedef const Type ctype; inline void init_synthesize_map() { #ifndef exprtk_disable_enhanced_features synthesize_map_["(v)o(v)"] = synthesize_vov_expression::process; synthesize_map_["(c)o(v)"] = synthesize_cov_expression::process; synthesize_map_["(v)o(c)"] = synthesize_voc_expression::process; #define register_synthezier(S) \ synthesize_map_[S ::node_type::id()] = S ::process; \ register_synthezier(synthesize_vovov_expression0) register_synthezier(synthesize_vovov_expression1) register_synthezier(synthesize_vovoc_expression0) register_synthezier(synthesize_vovoc_expression1) register_synthezier(synthesize_vocov_expression0) register_synthezier(synthesize_vocov_expression1) register_synthezier(synthesize_covov_expression0) register_synthezier(synthesize_covov_expression1) register_synthezier(synthesize_covoc_expression0) register_synthezier(synthesize_covoc_expression1) register_synthezier(synthesize_cocov_expression1) register_synthezier(synthesize_vococ_expression0) register_synthezier(synthesize_vovovov_expression0) register_synthezier(synthesize_vovovoc_expression0) register_synthezier(synthesize_vovocov_expression0) register_synthezier(synthesize_vocovov_expression0) register_synthezier(synthesize_covovov_expression0) register_synthezier(synthesize_covocov_expression0) register_synthezier(synthesize_vocovoc_expression0) register_synthezier(synthesize_covovoc_expression0) register_synthezier(synthesize_vococov_expression0) register_synthezier(synthesize_vovovov_expression1) register_synthezier(synthesize_vovovoc_expression1) register_synthezier(synthesize_vovocov_expression1) register_synthezier(synthesize_vocovov_expression1) register_synthezier(synthesize_covovov_expression1) register_synthezier(synthesize_covocov_expression1) register_synthezier(synthesize_vocovoc_expression1) register_synthezier(synthesize_covovoc_expression1) register_synthezier(synthesize_vococov_expression1) register_synthezier(synthesize_vovovov_expression2) register_synthezier(synthesize_vovovoc_expression2) register_synthezier(synthesize_vovocov_expression2) register_synthezier(synthesize_vocovov_expression2) register_synthezier(synthesize_covovov_expression2) register_synthezier(synthesize_covocov_expression2) register_synthezier(synthesize_vocovoc_expression2) register_synthezier(synthesize_covovoc_expression2) register_synthezier(synthesize_vovovov_expression3) register_synthezier(synthesize_vovovoc_expression3) register_synthezier(synthesize_vovocov_expression3) register_synthezier(synthesize_vocovov_expression3) register_synthezier(synthesize_covovov_expression3) register_synthezier(synthesize_covocov_expression3) register_synthezier(synthesize_vocovoc_expression3) register_synthezier(synthesize_covovoc_expression3) register_synthezier(synthesize_vococov_expression3) register_synthezier(synthesize_vovovov_expression4) register_synthezier(synthesize_vovovoc_expression4) register_synthezier(synthesize_vovocov_expression4) register_synthezier(synthesize_vocovov_expression4) register_synthezier(synthesize_covovov_expression4) register_synthezier(synthesize_covocov_expression4) register_synthezier(synthesize_vocovoc_expression4) register_synthezier(synthesize_covovoc_expression4) #endif } inline void set_parser(parser_t& p) { parser_ = &p; } inline void set_uom(unary_op_map_t& unary_op_map) { unary_op_map_ = &unary_op_map; } inline void set_bom(binary_op_map_t& binary_op_map) { binary_op_map_ = &binary_op_map; } inline void set_ibom(inv_binary_op_map_t& inv_binary_op_map) { inv_binary_op_map_ = &inv_binary_op_map; } inline void set_sf3m(sf3_map_t& sf3_map) { sf3_map_ = &sf3_map; } inline void set_sf4m(sf4_map_t& sf4_map) { sf4_map_ = &sf4_map; } inline void set_allocator(details::node_allocator& na) { node_allocator_ = &na; } inline void set_strength_reduction_state(const bool enabled) { strength_reduction_enabled_ = enabled; } inline bool strength_reduction_enabled() const { return strength_reduction_enabled_; } inline bool valid_operator(const details::operator_type& operation, binary_functor_t& bop) { typename binary_op_map_t::iterator bop_itr = binary_op_map_->find(operation); if ((*binary_op_map_).end() == bop_itr) return false; bop = bop_itr->second; return true; } inline bool valid_operator(const details::operator_type& operation, unary_functor_t& uop) { typename unary_op_map_t::iterator uop_itr = unary_op_map_->find(operation); if ((*unary_op_map_).end() == uop_itr) return false; uop = uop_itr->second; return true; } inline details::operator_type get_operator(const binary_functor_t& bop) { return (*inv_binary_op_map_).find(bop)->second; } inline expression_node_ptr operator() (const Type& v) const { return node_allocator_->allocate(v); } #ifndef exprtk_disable_string_capabilities inline expression_node_ptr operator() (const std::string& s) const { return node_allocator_->allocate(s); } inline expression_node_ptr operator() (std::string& s, range_t& rp) const { return node_allocator_->allocate_rr(s,rp); } inline expression_node_ptr operator() (const std::string& s, range_t& rp) const { return node_allocator_->allocate_tt(s,rp); } inline expression_node_ptr operator() (expression_node_ptr branch, range_t& rp) const { if (is_generally_string_node(branch)) return node_allocator_->allocate_tt(branch,rp); else return error_node(); } #endif inline bool unary_optimisable(const details::operator_type& operation) const { return (details::e_abs == operation) || (details::e_acos == operation) || (details::e_acosh == operation) || (details::e_asin == operation) || (details::e_asinh == operation) || (details::e_atan == operation) || (details::e_atanh == operation) || (details::e_ceil == operation) || (details::e_cos == operation) || (details::e_cosh == operation) || (details::e_exp == operation) || (details::e_expm1 == operation) || (details::e_floor == operation) || (details::e_log == operation) || (details::e_log10 == operation) || (details::e_log2 == operation) || (details::e_log1p == operation) || (details::e_neg == operation) || (details::e_pos == operation) || (details::e_round == operation) || (details::e_sin == operation) || (details::e_sinc == operation) || (details::e_sinh == operation) || (details::e_sqrt == operation) || (details::e_tan == operation) || (details::e_tanh == operation) || (details::e_cot == operation) || (details::e_sec == operation) || (details::e_csc == operation) || (details::e_r2d == operation) || (details::e_d2r == operation) || (details::e_d2g == operation) || (details::e_g2d == operation) || (details::e_notl == operation) || (details::e_sgn == operation) || (details::e_erf == operation) || (details::e_erfc == operation) || (details::e_ncdf == operation) || (details::e_frac == operation) || (details::e_trunc == operation) ; } inline bool sf3_optimisable(const std::string& sf3id, trinary_functor_t& tfunc) { typename sf3_map_t::iterator itr = sf3_map_->find(sf3id); if (sf3_map_->end() == itr) return false; else tfunc = itr->second.first; return true; } inline bool sf4_optimisable(const std::string& sf4id, quaternary_functor_t& qfunc) { typename sf4_map_t::iterator itr = sf4_map_->find(sf4id); if (sf4_map_->end() == itr) return false; else qfunc = itr->second.first; return true; } inline bool sf3_optimisable(const std::string& sf3id, details::operator_type& operation) { typename sf3_map_t::iterator itr = sf3_map_->find(sf3id); if (sf3_map_->end() == itr) return false; else operation = itr->second.second; return true; } inline bool sf4_optimisable(const std::string& sf4id, details::operator_type& operation) { typename sf4_map_t::iterator itr = sf4_map_->find(sf4id); if (sf4_map_->end() == itr) return false; else operation = itr->second.second; return true; } inline expression_node_ptr operator() (const details::operator_type& operation, expression_node_ptr (&branch)[1]) { if (0 == branch[0]) { return error_node(); } else if (details::is_null_node(branch[0])) { return branch[0]; } else if (details::is_break_node(branch[0])) { return error_node(); } else if (details::is_continue_node(branch[0])) { return error_node(); } else if (details::is_constant_node(branch[0])) { return synthesize_expression(operation,branch); } else if (unary_optimisable(operation) && details::is_variable_node(branch[0])) { return synthesize_uv_expression(operation,branch); } else if (unary_optimisable(operation) && details::is_ivector_node(branch[0])) { return synthesize_uvec_expression(operation,branch); } else return synthesize_unary_expression(operation,branch); } inline bool is_assignment_operation(const details::operator_type& operation) const { return ( (details::e_addass == operation) || (details::e_subass == operation) || (details::e_mulass == operation) || (details::e_divass == operation) || (details::e_modass == operation) ) && parser_->settings_.assignment_enabled(operation); } #ifndef exprtk_disable_string_capabilities inline bool valid_string_operation(const details::operator_type& operation) const { return (details::e_add == operation) || (details::e_lt == operation) || (details::e_lte == operation) || (details::e_gt == operation) || (details::e_gte == operation) || (details::e_eq == operation) || (details::e_ne == operation) || (details::e_in == operation) || (details::e_like == operation) || (details::e_ilike == operation) || (details::e_assign == operation) || (details::e_addass == operation) || (details::e_swap == operation) ; } #else inline bool valid_string_operation(const details::operator_type&) const { return false; } #endif inline std::string to_str(const details::operator_type& operation) const { switch (operation) { case details::e_add : return "+" ; case details::e_sub : return "-" ; case details::e_mul : return "*" ; case details::e_div : return "/" ; case details::e_mod : return "%" ; case details::e_pow : return "^" ; case details::e_lt : return "<" ; case details::e_lte : return "<=" ; case details::e_gt : return ">" ; case details::e_gte : return ">=" ; case details::e_eq : return "==" ; case details::e_ne : return "!=" ; case details::e_and : return "and" ; case details::e_nand : return "nand" ; case details::e_or : return "or" ; case details::e_nor : return "nor" ; case details::e_xor : return "xor" ; case details::e_xnor : return "xnor" ; default : return "UNKNOWN"; } } inline bool operation_optimisable(const details::operator_type& operation) const { return (details::e_add == operation) || (details::e_sub == operation) || (details::e_mul == operation) || (details::e_div == operation) || (details::e_mod == operation) || (details::e_pow == operation) || (details::e_lt == operation) || (details::e_lte == operation) || (details::e_gt == operation) || (details::e_gte == operation) || (details::e_eq == operation) || (details::e_ne == operation) || (details::e_and == operation) || (details::e_nand == operation) || (details::e_or == operation) || (details::e_nor == operation) || (details::e_xor == operation) || (details::e_xnor == operation) ; } inline std::string branch_to_id(expression_node_ptr branch) { static const std::string null_str ("(null)" ); static const std::string const_str ("(c)" ); static const std::string var_str ("(v)" ); static const std::string vov_str ("(vov)" ); static const std::string cov_str ("(cov)" ); static const std::string voc_str ("(voc)" ); static const std::string str_str ("(s)" ); static const std::string strrng_str ("(rngs)" ); static const std::string cs_str ("(cs)" ); static const std::string cstrrng_str("(crngs)"); if (details::is_null_node(branch)) return null_str; else if (details::is_constant_node(branch)) return const_str; else if (details::is_variable_node(branch)) return var_str; else if (details::is_vov_node(branch)) return vov_str; else if (details::is_cov_node(branch)) return cov_str; else if (details::is_voc_node(branch)) return voc_str; else if (details::is_string_node(branch)) return str_str; else if (details::is_const_string_node(branch)) return cs_str; else if (details::is_string_range_node(branch)) return strrng_str; else if (details::is_const_string_range_node(branch)) return cstrrng_str; else if (details::is_t0ot1ot2_node(branch)) return "(" + dynamic_cast*>(branch)->type_id() + ")"; else if (details::is_t0ot1ot2ot3_node(branch)) return "(" + dynamic_cast*>(branch)->type_id() + ")"; else return "ERROR"; } inline std::string branch_to_id(expression_node_ptr (&branch)[2]) { return branch_to_id(branch[0]) + std::string("o") + branch_to_id(branch[1]); } inline bool cov_optimisable(const details::operator_type& operation, expression_node_ptr (&branch)[2]) const { if (!operation_optimisable(operation)) return false; else return details::is_constant_node(branch[0]) && details::is_variable_node(branch[1]) ; } inline bool voc_optimisable(const details::operator_type& operation, expression_node_ptr (&branch)[2]) const { if (!operation_optimisable(operation)) return false; else return details::is_variable_node(branch[0]) && details::is_constant_node(branch[1]) ; } inline bool vov_optimisable(const details::operator_type& operation, expression_node_ptr (&branch)[2]) const { if (!operation_optimisable(operation)) return false; else return details::is_variable_node(branch[0]) && details::is_variable_node(branch[1]) ; } inline bool cob_optimisable(const details::operator_type& operation, expression_node_ptr (&branch)[2]) const { if (!operation_optimisable(operation)) return false; else return details::is_constant_node(branch[0]) && !details::is_constant_node(branch[1]) ; } inline bool boc_optimisable(const details::operator_type& operation, expression_node_ptr (&branch)[2]) const { if (!operation_optimisable(operation)) return false; else return !details::is_constant_node(branch[0]) && details::is_constant_node(branch[1]) ; } inline bool cocob_optimisable(const details::operator_type& operation, expression_node_ptr (&branch)[2]) const { if ( (details::e_add == operation) || (details::e_sub == operation) || (details::e_mul == operation) || (details::e_div == operation) ) { return (details::is_constant_node(branch[0]) && details::is_cob_node(branch[1])) || (details::is_constant_node(branch[1]) && details::is_cob_node(branch[0])) ; } else return false; } inline bool coboc_optimisable(const details::operator_type& operation, expression_node_ptr (&branch)[2]) const { if ( (details::e_add == operation) || (details::e_sub == operation) || (details::e_mul == operation) || (details::e_div == operation) ) { return (details::is_constant_node(branch[0]) && details::is_boc_node(branch[1])) || (details::is_constant_node(branch[1]) && details::is_boc_node(branch[0])) ; } else return false; } inline bool uvouv_optimisable(const details::operator_type& operation, expression_node_ptr (&branch)[2]) const { if (!operation_optimisable(operation)) return false; else return details::is_uv_node(branch[0]) && details::is_uv_node(branch[1]) ; } inline bool vob_optimisable(const details::operator_type& operation, expression_node_ptr (&branch)[2]) const { if (!operation_optimisable(operation)) return false; else return details::is_variable_node(branch[0]) && !details::is_variable_node(branch[1]) ; } inline bool bov_optimisable(const details::operator_type& operation, expression_node_ptr (&branch)[2]) const { if (!operation_optimisable(operation)) return false; else return !details::is_variable_node(branch[0]) && details::is_variable_node(branch[1]) ; } inline bool binext_optimisable(const details::operator_type& operation, expression_node_ptr (&branch)[2]) const { if (!operation_optimisable(operation)) return false; else return !details::is_constant_node(branch[0]) || !details::is_constant_node(branch[1]) ; } inline bool is_invalid_assignment_op(const details::operator_type& operation, expression_node_ptr (&branch)[2]) { if (is_assignment_operation(operation)) { const bool b1_is_genstring = details::is_generally_string_node(branch[1]); if (details::is_string_node(branch[0])) return !b1_is_genstring; else return ( !details::is_variable_node (branch[0]) && !details::is_vector_elem_node (branch[0]) && !details::is_rebasevector_elem_node (branch[0]) && !details::is_rebasevector_celem_node(branch[0]) && !details::is_vector_node (branch[0]) ) || b1_is_genstring; } else return false; } inline bool is_constpow_operation(const details::operator_type& operation, expression_node_ptr(&branch)[2]) { if ( !is_constant_node(branch[1]) || is_constant_node(branch[0]) || is_variable_node(branch[0]) || is_vector_node (branch[0]) || is_generally_string_node(branch[0]) ) return false; const Type c = static_cast*>(branch[1])->value(); return cardinal_pow_optimisable(operation, c); } inline bool is_invalid_break_continue_op(expression_node_ptr (&branch)[2]) { return ( details::is_break_node (branch[0]) || details::is_break_node (branch[1]) || details::is_continue_node(branch[0]) || details::is_continue_node(branch[1]) ); } inline bool is_invalid_string_op(const details::operator_type& operation, expression_node_ptr (&branch)[2]) { const bool b0_string = is_generally_string_node(branch[0]); const bool b1_string = is_generally_string_node(branch[1]); bool result = false; if (b0_string != b1_string) result = true; else if (!valid_string_operation(operation) && b0_string && b1_string) result = true; if (result) { parser_->set_synthesis_error("Invalid string operation"); } return result; } inline bool is_invalid_string_op(const details::operator_type& operation, expression_node_ptr (&branch)[3]) { const bool b0_string = is_generally_string_node(branch[0]); const bool b1_string = is_generally_string_node(branch[1]); const bool b2_string = is_generally_string_node(branch[2]); bool result = false; if ((b0_string != b1_string) || (b1_string != b2_string)) result = true; else if ((details::e_inrange != operation) && b0_string && b1_string && b2_string) result = true; if (result) { parser_->set_synthesis_error("Invalid string operation"); } return result; } inline bool is_string_operation(const details::operator_type& operation, expression_node_ptr (&branch)[2]) { const bool b0_string = is_generally_string_node(branch[0]); const bool b1_string = is_generally_string_node(branch[1]); return (b0_string && b1_string && valid_string_operation(operation)); } inline bool is_string_operation(const details::operator_type& operation, expression_node_ptr (&branch)[3]) { const bool b0_string = is_generally_string_node(branch[0]); const bool b1_string = is_generally_string_node(branch[1]); const bool b2_string = is_generally_string_node(branch[2]); return (b0_string && b1_string && b2_string && (details::e_inrange == operation)); } #ifndef exprtk_disable_sc_andor inline bool is_shortcircuit_expression(const details::operator_type& operation) { return ( (details::e_scand == operation) || (details::e_scor == operation) ); } #else inline bool is_shortcircuit_expression(const details::operator_type&) { return false; } #endif inline bool is_null_present(expression_node_ptr (&branch)[2]) { return ( details::is_null_node(branch[0]) || details::is_null_node(branch[1]) ); } inline bool is_vector_eqineq_logic_operation(const details::operator_type& operation, expression_node_ptr (&branch)[2]) { if (!is_ivector_node(branch[0]) && !is_ivector_node(branch[1])) return false; else return ( (details::e_lt == operation) || (details::e_lte == operation) || (details::e_gt == operation) || (details::e_gte == operation) || (details::e_eq == operation) || (details::e_ne == operation) || (details::e_equal == operation) || (details::e_and == operation) || (details::e_nand == operation) || (details:: e_or == operation) || (details:: e_nor == operation) || (details:: e_xor == operation) || (details::e_xnor == operation) ); } inline bool is_vector_arithmetic_operation(const details::operator_type& operation, expression_node_ptr (&branch)[2]) { if (!is_ivector_node(branch[0]) && !is_ivector_node(branch[1])) return false; else return ( (details::e_add == operation) || (details::e_sub == operation) || (details::e_mul == operation) || (details::e_div == operation) || (details::e_pow == operation) ); } inline expression_node_ptr operator() (const details::operator_type& operation, expression_node_ptr (&branch)[2]) { if ((0 == branch[0]) || (0 == branch[1])) { return error_node(); } else if (is_invalid_string_op(operation,branch)) { return error_node(); } else if (is_invalid_assignment_op(operation,branch)) { return error_node(); } else if (is_invalid_break_continue_op(branch)) { return error_node(); } else if (details::e_assign == operation) { return synthesize_assignment_expression(operation, branch); } else if (details::e_swap == operation) { return synthesize_swap_expression(branch); } else if (is_assignment_operation(operation)) { return synthesize_assignment_operation_expression(operation, branch); } else if (is_vector_eqineq_logic_operation(operation, branch)) { return synthesize_veceqineqlogic_operation_expression(operation, branch); } else if (is_vector_arithmetic_operation(operation, branch)) { return synthesize_vecarithmetic_operation_expression(operation, branch); } else if (is_shortcircuit_expression(operation)) { return synthesize_shortcircuit_expression(operation, branch); } else if (is_string_operation(operation, branch)) { return synthesize_string_expression(operation, branch); } else if (is_null_present(branch)) { return synthesize_null_expression(operation, branch); } #ifndef exprtk_disable_cardinal_pow_optimisation else if (is_constpow_operation(operation, branch)) { return cardinal_pow_optimisation(branch); } #endif expression_node_ptr result = error_node(); #ifndef exprtk_disable_enhanced_features if (synthesize_expression(operation, branch, result)) { return result; } else #endif { /* Possible reductions: 1. c o cob -> cob 2. cob o c -> cob 3. c o boc -> boc 4. boc o c -> boc */ result = error_node(); if (cocob_optimisable(operation, branch)) { result = synthesize_cocob_expression::process((*this), operation, branch); } else if (coboc_optimisable(operation, branch) && (0 == result)) { result = synthesize_coboc_expression::process((*this), operation, branch); } if (result) return result; } if (uvouv_optimisable(operation, branch)) { return synthesize_uvouv_expression(operation, branch); } else if (vob_optimisable(operation, branch)) { return synthesize_vob_expression::process((*this), operation, branch); } else if (bov_optimisable(operation, branch)) { return synthesize_bov_expression::process((*this), operation, branch); } else if (cob_optimisable(operation, branch)) { return synthesize_cob_expression::process((*this), operation, branch); } else if (boc_optimisable(operation, branch)) { return synthesize_boc_expression::process((*this), operation, branch); } #ifndef exprtk_disable_enhanced_features else if (cov_optimisable(operation, branch)) { return synthesize_cov_expression::process((*this), operation, branch); } #endif else if (binext_optimisable(operation, branch)) { return synthesize_binary_ext_expression::process((*this), operation, branch); } else return synthesize_expression(operation, branch); } inline expression_node_ptr operator() (const details::operator_type& operation, expression_node_ptr (&branch)[3]) { if ( (0 == branch[0]) || (0 == branch[1]) || (0 == branch[2]) ) { details::free_all_nodes(*node_allocator_,branch); return error_node(); } else if (is_invalid_string_op(operation, branch)) { return error_node(); } else if (is_string_operation(operation, branch)) { return synthesize_string_expression(operation, branch); } else return synthesize_expression(operation, branch); } inline expression_node_ptr operator() (const details::operator_type& operation, expression_node_ptr (&branch)[4]) { return synthesize_expression(operation,branch); } inline expression_node_ptr operator() (const details::operator_type& operation, expression_node_ptr b0) { expression_node_ptr branch[1] = { b0 }; return (*this)(operation,branch); } inline expression_node_ptr operator() (const details::operator_type& operation, expression_node_ptr b0, expression_node_ptr b1) { if ((0 == b0) || (0 == b1)) return error_node(); else { expression_node_ptr branch[2] = { b0, b1 }; return expression_generator::operator()(operation,branch); } } inline expression_node_ptr conditional(expression_node_ptr condition, expression_node_ptr consequent, expression_node_ptr alternative) const { if ((0 == condition) || (0 == consequent)) { free_node(*node_allocator_, condition ); free_node(*node_allocator_, consequent ); free_node(*node_allocator_, alternative); return error_node(); } // Can the condition be immediately evaluated? if so optimise. else if (details::is_constant_node(condition)) { // True branch if (details::is_true(condition)) { free_node(*node_allocator_, condition ); free_node(*node_allocator_, alternative); return consequent; } // False branch else { free_node(*node_allocator_, condition ); free_node(*node_allocator_, consequent); if (alternative) return alternative; else return node_allocator_->allocate >(); } } else if ((0 != consequent) && (0 != alternative)) { return node_allocator_-> allocate(condition,consequent,alternative); } else return node_allocator_-> allocate(condition,consequent); } #ifndef exprtk_disable_string_capabilities inline expression_node_ptr conditional_string(expression_node_ptr condition, expression_node_ptr consequent, expression_node_ptr alternative) const { if ((0 == condition) || (0 == consequent)) { free_node(*node_allocator_, condition ); free_node(*node_allocator_, consequent ); free_node(*node_allocator_, alternative); return error_node(); } // Can the condition be immediately evaluated? if so optimise. else if (details::is_constant_node(condition)) { // True branch if (details::is_true(condition)) { free_node(*node_allocator_, condition ); free_node(*node_allocator_, alternative); return consequent; } // False branch else { free_node(*node_allocator_, condition ); free_node(*node_allocator_, consequent); if (alternative) return alternative; else return node_allocator_-> allocate_c >(""); } } else if ((0 != consequent) && (0 != alternative)) return node_allocator_-> allocate(condition,consequent,alternative); else return error_node(); } #else inline expression_node_ptr conditional_string(expression_node_ptr, expression_node_ptr, expression_node_ptr) const { return error_node(); } #endif inline expression_node_ptr while_loop(expression_node_ptr& condition, expression_node_ptr& branch, const bool brkcont = false) const { if (!brkcont && details::is_constant_node(condition)) { expression_node_ptr result = error_node(); if (details::is_true(condition)) // Infinite loops are not allowed. result = error_node(); else result = node_allocator_->allocate >(); free_node(*node_allocator_, condition); free_node(*node_allocator_, branch ); return result; } else if (details::is_null_node(condition)) { free_node(*node_allocator_,condition); return branch; } else if (!brkcont) return node_allocator_->allocate(condition,branch); #ifndef exprtk_disable_break_continue else return node_allocator_->allocate(condition,branch); #else return error_node(); #endif } inline expression_node_ptr repeat_until_loop(expression_node_ptr& condition, expression_node_ptr& branch, const bool brkcont = false) const { if (!brkcont && details::is_constant_node(condition)) { if ( details::is_true(condition) && details::is_constant_node(branch) ) { free_node(*node_allocator_,condition); return branch; } free_node(*node_allocator_, condition); free_node(*node_allocator_, branch ); return error_node(); } else if (details::is_null_node(condition)) { free_node(*node_allocator_,condition); return branch; } else if (!brkcont) return node_allocator_->allocate(condition,branch); #ifndef exprtk_disable_break_continue else return node_allocator_->allocate(condition,branch); #else return error_node(); #endif } inline expression_node_ptr for_loop(expression_node_ptr& initialiser, expression_node_ptr& condition, expression_node_ptr& incrementor, expression_node_ptr& loop_body, bool brkcont = false) const { if (!brkcont && details::is_constant_node(condition)) { expression_node_ptr result = error_node(); if (details::is_true(condition)) // Infinite loops are not allowed. result = error_node(); else result = node_allocator_->allocate >(); free_node(*node_allocator_, initialiser); free_node(*node_allocator_, condition ); free_node(*node_allocator_, incrementor); free_node(*node_allocator_, loop_body ); return result; } else if (details::is_null_node(condition)) { free_node(*node_allocator_, initialiser); free_node(*node_allocator_, condition ); free_node(*node_allocator_, incrementor); return loop_body; } else if (!brkcont) return node_allocator_->allocate ( initialiser, condition, incrementor, loop_body ); #ifndef exprtk_disable_break_continue else return node_allocator_->allocate ( initialiser, condition, incrementor, loop_body ); #else return error_node(); #endif } template class Sequence> inline expression_node_ptr const_optimise_switch(Sequence& arg_list) { expression_node_ptr result = error_node(); for (std::size_t i = 0; i < (arg_list.size() / 2); ++i) { expression_node_ptr condition = arg_list[(2 * i) ]; expression_node_ptr consequent = arg_list[(2 * i) + 1]; if ((0 == result) && details::is_true(condition)) { result = consequent; break; } } if (0 == result) { result = arg_list.back(); } for (std::size_t i = 0; i < arg_list.size(); ++i) { expression_node_ptr current_expr = arg_list[i]; if (current_expr && (current_expr != result)) { free_node(*node_allocator_,current_expr); } } return result; } template class Sequence> inline expression_node_ptr const_optimise_mswitch(Sequence& arg_list) { expression_node_ptr result = error_node(); for (std::size_t i = 0; i < (arg_list.size() / 2); ++i) { expression_node_ptr condition = arg_list[(2 * i) ]; expression_node_ptr consequent = arg_list[(2 * i) + 1]; if (details::is_true(condition)) { result = consequent; } } if (0 == result) { T zero = T(0); result = node_allocator_->allocate(zero); } for (std::size_t i = 0; i < arg_list.size(); ++i) { expression_node_ptr& current_expr = arg_list[i]; if (current_expr && (current_expr != result)) { free_node(*node_allocator_,current_expr); } } return result; } struct switch_nodes { typedef std::vector arg_list_t; #define case_stmt(N) \ if (is_true(arg[(2 * N)])) { return arg[(2 * N) + 1]->value(); } \ struct switch_1 { static inline T process(const arg_list_t& arg) { case_stmt(0) return arg.back()->value(); } }; struct switch_2 { static inline T process(const arg_list_t& arg) { case_stmt(0) case_stmt(1) return arg.back()->value(); } }; struct switch_3 { static inline T process(const arg_list_t& arg) { case_stmt(0) case_stmt(1) case_stmt(2) return arg.back()->value(); } }; struct switch_4 { static inline T process(const arg_list_t& arg) { case_stmt(0) case_stmt(1) case_stmt(2) case_stmt(3) return arg.back()->value(); } }; struct switch_5 { static inline T process(const arg_list_t& arg) { case_stmt(0) case_stmt(1) case_stmt(2) case_stmt(3) case_stmt(4) return arg.back()->value(); } }; struct switch_6 { static inline T process(const arg_list_t& arg) { case_stmt(0) case_stmt(1) case_stmt(2) case_stmt(3) case_stmt(4) case_stmt(5) return arg.back()->value(); } }; struct switch_7 { static inline T process(const arg_list_t& arg) { case_stmt(0) case_stmt(1) case_stmt(2) case_stmt(3) case_stmt(4) case_stmt(5) case_stmt(6) return arg.back()->value(); } }; #undef case_stmt }; template class Sequence> inline expression_node_ptr switch_statement(Sequence& arg_list) { if (arg_list.empty()) return error_node(); else if ( !all_nodes_valid(arg_list) || (arg_list.size() < 3) || ((arg_list.size() % 2) != 1) ) { details::free_all_nodes(*node_allocator_,arg_list); return error_node(); } else if (is_constant_foldable(arg_list)) return const_optimise_switch(arg_list); switch ((arg_list.size() - 1) / 2) { #define case_stmt(N) \ case N : \ return node_allocator_-> \ allocate >(arg_list); \ case_stmt(1) case_stmt(2) case_stmt(3) case_stmt(4) case_stmt(5) case_stmt(6) case_stmt(7) #undef case_stmt default : return node_allocator_->allocate >(arg_list); } } template class Sequence> inline expression_node_ptr multi_switch_statement(Sequence& arg_list) { if (!all_nodes_valid(arg_list)) { details::free_all_nodes(*node_allocator_,arg_list); return error_node(); } else if (is_constant_foldable(arg_list)) return const_optimise_mswitch(arg_list); else return node_allocator_->allocate >(arg_list); } #define unary_opr_switch_statements \ case_stmt(details:: e_abs, details:: abs_op) \ case_stmt(details:: e_acos, details:: acos_op) \ case_stmt(details::e_acosh, details::acosh_op) \ case_stmt(details:: e_asin, details:: asin_op) \ case_stmt(details::e_asinh, details::asinh_op) \ case_stmt(details:: e_atan, details:: atan_op) \ case_stmt(details::e_atanh, details::atanh_op) \ case_stmt(details:: e_ceil, details:: ceil_op) \ case_stmt(details:: e_cos, details:: cos_op) \ case_stmt(details:: e_cosh, details:: cosh_op) \ case_stmt(details:: e_exp, details:: exp_op) \ case_stmt(details::e_expm1, details::expm1_op) \ case_stmt(details::e_floor, details::floor_op) \ case_stmt(details:: e_log, details:: log_op) \ case_stmt(details::e_log10, details::log10_op) \ case_stmt(details:: e_log2, details:: log2_op) \ case_stmt(details::e_log1p, details::log1p_op) \ case_stmt(details:: e_neg, details:: neg_op) \ case_stmt(details:: e_pos, details:: pos_op) \ case_stmt(details::e_round, details::round_op) \ case_stmt(details:: e_sin, details:: sin_op) \ case_stmt(details:: e_sinc, details:: sinc_op) \ case_stmt(details:: e_sinh, details:: sinh_op) \ case_stmt(details:: e_sqrt, details:: sqrt_op) \ case_stmt(details:: e_tan, details:: tan_op) \ case_stmt(details:: e_tanh, details:: tanh_op) \ case_stmt(details:: e_cot, details:: cot_op) \ case_stmt(details:: e_sec, details:: sec_op) \ case_stmt(details:: e_csc, details:: csc_op) \ case_stmt(details:: e_r2d, details:: r2d_op) \ case_stmt(details:: e_d2r, details:: d2r_op) \ case_stmt(details:: e_d2g, details:: d2g_op) \ case_stmt(details:: e_g2d, details:: g2d_op) \ case_stmt(details:: e_notl, details:: notl_op) \ case_stmt(details:: e_sgn, details:: sgn_op) \ case_stmt(details:: e_erf, details:: erf_op) \ case_stmt(details:: e_erfc, details:: erfc_op) \ case_stmt(details:: e_ncdf, details:: ncdf_op) \ case_stmt(details:: e_frac, details:: frac_op) \ case_stmt(details::e_trunc, details::trunc_op) \ inline expression_node_ptr synthesize_uv_expression(const details::operator_type& operation, expression_node_ptr (&branch)[1]) { T& v = static_cast*>(branch[0])->ref(); switch (operation) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ allocate > >(v); \ unary_opr_switch_statements #undef case_stmt default : return error_node(); } } inline expression_node_ptr synthesize_uvec_expression(const details::operator_type& operation, expression_node_ptr (&branch)[1]) { switch (operation) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ allocate > > \ (operation, branch[0]); \ unary_opr_switch_statements #undef case_stmt default : return error_node(); } } inline expression_node_ptr synthesize_unary_expression(const details::operator_type& operation, expression_node_ptr (&branch)[1]) { switch (operation) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ allocate > >(branch[0]); \ unary_opr_switch_statements #undef case_stmt default : return error_node(); } } inline expression_node_ptr const_optimise_sf3(const details::operator_type& operation, expression_node_ptr (&branch)[3]) { expression_node_ptr temp_node = error_node(); switch (operation) { #define case_stmt(op) \ case details::e_sf##op : temp_node = node_allocator_-> \ allocate > > \ (operation, branch); \ break; \ case_stmt(00) case_stmt(01) case_stmt(02) case_stmt(03) case_stmt(04) case_stmt(05) case_stmt(06) case_stmt(07) case_stmt(08) case_stmt(09) case_stmt(10) case_stmt(11) case_stmt(12) case_stmt(13) case_stmt(14) case_stmt(15) case_stmt(16) case_stmt(17) case_stmt(18) case_stmt(19) case_stmt(20) case_stmt(21) case_stmt(22) case_stmt(23) case_stmt(24) case_stmt(25) case_stmt(26) case_stmt(27) case_stmt(28) case_stmt(29) case_stmt(30) case_stmt(31) case_stmt(32) case_stmt(33) case_stmt(34) case_stmt(35) case_stmt(36) case_stmt(37) case_stmt(38) case_stmt(39) case_stmt(40) case_stmt(41) case_stmt(42) case_stmt(43) case_stmt(44) case_stmt(45) case_stmt(46) case_stmt(47) #undef case_stmt default : return error_node(); } const T v = temp_node->value(); details::free_node(*node_allocator_,temp_node); return node_allocator_->allocate(v); } inline expression_node_ptr varnode_optimise_sf3(const details::operator_type& operation, expression_node_ptr (&branch)[3]) { typedef details::variable_node* variable_ptr; const Type& v0 = static_cast(branch[0])->ref(); const Type& v1 = static_cast(branch[1])->ref(); const Type& v2 = static_cast(branch[2])->ref(); switch (operation) { #define case_stmt(op) \ case details::e_sf##op : return node_allocator_-> \ allocate_rrr > > \ (v0, v1, v2); \ case_stmt(00) case_stmt(01) case_stmt(02) case_stmt(03) case_stmt(04) case_stmt(05) case_stmt(06) case_stmt(07) case_stmt(08) case_stmt(09) case_stmt(10) case_stmt(11) case_stmt(12) case_stmt(13) case_stmt(14) case_stmt(15) case_stmt(16) case_stmt(17) case_stmt(18) case_stmt(19) case_stmt(20) case_stmt(21) case_stmt(22) case_stmt(23) case_stmt(24) case_stmt(25) case_stmt(26) case_stmt(27) case_stmt(28) case_stmt(29) case_stmt(30) case_stmt(31) case_stmt(32) case_stmt(33) case_stmt(34) case_stmt(35) case_stmt(36) case_stmt(37) case_stmt(38) case_stmt(39) case_stmt(40) case_stmt(41) case_stmt(42) case_stmt(43) case_stmt(44) case_stmt(45) case_stmt(46) case_stmt(47) #undef case_stmt default : return error_node(); } } inline expression_node_ptr special_function(const details::operator_type& operation, expression_node_ptr (&branch)[3]) { if (!all_nodes_valid(branch)) return error_node(); else if (is_constant_foldable(branch)) return const_optimise_sf3(operation,branch); else if (all_nodes_variables(branch)) return varnode_optimise_sf3(operation,branch); else { switch (operation) { #define case_stmt(op) \ case details::e_sf##op : return node_allocator_-> \ allocate > > \ (operation, branch); \ case_stmt(00) case_stmt(01) case_stmt(02) case_stmt(03) case_stmt(04) case_stmt(05) case_stmt(06) case_stmt(07) case_stmt(08) case_stmt(09) case_stmt(10) case_stmt(11) case_stmt(12) case_stmt(13) case_stmt(14) case_stmt(15) case_stmt(16) case_stmt(17) case_stmt(18) case_stmt(19) case_stmt(20) case_stmt(21) case_stmt(22) case_stmt(23) case_stmt(24) case_stmt(25) case_stmt(26) case_stmt(27) case_stmt(28) case_stmt(29) case_stmt(30) case_stmt(31) case_stmt(32) case_stmt(33) case_stmt(34) case_stmt(35) case_stmt(36) case_stmt(37) case_stmt(38) case_stmt(39) case_stmt(40) case_stmt(41) case_stmt(42) case_stmt(43) case_stmt(44) case_stmt(45) case_stmt(46) case_stmt(47) #undef case_stmt default : return error_node(); } } } inline expression_node_ptr const_optimise_sf4(const details::operator_type& operation, expression_node_ptr (&branch)[4]) { expression_node_ptr temp_node = error_node(); switch (operation) { #define case_stmt(op) \ case details::e_sf##op : temp_node = node_allocator_-> \ allocate > > \ (operation, branch); \ break; \ case_stmt(48) case_stmt(49) case_stmt(50) case_stmt(51) case_stmt(52) case_stmt(53) case_stmt(54) case_stmt(55) case_stmt(56) case_stmt(57) case_stmt(58) case_stmt(59) case_stmt(60) case_stmt(61) case_stmt(62) case_stmt(63) case_stmt(64) case_stmt(65) case_stmt(66) case_stmt(67) case_stmt(68) case_stmt(69) case_stmt(70) case_stmt(71) case_stmt(72) case_stmt(73) case_stmt(74) case_stmt(75) case_stmt(76) case_stmt(77) case_stmt(78) case_stmt(79) case_stmt(80) case_stmt(81) case_stmt(82) case_stmt(83) case_stmt(84) case_stmt(85) case_stmt(86) case_stmt(87) case_stmt(88) case_stmt(89) case_stmt(90) case_stmt(91) case_stmt(92) case_stmt(93) case_stmt(94) case_stmt(95) case_stmt(96) case_stmt(97) case_stmt(98) case_stmt(99) #undef case_stmt default : return error_node(); } const T v = temp_node->value(); details::free_node(*node_allocator_,temp_node); return node_allocator_->allocate(v); } inline expression_node_ptr varnode_optimise_sf4(const details::operator_type& operation, expression_node_ptr (&branch)[4]) { typedef details::variable_node* variable_ptr; const Type& v0 = static_cast(branch[0])->ref(); const Type& v1 = static_cast(branch[1])->ref(); const Type& v2 = static_cast(branch[2])->ref(); const Type& v3 = static_cast(branch[3])->ref(); switch (operation) { #define case_stmt(op) \ case details::e_sf##op : return node_allocator_-> \ allocate_rrrr > > \ (v0, v1, v2, v3); \ case_stmt(48) case_stmt(49) case_stmt(50) case_stmt(51) case_stmt(52) case_stmt(53) case_stmt(54) case_stmt(55) case_stmt(56) case_stmt(57) case_stmt(58) case_stmt(59) case_stmt(60) case_stmt(61) case_stmt(62) case_stmt(63) case_stmt(64) case_stmt(65) case_stmt(66) case_stmt(67) case_stmt(68) case_stmt(69) case_stmt(70) case_stmt(71) case_stmt(72) case_stmt(73) case_stmt(74) case_stmt(75) case_stmt(76) case_stmt(77) case_stmt(78) case_stmt(79) case_stmt(80) case_stmt(81) case_stmt(82) case_stmt(83) case_stmt(84) case_stmt(85) case_stmt(86) case_stmt(87) case_stmt(88) case_stmt(89) case_stmt(90) case_stmt(91) case_stmt(92) case_stmt(93) case_stmt(94) case_stmt(95) case_stmt(96) case_stmt(97) case_stmt(98) case_stmt(99) #undef case_stmt default : return error_node(); } } inline expression_node_ptr special_function(const details::operator_type& operation, expression_node_ptr (&branch)[4]) { if (!all_nodes_valid(branch)) return error_node(); else if (is_constant_foldable(branch)) return const_optimise_sf4(operation,branch); else if (all_nodes_variables(branch)) return varnode_optimise_sf4(operation,branch); switch (operation) { #define case_stmt(op) \ case details::e_sf##op : return node_allocator_-> \ allocate > > \ (operation, branch); \ case_stmt(48) case_stmt(49) case_stmt(50) case_stmt(51) case_stmt(52) case_stmt(53) case_stmt(54) case_stmt(55) case_stmt(56) case_stmt(57) case_stmt(58) case_stmt(59) case_stmt(60) case_stmt(61) case_stmt(62) case_stmt(63) case_stmt(64) case_stmt(65) case_stmt(66) case_stmt(67) case_stmt(68) case_stmt(69) case_stmt(70) case_stmt(71) case_stmt(72) case_stmt(73) case_stmt(74) case_stmt(75) case_stmt(76) case_stmt(77) case_stmt(78) case_stmt(79) case_stmt(80) case_stmt(81) case_stmt(82) case_stmt(83) case_stmt(84) case_stmt(85) case_stmt(86) case_stmt(87) case_stmt(88) case_stmt(89) case_stmt(90) case_stmt(91) case_stmt(92) case_stmt(93) case_stmt(94) case_stmt(95) case_stmt(96) case_stmt(97) case_stmt(98) case_stmt(99) #undef case_stmt default : return error_node(); } } template class Sequence> inline expression_node_ptr const_optimise_varargfunc(const details::operator_type& operation, Sequence& arg_list) { expression_node_ptr temp_node = error_node(); switch (operation) { #define case_stmt(op0,op1) \ case op0 : temp_node = node_allocator_-> \ allocate > > \ (arg_list); \ break; \ case_stmt(details::e_sum , details::vararg_add_op ) case_stmt(details::e_prod , details::vararg_mul_op ) case_stmt(details::e_avg , details::vararg_avg_op ) case_stmt(details::e_min , details::vararg_min_op ) case_stmt(details::e_max , details::vararg_max_op ) case_stmt(details::e_mand , details::vararg_mand_op ) case_stmt(details::e_mor , details::vararg_mor_op ) case_stmt(details::e_multi , details::vararg_multi_op) #undef case_stmt default : return error_node(); } const T v = temp_node->value(); details::free_node(*node_allocator_,temp_node); return node_allocator_->allocate(v); } inline bool special_one_parameter_vararg(const details::operator_type& operation) { return ( (details::e_sum == operation) || (details::e_prod == operation) || (details::e_avg == operation) || (details::e_min == operation) || (details::e_max == operation) ); } template class Sequence> inline expression_node_ptr varnode_optimise_varargfunc(const details::operator_type& operation, Sequence& arg_list) { switch (operation) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ allocate > >(arg_list); \ case_stmt(details::e_sum , details::vararg_add_op ) case_stmt(details::e_prod , details::vararg_mul_op ) case_stmt(details::e_avg , details::vararg_avg_op ) case_stmt(details::e_min , details::vararg_min_op ) case_stmt(details::e_max , details::vararg_max_op ) case_stmt(details::e_mand , details::vararg_mand_op ) case_stmt(details::e_mor , details::vararg_mor_op ) case_stmt(details::e_multi , details::vararg_multi_op) #undef case_stmt default : return error_node(); } } template class Sequence> inline expression_node_ptr vectorize_func(const details::operator_type& operation, Sequence& arg_list) { if (1 == arg_list.size()) { switch (operation) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ allocate > >(arg_list[0]); \ case_stmt(details::e_sum , details::vec_add_op) case_stmt(details::e_prod , details::vec_mul_op) case_stmt(details::e_avg , details::vec_avg_op) case_stmt(details::e_min , details::vec_min_op) case_stmt(details::e_max , details::vec_max_op) #undef case_stmt default : return error_node(); } } else return error_node(); } template class Sequence> inline expression_node_ptr vararg_function(const details::operator_type& operation, Sequence& arg_list) { if (!all_nodes_valid(arg_list)) { details::free_all_nodes(*node_allocator_,arg_list); return error_node(); } else if (is_constant_foldable(arg_list)) return const_optimise_varargfunc(operation,arg_list); else if ((arg_list.size() == 1) && details::is_ivector_node(arg_list[0])) return vectorize_func(operation,arg_list); else if ((arg_list.size() == 1) && special_one_parameter_vararg(operation)) return arg_list[0]; else if (all_nodes_variables(arg_list)) return varnode_optimise_varargfunc(operation,arg_list); #ifndef exprtk_disable_string_capabilities if (details::e_smulti == operation) { return node_allocator_-> allocate > >(arg_list); } else #endif { switch (operation) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ allocate > >(arg_list); \ case_stmt(details::e_sum , details::vararg_add_op ) case_stmt(details::e_prod , details::vararg_mul_op ) case_stmt(details::e_avg , details::vararg_avg_op ) case_stmt(details::e_min , details::vararg_min_op ) case_stmt(details::e_max , details::vararg_max_op ) case_stmt(details::e_mand , details::vararg_mand_op ) case_stmt(details::e_mor , details::vararg_mor_op ) case_stmt(details::e_multi , details::vararg_multi_op) #undef case_stmt default : return error_node(); } } } template inline expression_node_ptr function(ifunction_t* f, expression_node_ptr (&b)[N]) { typedef typename details::function_N_node function_N_node_t; expression_node_ptr result = synthesize_expression(f,b); if (0 == result) return error_node(); else { // Can the function call be completely optimised? if (details::is_constant_node(result)) return result; else if (!all_nodes_valid(b)) return error_node(); else if (N != f->param_count) { details::free_all_nodes(*node_allocator_,b); return error_node(); } function_N_node_t* func_node_ptr = static_cast(result); if (func_node_ptr->init_branches(b)) return result; else { details::free_all_nodes(*node_allocator_,b); return error_node(); } } } inline expression_node_ptr function(ifunction_t* f) { typedef typename details::function_N_node function_N_node_t; return node_allocator_->allocate(f); } inline expression_node_ptr vararg_function_call(ivararg_function_t* vaf, std::vector& arg_list) { if (!all_nodes_valid(arg_list)) { details::free_all_nodes(*node_allocator_,arg_list); return error_node(); } typedef details::vararg_function_node alloc_type; expression_node_ptr result = node_allocator_->allocate(vaf,arg_list); if ( !arg_list.empty() && !vaf->has_side_effects() && is_constant_foldable(arg_list) ) { const Type v = result->value(); details::free_node(*node_allocator_,result); result = node_allocator_->allocate(v); } parser_->state_.activate_side_effect("vararg_function_call()"); return result; } inline expression_node_ptr generic_function_call(igeneric_function_t* gf, std::vector& arg_list, const std::size_t& param_seq_index = std::numeric_limits::max()) { if (!all_nodes_valid(arg_list)) { details::free_all_nodes(*node_allocator_,arg_list); return error_node(); } typedef details::generic_function_node alloc_type1; typedef details::multimode_genfunction_node alloc_type2; const std::size_t no_psi = std::numeric_limits::max(); expression_node_ptr result = error_node(); if (no_psi == param_seq_index) result = node_allocator_->allocate(arg_list,gf); else result = node_allocator_->allocate(gf, param_seq_index, arg_list); alloc_type1* genfunc_node_ptr = static_cast(result); if ( !arg_list.empty() && !gf->has_side_effects() && parser_->state_.type_check_enabled && is_constant_foldable(arg_list) ) { genfunc_node_ptr->init_branches(); const Type v = result->value(); details::free_node(*node_allocator_,result); return node_allocator_->allocate(v); } else if (genfunc_node_ptr->init_branches()) { parser_->state_.activate_side_effect("generic_function_call()"); return result; } else { details::free_node(*node_allocator_, result); details::free_all_nodes(*node_allocator_, arg_list); return error_node(); } } #ifndef exprtk_disable_string_capabilities inline expression_node_ptr string_function_call(igeneric_function_t* gf, std::vector& arg_list, const std::size_t& param_seq_index = std::numeric_limits::max()) { if (!all_nodes_valid(arg_list)) { details::free_all_nodes(*node_allocator_,arg_list); return error_node(); } typedef details::string_function_node alloc_type1; typedef details::multimode_strfunction_node alloc_type2; const std::size_t no_psi = std::numeric_limits::max(); expression_node_ptr result = error_node(); if (no_psi == param_seq_index) result = node_allocator_->allocate(gf,arg_list); else result = node_allocator_->allocate(gf, param_seq_index, arg_list); alloc_type1* strfunc_node_ptr = static_cast(result); if ( !arg_list.empty() && !gf->has_side_effects() && is_constant_foldable(arg_list) ) { strfunc_node_ptr->init_branches(); const Type v = result->value(); details::free_node(*node_allocator_,result); return node_allocator_->allocate(v); } else if (strfunc_node_ptr->init_branches()) { parser_->state_.activate_side_effect("string_function_call()"); return result; } else { details::free_node (*node_allocator_,result ); details::free_all_nodes(*node_allocator_,arg_list); return error_node(); } } #endif #ifndef exprtk_disable_return_statement inline expression_node_ptr return_call(std::vector& arg_list) { if (!all_nodes_valid(arg_list)) { details::free_all_nodes(*node_allocator_,arg_list); return error_node(); } typedef details::return_node alloc_type; expression_node_ptr result = node_allocator_-> allocate_rr(arg_list,parser_->results_ctx()); alloc_type* return_node_ptr = static_cast(result); if (return_node_ptr->init_branches()) { parser_->state_.activate_side_effect("return_call()"); return result; } else { details::free_node (*node_allocator_,result ); details::free_all_nodes(*node_allocator_,arg_list); return error_node(); } } inline expression_node_ptr return_envelope(expression_node_ptr body, results_context_t* rc, bool*& return_invoked) { typedef details::return_envelope_node alloc_type; expression_node_ptr result = node_allocator_-> allocate_cr(body,(*rc)); return_invoked = static_cast(result)->retinvk_ptr(); return result; } #else inline expression_node_ptr return_call(std::vector&) { return error_node(); } inline expression_node_ptr return_envelope(expression_node_ptr, results_context_t*, bool*&) { return error_node(); } #endif inline expression_node_ptr vector_element(const std::string& symbol, vector_holder_ptr vector_base, expression_node_ptr index) { expression_node_ptr result = error_node(); if (details::is_constant_node(index)) { std::size_t i = static_cast(details::numeric::to_int64(index->value())); details::free_node(*node_allocator_,index); if (vector_base->rebaseable()) { return node_allocator_->allocate(i,vector_base); } scope_element& se = parser_->sem_.get_element(symbol,i); if (se.index == i) { result = se.var_node; } else { scope_element nse; nse.name = symbol; nse.active = true; nse.ref_count = 1; nse.type = scope_element::e_vecelem; nse.index = i; nse.depth = parser_->state_.scope_depth; nse.data = 0; nse.var_node = node_allocator_->allocate((*(*vector_base)[i])); if (!parser_->sem_.add_element(nse)) { parser_->set_synthesis_error("Failed to add new local vector element to SEM [1]"); parser_->sem_.free_element(nse); result = error_node(); } exprtk_debug(("vector_element() - INFO - Added new local vector element: %s\n",nse.name.c_str())); parser_->state_.activate_side_effect("vector_element()"); result = nse.var_node; } } else if (vector_base->rebaseable()) result = node_allocator_->allocate(index,vector_base); else result = node_allocator_->allocate(index,vector_base); return result; } private: template inline bool is_constant_foldable(NodePtr (&b)[N]) const { for (std::size_t i = 0; i < N; ++i) { if (0 == b[i]) return false; else if (!details::is_constant_node(b[i])) return false; } return true; } template class Sequence> inline bool is_constant_foldable(const Sequence& b) const { for (std::size_t i = 0; i < b.size(); ++i) { if (0 == b[i]) return false; else if (!details::is_constant_node(b[i])) return false; } return true; } void lodge_assignment(symbol_type cst, expression_node_ptr node) { parser_->state_.activate_side_effect("lodge_assignment()"); if (!parser_->dec_.collect_assignments()) return; std::string symbol_name; switch (cst) { case e_st_variable : symbol_name = parser_->symtab_store_ .get_variable_name(node); break; #ifndef exprtk_disable_string_capabilities case e_st_string : symbol_name = parser_->symtab_store_ .get_stringvar_name(node); break; #endif case e_st_vector : { typedef details::vector_holder vector_holder_t; vector_holder_t& vh = static_cast(node)->vec_holder(); symbol_name = parser_->symtab_store_.get_vector_name(&vh); } break; case e_st_vecelem : { typedef details::vector_holder vector_holder_t; vector_holder_t& vh = static_cast(node)->vec_holder(); symbol_name = parser_->symtab_store_.get_vector_name(&vh); cst = e_st_vector; } break; default : return; } if (!symbol_name.empty()) { parser_->dec_.add_assignment(symbol_name,cst); } } inline expression_node_ptr synthesize_assignment_expression(const details::operator_type& operation, expression_node_ptr (&branch)[2]) { if (details::is_variable_node(branch[0])) { lodge_assignment(e_st_variable,branch[0]); return synthesize_expression(operation,branch); } else if (details::is_vector_elem_node(branch[0])) { lodge_assignment(e_st_vecelem,branch[0]); return synthesize_expression(operation, branch); } else if (details::is_rebasevector_elem_node(branch[0])) { lodge_assignment(e_st_vecelem,branch[0]); return synthesize_expression(operation, branch); } else if (details::is_rebasevector_celem_node(branch[0])) { lodge_assignment(e_st_vecelem,branch[0]); return synthesize_expression(operation, branch); } #ifndef exprtk_disable_string_capabilities else if (details::is_string_node(branch[0])) { lodge_assignment(e_st_string,branch[0]); return synthesize_expression(operation, branch); } else if (details::is_string_range_node(branch[0])) { lodge_assignment(e_st_string,branch[0]); return synthesize_expression(operation, branch); } #endif else if (details::is_vector_node(branch[0])) { lodge_assignment(e_st_vector,branch[0]); if (details::is_ivector_node(branch[1])) return synthesize_expression(operation, branch); else return synthesize_expression(operation, branch); } else { parser_->set_synthesis_error("Invalid assignment operation.[1]"); return error_node(); } } inline expression_node_ptr synthesize_assignment_operation_expression(const details::operator_type& operation, expression_node_ptr (&branch)[2]) { if (details::is_variable_node(branch[0])) { lodge_assignment(e_st_variable,branch[0]); switch (operation) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ template allocate_rrr > > \ (operation, branch[0], branch[1]); \ case_stmt(details::e_addass,details::add_op) case_stmt(details::e_subass,details::sub_op) case_stmt(details::e_mulass,details::mul_op) case_stmt(details::e_divass,details::div_op) case_stmt(details::e_modass,details::mod_op) #undef case_stmt default : return error_node(); } } else if (details::is_vector_elem_node(branch[0])) { switch (operation) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ template allocate_rrr > > \ (operation, branch[0], branch[1]); \ case_stmt(details::e_addass,details::add_op) case_stmt(details::e_subass,details::sub_op) case_stmt(details::e_mulass,details::mul_op) case_stmt(details::e_divass,details::div_op) case_stmt(details::e_modass,details::mod_op) #undef case_stmt default : return error_node(); } } else if (details::is_rebasevector_elem_node(branch[0])) { switch (operation) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ template allocate_rrr > > \ (operation, branch[0], branch[1]); \ case_stmt(details::e_addass,details::add_op) case_stmt(details::e_subass,details::sub_op) case_stmt(details::e_mulass,details::mul_op) case_stmt(details::e_divass,details::div_op) case_stmt(details::e_modass,details::mod_op) #undef case_stmt default : return error_node(); } } else if (details::is_rebasevector_celem_node(branch[0])) { switch (operation) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ template allocate_rrr > > \ (operation, branch[0], branch[1]); \ case_stmt(details::e_addass,details::add_op) case_stmt(details::e_subass,details::sub_op) case_stmt(details::e_mulass,details::mul_op) case_stmt(details::e_divass,details::div_op) case_stmt(details::e_modass,details::mod_op) #undef case_stmt default : return error_node(); } } else if (details::is_vector_node(branch[0])) { lodge_assignment(e_st_vector,branch[0]); if (details::is_ivector_node(branch[1])) { switch (operation) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ template allocate_rrr > > \ (operation, branch[0], branch[1]); \ case_stmt(details::e_addass,details::add_op) case_stmt(details::e_subass,details::sub_op) case_stmt(details::e_mulass,details::mul_op) case_stmt(details::e_divass,details::div_op) case_stmt(details::e_modass,details::mod_op) #undef case_stmt default : return error_node(); } } else { switch (operation) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ template allocate_rrr > > \ (operation, branch[0], branch[1]); \ case_stmt(details::e_addass,details::add_op) case_stmt(details::e_subass,details::sub_op) case_stmt(details::e_mulass,details::mul_op) case_stmt(details::e_divass,details::div_op) case_stmt(details::e_modass,details::mod_op) #undef case_stmt default : return error_node(); } } } #ifndef exprtk_disable_string_capabilities else if ( (details::e_addass == operation) && details::is_string_node(branch[0]) ) { typedef details::assignment_string_node addass_t; lodge_assignment(e_st_string,branch[0]); return synthesize_expression(operation,branch); } #endif else { parser_->set_synthesis_error("Invalid assignment operation[2]"); return error_node(); } } inline expression_node_ptr synthesize_veceqineqlogic_operation_expression(const details::operator_type& operation, expression_node_ptr (&branch)[2]) { const bool is_b0_ivec = details::is_ivector_node(branch[0]); const bool is_b1_ivec = details::is_ivector_node(branch[1]); #define batch_eqineq_logic_case \ case_stmt(details:: e_lt, details:: lt_op) \ case_stmt(details:: e_lte, details:: lte_op) \ case_stmt(details:: e_gt, details:: gt_op) \ case_stmt(details:: e_gte, details:: gte_op) \ case_stmt(details:: e_eq, details:: eq_op) \ case_stmt(details:: e_ne, details:: ne_op) \ case_stmt(details::e_equal, details::equal_op) \ case_stmt(details:: e_and, details:: and_op) \ case_stmt(details:: e_nand, details:: nand_op) \ case_stmt(details:: e_or, details:: or_op) \ case_stmt(details:: e_nor, details:: nor_op) \ case_stmt(details:: e_xor, details:: xor_op) \ case_stmt(details:: e_xnor, details:: xnor_op) \ if (is_b0_ivec && is_b1_ivec) { switch (operation) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ template allocate_rrr > > \ (operation, branch[0], branch[1]); \ batch_eqineq_logic_case #undef case_stmt default : return error_node(); } } else if (is_b0_ivec && !is_b1_ivec) { switch (operation) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ template allocate_rrr > > \ (operation, branch[0], branch[1]); \ batch_eqineq_logic_case #undef case_stmt default : return error_node(); } } else if (!is_b0_ivec && is_b1_ivec) { switch (operation) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ template allocate_rrr > > \ (operation, branch[0], branch[1]); \ batch_eqineq_logic_case #undef case_stmt default : return error_node(); } } else return error_node(); #undef batch_eqineq_logic_case } inline expression_node_ptr synthesize_vecarithmetic_operation_expression(const details::operator_type& operation, expression_node_ptr (&branch)[2]) { const bool is_b0_ivec = details::is_ivector_node(branch[0]); const bool is_b1_ivec = details::is_ivector_node(branch[1]); #define vector_ops \ case_stmt(details::e_add,details::add_op) \ case_stmt(details::e_sub,details::sub_op) \ case_stmt(details::e_mul,details::mul_op) \ case_stmt(details::e_div,details::div_op) \ case_stmt(details::e_mod,details::mod_op) \ if (is_b0_ivec && is_b1_ivec) { switch (operation) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ template allocate_rrr > > \ (operation, branch[0], branch[1]); \ vector_ops case_stmt(details::e_pow,details:: pow_op) #undef case_stmt default : return error_node(); } } else if (is_b0_ivec && !is_b1_ivec) { switch (operation) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ template allocate_rrr > > \ (operation, branch[0], branch[1]); \ vector_ops case_stmt(details::e_pow,details:: pow_op) #undef case_stmt default : return error_node(); } } else if (!is_b0_ivec && is_b1_ivec) { switch (operation) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ template allocate_rrr > > \ (operation, branch[0], branch[1]); \ vector_ops #undef case_stmt default : return error_node(); } } else return error_node(); #undef vector_ops } inline expression_node_ptr synthesize_swap_expression(expression_node_ptr (&branch)[2]) { const bool v0_is_ivar = details::is_ivariable_node(branch[0]); const bool v1_is_ivar = details::is_ivariable_node(branch[1]); const bool v0_is_ivec = details::is_ivector_node (branch[0]); const bool v1_is_ivec = details::is_ivector_node (branch[1]); #ifndef exprtk_disable_string_capabilities const bool v0_is_str = details::is_generally_string_node(branch[0]); const bool v1_is_str = details::is_generally_string_node(branch[1]); #endif expression_node_ptr result = error_node(); if (v0_is_ivar && v1_is_ivar) { typedef details::variable_node* variable_node_ptr; variable_node_ptr v0 = variable_node_ptr(0); variable_node_ptr v1 = variable_node_ptr(0); if ( (0 != (v0 = dynamic_cast(branch[0]))) && (0 != (v1 = dynamic_cast(branch[1]))) ) { result = node_allocator_->allocate >(v0,v1); } else result = node_allocator_->allocate >(branch[0],branch[1]); } else if (v0_is_ivec && v1_is_ivec) { result = node_allocator_->allocate >(branch[0],branch[1]); } #ifndef exprtk_disable_string_capabilities else if (v0_is_str && v1_is_str) { if (is_string_node(branch[0]) && is_string_node(branch[1])) result = node_allocator_->allocate > (branch[0], branch[1]); else result = node_allocator_->allocate > (branch[0], branch[1]); } #endif else { parser_->set_synthesis_error("Only variables, strings, vectors or vector elements can be swapped"); return error_node(); } parser_->state_.activate_side_effect("synthesize_swap_expression()"); return result; } #ifndef exprtk_disable_sc_andor inline expression_node_ptr synthesize_shortcircuit_expression(const details::operator_type& operation, expression_node_ptr (&branch)[2]) { expression_node_ptr result = error_node(); if (details::is_constant_node(branch[0])) { if ( (details::e_scand == operation) && std::equal_to()(T(0),branch[0]->value()) ) result = node_allocator_->allocate_c(T(0)); else if ( (details::e_scor == operation) && std::not_equal_to()(T(0),branch[0]->value()) ) result = node_allocator_->allocate_c(T(1)); } if (details::is_constant_node(branch[1]) && (0 == result)) { if ( (details::e_scand == operation) && std::equal_to()(T(0),branch[1]->value()) ) result = node_allocator_->allocate_c(T(0)); else if ( (details::e_scor == operation) && std::not_equal_to()(T(0),branch[1]->value()) ) result = node_allocator_->allocate_c(T(1)); } if (result) { free_node(*node_allocator_, branch[0]); free_node(*node_allocator_, branch[1]); return result; } else if (details::e_scand == operation) { return synthesize_expression(operation, branch); } else if (details::e_scor == operation) { return synthesize_expression(operation, branch); } else return error_node(); } #else inline expression_node_ptr synthesize_shortcircuit_expression(const details::operator_type&, expression_node_ptr (&)[2]) { return error_node(); } #endif #define basic_opr_switch_statements \ case_stmt(details::e_add, details::add_op) \ case_stmt(details::e_sub, details::sub_op) \ case_stmt(details::e_mul, details::mul_op) \ case_stmt(details::e_div, details::div_op) \ case_stmt(details::e_mod, details::mod_op) \ case_stmt(details::e_pow, details::pow_op) \ #define extended_opr_switch_statements \ case_stmt(details:: e_lt, details:: lt_op) \ case_stmt(details:: e_lte, details:: lte_op) \ case_stmt(details:: e_gt, details:: gt_op) \ case_stmt(details:: e_gte, details:: gte_op) \ case_stmt(details:: e_eq, details:: eq_op) \ case_stmt(details:: e_ne, details:: ne_op) \ case_stmt(details:: e_and, details:: and_op) \ case_stmt(details::e_nand, details::nand_op) \ case_stmt(details:: e_or, details:: or_op) \ case_stmt(details:: e_nor, details:: nor_op) \ case_stmt(details:: e_xor, details:: xor_op) \ case_stmt(details::e_xnor, details::xnor_op) \ #ifndef exprtk_disable_cardinal_pow_optimisation template class IPowNode> inline expression_node_ptr cardinal_pow_optimisation_impl(const TType& v, const unsigned int& p) { switch (p) { #define case_stmt(cp) \ case cp : return node_allocator_-> \ allocate > >(v); \ case_stmt( 1) case_stmt( 2) case_stmt( 3) case_stmt( 4) case_stmt( 5) case_stmt( 6) case_stmt( 7) case_stmt( 8) case_stmt( 9) case_stmt(10) case_stmt(11) case_stmt(12) case_stmt(13) case_stmt(14) case_stmt(15) case_stmt(16) case_stmt(17) case_stmt(18) case_stmt(19) case_stmt(20) case_stmt(21) case_stmt(22) case_stmt(23) case_stmt(24) case_stmt(25) case_stmt(26) case_stmt(27) case_stmt(28) case_stmt(29) case_stmt(30) case_stmt(31) case_stmt(32) case_stmt(33) case_stmt(34) case_stmt(35) case_stmt(36) case_stmt(37) case_stmt(38) case_stmt(39) case_stmt(40) case_stmt(41) case_stmt(42) case_stmt(43) case_stmt(44) case_stmt(45) case_stmt(46) case_stmt(47) case_stmt(48) case_stmt(49) case_stmt(50) case_stmt(51) case_stmt(52) case_stmt(53) case_stmt(54) case_stmt(55) case_stmt(56) case_stmt(57) case_stmt(58) case_stmt(59) case_stmt(60) #undef case_stmt default : return error_node(); } } inline expression_node_ptr cardinal_pow_optimisation(const T& v, const T& c) { const bool not_recipricol = (c >= T(0)); const unsigned int p = static_cast(details::numeric::to_int32(details::numeric::abs(c))); if (0 == p) return node_allocator_->allocate_c(T(1)); else if (std::equal_to()(T(2),c)) { return node_allocator_-> template allocate_rr > >(v,v); } else { if (not_recipricol) return cardinal_pow_optimisation_impl(v,p); else return cardinal_pow_optimisation_impl(v,p); } } inline bool cardinal_pow_optimisable(const details::operator_type& operation, const T& c) { return (details::e_pow == operation) && (details::numeric::abs(c) <= T(60)) && details::numeric::is_integer(c); } inline expression_node_ptr cardinal_pow_optimisation(expression_node_ptr (&branch)[2]) { const Type c = static_cast*>(branch[1])->value(); const bool not_recipricol = (c >= T(0)); const unsigned int p = static_cast(details::numeric::to_int32(details::numeric::abs(c))); node_allocator_->free(branch[1]); if (0 == p) { details::free_all_nodes(*node_allocator_, branch); return node_allocator_->allocate_c(T(1)); } else if (not_recipricol) return cardinal_pow_optimisation_impl(branch[0],p); else return cardinal_pow_optimisation_impl(branch[0],p); } #else inline expression_node_ptr cardinal_pow_optimisation(T&, const T&) { return error_node(); } inline bool cardinal_pow_optimisable(const details::operator_type&, const T&) { return false; } inline expression_node_ptr cardinal_pow_optimisation(expression_node_ptr(&)[2]) { return error_node(); } #endif struct synthesize_binary_ext_expression { static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { const bool left_neg = is_neg_unary_node(branch[0]); const bool right_neg = is_neg_unary_node(branch[1]); if (left_neg && right_neg) { if ( (details::e_add == operation) || (details::e_sub == operation) || (details::e_mul == operation) || (details::e_div == operation) ) { if ( !expr_gen.parser_->simplify_unary_negation_branch(branch[0]) || !expr_gen.parser_->simplify_unary_negation_branch(branch[1]) ) { details::free_all_nodes(*expr_gen.node_allocator_,branch); return error_node(); } } switch (operation) { // -f(x + 1) + -g(y + 1) --> -(f(x + 1) + g(y + 1)) case details::e_add : return expr_gen(details::e_neg, expr_gen.node_allocator_-> template allocate > > (branch[0],branch[1])); // -f(x + 1) - -g(y + 1) --> g(y + 1) - f(x + 1) case details::e_sub : return expr_gen.node_allocator_-> template allocate > > (branch[1],branch[0]); default : break; } } else if (left_neg && !right_neg) { if ( (details::e_add == operation) || (details::e_sub == operation) || (details::e_mul == operation) || (details::e_div == operation) ) { if (!expr_gen.parser_->simplify_unary_negation_branch(branch[0])) { details::free_all_nodes(*expr_gen.node_allocator_,branch); return error_node(); } switch (operation) { // -f(x + 1) + g(y + 1) --> g(y + 1) - f(x + 1) case details::e_add : return expr_gen.node_allocator_-> template allocate > > (branch[1], branch[0]); // -f(x + 1) - g(y + 1) --> -(f(x + 1) + g(y + 1)) case details::e_sub : return expr_gen(details::e_neg, expr_gen.node_allocator_-> template allocate > > (branch[0], branch[1])); // -f(x + 1) * g(y + 1) --> -(f(x + 1) * g(y + 1)) case details::e_mul : return expr_gen(details::e_neg, expr_gen.node_allocator_-> template allocate > > (branch[0], branch[1])); // -f(x + 1) / g(y + 1) --> -(f(x + 1) / g(y + 1)) case details::e_div : return expr_gen(details::e_neg, expr_gen.node_allocator_-> template allocate > > (branch[0], branch[1])); default : return error_node(); } } } else if (!left_neg && right_neg) { if ( (details::e_add == operation) || (details::e_sub == operation) || (details::e_mul == operation) || (details::e_div == operation) ) { if (!expr_gen.parser_->simplify_unary_negation_branch(branch[1])) { details::free_all_nodes(*expr_gen.node_allocator_,branch); return error_node(); } switch (operation) { // f(x + 1) + -g(y + 1) --> f(x + 1) - g(y + 1) case details::e_add : return expr_gen.node_allocator_-> template allocate > > (branch[0], branch[1]); // f(x + 1) - - g(y + 1) --> f(x + 1) + g(y + 1) case details::e_sub : return expr_gen.node_allocator_-> template allocate > > (branch[0], branch[1]); // f(x + 1) * -g(y + 1) --> -(f(x + 1) * g(y + 1)) case details::e_mul : return expr_gen(details::e_neg, expr_gen.node_allocator_-> template allocate > > (branch[0], branch[1])); // f(x + 1) / -g(y + 1) --> -(f(x + 1) / g(y + 1)) case details::e_div : return expr_gen(details::e_neg, expr_gen.node_allocator_-> template allocate > > (branch[0], branch[1])); default : return error_node(); } } } switch (operation) { #define case_stmt(op0,op1) \ case op0 : return expr_gen.node_allocator_-> \ template allocate > > \ (branch[0], branch[1]); \ basic_opr_switch_statements extended_opr_switch_statements #undef case_stmt default : return error_node(); } } }; struct synthesize_vob_expression { static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { const Type& v = static_cast*>(branch[0])->ref(); #ifndef exprtk_disable_enhanced_features if (details::is_sf3ext_node(branch[1])) { expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile_right (expr_gen, v, operation, branch[1], result); if (synthesis_result) { free_node(*expr_gen.node_allocator_,branch[1]); return result; } } #endif if ( (details::e_mul == operation) || (details::e_div == operation) ) { if (details::is_uv_node(branch[1])) { typedef details::uv_base_node* uvbn_ptr_t; details::operator_type o = static_cast(branch[1])->operation(); if (details::e_neg == o) { const Type& v1 = static_cast(branch[1])->v(); free_node(*expr_gen.node_allocator_,branch[1]); switch (operation) { case details::e_mul : return expr_gen(details::e_neg, expr_gen.node_allocator_-> template allocate_rr > >(v,v1)); case details::e_div : return expr_gen(details::e_neg, expr_gen.node_allocator_-> template allocate_rr > >(v,v1)); default : break; } } } } switch (operation) { #define case_stmt(op0,op1) \ case op0 : return expr_gen.node_allocator_-> \ template allocate_rc > > \ (v, branch[1]); \ basic_opr_switch_statements extended_opr_switch_statements #undef case_stmt default : return error_node(); } } }; struct synthesize_bov_expression { static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { const Type& v = static_cast*>(branch[1])->ref(); #ifndef exprtk_disable_enhanced_features if (details::is_sf3ext_node(branch[0])) { expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile_left (expr_gen, v, operation, branch[0], result); if (synthesis_result) { free_node(*expr_gen.node_allocator_, branch[0]); return result; } } #endif if ( (details::e_add == operation) || (details::e_sub == operation) || (details::e_mul == operation) || (details::e_div == operation) ) { if (details::is_uv_node(branch[0])) { typedef details::uv_base_node* uvbn_ptr_t; details::operator_type o = static_cast(branch[0])->operation(); if (details::e_neg == o) { const Type& v0 = static_cast(branch[0])->v(); free_node(*expr_gen.node_allocator_,branch[0]); switch (operation) { case details::e_add : return expr_gen.node_allocator_-> template allocate_rr > >(v,v0); case details::e_sub : return expr_gen(details::e_neg, expr_gen.node_allocator_-> template allocate_rr > >(v0,v)); case details::e_mul : return expr_gen(details::e_neg, expr_gen.node_allocator_-> template allocate_rr > >(v0,v)); case details::e_div : return expr_gen(details::e_neg, expr_gen.node_allocator_-> template allocate_rr > >(v0,v)); default : break; } } } } switch (operation) { #define case_stmt(op0,op1) \ case op0 : return expr_gen.node_allocator_-> \ template allocate_cr > > \ (branch[0], v); \ basic_opr_switch_statements extended_opr_switch_statements #undef case_stmt default : return error_node(); } } }; struct synthesize_cob_expression { static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { const Type c = static_cast*>(branch[0])->value(); free_node(*expr_gen.node_allocator_,branch[0]); if (std::equal_to()(T(0),c) && (details::e_mul == operation)) { free_node(*expr_gen.node_allocator_,branch[1]); return expr_gen(T(0)); } else if (std::equal_to()(T(0),c) && (details::e_div == operation)) { free_node(*expr_gen.node_allocator_, branch[1]); return expr_gen(T(0)); } else if (std::equal_to()(T(0),c) && (details::e_add == operation)) return branch[1]; else if (std::equal_to()(T(1),c) && (details::e_mul == operation)) return branch[1]; if (details::is_cob_node(branch[1])) { // Simplify expressions of the form: // 1. (1 * (2 * (3 * (4 * (5 * (6 * (7 * (8 * (9 + x))))))))) --> 40320 * (9 + x) // 2. (1 + (2 + (3 + (4 + (5 + (6 + (7 + (8 + (9 + x))))))))) --> 45 + x if ( (operation == details::e_mul) || (operation == details::e_add) ) { details::cob_base_node* cobnode = static_cast*>(branch[1]); if (operation == cobnode->operation()) { switch (operation) { case details::e_add : cobnode->set_c(c + cobnode->c()); break; case details::e_mul : cobnode->set_c(c * cobnode->c()); break; default : return error_node(); } return cobnode; } } if (operation == details::e_mul) { details::cob_base_node* cobnode = static_cast*>(branch[1]); details::operator_type cob_opr = cobnode->operation(); if ( (details::e_div == cob_opr) || (details::e_mul == cob_opr) ) { switch (cob_opr) { case details::e_div : cobnode->set_c(c * cobnode->c()); break; case details::e_mul : cobnode->set_c(cobnode->c() / c); break; default : return error_node(); } return cobnode; } } else if (operation == details::e_div) { details::cob_base_node* cobnode = static_cast*>(branch[1]); details::operator_type cob_opr = cobnode->operation(); if ( (details::e_div == cob_opr) || (details::e_mul == cob_opr) ) { details::expression_node* new_cobnode = error_node(); switch (cob_opr) { case details::e_div : new_cobnode = expr_gen.node_allocator_-> template allocate_tt > > (c / cobnode->c(),cobnode->move_branch(0)); break; case details::e_mul : new_cobnode = expr_gen.node_allocator_-> template allocate_tt > > (c / cobnode->c(),cobnode->move_branch(0)); break; default : return error_node(); } free_node(*expr_gen.node_allocator_,branch[1]); return new_cobnode; } } } #ifndef exprtk_disable_enhanced_features else if (details::is_sf3ext_node(branch[1])) { expression_node_ptr result = error_node(); if (synthesize_sf4ext_expression::template compile_right(expr_gen,c,operation,branch[1],result)) { free_node(*expr_gen.node_allocator_,branch[1]); return result; } } #endif switch (operation) { #define case_stmt(op0,op1) \ case op0 : return expr_gen.node_allocator_-> \ template allocate_tt > > \ (c, branch[1]); \ basic_opr_switch_statements extended_opr_switch_statements #undef case_stmt default : return error_node(); } } }; struct synthesize_boc_expression { static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { const Type c = static_cast*>(branch[1])->value(); details::free_node(*(expr_gen.node_allocator_),branch[1]); if (std::equal_to()(T(0),c) && (details::e_mul == operation)) { free_node(*expr_gen.node_allocator_,branch[0]); return expr_gen(T(0)); } else if (std::equal_to()(T(0),c) && (details::e_div == operation)) { free_node(*expr_gen.node_allocator_, branch[0]); return expr_gen(std::numeric_limits::quiet_NaN()); } else if (std::equal_to()(T(0),c) && (details::e_add == operation)) return branch[0]; else if (std::equal_to()(T(1),c) && (details::e_mul == operation)) return branch[0]; if (details::is_boc_node(branch[0])) { // Simplify expressions of the form: // 1. (((((((((x + 9) * 8) * 7) * 6) * 5) * 4) * 3) * 2) * 1) --> (x + 9) * 40320 // 2. (((((((((x + 9) + 8) + 7) + 6) + 5) + 4) + 3) + 2) + 1) --> x + 45 if ( (operation == details::e_mul) || (operation == details::e_add) ) { details::boc_base_node* bocnode = static_cast*>(branch[0]); if (operation == bocnode->operation()) { switch (operation) { case details::e_add : bocnode->set_c(c + bocnode->c()); break; case details::e_mul : bocnode->set_c(c * bocnode->c()); break; default : return error_node(); } return bocnode; } } else if (operation == details::e_div) { details::boc_base_node* bocnode = static_cast*>(branch[0]); details::operator_type boc_opr = bocnode->operation(); if ( (details::e_div == boc_opr) || (details::e_mul == boc_opr) ) { switch (boc_opr) { case details::e_div : bocnode->set_c(c * bocnode->c()); break; case details::e_mul : bocnode->set_c(bocnode->c() / c); break; default : return error_node(); } return bocnode; } } else if (operation == details::e_pow) { // (v ^ c0) ^ c1 --> v ^(c0 * c1) details::boc_base_node* bocnode = static_cast*>(branch[0]); details::operator_type boc_opr = bocnode->operation(); if (details::e_pow == boc_opr) { bocnode->set_c(bocnode->c() * c); return bocnode; } } } #ifndef exprtk_disable_enhanced_features if (details::is_sf3ext_node(branch[0])) { expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile_left (expr_gen, c, operation, branch[0], result); if (synthesis_result) { free_node(*expr_gen.node_allocator_, branch[0]); return result; } } #endif switch (operation) { #define case_stmt(op0,op1) \ case op0 : return expr_gen.node_allocator_-> \ template allocate_cr > > \ (branch[0], c); \ basic_opr_switch_statements extended_opr_switch_statements #undef case_stmt default : return error_node(); } } }; struct synthesize_cocob_expression { static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { expression_node_ptr result = error_node(); // (cob) o c --> cob if (details::is_cob_node(branch[0])) { details::cob_base_node* cobnode = static_cast*>(branch[0]); const Type c = static_cast*>(branch[1])->value(); if (std::equal_to()(T(0),c) && (details::e_mul == operation)) { free_node(*expr_gen.node_allocator_, branch[0]); free_node(*expr_gen.node_allocator_, branch[1]); return expr_gen(T(0)); } else if (std::equal_to()(T(0),c) && (details::e_div == operation)) { free_node(*expr_gen.node_allocator_, branch[0]); free_node(*expr_gen.node_allocator_, branch[1]); return expr_gen(T(std::numeric_limits::quiet_NaN())); } else if (std::equal_to()(T(0),c) && (details::e_add == operation)) { free_node(*expr_gen.node_allocator_, branch[1]); return branch[0]; } else if (std::equal_to()(T(1),c) && (details::e_mul == operation)) { free_node(*expr_gen.node_allocator_, branch[1]); return branch[0]; } else if (std::equal_to()(T(1),c) && (details::e_div == operation)) { free_node(*expr_gen.node_allocator_, branch[1]); return branch[0]; } const bool op_addsub = (details::e_add == cobnode->operation()) || (details::e_sub == cobnode->operation()) ; if (op_addsub) { switch (operation) { case details::e_add : cobnode->set_c(cobnode->c() + c); break; case details::e_sub : cobnode->set_c(cobnode->c() - c); break; default : return error_node(); } result = cobnode; } else if (details::e_mul == cobnode->operation()) { switch (operation) { case details::e_mul : cobnode->set_c(cobnode->c() * c); break; case details::e_div : cobnode->set_c(cobnode->c() / c); break; default : return error_node(); } result = cobnode; } else if (details::e_div == cobnode->operation()) { if (details::e_mul == operation) { cobnode->set_c(cobnode->c() * c); result = cobnode; } else if (details::e_div == operation) { result = expr_gen.node_allocator_-> template allocate_tt > > (cobnode->c() / c, cobnode->move_branch(0)); free_node(*expr_gen.node_allocator_, branch[0]); } } if (result) { free_node(*expr_gen.node_allocator_,branch[1]); } } // c o (cob) --> cob else if (details::is_cob_node(branch[1])) { details::cob_base_node* cobnode = static_cast*>(branch[1]); const Type c = static_cast*>(branch[0])->value(); if (std::equal_to()(T(0),c) && (details::e_mul == operation)) { free_node(*expr_gen.node_allocator_, branch[0]); free_node(*expr_gen.node_allocator_, branch[1]); return expr_gen(T(0)); } else if (std::equal_to()(T(0),c) && (details::e_div == operation)) { free_node(*expr_gen.node_allocator_, branch[0]); free_node(*expr_gen.node_allocator_, branch[1]); return expr_gen(T(0)); } else if (std::equal_to()(T(0),c) && (details::e_add == operation)) { free_node(*expr_gen.node_allocator_, branch[0]); return branch[1]; } else if (std::equal_to()(T(1),c) && (details::e_mul == operation)) { free_node(*expr_gen.node_allocator_, branch[0]); return branch[1]; } if (details::e_add == cobnode->operation()) { if (details::e_add == operation) { cobnode->set_c(c + cobnode->c()); result = cobnode; } else if (details::e_sub == operation) { result = expr_gen.node_allocator_-> template allocate_tt > > (c - cobnode->c(), cobnode->move_branch(0)); free_node(*expr_gen.node_allocator_,branch[1]); } } else if (details::e_sub == cobnode->operation()) { if (details::e_add == operation) { cobnode->set_c(c + cobnode->c()); result = cobnode; } else if (details::e_sub == operation) { result = expr_gen.node_allocator_-> template allocate_tt > > (c - cobnode->c(), cobnode->move_branch(0)); free_node(*expr_gen.node_allocator_,branch[1]); } } else if (details::e_mul == cobnode->operation()) { if (details::e_mul == operation) { cobnode->set_c(c * cobnode->c()); result = cobnode; } else if (details::e_div == operation) { result = expr_gen.node_allocator_-> template allocate_tt > > (c / cobnode->c(), cobnode->move_branch(0)); free_node(*expr_gen.node_allocator_,branch[1]); } } else if (details::e_div == cobnode->operation()) { if (details::e_mul == operation) { cobnode->set_c(c * cobnode->c()); result = cobnode; } else if (details::e_div == operation) { result = expr_gen.node_allocator_-> template allocate_tt > > (c / cobnode->c(), cobnode->move_branch(0)); free_node(*expr_gen.node_allocator_,branch[1]); } } if (result) { free_node(*expr_gen.node_allocator_,branch[0]); } } return result; } }; struct synthesize_coboc_expression { static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { expression_node_ptr result = error_node(); // (boc) o c --> boc if (details::is_boc_node(branch[0])) { details::boc_base_node* bocnode = static_cast*>(branch[0]); const Type c = static_cast*>(branch[1])->value(); if (details::e_add == bocnode->operation()) { switch (operation) { case details::e_add : bocnode->set_c(bocnode->c() + c); break; case details::e_sub : bocnode->set_c(bocnode->c() - c); break; default : return error_node(); } result = bocnode; } else if (details::e_mul == bocnode->operation()) { switch (operation) { case details::e_mul : bocnode->set_c(bocnode->c() * c); break; case details::e_div : bocnode->set_c(bocnode->c() / c); break; default : return error_node(); } result = bocnode; } else if (details::e_sub == bocnode->operation()) { if (details::e_add == operation) { result = expr_gen.node_allocator_-> template allocate_tt > > (bocnode->move_branch(0), c - bocnode->c()); free_node(*expr_gen.node_allocator_,branch[0]); } else if (details::e_sub == operation) { bocnode->set_c(bocnode->c() + c); result = bocnode; } } else if (details::e_div == bocnode->operation()) { switch (operation) { case details::e_div : bocnode->set_c(bocnode->c() * c); break; case details::e_mul : bocnode->set_c(bocnode->c() / c); break; default : return error_node(); } result = bocnode; } if (result) { free_node(*expr_gen.node_allocator_, branch[1]); } } // c o (boc) --> boc else if (details::is_boc_node(branch[1])) { details::boc_base_node* bocnode = static_cast*>(branch[1]); const Type c = static_cast*>(branch[0])->value(); if (details::e_add == bocnode->operation()) { if (details::e_add == operation) { bocnode->set_c(c + bocnode->c()); result = bocnode; } else if (details::e_sub == operation) { result = expr_gen.node_allocator_-> template allocate_tt > > (c - bocnode->c(), bocnode->move_branch(0)); free_node(*expr_gen.node_allocator_,branch[1]); } } else if (details::e_sub == bocnode->operation()) { if (details::e_add == operation) { result = expr_gen.node_allocator_-> template allocate_tt > > (bocnode->move_branch(0), c - bocnode->c()); free_node(*expr_gen.node_allocator_,branch[1]); } else if (details::e_sub == operation) { result = expr_gen.node_allocator_-> template allocate_tt > > (c + bocnode->c(), bocnode->move_branch(0)); free_node(*expr_gen.node_allocator_,branch[1]); } } else if (details::e_mul == bocnode->operation()) { if (details::e_mul == operation) { bocnode->set_c(c * bocnode->c()); result = bocnode; } else if (details::e_div == operation) { result = expr_gen.node_allocator_-> template allocate_tt > > (c / bocnode->c(), bocnode->move_branch(0)); free_node(*expr_gen.node_allocator_,branch[1]); } } else if (details::e_div == bocnode->operation()) { if (details::e_mul == operation) { bocnode->set_c(bocnode->c() / c); result = bocnode; } else if (details::e_div == operation) { result = expr_gen.node_allocator_-> template allocate_tt > > (c * bocnode->c(), bocnode->move_branch(0)); free_node(*expr_gen.node_allocator_,branch[1]); } } if (result) { free_node(*expr_gen.node_allocator_,branch[0]); } } return result; } }; #ifndef exprtk_disable_enhanced_features inline bool synthesize_expression(const details::operator_type& operation, expression_node_ptr (&branch)[2], expression_node_ptr& result) { result = error_node(); if (!operation_optimisable(operation)) return false; const std::string node_id = branch_to_id(branch); const typename synthesize_map_t::iterator itr = synthesize_map_.find(node_id); if (synthesize_map_.end() != itr) { result = itr->second((*this), operation, branch); return true; } else return false; } struct synthesize_vov_expression { static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { const Type& v1 = static_cast*>(branch[0])->ref(); const Type& v2 = static_cast*>(branch[1])->ref(); switch (operation) { #define case_stmt(op0,op1) \ case op0 : return expr_gen.node_allocator_-> \ template allocate_rr > > \ (v1, v2); \ basic_opr_switch_statements extended_opr_switch_statements #undef case_stmt default : return error_node(); } } }; struct synthesize_cov_expression { static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { const Type c = static_cast*> (branch[0])->value(); const Type& v = static_cast*>(branch[1])->ref (); details::free_node(*(expr_gen.node_allocator_),branch[0]); if (std::equal_to()(T(0),c) && (details::e_mul == operation)) return expr_gen(T(0)); else if (std::equal_to()(T(0),c) && (details::e_div == operation)) return expr_gen(T(0)); else if (std::equal_to()(T(0),c) && (details::e_add == operation)) return static_cast*>(branch[1]); else if (std::equal_to()(T(1),c) && (details::e_mul == operation)) return static_cast*>(branch[1]); switch (operation) { #define case_stmt(op0,op1) \ case op0 : return expr_gen.node_allocator_-> \ template allocate_cr > > \ (c, v); \ basic_opr_switch_statements extended_opr_switch_statements #undef case_stmt default : return error_node(); } } }; struct synthesize_voc_expression { static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { const Type& v = static_cast*>(branch[0])->ref (); const Type c = static_cast*> (branch[1])->value(); details::free_node(*(expr_gen.node_allocator_), branch[1]); if (expr_gen.cardinal_pow_optimisable(operation,c)) { if (std::equal_to()(T(1),c)) return branch[0]; else return expr_gen.cardinal_pow_optimisation(v,c); } else if (std::equal_to()(T(0),c) && (details::e_mul == operation)) return expr_gen(T(0)); else if (std::equal_to()(T(0),c) && (details::e_div == operation)) return expr_gen(std::numeric_limits::quiet_NaN()); else if (std::equal_to()(T(0),c) && (details::e_add == operation)) return static_cast*>(branch[0]); else if (std::equal_to()(T(1),c) && (details::e_mul == operation)) return static_cast*>(branch[0]); else if (std::equal_to()(T(1),c) && (details::e_div == operation)) return static_cast*>(branch[0]); switch (operation) { #define case_stmt(op0,op1) \ case op0 : return expr_gen.node_allocator_-> \ template allocate_rc > > \ (v, c); \ basic_opr_switch_statements extended_opr_switch_statements #undef case_stmt default : return error_node(); } } }; struct synthesize_sf3ext_expression { template static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& sf3opr, T0 t0, T1 t1, T2 t2) { switch (sf3opr) { #define case_stmt(op) \ case details::e_sf##op : return details::T0oT1oT2_sf3ext >:: \ allocate(*(expr_gen.node_allocator_), t0, t1, t2); \ case_stmt(00) case_stmt(01) case_stmt(02) case_stmt(03) case_stmt(04) case_stmt(05) case_stmt(06) case_stmt(07) case_stmt(08) case_stmt(09) case_stmt(10) case_stmt(11) case_stmt(12) case_stmt(13) case_stmt(14) case_stmt(15) case_stmt(16) case_stmt(17) case_stmt(18) case_stmt(19) case_stmt(20) case_stmt(21) case_stmt(22) case_stmt(23) case_stmt(24) case_stmt(25) case_stmt(26) case_stmt(27) case_stmt(28) case_stmt(29) case_stmt(30) #undef case_stmt default : return error_node(); } } template static inline bool compile(expression_generator& expr_gen, const std::string& id, T0 t0, T1 t1, T2 t2, expression_node_ptr& result) { details::operator_type sf3opr; if (!expr_gen.sf3_optimisable(id,sf3opr)) return false; else result = synthesize_sf3ext_expression::template process(expr_gen,sf3opr,t0,t1,t2); return true; } }; struct synthesize_sf4ext_expression { template static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& sf4opr, T0 t0, T1 t1, T2 t2, T3 t3) { switch (sf4opr) { #define case_stmt0(op) \ case details::e_sf##op : return details::T0oT1oT2oT3_sf4ext >:: \ allocate(*(expr_gen.node_allocator_), t0, t1, t2, t3); \ #define case_stmt1(op) \ case details::e_sf4ext##op : return details::T0oT1oT2oT3_sf4ext >:: \ allocate(*(expr_gen.node_allocator_), t0, t1, t2, t3); \ case_stmt0(48) case_stmt0(49) case_stmt0(50) case_stmt0(51) case_stmt0(52) case_stmt0(53) case_stmt0(54) case_stmt0(55) case_stmt0(56) case_stmt0(57) case_stmt0(58) case_stmt0(59) case_stmt0(60) case_stmt0(61) case_stmt0(62) case_stmt0(63) case_stmt0(64) case_stmt0(65) case_stmt0(66) case_stmt0(67) case_stmt0(68) case_stmt0(69) case_stmt0(70) case_stmt0(71) case_stmt0(72) case_stmt0(73) case_stmt0(74) case_stmt0(75) case_stmt0(76) case_stmt0(77) case_stmt0(78) case_stmt0(79) case_stmt0(80) case_stmt0(81) case_stmt0(82) case_stmt0(83) case_stmt1(00) case_stmt1(01) case_stmt1(02) case_stmt1(03) case_stmt1(04) case_stmt1(05) case_stmt1(06) case_stmt1(07) case_stmt1(08) case_stmt1(09) case_stmt1(10) case_stmt1(11) case_stmt1(12) case_stmt1(13) case_stmt1(14) case_stmt1(15) case_stmt1(16) case_stmt1(17) case_stmt1(18) case_stmt1(19) case_stmt1(20) case_stmt1(21) case_stmt1(22) case_stmt1(23) case_stmt1(24) case_stmt1(25) case_stmt1(26) case_stmt1(27) case_stmt1(28) case_stmt1(29) case_stmt1(30) case_stmt1(31) case_stmt1(32) case_stmt1(33) case_stmt1(34) case_stmt1(35) case_stmt1(36) case_stmt1(37) case_stmt1(38) case_stmt1(39) case_stmt1(40) case_stmt1(41) case_stmt1(42) case_stmt1(43) case_stmt1(44) case_stmt1(45) case_stmt1(46) case_stmt1(47) case_stmt1(48) case_stmt1(49) case_stmt1(50) case_stmt1(51) case_stmt1(52) case_stmt1(53) case_stmt1(54) case_stmt1(55) case_stmt1(56) case_stmt1(57) case_stmt1(58) case_stmt1(59) case_stmt1(60) case_stmt1(61) #undef case_stmt0 #undef case_stmt1 default : return error_node(); } } template static inline bool compile(expression_generator& expr_gen, const std::string& id, T0 t0, T1 t1, T2 t2, T3 t3, expression_node_ptr& result) { details::operator_type sf4opr; if (!expr_gen.sf4_optimisable(id,sf4opr)) return false; else result = synthesize_sf4ext_expression::template process (expr_gen, sf4opr, t0, t1, t2, t3); return true; } // T o (sf3ext) template static inline bool compile_right(expression_generator& expr_gen, ExternalType t, const details::operator_type& operation, expression_node_ptr& sf3node, expression_node_ptr& result) { if (!details::is_sf3ext_node(sf3node)) return false; typedef details::T0oT1oT2_base_node* sf3ext_base_ptr; sf3ext_base_ptr n = static_cast(sf3node); std::string id = "t" + expr_gen.to_str(operation) + "(" + n->type_id() + ")"; switch (n->type()) { case details::expression_node::e_covoc : return compile_right_impl (expr_gen, id, t, sf3node, result); case details::expression_node::e_covov : return compile_right_impl (expr_gen, id, t, sf3node, result); case details::expression_node::e_vocov : return compile_right_impl (expr_gen, id, t, sf3node, result); case details::expression_node::e_vovoc : return compile_right_impl (expr_gen, id, t, sf3node, result); case details::expression_node::e_vovov : return compile_right_impl (expr_gen, id, t, sf3node, result); default : return false; } } // (sf3ext) o T template static inline bool compile_left(expression_generator& expr_gen, ExternalType t, const details::operator_type& operation, expression_node_ptr& sf3node, expression_node_ptr& result) { if (!details::is_sf3ext_node(sf3node)) return false; typedef details::T0oT1oT2_base_node* sf3ext_base_ptr; sf3ext_base_ptr n = static_cast(sf3node); std::string id = "(" + n->type_id() + ")" + expr_gen.to_str(operation) + "t"; switch (n->type()) { case details::expression_node::e_covoc : return compile_left_impl (expr_gen, id, t, sf3node, result); case details::expression_node::e_covov : return compile_left_impl (expr_gen, id, t, sf3node, result); case details::expression_node::e_vocov : return compile_left_impl (expr_gen, id, t, sf3node, result); case details::expression_node::e_vovoc : return compile_left_impl (expr_gen, id, t, sf3node, result); case details::expression_node::e_vovov : return compile_left_impl (expr_gen, id, t, sf3node, result); default : return false; } } template static inline bool compile_right_impl(expression_generator& expr_gen, const std::string& id, ExternalType t, expression_node_ptr& node, expression_node_ptr& result) { SF3TypeNode* n = dynamic_cast(node); if (n) { T0 t0 = n->t0(); T1 t1 = n->t1(); T2 t2 = n->t2(); return synthesize_sf4ext_expression::template compile (expr_gen, id, t, t0, t1, t2, result); } else return false; } template static inline bool compile_left_impl(expression_generator& expr_gen, const std::string& id, ExternalType t, expression_node_ptr& node, expression_node_ptr& result) { SF3TypeNode* n = dynamic_cast(node); if (n) { T0 t0 = n->t0(); T1 t1 = n->t1(); T2 t2 = n->t2(); return synthesize_sf4ext_expression::template compile (expr_gen, id, t0, t1, t2, t, result); } else return false; } }; struct synthesize_vovov_expression0 { typedef typename vovov_t::type0 node_type; typedef typename vovov_t::sf3_type sf3_type; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (v0 o0 v1) o1 (v2) const details::vov_base_node* vov = static_cast*>(branch[0]); const Type& v0 = vov->v0(); const Type& v1 = vov->v1(); const Type& v2 = static_cast*>(branch[1])->ref(); const details::operator_type o0 = vov->operation(); const details::operator_type o1 = operation; binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // (v0 / v1) / v2 --> (vovov) v0 / (v1 * v2) if ((details::e_div == o0) && (details::e_div == o1)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "t/(t*t)", v0, v1, v2, result); exprtk_debug(("(v0 / v1) / v2 --> (vovov) v0 / (v1 * v2)\n")); return (synthesis_result) ? result : error_node(); } } const bool synthesis_result = synthesize_sf3ext_expression::template compile (expr_gen, id(expr_gen, o0, o1), v0, v1, v2, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), v0, v1, v2, f0, f1); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "t"); } }; struct synthesize_vovov_expression1 { typedef typename vovov_t::type1 node_type; typedef typename vovov_t::sf3_type sf3_type; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (v0) o0 (v1 o1 v2) const details::vov_base_node* vov = static_cast*>(branch[1]); const Type& v0 = static_cast*>(branch[0])->ref(); const Type& v1 = vov->v0(); const Type& v2 = vov->v1(); const details::operator_type o0 = operation; const details::operator_type o1 = vov->operation(); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // v0 / (v1 / v2) --> (vovov) (v0 * v2) / v1 if ((details::e_div == o0) && (details::e_div == o1)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)/t", v0, v2, v1, result); exprtk_debug(("v0 / (v1 / v2) --> (vovov) (v0 * v2) / v1\n")); return (synthesis_result) ? result : error_node(); } } const bool synthesis_result = synthesize_sf3ext_expression::template compile (expr_gen, id(expr_gen, o0, o1), v0, v1, v2, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), v0, v1, v2, f0, f1); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "t)"); } }; struct synthesize_vovoc_expression0 { typedef typename vovoc_t::type0 node_type; typedef typename vovoc_t::sf3_type sf3_type; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (v0 o0 v1) o1 (c) const details::vov_base_node* vov = static_cast*>(branch[0]); const Type& v0 = vov->v0(); const Type& v1 = vov->v1(); const Type c = static_cast*>(branch[1])->value(); const details::operator_type o0 = vov->operation(); const details::operator_type o1 = operation; binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // (v0 / v1) / c --> (vovoc) v0 / (v1 * c) if ((details::e_div == o0) && (details::e_div == o1)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "t/(t*t)", v0, v1, c, result); exprtk_debug(("(v0 / v1) / c --> (vovoc) v0 / (v1 * c)\n")); return (synthesis_result) ? result : error_node(); } } const bool synthesis_result = synthesize_sf3ext_expression::template compile (expr_gen, id(expr_gen, o0, o1), v0, v1, c, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), v0, v1, c, f0, f1); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "t"); } }; struct synthesize_vovoc_expression1 { typedef typename vovoc_t::type1 node_type; typedef typename vovoc_t::sf3_type sf3_type; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (v0) o0 (v1 o1 c) const details::voc_base_node* voc = static_cast*>(branch[1]); const Type& v0 = static_cast*>(branch[0])->ref(); const Type& v1 = voc->v(); const Type c = voc->c(); const details::operator_type o0 = operation; const details::operator_type o1 = voc->operation(); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // v0 / (v1 / c) --> (vocov) (v0 * c) / v1 if ((details::e_div == o0) && (details::e_div == o1)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)/t", v0, c, v1, result); exprtk_debug(("v0 / (v1 / c) --> (vocov) (v0 * c) / v1\n")); return (synthesis_result) ? result : error_node(); } } const bool synthesis_result = synthesize_sf3ext_expression::template compile (expr_gen, id(expr_gen, o0, o1), v0, v1, c, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), v0, v1, c, f0, f1); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "t)"); } }; struct synthesize_vocov_expression0 { typedef typename vocov_t::type0 node_type; typedef typename vocov_t::sf3_type sf3_type; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (v0 o0 c) o1 (v1) const details::voc_base_node* voc = static_cast*>(branch[0]); const Type& v0 = voc->v(); const Type c = voc->c(); const Type& v1 = static_cast*>(branch[1])->ref(); const details::operator_type o0 = voc->operation(); const details::operator_type o1 = operation; binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // (v0 / c) / v1 --> (vovoc) v0 / (v1 * c) if ((details::e_div == o0) && (details::e_div == o1)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "t/(t*t)", v0, v1, c, result); exprtk_debug(("(v0 / c) / v1 --> (vovoc) v0 / (v1 * c)\n")); return (synthesis_result) ? result : error_node(); } } const bool synthesis_result = synthesize_sf3ext_expression::template compile (expr_gen, id(expr_gen, o0, o1), v0, c, v1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), v0, c, v1, f0, f1); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "t"); } }; struct synthesize_vocov_expression1 { typedef typename vocov_t::type1 node_type; typedef typename vocov_t::sf3_type sf3_type; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (v0) o0 (c o1 v1) const details::cov_base_node* cov = static_cast*>(branch[1]); const Type& v0 = static_cast*>(branch[0])->ref(); const Type c = cov->c(); const Type& v1 = cov->v(); const details::operator_type o0 = operation; const details::operator_type o1 = cov->operation(); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // v0 / (c / v1) --> (vovoc) (v0 * v1) / c if ((details::e_div == o0) && (details::e_div == o1)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)/t", v0, v1, c, result); exprtk_debug(("v0 / (c / v1) --> (vovoc) (v0 * v1) / c\n")); return (synthesis_result) ? result : error_node(); } } const bool synthesis_result = synthesize_sf3ext_expression::template compile (expr_gen, id(expr_gen, o0, o1), v0, c, v1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), v0, c, v1, f0, f1); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "t)"); } }; struct synthesize_covov_expression0 { typedef typename covov_t::type0 node_type; typedef typename covov_t::sf3_type sf3_type; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (c o0 v0) o1 (v1) const details::cov_base_node* cov = static_cast*>(branch[0]); const Type c = cov->c(); const Type& v0 = cov->v(); const Type& v1 = static_cast*>(branch[1])->ref(); const details::operator_type o0 = cov->operation(); const details::operator_type o1 = operation; binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // (c / v0) / v1 --> (covov) c / (v0 * v1) if ((details::e_div == o0) && (details::e_div == o1)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "t/(t*t)", c, v0, v1, result); exprtk_debug(("(c / v0) / v1 --> (covov) c / (v0 * v1)\n")); return (synthesis_result) ? result : error_node(); } } const bool synthesis_result = synthesize_sf3ext_expression::template compile (expr_gen, id(expr_gen, o0, o1), c, v0, v1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), c, v0, v1, f0, f1); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "t"); } }; struct synthesize_covov_expression1 { typedef typename covov_t::type1 node_type; typedef typename covov_t::sf3_type sf3_type; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (c) o0 (v0 o1 v1) const details::vov_base_node* vov = static_cast*>(branch[1]); const Type c = static_cast*>(branch[0])->value(); const Type& v0 = vov->v0(); const Type& v1 = vov->v1(); const details::operator_type o0 = operation; const details::operator_type o1 = vov->operation(); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // c / (v0 / v1) --> (covov) (c * v1) / v0 if ((details::e_div == o0) && (details::e_div == o1)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)/t", c, v1, v0, result); exprtk_debug(("c / (v0 / v1) --> (covov) (c * v1) / v0\n")); return (synthesis_result) ? result : error_node(); } } const bool synthesis_result = synthesize_sf3ext_expression::template compile (expr_gen, id(expr_gen, o0, o1), c, v0, v1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), c, v0, v1, f0, f1); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "t)"); } }; struct synthesize_covoc_expression0 { typedef typename covoc_t::type0 node_type; typedef typename covoc_t::sf3_type sf3_type; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (c0 o0 v) o1 (c1) const details::cov_base_node* cov = static_cast*>(branch[0]); const Type c0 = cov->c(); const Type& v = cov->v(); const Type c1 = static_cast*>(branch[1])->value(); const details::operator_type o0 = cov->operation(); const details::operator_type o1 = operation; binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // (c0 + v) + c1 --> (cov) (c0 + c1) + v if ((details::e_add == o0) && (details::e_add == o1)) { exprtk_debug(("(c0 + v) + c1 --> (cov) (c0 + c1) + v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 + c1, v); } // (c0 + v) - c1 --> (cov) (c0 - c1) + v else if ((details::e_add == o0) && (details::e_sub == o1)) { exprtk_debug(("(c0 + v) - c1 --> (cov) (c0 - c1) + v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 - c1, v); } // (c0 - v) + c1 --> (cov) (c0 + c1) - v else if ((details::e_sub == o0) && (details::e_add == o1)) { exprtk_debug(("(c0 - v) + c1 --> (cov) (c0 + c1) - v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 + c1, v); } // (c0 - v) - c1 --> (cov) (c0 - c1) - v else if ((details::e_sub == o0) && (details::e_sub == o1)) { exprtk_debug(("(c0 - v) - c1 --> (cov) (c0 - c1) - v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 - c1, v); } // (c0 * v) * c1 --> (cov) (c0 * c1) * v else if ((details::e_mul == o0) && (details::e_mul == o1)) { exprtk_debug(("(c0 * v) * c1 --> (cov) (c0 * c1) * v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 * c1, v); } // (c0 * v) / c1 --> (cov) (c0 / c1) * v else if ((details::e_mul == o0) && (details::e_div == o1)) { exprtk_debug(("(c0 * v) / c1 --> (cov) (c0 / c1) * v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 / c1, v); } // (c0 / v) * c1 --> (cov) (c0 * c1) / v else if ((details::e_div == o0) && (details::e_mul == o1)) { exprtk_debug(("(c0 / v) * c1 --> (cov) (c0 * c1) / v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 * c1, v); } // (c0 / v) / c1 --> (cov) (c0 / c1) / v else if ((details::e_div == o0) && (details::e_div == o1)) { exprtk_debug(("(c0 / v) / c1 --> (cov) (c0 / c1) / v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 / c1, v); } } const bool synthesis_result = synthesize_sf3ext_expression::template compile (expr_gen, id(expr_gen, o0, o1), c0, v, c1,result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), c0, v, c1, f0, f1); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "t"); } }; struct synthesize_covoc_expression1 { typedef typename covoc_t::type1 node_type; typedef typename covoc_t::sf3_type sf3_type; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (c0) o0 (v o1 c1) const details::voc_base_node* voc = static_cast*>(branch[1]); const Type c0 = static_cast*>(branch[0])->value(); const Type& v = voc->v(); const Type c1 = voc->c(); const details::operator_type o0 = operation; const details::operator_type o1 = voc->operation(); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // (c0) + (v + c1) --> (cov) (c0 + c1) + v if ((details::e_add == o0) && (details::e_add == o1)) { exprtk_debug(("(c0) + (v + c1) --> (cov) (c0 + c1) + v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 + c1, v); } // (c0) + (v - c1) --> (cov) (c0 - c1) + v else if ((details::e_add == o0) && (details::e_sub == o1)) { exprtk_debug(("(c0) + (v - c1) --> (cov) (c0 - c1) + v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 - c1, v); } // (c0) - (v + c1) --> (cov) (c0 - c1) - v else if ((details::e_sub == o0) && (details::e_add == o1)) { exprtk_debug(("(c0) - (v + c1) --> (cov) (c0 - c1) - v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 - c1, v); } // (c0) - (v - c1) --> (cov) (c0 + c1) - v else if ((details::e_sub == o0) && (details::e_sub == o1)) { exprtk_debug(("(c0) - (v - c1) --> (cov) (c0 + c1) - v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 + c1, v); } // (c0) * (v * c1) --> (voc) v * (c0 * c1) else if ((details::e_mul == o0) && (details::e_mul == o1)) { exprtk_debug(("(c0) * (v * c1) --> (voc) v * (c0 * c1)\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 * c1, v); } // (c0) * (v / c1) --> (cov) (c0 / c1) * v else if ((details::e_mul == o0) && (details::e_div == o1)) { exprtk_debug(("(c0) * (v / c1) --> (cov) (c0 / c1) * v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 / c1, v); } // (c0) / (v * c1) --> (cov) (c0 / c1) / v else if ((details::e_div == o0) && (details::e_mul == o1)) { exprtk_debug(("(c0) / (v * c1) --> (cov) (c0 / c1) / v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 / c1, v); } // (c0) / (v / c1) --> (cov) (c0 * c1) / v else if ((details::e_div == o0) && (details::e_div == o1)) { exprtk_debug(("(c0) / (v / c1) --> (cov) (c0 * c1) / v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 * c1, v); } } const bool synthesis_result = synthesize_sf3ext_expression::template compile (expr_gen, id(expr_gen, o0, o1), c0, v, c1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), c0, v, c1, f0, f1); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "t)"); } }; struct synthesize_cocov_expression0 { typedef typename cocov_t::type0 node_type; static inline expression_node_ptr process(expression_generator&, const details::operator_type&, expression_node_ptr (&)[2]) { // (c0 o0 c1) o1 (v) - Not possible. return error_node(); } }; struct synthesize_cocov_expression1 { typedef typename cocov_t::type1 node_type; typedef typename cocov_t::sf3_type sf3_type; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (c0) o0 (c1 o1 v) const details::cov_base_node* cov = static_cast*>(branch[1]); const Type c0 = static_cast*>(branch[0])->value(); const Type c1 = cov->c(); const Type& v = cov->v(); const details::operator_type o0 = operation; const details::operator_type o1 = cov->operation(); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // (c0) + (c1 + v) --> (cov) (c0 + c1) + v if ((details::e_add == o0) && (details::e_add == o1)) { exprtk_debug(("(c0) + (c1 + v) --> (cov) (c0 + c1) + v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 + c1, v); } // (c0) + (c1 - v) --> (cov) (c0 + c1) - v else if ((details::e_add == o0) && (details::e_sub == o1)) { exprtk_debug(("(c0) + (c1 - v) --> (cov) (c0 + c1) - v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 + c1, v); } // (c0) - (c1 + v) --> (cov) (c0 - c1) - v else if ((details::e_sub == o0) && (details::e_add == o1)) { exprtk_debug(("(c0) - (c1 + v) --> (cov) (c0 - c1) - v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 - c1, v); } // (c0) - (c1 - v) --> (cov) (c0 - c1) + v else if ((details::e_sub == o0) && (details::e_sub == o1)) { exprtk_debug(("(c0) - (c1 - v) --> (cov) (c0 - c1) + v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 - c1, v); } // (c0) * (c1 * v) --> (cov) (c0 * c1) * v else if ((details::e_mul == o0) && (details::e_mul == o1)) { exprtk_debug(("(c0) * (c1 * v) --> (cov) (c0 * c1) * v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 * c1, v); } // (c0) * (c1 / v) --> (cov) (c0 * c1) / v else if ((details::e_mul == o0) && (details::e_div == o1)) { exprtk_debug(("(c0) * (c1 / v) --> (cov) (c0 * c1) / v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 * c1, v); } // (c0) / (c1 * v) --> (cov) (c0 / c1) / v else if ((details::e_div == o0) && (details::e_mul == o1)) { exprtk_debug(("(c0) / (c1 * v) --> (cov) (c0 / c1) / v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 / c1, v); } // (c0) / (c1 / v) --> (cov) (c0 / c1) * v else if ((details::e_div == o0) && (details::e_div == o1)) { exprtk_debug(("(c0) / (c1 / v) --> (cov) (c0 / c1) * v\n")); return expr_gen.node_allocator_-> template allocate_cr > >(c0 / c1, v); } } const bool synthesis_result = synthesize_sf3ext_expression::template compile (expr_gen, id(expr_gen, o0, o1), c0, c1, v, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), c0, c1, v, f0, f1); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "t)"); } }; struct synthesize_vococ_expression0 { typedef typename vococ_t::type0 node_type; typedef typename vococ_t::sf3_type sf3_type; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (v o0 c0) o1 (c1) const details::voc_base_node* voc = static_cast*>(branch[0]); const Type& v = voc->v(); const Type& c0 = voc->c(); const Type& c1 = static_cast*>(branch[1])->value(); const details::operator_type o0 = voc->operation(); const details::operator_type o1 = operation; binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // (v + c0) + c1 --> (voc) v + (c0 + c1) if ((details::e_add == o0) && (details::e_add == o1)) { exprtk_debug(("(v + c0) + c1 --> (voc) v + (c0 + c1)\n")); return expr_gen.node_allocator_-> template allocate_rc > >(v, c0 + c1); } // (v + c0) - c1 --> (voc) v + (c0 - c1) else if ((details::e_add == o0) && (details::e_sub == o1)) { exprtk_debug(("(v + c0) - c1 --> (voc) v + (c0 - c1)\n")); return expr_gen.node_allocator_-> template allocate_rc > >(v, c0 - c1); } // (v - c0) + c1 --> (voc) v - (c0 + c1) else if ((details::e_sub == o0) && (details::e_add == o1)) { exprtk_debug(("(v - c0) + c1 --> (voc) v - (c0 + c1)\n")); return expr_gen.node_allocator_-> template allocate_rc > >(v, c1 - c0); } // (v - c0) - c1 --> (voc) v - (c0 + c1) else if ((details::e_sub == o0) && (details::e_sub == o1)) { exprtk_debug(("(v - c0) - c1 --> (voc) v - (c0 + c1)\n")); return expr_gen.node_allocator_-> template allocate_rc > >(v, c0 + c1); } // (v * c0) * c1 --> (voc) v * (c0 * c1) else if ((details::e_mul == o0) && (details::e_mul == o1)) { exprtk_debug(("(v * c0) * c1 --> (voc) v * (c0 * c1)\n")); return expr_gen.node_allocator_-> template allocate_rc > >(v, c0 * c1); } // (v * c0) / c1 --> (voc) v * (c0 / c1) else if ((details::e_mul == o0) && (details::e_div == o1)) { exprtk_debug(("(v * c0) / c1 --> (voc) v * (c0 / c1)\n")); return expr_gen.node_allocator_-> template allocate_rc > >(v, c0 / c1); } // (v / c0) * c1 --> (voc) v * (c1 / c0) else if ((details::e_div == o0) && (details::e_mul == o1)) { exprtk_debug(("(v / c0) * c1 --> (voc) v * (c1 / c0)\n")); return expr_gen.node_allocator_-> template allocate_rc > >(v, c1 / c0); } // (v / c0) / c1 --> (voc) v / (c0 * c1) else if ((details::e_div == o0) && (details::e_div == o1)) { exprtk_debug(("(v / c0) / c1 --> (voc) v / (c0 * c1)\n")); return expr_gen.node_allocator_-> template allocate_rc > >(v, c0 * c1); } // (v ^ c0) ^ c1 --> (voc) v ^ (c0 * c1) else if ((details::e_pow == o0) && (details::e_pow == o1)) { exprtk_debug(("(v ^ c0) ^ c1 --> (voc) v ^ (c0 * c1)\n")); return expr_gen.node_allocator_-> template allocate_rc > >(v, c0 * c1); } } const bool synthesis_result = synthesize_sf3ext_expression::template compile (expr_gen, id(expr_gen, o0, o1), v, c0, c1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), v, c0, c1, f0, f1); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "t"); } }; struct synthesize_vococ_expression1 { typedef typename vococ_t::type0 node_type; static inline expression_node_ptr process(expression_generator&, const details::operator_type&, expression_node_ptr (&)[2]) { // (v) o0 (c0 o1 c1) - Not possible. exprtk_debug(("(v) o0 (c0 o1 c1) - Not possible.\n")); return error_node(); } }; struct synthesize_vovovov_expression0 { typedef typename vovovov_t::type0 node_type; typedef typename vovovov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (v0 o0 v1) o1 (v2 o2 v3) const details::vov_base_node* vov0 = static_cast*>(branch[0]); const details::vov_base_node* vov1 = static_cast*>(branch[1]); const Type& v0 = vov0->v0(); const Type& v1 = vov0->v1(); const Type& v2 = vov1->v0(); const Type& v3 = vov1->v1(); const details::operator_type o0 = vov0->operation(); const details::operator_type o1 = operation; const details::operator_type o2 = vov1->operation(); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // (v0 / v1) * (v2 / v3) --> (vovovov) (v0 * v2) / (v1 * v3) if ((details::e_div == o0) && (details::e_mul == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf4ext_expression:: template compile(expr_gen, "(t*t)/(t*t)", v0, v2, v1, v3, result); exprtk_debug(("(v0 / v1) * (v2 / v3) --> (vovovov) (v0 * v2) / (v1 * v3)\n")); return (synthesis_result) ? result : error_node(); } // (v0 / v1) / (v2 / v3) --> (vovovov) (v0 * v3) / (v1 * v2) else if ((details::e_div == o0) && (details::e_div == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf4ext_expression:: template compile(expr_gen, "(t*t)/(t*t)", v0, v3, v1, v2, result); exprtk_debug(("(v0 / v1) / (v2 / v3) --> (vovovov) (v0 * v3) / (v1 * v2)\n")); return (synthesis_result) ? result : error_node(); } // (v0 + v1) / (v2 / v3) --> (vovovov) (v0 + v1) * (v3 / v2) else if ((details::e_add == o0) && (details::e_div == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf4ext_expression:: template compile(expr_gen, "(t+t)*(t/t)", v0, v1, v3, v2, result); exprtk_debug(("(v0 + v1) / (v2 / v3) --> (vovovov) (v0 + v1) * (v3 / v2)\n")); return (synthesis_result) ? result : error_node(); } // (v0 - v1) / (v2 / v3) --> (vovovov) (v0 + v1) * (v3 / v2) else if ((details::e_sub == o0) && (details::e_div == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf4ext_expression:: template compile(expr_gen, "(t-t)*(t/t)", v0, v1, v3, v2, result); exprtk_debug(("(v0 - v1) / (v2 / v3) --> (vovovov) (v0 - v1) * (v3 / v2)\n")); return (synthesis_result) ? result : error_node(); } // (v0 * v1) / (v2 / v3) --> (vovovov) ((v0 * v1) * v3) / v2 else if ((details::e_mul == o0) && (details::e_div == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf4ext_expression:: template compile(expr_gen, "((t*t)*t)/t", v0, v1, v3, v2, result); exprtk_debug(("(v0 * v1) / (v2 / v3) --> (vovovov) ((v0 * v1) * v3) / v2\n")); return (synthesis_result) ? result : error_node(); } } const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, v1, v2, v3,result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else if (!expr_gen.valid_operator(o2,f2)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), v0, v1, v2, v3, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "(t" << expr_gen.to_str(o2) << "t)"); } }; struct synthesize_vovovoc_expression0 { typedef typename vovovoc_t::type0 node_type; typedef typename vovovoc_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (v0 o0 v1) o1 (v2 o2 c) const details::vov_base_node* vov = static_cast*>(branch[0]); const details::voc_base_node* voc = static_cast*>(branch[1]); const Type& v0 = vov->v0(); const Type& v1 = vov->v1(); const Type& v2 = voc->v (); const Type c = voc->c (); const details::operator_type o0 = vov->operation(); const details::operator_type o1 = operation; const details::operator_type o2 = voc->operation(); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // (v0 / v1) * (v2 / c) --> (vovovoc) (v0 * v2) / (v1 * c) if ((details::e_div == o0) && (details::e_mul == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf4ext_expression:: template compile(expr_gen, "(t*t)/(t*t)", v0, v2, v1, c, result); exprtk_debug(("(v0 / v1) * (v2 / c) --> (vovovoc) (v0 * v2) / (v1 * c)\n")); return (synthesis_result) ? result : error_node(); } // (v0 / v1) / (v2 / c) --> (vocovov) (v0 * c) / (v1 * v2) if ((details::e_div == o0) && (details::e_div == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf4ext_expression:: template compile(expr_gen, "(t*t)/(t*t)", v0, c, v1, v2, result); exprtk_debug(("(v0 / v1) / (v2 / c) --> (vocovov) (v0 * c) / (v1 * v2)\n")); return (synthesis_result) ? result : error_node(); } } const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, v1, v2, c, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else if (!expr_gen.valid_operator(o2,f2)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), v0, v1, v2, c, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "(t" << expr_gen.to_str(o2) << "t)"); } }; struct synthesize_vovocov_expression0 { typedef typename vovocov_t::type0 node_type; typedef typename vovocov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (v0 o0 v1) o1 (c o2 v2) const details::vov_base_node* vov = static_cast*>(branch[0]); const details::cov_base_node* cov = static_cast*>(branch[1]); const Type& v0 = vov->v0(); const Type& v1 = vov->v1(); const Type& v2 = cov->v (); const Type c = cov->c (); const details::operator_type o0 = vov->operation(); const details::operator_type o1 = operation; const details::operator_type o2 = cov->operation(); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // (v0 / v1) * (c / v2) --> (vocovov) (v0 * c) / (v1 * v2) if ((details::e_div == o0) && (details::e_mul == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf4ext_expression:: template compile(expr_gen, "(t*t)/(t*t)", v0, c, v1, v2, result); exprtk_debug(("(v0 / v1) * (c / v2) --> (vocovov) (v0 * c) / (v1 * v2)\n")); return (synthesis_result) ? result : error_node(); } // (v0 / v1) / (c / v2) --> (vovovoc) (v0 * v2) / (v1 * c) if ((details::e_div == o0) && (details::e_div == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf4ext_expression:: template compile(expr_gen, "(t*t)/(t*t)", v0, v2, v1, c, result); exprtk_debug(("(v0 / v1) / (c / v2) --> (vovovoc) (v0 * v2) / (v1 * c)\n")); return (synthesis_result) ? result : error_node(); } } const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, v1, c, v2, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else if (!expr_gen.valid_operator(o2,f2)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), v0, v1, c, v2, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "(t" << expr_gen.to_str(o2) << "t)"); } }; struct synthesize_vocovov_expression0 { typedef typename vocovov_t::type0 node_type; typedef typename vocovov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (v0 o0 c) o1 (v1 o2 v2) const details::voc_base_node* voc = static_cast*>(branch[0]); const details::vov_base_node* vov = static_cast*>(branch[1]); const Type c = voc->c (); const Type& v0 = voc->v (); const Type& v1 = vov->v0(); const Type& v2 = vov->v1(); const details::operator_type o0 = voc->operation(); const details::operator_type o1 = operation; const details::operator_type o2 = vov->operation(); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // (v0 / c) * (v1 / v2) --> (vovocov) (v0 * v1) / (c * v2) if ((details::e_div == o0) && (details::e_mul == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf4ext_expression:: template compile(expr_gen, "(t*t)/(t*t)", v0, v1, c, v2, result); exprtk_debug(("(v0 / c) * (v1 / v2) --> (vovocov) (v0 * v1) / (c * v2)\n")); return (synthesis_result) ? result : error_node(); } // (v0 / c) / (v1 / v2) --> (vovocov) (v0 * v2) / (c * v1) if ((details::e_div == o0) && (details::e_div == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf4ext_expression:: template compile(expr_gen, "(t*t)/(t*t)", v0, v2, c, v1, result); exprtk_debug(("(v0 / c) / (v1 / v2) --> (vovocov) (v0 * v2) / (c * v1)\n")); return (synthesis_result) ? result : error_node(); } } const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, c, v1, v2, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else if (!expr_gen.valid_operator(o2,f2)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), v0, c, v1, v2, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "(t" << expr_gen.to_str(o2) << "t)"); } }; struct synthesize_covovov_expression0 { typedef typename covovov_t::type0 node_type; typedef typename covovov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (c o0 v0) o1 (v1 o2 v2) const details::cov_base_node* cov = static_cast*>(branch[0]); const details::vov_base_node* vov = static_cast*>(branch[1]); const Type c = cov->c (); const Type& v0 = cov->v (); const Type& v1 = vov->v0(); const Type& v2 = vov->v1(); const details::operator_type o0 = cov->operation(); const details::operator_type o1 = operation; const details::operator_type o2 = vov->operation(); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // (c / v0) * (v1 / v2) --> (covovov) (c * v1) / (v0 * v2) if ((details::e_div == o0) && (details::e_mul == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf4ext_expression:: template compile(expr_gen, "(t*t)/(t*t)", c, v1, v0, v2, result); exprtk_debug(("(c / v0) * (v1 / v2) --> (covovov) (c * v1) / (v0 * v2)\n")); return (synthesis_result) ? result : error_node(); } // (c / v0) / (v1 / v2) --> (covovov) (c * v2) / (v0 * v1) if ((details::e_div == o0) && (details::e_div == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf4ext_expression:: template compile(expr_gen, "(t*t)/(t*t)", c, v2, v0, v1, result); exprtk_debug(("(c / v0) / (v1 / v2) --> (covovov) (c * v2) / (v0 * v1)\n")); return (synthesis_result) ? result : error_node(); } } const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), c, v0, v1, v2, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else if (!expr_gen.valid_operator(o2,f2)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), c, v0, v1, v2, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "(t" << expr_gen.to_str(o2) << "t)"); } }; struct synthesize_covocov_expression0 { typedef typename covocov_t::type0 node_type; typedef typename covocov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (c0 o0 v0) o1 (c1 o2 v1) const details::cov_base_node* cov0 = static_cast*>(branch[0]); const details::cov_base_node* cov1 = static_cast*>(branch[1]); const Type c0 = cov0->c(); const Type& v0 = cov0->v(); const Type c1 = cov1->c(); const Type& v1 = cov1->v(); const details::operator_type o0 = cov0->operation(); const details::operator_type o1 = operation; const details::operator_type o2 = cov1->operation(); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // (c0 + v0) + (c1 + v1) --> (covov) (c0 + c1) + v0 + v1 if ((details::e_add == o0) && (details::e_add == o1) && (details::e_add == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t+t)+t", (c0 + c1), v0, v1, result); exprtk_debug(("(c0 + v0) + (c1 + v1) --> (covov) (c0 + c1) + v0 + v1\n")); return (synthesis_result) ? result : error_node(); } // (c0 + v0) - (c1 + v1) --> (covov) (c0 - c1) + v0 - v1 else if ((details::e_add == o0) && (details::e_sub == o1) && (details::e_add == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t+t)-t", (c0 - c1), v0, v1, result); exprtk_debug(("(c0 + v0) - (c1 + v1) --> (covov) (c0 - c1) + v0 - v1\n")); return (synthesis_result) ? result : error_node(); } // (c0 - v0) - (c1 - v1) --> (covov) (c0 - c1) - v0 + v1 else if ((details::e_sub == o0) && (details::e_sub == o1) && (details::e_sub == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t-t)+t", (c0 - c1), v0, v1, result); exprtk_debug(("(c0 - v0) - (c1 - v1) --> (covov) (c0 - c1) - v0 + v1\n")); return (synthesis_result) ? result : error_node(); } // (c0 * v0) * (c1 * v1) --> (covov) (c0 * c1) * v0 * v1 else if ((details::e_mul == o0) && (details::e_mul == o1) && (details::e_mul == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)*t", (c0 * c1), v0, v1, result); exprtk_debug(("(c0 * v0) * (c1 * v1) --> (covov) (c0 * c1) * v0 * v1\n")); return (synthesis_result) ? result : error_node(); } // (c0 * v0) / (c1 * v1) --> (covov) (c0 / c1) * (v0 / v1) else if ((details::e_mul == o0) && (details::e_div == o1) && (details::e_mul == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)/t", (c0 / c1), v0, v1, result); exprtk_debug(("(c0 * v0) / (c1 * v1) --> (covov) (c0 / c1) * (v0 / v1)\n")); return (synthesis_result) ? result : error_node(); } // (c0 / v0) * (c1 / v1) --> (covov) (c0 * c1) / (v0 * v1) else if ((details::e_div == o0) && (details::e_mul == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "t/(t*t)", (c0 * c1), v0, v1, result); exprtk_debug(("(c0 / v0) * (c1 / v1) --> (covov) (c0 * c1) / (v0 * v1)\n")); return (synthesis_result) ? result : error_node(); } // (c0 / v0) / (c1 / v1) --> (covov) ((c0 / c1) * v1) / v0 else if ((details::e_div == o0) && (details::e_div == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)/t", (c0 / c1), v1, v0, result); exprtk_debug(("(c0 / v0) / (c1 / v1) --> (covov) ((c0 / c1) * v1) / v0\n")); return (synthesis_result) ? result : error_node(); } // (c0 * v0) / (c1 / v1) --> (covov) (c0 / c1) * (v0 * v1) else if ((details::e_mul == o0) && (details::e_div == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "t*(t*t)", (c0 / c1), v0, v1, result); exprtk_debug(("(c0 * v0) / (c1 / v1) --> (covov) (c0 / c1) * (v0 * v1)\n")); return (synthesis_result) ? result : error_node(); } // (c0 / v0) / (c1 * v1) --> (covov) (c0 / c1) / (v0 * v1) else if ((details::e_div == o0) && (details::e_div == o1) && (details::e_mul == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "t/(t*t)", (c0 / c1), v0, v1, result); exprtk_debug(("(c0 / v0) / (c1 * v1) --> (covov) (c0 / c1) / (v0 * v1)\n")); return (synthesis_result) ? result : error_node(); } // (c * v0) +/- (c * v1) --> (covov) c * (v0 +/- v1) else if ( (std::equal_to()(c0,c1)) && (details::e_mul == o0) && (details::e_mul == o2) && ( (details::e_add == o1) || (details::e_sub == o1) ) ) { std::string specfunc; switch (o1) { case details::e_add : specfunc = "t*(t+t)"; break; case details::e_sub : specfunc = "t*(t-t)"; break; default : return error_node(); } const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, specfunc, c0, v0, v1, result); exprtk_debug(("(c * v0) +/- (c * v1) --> (covov) c * (v0 +/- v1)\n")); return (synthesis_result) ? result : error_node(); } } const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), c0, v0, c1, v1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else if (!expr_gen.valid_operator(o2,f2)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), c0, v0, c1, v1, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "(t" << expr_gen.to_str(o2) << "t)"); } }; struct synthesize_vocovoc_expression0 { typedef typename vocovoc_t::type0 node_type; typedef typename vocovoc_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (v0 o0 c0) o1 (v1 o2 c1) const details::voc_base_node* voc0 = static_cast*>(branch[0]); const details::voc_base_node* voc1 = static_cast*>(branch[1]); const Type c0 = voc0->c(); const Type& v0 = voc0->v(); const Type c1 = voc1->c(); const Type& v1 = voc1->v(); const details::operator_type o0 = voc0->operation(); const details::operator_type o1 = operation; const details::operator_type o2 = voc1->operation(); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // (v0 + c0) + (v1 + c1) --> (covov) (c0 + c1) + v0 + v1 if ((details::e_add == o0) && (details::e_add == o1) && (details::e_add == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t+t)+t", (c0 + c1), v0, v1, result); exprtk_debug(("(v0 + c0) + (v1 + c1) --> (covov) (c0 + c1) + v0 + v1\n")); return (synthesis_result) ? result : error_node(); } // (v0 + c0) - (v1 + c1) --> (covov) (c0 - c1) + v0 - v1 else if ((details::e_add == o0) && (details::e_sub == o1) && (details::e_add == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t+t)-t", (c0 - c1), v0, v1, result); exprtk_debug(("(v0 + c0) - (v1 + c1) --> (covov) (c0 - c1) + v0 - v1\n")); return (synthesis_result) ? result : error_node(); } // (v0 - c0) - (v1 - c1) --> (covov) (c1 - c0) + v0 - v1 else if ((details::e_sub == o0) && (details::e_sub == o1) && (details::e_sub == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t+t)-t", (c1 - c0), v0, v1, result); exprtk_debug(("(v0 - c0) - (v1 - c1) --> (covov) (c1 - c0) + v0 - v1\n")); return (synthesis_result) ? result : error_node(); } // (v0 * c0) * (v1 * c1) --> (covov) (c0 * c1) * v0 * v1 else if ((details::e_mul == o0) && (details::e_mul == o1) && (details::e_mul == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)*t", (c0 * c1), v0, v1, result); exprtk_debug(("(v0 * c0) * (v1 * c1) --> (covov) (c0 * c1) * v0 * v1\n")); return (synthesis_result) ? result : error_node(); } // (v0 * c0) / (v1 * c1) --> (covov) (c0 / c1) * (v0 / v1) else if ((details::e_mul == o0) && (details::e_div == o1) && (details::e_mul == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)/t", (c0 / c1), v0, v1, result); exprtk_debug(("(v0 * c0) / (v1 * c1) --> (covov) (c0 / c1) * (v0 / v1)\n")); return (synthesis_result) ? result : error_node(); } // (v0 / c0) * (v1 / c1) --> (covov) (1 / (c0 * c1)) * v0 * v1 else if ((details::e_div == o0) && (details::e_mul == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)*t", Type(1) / (c0 * c1), v0, v1, result); exprtk_debug(("(v0 / c0) * (v1 / c1) --> (covov) (1 / (c0 * c1)) * v0 * v1\n")); return (synthesis_result) ? result : error_node(); } // (v0 / c0) / (v1 / c1) --> (covov) ((c1 / c0) * v0) / v1 else if ((details::e_div == o0) && (details::e_div == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)/t", (c1 / c0), v0, v1, result); exprtk_debug(("(v0 / c0) / (v1 / c1) --> (covov) ((c1 / c0) * v0) / v1\n")); return (synthesis_result) ? result : error_node(); } // (v0 * c0) / (v1 / c1) --> (covov) (c0 * c1) * (v0 / v1) else if ((details::e_mul == o0) && (details::e_div == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "t*(t/t)", (c0 * c1), v0, v1, result); exprtk_debug(("(v0 * c0) / (v1 / c1) --> (covov) (c0 * c1) * (v0 / v1)\n")); return (synthesis_result) ? result : error_node(); } // (v0 / c0) / (v1 * c1) --> (covov) (1 / (c0 * c1)) * v0 / v1 else if ((details::e_div == o0) && (details::e_div == o1) && (details::e_mul == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "t*(t/t)", Type(1) / (c0 * c1), v0, v1, result); exprtk_debug(("(v0 / c0) / (v1 * c1) --> (covov) (1 / (c0 * c1)) * v0 / v1\n")); return (synthesis_result) ? result : error_node(); } // (v0 / c0) * (v1 + c1) --> (vocovoc) (v0 * (1 / c0)) * (v1 + c1) else if ((details::e_div == o0) && (details::e_mul == o1) && (details::e_add == o2)) { const bool synthesis_result = synthesize_sf4ext_expression:: template compile(expr_gen, "(t*t)*(t+t)", v0, T(1) / c0, v1, c1, result); exprtk_debug(("(v0 / c0) * (v1 + c1) --> (vocovoc) (v0 * (1 / c0)) * (v1 + c1)\n")); return (synthesis_result) ? result : error_node(); } // (v0 / c0) * (v1 - c1) --> (vocovoc) (v0 * (1 / c0)) * (v1 - c1) else if ((details::e_div == o0) && (details::e_mul == o1) && (details::e_sub == o2)) { const bool synthesis_result = synthesize_sf4ext_expression:: template compile(expr_gen, "(t*t)*(t-t)", v0, T(1) / c0, v1, c1, result); exprtk_debug(("(v0 / c0) * (v1 - c1) --> (vocovoc) (v0 * (1 / c0)) * (v1 - c1)\n")); return (synthesis_result) ? result : error_node(); } // (v0 * c) +/- (v1 * c) --> (covov) c * (v0 +/- v1) else if ( (std::equal_to()(c0,c1)) && (details::e_mul == o0) && (details::e_mul == o2) && ( (details::e_add == o1) || (details::e_sub == o1) ) ) { std::string specfunc; switch (o1) { case details::e_add : specfunc = "t*(t+t)"; break; case details::e_sub : specfunc = "t*(t-t)"; break; default : return error_node(); } const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, specfunc, c0, v0, v1, result); exprtk_debug(("(v0 * c) +/- (v1 * c) --> (covov) c * (v0 +/- v1)\n")); return (synthesis_result) ? result : error_node(); } // (v0 / c) +/- (v1 / c) --> (vovoc) (v0 +/- v1) / c else if ( (std::equal_to()(c0,c1)) && (details::e_div == o0) && (details::e_div == o2) && ( (details::e_add == o1) || (details::e_sub == o1) ) ) { std::string specfunc; switch (o1) { case details::e_add : specfunc = "(t+t)/t"; break; case details::e_sub : specfunc = "(t-t)/t"; break; default : return error_node(); } const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, specfunc, v0, v1, c0, result); exprtk_debug(("(v0 / c) +/- (v1 / c) --> (vovoc) (v0 +/- v1) / c\n")); return (synthesis_result) ? result : error_node(); } } const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, c0, v1, c1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else if (!expr_gen.valid_operator(o2,f2)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), v0, c0, v1, c1, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "(t" << expr_gen.to_str(o2) << "t)"); } }; struct synthesize_covovoc_expression0 { typedef typename covovoc_t::type0 node_type; typedef typename covovoc_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (c0 o0 v0) o1 (v1 o2 c1) const details::cov_base_node* cov = static_cast*>(branch[0]); const details::voc_base_node* voc = static_cast*>(branch[1]); const Type c0 = cov->c(); const Type& v0 = cov->v(); const Type c1 = voc->c(); const Type& v1 = voc->v(); const details::operator_type o0 = cov->operation(); const details::operator_type o1 = operation; const details::operator_type o2 = voc->operation(); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // (c0 + v0) + (v1 + c1) --> (covov) (c0 + c1) + v0 + v1 if ((details::e_add == o0) && (details::e_add == o1) && (details::e_add == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t+t)+t", (c0 + c1), v0, v1, result); exprtk_debug(("(c0 + v0) + (v1 + c1) --> (covov) (c0 + c1) + v0 + v1\n")); return (synthesis_result) ? result : error_node(); } // (c0 + v0) - (v1 + c1) --> (covov) (c0 - c1) + v0 - v1 else if ((details::e_add == o0) && (details::e_sub == o1) && (details::e_add == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t+t)-t", (c0 - c1), v0, v1, result); exprtk_debug(("(c0 + v0) - (v1 + c1) --> (covov) (c0 - c1) + v0 - v1\n")); return (synthesis_result) ? result : error_node(); } // (c0 - v0) - (v1 - c1) --> (covov) (c0 + c1) - v0 - v1 else if ((details::e_sub == o0) && (details::e_sub == o1) && (details::e_sub == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "t-(t+t)", (c0 + c1), v0, v1, result); exprtk_debug(("(c0 - v0) - (v1 - c1) --> (covov) (c0 + c1) - v0 - v1\n")); return (synthesis_result) ? result : error_node(); } // (c0 * v0) * (v1 * c1) --> (covov) (c0 * c1) * v0 * v1 else if ((details::e_mul == o0) && (details::e_mul == o1) && (details::e_mul == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)*t", (c0 * c1), v0, v1, result); exprtk_debug(("(c0 * v0) * (v1 * c1) --> (covov) (c0 * c1) * v0 * v1\n")); return (synthesis_result) ? result : error_node(); } // (c0 * v0) / (v1 * c1) --> (covov) (c0 / c1) * (v0 / v1) else if ((details::e_mul == o0) && (details::e_div == o1) && (details::e_mul == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)/t", (c0 / c1), v0, v1, result); exprtk_debug(("(c0 * v0) / (v1 * c1) --> (covov) (c0 / c1) * (v0 / v1)\n")); return (synthesis_result) ? result : error_node(); } // (c0 / v0) * (v1 / c1) --> (covov) (c0 / c1) * (v1 / v0) else if ((details::e_div == o0) && (details::e_mul == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "t*(t/t)", (c0 / c1), v1, v0, result); exprtk_debug(("(c0 / v0) * (v1 / c1) --> (covov) (c0 / c1) * (v1 / v0)\n")); return (synthesis_result) ? result : error_node(); } // (c0 / v0) / (v1 / c1) --> (covov) (c0 * c1) / (v0 * v1) else if ((details::e_div == o0) && (details::e_div == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "t/(t*t)", (c0 * c1), v0, v1, result); exprtk_debug(("(c0 / v0) / (v1 / c1) --> (covov) (c0 * c1) / (v0 * v1)\n")); return (synthesis_result) ? result : error_node(); } // (c0 * v0) / (v1 / c1) --> (covov) (c0 * c1) * (v0 / v1) else if ((details::e_mul == o0) && (details::e_div == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)/t", (c0 * c1), v0, v1, result); exprtk_debug(("(c0 * v0) / (v1 / c1) --> (covov) (c0 * c1) * (v0 / v1)\n")); return (synthesis_result) ? result : error_node(); } // (c0 / v0) / (v1 * c1) --> (covov) (c0 / c1) / (v0 * v1) else if ((details::e_div == o0) && (details::e_div == o1) && (details::e_mul == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "t/(t*t)", (c0 / c1), v0, v1, result); exprtk_debug(("(c0 / v0) / (v1 * c1) --> (covov) (c0 / c1) / (v0 * v1)\n")); return (synthesis_result) ? result : error_node(); } // (c * v0) +/- (v1 * c) --> (covov) c * (v0 +/- v1) else if ( (std::equal_to()(c0,c1)) && (details::e_mul == o0) && (details::e_mul == o2) && ( (details::e_add == o1) || (details::e_sub == o1) ) ) { std::string specfunc; switch (o1) { case details::e_add : specfunc = "t*(t+t)"; break; case details::e_sub : specfunc = "t*(t-t)"; break; default : return error_node(); } const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen,specfunc, c0, v0, v1, result); exprtk_debug(("(c * v0) +/- (v1 * c) --> (covov) c * (v0 +/- v1)\n")); return (synthesis_result) ? result : error_node(); } } const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), c0, v0, v1, c1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else if (!expr_gen.valid_operator(o2,f2)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), c0, v0, v1, c1, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "(t" << expr_gen.to_str(o2) << "t)"); } }; struct synthesize_vococov_expression0 { typedef typename vococov_t::type0 node_type; typedef typename vococov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (v0 o0 c0) o1 (c1 o2 v1) const details::voc_base_node* voc = static_cast*>(branch[0]); const details::cov_base_node* cov = static_cast*>(branch[1]); const Type c0 = voc->c(); const Type& v0 = voc->v(); const Type c1 = cov->c(); const Type& v1 = cov->v(); const details::operator_type o0 = voc->operation(); const details::operator_type o1 = operation; const details::operator_type o2 = cov->operation(); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = reinterpret_cast(0); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (expr_gen.parser_->settings_.strength_reduction_enabled()) { // (v0 + c0) + (c1 + v1) --> (covov) (c0 + c1) + v0 + v1 if ((details::e_add == o0) && (details::e_add == o1) && (details::e_add == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t+t)+t", (c0 + c1), v0, v1, result); exprtk_debug(("(v0 + c0) + (c1 + v1) --> (covov) (c0 + c1) + v0 + v1\n")); return (synthesis_result) ? result : error_node(); } // (v0 + c0) - (c1 + v1) --> (covov) (c0 - c1) + v0 - v1 else if ((details::e_add == o0) && (details::e_sub == o1) && (details::e_add == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t+t)-t", (c0 - c1), v0, v1, result); exprtk_debug(("(v0 + c0) - (c1 + v1) --> (covov) (c0 - c1) + v0 - v1\n")); return (synthesis_result) ? result : error_node(); } // (v0 - c0) - (c1 - v1) --> (vovoc) v0 + v1 - (c1 + c0) else if ((details::e_sub == o0) && (details::e_sub == o1) && (details::e_sub == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t+t)-t", v0, v1, (c1 + c0), result); exprtk_debug(("(v0 - c0) - (c1 - v1) --> (vovoc) v0 + v1 - (c1 + c0)\n")); return (synthesis_result) ? result : error_node(); } // (v0 * c0) * (c1 * v1) --> (covov) (c0 * c1) * v0 * v1 else if ((details::e_mul == o0) && (details::e_mul == o1) && (details::e_mul == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)*t", (c0 * c1), v0, v1, result); exprtk_debug(("(v0 * c0) * (c1 * v1) --> (covov) (c0 * c1) * v0 * v1\n")); return (synthesis_result) ? result : error_node(); } // (v0 * c0) / (c1 * v1) --> (covov) (c0 / c1) * (v0 * v1) else if ((details::e_mul == o0) && (details::e_div == o1) && (details::e_mul == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)/t", (c0 / c1), v0, v1, result); exprtk_debug(("(v0 * c0) / (c1 * v1) --> (covov) (c0 / c1) * (v0 * v1)\n")); return (synthesis_result) ? result : error_node(); } // (v0 / c0) * (c1 / v1) --> (covov) (c1 / c0) * (v0 / v1) else if ((details::e_div == o0) && (details::e_mul == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)/t", (c1 / c0), v0, v1, result); exprtk_debug(("(v0 / c0) * (c1 / v1) --> (covov) (c1 / c0) * (v0 / v1)\n")); return (synthesis_result) ? result : error_node(); } // (v0 * c0) / (c1 / v1) --> (covov) (c0 / c1) * (v0 * v1) else if ((details::e_mul == o0) && (details::e_div == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)*t", (c0 / c1), v0, v1, result); exprtk_debug(("(v0 * c0) / (c1 / v1) --> (covov) (c0 / c1) * (v0 * v1)\n")); return (synthesis_result) ? result : error_node(); } // (v0 / c0) / (c1 * v1) --> (covov) (1 / (c0 * c1)) * (v0 / v1) else if ((details::e_div == o0) && (details::e_div == o1) && (details::e_mul == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)/t", Type(1) / (c0 * c1), v0, v1, result); exprtk_debug(("(v0 / c0) / (c1 * v1) --> (covov) (1 / (c0 * c1)) * (v0 / v1)\n")); return (synthesis_result) ? result : error_node(); } // (v0 / c0) / (c1 / v1) --> (vovoc) (v0 * v1) * (1 / (c0 * c1)) else if ((details::e_div == o0) && (details::e_div == o1) && (details::e_div == o2)) { const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, "(t*t)*t", v0, v1, Type(1) / (c0 * c1), result); exprtk_debug(("(v0 / c0) / (c1 / v1) --> (vovoc) (v0 * v1) * (1 / (c0 * c1))\n")); return (synthesis_result) ? result : error_node(); } // (v0 * c) +/- (c * v1) --> (covov) c * (v0 +/- v1) else if ( (std::equal_to()(c0,c1)) && (details::e_mul == o0) && (details::e_mul == o2) && ( (details::e_add == o1) || (details::e_sub == o1) ) ) { std::string specfunc; switch (o1) { case details::e_add : specfunc = "t*(t+t)"; break; case details::e_sub : specfunc = "t*(t-t)"; break; default : return error_node(); } const bool synthesis_result = synthesize_sf3ext_expression:: template compile(expr_gen, specfunc, c0, v0, v1, result); exprtk_debug(("(v0 * c) +/- (c * v1) --> (covov) c * (v0 +/- v1)\n")); return (synthesis_result) ? result : error_node(); } } const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, c0, c1, v1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); else if (!expr_gen.valid_operator(o1,f1)) return error_node(); else if (!expr_gen.valid_operator(o2,f2)) return error_node(); else return node_type::allocate(*(expr_gen.node_allocator_), v0, c0, c1, v1, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "(t" << expr_gen.to_str(o2) << "t)"); } }; struct synthesize_vovovov_expression1 { typedef typename vovovov_t::type1 node_type; typedef typename vovovov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // v0 o0 (v1 o1 (v2 o2 v3)) typedef typename synthesize_vovov_expression1::node_type lcl_vovov_t; const lcl_vovov_t* vovov = static_cast(branch[1]); const Type& v0 = static_cast*>(branch[0])->ref(); const Type& v1 = vovov->t0(); const Type& v2 = vovov->t1(); const Type& v3 = vovov->t2(); const details::operator_type o0 = operation; const details::operator_type o1 = expr_gen.get_operator(vovov->f0()); const details::operator_type o2 = expr_gen.get_operator(vovov->f1()); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = vovov->f0(); binary_functor_t f2 = vovov->f1(); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); if (synthesize_sf4ext_expression::template compile(expr_gen,id(expr_gen,o0,o1,o2),v0,v1,v2,v3,result)) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); exprtk_debug(("v0 o0 (v1 o1 (v2 o2 v3))\n")); return node_type::allocate(*(expr_gen.node_allocator_),v0,v1,v2,v3,f0,f1,f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "(t" << expr_gen.to_str(o2) << "t))"); } }; struct synthesize_vovovoc_expression1 { typedef typename vovovoc_t::type1 node_type; typedef typename vovovoc_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // v0 o0 (v1 o1 (v2 o2 c)) typedef typename synthesize_vovoc_expression1::node_type lcl_vovoc_t; const lcl_vovoc_t* vovoc = static_cast(branch[1]); const Type& v0 = static_cast*>(branch[0])->ref(); const Type& v1 = vovoc->t0(); const Type& v2 = vovoc->t1(); const Type c = vovoc->t2(); const details::operator_type o0 = operation; const details::operator_type o1 = expr_gen.get_operator(vovoc->f0()); const details::operator_type o2 = expr_gen.get_operator(vovoc->f1()); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = vovoc->f0(); binary_functor_t f2 = vovoc->f1(); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, v1, v2, c, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); exprtk_debug(("v0 o0 (v1 o1 (v2 o2 c))\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, v1, v2, c, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "(t" << expr_gen.to_str(o2) << "t))"); } }; struct synthesize_vovocov_expression1 { typedef typename vovocov_t::type1 node_type; typedef typename vovocov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // v0 o0 (v1 o1 (c o2 v2)) typedef typename synthesize_vocov_expression1::node_type lcl_vocov_t; const lcl_vocov_t* vocov = static_cast(branch[1]); const Type& v0 = static_cast*>(branch[0])->ref(); const Type& v1 = vocov->t0(); const Type c = vocov->t1(); const Type& v2 = vocov->t2(); const details::operator_type o0 = operation; const details::operator_type o1 = expr_gen.get_operator(vocov->f0()); const details::operator_type o2 = expr_gen.get_operator(vocov->f1()); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = vocov->f0(); binary_functor_t f2 = vocov->f1(); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, v1, c, v2, result); if (synthesis_result) return result; if (!expr_gen.valid_operator(o0,f0)) return error_node(); exprtk_debug(("v0 o0 (v1 o1 (c o2 v2))\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, v1, c, v2, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "(t" << expr_gen.to_str(o2) << "t))"); } }; struct synthesize_vocovov_expression1 { typedef typename vocovov_t::type1 node_type; typedef typename vocovov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // v0 o0 (c o1 (v1 o2 v2)) typedef typename synthesize_covov_expression1::node_type lcl_covov_t; const lcl_covov_t* covov = static_cast(branch[1]); const Type& v0 = static_cast*>(branch[0])->ref(); const Type c = covov->t0(); const Type& v1 = covov->t1(); const Type& v2 = covov->t2(); const details::operator_type o0 = operation; const details::operator_type o1 = expr_gen.get_operator(covov->f0()); const details::operator_type o2 = expr_gen.get_operator(covov->f1()); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = covov->f0(); binary_functor_t f2 = covov->f1(); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, c, v1, v2, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); exprtk_debug(("v0 o0 (c o1 (v1 o2 v2))\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, c, v1, v2, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "(t" << expr_gen.to_str(o2) << "t))"); } }; struct synthesize_covovov_expression1 { typedef typename covovov_t::type1 node_type; typedef typename covovov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // c o0 (v0 o1 (v1 o2 v2)) typedef typename synthesize_vovov_expression1::node_type lcl_vovov_t; const lcl_vovov_t* vovov = static_cast(branch[1]); const Type c = static_cast*>(branch[0])->value(); const Type& v0 = vovov->t0(); const Type& v1 = vovov->t1(); const Type& v2 = vovov->t2(); const details::operator_type o0 = operation; const details::operator_type o1 = expr_gen.get_operator(vovov->f0()); const details::operator_type o2 = expr_gen.get_operator(vovov->f1()); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = vovov->f0(); binary_functor_t f2 = vovov->f1(); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), c, v0, v1, v2, result); if (synthesis_result) return result; if (!expr_gen.valid_operator(o0,f0)) return error_node(); exprtk_debug(("c o0 (v0 o1 (v1 o2 v2))\n")); return node_type::allocate(*(expr_gen.node_allocator_), c, v0, v1, v2, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "(t" << expr_gen.to_str(o2) << "t))"); } }; struct synthesize_covocov_expression1 { typedef typename covocov_t::type1 node_type; typedef typename covocov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // c0 o0 (v0 o1 (c1 o2 v1)) typedef typename synthesize_vocov_expression1::node_type lcl_vocov_t; const lcl_vocov_t* vocov = static_cast(branch[1]); const Type c0 = static_cast*>(branch[0])->value(); const Type& v0 = vocov->t0(); const Type c1 = vocov->t1(); const Type& v1 = vocov->t2(); const details::operator_type o0 = operation; const details::operator_type o1 = expr_gen.get_operator(vocov->f0()); const details::operator_type o2 = expr_gen.get_operator(vocov->f1()); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = vocov->f0(); binary_functor_t f2 = vocov->f1(); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), c0, v0, c1, v1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); exprtk_debug(("c0 o0 (v0 o1 (c1 o2 v1))\n")); return node_type::allocate(*(expr_gen.node_allocator_), c0, v0, c1, v1, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "(t" << expr_gen.to_str(o2) << "t))"); } }; struct synthesize_vocovoc_expression1 { typedef typename vocovoc_t::type1 node_type; typedef typename vocovoc_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // v0 o0 (c0 o1 (v1 o2 c2)) typedef typename synthesize_covoc_expression1::node_type lcl_covoc_t; const lcl_covoc_t* covoc = static_cast(branch[1]); const Type& v0 = static_cast*>(branch[0])->ref(); const Type c0 = covoc->t0(); const Type& v1 = covoc->t1(); const Type c1 = covoc->t2(); const details::operator_type o0 = operation; const details::operator_type o1 = expr_gen.get_operator(covoc->f0()); const details::operator_type o2 = expr_gen.get_operator(covoc->f1()); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = covoc->f0(); binary_functor_t f2 = covoc->f1(); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, c0, v1, c1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); exprtk_debug(("v0 o0 (c0 o1 (v1 o2 c2))\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, c0, v1, c1, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "(t" << expr_gen.to_str(o2) << "t))"); } }; struct synthesize_covovoc_expression1 { typedef typename covovoc_t::type1 node_type; typedef typename covovoc_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // c0 o0 (v0 o1 (v1 o2 c1)) typedef typename synthesize_vovoc_expression1::node_type lcl_vovoc_t; const lcl_vovoc_t* vovoc = static_cast(branch[1]); const Type c0 = static_cast*>(branch[0])->value(); const Type& v0 = vovoc->t0(); const Type& v1 = vovoc->t1(); const Type c1 = vovoc->t2(); const details::operator_type o0 = operation; const details::operator_type o1 = expr_gen.get_operator(vovoc->f0()); const details::operator_type o2 = expr_gen.get_operator(vovoc->f1()); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = vovoc->f0(); binary_functor_t f2 = vovoc->f1(); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), c0, v0, v1, c1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); exprtk_debug(("c0 o0 (v0 o1 (v1 o2 c1))\n")); return node_type::allocate(*(expr_gen.node_allocator_), c0, v0, v1, c1, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "(t" << expr_gen.to_str(o2) << "t))"); } }; struct synthesize_vococov_expression1 { typedef typename vococov_t::type1 node_type; typedef typename vococov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // v0 o0 (c0 o1 (c1 o2 v1)) typedef typename synthesize_cocov_expression1::node_type lcl_cocov_t; const lcl_cocov_t* cocov = static_cast(branch[1]); const Type& v0 = static_cast*>(branch[0])->ref(); const Type c0 = cocov->t0(); const Type c1 = cocov->t1(); const Type& v1 = cocov->t2(); const details::operator_type o0 = operation; const details::operator_type o1 = expr_gen.get_operator(cocov->f0()); const details::operator_type o2 = expr_gen.get_operator(cocov->f1()); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = cocov->f0(); binary_functor_t f2 = cocov->f1(); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, c0, c1, v1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); exprtk_debug(("v0 o0 (c0 o1 (c1 o2 v1))\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, c0, c1, v1, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "(t" << expr_gen.to_str(o2) << "t))"); } }; struct synthesize_vovovov_expression2 { typedef typename vovovov_t::type2 node_type; typedef typename vovovov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // v0 o0 ((v1 o1 v2) o2 v3) typedef typename synthesize_vovov_expression0::node_type lcl_vovov_t; const lcl_vovov_t* vovov = static_cast(branch[1]); const Type& v0 = static_cast*>(branch[0])->ref(); const Type& v1 = vovov->t0(); const Type& v2 = vovov->t1(); const Type& v3 = vovov->t2(); const details::operator_type o0 = operation; const details::operator_type o1 = expr_gen.get_operator(vovov->f0()); const details::operator_type o2 = expr_gen.get_operator(vovov->f1()); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = vovov->f0(); binary_functor_t f2 = vovov->f1(); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, v1, v2, v3, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); exprtk_debug(("v0 o0 ((v1 o1 v2) o2 v3)\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, v1, v2, v3, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "((t" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t)"); } }; struct synthesize_vovovoc_expression2 { typedef typename vovovoc_t::type2 node_type; typedef typename vovovoc_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // v0 o0 ((v1 o1 v2) o2 c) typedef typename synthesize_vovoc_expression0::node_type lcl_vovoc_t; const lcl_vovoc_t* vovoc = static_cast(branch[1]); const Type& v0 = static_cast*>(branch[0])->ref(); const Type& v1 = vovoc->t0(); const Type& v2 = vovoc->t1(); const Type c = vovoc->t2(); const details::operator_type o0 = operation; const details::operator_type o1 = expr_gen.get_operator(vovoc->f0()); const details::operator_type o2 = expr_gen.get_operator(vovoc->f1()); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = vovoc->f0(); binary_functor_t f2 = vovoc->f1(); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, v1, v2, c, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); exprtk_debug(("v0 o0 ((v1 o1 v2) o2 c)\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, v1, v2, c, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "((t" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t)"); } }; struct synthesize_vovocov_expression2 { typedef typename vovocov_t::type2 node_type; typedef typename vovocov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // v0 o0 ((v1 o1 c) o2 v2) typedef typename synthesize_vocov_expression0::node_type lcl_vocov_t; const lcl_vocov_t* vocov = static_cast(branch[1]); const Type& v0 = static_cast*>(branch[0])->ref(); const Type& v1 = vocov->t0(); const Type c = vocov->t1(); const Type& v2 = vocov->t2(); const details::operator_type o0 = operation; const details::operator_type o1 = expr_gen.get_operator(vocov->f0()); const details::operator_type o2 = expr_gen.get_operator(vocov->f1()); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = vocov->f0(); binary_functor_t f2 = vocov->f1(); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, v1, c, v2, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); exprtk_debug(("v0 o0 ((v1 o1 c) o2 v2)\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, v1, c, v2, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "((t" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t)"); } }; struct synthesize_vocovov_expression2 { typedef typename vocovov_t::type2 node_type; typedef typename vocovov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // v0 o0 ((c o1 v1) o2 v2) typedef typename synthesize_covov_expression0::node_type lcl_covov_t; const lcl_covov_t* covov = static_cast(branch[1]); const Type& v0 = static_cast*>(branch[0])->ref(); const Type c = covov->t0(); const Type& v1 = covov->t1(); const Type& v2 = covov->t2(); const details::operator_type o0 = operation; const details::operator_type o1 = expr_gen.get_operator(covov->f0()); const details::operator_type o2 = expr_gen.get_operator(covov->f1()); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = covov->f0(); binary_functor_t f2 = covov->f1(); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, c, v1, v2, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); exprtk_debug(("v0 o0 ((c o1 v1) o2 v2)\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, c, v1, v2, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "((t" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t)"); } }; struct synthesize_covovov_expression2 { typedef typename covovov_t::type2 node_type; typedef typename covovov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // c o0 ((v1 o1 v2) o2 v3) typedef typename synthesize_vovov_expression0::node_type lcl_vovov_t; const lcl_vovov_t* vovov = static_cast(branch[1]); const Type c = static_cast*>(branch[0])->value(); const Type& v0 = vovov->t0(); const Type& v1 = vovov->t1(); const Type& v2 = vovov->t2(); const details::operator_type o0 = operation; const details::operator_type o1 = expr_gen.get_operator(vovov->f0()); const details::operator_type o2 = expr_gen.get_operator(vovov->f1()); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = vovov->f0(); binary_functor_t f2 = vovov->f1(); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), c, v0, v1, v2, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); exprtk_debug(("c o0 ((v1 o1 v2) o2 v3)\n")); return node_type::allocate(*(expr_gen.node_allocator_), c, v0, v1, v2, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "((t" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t)"); } }; struct synthesize_covocov_expression2 { typedef typename covocov_t::type2 node_type; typedef typename covocov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // c0 o0 ((v0 o1 c1) o2 v1) typedef typename synthesize_vocov_expression0::node_type lcl_vocov_t; const lcl_vocov_t* vocov = static_cast(branch[1]); const Type c0 = static_cast*>(branch[0])->value(); const Type& v0 = vocov->t0(); const Type c1 = vocov->t1(); const Type& v1 = vocov->t2(); const details::operator_type o0 = operation; const details::operator_type o1 = expr_gen.get_operator(vocov->f0()); const details::operator_type o2 = expr_gen.get_operator(vocov->f1()); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = vocov->f0(); binary_functor_t f2 = vocov->f1(); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), c0, v0, c1, v1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); exprtk_debug(("c0 o0 ((v0 o1 c1) o2 v1)\n")); return node_type::allocate(*(expr_gen.node_allocator_), c0, v0, c1, v1, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "((t" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t)"); } }; struct synthesize_vocovoc_expression2 { typedef typename vocovoc_t::type2 node_type; typedef typename vocovoc_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // v0 o0 ((c0 o1 v1) o2 c1) typedef typename synthesize_covoc_expression0::node_type lcl_covoc_t; const lcl_covoc_t* covoc = static_cast(branch[1]); const Type& v0 = static_cast*>(branch[0])->ref(); const Type c0 = covoc->t0(); const Type& v1 = covoc->t1(); const Type c1 = covoc->t2(); const details::operator_type o0 = operation; const details::operator_type o1 = expr_gen.get_operator(covoc->f0()); const details::operator_type o2 = expr_gen.get_operator(covoc->f1()); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = covoc->f0(); binary_functor_t f2 = covoc->f1(); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, c0, v1, c1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); exprtk_debug(("v0 o0 ((c0 o1 v1) o2 c1)\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, c0, v1, c1, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "((t" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t)"); } }; struct synthesize_covovoc_expression2 { typedef typename covovoc_t::type2 node_type; typedef typename covovoc_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // c0 o0 ((v0 o1 v1) o2 c1) typedef typename synthesize_vovoc_expression0::node_type lcl_vovoc_t; const lcl_vovoc_t* vovoc = static_cast(branch[1]); const Type c0 = static_cast*>(branch[0])->value(); const Type& v0 = vovoc->t0(); const Type& v1 = vovoc->t1(); const Type c1 = vovoc->t2(); const details::operator_type o0 = operation; const details::operator_type o1 = expr_gen.get_operator(vovoc->f0()); const details::operator_type o2 = expr_gen.get_operator(vovoc->f1()); binary_functor_t f0 = reinterpret_cast(0); binary_functor_t f1 = vovoc->f0(); binary_functor_t f2 = vovoc->f1(); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), c0, v0, v1, c1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o0,f0)) return error_node(); exprtk_debug(("c0 o0 ((v0 o1 v1) o2 c1)\n")); return node_type::allocate(*(expr_gen.node_allocator_), c0, v0, v1, c1, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "t" << expr_gen.to_str(o0) << "((t" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t)"); } }; struct synthesize_vococov_expression2 { typedef typename vococov_t::type2 node_type; static inline expression_node_ptr process(expression_generator&, const details::operator_type&, expression_node_ptr (&)[2]) { // v0 o0 ((c0 o1 c1) o2 v1) - Not possible exprtk_debug(("v0 o0 ((c0 o1 c1) o2 v1) - Not possible\n")); return error_node(); } static inline std::string id(expression_generator&, const details::operator_type, const details::operator_type, const details::operator_type) { return "INVALID"; } }; struct synthesize_vovovov_expression3 { typedef typename vovovov_t::type3 node_type; typedef typename vovovov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // ((v0 o0 v1) o1 v2) o2 v3 typedef typename synthesize_vovov_expression0::node_type lcl_vovov_t; const lcl_vovov_t* vovov = static_cast(branch[0]); const Type& v0 = vovov->t0(); const Type& v1 = vovov->t1(); const Type& v2 = vovov->t2(); const Type& v3 = static_cast*>(branch[1])->ref(); const details::operator_type o0 = expr_gen.get_operator(vovov->f0()); const details::operator_type o1 = expr_gen.get_operator(vovov->f1()); const details::operator_type o2 = operation; binary_functor_t f0 = vovov->f0(); binary_functor_t f1 = vovov->f1(); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, v1, v2, v3, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o2,f2)) return error_node(); exprtk_debug(("((v0 o0 v1) o1 v2) o2 v3\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, v1, v2, v3, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "((t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t"); } }; struct synthesize_vovovoc_expression3 { typedef typename vovovoc_t::type3 node_type; typedef typename vovovoc_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // ((v0 o0 v1) o1 v2) o2 c typedef typename synthesize_vovov_expression0::node_type lcl_vovov_t; const lcl_vovov_t* vovov = static_cast(branch[0]); const Type& v0 = vovov->t0(); const Type& v1 = vovov->t1(); const Type& v2 = vovov->t2(); const Type c = static_cast*>(branch[1])->value(); const details::operator_type o0 = expr_gen.get_operator(vovov->f0()); const details::operator_type o1 = expr_gen.get_operator(vovov->f1()); const details::operator_type o2 = operation; binary_functor_t f0 = vovov->f0(); binary_functor_t f1 = vovov->f1(); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, v1, v2, c, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o2,f2)) return error_node(); exprtk_debug(("((v0 o0 v1) o1 v2) o2 c\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, v1, v2, c, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "((t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t"); } }; struct synthesize_vovocov_expression3 { typedef typename vovocov_t::type3 node_type; typedef typename vovocov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // ((v0 o0 v1) o1 c) o2 v2 typedef typename synthesize_vovoc_expression0::node_type lcl_vovoc_t; const lcl_vovoc_t* vovoc = static_cast(branch[0]); const Type& v0 = vovoc->t0(); const Type& v1 = vovoc->t1(); const Type c = vovoc->t2(); const Type& v2 = static_cast*>(branch[1])->ref(); const details::operator_type o0 = expr_gen.get_operator(vovoc->f0()); const details::operator_type o1 = expr_gen.get_operator(vovoc->f1()); const details::operator_type o2 = operation; binary_functor_t f0 = vovoc->f0(); binary_functor_t f1 = vovoc->f1(); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, v1, c, v2, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o2,f2)) return error_node(); exprtk_debug(("((v0 o0 v1) o1 c) o2 v2\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, v1, c, v2, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "((t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t"); } }; struct synthesize_vocovov_expression3 { typedef typename vocovov_t::type3 node_type; typedef typename vocovov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // ((v0 o0 c) o1 v1) o2 v2 typedef typename synthesize_vocov_expression0::node_type lcl_vocov_t; const lcl_vocov_t* vocov = static_cast(branch[0]); const Type& v0 = vocov->t0(); const Type c = vocov->t1(); const Type& v1 = vocov->t2(); const Type& v2 = static_cast*>(branch[1])->ref(); const details::operator_type o0 = expr_gen.get_operator(vocov->f0()); const details::operator_type o1 = expr_gen.get_operator(vocov->f1()); const details::operator_type o2 = operation; binary_functor_t f0 = vocov->f0(); binary_functor_t f1 = vocov->f1(); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, c, v1, v2, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o2,f2)) return error_node(); exprtk_debug(("((v0 o0 c) o1 v1) o2 v2\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, c, v1, v2, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "((t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t"); } }; struct synthesize_covovov_expression3 { typedef typename covovov_t::type3 node_type; typedef typename covovov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // ((c o0 v0) o1 v1) o2 v2 typedef typename synthesize_covov_expression0::node_type lcl_covov_t; const lcl_covov_t* covov = static_cast(branch[0]); const Type c = covov->t0(); const Type& v0 = covov->t1(); const Type& v1 = covov->t2(); const Type& v2 = static_cast*>(branch[1])->ref(); const details::operator_type o0 = expr_gen.get_operator(covov->f0()); const details::operator_type o1 = expr_gen.get_operator(covov->f1()); const details::operator_type o2 = operation; binary_functor_t f0 = covov->f0(); binary_functor_t f1 = covov->f1(); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), c, v0, v1, v2, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o2,f2)) return error_node(); exprtk_debug(("((c o0 v0) o1 v1) o2 v2\n")); return node_type::allocate(*(expr_gen.node_allocator_), c, v0, v1, v2, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "((t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t"); } }; struct synthesize_covocov_expression3 { typedef typename covocov_t::type3 node_type; typedef typename covocov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // ((c0 o0 v0) o1 c1) o2 v1 typedef typename synthesize_covoc_expression0::node_type lcl_covoc_t; const lcl_covoc_t* covoc = static_cast(branch[0]); const Type c0 = covoc->t0(); const Type& v0 = covoc->t1(); const Type c1 = covoc->t2(); const Type& v1 = static_cast*>(branch[1])->ref(); const details::operator_type o0 = expr_gen.get_operator(covoc->f0()); const details::operator_type o1 = expr_gen.get_operator(covoc->f1()); const details::operator_type o2 = operation; binary_functor_t f0 = covoc->f0(); binary_functor_t f1 = covoc->f1(); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), c0, v0, c1, v1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o2,f2)) return error_node(); exprtk_debug(("((c0 o0 v0) o1 c1) o2 v1\n")); return node_type::allocate(*(expr_gen.node_allocator_), c0, v0, c1, v1, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "((t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t"); } }; struct synthesize_vocovoc_expression3 { typedef typename vocovoc_t::type3 node_type; typedef typename vocovoc_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // ((v0 o0 c0) o1 v1) o2 c1 typedef typename synthesize_vocov_expression0::node_type lcl_vocov_t; const lcl_vocov_t* vocov = static_cast(branch[0]); const Type& v0 = vocov->t0(); const Type c0 = vocov->t1(); const Type& v1 = vocov->t2(); const Type c1 = static_cast*>(branch[1])->value(); const details::operator_type o0 = expr_gen.get_operator(vocov->f0()); const details::operator_type o1 = expr_gen.get_operator(vocov->f1()); const details::operator_type o2 = operation; binary_functor_t f0 = vocov->f0(); binary_functor_t f1 = vocov->f1(); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, c0, v1, c1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o2,f2)) return error_node(); exprtk_debug(("((v0 o0 c0) o1 v1) o2 c1\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, c0, v1, c1, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "((t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t"); } }; struct synthesize_covovoc_expression3 { typedef typename covovoc_t::type3 node_type; typedef typename covovoc_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // ((c0 o0 v0) o1 v1) o2 c1 typedef typename synthesize_covov_expression0::node_type lcl_covov_t; const lcl_covov_t* covov = static_cast(branch[0]); const Type c0 = covov->t0(); const Type& v0 = covov->t1(); const Type& v1 = covov->t2(); const Type c1 = static_cast*>(branch[1])->value(); const details::operator_type o0 = expr_gen.get_operator(covov->f0()); const details::operator_type o1 = expr_gen.get_operator(covov->f1()); const details::operator_type o2 = operation; binary_functor_t f0 = covov->f0(); binary_functor_t f1 = covov->f1(); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), c0, v0, v1, c1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o2,f2)) return error_node(); exprtk_debug(("((c0 o0 v0) o1 v1) o2 c1\n")); return node_type::allocate(*(expr_gen.node_allocator_), c0, v0, v1, c1, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "((t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t"); } }; struct synthesize_vococov_expression3 { typedef typename vococov_t::type3 node_type; typedef typename vococov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // ((v0 o0 c0) o1 c1) o2 v1 typedef typename synthesize_vococ_expression0::node_type lcl_vococ_t; const lcl_vococ_t* vococ = static_cast(branch[0]); const Type& v0 = vococ->t0(); const Type c0 = vococ->t1(); const Type c1 = vococ->t2(); const Type& v1 = static_cast*>(branch[1])->ref(); const details::operator_type o0 = expr_gen.get_operator(vococ->f0()); const details::operator_type o1 = expr_gen.get_operator(vococ->f1()); const details::operator_type o2 = operation; binary_functor_t f0 = vococ->f0(); binary_functor_t f1 = vococ->f1(); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, c0, c1, v1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o2,f2)) return error_node(); exprtk_debug(("((v0 o0 c0) o1 c1) o2 v1\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, c0, c1, v1, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "((t" << expr_gen.to_str(o0) << "t)" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t"); } }; struct synthesize_vovovov_expression4 { typedef typename vovovov_t::type4 node_type; typedef typename vovovov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // (v0 o0 (v1 o1 v2)) o2 v3 typedef typename synthesize_vovov_expression1::node_type lcl_vovov_t; const lcl_vovov_t* vovov = static_cast(branch[0]); const Type& v0 = vovov->t0(); const Type& v1 = vovov->t1(); const Type& v2 = vovov->t2(); const Type& v3 = static_cast*>(branch[1])->ref(); const details::operator_type o0 = expr_gen.get_operator(vovov->f0()); const details::operator_type o1 = expr_gen.get_operator(vovov->f1()); const details::operator_type o2 = operation; binary_functor_t f0 = vovov->f0(); binary_functor_t f1 = vovov->f1(); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, v1, v2, v3, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o2,f2)) return error_node(); exprtk_debug(("(v0 o0 (v1 o1 v2)) o2 v3\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, v1, v2, v3, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t"); } }; struct synthesize_vovovoc_expression4 { typedef typename vovovoc_t::type4 node_type; typedef typename vovovoc_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // ((v0 o0 (v1 o1 v2)) o2 c) typedef typename synthesize_vovov_expression1::node_type lcl_vovov_t; const lcl_vovov_t* vovov = static_cast(branch[0]); const Type& v0 = vovov->t0(); const Type& v1 = vovov->t1(); const Type& v2 = vovov->t2(); const Type c = static_cast*>(branch[1])->value(); const details::operator_type o0 = expr_gen.get_operator(vovov->f0()); const details::operator_type o1 = expr_gen.get_operator(vovov->f1()); const details::operator_type o2 = operation; binary_functor_t f0 = vovov->f0(); binary_functor_t f1 = vovov->f1(); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, v1, v2, c, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o2,f2)) return error_node(); exprtk_debug(("((v0 o0 (v1 o1 v2)) o2 c)\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, v1, v2, c, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t"); } }; struct synthesize_vovocov_expression4 { typedef typename vovocov_t::type4 node_type; typedef typename vovocov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // ((v0 o0 (v1 o1 c)) o2 v1) typedef typename synthesize_vovoc_expression1::node_type lcl_vovoc_t; const lcl_vovoc_t* vovoc = static_cast(branch[0]); const Type& v0 = vovoc->t0(); const Type& v1 = vovoc->t1(); const Type c = vovoc->t2(); const Type& v2 = static_cast*>(branch[1])->ref(); const details::operator_type o0 = expr_gen.get_operator(vovoc->f0()); const details::operator_type o1 = expr_gen.get_operator(vovoc->f1()); const details::operator_type o2 = operation; binary_functor_t f0 = vovoc->f0(); binary_functor_t f1 = vovoc->f1(); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, v1, c, v2, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o2,f2)) return error_node(); exprtk_debug(("((v0 o0 (v1 o1 c)) o2 v1)\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, v1, c, v2, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t"); } }; struct synthesize_vocovov_expression4 { typedef typename vocovov_t::type4 node_type; typedef typename vocovov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // ((v0 o0 (c o1 v1)) o2 v2) typedef typename synthesize_vocov_expression1::node_type lcl_vocov_t; const lcl_vocov_t* vocov = static_cast(branch[0]); const Type& v0 = vocov->t0(); const Type c = vocov->t1(); const Type& v1 = vocov->t2(); const Type& v2 = static_cast*>(branch[1])->ref(); const details::operator_type o0 = expr_gen.get_operator(vocov->f0()); const details::operator_type o1 = expr_gen.get_operator(vocov->f1()); const details::operator_type o2 = operation; binary_functor_t f0 = vocov->f0(); binary_functor_t f1 = vocov->f1(); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, c, v1, v2, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o2,f2)) return error_node(); exprtk_debug(("((v0 o0 (c o1 v1)) o2 v2)\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, c, v1, v2, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t"); } }; struct synthesize_covovov_expression4 { typedef typename covovov_t::type4 node_type; typedef typename covovov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // ((c o0 (v0 o1 v1)) o2 v2) typedef typename synthesize_covov_expression1::node_type lcl_covov_t; const lcl_covov_t* covov = static_cast(branch[0]); const Type c = covov->t0(); const Type& v0 = covov->t1(); const Type& v1 = covov->t2(); const Type& v2 = static_cast*>(branch[1])->ref(); const details::operator_type o0 = expr_gen.get_operator(covov->f0()); const details::operator_type o1 = expr_gen.get_operator(covov->f1()); const details::operator_type o2 = operation; binary_functor_t f0 = covov->f0(); binary_functor_t f1 = covov->f1(); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), c, v0, v1, v2, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o2,f2)) return error_node(); exprtk_debug(("((c o0 (v0 o1 v1)) o2 v2)\n")); return node_type::allocate(*(expr_gen.node_allocator_), c, v0, v1, v2, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t"); } }; struct synthesize_covocov_expression4 { typedef typename covocov_t::type4 node_type; typedef typename covocov_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // ((c0 o0 (v0 o1 c1)) o2 v1) typedef typename synthesize_covoc_expression1::node_type lcl_covoc_t; const lcl_covoc_t* covoc = static_cast(branch[0]); const Type c0 = covoc->t0(); const Type& v0 = covoc->t1(); const Type c1 = covoc->t2(); const Type& v1 = static_cast*>(branch[1])->ref(); const details::operator_type o0 = expr_gen.get_operator(covoc->f0()); const details::operator_type o1 = expr_gen.get_operator(covoc->f1()); const details::operator_type o2 = operation; binary_functor_t f0 = covoc->f0(); binary_functor_t f1 = covoc->f1(); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), c0, v0, c1, v1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o2,f2)) return error_node(); exprtk_debug(("((c0 o0 (v0 o1 c1)) o2 v1)\n")); return node_type::allocate(*(expr_gen.node_allocator_), c0, v0, c1, v1, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t"); } }; struct synthesize_vocovoc_expression4 { typedef typename vocovoc_t::type4 node_type; typedef typename vocovoc_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // ((v0 o0 (c0 o1 v1)) o2 c1) typedef typename synthesize_vocov_expression1::node_type lcl_vocov_t; const lcl_vocov_t* vocov = static_cast(branch[0]); const Type& v0 = vocov->t0(); const Type c0 = vocov->t1(); const Type& v1 = vocov->t2(); const Type c1 = static_cast*>(branch[1])->value(); const details::operator_type o0 = expr_gen.get_operator(vocov->f0()); const details::operator_type o1 = expr_gen.get_operator(vocov->f1()); const details::operator_type o2 = operation; binary_functor_t f0 = vocov->f0(); binary_functor_t f1 = vocov->f1(); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), v0, c0, v1, c1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o2,f2)) return error_node(); exprtk_debug(("((v0 o0 (c0 o1 v1)) o2 c1)\n")); return node_type::allocate(*(expr_gen.node_allocator_), v0, c0, v1, c1, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t"); } }; struct synthesize_covovoc_expression4 { typedef typename covovoc_t::type4 node_type; typedef typename covovoc_t::sf4_type sf4_type; typedef typename node_type::T0 T0; typedef typename node_type::T1 T1; typedef typename node_type::T2 T2; typedef typename node_type::T3 T3; static inline expression_node_ptr process(expression_generator& expr_gen, const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // ((c0 o0 (v0 o1 v1)) o2 c1) typedef typename synthesize_covov_expression1::node_type lcl_covov_t; const lcl_covov_t* covov = static_cast(branch[0]); const Type c0 = covov->t0(); const Type& v0 = covov->t1(); const Type& v1 = covov->t2(); const Type c1 = static_cast*>(branch[1])->value(); const details::operator_type o0 = expr_gen.get_operator(covov->f0()); const details::operator_type o1 = expr_gen.get_operator(covov->f1()); const details::operator_type o2 = operation; binary_functor_t f0 = covov->f0(); binary_functor_t f1 = covov->f1(); binary_functor_t f2 = reinterpret_cast(0); details::free_node(*(expr_gen.node_allocator_),branch[0]); details::free_node(*(expr_gen.node_allocator_),branch[1]); expression_node_ptr result = error_node(); const bool synthesis_result = synthesize_sf4ext_expression::template compile (expr_gen, id(expr_gen, o0, o1, o2), c0, v0, v1, c1, result); if (synthesis_result) return result; else if (!expr_gen.valid_operator(o2,f2)) return error_node(); exprtk_debug(("((c0 o0 (v0 o1 v1)) o2 c1)\n")); return node_type::allocate(*(expr_gen.node_allocator_), c0, v0, v1, c1, f0, f1, f2); } static inline std::string id(expression_generator& expr_gen, const details::operator_type o0, const details::operator_type o1, const details::operator_type o2) { return (details::build_string() << "(t" << expr_gen.to_str(o0) << "(t" << expr_gen.to_str(o1) << "t)" << expr_gen.to_str(o2) << "t"); } }; struct synthesize_vococov_expression4 { typedef typename vococov_t::type4 node_type; static inline expression_node_ptr process(expression_generator&, const details::operator_type&, expression_node_ptr (&)[2]) { // ((v0 o0 (c0 o1 c1)) o2 v1) - Not possible exprtk_debug(("((v0 o0 (c0 o1 c1)) o2 v1) - Not possible\n")); return error_node(); } static inline std::string id(expression_generator&, const details::operator_type, const details::operator_type, const details::operator_type) { return "INVALID"; } }; #endif inline expression_node_ptr synthesize_uvouv_expression(const details::operator_type& operation, expression_node_ptr (&branch)[2]) { // Definition: uv o uv details::operator_type o0 = static_cast*>(branch[0])->operation(); details::operator_type o1 = static_cast*>(branch[1])->operation(); const Type& v0 = static_cast*>(branch[0])->v(); const Type& v1 = static_cast*>(branch[1])->v(); unary_functor_t u0 = reinterpret_cast (0); unary_functor_t u1 = reinterpret_cast (0); binary_functor_t f = reinterpret_cast(0); if (!valid_operator(o0,u0)) return error_node(); else if (!valid_operator(o1,u1)) return error_node(); else if (!valid_operator(operation,f)) return error_node(); expression_node_ptr result = error_node(); if ( (details::e_neg == o0) && (details::e_neg == o1) ) { switch (operation) { // (-v0 + -v1) --> -(v0 + v1) case details::e_add : result = (*this)(details::e_neg, node_allocator_-> allocate_rr > >(v0, v1)); exprtk_debug(("(-v0 + -v1) --> -(v0 + v1)\n")); break; // (-v0 - -v1) --> (v1 - v0) case details::e_sub : result = node_allocator_-> allocate_rr > >(v1, v0); exprtk_debug(("(-v0 - -v1) --> (v1 - v0)\n")); break; // (-v0 * -v1) --> (v0 * v1) case details::e_mul : result = node_allocator_-> allocate_rr > >(v0, v1); exprtk_debug(("(-v0 * -v1) --> (v0 * v1)\n")); break; // (-v0 / -v1) --> (v0 / v1) case details::e_div : result = node_allocator_-> allocate_rr > >(v0, v1); exprtk_debug(("(-v0 / -v1) --> (v0 / v1)\n")); break; default : break; } } if (0 == result) { result = node_allocator_-> allocate_rrrrr >(v0, v1, u0, u1, f); } details::free_all_nodes(*node_allocator_,branch); return result; } #undef basic_opr_switch_statements #undef extended_opr_switch_statements #undef unary_opr_switch_statements #ifndef exprtk_disable_string_capabilities #define string_opr_switch_statements \ case_stmt(details:: e_lt ,details:: lt_op) \ case_stmt(details:: e_lte ,details:: lte_op) \ case_stmt(details:: e_gt ,details:: gt_op) \ case_stmt(details:: e_gte ,details:: gte_op) \ case_stmt(details:: e_eq ,details:: eq_op) \ case_stmt(details:: e_ne ,details:: ne_op) \ case_stmt(details::e_in ,details:: in_op) \ case_stmt(details::e_like ,details:: like_op) \ case_stmt(details::e_ilike,details::ilike_op) \ template inline expression_node_ptr synthesize_str_xrox_expression_impl(const details::operator_type& opr, T0 s0, T1 s1, range_t rp0) { switch (opr) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ allocate_ttt >,T0,T1> \ (s0, s1, rp0); \ string_opr_switch_statements #undef case_stmt default : return error_node(); } } template inline expression_node_ptr synthesize_str_xoxr_expression_impl(const details::operator_type& opr, T0 s0, T1 s1, range_t rp1) { switch (opr) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ allocate_ttt >,T0,T1> \ (s0, s1, rp1); \ string_opr_switch_statements #undef case_stmt default : return error_node(); } } template inline expression_node_ptr synthesize_str_xroxr_expression_impl(const details::operator_type& opr, T0 s0, T1 s1, range_t rp0, range_t rp1) { switch (opr) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ allocate_tttt >,T0,T1> \ (s0, s1, rp0, rp1); \ string_opr_switch_statements #undef case_stmt default : return error_node(); } } template inline expression_node_ptr synthesize_sos_expression_impl(const details::operator_type& opr, T0 s0, T1 s1) { switch (opr) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ allocate_tt >,T0,T1>(s0, s1); \ string_opr_switch_statements #undef case_stmt default : return error_node(); } } inline expression_node_ptr synthesize_sos_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2]) { std::string& s0 = static_cast*>(branch[0])->ref(); std::string& s1 = static_cast*>(branch[1])->ref(); return synthesize_sos_expression_impl(opr, s0, s1); } inline expression_node_ptr synthesize_sros_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2]) { std::string& s0 = static_cast*>(branch[0])->ref (); std::string& s1 = static_cast*> (branch[1])->ref (); range_t rp0 = static_cast*>(branch[0])->range(); static_cast*>(branch[0])->range_ref().clear(); free_node(*node_allocator_,branch[0]); return synthesize_str_xrox_expression_impl(opr, s0, s1, rp0); } inline expression_node_ptr synthesize_sosr_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2]) { std::string& s0 = static_cast*> (branch[0])->ref (); std::string& s1 = static_cast*>(branch[1])->ref (); range_t rp1 = static_cast*>(branch[1])->range(); static_cast*>(branch[1])->range_ref().clear(); free_node(*node_allocator_,branch[1]); return synthesize_str_xoxr_expression_impl(opr, s0, s1, rp1); } inline expression_node_ptr synthesize_socsr_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2]) { std::string& s0 = static_cast*> (branch[0])->ref (); std::string s1 = static_cast*>(branch[1])->str (); range_t rp1 = static_cast*>(branch[1])->range(); static_cast*>(branch[1])->range_ref().clear(); free_node(*node_allocator_,branch[1]); return synthesize_str_xoxr_expression_impl(opr, s0, s1, rp1); } inline expression_node_ptr synthesize_srosr_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2]) { std::string& s0 = static_cast*>(branch[0])->ref (); std::string& s1 = static_cast*>(branch[1])->ref (); range_t rp0 = static_cast*>(branch[0])->range(); range_t rp1 = static_cast*>(branch[1])->range(); static_cast*>(branch[0])->range_ref().clear(); static_cast*>(branch[1])->range_ref().clear(); details::free_node(*node_allocator_,branch[0]); details::free_node(*node_allocator_,branch[1]); return synthesize_str_xroxr_expression_impl(opr, s0, s1, rp0, rp1); } inline expression_node_ptr synthesize_socs_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2]) { std::string& s0 = static_cast< details::stringvar_node*>(branch[0])->ref(); std::string s1 = static_cast*>(branch[1])->str(); details::free_node(*node_allocator_,branch[1]); return synthesize_sos_expression_impl(opr, s0, s1); } inline expression_node_ptr synthesize_csos_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2]) { std::string s0 = static_cast*>(branch[0])->str(); std::string& s1 = static_cast< details::stringvar_node*>(branch[1])->ref(); details::free_node(*node_allocator_,branch[0]); return synthesize_sos_expression_impl(opr, s0, s1); } inline expression_node_ptr synthesize_csosr_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2]) { std::string s0 = static_cast*>(branch[0])->str (); std::string& s1 = static_cast*> (branch[1])->ref (); range_t rp1 = static_cast*> (branch[1])->range(); static_cast*>(branch[1])->range_ref().clear(); details::free_node(*node_allocator_,branch[0]); details::free_node(*node_allocator_,branch[1]); return synthesize_str_xoxr_expression_impl(opr, s0, s1, rp1); } inline expression_node_ptr synthesize_srocs_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2]) { std::string& s0 = static_cast*> (branch[0])->ref (); std::string s1 = static_cast*>(branch[1])->str (); range_t rp0 = static_cast*> (branch[0])->range(); static_cast*>(branch[0])->range_ref().clear(); details::free_node(*node_allocator_,branch[0]); details::free_node(*node_allocator_,branch[1]); return synthesize_str_xrox_expression_impl(opr, s0, s1, rp0); } inline expression_node_ptr synthesize_srocsr_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2]) { std::string& s0 = static_cast*> (branch[0])->ref (); std::string s1 = static_cast*>(branch[1])->str (); range_t rp0 = static_cast*> (branch[0])->range(); range_t rp1 = static_cast*>(branch[1])->range(); static_cast*> (branch[0])->range_ref().clear(); static_cast*>(branch[1])->range_ref().clear(); details::free_node(*node_allocator_,branch[0]); details::free_node(*node_allocator_,branch[1]); return synthesize_str_xroxr_expression_impl(opr, s0, s1, rp0, rp1); } inline expression_node_ptr synthesize_csocs_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2]) { const std::string s0 = static_cast*>(branch[0])->str(); const std::string s1 = static_cast*>(branch[1])->str(); expression_node_ptr result = error_node(); if (details::e_add == opr) result = node_allocator_->allocate_c >(s0 + s1); else if (details::e_in == opr) result = node_allocator_->allocate_c >(details::in_op ::process(s0,s1)); else if (details::e_like == opr) result = node_allocator_->allocate_c >(details::like_op ::process(s0,s1)); else if (details::e_ilike == opr) result = node_allocator_->allocate_c >(details::ilike_op::process(s0,s1)); else { expression_node_ptr temp = synthesize_sos_expression_impl(opr, s0, s1); const Type v = temp->value(); details::free_node(*node_allocator_,temp); result = node_allocator_->allocate(v); } details::free_all_nodes(*node_allocator_,branch); return result; } inline expression_node_ptr synthesize_csocsr_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2]) { const std::string s0 = static_cast*> (branch[0])->str (); std::string s1 = static_cast*>(branch[1])->str (); range_t rp1 = static_cast*>(branch[1])->range(); static_cast*>(branch[1])->range_ref().clear(); free_node(*node_allocator_,branch[0]); free_node(*node_allocator_,branch[1]); return synthesize_str_xoxr_expression_impl(opr, s0, s1, rp1); } inline expression_node_ptr synthesize_csros_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2]) { std::string s0 = static_cast*>(branch[0])->str (); std::string& s1 = static_cast*> (branch[1])->ref (); range_t rp0 = static_cast*>(branch[0])->range(); static_cast*>(branch[0])->range_ref().clear(); free_node(*node_allocator_,branch[0]); return synthesize_str_xrox_expression_impl(opr, s0, s1, rp0); } inline expression_node_ptr synthesize_csrosr_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2]) { const std::string s0 = static_cast*>(branch[0])->str (); std::string& s1 = static_cast*> (branch[1])->ref (); range_t rp0 = static_cast*>(branch[0])->range(); range_t rp1 = static_cast*> (branch[1])->range(); static_cast*>(branch[0])->range_ref().clear(); static_cast*> (branch[1])->range_ref().clear(); free_node(*node_allocator_,branch[0]); free_node(*node_allocator_,branch[1]); return synthesize_str_xroxr_expression_impl(opr, s0, s1, rp0, rp1); } inline expression_node_ptr synthesize_csrocs_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2]) { std::string s0 = static_cast*>(branch[0])->str (); const std::string s1 = static_cast*> (branch[1])->str (); range_t rp0 = static_cast*>(branch[0])->range(); static_cast*>(branch[0])->range_ref().clear(); details::free_all_nodes(*node_allocator_,branch); return synthesize_str_xrox_expression_impl(opr, s0, s1, rp0); } inline expression_node_ptr synthesize_csrocsr_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2]) { std::string s0 = static_cast*>(branch[0])->str (); std::string s1 = static_cast*>(branch[1])->str (); range_t rp0 = static_cast*>(branch[0])->range(); range_t rp1 = static_cast*>(branch[1])->range(); static_cast*>(branch[0])->range_ref().clear(); static_cast*>(branch[1])->range_ref().clear(); details::free_all_nodes(*node_allocator_,branch); return synthesize_str_xroxr_expression_impl(opr, s0, s1, rp0, rp1); } inline expression_node_ptr synthesize_strogen_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2]) { switch (opr) { #define case_stmt(op0,op1) \ case op0 : return node_allocator_-> \ allocate_ttt > > \ (opr, branch[0], branch[1]); \ string_opr_switch_statements #undef case_stmt default : return error_node(); } } #endif #ifndef exprtk_disable_string_capabilities inline expression_node_ptr synthesize_string_expression(const details::operator_type& opr, expression_node_ptr (&branch)[2]) { if ((0 == branch[0]) || (0 == branch[1])) { details::free_all_nodes(*node_allocator_,branch); return error_node(); } const bool b0_is_s = details::is_string_node (branch[0]); const bool b0_is_cs = details::is_const_string_node (branch[0]); const bool b0_is_sr = details::is_string_range_node (branch[0]); const bool b0_is_csr = details::is_const_string_range_node(branch[0]); const bool b1_is_s = details::is_string_node (branch[1]); const bool b1_is_cs = details::is_const_string_node (branch[1]); const bool b1_is_sr = details::is_string_range_node (branch[1]); const bool b1_is_csr = details::is_const_string_range_node(branch[1]); const bool b0_is_gen = details::is_string_assignment_node (branch[0]) || details::is_genricstring_range_node(branch[0]) || details::is_string_concat_node (branch[0]) || details::is_string_function_node (branch[0]) || details::is_string_condition_node (branch[0]) || details::is_string_ccondition_node (branch[0]) || details::is_string_vararg_node (branch[0]) ; const bool b1_is_gen = details::is_string_assignment_node (branch[1]) || details::is_genricstring_range_node(branch[1]) || details::is_string_concat_node (branch[1]) || details::is_string_function_node (branch[1]) || details::is_string_condition_node (branch[1]) || details::is_string_ccondition_node (branch[1]) || details::is_string_vararg_node (branch[1]) ; if (details::e_add == opr) { if (!b0_is_cs || !b1_is_cs) { return synthesize_expression(opr,branch); } } if (b0_is_gen || b1_is_gen) { return synthesize_strogen_expression(opr,branch); } else if (b0_is_s) { if (b1_is_s ) return synthesize_sos_expression (opr,branch); else if (b1_is_cs ) return synthesize_socs_expression (opr,branch); else if (b1_is_sr ) return synthesize_sosr_expression (opr,branch); else if (b1_is_csr) return synthesize_socsr_expression (opr,branch); } else if (b0_is_cs) { if (b1_is_s ) return synthesize_csos_expression (opr,branch); else if (b1_is_cs ) return synthesize_csocs_expression (opr,branch); else if (b1_is_sr ) return synthesize_csosr_expression (opr,branch); else if (b1_is_csr) return synthesize_csocsr_expression(opr,branch); } else if (b0_is_sr) { if (b1_is_s ) return synthesize_sros_expression (opr,branch); else if (b1_is_sr ) return synthesize_srosr_expression (opr,branch); else if (b1_is_cs ) return synthesize_srocs_expression (opr,branch); else if (b1_is_csr) return synthesize_srocsr_expression(opr,branch); } else if (b0_is_csr) { if (b1_is_s ) return synthesize_csros_expression (opr,branch); else if (b1_is_sr ) return synthesize_csrosr_expression (opr,branch); else if (b1_is_cs ) return synthesize_csrocs_expression (opr,branch); else if (b1_is_csr) return synthesize_csrocsr_expression(opr,branch); } return error_node(); } #else inline expression_node_ptr synthesize_string_expression(const details::operator_type&, expression_node_ptr (&branch)[2]) { details::free_all_nodes(*node_allocator_,branch); return error_node(); } #endif #ifndef exprtk_disable_string_capabilities inline expression_node_ptr synthesize_string_expression(const details::operator_type& opr, expression_node_ptr (&branch)[3]) { if (details::e_inrange != opr) return error_node(); else if ((0 == branch[0]) || (0 == branch[1]) || (0 == branch[2])) { details::free_all_nodes(*node_allocator_,branch); return error_node(); } else if ( details::is_const_string_node(branch[0]) && details::is_const_string_node(branch[1]) && details::is_const_string_node(branch[2]) ) { const std::string s0 = static_cast*>(branch[0])->str(); const std::string s1 = static_cast*>(branch[1])->str(); const std::string s2 = static_cast*>(branch[2])->str(); const Type v = (((s0 <= s1) && (s1 <= s2)) ? Type(1) : Type(0)); details::free_all_nodes(*node_allocator_,branch); return node_allocator_->allocate_c >(v); } else if ( details::is_string_node(branch[0]) && details::is_string_node(branch[1]) && details::is_string_node(branch[2]) ) { std::string& s0 = static_cast*>(branch[0])->ref(); std::string& s1 = static_cast*>(branch[1])->ref(); std::string& s2 = static_cast*>(branch[2])->ref(); typedef typename details::sosos_node > inrange_t; return node_allocator_->allocate_type(s0,s1,s2); } else if ( details::is_const_string_node(branch[0]) && details::is_string_node(branch[1]) && details::is_const_string_node(branch[2]) ) { std::string s0 = static_cast*>(branch[0])->str(); std::string& s1 = static_cast< details::stringvar_node*>(branch[1])->ref(); std::string s2 = static_cast*>(branch[2])->str(); typedef typename details::sosos_node > inrange_t; details::free_node(*node_allocator_,branch[0]); details::free_node(*node_allocator_,branch[2]); return node_allocator_->allocate_type(s0,s1,s2); } else if ( details::is_string_node(branch[0]) && details::is_const_string_node(branch[1]) && details::is_string_node(branch[2]) ) { std::string& s0 = static_cast< details::stringvar_node*>(branch[0])->ref(); std::string s1 = static_cast*>(branch[1])->str(); std::string& s2 = static_cast< details::stringvar_node*>(branch[2])->ref(); typedef typename details::sosos_node > inrange_t; details::free_node(*node_allocator_,branch[1]); return node_allocator_->allocate_type(s0,s1,s2); } else if ( details::is_string_node(branch[0]) && details::is_string_node(branch[1]) && details::is_const_string_node(branch[2]) ) { std::string& s0 = static_cast< details::stringvar_node*>(branch[0])->ref(); std::string& s1 = static_cast< details::stringvar_node*>(branch[1])->ref(); std::string s2 = static_cast*>(branch[2])->str(); typedef typename details::sosos_node > inrange_t; details::free_node(*node_allocator_,branch[2]); return node_allocator_->allocate_type(s0,s1,s2); } else if ( details::is_const_string_node(branch[0]) && details:: is_string_node(branch[1]) && details:: is_string_node(branch[2]) ) { std::string s0 = static_cast*>(branch[0])->str(); std::string& s1 = static_cast< details::stringvar_node*>(branch[1])->ref(); std::string& s2 = static_cast< details::stringvar_node*>(branch[2])->ref(); typedef typename details::sosos_node > inrange_t; details::free_node(*node_allocator_,branch[0]); return node_allocator_->allocate_type(s0,s1,s2); } else return error_node(); } #else inline expression_node_ptr synthesize_string_expression(const details::operator_type&, expression_node_ptr (&branch)[3]) { details::free_all_nodes(*node_allocator_,branch); return error_node(); } #endif inline expression_node_ptr synthesize_null_expression(const details::operator_type& operation, expression_node_ptr (&branch)[2]) { /* Note: The following are the type promotion rules that relate to operations that include 'null': 0. null ==/!= null --> true false 1. null operation null --> null 2. x ==/!= null --> true/false 3. null ==/!= x --> true/false 4. x operation null --> x 5. null operation x --> x */ typedef typename details::null_eq_node nulleq_node_t; bool b0_null = details::is_null_node(branch[0]); bool b1_null = details::is_null_node(branch[1]); if (b0_null && b1_null) { expression_node_ptr result = error_node(); if (details::e_eq == operation) result = node_allocator_->allocate_c(T(1)); else if (details::e_ne == operation) result = node_allocator_->allocate_c(T(0)); if (result) { details::free_node(*node_allocator_,branch[0]); details::free_node(*node_allocator_,branch[1]); return result; } details::free_node(*node_allocator_,branch[1]); return branch[0]; } else if (details::e_eq == operation) { expression_node_ptr result = node_allocator_-> allocate_rc(branch[b0_null ? 0 : 1],true); details::free_node(*node_allocator_,branch[b0_null ? 1 : 0]); return result; } else if (details::e_ne == operation) { expression_node_ptr result = node_allocator_-> allocate_rc(branch[b0_null ? 0 : 1],false); details::free_node(*node_allocator_,branch[b0_null ? 1 : 0]); return result; } else if (b0_null) { details::free_node(*node_allocator_,branch[0]); branch[0] = branch[1]; branch[1] = error_node(); } else if (b1_null) { details::free_node(*node_allocator_,branch[1]); branch[1] = error_node(); } if ( (details::e_add == operation) || (details::e_sub == operation) || (details::e_mul == operation) || (details::e_div == operation) || (details::e_mod == operation) || (details::e_pow == operation) ) { return branch[0]; } else if ( (details::e_lt == operation) || (details::e_lte == operation) || (details::e_gt == operation) || (details::e_gte == operation) || (details::e_and == operation) || (details::e_nand == operation) || (details::e_or == operation) || (details::e_nor == operation) || (details::e_xor == operation) || (details::e_xnor == operation) || (details::e_in == operation) || (details::e_like == operation) || (details::e_ilike == operation) ) { return node_allocator_->allocate_c(T(0)); } details::free_node(*node_allocator_,branch[0]); return node_allocator_->allocate >(); } template inline expression_node_ptr synthesize_expression(const details::operator_type& operation, expression_node_ptr (&branch)[N]) { if ( (details::e_in == operation) || (details::e_like == operation) || (details::e_ilike == operation) ) { free_all_nodes(*node_allocator_,branch); return error_node(); } else if (!details::all_nodes_valid(branch)) { free_all_nodes(*node_allocator_,branch); return error_node(); } else if ((details::e_default != operation)) { // Attempt simple constant folding optimisation. expression_node_ptr expression_point = node_allocator_->allocate(operation,branch); if (is_constant_foldable(branch)) { Type v = expression_point->value(); details::free_node(*node_allocator_,expression_point); return node_allocator_->allocate(v); } else return expression_point; } else return error_node(); } template inline expression_node_ptr synthesize_expression(F* f, expression_node_ptr (&branch)[N]) { if (!details::all_nodes_valid(branch)) { free_all_nodes(*node_allocator_,branch); return error_node(); } typedef typename details::function_N_node function_N_node_t; // Attempt simple constant folding optimisation. expression_node_ptr expression_point = node_allocator_->allocate(f); function_N_node_t* func_node_ptr = dynamic_cast(expression_point); if (0 == func_node_ptr) { free_all_nodes(*node_allocator_,branch); return error_node(); } else func_node_ptr->init_branches(branch); if (is_constant_foldable(branch) && !f->has_side_effects()) { Type v = expression_point->value(); details::free_node(*node_allocator_,expression_point); return node_allocator_->allocate(v); } parser_->state_.activate_side_effect("synthesize_expression(function)"); return expression_point; } bool strength_reduction_enabled_; details::node_allocator* node_allocator_; synthesize_map_t synthesize_map_; unary_op_map_t* unary_op_map_; binary_op_map_t* binary_op_map_; inv_binary_op_map_t* inv_binary_op_map_; sf3_map_t* sf3_map_; sf4_map_t* sf4_map_; parser_t* parser_; }; inline void set_error(const parser_error::type& error_type) { error_list_.push_back(error_type); } inline void remove_last_error() { if (!error_list_.empty()) { error_list_.pop_back(); } } inline void set_synthesis_error(const std::string& synthesis_error_message) { if (synthesis_error_.empty()) { synthesis_error_ = synthesis_error_message; } } inline void register_local_vars(expression& e) { for (std::size_t i = 0; i < sem_.size(); ++i) { scope_element& se = sem_.get_element(i); if ( (scope_element::e_variable == se.type) || (scope_element::e_vecelem == se.type) ) { if (se.var_node) { e.register_local_var(se.var_node); } if (se.data) { e.register_local_data(se.data, 1, 0); } } else if (scope_element::e_vector == se.type) { if (se.vec_node) { e.register_local_var(se.vec_node); } if (se.data) { e.register_local_data(se.data, se.size, 1); } } #ifndef exprtk_disable_string_capabilities else if (scope_element::e_string == se.type) { if (se.str_node) { e.register_local_var(se.str_node); } if (se.data) { e.register_local_data(se.data, se.size, 2); } } #endif se.var_node = 0; se.vec_node = 0; #ifndef exprtk_disable_string_capabilities se.str_node = 0; #endif se.data = 0; se.ref_count = 0; se.active = false; } } inline void register_return_results(expression& e) { e.register_return_results(results_context_); results_context_ = 0; } inline void load_unary_operations_map(unary_op_map_t& m) { #define register_unary_op(Op,UnaryFunctor) \ m.insert(std::make_pair(Op,UnaryFunctor::process)); \ register_unary_op(details:: e_abs, details:: abs_op) register_unary_op(details:: e_acos, details:: acos_op) register_unary_op(details::e_acosh, details::acosh_op) register_unary_op(details:: e_asin, details:: asin_op) register_unary_op(details::e_asinh, details::asinh_op) register_unary_op(details::e_atanh, details::atanh_op) register_unary_op(details:: e_ceil, details:: ceil_op) register_unary_op(details:: e_cos, details:: cos_op) register_unary_op(details:: e_cosh, details:: cosh_op) register_unary_op(details:: e_exp, details:: exp_op) register_unary_op(details::e_expm1, details::expm1_op) register_unary_op(details::e_floor, details::floor_op) register_unary_op(details:: e_log, details:: log_op) register_unary_op(details::e_log10, details::log10_op) register_unary_op(details:: e_log2, details:: log2_op) register_unary_op(details::e_log1p, details::log1p_op) register_unary_op(details:: e_neg, details:: neg_op) register_unary_op(details:: e_pos, details:: pos_op) register_unary_op(details::e_round, details::round_op) register_unary_op(details:: e_sin, details:: sin_op) register_unary_op(details:: e_sinc, details:: sinc_op) register_unary_op(details:: e_sinh, details:: sinh_op) register_unary_op(details:: e_sqrt, details:: sqrt_op) register_unary_op(details:: e_tan, details:: tan_op) register_unary_op(details:: e_tanh, details:: tanh_op) register_unary_op(details:: e_cot, details:: cot_op) register_unary_op(details:: e_sec, details:: sec_op) register_unary_op(details:: e_csc, details:: csc_op) register_unary_op(details:: e_r2d, details:: r2d_op) register_unary_op(details:: e_d2r, details:: d2r_op) register_unary_op(details:: e_d2g, details:: d2g_op) register_unary_op(details:: e_g2d, details:: g2d_op) register_unary_op(details:: e_notl, details:: notl_op) register_unary_op(details:: e_sgn, details:: sgn_op) register_unary_op(details:: e_erf, details:: erf_op) register_unary_op(details:: e_erfc, details:: erfc_op) register_unary_op(details:: e_ncdf, details:: ncdf_op) register_unary_op(details:: e_frac, details:: frac_op) register_unary_op(details::e_trunc, details::trunc_op) #undef register_unary_op } inline void load_binary_operations_map(binary_op_map_t& m) { typedef typename binary_op_map_t::value_type value_type; #define register_binary_op(Op,BinaryFunctor) \ m.insert(value_type(Op,BinaryFunctor::process)); \ register_binary_op(details:: e_add, details:: add_op) register_binary_op(details:: e_sub, details:: sub_op) register_binary_op(details:: e_mul, details:: mul_op) register_binary_op(details:: e_div, details:: div_op) register_binary_op(details:: e_mod, details:: mod_op) register_binary_op(details:: e_pow, details:: pow_op) register_binary_op(details:: e_lt, details:: lt_op) register_binary_op(details:: e_lte, details:: lte_op) register_binary_op(details:: e_gt, details:: gt_op) register_binary_op(details:: e_gte, details:: gte_op) register_binary_op(details:: e_eq, details:: eq_op) register_binary_op(details:: e_ne, details:: ne_op) register_binary_op(details:: e_and, details:: and_op) register_binary_op(details::e_nand, details::nand_op) register_binary_op(details:: e_or, details:: or_op) register_binary_op(details:: e_nor, details:: nor_op) register_binary_op(details:: e_xor, details:: xor_op) register_binary_op(details::e_xnor, details::xnor_op) #undef register_binary_op } inline void load_inv_binary_operations_map(inv_binary_op_map_t& m) { typedef typename inv_binary_op_map_t::value_type value_type; #define register_binary_op(Op,BinaryFunctor) \ m.insert(value_type(BinaryFunctor::process,Op)); \ register_binary_op(details:: e_add, details:: add_op) register_binary_op(details:: e_sub, details:: sub_op) register_binary_op(details:: e_mul, details:: mul_op) register_binary_op(details:: e_div, details:: div_op) register_binary_op(details:: e_mod, details:: mod_op) register_binary_op(details:: e_pow, details:: pow_op) register_binary_op(details:: e_lt, details:: lt_op) register_binary_op(details:: e_lte, details:: lte_op) register_binary_op(details:: e_gt, details:: gt_op) register_binary_op(details:: e_gte, details:: gte_op) register_binary_op(details:: e_eq, details:: eq_op) register_binary_op(details:: e_ne, details:: ne_op) register_binary_op(details:: e_and, details:: and_op) register_binary_op(details::e_nand, details::nand_op) register_binary_op(details:: e_or, details:: or_op) register_binary_op(details:: e_nor, details:: nor_op) register_binary_op(details:: e_xor, details:: xor_op) register_binary_op(details::e_xnor, details::xnor_op) #undef register_binary_op } inline void load_sf3_map(sf3_map_t& sf3_map) { typedef std::pair pair_t; #define register_sf3(Op) \ sf3_map[details::sf##Op##_op::id()] = pair_t(details::sf##Op##_op::process,details::e_sf##Op); \ register_sf3(00) register_sf3(01) register_sf3(02) register_sf3(03) register_sf3(04) register_sf3(05) register_sf3(06) register_sf3(07) register_sf3(08) register_sf3(09) register_sf3(10) register_sf3(11) register_sf3(12) register_sf3(13) register_sf3(14) register_sf3(15) register_sf3(16) register_sf3(17) register_sf3(18) register_sf3(19) register_sf3(20) register_sf3(21) register_sf3(22) register_sf3(23) register_sf3(24) register_sf3(25) register_sf3(26) register_sf3(27) register_sf3(28) register_sf3(29) register_sf3(30) #undef register_sf3 #define register_sf3_extid(Id, Op) \ sf3_map[Id] = pair_t(details::sf##Op##_op::process,details::e_sf##Op); \ register_sf3_extid("(t-t)-t",23) // (t-t)-t --> t-(t+t) #undef register_sf3_extid } inline void load_sf4_map(sf4_map_t& sf4_map) { typedef std::pair pair_t; #define register_sf4(Op) \ sf4_map[details::sf##Op##_op::id()] = pair_t(details::sf##Op##_op::process,details::e_sf##Op); \ register_sf4(48) register_sf4(49) register_sf4(50) register_sf4(51) register_sf4(52) register_sf4(53) register_sf4(54) register_sf4(55) register_sf4(56) register_sf4(57) register_sf4(58) register_sf4(59) register_sf4(60) register_sf4(61) register_sf4(62) register_sf4(63) register_sf4(64) register_sf4(65) register_sf4(66) register_sf4(67) register_sf4(68) register_sf4(69) register_sf4(70) register_sf4(71) register_sf4(72) register_sf4(73) register_sf4(74) register_sf4(75) register_sf4(76) register_sf4(77) register_sf4(78) register_sf4(79) register_sf4(80) register_sf4(81) register_sf4(82) register_sf4(83) #undef register_sf4 #define register_sf4ext(Op) \ sf4_map[details::sfext##Op##_op::id()] = pair_t(details::sfext##Op##_op::process,details::e_sf4ext##Op); \ register_sf4ext(00) register_sf4ext(01) register_sf4ext(02) register_sf4ext(03) register_sf4ext(04) register_sf4ext(05) register_sf4ext(06) register_sf4ext(07) register_sf4ext(08) register_sf4ext(09) register_sf4ext(10) register_sf4ext(11) register_sf4ext(12) register_sf4ext(13) register_sf4ext(14) register_sf4ext(15) register_sf4ext(16) register_sf4ext(17) register_sf4ext(18) register_sf4ext(19) register_sf4ext(20) register_sf4ext(21) register_sf4ext(22) register_sf4ext(23) register_sf4ext(24) register_sf4ext(25) register_sf4ext(26) register_sf4ext(27) register_sf4ext(28) register_sf4ext(29) register_sf4ext(30) register_sf4ext(31) register_sf4ext(32) register_sf4ext(33) register_sf4ext(34) register_sf4ext(35) register_sf4ext(36) register_sf4ext(36) register_sf4ext(38) register_sf4ext(39) register_sf4ext(40) register_sf4ext(41) register_sf4ext(42) register_sf4ext(43) register_sf4ext(44) register_sf4ext(45) register_sf4ext(46) register_sf4ext(47) register_sf4ext(48) register_sf4ext(49) register_sf4ext(50) register_sf4ext(51) register_sf4ext(52) register_sf4ext(53) register_sf4ext(54) register_sf4ext(55) register_sf4ext(56) register_sf4ext(57) register_sf4ext(58) register_sf4ext(59) register_sf4ext(60) register_sf4ext(61) #undef register_sf4ext } inline results_context_t& results_ctx() { if (0 == results_context_) { results_context_ = new results_context_t(); } return (*results_context_); } inline void return_cleanup() { #ifndef exprtk_disable_return_statement if (results_context_) { delete results_context_; results_context_ = 0; } state_.return_stmt_present = false; #endif } private: parser(const parser&); parser& operator=(const parser&); settings_store settings_; expression_generator expression_generator_; details::node_allocator node_allocator_; symtab_store symtab_store_; dependent_entity_collector dec_; std::deque error_list_; std::deque brkcnt_list_; parser_state state_; bool resolve_unknown_symbol_; results_context_t* results_context_; unknown_symbol_resolver* unknown_symbol_resolver_; unknown_symbol_resolver default_usr_; base_ops_map_t base_ops_map_; unary_op_map_t unary_op_map_; binary_op_map_t binary_op_map_; inv_binary_op_map_t inv_binary_op_map_; sf3_map_t sf3_map_; sf4_map_t sf4_map_; std::string synthesis_error_; scope_element_manager sem_; lexer::helper::helper_assembly helper_assembly_; lexer::helper::commutative_inserter commutative_inserter_; lexer::helper::operator_joiner operator_joiner_2_; lexer::helper::operator_joiner operator_joiner_3_; lexer::helper::symbol_replacer symbol_replacer_; lexer::helper::bracket_checker bracket_checker_; lexer::helper::numeric_checker numeric_checker_; lexer::helper::sequence_validator sequence_validator_; template friend void details::disable_type_checking(ParserType& p); }; template class Sequence> inline bool collect_variables(const std::string& expr_str, Sequence& symbol_list) { typedef double T; typedef exprtk::symbol_table symbol_table_t; typedef exprtk::expression expression_t; typedef exprtk::parser parser_t; typedef parser_t::dependent_entity_collector::symbol_t symbol_t; symbol_table_t symbol_table; expression_t expression; parser_t parser; expression.register_symbol_table(symbol_table); parser.enable_unknown_symbol_resolver(); parser.dec().collect_variables() = true; if (!parser.compile(expr_str, expression)) return false; std::deque symb_list; parser.dec().symbols(symb_list); for (std::size_t i = 0; i < symb_list.size(); ++i) { symbol_list.push_back(symb_list[i].first); } return true; } template class Sequence> inline bool collect_variables(const std::string& expr_str, exprtk::symbol_table& extrnl_symbol_table, Sequence& symbol_list) { typedef exprtk::symbol_table symbol_table_t; typedef exprtk::expression expression_t; typedef exprtk::parser parser_t; typedef typename parser_t::dependent_entity_collector::symbol_t symbol_t; symbol_table_t symbol_table; expression_t expression; parser_t parser; expression.register_symbol_table(symbol_table); expression.register_symbol_table(extrnl_symbol_table); parser.enable_unknown_symbol_resolver(); parser.dec().collect_variables() = true; details::disable_type_checking(parser); if (!parser.compile(expr_str, expression)) return false; std::deque symb_list; parser.dec().symbols(symb_list); for (std::size_t i = 0; i < symb_list.size(); ++i) { symbol_list.push_back(symb_list[i].first); } return true; } template class Sequence> inline bool collect_functions(const std::string& expr_str, Sequence& symbol_list) { typedef double T; typedef exprtk::symbol_table symbol_table_t; typedef exprtk::expression expression_t; typedef exprtk::parser parser_t; typedef parser_t::dependent_entity_collector::symbol_t symbol_t; symbol_table_t symbol_table; expression_t expression; parser_t parser; expression.register_symbol_table(symbol_table); parser.enable_unknown_symbol_resolver(); parser.dec().collect_functions() = true; if (!parser.compile(expr_str, expression)) return false; std::deque symb_list; parser.dec().symbols(symb_list); for (std::size_t i = 0; i < symb_list.size(); ++i) { symbol_list.push_back(symb_list[i].first); } return true; } template class Sequence> inline bool collect_functions(const std::string& expr_str, exprtk::symbol_table& extrnl_symbol_table, Sequence& symbol_list) { typedef exprtk::symbol_table symbol_table_t; typedef exprtk::expression expression_t; typedef exprtk::parser parser_t; typedef typename parser_t::dependent_entity_collector::symbol_t symbol_t; symbol_table_t symbol_table; expression_t expression; parser_t parser; expression.register_symbol_table(symbol_table); expression.register_symbol_table(extrnl_symbol_table); parser.enable_unknown_symbol_resolver(); parser.dec().collect_functions() = true; details::disable_type_checking(parser); if (!parser.compile(expr_str, expression)) return false; std::deque symb_list; parser.dec().symbols(symb_list); for (std::size_t i = 0; i < symb_list.size(); ++i) { symbol_list.push_back(symb_list[i].first); } return true; } template inline T integrate(const expression& e, T& x, const T& r0, const T& r1, const std::size_t number_of_intervals = 1000000) { if (r0 > r1) return T(0); const T h = (r1 - r0) / (T(2) * number_of_intervals); T total_area = T(0); for (std::size_t i = 0; i < number_of_intervals; ++i) { x = r0 + T(2) * i * h; const T y0 = e.value(); x += h; const T y1 = e.value(); x += h; const T y2 = e.value(); x += h; total_area += h * (y0 + T(4) * y1 + y2) / T(3); } return total_area; } template inline T integrate(const expression& e, const std::string& variable_name, const T& r0, const T& r1, const std::size_t number_of_intervals = 1000000) { const symbol_table& sym_table = e.get_symbol_table(); if (!sym_table.valid()) return std::numeric_limits::quiet_NaN(); details::variable_node* var = sym_table.get_variable(variable_name); if (var) { T& x = var->ref(); T x_original = x; T result = integrate(e,x,r0,r1,number_of_intervals); x = x_original; return result; } else return std::numeric_limits::quiet_NaN(); } template inline T derivative(const expression& e, T& x, const T& h = T(0.00000001)) { const T x_init = x; const T _2h = T(2) * h; x = x_init + _2h; const T y0 = e.value(); x = x_init + h; const T y1 = e.value(); x = x_init - h; const T y2 = e.value(); x = x_init - _2h; const T y3 = e.value(); x = x_init; return (-y0 + T(8) * (y1 - y2) + y3) / (T(12) * h); } template inline T second_derivative(const expression& e, T& x, const T& h = T(0.00001)) { const T x_init = x; const T _2h = T(2) * h; const T y = e.value(); x = x_init + _2h; const T y0 = e.value(); x = x_init + h; const T y1 = e.value(); x = x_init - h; const T y2 = e.value(); x = x_init - _2h; const T y3 = e.value(); x = x_init; return (-y0 + T(16) * (y1 + y2) - T(30) * y - y3) / (T(12) * h * h); } template inline T third_derivative(const expression& e, T& x, const T& h = T(0.0001)) { const T x_init = x; const T _2h = T(2) * h; x = x_init + _2h; const T y0 = e.value(); x = x_init + h; const T y1 = e.value(); x = x_init - h; const T y2 = e.value(); x = x_init - _2h; const T y3 = e.value(); x = x_init; return (y0 + T(2) * (y2 - y1) - y3) / (T(2) * h * h * h); } template inline T derivative(const expression& e, const std::string& variable_name, const T& h = T(0.00000001)) { const symbol_table& sym_table = e.get_symbol_table(); if (!sym_table.valid()) { return std::numeric_limits::quiet_NaN(); } details::variable_node* var = sym_table.get_variable(variable_name); if (var) { T& x = var->ref(); T x_original = x; T result = derivative(e,x,h); x = x_original; return result; } else return std::numeric_limits::quiet_NaN(); } template inline T second_derivative(const expression& e, const std::string& variable_name, const T& h = T(0.00001)) { const symbol_table& sym_table = e.get_symbol_table(); if (!sym_table.valid()) { return std::numeric_limits::quiet_NaN(); } details::variable_node* var = sym_table.get_variable(variable_name); if (var) { T& x = var->ref(); const T x_original = x; const T result = second_derivative(e,x,h); x = x_original; return result; } else return std::numeric_limits::quiet_NaN(); } template inline T third_derivative(const expression& e, const std::string& variable_name, const T& h = T(0.0001)) { const symbol_table& sym_table = e.get_symbol_table(); if (!sym_table.valid()) { return std::numeric_limits::quiet_NaN(); } details::variable_node* var = sym_table.get_variable(variable_name); if (var) { T& x = var->ref(); const T x_original = x; const T result = third_derivative(e,x,h); x = x_original; return result; } else return std::numeric_limits::quiet_NaN(); } /* Note: The following 'compute' routines are simple helpers, for quickly setting up the required pieces of code in order to evaluate an expression. By virtue of how they operate there will be an overhead with regards to their setup and teardown and hence should not be used in time critical sections of code. Furthermore they only assume a small sub set of variables, no string variables or user defined functions. */ template inline bool compute(const std::string& expression_string, T& result) { // No variables symbol_table symbol_table; symbol_table.add_constants(); expression expression; expression.register_symbol_table(symbol_table); parser parser; if (parser.compile(expression_string,expression)) { result = expression.value(); return true; } else return false; } template inline bool compute(const std::string& expression_string, const T& x, T& result) { // Only 'x' static const std::string x_var("x"); symbol_table symbol_table; symbol_table.add_constants(); symbol_table.add_constant(x_var,x); expression expression; expression.register_symbol_table(symbol_table); parser parser; if (parser.compile(expression_string,expression)) { result = expression.value(); return true; } else return false; } template inline bool compute(const std::string& expression_string, const T&x, const T& y, T& result) { // Only 'x' and 'y' static const std::string x_var("x"); static const std::string y_var("y"); symbol_table symbol_table; symbol_table.add_constants(); symbol_table.add_constant(x_var,x); symbol_table.add_constant(y_var,y); expression expression; expression.register_symbol_table(symbol_table); parser parser; if (parser.compile(expression_string,expression)) { result = expression.value(); return true; } else return false; } template inline bool compute(const std::string& expression_string, const T& x, const T& y, const T& z, T& result) { // Only 'x', 'y' or 'z' static const std::string x_var("x"); static const std::string y_var("y"); static const std::string z_var("z"); symbol_table symbol_table; symbol_table.add_constants(); symbol_table.add_constant(x_var,x); symbol_table.add_constant(y_var,y); symbol_table.add_constant(z_var,z); expression expression; expression.register_symbol_table(symbol_table); parser parser; if (parser.compile(expression_string,expression)) { result = expression.value(); return true; } else return false; } template class polynomial : public ifunction { private: template struct poly_impl { }; template struct poly_impl { static inline T evaluate(const Type x, const Type c12, const Type c11, const Type c10, const Type c9, const Type c8, const Type c7, const Type c6, const Type c5, const Type c4, const Type c3, const Type c2, const Type c1, const Type c0) { // p(x) = c_12x^12 + c_11x^11 + c_10x^10 + c_9x^9 + c_8x^8 + c_7x^7 + c_6x^6 + c_5x^5 + c_4x^4 + c_3x^3 + c_2x^2 + c_1x^1 + c_0x^0 return ((((((((((((c12 * x + c11) * x + c10) * x + c9) * x + c8) * x + c7) * x + c6) * x + c5) * x + c4) * x + c3) * x + c2) * x + c1) * x + c0); } }; template struct poly_impl { static inline T evaluate(const Type x, const Type c11, const Type c10, const Type c9, const Type c8, const Type c7, const Type c6, const Type c5, const Type c4, const Type c3, const Type c2, const Type c1, const Type c0) { // p(x) = c_11x^11 + c_10x^10 + c_9x^9 + c_8x^8 + c_7x^7 + c_6x^6 + c_5x^5 + c_4x^4 + c_3x^3 + c_2x^2 + c_1x^1 + c_0x^0 return (((((((((((c11 * x + c10) * x + c9) * x + c8) * x + c7) * x + c6) * x + c5) * x + c4) * x + c3) * x + c2) * x + c1) * x + c0); } }; template struct poly_impl { static inline T evaluate(const Type x, const Type c10, const Type c9, const Type c8, const Type c7, const Type c6, const Type c5, const Type c4, const Type c3, const Type c2, const Type c1, const Type c0) { // p(x) = c_10x^10 + c_9x^9 + c_8x^8 + c_7x^7 + c_6x^6 + c_5x^5 + c_4x^4 + c_3x^3 + c_2x^2 + c_1x^1 + c_0x^0 return ((((((((((c10 * x + c9) * x + c8) * x + c7) * x + c6) * x + c5) * x + c4) * x + c3) * x + c2) * x + c1) * x + c0); } }; template struct poly_impl { static inline T evaluate(const Type x, const Type c9, const Type c8, const Type c7, const Type c6, const Type c5, const Type c4, const Type c3, const Type c2, const Type c1, const Type c0) { // p(x) = c_9x^9 + c_8x^8 + c_7x^7 + c_6x^6 + c_5x^5 + c_4x^4 + c_3x^3 + c_2x^2 + c_1x^1 + c_0x^0 return (((((((((c9 * x + c8) * x + c7) * x + c6) * x + c5) * x + c4) * x + c3) * x + c2) * x + c1) * x + c0); } }; template struct poly_impl { static inline T evaluate(const Type x, const Type c8, const Type c7, const Type c6, const Type c5, const Type c4, const Type c3, const Type c2, const Type c1, const Type c0) { // p(x) = c_8x^8 + c_7x^7 + c_6x^6 + c_5x^5 + c_4x^4 + c_3x^3 + c_2x^2 + c_1x^1 + c_0x^0 return ((((((((c8 * x + c7) * x + c6) * x + c5) * x + c4) * x + c3) * x + c2) * x + c1) * x + c0); } }; template struct poly_impl { static inline T evaluate(const Type x, const Type c7, const Type c6, const Type c5, const Type c4, const Type c3, const Type c2, const Type c1, const Type c0) { // p(x) = c_7x^7 + c_6x^6 + c_5x^5 + c_4x^4 + c_3x^3 + c_2x^2 + c_1x^1 + c_0x^0 return (((((((c7 * x + c6) * x + c5) * x + c4) * x + c3) * x + c2) * x + c1) * x + c0); } }; template struct poly_impl { static inline T evaluate(const Type x, const Type c6, const Type c5, const Type c4, const Type c3, const Type c2, const Type c1, const Type c0) { // p(x) = c_6x^6 + c_5x^5 + c_4x^4 + c_3x^3 + c_2x^2 + c_1x^1 + c_0x^0 return ((((((c6 * x + c5) * x + c4) * x + c3) * x + c2) * x + c1) * x + c0); } }; template struct poly_impl { static inline T evaluate(const Type x, const Type c5, const Type c4, const Type c3, const Type c2, const Type c1, const Type c0) { // p(x) = c_5x^5 + c_4x^4 + c_3x^3 + c_2x^2 + c_1x^1 + c_0x^0 return (((((c5 * x + c4) * x + c3) * x + c2) * x + c1) * x + c0); } }; template struct poly_impl { static inline T evaluate(const Type x, const Type c4, const Type c3, const Type c2, const Type c1, const Type c0) { // p(x) = c_4x^4 + c_3x^3 + c_2x^2 + c_1x^1 + c_0x^0 return ((((c4 * x + c3) * x + c2) * x + c1) * x + c0); } }; template struct poly_impl { static inline T evaluate(const Type x, const Type c3, const Type c2, const Type c1, const Type c0) { // p(x) = c_3x^3 + c_2x^2 + c_1x^1 + c_0x^0 return (((c3 * x + c2) * x + c1) * x + c0); } }; template struct poly_impl { static inline T evaluate(const Type x, const Type c2, const Type c1, const Type c0) { // p(x) = c_2x^2 + c_1x^1 + c_0x^0 return ((c2 * x + c1) * x + c0); } }; template struct poly_impl { static inline T evaluate(const Type x, const Type c1, const Type c0) { // p(x) = c_1x^1 + c_0x^0 return (c1 * x + c0); } }; public: using ifunction::operator(); polynomial() : ifunction((N+2 <= 20) ? (N + 2) : std::numeric_limits::max()) { disable_has_side_effects(*this); } virtual ~polynomial() {} #define poly_rtrn(NN) \ return (NN != N) ? std::numeric_limits::quiet_NaN() : inline virtual T operator() (const T& x, const T& c1, const T& c0) { poly_rtrn(1) poly_impl::evaluate(x,c1,c0); } inline virtual T operator() (const T& x, const T& c2, const T& c1, const T& c0) { poly_rtrn(2) poly_impl::evaluate(x,c2,c1,c0); } inline virtual T operator() (const T& x, const T& c3, const T& c2, const T& c1, const T& c0) { poly_rtrn(3) poly_impl::evaluate(x,c3,c2,c1,c0); } inline virtual T operator() (const T& x, const T& c4, const T& c3, const T& c2, const T& c1, const T& c0) { poly_rtrn(4) poly_impl::evaluate(x,c4,c3,c2,c1,c0); } inline virtual T operator() (const T& x, const T& c5, const T& c4, const T& c3, const T& c2, const T& c1, const T& c0) { poly_rtrn(5) poly_impl::evaluate(x,c5,c4,c3,c2,c1,c0); } inline virtual T operator() (const T& x, const T& c6, const T& c5, const T& c4, const T& c3, const T& c2, const T& c1, const T& c0) { poly_rtrn(6) poly_impl::evaluate(x,c6,c5,c4,c3,c2,c1,c0); } inline virtual T operator() (const T& x, const T& c7, const T& c6, const T& c5, const T& c4, const T& c3, const T& c2, const T& c1, const T& c0) { poly_rtrn(7) poly_impl::evaluate(x,c7,c6,c5,c4,c3,c2,c1,c0); } inline virtual T operator() (const T& x, const T& c8, const T& c7, const T& c6, const T& c5, const T& c4, const T& c3, const T& c2, const T& c1, const T& c0) { poly_rtrn(8) poly_impl::evaluate(x,c8,c7,c6,c5,c4,c3,c2,c1,c0); } inline virtual T operator() (const T& x, const T& c9, const T& c8, const T& c7, const T& c6, const T& c5, const T& c4, const T& c3, const T& c2, const T& c1, const T& c0) { poly_rtrn(9) poly_impl::evaluate(x,c9,c8,c7,c6,c5,c4,c3,c2,c1,c0); } inline virtual T operator() (const T& x, const T& c10, const T& c9, const T& c8, const T& c7, const T& c6, const T& c5, const T& c4, const T& c3, const T& c2, const T& c1, const T& c0) { poly_rtrn(10) poly_impl::evaluate(x,c10,c9,c8,c7,c6,c5,c4,c3,c2,c1,c0); } inline virtual T operator() (const T& x, const T& c11, const T& c10, const T& c9, const T& c8, const T& c7, const T& c6, const T& c5, const T& c4, const T& c3, const T& c2, const T& c1, const T& c0) { poly_rtrn(11) poly_impl::evaluate(x,c11,c10,c9,c8,c7,c6,c5,c4,c3,c2,c1,c0); } inline virtual T operator() (const T& x, const T& c12, const T& c11, const T& c10, const T& c9, const T& c8, const T& c7, const T& c6, const T& c5, const T& c4, const T& c3, const T& c2, const T& c1, const T& c0) { poly_rtrn(12) poly_impl::evaluate(x,c12,c11,c10,c9,c8,c7,c6,c5,c4,c3,c2,c1,c0); } #undef poly_rtrn inline virtual T operator() () { return std::numeric_limits::quiet_NaN(); } inline virtual T operator() (const T&) { return std::numeric_limits::quiet_NaN(); } inline virtual T operator() (const T&, const T&) { return std::numeric_limits::quiet_NaN(); } }; template class function_compositor { public: typedef exprtk::expression expression_t; typedef exprtk::symbol_table symbol_table_t; typedef exprtk::parser parser_t; typedef typename parser_t::settings_store settings_t; struct function { function() {} function(const std::string& n) : name_(n) {} function(const std::string& name, const std::string& expression) : name_(name), expression_(expression) {} function(const std::string& name, const std::string& expression, const std::string& v0) : name_(name), expression_(expression) { v_.push_back(v0); } function(const std::string& name, const std::string& expression, const std::string& v0, const std::string& v1) : name_(name), expression_(expression) { v_.push_back(v0); v_.push_back(v1); } function(const std::string& name, const std::string& expression, const std::string& v0, const std::string& v1, const std::string& v2) : name_(name), expression_(expression) { v_.push_back(v0); v_.push_back(v1); v_.push_back(v2); } function(const std::string& name, const std::string& expression, const std::string& v0, const std::string& v1, const std::string& v2, const std::string& v3) : name_(name), expression_(expression) { v_.push_back(v0); v_.push_back(v1); v_.push_back(v2); v_.push_back(v3); } function(const std::string& name, const std::string& expression, const std::string& v0, const std::string& v1, const std::string& v2, const std::string& v3, const std::string& v4) : name_(name), expression_(expression) { v_.push_back(v0); v_.push_back(v1); v_.push_back(v2); v_.push_back(v3); v_.push_back(v4); } inline function& name(const std::string& n) { name_ = n; return (*this); } inline function& expression(const std::string& e) { expression_ = e; return (*this); } inline function& var(const std::string& v) { v_.push_back(v); return (*this); } std::string name_; std::string expression_; std::deque v_; }; private: struct base_func : public exprtk::ifunction { typedef const T& type; typedef exprtk::ifunction function_t; typedef std::vector varref_t; typedef std::vector var_t; typedef std::pair lvarref_t; typedef std::vector lvr_vec_t; using exprtk::ifunction::operator(); base_func(const std::size_t& pc = 0) : exprtk::ifunction(pc), local_var_stack_size(0), stack_depth(0) { v.resize(pc); } virtual ~base_func() {} inline void update(const T& v0) { (*v[0]) = v0; } inline void update(const T& v0, const T& v1) { (*v[0]) = v0; (*v[1]) = v1; } inline void update(const T& v0, const T& v1, const T& v2) { (*v[0]) = v0; (*v[1]) = v1; (*v[2]) = v2; } inline void update(const T& v0, const T& v1, const T& v2, const T& v3) { (*v[0]) = v0; (*v[1]) = v1; (*v[2]) = v2; (*v[3]) = v3; } inline void update(const T& v0, const T& v1, const T& v2, const T& v3, const T& v4) { (*v[0]) = v0; (*v[1]) = v1; (*v[2]) = v2; (*v[3]) = v3; (*v[4]) = v4; } inline void update(const T& v0, const T& v1, const T& v2, const T& v3, const T& v4, const T& v5) { (*v[0]) = v0; (*v[1]) = v1; (*v[2]) = v2; (*v[3]) = v3; (*v[4]) = v4; (*v[5]) = v5; } inline function_t& setup(expression_t& expr) { expression = expr; typedef typename expression_t::control_block::local_data_list_t ldl_t; ldl_t ldl = expr.local_data_list(); std::vector index_list; for (std::size_t i = 0; i < ldl.size(); ++i) { if (ldl[i].size) { index_list.push_back(i); } } std::size_t input_param_count = 0; for (std::size_t i = 0; i < index_list.size(); ++i) { const std::size_t index = index_list[i]; if (i < (index_list.size() - v.size())) { lv.push_back( std::make_pair( reinterpret_cast(ldl[index].pointer), ldl[index].size)); local_var_stack_size += ldl[index].size; } else v[input_param_count++] = reinterpret_cast(ldl[index].pointer); } clear_stack(); return (*this); } inline void pre() { if (stack_depth++) { if (!v.empty()) { var_t var_stack(v.size(),T(0)); copy(v,var_stack); param_stack.push_back(var_stack); } if (!lv.empty()) { var_t local_var_stack(local_var_stack_size,T(0)); copy(lv,local_var_stack); local_stack.push_back(local_var_stack); } } } inline void post() { if (--stack_depth) { if (!v.empty()) { copy(param_stack.back(),v); param_stack.pop_back(); } if (!lv.empty()) { copy(local_stack.back(),lv); local_stack.pop_back(); } } } void copy(const varref_t& src_v, var_t& dest_v) { for (std::size_t i = 0; i < src_v.size(); ++i) { dest_v[i] = (*src_v[i]); } } void copy(const var_t& src_v, varref_t& dest_v) { for (std::size_t i = 0; i < src_v.size(); ++i) { (*dest_v[i]) = src_v[i]; } } void copy(const lvr_vec_t& src_v, var_t& dest_v) { typename var_t::iterator itr = dest_v.begin(); typedef typename std::iterator_traits::difference_type diff_t; for (std::size_t i = 0; i < src_v.size(); ++i) { lvarref_t vr = src_v[i]; if (1 == vr.second) *itr++ = (*vr.first); else { std::copy(vr.first, vr.first + vr.second, itr); itr += static_cast(vr.second); } } } void copy(const var_t& src_v, lvr_vec_t& dest_v) { typename var_t::const_iterator itr = src_v.begin(); typedef typename std::iterator_traits::difference_type diff_t; for (std::size_t i = 0; i < src_v.size(); ++i) { lvarref_t vr = dest_v[i]; if (1 == vr.second) (*vr.first) = *itr++; else { std::copy(itr, itr + static_cast(vr.second), vr.first); itr += static_cast(vr.second); } } } inline void clear_stack() { for (std::size_t i = 0; i < v.size(); ++i) { (*v[i]) = 0; } } inline virtual T value(expression_t& e) { return e.value(); } expression_t expression; varref_t v; lvr_vec_t lv; std::size_t local_var_stack_size; std::size_t stack_depth; std::deque param_stack; std::deque local_stack; }; typedef std::map funcparam_t; struct func_0param : public base_func { using exprtk::ifunction::operator(); func_0param() : base_func(0) {} inline T operator() () { return this->value(base_func::expression); } }; typedef const T& type; template struct scoped_bft { scoped_bft(BaseFuncType& bft) : bft_(bft) { bft_.pre (); } ~scoped_bft() { bft_.post(); } BaseFuncType& bft_; private: scoped_bft(scoped_bft&); scoped_bft& operator=(scoped_bft&); }; struct func_1param : public base_func { using exprtk::ifunction::operator(); func_1param() : base_func(1) {} inline T operator() (type v0) { scoped_bft sb(*this); base_func::update(v0); return this->value(base_func::expression); } }; struct func_2param : public base_func { using exprtk::ifunction::operator(); func_2param() : base_func(2) {} inline T operator() (type v0, type v1) { scoped_bft sb(*this); base_func::update(v0, v1); return this->value(base_func::expression); } }; struct func_3param : public base_func { using exprtk::ifunction::operator(); func_3param() : base_func(3) {} inline T operator() (type v0, type v1, type v2) { scoped_bft sb(*this); base_func::update(v0, v1, v2); return this->value(base_func::expression); } }; struct func_4param : public base_func { using exprtk::ifunction::operator(); func_4param() : base_func(4) {} inline T operator() (type v0, type v1, type v2, type v3) { scoped_bft sb(*this); base_func::update(v0, v1, v2, v3); return this->value(base_func::expression); } }; struct func_5param : public base_func { using exprtk::ifunction::operator(); func_5param() : base_func(5) {} inline T operator() (type v0, type v1, type v2, type v3, type v4) { scoped_bft sb(*this); base_func::update(v0, v1, v2, v3, v4); return this->value(base_func::expression); } }; struct func_6param : public base_func { using exprtk::ifunction::operator(); func_6param() : base_func(6) {} inline T operator() (type v0, type v1, type v2, type v3, type v4, type v5) { scoped_bft sb(*this); base_func::update(v0, v1, v2, v3, v4, v5); return this->value(base_func::expression); } }; static T return_value(expression_t& e) { typedef exprtk::results_context results_context_t; typedef typename results_context_t::type_store_t type_t; typedef typename type_t::scalar_view scalar_t; T result = e.value(); if (e.return_invoked()) { // Due to the post compilation checks, it can be safely // assumed that there will be at least one parameter // and that the first parameter will always be scalar. return scalar_t(e.results()[0])(); } return result; } #define def_fp_retval(N) \ struct func_##N##param_retval : public func_##N##param \ { \ inline T value(expression_t& e) \ { \ return return_value(e); \ } \ }; \ def_fp_retval(0) def_fp_retval(1) def_fp_retval(2) def_fp_retval(3) def_fp_retval(4) def_fp_retval(5) def_fp_retval(6) template class Sequence> inline bool add(const std::string& name, const std::string& expression, const Sequence& var_list, const bool override = false) { const typename std::map::iterator itr = expr_map_.find(name); if (expr_map_.end() != itr) { if (!override) { exprtk_debug(("Compositor error(add): function '%s' already defined\n", name.c_str())); return false; } remove(name, var_list.size()); } if (compile_expression(name,expression,var_list)) { const std::size_t n = var_list.size(); fp_map_[n][name]->setup(expr_map_[name]); return true; } else { exprtk_debug(("Compositor error(add): Failed to compile function '%s'\n", name.c_str())); return false; } } public: function_compositor() : parser_(settings_t::compile_all_opts + settings_t::e_disable_zero_return), fp_map_(7) {} function_compositor(const symbol_table_t& st) : symbol_table_(st), parser_(settings_t::compile_all_opts + settings_t::e_disable_zero_return), fp_map_(7) {} ~function_compositor() { clear(); } inline symbol_table_t& symbol_table() { return symbol_table_; } inline void add_auxiliary_symtab(symbol_table_t& symtab) { auxiliary_symtab_list_.push_back(&symtab); } void clear() { symbol_table_.clear(); expr_map_ .clear(); for (std::size_t i = 0; i < fp_map_.size(); ++i) { typename funcparam_t::iterator itr = fp_map_[i].begin(); typename funcparam_t::iterator end = fp_map_[i].end (); while (itr != end) { delete itr->second; ++itr; } fp_map_[i].clear(); } } inline bool add(const function& f, const bool override = false) { return add(f.name_, f.expression_, f.v_,override); } private: template class Sequence> bool compile_expression(const std::string& name, const std::string& expression, const Sequence& input_var_list, bool return_present = false) { expression_t compiled_expression; symbol_table_t local_symbol_table; local_symbol_table.load_from(symbol_table_); local_symbol_table.add_constants(); if (!valid(name,input_var_list.size())) return false; if (!forward(name, input_var_list.size(), local_symbol_table, return_present)) return false; compiled_expression.register_symbol_table(local_symbol_table); for (std::size_t i = 0; i < auxiliary_symtab_list_.size(); ++i) { compiled_expression.register_symbol_table((*auxiliary_symtab_list_[i])); } std::string mod_expression; for (std::size_t i = 0; i < input_var_list.size(); ++i) { mod_expression += " var " + input_var_list[i] + "{};\n"; } if ( ('{' == details::front(expression)) && ('}' == details::back (expression)) ) mod_expression += "~" + expression + ";"; else mod_expression += "~{" + expression + "};"; if (!parser_.compile(mod_expression,compiled_expression)) { exprtk_debug(("Compositor Error: %s\n",parser_.error().c_str())); exprtk_debug(("Compositor modified expression: \n%s\n",mod_expression.c_str())); remove(name,input_var_list.size()); return false; } if (!return_present && parser_.dec().return_present()) { remove(name,input_var_list.size()); return compile_expression(name, expression, input_var_list, true); } // Make sure every return point has a scalar as its first parameter if (parser_.dec().return_present()) { typedef std::vector str_list_t; str_list_t ret_param_list = parser_.dec().return_param_type_list(); for (std::size_t i = 0; i < ret_param_list.size(); ++i) { const std::string& params = ret_param_list[i]; if (params.empty() || ('T' != params[0])) { exprtk_debug(("Compositor Error: Return statement in function '%s' is invalid\n", name.c_str())); remove(name,input_var_list.size()); return false; } } } expr_map_[name] = compiled_expression; exprtk::ifunction& ifunc = (*(fp_map_[input_var_list.size()])[name]); if (symbol_table_.add_function(name,ifunc)) return true; else { exprtk_debug(("Compositor Error: Failed to add function '%s' to symbol table\n", name.c_str())); return false; } } inline bool symbol_used(const std::string& symbol) const { return ( symbol_table_.is_variable (symbol) || symbol_table_.is_stringvar (symbol) || symbol_table_.is_function (symbol) || symbol_table_.is_vector (symbol) || symbol_table_.is_vararg_function(symbol) ); } inline bool valid(const std::string& name, const std::size_t& arg_count) const { if (arg_count > 6) return false; else if (symbol_used(name)) return false; else if (fp_map_[arg_count].end() != fp_map_[arg_count].find(name)) return false; else return true; } inline bool forward(const std::string& name, const std::size_t& arg_count, symbol_table_t& sym_table, const bool ret_present = false) { switch (arg_count) { #define case_stmt(N) \ case N : (fp_map_[arg_count])[name] = \ (!ret_present) ? static_cast \ (new func_##N##param) : \ static_cast \ (new func_##N##param_retval) ; \ break; \ case_stmt(0) case_stmt(1) case_stmt(2) case_stmt(3) case_stmt(4) case_stmt(5) case_stmt(6) #undef case_stmt } exprtk::ifunction& ifunc = (*(fp_map_[arg_count])[name]); return sym_table.add_function(name,ifunc); } inline void remove(const std::string& name, const std::size_t& arg_count) { if (arg_count > 6) return; const typename std::map::iterator em_itr = expr_map_.find(name); if (expr_map_.end() != em_itr) { expr_map_.erase(em_itr); } const typename funcparam_t::iterator fp_itr = fp_map_[arg_count].find(name); if (fp_map_[arg_count].end() != fp_itr) { delete fp_itr->second; fp_map_[arg_count].erase(fp_itr); } symbol_table_.remove_function(name); } private: symbol_table_t symbol_table_; parser_t parser_; std::map expr_map_; std::vector fp_map_; std::vector auxiliary_symtab_list_; }; template inline bool pgo_primer() { static const std::string expression_list[] = { "(y + x)", "2 * (y + x)", "(2 * y + 2 * x)", "(y + x / y) * (x - y / x)", "x / ((x + y) * (x - y)) / y", "1 - ((x * y) + (y / x)) - 3", "sin(2 * x) + cos(pi / y)", "1 - sin(2 * x) + cos(pi / y)", "sqrt(1 - sin(2 * x) + cos(pi / y) / 3)", "(x^2 / sin(2 * pi / y)) -x / 2", "x + (cos(y - sin(2 / x * pi)) - sin(x - cos(2 * y / pi))) - y", "clamp(-1.0, sin(2 * pi * x) + cos(y / 2 * pi), +1.0)", "iclamp(-1.0, sin(2 * pi * x) + cos(y / 2 * pi), +1.0)", "max(3.33, min(sqrt(1 - sin(2 * x) + cos(pi / y) / 3), 1.11))", "if(avg(x,y) <= x + y, x - y, x * y) + 2 * pi / x", "1.1x^1 + 2.2y^2 - 3.3x^3 + 4.4y^4 - 5.5x^5 + 6.6y^6 - 7.7x^27 + 8.8y^55", "(yy + xx)", "2 * (yy + xx)", "(2 * yy + 2 * xx)", "(yy + xx / yy) * (xx - yy / xx)", "xx / ((xx + yy) * (xx - yy)) / yy", "1 - ((xx * yy) + (yy / xx)) - 3", "sin(2 * xx) + cos(pi / yy)", "1 - sin(2 * xx) + cos(pi / yy)", "sqrt(1 - sin(2 * xx) + cos(pi / yy) / 3)", "(xx^2 / sin(2 * pi / yy)) -xx / 2", "xx + (cos(yy - sin(2 / xx * pi)) - sin(xx - cos(2 * yy / pi))) - yy", "clamp(-1.0, sin(2 * pi * xx) + cos(yy / 2 * pi), +1.0)", "max(3.33, min(sqrt(1 - sin(2 * xx) + cos(pi / yy) / 3), 1.11))", "if(avg(xx,yy) <= xx + yy, xx - yy, xx * yy) + 2 * pi / xx", "1.1xx^1 + 2.2yy^2 - 3.3xx^3 + 4.4yy^4 - 5.5xx^5 + 6.6yy^6 - 7.7xx^27 + 8.8yy^55", "(1.1*(2.2*(3.3*(4.4*(5.5*(6.6*(7.7*(8.8*(9.9+x)))))))))", "(((((((((x+9.9)*8.8)*7.7)*6.6)*5.5)*4.4)*3.3)*2.2)*1.1)", "(x + y) * z", "x + (y * z)", "(x + y) * 7", "x + (y * 7)", "(x + 7) * y", "x + (7 * y)", "(7 + x) * y", "7 + (x * y)", "(2 + x) * 3", "2 + (x * 3)", "(2 + 3) * x", "2 + (3 * x)", "(x + 2) * 3", "x + (2 * 3)", "(x + y) * (z / w)", "(x + y) * (z / 7)", "(x + y) * (7 / z)", "(x + 7) * (y / z)", "(7 + x) * (y / z)", "(2 + x) * (y / z)", "(x + 2) * (y / 3)", "(2 + x) * (y / 3)", "(x + 2) * (3 / y)", "x + (y * (z / w))", "x + (y * (z / 7))", "x + (y * (7 / z))", "x + (7 * (y / z))", "7 + (x * (y / z))", "2 + (x * (3 / y))", "x + (2 * (y / 4))", "2 + (x * (y / 3))", "x + (2 * (3 / y))", "x + ((y * z) / w)", "x + ((y * z) / 7)", "x + ((y * 7) / z)", "x + ((7 * y) / z)", "7 + ((y * z) / w)", "2 + ((x * 3) / y)", "x + ((2 * y) / 3)", "2 + ((x * y) / 3)", "x + ((2 * 3) / y)", "(((x + y) * z) / w)", "(((x + y) * z) / 7)", "(((x + y) * 7) / z)", "(((x + 7) * y) / z)", "(((7 + x) * y) / z)", "(((2 + x) * 3) / y)", "(((x + 2) * y) / 3)", "(((2 + x) * y) / 3)", "(((x + 2) * 3) / y)", "((x + (y * z)) / w)", "((x + (y * z)) / 7)", "((x + (y * 7)) / y)", "((x + (7 * y)) / z)", "((7 + (x * y)) / z)", "((2 + (x * 3)) / y)", "((x + (2 * y)) / 3)", "((2 + (x * y)) / 3)", "((x + (2 * 3)) / y)", "(xx + yy) * zz", "xx + (yy * zz)", "(xx + yy) * 7", "xx + (yy * 7)", "(xx + 7) * yy", "xx + (7 * yy)", "(7 + xx) * yy", "7 + (xx * yy)", "(2 + x) * 3", "2 + (x * 3)", "(2 + 3) * x", "2 + (3 * x)", "(x + 2) * 3", "x + (2 * 3)", "(xx + yy) * (zz / ww)", "(xx + yy) * (zz / 7)", "(xx + yy) * (7 / zz)", "(xx + 7) * (yy / zz)", "(7 + xx) * (yy / zz)", "(2 + xx) * (yy / zz)", "(xx + 2) * (yy / 3)", "(2 + xx) * (yy / 3)", "(xx + 2) * (3 / yy)", "xx + (yy * (zz / ww))", "xx + (yy * (zz / 7))", "xx + (yy * (7 / zz))", "xx + (7 * (yy / zz))", "7 + (xx * (yy / zz))", "2 + (xx * (3 / yy))", "xx + (2 * (yy / 4))", "2 + (xx * (yy / 3))", "xx + (2 * (3 / yy))", "xx + ((yy * zz) / ww)", "xx + ((yy * zz) / 7)", "xx + ((yy * 7) / zz)", "xx + ((7 * yy) / zz)", "7 + ((yy * zz) / ww)", "2 + ((xx * 3) / yy)", "xx + ((2 * yy) / 3)", "2 + ((xx * yy) / 3)", "xx + ((2 * 3) / yy)", "(((xx + yy) * zz) / ww)", "(((xx + yy) * zz) / 7)", "(((xx + yy) * 7) / zz)", "(((xx + 7) * yy) / zz)", "(((7 + xx) * yy) / zz)", "(((2 + xx) * 3) / yy)", "(((xx + 2) * yy) / 3)", "(((2 + xx) * yy) / 3)", "(((xx + 2) * 3) / yy)", "((xx + (yy * zz)) / ww)", "((xx + (yy * zz)) / 7)", "((xx + (yy * 7)) / yy)", "((xx + (7 * yy)) / zz)", "((7 + (xx * yy)) / zz)", "((2 + (xx * 3)) / yy)", "((xx + (2 * yy)) / 3)", "((2 + (xx * yy)) / 3)", "((xx + (2 * 3)) / yy)" }; static const std::size_t expression_list_size = sizeof(expression_list) / sizeof(std::string); T x = T(0); T y = T(0); T z = T(0); T w = T(0); T xx = T(0); T yy = T(0); T zz = T(0); T ww = T(0); exprtk::symbol_table symbol_table; symbol_table.add_constants(); symbol_table.add_variable( "x", x); symbol_table.add_variable( "y", y); symbol_table.add_variable( "z", z); symbol_table.add_variable( "w", w); symbol_table.add_variable("xx",xx); symbol_table.add_variable("yy",yy); symbol_table.add_variable("zz",zz); symbol_table.add_variable("ww",ww); typedef typename std::deque > expr_list_t; expr_list_t expr_list; const std::size_t rounds = 50; { for (std::size_t r = 0; r < rounds; ++r) { expr_list.clear(); exprtk::parser parser; for (std::size_t i = 0; i < expression_list_size; ++i) { exprtk::expression expression; expression.register_symbol_table(symbol_table); if (!parser.compile(expression_list[i],expression)) { return false; } expr_list.push_back(expression); } } } struct execute { static inline T process(T& x, T& y, expression& expression) { static const T lower_bound = T(-20); static const T upper_bound = T(+20); T delta = T(0.1); T total = T(0); for (x = lower_bound; x <= upper_bound; x += delta) { for (y = lower_bound; y <= upper_bound; y += delta) { total += expression.value(); } } return total; } }; for (std::size_t i = 0; i < expr_list.size(); ++i) { execute::process( x, y, expr_list[i]); execute::process(xx, yy, expr_list[i]); } { for (std::size_t i = 0; i < 10000; ++i) { T v = T(123.456 + i); if (details::is_true(details::numeric::nequal(details::numeric::fast_exp::result(v),details::numeric::pow(v,T( 1))))) return false; #define else_stmt(N) \ else if (details::is_true(details::numeric::nequal(details::numeric::fast_exp::result(v),details::numeric::pow(v,T(N))))) \ return false; \ else_stmt( 2) else_stmt( 3) else_stmt( 4) else_stmt( 5) else_stmt( 6) else_stmt( 7) else_stmt( 8) else_stmt( 9) else_stmt(10) else_stmt(11) else_stmt(12) else_stmt(13) else_stmt(14) else_stmt(15) else_stmt(16) else_stmt(17) else_stmt(18) else_stmt(19) else_stmt(20) else_stmt(21) else_stmt(22) else_stmt(23) else_stmt(24) else_stmt(25) else_stmt(26) else_stmt(27) else_stmt(28) else_stmt(29) else_stmt(30) else_stmt(31) else_stmt(32) else_stmt(33) else_stmt(34) else_stmt(35) else_stmt(36) else_stmt(37) else_stmt(38) else_stmt(39) else_stmt(40) else_stmt(41) else_stmt(42) else_stmt(43) else_stmt(44) else_stmt(45) else_stmt(46) else_stmt(47) else_stmt(48) else_stmt(49) else_stmt(50) else_stmt(51) else_stmt(52) else_stmt(53) else_stmt(54) else_stmt(55) else_stmt(56) else_stmt(57) else_stmt(58) else_stmt(59) else_stmt(60) else_stmt(61) } } return true; } } #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) # ifndef NOMINMAX # define NOMINMAX # endif # ifndef WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN # endif # include # include #else # include # include # include #endif namespace exprtk { class timer { public: #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) timer() : in_use_(false) { QueryPerformanceFrequency(&clock_frequency_); } inline void start() { in_use_ = true; QueryPerformanceCounter(&start_time_); } inline void stop() { QueryPerformanceCounter(&stop_time_); in_use_ = false; } inline double time() const { return (1.0 * (stop_time_.QuadPart - start_time_.QuadPart)) / (1.0 * clock_frequency_.QuadPart); } #else timer() : in_use_(false) { start_time_.tv_sec = 0; start_time_.tv_usec = 0; stop_time_.tv_sec = 0; stop_time_.tv_usec = 0; } inline void start() { in_use_ = true; gettimeofday(&start_time_,0); } inline void stop() { gettimeofday(&stop_time_, 0); in_use_ = false; } inline unsigned long long int usec_time() const { if (!in_use_) { if (stop_time_.tv_sec >= start_time_.tv_sec) { return 1000000LLU * static_cast(stop_time_.tv_sec - start_time_.tv_sec ) + static_cast(stop_time_.tv_usec - start_time_.tv_usec) ; } else return std::numeric_limits::max(); } else return std::numeric_limits::max(); } inline double time() const { return usec_time() * 0.000001; } #endif inline bool in_use() const { return in_use_; } private: bool in_use_; #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) LARGE_INTEGER start_time_; LARGE_INTEGER stop_time_; LARGE_INTEGER clock_frequency_; #else struct timeval start_time_; struct timeval stop_time_; #endif }; } // namespace exprtk #ifndef exprtk_disable_rtl_io namespace exprtk { namespace rtl { namespace io { namespace details { template inline void print_type(const std::string& fmt, const T v, exprtk::details::numeric::details::real_type_tag) { printf(fmt.c_str(),v); } template struct print_impl { typedef typename igeneric_function::generic_type generic_type; typedef typename igeneric_function::parameter_list_t parameter_list_t; typedef typename generic_type::scalar_view scalar_t; typedef typename generic_type::vector_view vector_t; typedef typename generic_type::string_view string_t; typedef typename exprtk::details::numeric::details::number_type::type num_type; static void process(const std::string& scalar_format, parameter_list_t parameters) { for (std::size_t i = 0; i < parameters.size(); ++i) { generic_type& gt = parameters[i]; switch (gt.type) { case generic_type::e_scalar : print(scalar_format,scalar_t(gt)); break; case generic_type::e_vector : print(scalar_format,vector_t(gt)); break; case generic_type::e_string : print(string_t(gt)); break; default : continue; } } } static inline void print(const std::string& scalar_format, const scalar_t& s) { print_type(scalar_format,s(),num_type()); } static inline void print(const std::string& scalar_format, const vector_t& v) { for (std::size_t i = 0; i < v.size(); ++i) { print_type(scalar_format,v[i],num_type()); if ((i + 1) < v.size()) printf(" "); } } static inline void print(const string_t& s) { printf("%s",to_str(s).c_str()); } }; } // namespace exprtk::rtl::io::details template struct print : public exprtk::igeneric_function { typedef typename igeneric_function::parameter_list_t parameter_list_t; using exprtk::igeneric_function::operator(); print(const std::string& scalar_format = "%10.5f") : scalar_format_(scalar_format) { exprtk::enable_zero_parameters(*this); } inline T operator() (parameter_list_t parameters) { details::print_impl::process(scalar_format_,parameters); return T(0); } std::string scalar_format_; }; template struct println : public exprtk::igeneric_function { typedef typename igeneric_function::parameter_list_t parameter_list_t; using exprtk::igeneric_function::operator(); println(const std::string& scalar_format = "%10.5f") : scalar_format_(scalar_format) { exprtk::enable_zero_parameters(*this); } inline T operator() (parameter_list_t parameters) { details::print_impl::process(scalar_format_,parameters); printf("\n"); return T(0); } std::string scalar_format_; }; template struct package { print p; println pl; bool register_package(exprtk::symbol_table& symtab) { #define exprtk_register_function(FunctionName,FunctionType) \ if (!symtab.add_function(FunctionName,FunctionType)) \ { \ exprtk_debug(( \ "exprtk::rtl::io::register_package - Failed to add function: %s\n", \ FunctionName)); \ return false; \ } \ exprtk_register_function("print" , p) exprtk_register_function("println" ,pl) #undef exprtk_register_function return true; } }; } // namespace exprtk::rtl::io } // namespace exprtk::rtl } // namespace exprtk #endif #ifndef exprtk_disable_rtl_io_file #include namespace exprtk { namespace rtl { namespace io { namespace file { namespace details { enum file_mode { e_error = 0, e_read = 1, e_write = 2, e_rdwrt = 4 }; struct file_descriptor { file_descriptor(const std::string& fname, const std::string& access) : stream_ptr(0), mode(get_file_mode(access)), file_name(fname) {} void* stream_ptr; file_mode mode; std::string file_name; bool open() { if (e_read == mode) { std::ifstream* stream = new std::ifstream(file_name.c_str(),std::ios::binary); if (!(*stream)) { file_name.clear(); delete stream; return false; } else stream_ptr = stream; return true; } else if (e_write == mode) { std::ofstream* stream = new std::ofstream(file_name.c_str(),std::ios::binary); if (!(*stream)) { file_name.clear(); delete stream; return false; } else stream_ptr = stream; return true; } else if (e_rdwrt == mode) { std::fstream* stream = new std::fstream(file_name.c_str(),std::ios::binary); if (!(*stream)) { file_name.clear(); delete stream; return false; } else stream_ptr = stream; return true; } else return false; } template void close(Ptr& p) { Stream* stream = reinterpret_cast(p); stream->close(); delete stream; p = reinterpret_cast(0); } bool close() { switch (mode) { case e_read : close(stream_ptr); break; case e_write : close(stream_ptr); break; case e_rdwrt : close (stream_ptr); break; default : return false; } return true; } template bool write(const View& view, const std::size_t amount, const std::size_t offset = 0) { switch (mode) { case e_write : reinterpret_cast(stream_ptr)-> write(reinterpret_cast(view.begin() + offset), amount * sizeof(typename View::value_t)); break; case e_rdwrt : reinterpret_cast(stream_ptr)-> write(reinterpret_cast(view.begin() + offset) , amount * sizeof(typename View::value_t)); break; default : return false; } return true; } template bool read(View& view, const std::size_t amount, const std::size_t offset = 0) { switch (mode) { case e_read : reinterpret_cast(stream_ptr)-> read(reinterpret_cast(view.begin() + offset), amount * sizeof(typename View::value_t)); break; case e_rdwrt : reinterpret_cast(stream_ptr)-> read(reinterpret_cast(view.begin() + offset) , amount * sizeof(typename View::value_t)); break; default : return false; } return true; } bool getline(std::string& s) { switch (mode) { case e_read : return (!!std::getline(*reinterpret_cast(stream_ptr),s)); case e_rdwrt : return (!!std::getline(*reinterpret_cast(stream_ptr),s)); default : return false; } } bool eof() { switch (mode) { case e_read : return reinterpret_cast(stream_ptr)->eof(); case e_write : return reinterpret_cast(stream_ptr)->eof(); case e_rdwrt : return reinterpret_cast(stream_ptr)->eof(); default : return true; } } file_mode get_file_mode(const std::string& access) { if (access.empty() || access.size() > 2) return e_error; std::size_t w_cnt = 0; std::size_t r_cnt = 0; for (std::size_t i = 0; i < access.size(); ++i) { switch (std::tolower(access[i])) { case 'r' : r_cnt++; break; case 'w' : w_cnt++; break; default : return e_error; } } if ((0 == r_cnt) && (0 == w_cnt)) return e_error; else if ((r_cnt > 1) || (w_cnt > 1)) return e_error; else if ((1 == r_cnt) && (1 == w_cnt)) return e_rdwrt; else if (1 == r_cnt) return e_read; else return e_write; } }; template file_descriptor* make_handle(T v) { file_descriptor* fd = reinterpret_cast(0); std::memcpy(reinterpret_cast(&fd), reinterpret_cast(&v), sizeof(fd)); return fd; } template void perform_check() { #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable: 4127) #endif if (sizeof(T) < sizeof(void*)) { throw std::runtime_error("exprtk::rtl::io::file - Error - pointer size larger than holder."); } #ifdef _MSC_VER #pragma warning(pop) #endif } } // namespace exprtk::rtl::io::file::details template class open : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::string_view string_t; using exprtk::igeneric_function::operator(); open() : exprtk::igeneric_function("S|SS") { details::perform_check(); } inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { std::string file_name; std::string access; file_name = to_str(string_t(parameters[0])); if (file_name.empty()) return T(0); if (0 == ps_index) access = "r"; else if (0 == string_t(parameters[1]).size()) return T(0); else access = to_str(string_t(parameters[1])); details::file_descriptor* fd = new details::file_descriptor(file_name,access); if (fd->open()) { T t = T(0); std::memcpy(reinterpret_cast(&t ), reinterpret_cast(&fd), sizeof(fd)); return t; } else { delete fd; return T(0); } } }; template struct close : public exprtk::ifunction { using exprtk::ifunction::operator(); close() : exprtk::ifunction(1) { details::perform_check(); } inline T operator() (const T& v) { details::file_descriptor* fd = details::make_handle(v); if (!fd->close()) return T(0); delete fd; return T(1); } }; template class write : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::string_view string_t; typedef typename generic_type::scalar_view scalar_t; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); write() : igfun_t("TS|TST|TV|TVT") { details::perform_check(); } inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { details::file_descriptor* fd = details::make_handle(scalar_t(parameters[0])()); std::size_t amount = 0; switch (ps_index) { case 0 : { const string_t buffer(parameters[1]); amount = buffer.size(); return T(fd->write(buffer,amount) ? 1 : 0); } case 1 : { const string_t buffer(parameters[1]); amount = std::min(buffer.size(), static_cast(scalar_t(parameters[2])())); return T(fd->write(buffer,amount) ? 1 : 0); } case 2 : { const vector_t vec(parameters[1]); amount = vec.size(); return T(fd->write(vec,amount) ? 1 : 0); } case 3 : { const vector_t vec(parameters[1]); amount = std::min(vec.size(), static_cast(scalar_t(parameters[2])())); return T(fd->write(vec,amount) ? 1 : 0); } } return T(0); } }; template class read : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::string_view string_t; typedef typename generic_type::scalar_view scalar_t; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); read() : igfun_t("TS|TST|TV|TVT") { details::perform_check(); } inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { details::file_descriptor* fd = details::make_handle(scalar_t(parameters[0])()); std::size_t amount = 0; switch (ps_index) { case 0 : { string_t buffer(parameters[1]); amount = buffer.size(); return T(fd->read(buffer,amount) ? 1 : 0); } case 1 : { string_t buffer(parameters[1]); amount = std::min(buffer.size(), static_cast(scalar_t(parameters[2])())); return T(fd->read(buffer,amount) ? 1 : 0); } case 2 : { vector_t vec(parameters[1]); amount = vec.size(); return T(fd->read(vec,amount) ? 1 : 0); } case 3 : { vector_t vec(parameters[1]); amount = std::min(vec.size(), static_cast(scalar_t(parameters[2])())); return T(fd->read(vec,amount) ? 1 : 0); } } return T(0); } }; template class getline : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::string_view string_t; typedef typename generic_type::scalar_view scalar_t; using exprtk::igeneric_function::operator(); getline() : igfun_t("T",igfun_t::e_rtrn_string) { details::perform_check(); } inline T operator() (std::string& result, parameter_list_t parameters) { details::file_descriptor* fd = details::make_handle(scalar_t(parameters[0])()); return T(fd->getline(result) ? 1 : 0); } }; template struct eof : public exprtk::ifunction { using exprtk::ifunction::operator(); eof() : exprtk::ifunction(1) { details::perform_check(); } inline T operator() (const T& v) { details::file_descriptor* fd = details::make_handle(v); return (fd->eof() ? T(1) : T(0)); } }; template struct package { open o; close c; write w; read r; getline g; eof e; bool register_package(exprtk::symbol_table& symtab) { #define exprtk_register_function(FunctionName,FunctionType) \ if (!symtab.add_function(FunctionName,FunctionType)) \ { \ exprtk_debug(( \ "exprtk::rtl::io::file::register_package - Failed to add function: %s\n", \ FunctionName)); \ return false; \ } \ exprtk_register_function("open" ,o) exprtk_register_function("close" ,c) exprtk_register_function("write" ,w) exprtk_register_function("read" ,r) exprtk_register_function("getline",g) exprtk_register_function("eof" ,e) #undef exprtk_register_function return true; } }; } // namespace exprtk::rtl::io::file } // namespace exprtk::rtl::io } // namespace exprtk::rtl } // namespace exprtk #endif #ifndef exprtk_disable_rtl_vecops namespace exprtk { namespace rtl { namespace vecops { namespace helper { template inline bool invalid_range(const Vector& v, const std::size_t r0, const std::size_t r1) { if (r0 > (v.size() - 1)) return true; else if (r1 > (v.size() - 1)) return true; else if (r1 < r0) return true; else return false; } template struct load_vector_range { typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::scalar_view scalar_t; typedef typename generic_type::vector_view vector_t; static inline bool process(parameter_list_t& parameters, std::size_t& r0, std::size_t& r1, const std::size_t& r0_prmidx, const std::size_t& r1_prmidx, const std::size_t vec_idx = 0) { if (r0_prmidx >= parameters.size()) return false; if (r1_prmidx >= parameters.size()) return false; if (!scalar_t(parameters[r0_prmidx]).to_uint(r0)) return false; if (!scalar_t(parameters[r1_prmidx]).to_uint(r1)) return false; return !invalid_range(vector_t(parameters[vec_idx]), r0, r1); } }; } namespace details { template inline void kahan_sum(T& sum, T& error, T v) { T x = v - error; T y = sum + x; error = (y - sum) - x; sum = y; } } // namespace exprtk::rtl::details template class all_true : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); all_true() : exprtk::igeneric_function("V|VTT") /* Overloads: 0. V - vector 1. VTT - vector, r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { const vector_t vec(parameters[0]); std::size_t r0 = 0; std::size_t r1 = vec.size() - 1; if ( (1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 1, 2, 0) ) return std::numeric_limits::quiet_NaN(); for (std::size_t i = r0; i <= r1; ++i) { if (vec[i] == T(0)) { return T(0); } } return T(1); } }; template class all_false : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); all_false() : exprtk::igeneric_function("V|VTT") /* Overloads: 0. V - vector 1. VTT - vector, r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { const vector_t vec(parameters[0]); std::size_t r0 = 0; std::size_t r1 = vec.size() - 1; if ( (1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 1, 2, 0) ) return std::numeric_limits::quiet_NaN(); for (std::size_t i = r0; i <= r1; ++i) { if (vec[i] != T(0)) { return T(0); } } return T(1); } }; template class any_true : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); any_true() : exprtk::igeneric_function("V|VTT") /* Overloads: 0. V - vector 1. VTT - vector, r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { const vector_t vec(parameters[0]); std::size_t r0 = 0; std::size_t r1 = vec.size() - 1; if ( (1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 1, 2, 0) ) return std::numeric_limits::quiet_NaN(); for (std::size_t i = r0; i <= r1; ++i) { if (vec[i] != T(0)) { return T(1); } } return T(0); } }; template class any_false : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); any_false() : exprtk::igeneric_function("V|VTT") /* Overloads: 0. V - vector 1. VTT - vector, r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { const vector_t vec(parameters[0]); std::size_t r0 = 0; std::size_t r1 = vec.size() - 1; if ( (1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 1, 2, 0) ) return std::numeric_limits::quiet_NaN(); for (std::size_t i = r0; i <= r1; ++i) { if (vec[i] == T(0)) { return T(1); } } return T(0); } }; template class count : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); count() : exprtk::igeneric_function("V|VTT") /* Overloads: 0. V - vector 1. VTT - vector, r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { const vector_t vec(parameters[0]); std::size_t r0 = 0; std::size_t r1 = vec.size() - 1; if ( (1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 1, 2, 0) ) return std::numeric_limits::quiet_NaN(); std::size_t cnt = 0; for (std::size_t i = r0; i <= r1; ++i) { if (vec[i] != T(0)) ++cnt; } return T(cnt); } }; template class copy : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::scalar_view scalar_t; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); copy() : exprtk::igeneric_function("VV|VTTVTT") /* Overloads: 0. VV - x(vector), y(vector) 1. VTTVTT - x(vector), xr0, xr1, y(vector), yr0, yr1, */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { const vector_t x(parameters[0]); vector_t y(parameters[(0 == ps_index) ? 1 : 3]); std::size_t xr0 = 0; std::size_t xr1 = x.size() - 1; std::size_t yr0 = 0; std::size_t yr1 = y.size() - 1; if (1 == ps_index) { if ( !helper::load_vector_range::process(parameters, xr0, xr1, 1, 2, 0) || !helper::load_vector_range::process(parameters, yr0, yr1, 4, 5, 3) ) return T(0); } const std::size_t n = std::min(xr1 - xr0 + 1, yr1 - yr0 + 1); std::copy(x.begin() + xr0, x.begin() + xr0 + n, y.begin() + yr0); return T(n); } }; template class rol : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::scalar_view scalar_t; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); rol() : exprtk::igeneric_function("VT|VTTT") /* Overloads: 0. VT - vector, N 1. VTTT - vector, N, r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { vector_t vec(parameters[0]); std::size_t n = 0; std::size_t r0 = 0; std::size_t r1 = vec.size() - 1; if (!scalar_t(parameters[1]).to_uint(n)) return T(0); if ( (1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 2, 3, 0) ) return T(0); std::size_t dist = r1 - r0 + 1; std::size_t shift = n % dist; std::rotate(vec.begin() + r0, vec.begin() + r0 + shift, vec.begin() + r1 + 1); return T(1); } }; template class ror : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::scalar_view scalar_t; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); ror() : exprtk::igeneric_function("VT|VTTT") /* Overloads: 0. VT - vector, N 1. VTTT - vector, N, r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { vector_t vec(parameters[0]); std::size_t n = 0; std::size_t r0 = 0; std::size_t r1 = vec.size() - 1; if (!scalar_t(parameters[1]).to_uint(n)) return T(0); if ( (1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 2, 3, 0) ) return T(0); std::size_t dist = r1 - r0 + 1; std::size_t shift = (dist - (n % dist)) % dist; std::rotate(vec.begin() + r0, vec.begin() + r0 + shift, vec.begin() + r1 + 1); return T(1); } }; template class shift_left : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::scalar_view scalar_t; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); shift_left() : exprtk::igeneric_function("VT|VTTT") /* Overloads: 0. VT - vector, N 1. VTTT - vector, N, r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { vector_t vec(parameters[0]); std::size_t n = 0; std::size_t r0 = 0; std::size_t r1 = vec.size() - 1; if (!scalar_t(parameters[1]).to_uint(n)) return T(0); if ( (1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 2, 3, 0) ) return T(0); std::size_t dist = r1 - r0 + 1; if (n > dist) return T(0); std::rotate(vec.begin() + r0, vec.begin() + r0 + n, vec.begin() + r1 + 1); for (std::size_t i = r1 - n + 1; i <= r1; ++i) { vec[i] = T(0); } return T(1); } }; template class shift_right : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::scalar_view scalar_t; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); shift_right() : exprtk::igeneric_function("VT|VTTT") /* Overloads: 0. VT - vector, N 1. VTTT - vector, N, r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { vector_t vec(parameters[0]); std::size_t n = 0; std::size_t r0 = 0; std::size_t r1 = vec.size() - 1; if (!scalar_t(parameters[1]).to_uint(n)) return T(0); if ( (1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 2, 3, 0) ) return T(0); std::size_t dist = r1 - r0 + 1; if (n > dist) return T(0); std::size_t shift = (dist - (n % dist)) % dist; std::rotate(vec.begin() + r0, vec.begin() + r0 + shift, vec.begin() + r1 + 1); for (std::size_t i = r0; i < r0 + n; ++i) { vec[i] = T(0); } return T(1); } }; template class sort : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::string_view string_t; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); sort() : exprtk::igeneric_function("V|VTT|VS|VSTT") /* Overloads: 0. V - vector 1. VTT - vector, r0, r1 2. VS - vector, string 3. VSTT - vector, string, r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { vector_t vec(parameters[0]); std::size_t r0 = 0; std::size_t r1 = vec.size() - 1; if ((1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 1, 2, 0)) return T(0); if ((3 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 2, 3, 0)) return T(0); bool ascending = true; if ((2 == ps_index) || (3 == ps_index)) { if (exprtk::details::imatch(to_str(string_t(parameters[1])),"ascending")) ascending = true; else if (exprtk::details::imatch(to_str(string_t(parameters[1])),"descending")) ascending = false; else return T(0); } if (ascending) std::sort(vec.begin() + r0, vec.begin() + r1 + 1, std::less ()); else std::sort(vec.begin() + r0, vec.begin() + r1 + 1, std::greater()); return T(1); } }; template class nthelement : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::scalar_view scalar_t; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); nthelement() : exprtk::igeneric_function("VT|VTTT") /* Overloads: 0. VT - vector, nth-element 1. VTTT - vector, nth-element, r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { vector_t vec(parameters[0]); std::size_t n = 0; std::size_t r0 = 0; std::size_t r1 = vec.size() - 1; if (!scalar_t(parameters[1]).to_uint(n)) return T(0); if ((1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 2, 3, 0)) return std::numeric_limits::quiet_NaN(); std::nth_element(vec.begin() + r0, vec.begin() + r0 + n , vec.begin() + r1 + 1); return T(1); } }; template class iota : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::scalar_view scalar_t; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); iota() : exprtk::igeneric_function("VT|VTT|VTTT|VTTTT") /* Overloads: 0. VT - vector, increment 1. VTT - vector, increment, base 2. VTTTT - vector, increment, r0, r1 3. VTTTT - vector, increment, base, r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { vector_t vec(parameters[0]); T increment = scalar_t(parameters[1])(); T base = ((1 == ps_index) || (3 == ps_index)) ? scalar_t(parameters[2])() : T(0); std::size_t r0 = 0; std::size_t r1 = vec.size() - 1; if ((2 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 2, 3, 0)) return std::numeric_limits::quiet_NaN(); else if ((3 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 3, 4, 0)) return std::numeric_limits::quiet_NaN(); else { long long j = 0; for (std::size_t i = r0; i <= r1; ++i, ++j) { vec[i] = base + (increment * j); } } return T(1); } }; template class sumk : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); sumk() : exprtk::igeneric_function("V|VTT") /* Overloads: 0. V - vector 1. VTT - vector, r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { const vector_t vec(parameters[0]); std::size_t r0 = 0; std::size_t r1 = vec.size() - 1; if ((1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 1, 2, 0)) return std::numeric_limits::quiet_NaN(); T result = T(0); T error = T(0); for (std::size_t i = r0; i <= r1; ++i) { details::kahan_sum(result, error, vec[i]); } return result; } }; template class axpy : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::scalar_view scalar_t; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); axpy() : exprtk::igeneric_function("TVV|TVVTT") /* y <- ax + y Overloads: 0. TVV - a, x(vector), y(vector) 1. TVVTT - a, x(vector), y(vector), r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { const vector_t x(parameters[1]); vector_t y(parameters[2]); std::size_t r0 = 0; std::size_t r1 = std::min(x.size(),y.size()) - 1; if ((1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 3, 4, 1)) return std::numeric_limits::quiet_NaN(); else if (helper::invalid_range(y,r0,r1)) return std::numeric_limits::quiet_NaN(); T a = scalar_t(parameters[0])(); for (std::size_t i = r0; i <= r1; ++i) { y[i] = (a * x[i]) + y[i]; } return T(1); } }; template class axpby : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::scalar_view scalar_t; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); axpby() : exprtk::igeneric_function("TVTV|TVTVTT") /* y <- ax + by Overloads: 0. TVTV - a, x(vector), b, y(vector) 1. TVTVTT - a, x(vector), b, y(vector), r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { const vector_t x(parameters[1]); vector_t y(parameters[3]); std::size_t r0 = 0; std::size_t r1 = std::min(x.size(),y.size()) - 1; if ((1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 4, 5, 1)) return std::numeric_limits::quiet_NaN(); else if (helper::invalid_range(y,r0,r1)) return std::numeric_limits::quiet_NaN(); const T a = scalar_t(parameters[0])(); const T b = scalar_t(parameters[2])(); for (std::size_t i = r0; i <= r1; ++i) { y[i] = (a * x[i]) + (b * y[i]); } return T(1); } }; template class axpyz : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::scalar_view scalar_t; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); axpyz() : exprtk::igeneric_function("TVVV|TVVVTT") /* z <- ax + y Overloads: 0. TVVV - a, x(vector), y(vector), z(vector) 1. TVVVTT - a, x(vector), y(vector), z(vector), r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { const vector_t x(parameters[1]); const vector_t y(parameters[2]); vector_t z(parameters[3]); std::size_t r0 = 0; std::size_t r1 = std::min(x.size(),y.size()) - 1; if ((1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 3, 4, 1)) return std::numeric_limits::quiet_NaN(); else if (helper::invalid_range(y,r0,r1)) return std::numeric_limits::quiet_NaN(); else if (helper::invalid_range(z,r0,r1)) return std::numeric_limits::quiet_NaN(); T a = scalar_t(parameters[0])(); for (std::size_t i = r0; i <= r1; ++i) { z[i] = (a * x[i]) + y[i]; } return T(1); } }; template class axpbyz : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::scalar_view scalar_t; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); axpbyz() : exprtk::igeneric_function("TVTVV|TVTVVTT") /* z <- ax + by Overloads: 0. TVTVV - a, x(vector), b, y(vector), z(vector) 1. TVTVVTT - a, x(vector), b, y(vector), z(vector), r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { const vector_t x(parameters[1]); const vector_t y(parameters[3]); vector_t z(parameters[4]); std::size_t r0 = 0; std::size_t r1 = std::min(x.size(),y.size()) - 1; if ((1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 4, 5, 1)) return std::numeric_limits::quiet_NaN(); else if (helper::invalid_range(y,r0,r1)) return std::numeric_limits::quiet_NaN(); else if (helper::invalid_range(z,r0,r1)) return std::numeric_limits::quiet_NaN(); const T a = scalar_t(parameters[0])(); const T b = scalar_t(parameters[2])(); for (std::size_t i = r0; i <= r1; ++i) { z[i] = (a * x[i]) + (b * y[i]); } return T(1); } }; template class axpbz : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::scalar_view scalar_t; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); axpbz() : exprtk::igeneric_function("TVTV|TVTVTT") /* z <- ax + b Overloads: 0. TVTV - a, x(vector), b, z(vector) 1. TVTVTT - a, x(vector), b, z(vector), r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { const vector_t x(parameters[1]); vector_t z(parameters[3]); std::size_t r0 = 0; std::size_t r1 = x.size() - 1; if ((1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 4, 5, 1)) return std::numeric_limits::quiet_NaN(); else if (helper::invalid_range(z,r0,r1)) return std::numeric_limits::quiet_NaN(); const T a = scalar_t(parameters[0])(); const T b = scalar_t(parameters[2])(); for (std::size_t i = r0; i <= r1; ++i) { z[i] = (a * x[i]) + b; } return T(1); } }; template class dot : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::scalar_view scalar_t; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); dot() : exprtk::igeneric_function("VV|VVTT") /* Overloads: 0. VV - x(vector), y(vector) 1. VVTT - x(vector), y(vector), r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { const vector_t x(parameters[0]); const vector_t y(parameters[1]); std::size_t r0 = 0; std::size_t r1 = std::min(x.size(),y.size()) - 1; if ((1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 2, 3, 0)) return std::numeric_limits::quiet_NaN(); else if (helper::invalid_range(y,r0,r1)) return std::numeric_limits::quiet_NaN(); T result = T(0); for (std::size_t i = r0; i <= r1; ++i) { result += (x[i] * y[i]); } return result; } }; template class dotk : public exprtk::igeneric_function { public: typedef typename exprtk::igeneric_function igfun_t; typedef typename igfun_t::parameter_list_t parameter_list_t; typedef typename igfun_t::generic_type generic_type; typedef typename generic_type::scalar_view scalar_t; typedef typename generic_type::vector_view vector_t; using exprtk::igeneric_function::operator(); dotk() : exprtk::igeneric_function("VV|VVTT") /* Overloads: 0. VV - x(vector), y(vector) 1. VVTT - x(vector), y(vector), r0, r1 */ {} inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) { const vector_t x(parameters[0]); const vector_t y(parameters[1]); std::size_t r0 = 0; std::size_t r1 = std::min(x.size(),y.size()) - 1; if ((1 == ps_index) && !helper::load_vector_range::process(parameters, r0, r1, 2, 3, 0)) return std::numeric_limits::quiet_NaN(); else if (helper::invalid_range(y,r0,r1)) return std::numeric_limits::quiet_NaN(); T result = T(0); T error = T(0); for (std::size_t i = r0; i <= r1; ++i) { details::kahan_sum(result, error, (x[i] * y[i])); } return result; } }; template struct package { all_true at; all_false af; any_true nt; any_false nf; count c; copy cp; rol rl; ror rr; shift_left sl; shift_right sr; sort st; nthelement ne; iota ia; sumk sk; axpy b1_axpy; axpby b1_axpby; axpyz b1_axpyz; axpbyz b1_axpbyz; axpbz b1_axpbz; dot dt; dotk dtk; bool register_package(exprtk::symbol_table& symtab) { #define exprtk_register_function(FunctionName,FunctionType) \ if (!symtab.add_function(FunctionName,FunctionType)) \ { \ exprtk_debug(( \ "exprtk::rtl::vecops::register_package - Failed to add function: %s\n", \ FunctionName)); \ return false; \ } \ exprtk_register_function("all_true" ,at) exprtk_register_function("all_false" ,af) exprtk_register_function("any_true" ,nt) exprtk_register_function("any_false" ,nf) exprtk_register_function("count" , c) exprtk_register_function("copy" , cp) exprtk_register_function("rotate_left" ,rl) exprtk_register_function("rol" ,rl) exprtk_register_function("rotate_right" ,rr) exprtk_register_function("ror" ,rr) exprtk_register_function("shftl" ,sl) exprtk_register_function("shftr" ,sr) exprtk_register_function("sort" ,st) exprtk_register_function("nth_element" ,ne) exprtk_register_function("iota" ,ia) exprtk_register_function("sumk" ,sk) exprtk_register_function("axpy" ,b1_axpy) exprtk_register_function("axpby" ,b1_axpby) exprtk_register_function("axpyz" ,b1_axpyz) exprtk_register_function("axpbyz",b1_axpbyz) exprtk_register_function("axpbz" ,b1_axpbz) exprtk_register_function("dot" ,dt) exprtk_register_function("dotk" ,dtk) #undef exprtk_register_function return true; } }; } // namespace exprtk::rtl::vecops } // namespace exprtk::rtl } // namespace exprtk #endif namespace exprtk { namespace information { static const char* library = "Mathematical Expression Toolkit"; static const char* version = "2.71828182845904523536028747135266249775724709369" "9959574966967627724076630353547594571382178525166"; static const char* date = "20171111"; static inline std::string data() { static const std::string info_str = std::string(library) + std::string(" v") + std::string(version) + std::string(" (") + date + std::string(")"); return info_str; } } // namespace information #ifdef exprtk_debug #undef exprtk_debug #endif #ifdef exprtk_error_location #undef exprtk_error_location #endif #ifdef exprtk_disable_fallthrough_begin #undef exprtk_disable_fallthrough_begin #endif #ifdef exprtk_disable_fallthrough_end #undef exprtk_disable_fallthrough_end #endif } // namespace exprtk #endif ================================================ FILE: 3rdparty/exprtk/license/license.json ================================================ {"Name":"The MIT License (MIT)","Text":"Copyright (c) 1999 Arash Partow\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","Id":622575,"ShortName":"MIT","StartDate":"\/Date(1487713546373-0800)\/"} ================================================ FILE: 3rdparty/fastnoise/CMakeLists.txt ================================================ add_library(fastnoise) target_include_directories(fastnoise PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ) target_sources(fastnoise PRIVATE FastNoise.h FastNoise.cpp ) ================================================ FILE: 3rdparty/fastnoise/FastNoise.cpp ================================================ // FastNoise.cpp // // MIT License // // Copyright(c) 2017 Jordan Peck // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files(the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and / or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions : // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // // The developer's email is jorzixdan.me2@gzixmail.com (for great email, take // off every 'zix'.) // #include "FastNoise.h" #include #include #include #include const FN_DECIMAL GRAD_X[] = { 1, -1, 1, -1, 1, -1, 1, -1, 0, 0, 0, 0 }; const FN_DECIMAL GRAD_Y[] = { 1, 1, -1, -1, 0, 0, 0, 0, 1, -1, 1, -1 }; const FN_DECIMAL GRAD_Z[] = { 0, 0, 0, 0, 1, 1, -1, -1, 1, 1, -1, -1 }; const FN_DECIMAL GRAD_4D[] = { 0, 1, 1, 1, 0, 1, 1, -1, 0, 1, -1, 1, 0, 1, -1, -1, 0, -1, 1, 1, 0, -1, 1, -1, 0, -1, -1, 1, 0, -1, -1, -1, 1, 0, 1, 1, 1, 0, 1, -1, 1, 0, -1, 1, 1, 0, -1, -1, -1, 0, 1, 1, -1, 0, 1, -1, -1, 0, -1, 1, -1, 0, -1, -1, 1, 1, 0, 1, 1, 1, 0, -1, 1, -1, 0, 1, 1, -1, 0, -1, -1, 1, 0, 1, -1, 1, 0, -1, -1, -1, 0, 1, -1, -1, 0, -1, 1, 1, 1, 0, 1, 1, -1, 0, 1, -1, 1, 0, 1, -1, -1, 0, -1, 1, 1, 0, -1, 1, -1, 0, -1, -1, 1, 0, -1, -1, -1, 0 }; const FN_DECIMAL VAL_LUT[] = { FN_DECIMAL( 0.3490196078 ), FN_DECIMAL( 0.4352941176 ), FN_DECIMAL( -0.4509803922 ), FN_DECIMAL( 0.6392156863 ), FN_DECIMAL( 0.5843137255 ), FN_DECIMAL( -0.1215686275 ), FN_DECIMAL( 0.7176470588 ), FN_DECIMAL( -0.1058823529 ), FN_DECIMAL( 0.3960784314 ), FN_DECIMAL( 0.0431372549 ), FN_DECIMAL( -0.03529411765 ), FN_DECIMAL( 0.3176470588 ), FN_DECIMAL( 0.7254901961 ), FN_DECIMAL( 0.137254902 ), FN_DECIMAL( 0.8588235294 ), FN_DECIMAL( -0.8196078431 ), FN_DECIMAL( -0.7960784314 ), FN_DECIMAL( -0.3333333333 ), FN_DECIMAL( -0.6705882353 ), FN_DECIMAL( -0.3882352941 ), FN_DECIMAL( 0.262745098 ), FN_DECIMAL( 0.3254901961 ), FN_DECIMAL( -0.6470588235 ), FN_DECIMAL( -0.9215686275 ), FN_DECIMAL( -0.5294117647 ), FN_DECIMAL( 0.5294117647 ), FN_DECIMAL( -0.4666666667 ), FN_DECIMAL( 0.8117647059 ), FN_DECIMAL( 0.3803921569 ), FN_DECIMAL( 0.662745098 ), FN_DECIMAL( 0.03529411765 ), FN_DECIMAL( -0.6156862745 ), FN_DECIMAL( -0.01960784314 ), FN_DECIMAL( -0.3568627451 ), FN_DECIMAL( -0.09019607843 ), FN_DECIMAL( 0.7490196078 ), FN_DECIMAL( 0.8352941176 ), FN_DECIMAL( -0.4039215686 ), FN_DECIMAL( -0.7490196078 ), FN_DECIMAL( 0.9529411765 ), FN_DECIMAL( -0.0431372549 ), FN_DECIMAL( -0.9294117647 ), FN_DECIMAL( -0.6549019608 ), FN_DECIMAL( 0.9215686275 ), FN_DECIMAL( -0.06666666667 ), FN_DECIMAL( -0.4431372549 ), FN_DECIMAL( 0.4117647059 ), FN_DECIMAL( -0.4196078431 ), FN_DECIMAL( -0.7176470588 ), FN_DECIMAL( -0.8117647059 ), FN_DECIMAL( -0.2549019608 ), FN_DECIMAL( 0.4901960784 ), FN_DECIMAL( 0.9137254902 ), FN_DECIMAL( 0.7882352941 ), FN_DECIMAL( -1.0 ), FN_DECIMAL( -0.4745098039 ), FN_DECIMAL( 0.7960784314 ), FN_DECIMAL( 0.8509803922 ), FN_DECIMAL( -0.6784313725 ), FN_DECIMAL( 0.4588235294 ), FN_DECIMAL( 1.0 ), FN_DECIMAL( -0.1843137255 ), FN_DECIMAL( 0.4509803922 ), FN_DECIMAL( 0.1450980392 ), FN_DECIMAL( -0.231372549 ), FN_DECIMAL( -0.968627451 ), FN_DECIMAL( -0.8588235294 ), FN_DECIMAL( 0.4274509804 ), FN_DECIMAL( 0.003921568627 ), FN_DECIMAL( -0.003921568627 ), FN_DECIMAL( 0.2156862745 ), FN_DECIMAL( 0.5058823529 ), FN_DECIMAL( 0.7647058824 ), FN_DECIMAL( 0.2078431373 ), FN_DECIMAL( -0.5921568627 ), FN_DECIMAL( 0.5764705882 ), FN_DECIMAL( -0.1921568627 ), FN_DECIMAL( -0.937254902 ), FN_DECIMAL( 0.08235294118 ), FN_DECIMAL( -0.08235294118 ), FN_DECIMAL( 0.9058823529 ), FN_DECIMAL( 0.8274509804 ), FN_DECIMAL( 0.02745098039 ), FN_DECIMAL( -0.168627451 ), FN_DECIMAL( -0.7803921569 ), FN_DECIMAL( 0.1137254902 ), FN_DECIMAL( -0.9450980392 ), FN_DECIMAL( 0.2 ), FN_DECIMAL( 0.01960784314 ), FN_DECIMAL( 0.5607843137 ), FN_DECIMAL( 0.2705882353 ), FN_DECIMAL( 0.4431372549 ), FN_DECIMAL( -0.9607843137 ), FN_DECIMAL( 0.6156862745 ), FN_DECIMAL( 0.9294117647 ), FN_DECIMAL( -0.07450980392 ), FN_DECIMAL( 0.3098039216 ), FN_DECIMAL( 0.9921568627 ), FN_DECIMAL( -0.9137254902 ), FN_DECIMAL( -0.2941176471 ), FN_DECIMAL( -0.3411764706 ), FN_DECIMAL( -0.6235294118 ), FN_DECIMAL( -0.7647058824 ), FN_DECIMAL( -0.8901960784 ), FN_DECIMAL( 0.05882352941 ), FN_DECIMAL( 0.2392156863 ), FN_DECIMAL( 0.7333333333 ), FN_DECIMAL( 0.6549019608 ), FN_DECIMAL( 0.2470588235 ), FN_DECIMAL( 0.231372549 ), FN_DECIMAL( -0.3960784314 ), FN_DECIMAL( -0.05098039216 ), FN_DECIMAL( -0.2235294118 ), FN_DECIMAL( -0.3725490196 ), FN_DECIMAL( 0.6235294118 ), FN_DECIMAL( 0.7019607843 ), FN_DECIMAL( -0.8274509804 ), FN_DECIMAL( 0.4196078431 ), FN_DECIMAL( 0.07450980392 ), FN_DECIMAL( 0.8666666667 ), FN_DECIMAL( -0.537254902 ), FN_DECIMAL( -0.5058823529 ), FN_DECIMAL( -0.8039215686 ), FN_DECIMAL( 0.09019607843 ), FN_DECIMAL( -0.4823529412 ), FN_DECIMAL( 0.6705882353 ), FN_DECIMAL( -0.7882352941 ), FN_DECIMAL( 0.09803921569 ), FN_DECIMAL( -0.6078431373 ), FN_DECIMAL( 0.8039215686 ), FN_DECIMAL( -0.6 ), FN_DECIMAL( -0.3254901961 ), FN_DECIMAL( -0.4117647059 ), FN_DECIMAL( -0.01176470588 ), FN_DECIMAL( 0.4823529412 ), FN_DECIMAL( 0.168627451 ), FN_DECIMAL( 0.8745098039 ), FN_DECIMAL( -0.3647058824 ), FN_DECIMAL( -0.1607843137 ), FN_DECIMAL( 0.568627451 ), FN_DECIMAL( -0.9921568627 ), FN_DECIMAL( 0.9450980392 ), FN_DECIMAL( 0.5137254902 ), FN_DECIMAL( 0.01176470588 ), FN_DECIMAL( -0.1450980392 ), FN_DECIMAL( -0.5529411765 ), FN_DECIMAL( -0.5764705882 ), FN_DECIMAL( -0.1137254902 ), FN_DECIMAL( 0.5215686275 ), FN_DECIMAL( 0.1607843137 ), FN_DECIMAL( 0.3725490196 ), FN_DECIMAL( -0.2 ), FN_DECIMAL( -0.7254901961 ), FN_DECIMAL( 0.631372549 ), FN_DECIMAL( 0.7098039216 ), FN_DECIMAL( -0.568627451 ), FN_DECIMAL( 0.1294117647 ), FN_DECIMAL( -0.3098039216 ), FN_DECIMAL( 0.7411764706 ), FN_DECIMAL( -0.8509803922 ), FN_DECIMAL( 0.2549019608 ), FN_DECIMAL( -0.6392156863 ), FN_DECIMAL( -0.5607843137 ), FN_DECIMAL( -0.3176470588 ), FN_DECIMAL( 0.937254902 ), FN_DECIMAL( 0.9843137255 ), FN_DECIMAL( 0.5921568627 ), FN_DECIMAL( 0.6941176471 ), FN_DECIMAL( 0.2862745098 ), FN_DECIMAL( -0.5215686275 ), FN_DECIMAL( 0.1764705882 ), FN_DECIMAL( 0.537254902 ), FN_DECIMAL( -0.4901960784 ), FN_DECIMAL( -0.4588235294 ), FN_DECIMAL( -0.2078431373 ), FN_DECIMAL( -0.2156862745 ), FN_DECIMAL( 0.7725490196 ), FN_DECIMAL( 0.3647058824 ), FN_DECIMAL( -0.2392156863 ), FN_DECIMAL( 0.2784313725 ), FN_DECIMAL( -0.8823529412 ), FN_DECIMAL( 0.8980392157 ), FN_DECIMAL( 0.1215686275 ), FN_DECIMAL( 0.1058823529 ), FN_DECIMAL( -0.8745098039 ), FN_DECIMAL( -0.9843137255 ), FN_DECIMAL( -0.7019607843 ), FN_DECIMAL( 0.9607843137 ), FN_DECIMAL( 0.2941176471 ), FN_DECIMAL( 0.3411764706 ), FN_DECIMAL( 0.1529411765 ), FN_DECIMAL( 0.06666666667 ), FN_DECIMAL( -0.9764705882 ), FN_DECIMAL( 0.3019607843 ), FN_DECIMAL( 0.6470588235 ), FN_DECIMAL( -0.5843137255 ), FN_DECIMAL( 0.05098039216 ), FN_DECIMAL( -0.5137254902 ), FN_DECIMAL( -0.137254902 ), FN_DECIMAL( 0.3882352941 ), FN_DECIMAL( -0.262745098 ), FN_DECIMAL( -0.3019607843 ), FN_DECIMAL( -0.1764705882 ), FN_DECIMAL( -0.7568627451 ), FN_DECIMAL( 0.1843137255 ), FN_DECIMAL( -0.5450980392 ), FN_DECIMAL( -0.4980392157 ), FN_DECIMAL( -0.2784313725 ), FN_DECIMAL( -0.9529411765 ), FN_DECIMAL( -0.09803921569 ), FN_DECIMAL( 0.8901960784 ), FN_DECIMAL( -0.2862745098 ), FN_DECIMAL( -0.3803921569 ), FN_DECIMAL( 0.5529411765 ), FN_DECIMAL( 0.7803921569 ), FN_DECIMAL( -0.8352941176 ), FN_DECIMAL( 0.6862745098 ), FN_DECIMAL( 0.7568627451 ), FN_DECIMAL( 0.4980392157 ), FN_DECIMAL( -0.6862745098 ), FN_DECIMAL( -0.8980392157 ), FN_DECIMAL( -0.7725490196 ), FN_DECIMAL( -0.7098039216 ), FN_DECIMAL( -0.2470588235 ), FN_DECIMAL( -0.9058823529 ), FN_DECIMAL( 0.9764705882 ), FN_DECIMAL( 0.1921568627 ), FN_DECIMAL( 0.8431372549 ), FN_DECIMAL( -0.05882352941 ), FN_DECIMAL( 0.3568627451 ), FN_DECIMAL( 0.6078431373 ), FN_DECIMAL( 0.5450980392 ), FN_DECIMAL( 0.4039215686 ), FN_DECIMAL( -0.7333333333 ), FN_DECIMAL( -0.4274509804 ), FN_DECIMAL( 0.6 ), FN_DECIMAL( 0.6784313725 ), FN_DECIMAL( -0.631372549 ), FN_DECIMAL( -0.02745098039 ), FN_DECIMAL( -0.1294117647 ), FN_DECIMAL( 0.3333333333 ), FN_DECIMAL( -0.8431372549 ), FN_DECIMAL( 0.2235294118 ), FN_DECIMAL( -0.3490196078 ), FN_DECIMAL( -0.6941176471 ), FN_DECIMAL( 0.8823529412 ), FN_DECIMAL( 0.4745098039 ), FN_DECIMAL( 0.4666666667 ), FN_DECIMAL( -0.7411764706 ), FN_DECIMAL( -0.2705882353 ), FN_DECIMAL( 0.968627451 ), FN_DECIMAL( 0.8196078431 ), FN_DECIMAL( -0.662745098 ), FN_DECIMAL( -0.4352941176 ), FN_DECIMAL( -0.8666666667 ), FN_DECIMAL( -0.1529411765 ), }; const FN_DECIMAL CELL_2D_X[] = { FN_DECIMAL( -0.6440658039 ), FN_DECIMAL( -0.08028078721 ), FN_DECIMAL( 0.9983546168 ), FN_DECIMAL( 0.9869492062 ), FN_DECIMAL( 0.9284746418 ), FN_DECIMAL( 0.6051097552 ), FN_DECIMAL( -0.794167404 ), FN_DECIMAL( -0.3488667991 ), FN_DECIMAL( -0.943136526 ), FN_DECIMAL( -0.9968171318 ), FN_DECIMAL( 0.8740961579 ), FN_DECIMAL( 0.1421139764 ), FN_DECIMAL( 0.4282553608 ), FN_DECIMAL( -0.9986665833 ), FN_DECIMAL( 0.9996760121 ), FN_DECIMAL( -0.06248383632 ), FN_DECIMAL( 0.7120139305 ), FN_DECIMAL( 0.8917660409 ), FN_DECIMAL( 0.1094842955 ), FN_DECIMAL( -0.8730880804 ), FN_DECIMAL( 0.2594811489 ), FN_DECIMAL( -0.6690063346 ), FN_DECIMAL( -0.9996834972 ), FN_DECIMAL( -0.8803608671 ), FN_DECIMAL( -0.8166554937 ), FN_DECIMAL( 0.8955599676 ), FN_DECIMAL( -0.9398321388 ), FN_DECIMAL( 0.07615451399 ), FN_DECIMAL( -0.7147270565 ), FN_DECIMAL( 0.8707354457 ), FN_DECIMAL( -0.9580008579 ), FN_DECIMAL( 0.4905965632 ), FN_DECIMAL( 0.786775944 ), FN_DECIMAL( 0.1079711577 ), FN_DECIMAL( 0.2686638979 ), FN_DECIMAL( 0.6113487322 ), FN_DECIMAL( -0.530770584 ), FN_DECIMAL( -0.7837268286 ), FN_DECIMAL( -0.8558691039 ), FN_DECIMAL( -0.5726093896 ), FN_DECIMAL( -0.9830740914 ), FN_DECIMAL( 0.7087766359 ), FN_DECIMAL( 0.6807027153 ), FN_DECIMAL( -0.08864708788 ), FN_DECIMAL( 0.6704485923 ), FN_DECIMAL( -0.1350735482 ), FN_DECIMAL( -0.9381333003 ), FN_DECIMAL( 0.9756655376 ), FN_DECIMAL( 0.4231433671 ), FN_DECIMAL( -0.4959787385 ), FN_DECIMAL( 0.1005554325 ), FN_DECIMAL( -0.7645857281 ), FN_DECIMAL( -0.5859053796 ), FN_DECIMAL( -0.9751154306 ), FN_DECIMAL( -0.6972258572 ), FN_DECIMAL( 0.7907012002 ), FN_DECIMAL( -0.9109899213 ), FN_DECIMAL( -0.9584307894 ), FN_DECIMAL( -0.8269529333 ), FN_DECIMAL( 0.2608264719 ), FN_DECIMAL( -0.7773760119 ), FN_DECIMAL( 0.7606456974 ), FN_DECIMAL( -0.8961083758 ), FN_DECIMAL( -0.9838134719 ), FN_DECIMAL( 0.7338893576 ), FN_DECIMAL( 0.2161226729 ), FN_DECIMAL( 0.673509891 ), FN_DECIMAL( -0.5512056873 ), FN_DECIMAL( 0.6899744332 ), FN_DECIMAL( 0.868004831 ), FN_DECIMAL( 0.5897430311 ), FN_DECIMAL( -0.8950444221 ), FN_DECIMAL( -0.3595752773 ), FN_DECIMAL( 0.8209486981 ), FN_DECIMAL( -0.2912360132 ), FN_DECIMAL( -0.9965011374 ), FN_DECIMAL( 0.9766994634 ), FN_DECIMAL( 0.738790822 ), FN_DECIMAL( -0.4730947722 ), FN_DECIMAL( 0.8946479441 ), FN_DECIMAL( -0.6943628971 ), FN_DECIMAL( -0.6620468182 ), FN_DECIMAL( -0.0887255502 ), FN_DECIMAL( -0.7512250855 ), FN_DECIMAL( -0.5322986898 ), FN_DECIMAL( 0.5226295385 ), FN_DECIMAL( 0.2296318375 ), FN_DECIMAL( 0.7915307344 ), FN_DECIMAL( -0.2756485999 ), FN_DECIMAL( -0.6900234522 ), FN_DECIMAL( 0.07090588086 ), FN_DECIMAL( 0.5981278485 ), FN_DECIMAL( 0.3033429312 ), FN_DECIMAL( -0.7253142797 ), FN_DECIMAL( -0.9855874307 ), FN_DECIMAL( -0.1761843396 ), FN_DECIMAL( -0.6438468325 ), FN_DECIMAL( -0.9956136595 ), FN_DECIMAL( 0.8541580762 ), FN_DECIMAL( -0.9999807666 ), FN_DECIMAL( -0.02152416253 ), FN_DECIMAL( -0.8705983095 ), FN_DECIMAL( -0.1197138014 ), FN_DECIMAL( -0.992107781 ), FN_DECIMAL( -0.9091181546 ), FN_DECIMAL( 0.788610536 ), FN_DECIMAL( -0.994636402 ), FN_DECIMAL( 0.4211256853 ), FN_DECIMAL( 0.3110430857 ), FN_DECIMAL( -0.4031127839 ), FN_DECIMAL( 0.7610684239 ), FN_DECIMAL( 0.7685674467 ), FN_DECIMAL( 0.152271555 ), FN_DECIMAL( -0.9364648723 ), FN_DECIMAL( 0.1681333739 ), FN_DECIMAL( -0.3567427907 ), FN_DECIMAL( -0.418445483 ), FN_DECIMAL( -0.98774778 ), FN_DECIMAL( 0.8705250765 ), FN_DECIMAL( -0.8911701067 ), FN_DECIMAL( -0.7315350966 ), FN_DECIMAL( 0.6030885658 ), FN_DECIMAL( -0.4149130821 ), FN_DECIMAL( 0.7585339481 ), FN_DECIMAL( 0.6963196535 ), FN_DECIMAL( 0.8332685012 ), FN_DECIMAL( -0.8086815232 ), FN_DECIMAL( 0.7518116724 ), FN_DECIMAL( -0.3490535894 ), FN_DECIMAL( 0.6972110903 ), FN_DECIMAL( -0.8795676928 ), FN_DECIMAL( -0.6442331882 ), FN_DECIMAL( 0.6610236811 ), FN_DECIMAL( -0.9853565782 ), FN_DECIMAL( -0.590338458 ), FN_DECIMAL( 0.09843602117 ), FN_DECIMAL( 0.5646534882 ), FN_DECIMAL( -0.6023259233 ), FN_DECIMAL( -0.3539248861 ), FN_DECIMAL( 0.5132728656 ), FN_DECIMAL( 0.9380385118 ), FN_DECIMAL( -0.7599270056 ), FN_DECIMAL( -0.7425936564 ), FN_DECIMAL( -0.6679610562 ), FN_DECIMAL( -0.3018497816 ), FN_DECIMAL( 0.814478266 ), FN_DECIMAL( 0.03777430269 ), FN_DECIMAL( -0.7514235086 ), FN_DECIMAL( 0.9662556939 ), FN_DECIMAL( -0.4720194901 ), FN_DECIMAL( -0.435054126 ), FN_DECIMAL( 0.7091901235 ), FN_DECIMAL( 0.929379209 ), FN_DECIMAL( 0.9997434357 ), FN_DECIMAL( 0.8306320299 ), FN_DECIMAL( -0.9434019629 ), FN_DECIMAL( -0.133133759 ), FN_DECIMAL( 0.5048413216 ), FN_DECIMAL( 0.3711995273 ), FN_DECIMAL( 0.98552091 ), FN_DECIMAL( 0.7401857005 ), FN_DECIMAL( -0.9999981398 ), FN_DECIMAL( -0.2144033253 ), FN_DECIMAL( 0.4808624681 ), FN_DECIMAL( -0.413835885 ), FN_DECIMAL( 0.644229305 ), FN_DECIMAL( 0.9626648696 ), FN_DECIMAL( 0.1833665934 ), FN_DECIMAL( 0.5794129 ), FN_DECIMAL( 0.01404446873 ), FN_DECIMAL( 0.4388494993 ), FN_DECIMAL( 0.5213612322 ), FN_DECIMAL( -0.5281609948 ), FN_DECIMAL( -0.9745306846 ), FN_DECIMAL( -0.9904373013 ), FN_DECIMAL( 0.9100232252 ), FN_DECIMAL( -0.9914057719 ), FN_DECIMAL( 0.7892627765 ), FN_DECIMAL( 0.3364421659 ), FN_DECIMAL( -0.9416099764 ), FN_DECIMAL( 0.7802732656 ), FN_DECIMAL( 0.886302871 ), FN_DECIMAL( 0.6524471291 ), FN_DECIMAL( 0.5762186726 ), FN_DECIMAL( -0.08987644664 ), FN_DECIMAL( -0.2177026782 ), FN_DECIMAL( -0.9720345052 ), FN_DECIMAL( -0.05722538858 ), FN_DECIMAL( 0.8105983127 ), FN_DECIMAL( 0.3410261032 ), FN_DECIMAL( 0.6452309645 ), FN_DECIMAL( -0.7810612152 ), FN_DECIMAL( 0.9989395718 ), FN_DECIMAL( -0.808247815 ), FN_DECIMAL( 0.6370177929 ), FN_DECIMAL( 0.5844658772 ), FN_DECIMAL( 0.2054070861 ), FN_DECIMAL( 0.055960522 ), FN_DECIMAL( -0.995827561 ), FN_DECIMAL( 0.893409165 ), FN_DECIMAL( -0.931516824 ), FN_DECIMAL( 0.328969469 ), FN_DECIMAL( -0.3193837488 ), FN_DECIMAL( 0.7314755657 ), FN_DECIMAL( -0.7913517714 ), FN_DECIMAL( -0.2204109786 ), FN_DECIMAL( 0.9955900414 ), FN_DECIMAL( -0.7112353139 ), FN_DECIMAL( -0.7935008741 ), FN_DECIMAL( -0.9961918204 ), FN_DECIMAL( -0.9714163995 ), FN_DECIMAL( -0.9566188669 ), FN_DECIMAL( 0.2748495632 ), FN_DECIMAL( -0.4681743221 ), FN_DECIMAL( -0.9614449642 ), FN_DECIMAL( 0.585194072 ), FN_DECIMAL( 0.4532946061 ), FN_DECIMAL( -0.9916113176 ), FN_DECIMAL( 0.942479587 ), FN_DECIMAL( -0.9813704753 ), FN_DECIMAL( -0.6538429571 ), FN_DECIMAL( 0.2923335053 ), FN_DECIMAL( -0.2246660704 ), FN_DECIMAL( -0.1800781949 ), FN_DECIMAL( -0.9581216256 ), FN_DECIMAL( 0.552215082 ), FN_DECIMAL( -0.9296791922 ), FN_DECIMAL( 0.643183699 ), FN_DECIMAL( 0.9997325981 ), FN_DECIMAL( -0.4606920354 ), FN_DECIMAL( -0.2148721265 ), FN_DECIMAL( 0.3482070809 ), FN_DECIMAL( 0.3075517813 ), FN_DECIMAL( 0.6274756393 ), FN_DECIMAL( 0.8910881765 ), FN_DECIMAL( -0.6397771309 ), FN_DECIMAL( -0.4479080125 ), FN_DECIMAL( -0.5247665011 ), FN_DECIMAL( -0.8386507094 ), FN_DECIMAL( 0.3901291416 ), FN_DECIMAL( 0.1458336921 ), FN_DECIMAL( 0.01624613149 ), FN_DECIMAL( -0.8273199879 ), FN_DECIMAL( 0.5611100679 ), FN_DECIMAL( -0.8380219841 ), FN_DECIMAL( -0.9856122234 ), FN_DECIMAL( -0.861398618 ), FN_DECIMAL( 0.6398413916 ), FN_DECIMAL( 0.2694510795 ), FN_DECIMAL( 0.4327334514 ), FN_DECIMAL( -0.9960265354 ), FN_DECIMAL( -0.939570655 ), FN_DECIMAL( -0.8846996446 ), FN_DECIMAL( 0.7642113189 ), FN_DECIMAL( -0.7002080528 ), FN_DECIMAL( 0.664508256 ), }; const FN_DECIMAL CELL_2D_Y[] = { FN_DECIMAL( 0.7649700911 ), FN_DECIMAL( 0.9967722885 ), FN_DECIMAL( 0.05734160033 ), FN_DECIMAL( -0.1610318741 ), FN_DECIMAL( 0.371395799 ), FN_DECIMAL( -0.7961420628 ), FN_DECIMAL( 0.6076990492 ), FN_DECIMAL( -0.9371723195 ), FN_DECIMAL( 0.3324056156 ), FN_DECIMAL( 0.07972205329 ), FN_DECIMAL( -0.4857529277 ), FN_DECIMAL( -0.9898503007 ), FN_DECIMAL( 0.9036577593 ), FN_DECIMAL( 0.05162417479 ), FN_DECIMAL( -0.02545330525 ), FN_DECIMAL( -0.998045976 ), FN_DECIMAL( -0.7021653386 ), FN_DECIMAL( -0.4524967717 ), FN_DECIMAL( -0.9939885256 ), FN_DECIMAL( -0.4875625128 ), FN_DECIMAL( -0.9657481729 ), FN_DECIMAL( -0.7432567015 ), FN_DECIMAL( 0.02515761212 ), FN_DECIMAL( 0.4743044842 ), FN_DECIMAL( 0.5771254669 ), FN_DECIMAL( 0.4449408324 ), FN_DECIMAL( 0.3416365773 ), FN_DECIMAL( 0.9970960285 ), FN_DECIMAL( 0.6994034849 ), FN_DECIMAL( 0.4917517499 ), FN_DECIMAL( 0.286765333 ), FN_DECIMAL( 0.8713868327 ), FN_DECIMAL( 0.6172387009 ), FN_DECIMAL( 0.9941540269 ), FN_DECIMAL( 0.9632339851 ), FN_DECIMAL( -0.7913613129 ), FN_DECIMAL( 0.847515538 ), FN_DECIMAL( 0.6211056739 ), FN_DECIMAL( 0.5171924952 ), FN_DECIMAL( -0.8198283277 ), FN_DECIMAL( -0.1832084353 ), FN_DECIMAL( 0.7054329737 ), FN_DECIMAL( 0.7325597678 ), FN_DECIMAL( 0.9960630973 ), FN_DECIMAL( 0.7419559859 ), FN_DECIMAL( 0.9908355749 ), FN_DECIMAL( -0.346274329 ), FN_DECIMAL( 0.2192641299 ), FN_DECIMAL( -0.9060627411 ), FN_DECIMAL( -0.8683346653 ), FN_DECIMAL( 0.9949314574 ), FN_DECIMAL( -0.6445220433 ), FN_DECIMAL( -0.8103794704 ), FN_DECIMAL( -0.2216977607 ), FN_DECIMAL( 0.7168515217 ), FN_DECIMAL( 0.612202264 ), FN_DECIMAL( -0.412428616 ), FN_DECIMAL( 0.285325116 ), FN_DECIMAL( 0.56227115 ), FN_DECIMAL( -0.9653857009 ), FN_DECIMAL( -0.6290361962 ), FN_DECIMAL( 0.6491672535 ), FN_DECIMAL( 0.443835306 ), FN_DECIMAL( -0.1791955706 ), FN_DECIMAL( -0.6792690269 ), FN_DECIMAL( -0.9763662173 ), FN_DECIMAL( 0.7391782104 ), FN_DECIMAL( 0.8343693968 ), FN_DECIMAL( 0.7238337389 ), FN_DECIMAL( 0.4965557504 ), FN_DECIMAL( 0.8075909592 ), FN_DECIMAL( -0.4459769977 ), FN_DECIMAL( -0.9331160806 ), FN_DECIMAL( -0.5710019572 ), FN_DECIMAL( 0.9566512346 ), FN_DECIMAL( -0.08357920318 ), FN_DECIMAL( 0.2146116448 ), FN_DECIMAL( -0.6739348049 ), FN_DECIMAL( 0.8810115417 ), FN_DECIMAL( 0.4467718167 ), FN_DECIMAL( -0.7196250184 ), FN_DECIMAL( -0.749462481 ), FN_DECIMAL( 0.9960561112 ), FN_DECIMAL( 0.6600461127 ), FN_DECIMAL( -0.8465566164 ), FN_DECIMAL( -0.8525598897 ), FN_DECIMAL( -0.9732775654 ), FN_DECIMAL( 0.6111293616 ), FN_DECIMAL( -0.9612584717 ), FN_DECIMAL( -0.7237870097 ), FN_DECIMAL( -0.9974830104 ), FN_DECIMAL( -0.8014006968 ), FN_DECIMAL( 0.9528814544 ), FN_DECIMAL( -0.6884178931 ), FN_DECIMAL( -0.1691668301 ), FN_DECIMAL( 0.9843571905 ), FN_DECIMAL( 0.7651544003 ), FN_DECIMAL( -0.09355982605 ), FN_DECIMAL( -0.5200134429 ), FN_DECIMAL( -0.006202125807 ), FN_DECIMAL( -0.9997683284 ), FN_DECIMAL( 0.4919944954 ), FN_DECIMAL( -0.9928084436 ), FN_DECIMAL( -0.1253880012 ), FN_DECIMAL( -0.4165383308 ), FN_DECIMAL( -0.6148930171 ), FN_DECIMAL( -0.1034332049 ), FN_DECIMAL( -0.9070022917 ), FN_DECIMAL( -0.9503958117 ), FN_DECIMAL( 0.9151503065 ), FN_DECIMAL( -0.6486716073 ), FN_DECIMAL( 0.6397687707 ), FN_DECIMAL( -0.9883386937 ), FN_DECIMAL( 0.3507613761 ), FN_DECIMAL( 0.9857642561 ), FN_DECIMAL( -0.9342026446 ), FN_DECIMAL( -0.9082419159 ), FN_DECIMAL( 0.1560587169 ), FN_DECIMAL( 0.4921240607 ), FN_DECIMAL( -0.453669308 ), FN_DECIMAL( 0.6818037859 ), FN_DECIMAL( 0.7976742329 ), FN_DECIMAL( 0.9098610522 ), FN_DECIMAL( 0.651633524 ), FN_DECIMAL( 0.7177318024 ), FN_DECIMAL( -0.5528685241 ), FN_DECIMAL( 0.5882467118 ), FN_DECIMAL( 0.6593778956 ), FN_DECIMAL( 0.9371027648 ), FN_DECIMAL( -0.7168658839 ), FN_DECIMAL( -0.4757737632 ), FN_DECIMAL( 0.7648291307 ), FN_DECIMAL( 0.7503650398 ), FN_DECIMAL( 0.1705063456 ), FN_DECIMAL( -0.8071558121 ), FN_DECIMAL( -0.9951433815 ), FN_DECIMAL( -0.8253280792 ), FN_DECIMAL( -0.7982502628 ), FN_DECIMAL( 0.9352738503 ), FN_DECIMAL( 0.8582254747 ), FN_DECIMAL( -0.3465310238 ), FN_DECIMAL( 0.65000842 ), FN_DECIMAL( -0.6697422351 ), FN_DECIMAL( 0.7441962291 ), FN_DECIMAL( -0.9533555 ), FN_DECIMAL( 0.5801940659 ), FN_DECIMAL( -0.9992862963 ), FN_DECIMAL( -0.659820211 ), FN_DECIMAL( 0.2575848092 ), FN_DECIMAL( 0.881588113 ), FN_DECIMAL( -0.9004043022 ), FN_DECIMAL( -0.7050172826 ), FN_DECIMAL( 0.369126382 ), FN_DECIMAL( -0.02265088836 ), FN_DECIMAL( 0.5568217228 ), FN_DECIMAL( -0.3316515286 ), FN_DECIMAL( 0.991098079 ), FN_DECIMAL( -0.863212164 ), FN_DECIMAL( -0.9285531277 ), FN_DECIMAL( 0.1695539323 ), FN_DECIMAL( -0.672402505 ), FN_DECIMAL( -0.001928841934 ), FN_DECIMAL( 0.9767452145 ), FN_DECIMAL( -0.8767960349 ), FN_DECIMAL( 0.9103515037 ), FN_DECIMAL( -0.7648324016 ), FN_DECIMAL( 0.2706960452 ), FN_DECIMAL( -0.9830446035 ), FN_DECIMAL( 0.8150341657 ), FN_DECIMAL( -0.9999013716 ), FN_DECIMAL( -0.8985605806 ), FN_DECIMAL( 0.8533360801 ), FN_DECIMAL( 0.8491442537 ), FN_DECIMAL( -0.2242541966 ), FN_DECIMAL( -0.1379635899 ), FN_DECIMAL( -0.4145572694 ), FN_DECIMAL( 0.1308227633 ), FN_DECIMAL( 0.6140555916 ), FN_DECIMAL( 0.9417041303 ), FN_DECIMAL( -0.336705587 ), FN_DECIMAL( -0.6254387508 ), FN_DECIMAL( 0.4631060578 ), FN_DECIMAL( -0.7578342456 ), FN_DECIMAL( -0.8172955655 ), FN_DECIMAL( -0.9959529228 ), FN_DECIMAL( -0.9760151351 ), FN_DECIMAL( 0.2348380732 ), FN_DECIMAL( -0.9983612848 ), FN_DECIMAL( 0.5856025746 ), FN_DECIMAL( -0.9400538266 ), FN_DECIMAL( -0.7639875669 ), FN_DECIMAL( 0.6244544645 ), FN_DECIMAL( 0.04604054566 ), FN_DECIMAL( 0.5888424828 ), FN_DECIMAL( 0.7708490978 ), FN_DECIMAL( -0.8114182882 ), FN_DECIMAL( 0.9786766212 ), FN_DECIMAL( -0.9984329822 ), FN_DECIMAL( 0.09125496582 ), FN_DECIMAL( -0.4492438803 ), FN_DECIMAL( -0.3636982357 ), FN_DECIMAL( 0.9443405575 ), FN_DECIMAL( -0.9476254645 ), FN_DECIMAL( -0.6818676535 ), FN_DECIMAL( -0.6113610831 ), FN_DECIMAL( 0.9754070948 ), FN_DECIMAL( -0.0938108173 ), FN_DECIMAL( -0.7029540015 ), FN_DECIMAL( -0.6085691109 ), FN_DECIMAL( -0.08718862881 ), FN_DECIMAL( -0.237381926 ), FN_DECIMAL( 0.2913423132 ), FN_DECIMAL( 0.9614872426 ), FN_DECIMAL( 0.8836361266 ), FN_DECIMAL( -0.2749974196 ), FN_DECIMAL( -0.8108932717 ), FN_DECIMAL( -0.8913607575 ), FN_DECIMAL( 0.129255541 ), FN_DECIMAL( -0.3342637104 ), FN_DECIMAL( -0.1921249337 ), FN_DECIMAL( -0.7566302845 ), FN_DECIMAL( -0.9563164339 ), FN_DECIMAL( -0.9744358146 ), FN_DECIMAL( 0.9836522982 ), FN_DECIMAL( -0.2863615732 ), FN_DECIMAL( 0.8337016872 ), FN_DECIMAL( 0.3683701937 ), FN_DECIMAL( 0.7657119102 ), FN_DECIMAL( -0.02312427772 ), FN_DECIMAL( 0.8875600535 ), FN_DECIMAL( 0.976642191 ), FN_DECIMAL( 0.9374176384 ), FN_DECIMAL( 0.9515313457 ), FN_DECIMAL( -0.7786361937 ), FN_DECIMAL( -0.4538302125 ), FN_DECIMAL( -0.7685604874 ), FN_DECIMAL( -0.8940796454 ), FN_DECIMAL( -0.8512462154 ), FN_DECIMAL( 0.5446696133 ), FN_DECIMAL( 0.9207601495 ), FN_DECIMAL( -0.9893091197 ), FN_DECIMAL( -0.9998680229 ), FN_DECIMAL( 0.5617309299 ), FN_DECIMAL( -0.8277411985 ), FN_DECIMAL( 0.545636467 ), FN_DECIMAL( 0.1690223212 ), FN_DECIMAL( -0.5079295433 ), FN_DECIMAL( 0.7685069899 ), FN_DECIMAL( -0.9630140787 ), FN_DECIMAL( 0.9015219132 ), FN_DECIMAL( 0.08905695279 ), FN_DECIMAL( -0.3423550559 ), FN_DECIMAL( -0.4661614943 ), FN_DECIMAL( -0.6449659371 ), FN_DECIMAL( 0.7139388509 ), FN_DECIMAL( 0.7472809229 ), }; const FN_DECIMAL CELL_3D_X[] = { FN_DECIMAL( 0.3752498686 ), FN_DECIMAL( 0.687188096 ), FN_DECIMAL( 0.2248135212 ), FN_DECIMAL( 0.6692006647 ), FN_DECIMAL( -0.4376476931 ), FN_DECIMAL( 0.6139972552 ), FN_DECIMAL( 0.9494563929 ), FN_DECIMAL( 0.8065108882 ), FN_DECIMAL( -0.2218812853 ), FN_DECIMAL( 0.8484661167 ), FN_DECIMAL( 0.5551817596 ), FN_DECIMAL( 0.2133903499 ), FN_DECIMAL( 0.5195126593 ), FN_DECIMAL( -0.6440141975 ), FN_DECIMAL( -0.5192897331 ), FN_DECIMAL( -0.3697654077 ), FN_DECIMAL( -0.07927779647 ), FN_DECIMAL( 0.4187757321 ), FN_DECIMAL( -0.750078731 ), FN_DECIMAL( 0.6579554632 ), FN_DECIMAL( -0.6859803838 ), FN_DECIMAL( -0.6878407087 ), FN_DECIMAL( 0.9490848347 ), FN_DECIMAL( 0.5795829433 ), FN_DECIMAL( -0.5325976529 ), FN_DECIMAL( -0.1363699466 ), FN_DECIMAL( 0.417665879 ), FN_DECIMAL( -0.9108236468 ), FN_DECIMAL( 0.4438605427 ), FN_DECIMAL( 0.819294887 ), FN_DECIMAL( -0.4033873915 ), FN_DECIMAL( -0.2817317705 ), FN_DECIMAL( 0.3969665622 ), FN_DECIMAL( 0.5323450134 ), FN_DECIMAL( -0.6833017297 ), FN_DECIMAL( 0.3881436661 ), FN_DECIMAL( -0.7119144767 ), FN_DECIMAL( -0.2306979838 ), FN_DECIMAL( -0.9398873022 ), FN_DECIMAL( 0.1701906676 ), FN_DECIMAL( -0.4261839496 ), FN_DECIMAL( -0.003712295499 ), FN_DECIMAL( -0.734675004 ), FN_DECIMAL( -0.3195046015 ), FN_DECIMAL( 0.7345307424 ), FN_DECIMAL( 0.9766246496 ), FN_DECIMAL( -0.02003735175 ), FN_DECIMAL( -0.4824156342 ), FN_DECIMAL( 0.4245892007 ), FN_DECIMAL( 0.9072427669 ), FN_DECIMAL( 0.593346808 ), FN_DECIMAL( -0.8911762541 ), FN_DECIMAL( -0.7657571834 ), FN_DECIMAL( -0.5268198896 ), FN_DECIMAL( -0.8801903279 ), FN_DECIMAL( -0.6296409617 ), FN_DECIMAL( -0.09492481344 ), FN_DECIMAL( -0.4920470525 ), FN_DECIMAL( 0.7307666154 ), FN_DECIMAL( -0.2514540636 ), FN_DECIMAL( -0.3356210347 ), FN_DECIMAL( -0.3522787894 ), FN_DECIMAL( 0.87847885 ), FN_DECIMAL( -0.7424096346 ), FN_DECIMAL( 0.5757585274 ), FN_DECIMAL( 0.4519299338 ), FN_DECIMAL( 0.6420368628 ), FN_DECIMAL( -0.1128478447 ), FN_DECIMAL( 0.499874883 ), FN_DECIMAL( 0.5291681739 ), FN_DECIMAL( -0.5098837195 ), FN_DECIMAL( 0.5639583502 ), FN_DECIMAL( -0.8456386526 ), FN_DECIMAL( -0.9657134875 ), FN_DECIMAL( -0.576437342 ), FN_DECIMAL( -0.5666013014 ), FN_DECIMAL( 0.5667702405 ), FN_DECIMAL( -0.481316582 ), FN_DECIMAL( 0.7313389916 ), FN_DECIMAL( -0.3805628566 ), FN_DECIMAL( -0.6512675909 ), FN_DECIMAL( -0.2787156951 ), FN_DECIMAL( 0.8648059114 ), FN_DECIMAL( -0.9730216276 ), FN_DECIMAL( -0.8335820906 ), FN_DECIMAL( 0.2673159641 ), FN_DECIMAL( 0.231150148 ), FN_DECIMAL( 0.01286214638 ), FN_DECIMAL( 0.6774953261 ), FN_DECIMAL( 0.6542885718 ), FN_DECIMAL( -0.02545450161 ), FN_DECIMAL( 0.2101238586 ), FN_DECIMAL( -0.5572105885 ), FN_DECIMAL( 0.813705672 ), FN_DECIMAL( -0.7546026951 ), FN_DECIMAL( -0.2502500006 ), FN_DECIMAL( -0.9979289381 ), FN_DECIMAL( 0.7024037039 ), FN_DECIMAL( 0.08990874624 ), FN_DECIMAL( 0.8170812432 ), FN_DECIMAL( 0.4226980265 ), FN_DECIMAL( -0.2442153475 ), FN_DECIMAL( -0.9183326731 ), FN_DECIMAL( 0.6068222411 ), FN_DECIMAL( 0.818676691 ), FN_DECIMAL( -0.7236735282 ), FN_DECIMAL( -0.5383903295 ), FN_DECIMAL( -0.6269337242 ), FN_DECIMAL( -0.0939331121 ), FN_DECIMAL( 0.9203878539 ), FN_DECIMAL( -0.7256396824 ), FN_DECIMAL( 0.6292431149 ), FN_DECIMAL( 0.4234156978 ), FN_DECIMAL( 0.006685688024 ), FN_DECIMAL( -0.2598694113 ), FN_DECIMAL( 0.6408036421 ), FN_DECIMAL( 0.05899871622 ), FN_DECIMAL( 0.7090281418 ), FN_DECIMAL( -0.5905222072 ), FN_DECIMAL( 0.3128214264 ), FN_DECIMAL( -0.691925826 ), FN_DECIMAL( 0.3634019349 ), FN_DECIMAL( -0.6772511147 ), FN_DECIMAL( -0.3204583896 ), FN_DECIMAL( -0.3906740409 ), FN_DECIMAL( -0.3342190395 ), FN_DECIMAL( -0.517779592 ), FN_DECIMAL( -0.6817711267 ), FN_DECIMAL( 0.6422383105 ), FN_DECIMAL( 0.4388482478 ), FN_DECIMAL( 0.2968562611 ), FN_DECIMAL( -0.2019778353 ), FN_DECIMAL( 0.6014865048 ), FN_DECIMAL( 0.9519280722 ), FN_DECIMAL( 0.3398889569 ), FN_DECIMAL( 0.8179709354 ), FN_DECIMAL( 0.2365522154 ), FN_DECIMAL( 0.3262175096 ), FN_DECIMAL( -0.8060715954 ), FN_DECIMAL( -0.2068642503 ), FN_DECIMAL( 0.6208057279 ), FN_DECIMAL( -0.5274282502 ), FN_DECIMAL( -0.3722334928 ), FN_DECIMAL( -0.8923412971 ), FN_DECIMAL( 0.5341834201 ), FN_DECIMAL( -0.3663701513 ), FN_DECIMAL( -0.6114600319 ), FN_DECIMAL( 0.5026307556 ), FN_DECIMAL( 0.8396151729 ), FN_DECIMAL( 0.9245042467 ), FN_DECIMAL( -0.7994843957 ), FN_DECIMAL( -0.5357200589 ), FN_DECIMAL( -0.6283359739 ), FN_DECIMAL( -0.61351886 ), FN_DECIMAL( -0.875632008 ), FN_DECIMAL( -0.5278879423 ), FN_DECIMAL( 0.9087491985 ), FN_DECIMAL( -0.03500215466 ), FN_DECIMAL( -0.261365798 ), FN_DECIMAL( -0.579523541 ), FN_DECIMAL( -0.3765052689 ), FN_DECIMAL( -0.74398252 ), FN_DECIMAL( 0.4257318052 ), FN_DECIMAL( -0.1214508921 ), FN_DECIMAL( 0.8561809753 ), FN_DECIMAL( 0.6802835104 ), FN_DECIMAL( -0.5452131039 ), FN_DECIMAL( -0.1997156478 ), FN_DECIMAL( 0.4562348357 ), FN_DECIMAL( -0.811704301 ), FN_DECIMAL( 0.67793962 ), FN_DECIMAL( -0.9237819106 ), FN_DECIMAL( 0.6973511259 ), FN_DECIMAL( -0.5189506 ), FN_DECIMAL( 0.5517320032 ), FN_DECIMAL( -0.396710831 ), FN_DECIMAL( 0.5493762815 ), FN_DECIMAL( -0.2507853002 ), FN_DECIMAL( 0.4788634005 ), FN_DECIMAL( 0.387333516 ), FN_DECIMAL( -0.2176515694 ), FN_DECIMAL( 0.6749832419 ), FN_DECIMAL( 0.2148283022 ), FN_DECIMAL( -0.7521815872 ), FN_DECIMAL( 0.4697000159 ), FN_DECIMAL( 0.7890593699 ), FN_DECIMAL( -0.7606162952 ), FN_DECIMAL( 0.01083397843 ), FN_DECIMAL( 0.5254091908 ), FN_DECIMAL( -0.6748025877 ), FN_DECIMAL( 0.751091524 ), FN_DECIMAL( 0.05259056135 ), FN_DECIMAL( 0.01889481232 ), FN_DECIMAL( -0.6037423727 ), FN_DECIMAL( -0.6542965129 ), FN_DECIMAL( 0.08873301081 ), FN_DECIMAL( -0.6191345671 ), FN_DECIMAL( 0.4331858488 ), FN_DECIMAL( -0.3858351946 ), FN_DECIMAL( -0.1429059747 ), FN_DECIMAL( 0.4118221036 ), FN_DECIMAL( -0.6247153214 ), FN_DECIMAL( -0.611423014 ), FN_DECIMAL( 0.5542939606 ), FN_DECIMAL( -0.9432768808 ), FN_DECIMAL( -0.4567870451 ), FN_DECIMAL( -0.7349133547 ), FN_DECIMAL( 0.399304489 ), FN_DECIMAL( -0.7474927672 ), FN_DECIMAL( 0.02589419753 ), FN_DECIMAL( 0.783915821 ), FN_DECIMAL( 0.6138668752 ), FN_DECIMAL( 0.4276376047 ), FN_DECIMAL( -0.4347886353 ), FN_DECIMAL( 0.02947841302 ), FN_DECIMAL( -0.833742746 ), FN_DECIMAL( 0.3817221742 ), FN_DECIMAL( -0.8743368359 ), FN_DECIMAL( -0.3823443796 ), FN_DECIMAL( -0.6829243811 ), FN_DECIMAL( -0.3681903049 ), FN_DECIMAL( -0.367626833 ), FN_DECIMAL( -0.434583373 ), FN_DECIMAL( 0.235891995 ), FN_DECIMAL( -0.6874880269 ), FN_DECIMAL( -0.5115661773 ), FN_DECIMAL( -0.5534962601 ), FN_DECIMAL( 0.5632777056 ), FN_DECIMAL( 0.686191532 ), FN_DECIMAL( -0.05095871588 ), FN_DECIMAL( -0.06865785057 ), FN_DECIMAL( -0.5975288531 ), FN_DECIMAL( -0.6429790056 ), FN_DECIMAL( -0.3729361548 ), FN_DECIMAL( 0.2237917666 ), FN_DECIMAL( 0.6046773225 ), FN_DECIMAL( -0.5041542295 ), FN_DECIMAL( -0.03972191174 ), FN_DECIMAL( 0.7028828406 ), FN_DECIMAL( -0.5560856498 ), FN_DECIMAL( 0.5898328456 ), FN_DECIMAL( -0.9308076766 ), FN_DECIMAL( 0.4617069864 ), FN_DECIMAL( 0.3190983137 ), FN_DECIMAL( 0.9116567753 ), FN_DECIMAL( -0.45029554 ), FN_DECIMAL( 0.3346334459 ), FN_DECIMAL( 0.8525005645 ), FN_DECIMAL( 0.2528483381 ), FN_DECIMAL( -0.8306630147 ), FN_DECIMAL( -0.6880390622 ), FN_DECIMAL( 0.7448684026 ), FN_DECIMAL( -0.1963355843 ), FN_DECIMAL( -0.5900257974 ), FN_DECIMAL( 0.9097057294 ), FN_DECIMAL( -0.2509196808 ), }; const FN_DECIMAL CELL_3D_Y[] = { FN_DECIMAL( -0.6760585049 ), FN_DECIMAL( -0.09136176499 ), FN_DECIMAL( 0.1681325679 ), FN_DECIMAL( -0.6688468686 ), FN_DECIMAL( -0.4822753902 ), FN_DECIMAL( -0.7891068824 ), FN_DECIMAL( -0.1877509944 ), FN_DECIMAL( 0.548470914 ), FN_DECIMAL( -0.463339443 ), FN_DECIMAL( -0.4050542082 ), FN_DECIMAL( 0.3218158513 ), FN_DECIMAL( 0.2546493823 ), FN_DECIMAL( -0.3753271935 ), FN_DECIMAL( 0.4745384887 ), FN_DECIMAL( 0.481254652 ), FN_DECIMAL( -0.8934416489 ), FN_DECIMAL( -0.6737085076 ), FN_DECIMAL( 0.7469917228 ), FN_DECIMAL( 0.3826230411 ), FN_DECIMAL( 0.6751013678 ), FN_DECIMAL( -0.7248119515 ), FN_DECIMAL( -0.3224276742 ), FN_DECIMAL( -0.02076190936 ), FN_DECIMAL( -0.6404268166 ), FN_DECIMAL( -0.5292028444 ), FN_DECIMAL( 0.7151414636 ), FN_DECIMAL( -0.6144655059 ), FN_DECIMAL( -0.369912124 ), FN_DECIMAL( 0.6942067212 ), FN_DECIMAL( -0.4481558248 ), FN_DECIMAL( -0.6366894559 ), FN_DECIMAL( 0.5956568471 ), FN_DECIMAL( 0.564274539 ), FN_DECIMAL( 0.7145584688 ), FN_DECIMAL( 0.6871918316 ), FN_DECIMAL( 0.5657918509 ), FN_DECIMAL( -0.6275978114 ), FN_DECIMAL( 0.4146983062 ), FN_DECIMAL( 0.2638993789 ), FN_DECIMAL( -0.792633138 ), FN_DECIMAL( 0.5706133514 ), FN_DECIMAL( 0.8606546462 ), FN_DECIMAL( 0.6490900316 ), FN_DECIMAL( -0.8242699196 ), FN_DECIMAL( 0.6765819124 ), FN_DECIMAL( 0.1959534069 ), FN_DECIMAL( -0.8426769757 ), FN_DECIMAL( -0.5917672797 ), FN_DECIMAL( 0.7517364266 ), FN_DECIMAL( 0.03252559226 ), FN_DECIMAL( 0.0883617105 ), FN_DECIMAL( 0.4475064813 ), FN_DECIMAL( -0.1418643552 ), FN_DECIMAL( 0.7343428473 ), FN_DECIMAL( 0.3870192548 ), FN_DECIMAL( -0.7716703522 ), FN_DECIMAL( 0.4839898327 ), FN_DECIMAL( 0.7437439055 ), FN_DECIMAL( -0.5989573348 ), FN_DECIMAL( -0.8357068955 ), FN_DECIMAL( 0.6086049038 ), FN_DECIMAL( 0.9194627258 ), FN_DECIMAL( 0.4718297238 ), FN_DECIMAL( -0.2650335884 ), FN_DECIMAL( -0.6470352599 ), FN_DECIMAL( -0.5555181303 ), FN_DECIMAL( 0.1222351235 ), FN_DECIMAL( 0.7802044684 ), FN_DECIMAL( -0.8636947022 ), FN_DECIMAL( -0.2341352163 ), FN_DECIMAL( 0.683030874 ), FN_DECIMAL( -0.5005858287 ), FN_DECIMAL( 0.2334616211 ), FN_DECIMAL( 0.2576877608 ), FN_DECIMAL( 0.6666816727 ), FN_DECIMAL( -0.7663996863 ), FN_DECIMAL( 0.794201982 ), FN_DECIMAL( 0.6189308788 ), FN_DECIMAL( 0.6071033261 ), FN_DECIMAL( -0.4206058253 ), FN_DECIMAL( -0.3957336915 ), FN_DECIMAL( -0.8170257484 ), FN_DECIMAL( -0.1043240417 ), FN_DECIMAL( 0.0002167596213 ), FN_DECIMAL( 0.1816339018 ), FN_DECIMAL( -0.6838094939 ), FN_DECIMAL( -0.2495341969 ), FN_DECIMAL( -0.7116756954 ), FN_DECIMAL( -0.03361673621 ), FN_DECIMAL( -0.3350836431 ), FN_DECIMAL( 0.2137186039 ), FN_DECIMAL( 0.2557996786 ), FN_DECIMAL( 0.7490117093 ), FN_DECIMAL( 0.4942936549 ), FN_DECIMAL( -0.352686853 ), FN_DECIMAL( -0.3952445435 ), FN_DECIMAL( -0.0459964767 ), FN_DECIMAL( -0.7115787471 ), FN_DECIMAL( 0.08022899756 ), FN_DECIMAL( 0.5362268157 ), FN_DECIMAL( -0.8258613686 ), FN_DECIMAL( 0.1114171723 ), FN_DECIMAL( 0.3882823051 ), FN_DECIMAL( -0.7915404457 ), FN_DECIMAL( 0.3250957662 ), FN_DECIMAL( 0.6401346464 ), FN_DECIMAL( -0.2662724517 ), FN_DECIMAL( -0.6727907114 ), FN_DECIMAL( -0.994730818 ), FN_DECIMAL( -0.3596358977 ), FN_DECIMAL( 0.2344610069 ), FN_DECIMAL( -0.6645215546 ), FN_DECIMAL( -0.7107590611 ), FN_DECIMAL( -0.4646617327 ), FN_DECIMAL( 0.6717191355 ), FN_DECIMAL( 0.5101893498 ), FN_DECIMAL( 0.1185768238 ), FN_DECIMAL( 0.236005093 ), FN_DECIMAL( -0.7811024061 ), FN_DECIMAL( 0.5089325193 ), FN_DECIMAL( 0.6073187658 ), FN_DECIMAL( -0.7930732557 ), FN_DECIMAL( -0.6822767155 ), FN_DECIMAL( 0.3201532885 ), FN_DECIMAL( 0.7545302807 ), FN_DECIMAL( 0.1072664448 ), FN_DECIMAL( 0.6784033173 ), FN_DECIMAL( -0.6595924967 ), FN_DECIMAL( 0.7276509498 ), FN_DECIMAL( 0.5586689436 ), FN_DECIMAL( -0.6498636788 ), FN_DECIMAL( 0.6789333174 ), FN_DECIMAL( 0.7105966551 ), FN_DECIMAL( -0.2872214155 ), FN_DECIMAL( 0.496746217 ), FN_DECIMAL( -0.3880337977 ), FN_DECIMAL( 0.7324070604 ), FN_DECIMAL( -0.9326634749 ), FN_DECIMAL( -0.5867839255 ), FN_DECIMAL( 0.8003043651 ), FN_DECIMAL( -0.1631882481 ), FN_DECIMAL( -0.6796374681 ), FN_DECIMAL( -0.8066678503 ), FN_DECIMAL( 0.4238177418 ), FN_DECIMAL( 0.7715863549 ), FN_DECIMAL( 0.5455367347 ), FN_DECIMAL( -0.03205115397 ), FN_DECIMAL( -0.6005545066 ), FN_DECIMAL( -0.5423640002 ), FN_DECIMAL( 0.3569205906 ), FN_DECIMAL( -0.582071752 ), FN_DECIMAL( 0.6407354361 ), FN_DECIMAL( 0.7777142984 ), FN_DECIMAL( -0.09956428618 ), FN_DECIMAL( 0.1100002681 ), FN_DECIMAL( 0.8136349123 ), FN_DECIMAL( 0.2923431904 ), FN_DECIMAL( 0.9735794425 ), FN_DECIMAL( 0.8324974864 ), FN_DECIMAL( -0.6179617717 ), FN_DECIMAL( -0.9248386523 ), FN_DECIMAL( -0.6448780771 ), FN_DECIMAL( -0.5274402761 ), FN_DECIMAL( -0.7862170565 ), FN_DECIMAL( 0.2682099744 ), FN_DECIMAL( -0.5848777694 ), FN_DECIMAL( -0.6364561467 ), FN_DECIMAL( -0.7167402514 ), FN_DECIMAL( -0.8677012494 ), FN_DECIMAL( 0.4205286707 ), FN_DECIMAL( -0.7007832749 ), FN_DECIMAL( 0.243272451 ), FN_DECIMAL( -0.1899846085 ), FN_DECIMAL( -0.6146124977 ), FN_DECIMAL( -0.8093357692 ), FN_DECIMAL( -0.03545096987 ), FN_DECIMAL( -0.7191590868 ), FN_DECIMAL( 0.7478645848 ), FN_DECIMAL( 0.3623517328 ), FN_DECIMAL( 0.8436992512 ), FN_DECIMAL( -0.2445711729 ), FN_DECIMAL( 0.6897356637 ), FN_DECIMAL( -0.1708070787 ), FN_DECIMAL( 0.4639272368 ), FN_DECIMAL( -0.7917186656 ), FN_DECIMAL( 0.02980025428 ), FN_DECIMAL( 0.6334156172 ), FN_DECIMAL( -0.9815544807 ), FN_DECIMAL( -0.2307217304 ), FN_DECIMAL( 0.1080823318 ), FN_DECIMAL( 0.5167601798 ), FN_DECIMAL( -0.845120016 ), FN_DECIMAL( 0.441572562 ), FN_DECIMAL( 0.5876789172 ), FN_DECIMAL( -0.6365908737 ), FN_DECIMAL( 0.68350166 ), FN_DECIMAL( 0.5849723959 ), FN_DECIMAL( 0.1164114357 ), FN_DECIMAL( -0.7379813884 ), FN_DECIMAL( -0.9613237178 ), FN_DECIMAL( -0.9071943084 ), FN_DECIMAL( -0.7682111105 ), FN_DECIMAL( 0.639074459 ), FN_DECIMAL( -0.619358298 ), FN_DECIMAL( 0.2807257131 ), FN_DECIMAL( -0.01800868791 ), FN_DECIMAL( 0.3776607289 ), FN_DECIMAL( 0.7207567823 ), FN_DECIMAL( 0.5536661486 ), FN_DECIMAL( -0.9974053117 ), FN_DECIMAL( -0.02047200006 ), FN_DECIMAL( -0.6739453804 ), FN_DECIMAL( -0.5607471297 ), FN_DECIMAL( 0.8815553192 ), FN_DECIMAL( 0.8275977415 ), FN_DECIMAL( 0.3928902456 ), FN_DECIMAL( 0.550991396 ), FN_DECIMAL( 0.4247623676 ), FN_DECIMAL( -0.3436948871 ), FN_DECIMAL( -0.3653537677 ), FN_DECIMAL( 0.3181702902 ), FN_DECIMAL( -0.6067173171 ), FN_DECIMAL( -0.8984128477 ), FN_DECIMAL( 0.4220839766 ), FN_DECIMAL( 0.7238407199 ), FN_DECIMAL( -0.7766913695 ), FN_DECIMAL( 0.6460037842 ), FN_DECIMAL( 0.2544775664 ), FN_DECIMAL( 0.6488840578 ), FN_DECIMAL( 0.805016833 ), FN_DECIMAL( -0.9183807036 ), FN_DECIMAL( 0.4144046357 ), FN_DECIMAL( 0.270587208 ), FN_DECIMAL( -0.8813684494 ), FN_DECIMAL( 0.6985971877 ), FN_DECIMAL( -0.7795603017 ), FN_DECIMAL( -0.8624480731 ), FN_DECIMAL( 0.5532697017 ), FN_DECIMAL( 0.711179521 ), FN_DECIMAL( -0.7798160574 ), FN_DECIMAL( 0.5225859041 ), FN_DECIMAL( 0.1261859368 ), FN_DECIMAL( 0.3398033582 ), FN_DECIMAL( -0.7472173667 ), FN_DECIMAL( -0.4032647119 ), FN_DECIMAL( -0.4246578154 ), FN_DECIMAL( 0.8481212377 ), FN_DECIMAL( -0.2144838537 ), FN_DECIMAL( 0.3431714491 ), FN_DECIMAL( 0.5310188231 ), FN_DECIMAL( 0.6682978632 ), FN_DECIMAL( 0.3110433206 ), FN_DECIMAL( 0.9263293599 ), FN_DECIMAL( -0.6155600569 ), FN_DECIMAL( 0.07169784399 ), FN_DECIMAL( 0.8985888773 ), }; const FN_DECIMAL CELL_3D_Z[] = { FN_DECIMAL( -0.6341391283 ), FN_DECIMAL( -0.7207118346 ), FN_DECIMAL( 0.9597866014 ), FN_DECIMAL( 0.3237504235 ), FN_DECIMAL( -0.7588642466 ), FN_DECIMAL( -0.01782410481 ), FN_DECIMAL( 0.2515593809 ), FN_DECIMAL( 0.2207257205 ), FN_DECIMAL( -0.8579541106 ), FN_DECIMAL( 0.3406410681 ), FN_DECIMAL( 0.7669470462 ), FN_DECIMAL( -0.9431957648 ), FN_DECIMAL( 0.7676171537 ), FN_DECIMAL( -0.6000491115 ), FN_DECIMAL( -0.7062096948 ), FN_DECIMAL( 0.2550207115 ), FN_DECIMAL( 0.7347325213 ), FN_DECIMAL( 0.5163625202 ), FN_DECIMAL( -0.5394270162 ), FN_DECIMAL( 0.3336656285 ), FN_DECIMAL( -0.0638635111 ), FN_DECIMAL( -0.6503195787 ), FN_DECIMAL( 0.3143356798 ), FN_DECIMAL( -0.5039217245 ), FN_DECIMAL( 0.6605180464 ), FN_DECIMAL( -0.6855479011 ), FN_DECIMAL( -0.6693185756 ), FN_DECIMAL( 0.1832083647 ), FN_DECIMAL( -0.5666258437 ), FN_DECIMAL( 0.3576482138 ), FN_DECIMAL( -0.6571949095 ), FN_DECIMAL( -0.7522101635 ), FN_DECIMAL( -0.7238865886 ), FN_DECIMAL( 0.4538887323 ), FN_DECIMAL( 0.2467106257 ), FN_DECIMAL( 0.7274778869 ), FN_DECIMAL( 0.3151170655 ), FN_DECIMAL( -0.8802293764 ), FN_DECIMAL( -0.2167232729 ), FN_DECIMAL( 0.5854637865 ), FN_DECIMAL( 0.7019741052 ), FN_DECIMAL( 0.5091756071 ), FN_DECIMAL( 0.1973189533 ), FN_DECIMAL( 0.46743546 ), FN_DECIMAL( 0.05197599597 ), FN_DECIMAL( 0.088354718 ), FN_DECIMAL( 0.5380464843 ), FN_DECIMAL( -0.6458224544 ), FN_DECIMAL( -0.5045952393 ), FN_DECIMAL( 0.419347884 ), FN_DECIMAL( 0.8000823542 ), FN_DECIMAL( -0.07445020656 ), FN_DECIMAL( -0.6272881641 ), FN_DECIMAL( -0.428020311 ), FN_DECIMAL( -0.2747382083 ), FN_DECIMAL( -0.08987283726 ), FN_DECIMAL( 0.8699098354 ), FN_DECIMAL( 0.4524761885 ), FN_DECIMAL( -0.3274603257 ), FN_DECIMAL( 0.4882262167 ), FN_DECIMAL( -0.7189983256 ), FN_DECIMAL( 0.1746079907 ), FN_DECIMAL( 0.0751772698 ), FN_DECIMAL( -0.6152927202 ), FN_DECIMAL( 0.4998474673 ), FN_DECIMAL( -0.6979677227 ), FN_DECIMAL( 0.7568667263 ), FN_DECIMAL( -0.6152612058 ), FN_DECIMAL( 0.06447140991 ), FN_DECIMAL( -0.8155744872 ), FN_DECIMAL( -0.5229602449 ), FN_DECIMAL( 0.6567836838 ), FN_DECIMAL( -0.4799905631 ), FN_DECIMAL( 0.03153534591 ), FN_DECIMAL( 0.4724992466 ), FN_DECIMAL( -0.3026458097 ), FN_DECIMAL( -0.2191225827 ), FN_DECIMAL( -0.620692287 ), FN_DECIMAL( 0.3107552588 ), FN_DECIMAL( 0.8235670294 ), FN_DECIMAL( 0.6474915988 ), FN_DECIMAL( -0.5047637941 ), FN_DECIMAL( 0.4911488878 ), FN_DECIMAL( -0.2307138167 ), FN_DECIMAL( -0.5216800015 ), FN_DECIMAL( 0.6789305939 ), FN_DECIMAL( 0.9403734863 ), FN_DECIMAL( 0.702390397 ), FN_DECIMAL( 0.7347584625 ), FN_DECIMAL( 0.6779567958 ), FN_DECIMAL( 0.9765635805 ), FN_DECIMAL( -0.9436177661 ), FN_DECIMAL( -0.358465925 ), FN_DECIMAL( -0.3058706624 ), FN_DECIMAL( 0.5533414464 ), FN_DECIMAL( -0.8838306897 ), FN_DECIMAL( 0.04496841812 ), FN_DECIMAL( 0.01687374963 ), FN_DECIMAL( -0.9927133148 ), FN_DECIMAL( -0.211752318 ), FN_DECIMAL( 0.3732015249 ), FN_DECIMAL( 0.9632990593 ), FN_DECIMAL( -0.07682417004 ), FN_DECIMAL( -0.07232213047 ), FN_DECIMAL( 0.4733721775 ), FN_DECIMAL( 0.2579229713 ), FN_DECIMAL( 0.7995216286 ), FN_DECIMAL( 0.3928189967 ), FN_DECIMAL( 0.04107517667 ), FN_DECIMAL( 0.1534542912 ), FN_DECIMAL( 0.6468965045 ), FN_DECIMAL( 0.4030684878 ), FN_DECIMAL( -0.5617300988 ), FN_DECIMAL( -0.885463029 ), FN_DECIMAL( 0.693729985 ), FN_DECIMAL( -0.5736527866 ), FN_DECIMAL( -0.9911905409 ), FN_DECIMAL( -0.66451538 ), FN_DECIMAL( 0.2028855685 ), FN_DECIMAL( 0.8019541421 ), FN_DECIMAL( -0.3903877149 ), FN_DECIMAL( -0.4888495114 ), FN_DECIMAL( -0.2753714057 ), FN_DECIMAL( -0.8915202143 ), FN_DECIMAL( 0.5273119089 ), FN_DECIMAL( 0.9363714773 ), FN_DECIMAL( -0.5212228249 ), FN_DECIMAL( -0.31642672 ), FN_DECIMAL( 0.2409440761 ), FN_DECIMAL( -0.703776404 ), FN_DECIMAL( -0.6996810411 ), FN_DECIMAL( -0.7058714505 ), FN_DECIMAL( -0.3650566783 ), FN_DECIMAL( 0.1064744278 ), FN_DECIMAL( 0.7985729102 ), FN_DECIMAL( 0.424680257 ), FN_DECIMAL( -0.6384535592 ), FN_DECIMAL( 0.1540161646 ), FN_DECIMAL( -0.07702731943 ), FN_DECIMAL( -0.5627789132 ), FN_DECIMAL( -0.7667919169 ), FN_DECIMAL( -0.509815999 ), FN_DECIMAL( 0.4590525092 ), FN_DECIMAL( 0.1552595611 ), FN_DECIMAL( 0.345402042 ), FN_DECIMAL( 0.7537656024 ), FN_DECIMAL( 0.7906259247 ), FN_DECIMAL( -0.6218493452 ), FN_DECIMAL( 0.02979350071 ), FN_DECIMAL( -0.1337893489 ), FN_DECIMAL( -0.1483818606 ), FN_DECIMAL( 0.549965562 ), FN_DECIMAL( 0.01882482408 ), FN_DECIMAL( -0.7833783002 ), FN_DECIMAL( 0.4702855809 ), FN_DECIMAL( 0.2435827372 ), FN_DECIMAL( 0.2978428332 ), FN_DECIMAL( 0.2256499906 ), FN_DECIMAL( 0.4885036897 ), FN_DECIMAL( 0.5312962584 ), FN_DECIMAL( 0.05401156992 ), FN_DECIMAL( 0.1749922158 ), FN_DECIMAL( -0.7352273018 ), FN_DECIMAL( 0.6058980284 ), FN_DECIMAL( 0.4416079111 ), FN_DECIMAL( 0.4417378638 ), FN_DECIMAL( 0.5455879807 ), FN_DECIMAL( -0.6681295324 ), FN_DECIMAL( 0.1973431441 ), FN_DECIMAL( 0.4053292055 ), FN_DECIMAL( 0.2220375492 ), FN_DECIMAL( 0.2957118467 ), FN_DECIMAL( 0.6910913512 ), FN_DECIMAL( 0.5940890106 ), FN_DECIMAL( -0.2014135283 ), FN_DECIMAL( -0.9172588213 ), FN_DECIMAL( -0.4254361401 ), FN_DECIMAL( -0.6146586825 ), FN_DECIMAL( -0.7996193253 ), FN_DECIMAL( -0.3716777111 ), FN_DECIMAL( -0.9448876842 ), FN_DECIMAL( -0.2620349924 ), FN_DECIMAL( 0.9615995749 ), FN_DECIMAL( -0.4679683524 ), FN_DECIMAL( 0.3905937144 ), FN_DECIMAL( 0.613593722 ), FN_DECIMAL( 0.1422937358 ), FN_DECIMAL( 0.1908754211 ), FN_DECIMAL( 0.8189704912 ), FN_DECIMAL( -0.7300408736 ), FN_DECIMAL( -0.4108776451 ), FN_DECIMAL( -0.5319834504 ), FN_DECIMAL( -0.8970265651 ), FN_DECIMAL( -0.5386359045 ), FN_DECIMAL( 0.4082255906 ), FN_DECIMAL( 0.7245356676 ), FN_DECIMAL( 0.5239080873 ), FN_DECIMAL( -0.8937552226 ), FN_DECIMAL( -0.553637673 ), FN_DECIMAL( 0.2354455182 ), FN_DECIMAL( -0.0860293075 ), FN_DECIMAL( -0.1399373318 ), FN_DECIMAL( -0.4666323327 ), FN_DECIMAL( 0.5560157407 ), FN_DECIMAL( 0.1772619533 ), FN_DECIMAL( -0.8893937725 ), FN_DECIMAL( -0.5632714576 ), FN_DECIMAL( -0.5666264959 ), FN_DECIMAL( -0.3670263736 ), FN_DECIMAL( -0.06717242579 ), FN_DECIMAL( 0.6205295181 ), FN_DECIMAL( -0.4110536264 ), FN_DECIMAL( 0.7090054553 ), FN_DECIMAL( 0.183899597 ), FN_DECIMAL( -0.5605470555 ), FN_DECIMAL( 0.3879565548 ), FN_DECIMAL( 0.7420893903 ), FN_DECIMAL( -0.2347595118 ), FN_DECIMAL( -0.8577217497 ), FN_DECIMAL( 0.6325590203 ), FN_DECIMAL( -0.8736152276 ), FN_DECIMAL( 0.7048011129 ), FN_DECIMAL( -0.06317948268 ), FN_DECIMAL( 0.8753285574 ), FN_DECIMAL( -0.05843650473 ), FN_DECIMAL( -0.3674922622 ), FN_DECIMAL( -0.5256624401 ), FN_DECIMAL( 0.7861039337 ), FN_DECIMAL( 0.3287714416 ), FN_DECIMAL( 0.5910593099 ), FN_DECIMAL( -0.3896960134 ), FN_DECIMAL( 0.6864605361 ), FN_DECIMAL( 0.7164918431 ), FN_DECIMAL( -0.290014277 ), FN_DECIMAL( -0.6796169617 ), FN_DECIMAL( 0.1632515592 ), FN_DECIMAL( 0.04485347486 ), FN_DECIMAL( 0.8320545697 ), FN_DECIMAL( 0.01339408056 ), FN_DECIMAL( -0.2874989857 ), FN_DECIMAL( 0.615630723 ), FN_DECIMAL( 0.3430367014 ), FN_DECIMAL( 0.8193658136 ), FN_DECIMAL( -0.5829600957 ), FN_DECIMAL( 0.07911697781 ), FN_DECIMAL( 0.7854296063 ), FN_DECIMAL( -0.4107442306 ), FN_DECIMAL( 0.4766964066 ), FN_DECIMAL( -0.9045999527 ), FN_DECIMAL( -0.1673856787 ), FN_DECIMAL( 0.2828077348 ), FN_DECIMAL( -0.5902737632 ), FN_DECIMAL( -0.321506229 ), FN_DECIMAL( -0.5224513133 ), FN_DECIMAL( -0.4090169985 ), FN_DECIMAL( -0.3599685311 ), }; static int FastFloor( FN_DECIMAL f ) { return ( f >= 0 ? (int)f : (int)f - 1 ); } static int FastRound( FN_DECIMAL f ) { return ( f >= 0 ) ? (int)( f + FN_DECIMAL( 0.5 ) ) : (int)( f - FN_DECIMAL( 0.5 ) ); } static int FastAbs( int i ) { return abs( i ); } static FN_DECIMAL FastAbs( FN_DECIMAL f ) { return fabs( f ); } static FN_DECIMAL Lerp( FN_DECIMAL a, FN_DECIMAL b, FN_DECIMAL t ) { return a + t * ( b - a ); } static FN_DECIMAL InterpHermiteFunc( FN_DECIMAL t ) { return t * t * ( 3 - 2 * t ); } static FN_DECIMAL InterpQuinticFunc( FN_DECIMAL t ) { return t * t * t * ( t * ( t * 6 - 15 ) + 10 ); } static FN_DECIMAL CubicLerp( FN_DECIMAL a, FN_DECIMAL b, FN_DECIMAL c, FN_DECIMAL d, FN_DECIMAL t ) { FN_DECIMAL p = ( d - c ) - ( a - b ); return t * t * t * p + t * t * ( ( a - b ) - p ) + t * ( c - a ) + b; } void FastNoise::SetSeed( int seed ) { m_seed = seed; std::mt19937 gen( seed ); for ( int i = 0; i < 256; i++ ) m_perm[i] = i; for ( int j = 0; j < 256; j++ ) { std::uniform_int_distribution<> dis( 0, 256 - j ); int k = dis( gen ) + j; int l = m_perm[j]; m_perm[j] = m_perm[j + 256] = m_perm[k]; m_perm[k] = l; m_perm12[j] = m_perm12[j + 256] = m_perm[j] % 12; } } void FastNoise::CalculateFractalBounding() { float amp = m_gain; float ampFractal = 1.0f; for ( int i = 1; i < m_octaves; i++ ) { ampFractal += amp; amp *= m_gain; } m_fractalBounding = 1.0f / ampFractal; } void FastNoise::SetCellularDistance2Indices( int cellularDistanceIndex0, int cellularDistanceIndex1 ) { m_cellularDistanceIndex0 = std::min( cellularDistanceIndex0, cellularDistanceIndex1 ); m_cellularDistanceIndex1 = std::max( cellularDistanceIndex0, cellularDistanceIndex1 ); m_cellularDistanceIndex0 = std::min( std::max( m_cellularDistanceIndex0, 0 ), FN_CELLULAR_INDEX_MAX ); m_cellularDistanceIndex1 = std::min( std::max( m_cellularDistanceIndex1, 0 ), FN_CELLULAR_INDEX_MAX ); } void FastNoise::GetCellularDistance2Indices( int& cellularDistanceIndex0, int& cellularDistanceIndex1 ) const { cellularDistanceIndex0 = m_cellularDistanceIndex0; cellularDistanceIndex1 = m_cellularDistanceIndex1; } unsigned char FastNoise::Index2D_12( unsigned char offset, int x, int y ) const { return m_perm12[( x & 0xff ) + m_perm[( y & 0xff ) + offset]]; } unsigned char FastNoise::Index3D_12( unsigned char offset, int x, int y, int z ) const { return m_perm12[( x & 0xff ) + m_perm[( y & 0xff ) + m_perm[( z & 0xff ) + offset]]]; } unsigned char FastNoise::Index4D_32( unsigned char offset, int x, int y, int z, int w ) const { return m_perm[( x & 0xff ) + m_perm[( y & 0xff ) + m_perm[( z & 0xff ) + m_perm[( w & 0xff ) + offset]]]] & 31; } unsigned char FastNoise::Index2D_256( unsigned char offset, int x, int y ) const { return m_perm[( x & 0xff ) + m_perm[( y & 0xff ) + offset]]; } unsigned char FastNoise::Index3D_256( unsigned char offset, int x, int y, int z ) const { return m_perm[( x & 0xff ) + m_perm[( y & 0xff ) + m_perm[( z & 0xff ) + offset]]]; } unsigned char FastNoise::Index4D_256( unsigned char offset, int x, int y, int z, int w ) const { return m_perm[( x & 0xff ) + m_perm[( y & 0xff ) + m_perm[( z & 0xff ) + m_perm[( w & 0xff ) + offset]]]]; } // Hashing #define X_PRIME 1619 #define Y_PRIME 31337 #define Z_PRIME 6971 #define W_PRIME 1013 static FN_DECIMAL ValCoord2D( int seed, int x, int y ) { int n = seed; n ^= X_PRIME * x; n ^= Y_PRIME * y; return ( n * n * n * 60493 ) / FN_DECIMAL( 2147483648 ); } static FN_DECIMAL ValCoord3D( int seed, int x, int y, int z ) { int n = seed; n ^= X_PRIME * x; n ^= Y_PRIME * y; n ^= Z_PRIME * z; return ( n * n * n * 60493 ) / FN_DECIMAL( 2147483648 ); } static FN_DECIMAL ValCoord4D( int seed, int x, int y, int z, int w ) { int n = seed; n ^= X_PRIME * x; n ^= Y_PRIME * y; n ^= Z_PRIME * z; n ^= W_PRIME * w; return ( n * n * n * 60493 ) / FN_DECIMAL( 2147483648 ); } FN_DECIMAL FastNoise::ValCoord2DFast( unsigned char offset, int x, int y ) const { return VAL_LUT[Index2D_256( offset, x, y )]; } FN_DECIMAL FastNoise::ValCoord3DFast( unsigned char offset, int x, int y, int z ) const { return VAL_LUT[Index3D_256( offset, x, y, z )]; } FN_DECIMAL FastNoise::GradCoord2D( unsigned char offset, int x, int y, FN_DECIMAL xd, FN_DECIMAL yd ) const { unsigned char lutPos = Index2D_12( offset, x, y ); return xd * GRAD_X[lutPos] + yd * GRAD_Y[lutPos]; } FN_DECIMAL FastNoise::GradCoord3D( unsigned char offset, int x, int y, int z, FN_DECIMAL xd, FN_DECIMAL yd, FN_DECIMAL zd ) const { unsigned char lutPos = Index3D_12( offset, x, y, z ); return xd * GRAD_X[lutPos] + yd * GRAD_Y[lutPos] + zd * GRAD_Z[lutPos]; } FN_DECIMAL FastNoise::GradCoord4D( unsigned char offset, int x, int y, int z, int w, FN_DECIMAL xd, FN_DECIMAL yd, FN_DECIMAL zd, FN_DECIMAL wd ) const { unsigned char lutPos = Index4D_32( offset, x, y, z, w ) << 2; return xd * GRAD_4D[lutPos] + yd * GRAD_4D[lutPos + 1] + zd * GRAD_4D[lutPos + 2] + wd * GRAD_4D[lutPos + 3]; } FN_DECIMAL FastNoise::GetNoise( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { x *= m_frequency; y *= m_frequency; z *= m_frequency; switch ( m_noiseType ) { case Value: return SingleValue( 0, x, y, z ); case ValueFractal: switch ( m_fractalType ) { case FBM: return SingleValueFractalFBM( x, y, z ); case Billow: return SingleValueFractalBillow( x, y, z ); case RigidMulti: return SingleValueFractalRigidMulti( x, y, z ); default: return 0; } case Perlin: return SinglePerlin( 0, x, y, z ); case PerlinFractal: switch ( m_fractalType ) { case FBM: return SinglePerlinFractalFBM( x, y, z ); case Billow: return SinglePerlinFractalBillow( x, y, z ); case RigidMulti: return SinglePerlinFractalRigidMulti( x, y, z ); default: return 0; } case Simplex: return SingleSimplex( 0, x, y, z ); case SimplexFractal: switch ( m_fractalType ) { case FBM: return SingleSimplexFractalFBM( x, y, z ); case Billow: return SingleSimplexFractalBillow( x, y, z ); case RigidMulti: return SingleSimplexFractalRigidMulti( x, y, z ); default: return 0; } case Cellular: switch ( m_cellularReturnType ) { case CellValue: case NoiseLookup: case Distance: return SingleCellular( x, y, z ); default: return SingleCellular2Edge( x, y, z ); } case WhiteNoise: return GetWhiteNoise( x, y, z ); case Cubic: return SingleCubic( 0, x, y, z ); case CubicFractal: switch ( m_fractalType ) { case FBM: return SingleCubicFractalFBM( x, y, z ); case Billow: return SingleCubicFractalBillow( x, y, z ); case RigidMulti: return SingleCubicFractalRigidMulti( x, y, z ); } default: return 0; } } FN_DECIMAL FastNoise::GetNoise( FN_DECIMAL x, FN_DECIMAL y ) const { x *= m_frequency; y *= m_frequency; switch ( m_noiseType ) { case Value: return SingleValue( 0, x, y ); case ValueFractal: switch ( m_fractalType ) { case FBM: return SingleValueFractalFBM( x, y ); case Billow: return SingleValueFractalBillow( x, y ); case RigidMulti: return SingleValueFractalRigidMulti( x, y ); } case Perlin: return SinglePerlin( 0, x, y ); case PerlinFractal: switch ( m_fractalType ) { case FBM: return SinglePerlinFractalFBM( x, y ); case Billow: return SinglePerlinFractalBillow( x, y ); case RigidMulti: return SinglePerlinFractalRigidMulti( x, y ); } case Simplex: return SingleSimplex( 0, x, y ); case SimplexFractal: switch ( m_fractalType ) { case FBM: return SingleSimplexFractalFBM( x, y ); case Billow: return SingleSimplexFractalBillow( x, y ); case RigidMulti: return SingleSimplexFractalRigidMulti( x, y ); } case Cellular: switch ( m_cellularReturnType ) { case CellValue: case NoiseLookup: case Distance: return SingleCellular( x, y ); default: return SingleCellular2Edge( x, y ); } case WhiteNoise: return GetWhiteNoise( x, y ); case Cubic: return SingleCubic( 0, x, y ); case CubicFractal: switch ( m_fractalType ) { case FBM: return SingleCubicFractalFBM( x, y ); case Billow: return SingleCubicFractalBillow( x, y ); case RigidMulti: return SingleCubicFractalRigidMulti( x, y ); } } return 0; } // White Noise FN_DECIMAL FastNoise::GetWhiteNoise( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z, FN_DECIMAL w ) const { return ValCoord4D( m_seed, *reinterpret_cast( &x ) ^ ( *reinterpret_cast( &x ) >> 16 ), *reinterpret_cast( &y ) ^ ( *reinterpret_cast( &y ) >> 16 ), *reinterpret_cast( &z ) ^ ( *reinterpret_cast( &z ) >> 16 ), *reinterpret_cast( &w ) ^ ( *reinterpret_cast( &w ) >> 16 ) ); } FN_DECIMAL FastNoise::GetWhiteNoise( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { return ValCoord3D( m_seed, *reinterpret_cast( &x ) ^ ( *reinterpret_cast( &x ) >> 16 ), *reinterpret_cast( &y ) ^ ( *reinterpret_cast( &y ) >> 16 ), *reinterpret_cast( &z ) ^ ( *reinterpret_cast( &z ) >> 16 ) ); } FN_DECIMAL FastNoise::GetWhiteNoise( FN_DECIMAL x, FN_DECIMAL y ) const { return ValCoord2D( m_seed, *reinterpret_cast( &x ) ^ ( *reinterpret_cast( &x ) >> 16 ), *reinterpret_cast( &y ) ^ ( *reinterpret_cast( &y ) >> 16 ) ); } FN_DECIMAL FastNoise::GetWhiteNoiseInt( int x, int y, int z, int w ) const { return ValCoord4D( m_seed, x, y, z, w ); } FN_DECIMAL FastNoise::GetWhiteNoiseInt( int x, int y, int z ) const { return ValCoord3D( m_seed, x, y, z ); } FN_DECIMAL FastNoise::GetWhiteNoiseInt( int x, int y ) const { return ValCoord2D( m_seed, x, y ); } // Value Noise FN_DECIMAL FastNoise::GetValueFractal( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { x *= m_frequency; y *= m_frequency; z *= m_frequency; switch ( m_fractalType ) { case FBM: return SingleValueFractalFBM( x, y, z ); case Billow: return SingleValueFractalBillow( x, y, z ); case RigidMulti: return SingleValueFractalRigidMulti( x, y, z ); default: return 0; } } FN_DECIMAL FastNoise::SingleValueFractalFBM( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { FN_DECIMAL sum = SingleValue( m_perm[0], x, y, z ); FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; z *= m_lacunarity; amp *= m_gain; sum += SingleValue( m_perm[i], x, y, z ) * amp; } return sum * m_fractalBounding; } FN_DECIMAL FastNoise::SingleValueFractalBillow( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { FN_DECIMAL sum = FastAbs( SingleValue( m_perm[0], x, y, z ) ) * 2 - 1; FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; z *= m_lacunarity; amp *= m_gain; sum += ( FastAbs( SingleValue( m_perm[i], x, y, z ) ) * 2 - 1 ) * amp; } return sum * m_fractalBounding; } FN_DECIMAL FastNoise::SingleValueFractalRigidMulti( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { FN_DECIMAL sum = 1 - FastAbs( SingleValue( m_perm[0], x, y, z ) ); FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; z *= m_lacunarity; amp *= m_gain; sum -= ( 1 - FastAbs( SingleValue( m_perm[i], x, y, z ) ) ) * amp; } return sum; } FN_DECIMAL FastNoise::GetValue( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { return SingleValue( 0, x * m_frequency, y * m_frequency, z * m_frequency ); } FN_DECIMAL FastNoise::SingleValue( unsigned char offset, FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { int x0 = FastFloor( x ); int y0 = FastFloor( y ); int z0 = FastFloor( z ); int x1 = x0 + 1; int y1 = y0 + 1; int z1 = z0 + 1; FN_DECIMAL xs, ys, zs; switch ( m_interp ) { case Linear: xs = x - (FN_DECIMAL)x0; ys = y - (FN_DECIMAL)y0; zs = z - (FN_DECIMAL)z0; break; case Hermite: xs = InterpHermiteFunc( x - (FN_DECIMAL)x0 ); ys = InterpHermiteFunc( y - (FN_DECIMAL)y0 ); zs = InterpHermiteFunc( z - (FN_DECIMAL)z0 ); break; case Quintic: xs = InterpQuinticFunc( x - (FN_DECIMAL)x0 ); ys = InterpQuinticFunc( y - (FN_DECIMAL)y0 ); zs = InterpQuinticFunc( z - (FN_DECIMAL)z0 ); break; } FN_DECIMAL xf00 = Lerp( ValCoord3DFast( offset, x0, y0, z0 ), ValCoord3DFast( offset, x1, y0, z0 ), xs ); FN_DECIMAL xf10 = Lerp( ValCoord3DFast( offset, x0, y1, z0 ), ValCoord3DFast( offset, x1, y1, z0 ), xs ); FN_DECIMAL xf01 = Lerp( ValCoord3DFast( offset, x0, y0, z1 ), ValCoord3DFast( offset, x1, y0, z1 ), xs ); FN_DECIMAL xf11 = Lerp( ValCoord3DFast( offset, x0, y1, z1 ), ValCoord3DFast( offset, x1, y1, z1 ), xs ); FN_DECIMAL yf0 = Lerp( xf00, xf10, ys ); FN_DECIMAL yf1 = Lerp( xf01, xf11, ys ); return Lerp( yf0, yf1, zs ); } FN_DECIMAL FastNoise::GetValueFractal( FN_DECIMAL x, FN_DECIMAL y ) const { x *= m_frequency; y *= m_frequency; switch ( m_fractalType ) { case FBM: return SingleValueFractalFBM( x, y ); case Billow: return SingleValueFractalBillow( x, y ); case RigidMulti: return SingleValueFractalRigidMulti( x, y ); default: return 0; } } FN_DECIMAL FastNoise::SingleValueFractalFBM( FN_DECIMAL x, FN_DECIMAL y ) const { FN_DECIMAL sum = SingleValue( m_perm[0], x, y ); FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; amp *= m_gain; sum += SingleValue( m_perm[i], x, y ) * amp; } return sum * m_fractalBounding; } FN_DECIMAL FastNoise::SingleValueFractalBillow( FN_DECIMAL x, FN_DECIMAL y ) const { FN_DECIMAL sum = FastAbs( SingleValue( m_perm[0], x, y ) ) * 2 - 1; FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; amp *= m_gain; sum += ( FastAbs( SingleValue( m_perm[i], x, y ) ) * 2 - 1 ) * amp; } return sum * m_fractalBounding; } FN_DECIMAL FastNoise::SingleValueFractalRigidMulti( FN_DECIMAL x, FN_DECIMAL y ) const { FN_DECIMAL sum = 1 - FastAbs( SingleValue( m_perm[0], x, y ) ); FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; amp *= m_gain; sum -= ( 1 - FastAbs( SingleValue( m_perm[i], x, y ) ) ) * amp; } return sum; } FN_DECIMAL FastNoise::GetValue( FN_DECIMAL x, FN_DECIMAL y ) const { return SingleValue( 0, x * m_frequency, y * m_frequency ); } FN_DECIMAL FastNoise::SingleValue( unsigned char offset, FN_DECIMAL x, FN_DECIMAL y ) const { int x0 = FastFloor( x ); int y0 = FastFloor( y ); int x1 = x0 + 1; int y1 = y0 + 1; FN_DECIMAL xs, ys; switch ( m_interp ) { case Linear: xs = x - (FN_DECIMAL)x0; ys = y - (FN_DECIMAL)y0; break; case Hermite: xs = InterpHermiteFunc( x - (FN_DECIMAL)x0 ); ys = InterpHermiteFunc( y - (FN_DECIMAL)y0 ); break; case Quintic: xs = InterpQuinticFunc( x - (FN_DECIMAL)x0 ); ys = InterpQuinticFunc( y - (FN_DECIMAL)y0 ); break; } FN_DECIMAL xf0 = Lerp( ValCoord2DFast( offset, x0, y0 ), ValCoord2DFast( offset, x1, y0 ), xs ); FN_DECIMAL xf1 = Lerp( ValCoord2DFast( offset, x0, y1 ), ValCoord2DFast( offset, x1, y1 ), xs ); return Lerp( xf0, xf1, ys ); } // Perlin Noise FN_DECIMAL FastNoise::GetPerlinFractal( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { x *= m_frequency; y *= m_frequency; z *= m_frequency; switch ( m_fractalType ) { case FBM: return SinglePerlinFractalFBM( x, y, z ); case Billow: return SinglePerlinFractalBillow( x, y, z ); case RigidMulti: return SinglePerlinFractalRigidMulti( x, y, z ); default: return 0; } } FN_DECIMAL FastNoise::SinglePerlinFractalFBM( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { FN_DECIMAL sum = SinglePerlin( m_perm[0], x, y, z ); FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; z *= m_lacunarity; amp *= m_gain; sum += SinglePerlin( m_perm[i], x, y, z ) * amp; } return sum * m_fractalBounding; } FN_DECIMAL FastNoise::SinglePerlinFractalBillow( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { FN_DECIMAL sum = FastAbs( SinglePerlin( m_perm[0], x, y, z ) ) * 2 - 1; FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; z *= m_lacunarity; amp *= m_gain; sum += ( FastAbs( SinglePerlin( m_perm[i], x, y, z ) ) * 2 - 1 ) * amp; } return sum * m_fractalBounding; } FN_DECIMAL FastNoise::SinglePerlinFractalRigidMulti( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { FN_DECIMAL sum = 1 - FastAbs( SinglePerlin( m_perm[0], x, y, z ) ); FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; z *= m_lacunarity; amp *= m_gain; sum -= ( 1 - FastAbs( SinglePerlin( m_perm[i], x, y, z ) ) ) * amp; } return sum; } FN_DECIMAL FastNoise::GetPerlin( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { return SinglePerlin( 0, x * m_frequency, y * m_frequency, z * m_frequency ); } FN_DECIMAL FastNoise::SinglePerlin( unsigned char offset, FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { int x0 = FastFloor( x ); int y0 = FastFloor( y ); int z0 = FastFloor( z ); int x1 = x0 + 1; int y1 = y0 + 1; int z1 = z0 + 1; FN_DECIMAL xs, ys, zs; switch ( m_interp ) { case Linear: xs = x - (FN_DECIMAL)x0; ys = y - (FN_DECIMAL)y0; zs = z - (FN_DECIMAL)z0; break; case Hermite: xs = InterpHermiteFunc( x - (FN_DECIMAL)x0 ); ys = InterpHermiteFunc( y - (FN_DECIMAL)y0 ); zs = InterpHermiteFunc( z - (FN_DECIMAL)z0 ); break; case Quintic: xs = InterpQuinticFunc( x - (FN_DECIMAL)x0 ); ys = InterpQuinticFunc( y - (FN_DECIMAL)y0 ); zs = InterpQuinticFunc( z - (FN_DECIMAL)z0 ); break; } FN_DECIMAL xd0 = x - (FN_DECIMAL)x0; FN_DECIMAL yd0 = y - (FN_DECIMAL)y0; FN_DECIMAL zd0 = z - (FN_DECIMAL)z0; FN_DECIMAL xd1 = xd0 - 1; FN_DECIMAL yd1 = yd0 - 1; FN_DECIMAL zd1 = zd0 - 1; FN_DECIMAL xf00 = Lerp( GradCoord3D( offset, x0, y0, z0, xd0, yd0, zd0 ), GradCoord3D( offset, x1, y0, z0, xd1, yd0, zd0 ), xs ); FN_DECIMAL xf10 = Lerp( GradCoord3D( offset, x0, y1, z0, xd0, yd1, zd0 ), GradCoord3D( offset, x1, y1, z0, xd1, yd1, zd0 ), xs ); FN_DECIMAL xf01 = Lerp( GradCoord3D( offset, x0, y0, z1, xd0, yd0, zd1 ), GradCoord3D( offset, x1, y0, z1, xd1, yd0, zd1 ), xs ); FN_DECIMAL xf11 = Lerp( GradCoord3D( offset, x0, y1, z1, xd0, yd1, zd1 ), GradCoord3D( offset, x1, y1, z1, xd1, yd1, zd1 ), xs ); FN_DECIMAL yf0 = Lerp( xf00, xf10, ys ); FN_DECIMAL yf1 = Lerp( xf01, xf11, ys ); return Lerp( yf0, yf1, zs ); } FN_DECIMAL FastNoise::GetPerlinFractal( FN_DECIMAL x, FN_DECIMAL y ) const { x *= m_frequency; y *= m_frequency; switch ( m_fractalType ) { case FBM: return SinglePerlinFractalFBM( x, y ); case Billow: return SinglePerlinFractalBillow( x, y ); case RigidMulti: return SinglePerlinFractalRigidMulti( x, y ); default: return 0; } } FN_DECIMAL FastNoise::SinglePerlinFractalFBM( FN_DECIMAL x, FN_DECIMAL y ) const { FN_DECIMAL sum = SinglePerlin( m_perm[0], x, y ); FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; amp *= m_gain; sum += SinglePerlin( m_perm[i], x, y ) * amp; } return sum * m_fractalBounding; } FN_DECIMAL FastNoise::SinglePerlinFractalBillow( FN_DECIMAL x, FN_DECIMAL y ) const { FN_DECIMAL sum = FastAbs( SinglePerlin( m_perm[0], x, y ) ) * 2 - 1; FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; amp *= m_gain; sum += ( FastAbs( SinglePerlin( m_perm[i], x, y ) ) * 2 - 1 ) * amp; } return sum * m_fractalBounding; } FN_DECIMAL FastNoise::SinglePerlinFractalRigidMulti( FN_DECIMAL x, FN_DECIMAL y ) const { FN_DECIMAL sum = 1 - FastAbs( SinglePerlin( m_perm[0], x, y ) ); FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; amp *= m_gain; sum -= ( 1 - FastAbs( SinglePerlin( m_perm[i], x, y ) ) ) * amp; } return sum; } FN_DECIMAL FastNoise::GetPerlin( FN_DECIMAL x, FN_DECIMAL y ) const { return SinglePerlin( 0, x * m_frequency, y * m_frequency ); } FN_DECIMAL FastNoise::SinglePerlin( unsigned char offset, FN_DECIMAL x, FN_DECIMAL y ) const { int x0 = FastFloor( x ); int y0 = FastFloor( y ); int x1 = x0 + 1; int y1 = y0 + 1; FN_DECIMAL xs, ys; switch ( m_interp ) { case Linear: xs = x - (FN_DECIMAL)x0; ys = y - (FN_DECIMAL)y0; break; case Hermite: xs = InterpHermiteFunc( x - (FN_DECIMAL)x0 ); ys = InterpHermiteFunc( y - (FN_DECIMAL)y0 ); break; case Quintic: xs = InterpQuinticFunc( x - (FN_DECIMAL)x0 ); ys = InterpQuinticFunc( y - (FN_DECIMAL)y0 ); break; } FN_DECIMAL xd0 = x - (FN_DECIMAL)x0; FN_DECIMAL yd0 = y - (FN_DECIMAL)y0; FN_DECIMAL xd1 = xd0 - 1; FN_DECIMAL yd1 = yd0 - 1; FN_DECIMAL xf0 = Lerp( GradCoord2D( offset, x0, y0, xd0, yd0 ), GradCoord2D( offset, x1, y0, xd1, yd0 ), xs ); FN_DECIMAL xf1 = Lerp( GradCoord2D( offset, x0, y1, xd0, yd1 ), GradCoord2D( offset, x1, y1, xd1, yd1 ), xs ); return Lerp( xf0, xf1, ys ); } // Simplex Noise FN_DECIMAL FastNoise::GetSimplexFractal( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { x *= m_frequency; y *= m_frequency; z *= m_frequency; switch ( m_fractalType ) { case FBM: return SingleSimplexFractalFBM( x, y, z ); case Billow: return SingleSimplexFractalBillow( x, y, z ); case RigidMulti: return SingleSimplexFractalRigidMulti( x, y, z ); default: return 0; } } FN_DECIMAL FastNoise::SingleSimplexFractalFBM( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { FN_DECIMAL sum = SingleSimplex( m_perm[0], x, y, z ); FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; z *= m_lacunarity; amp *= m_gain; sum += SingleSimplex( m_perm[i], x, y, z ) * amp; } return sum * m_fractalBounding; } FN_DECIMAL FastNoise::SingleSimplexFractalBillow( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { FN_DECIMAL sum = FastAbs( SingleSimplex( m_perm[0], x, y, z ) ) * 2 - 1; FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; z *= m_lacunarity; amp *= m_gain; sum += ( FastAbs( SingleSimplex( m_perm[i], x, y, z ) ) * 2 - 1 ) * amp; } return sum * m_fractalBounding; } FN_DECIMAL FastNoise::SingleSimplexFractalRigidMulti( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { FN_DECIMAL sum = 1 - FastAbs( SingleSimplex( m_perm[0], x, y, z ) ); FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; z *= m_lacunarity; amp *= m_gain; sum -= ( 1 - FastAbs( SingleSimplex( m_perm[i], x, y, z ) ) ) * amp; } return sum; } FN_DECIMAL FastNoise::GetSimplex( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { return SingleSimplex( 0, x * m_frequency, y * m_frequency, z * m_frequency ); } static const FN_DECIMAL F3 = 1 / FN_DECIMAL( 3 ); static const FN_DECIMAL G3 = 1 / FN_DECIMAL( 6 ); FN_DECIMAL FastNoise::SingleSimplex( unsigned char offset, FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { FN_DECIMAL t = ( x + y + z ) * F3; int i = FastFloor( x + t ); int j = FastFloor( y + t ); int k = FastFloor( z + t ); t = ( i + j + k ) * G3; FN_DECIMAL X0 = i - t; FN_DECIMAL Y0 = j - t; FN_DECIMAL Z0 = k - t; FN_DECIMAL x0 = x - X0; FN_DECIMAL y0 = y - Y0; FN_DECIMAL z0 = z - Z0; int i1, j1, k1; int i2, j2, k2; if ( x0 >= y0 ) { if ( y0 >= z0 ) { i1 = 1; j1 = 0; k1 = 0; i2 = 1; j2 = 1; k2 = 0; } else if ( x0 >= z0 ) { i1 = 1; j1 = 0; k1 = 0; i2 = 1; j2 = 0; k2 = 1; } else // x0 < z0 { i1 = 0; j1 = 0; k1 = 1; i2 = 1; j2 = 0; k2 = 1; } } else // x0 < y0 { if ( y0 < z0 ) { i1 = 0; j1 = 0; k1 = 1; i2 = 0; j2 = 1; k2 = 1; } else if ( x0 < z0 ) { i1 = 0; j1 = 1; k1 = 0; i2 = 0; j2 = 1; k2 = 1; } else // x0 >= z0 { i1 = 0; j1 = 1; k1 = 0; i2 = 1; j2 = 1; k2 = 0; } } FN_DECIMAL x1 = x0 - i1 + G3; FN_DECIMAL y1 = y0 - j1 + G3; FN_DECIMAL z1 = z0 - k1 + G3; FN_DECIMAL x2 = x0 - i2 + 2 * G3; FN_DECIMAL y2 = y0 - j2 + 2 * G3; FN_DECIMAL z2 = z0 - k2 + 2 * G3; FN_DECIMAL x3 = x0 - 1 + 3 * G3; FN_DECIMAL y3 = y0 - 1 + 3 * G3; FN_DECIMAL z3 = z0 - 1 + 3 * G3; FN_DECIMAL n0, n1, n2, n3; t = FN_DECIMAL( 0.6 ) - x0 * x0 - y0 * y0 - z0 * z0; if ( t < 0 ) n0 = 0; else { t *= t; n0 = t * t * GradCoord3D( offset, i, j, k, x0, y0, z0 ); } t = FN_DECIMAL( 0.6 ) - x1 * x1 - y1 * y1 - z1 * z1; if ( t < 0 ) n1 = 0; else { t *= t; n1 = t * t * GradCoord3D( offset, i + i1, j + j1, k + k1, x1, y1, z1 ); } t = FN_DECIMAL( 0.6 ) - x2 * x2 - y2 * y2 - z2 * z2; if ( t < 0 ) n2 = 0; else { t *= t; n2 = t * t * GradCoord3D( offset, i + i2, j + j2, k + k2, x2, y2, z2 ); } t = FN_DECIMAL( 0.6 ) - x3 * x3 - y3 * y3 - z3 * z3; if ( t < 0 ) n3 = 0; else { t *= t; n3 = t * t * GradCoord3D( offset, i + 1, j + 1, k + 1, x3, y3, z3 ); } return 32 * ( n0 + n1 + n2 + n3 ); } FN_DECIMAL FastNoise::GetSimplexFractal( FN_DECIMAL x, FN_DECIMAL y ) const { x *= m_frequency; y *= m_frequency; switch ( m_fractalType ) { case FBM: return SingleSimplexFractalFBM( x, y ); case Billow: return SingleSimplexFractalBillow( x, y ); case RigidMulti: return SingleSimplexFractalRigidMulti( x, y ); default: return 0; } } FN_DECIMAL FastNoise::SingleSimplexFractalFBM( FN_DECIMAL x, FN_DECIMAL y ) const { FN_DECIMAL sum = SingleSimplex( m_perm[0], x, y ); FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; amp *= m_gain; sum += SingleSimplex( m_perm[i], x, y ) * amp; } return sum * m_fractalBounding; } FN_DECIMAL FastNoise::SingleSimplexFractalBillow( FN_DECIMAL x, FN_DECIMAL y ) const { FN_DECIMAL sum = FastAbs( SingleSimplex( m_perm[0], x, y ) ) * 2 - 1; FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; amp *= m_gain; sum += ( FastAbs( SingleSimplex( m_perm[i], x, y ) ) * 2 - 1 ) * amp; } return sum * m_fractalBounding; } FN_DECIMAL FastNoise::SingleSimplexFractalRigidMulti( FN_DECIMAL x, FN_DECIMAL y ) const { FN_DECIMAL sum = 1 - FastAbs( SingleSimplex( m_perm[0], x, y ) ); FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; amp *= m_gain; sum -= ( 1 - FastAbs( SingleSimplex( m_perm[i], x, y ) ) ) * amp; } return sum; } FN_DECIMAL FastNoise::SingleSimplexFractalBlend( FN_DECIMAL x, FN_DECIMAL y ) const { FN_DECIMAL sum = SingleSimplex( m_perm[0], x, y ); FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; amp *= m_gain; sum *= SingleSimplex( m_perm[i], x, y ) * amp + 1; } return sum * m_fractalBounding; } FN_DECIMAL FastNoise::GetSimplex( FN_DECIMAL x, FN_DECIMAL y ) const { return SingleSimplex( 0, x * m_frequency, y * m_frequency ); } //static const FN_DECIMAL F2 = 1 / FN_DECIMAL(2); //static const FN_DECIMAL G2 = 1 / FN_DECIMAL(4); static const FN_DECIMAL SQRT3 = FN_DECIMAL( 1.7320508075688772935274463415059 ); static const FN_DECIMAL F2 = FN_DECIMAL( 0.5 ) * ( SQRT3 - FN_DECIMAL( 1.0 ) ); static const FN_DECIMAL G2 = ( FN_DECIMAL( 3.0 ) - SQRT3 ) / FN_DECIMAL( 6.0 ); FN_DECIMAL FastNoise::SingleSimplex( unsigned char offset, FN_DECIMAL x, FN_DECIMAL y ) const { FN_DECIMAL t = ( x + y ) * F2; int i = FastFloor( x + t ); int j = FastFloor( y + t ); t = ( i + j ) * G2; FN_DECIMAL X0 = i - t; FN_DECIMAL Y0 = j - t; FN_DECIMAL x0 = x - X0; FN_DECIMAL y0 = y - Y0; int i1, j1; if ( x0 > y0 ) { i1 = 1; j1 = 0; } else { i1 = 0; j1 = 1; } FN_DECIMAL x1 = x0 - (FN_DECIMAL)i1 + G2; FN_DECIMAL y1 = y0 - (FN_DECIMAL)j1 + G2; FN_DECIMAL x2 = x0 - 1 + 2 * G2; FN_DECIMAL y2 = y0 - 1 + 2 * G2; FN_DECIMAL n0, n1, n2; t = FN_DECIMAL( 0.5 ) - x0 * x0 - y0 * y0; if ( t < 0 ) n0 = 0; else { t *= t; n0 = t * t * GradCoord2D( offset, i, j, x0, y0 ); } t = FN_DECIMAL( 0.5 ) - x1 * x1 - y1 * y1; if ( t < 0 ) n1 = 0; else { t *= t; n1 = t * t * GradCoord2D( offset, i + i1, j + j1, x1, y1 ); } t = FN_DECIMAL( 0.5 ) - x2 * x2 - y2 * y2; if ( t < 0 ) n2 = 0; else { t *= t; n2 = t * t * GradCoord2D( offset, i + 1, j + 1, x2, y2 ); } return 70 * ( n0 + n1 + n2 ); } FN_DECIMAL FastNoise::GetSimplex( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z, FN_DECIMAL w ) const { return SingleSimplex( 0, x * m_frequency, y * m_frequency, z * m_frequency, w * m_frequency ); } static const unsigned char SIMPLEX_4D[] = { 0, 1, 2, 3, 0, 1, 3, 2, 0, 0, 0, 0, 0, 2, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 2, 1, 3, 0, 0, 0, 0, 0, 3, 1, 2, 0, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 3, 0, 0, 0, 0, 1, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 1, 2, 3, 1, 0, 1, 0, 2, 3, 1, 0, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 1, 0, 0, 0, 0, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 2, 3, 0, 2, 1, 0, 0, 0, 0, 3, 1, 2, 0, 2, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 2, 0, 0, 0, 0, 3, 2, 0, 1, 3, 2, 1, 0 }; static const FN_DECIMAL F4 = ( sqrt( FN_DECIMAL( 5 ) ) - 1 ) / 4; static const FN_DECIMAL G4 = ( 5 - sqrt( FN_DECIMAL( 5 ) ) ) / 2; FN_DECIMAL FastNoise::SingleSimplex( unsigned char offset, FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z, FN_DECIMAL w ) const { FN_DECIMAL n0, n1, n2, n3, n4; FN_DECIMAL t = ( x + y + z + w ) * F4; int i = FastFloor( x + t ); int j = FastFloor( y + t ); int k = FastFloor( z + t ); int l = FastFloor( w + t ); t = ( i + j + k + l ) * G4; FN_DECIMAL X0 = i - t; FN_DECIMAL Y0 = j - t; FN_DECIMAL Z0 = k - t; FN_DECIMAL W0 = l - t; FN_DECIMAL x0 = x - X0; FN_DECIMAL y0 = y - Y0; FN_DECIMAL z0 = z - Z0; FN_DECIMAL w0 = w - W0; int c = ( x0 > y0 ) ? 32 : 0; c += ( x0 > z0 ) ? 16 : 0; c += ( y0 > z0 ) ? 8 : 0; c += ( x0 > w0 ) ? 4 : 0; c += ( y0 > w0 ) ? 2 : 0; c += ( z0 > w0 ) ? 1 : 0; c <<= 2; int i1 = SIMPLEX_4D[c] >= 3 ? 1 : 0; int i2 = SIMPLEX_4D[c] >= 2 ? 1 : 0; int i3 = SIMPLEX_4D[c++] >= 1 ? 1 : 0; int j1 = SIMPLEX_4D[c] >= 3 ? 1 : 0; int j2 = SIMPLEX_4D[c] >= 2 ? 1 : 0; int j3 = SIMPLEX_4D[c++] >= 1 ? 1 : 0; int k1 = SIMPLEX_4D[c] >= 3 ? 1 : 0; int k2 = SIMPLEX_4D[c] >= 2 ? 1 : 0; int k3 = SIMPLEX_4D[c++] >= 1 ? 1 : 0; int l1 = SIMPLEX_4D[c] >= 3 ? 1 : 0; int l2 = SIMPLEX_4D[c] >= 2 ? 1 : 0; int l3 = SIMPLEX_4D[c] >= 1 ? 1 : 0; FN_DECIMAL x1 = x0 - i1 + G4; FN_DECIMAL y1 = y0 - j1 + G4; FN_DECIMAL z1 = z0 - k1 + G4; FN_DECIMAL w1 = w0 - l1 + G4; FN_DECIMAL x2 = x0 - i2 + 2 * G4; FN_DECIMAL y2 = y0 - j2 + 2 * G4; FN_DECIMAL z2 = z0 - k2 + 2 * G4; FN_DECIMAL w2 = w0 - l2 + 2 * G4; FN_DECIMAL x3 = x0 - i3 + 3 * G4; FN_DECIMAL y3 = y0 - j3 + 3 * G4; FN_DECIMAL z3 = z0 - k3 + 3 * G4; FN_DECIMAL w3 = w0 - l3 + 3 * G4; FN_DECIMAL x4 = x0 - 1 + 4 * G4; FN_DECIMAL y4 = y0 - 1 + 4 * G4; FN_DECIMAL z4 = z0 - 1 + 4 * G4; FN_DECIMAL w4 = w0 - 1 + 4 * G4; t = FN_DECIMAL( 0.6 ) - x0 * x0 - y0 * y0 - z0 * z0 - w0 * w0; if ( t < 0 ) n0 = 0; else { t *= t; n0 = t * t * GradCoord4D( offset, i, j, k, l, x0, y0, z0, w0 ); } t = FN_DECIMAL( 0.6 ) - x1 * x1 - y1 * y1 - z1 * z1 - w1 * w1; if ( t < 0 ) n1 = 0; else { t *= t; n1 = t * t * GradCoord4D( offset, i + i1, j + j1, k + k1, l + l1, x1, y1, z1, w1 ); } t = FN_DECIMAL( 0.6 ) - x2 * x2 - y2 * y2 - z2 * z2 - w2 * w2; if ( t < 0 ) n2 = 0; else { t *= t; n2 = t * t * GradCoord4D( offset, i + i2, j + j2, k + k2, l + l2, x2, y2, z2, w2 ); } t = FN_DECIMAL( 0.6 ) - x3 * x3 - y3 * y3 - z3 * z3 - w3 * w3; if ( t < 0 ) n3 = 0; else { t *= t; n3 = t * t * GradCoord4D( offset, i + i3, j + j3, k + k3, l + l3, x3, y3, z3, w3 ); } t = FN_DECIMAL( 0.6 ) - x4 * x4 - y4 * y4 - z4 * z4 - w4 * w4; if ( t < 0 ) n4 = 0; else { t *= t; n4 = t * t * GradCoord4D( offset, i + 1, j + 1, k + 1, l + 1, x4, y4, z4, w4 ); } return 27 * ( n0 + n1 + n2 + n3 + n4 ); } // Cubic Noise FN_DECIMAL FastNoise::GetCubicFractal( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { x *= m_frequency; y *= m_frequency; z *= m_frequency; switch ( m_fractalType ) { case FBM: return SingleCubicFractalFBM( x, y, z ); case Billow: return SingleCubicFractalBillow( x, y, z ); case RigidMulti: return SingleCubicFractalRigidMulti( x, y, z ); default: return 0; } } FN_DECIMAL FastNoise::SingleCubicFractalFBM( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { FN_DECIMAL sum = SingleCubic( m_perm[0], x, y, z ); FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; z *= m_lacunarity; amp *= m_gain; sum += SingleCubic( m_perm[i], x, y, z ) * amp; } return sum * m_fractalBounding; } FN_DECIMAL FastNoise::SingleCubicFractalBillow( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { FN_DECIMAL sum = FastAbs( SingleCubic( m_perm[0], x, y, z ) ) * 2 - 1; FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; z *= m_lacunarity; amp *= m_gain; sum += ( FastAbs( SingleCubic( m_perm[i], x, y, z ) ) * 2 - 1 ) * amp; } return sum * m_fractalBounding; } FN_DECIMAL FastNoise::SingleCubicFractalRigidMulti( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { FN_DECIMAL sum = 1 - FastAbs( SingleCubic( m_perm[0], x, y, z ) ); FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; z *= m_lacunarity; amp *= m_gain; sum -= ( 1 - FastAbs( SingleCubic( m_perm[i], x, y, z ) ) ) * amp; } return sum; } FN_DECIMAL FastNoise::GetCubic( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { return SingleCubic( 0, x * m_frequency, y * m_frequency, z * m_frequency ); } const FN_DECIMAL CUBIC_3D_BOUNDING = 1 / ( FN_DECIMAL( 1.5 ) * FN_DECIMAL( 1.5 ) * FN_DECIMAL( 1.5 ) ); FN_DECIMAL FastNoise::SingleCubic( unsigned char offset, FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { int x1 = FastFloor( x ); int y1 = FastFloor( y ); int z1 = FastFloor( z ); int x0 = x1 - 1; int y0 = y1 - 1; int z0 = z1 - 1; int x2 = x1 + 1; int y2 = y1 + 1; int z2 = z1 + 1; int x3 = x1 + 2; int y3 = y1 + 2; int z3 = z1 + 2; FN_DECIMAL xs = x - (FN_DECIMAL)x1; FN_DECIMAL ys = y - (FN_DECIMAL)y1; FN_DECIMAL zs = z - (FN_DECIMAL)z1; return CubicLerp( CubicLerp( CubicLerp( ValCoord3DFast( offset, x0, y0, z0 ), ValCoord3DFast( offset, x1, y0, z0 ), ValCoord3DFast( offset, x2, y0, z0 ), ValCoord3DFast( offset, x3, y0, z0 ), xs ), CubicLerp( ValCoord3DFast( offset, x0, y1, z0 ), ValCoord3DFast( offset, x1, y1, z0 ), ValCoord3DFast( offset, x2, y1, z0 ), ValCoord3DFast( offset, x3, y1, z0 ), xs ), CubicLerp( ValCoord3DFast( offset, x0, y2, z0 ), ValCoord3DFast( offset, x1, y2, z0 ), ValCoord3DFast( offset, x2, y2, z0 ), ValCoord3DFast( offset, x3, y2, z0 ), xs ), CubicLerp( ValCoord3DFast( offset, x0, y3, z0 ), ValCoord3DFast( offset, x1, y3, z0 ), ValCoord3DFast( offset, x2, y3, z0 ), ValCoord3DFast( offset, x3, y3, z0 ), xs ), ys ), CubicLerp( CubicLerp( ValCoord3DFast( offset, x0, y0, z1 ), ValCoord3DFast( offset, x1, y0, z1 ), ValCoord3DFast( offset, x2, y0, z1 ), ValCoord3DFast( offset, x3, y0, z1 ), xs ), CubicLerp( ValCoord3DFast( offset, x0, y1, z1 ), ValCoord3DFast( offset, x1, y1, z1 ), ValCoord3DFast( offset, x2, y1, z1 ), ValCoord3DFast( offset, x3, y1, z1 ), xs ), CubicLerp( ValCoord3DFast( offset, x0, y2, z1 ), ValCoord3DFast( offset, x1, y2, z1 ), ValCoord3DFast( offset, x2, y2, z1 ), ValCoord3DFast( offset, x3, y2, z1 ), xs ), CubicLerp( ValCoord3DFast( offset, x0, y3, z1 ), ValCoord3DFast( offset, x1, y3, z1 ), ValCoord3DFast( offset, x2, y3, z1 ), ValCoord3DFast( offset, x3, y3, z1 ), xs ), ys ), CubicLerp( CubicLerp( ValCoord3DFast( offset, x0, y0, z2 ), ValCoord3DFast( offset, x1, y0, z2 ), ValCoord3DFast( offset, x2, y0, z2 ), ValCoord3DFast( offset, x3, y0, z2 ), xs ), CubicLerp( ValCoord3DFast( offset, x0, y1, z2 ), ValCoord3DFast( offset, x1, y1, z2 ), ValCoord3DFast( offset, x2, y1, z2 ), ValCoord3DFast( offset, x3, y1, z2 ), xs ), CubicLerp( ValCoord3DFast( offset, x0, y2, z2 ), ValCoord3DFast( offset, x1, y2, z2 ), ValCoord3DFast( offset, x2, y2, z2 ), ValCoord3DFast( offset, x3, y2, z2 ), xs ), CubicLerp( ValCoord3DFast( offset, x0, y3, z2 ), ValCoord3DFast( offset, x1, y3, z2 ), ValCoord3DFast( offset, x2, y3, z2 ), ValCoord3DFast( offset, x3, y3, z2 ), xs ), ys ), CubicLerp( CubicLerp( ValCoord3DFast( offset, x0, y0, z3 ), ValCoord3DFast( offset, x1, y0, z3 ), ValCoord3DFast( offset, x2, y0, z3 ), ValCoord3DFast( offset, x3, y0, z3 ), xs ), CubicLerp( ValCoord3DFast( offset, x0, y1, z3 ), ValCoord3DFast( offset, x1, y1, z3 ), ValCoord3DFast( offset, x2, y1, z3 ), ValCoord3DFast( offset, x3, y1, z3 ), xs ), CubicLerp( ValCoord3DFast( offset, x0, y2, z3 ), ValCoord3DFast( offset, x1, y2, z3 ), ValCoord3DFast( offset, x2, y2, z3 ), ValCoord3DFast( offset, x3, y2, z3 ), xs ), CubicLerp( ValCoord3DFast( offset, x0, y3, z3 ), ValCoord3DFast( offset, x1, y3, z3 ), ValCoord3DFast( offset, x2, y3, z3 ), ValCoord3DFast( offset, x3, y3, z3 ), xs ), ys ), zs ) * CUBIC_3D_BOUNDING; } FN_DECIMAL FastNoise::GetCubicFractal( FN_DECIMAL x, FN_DECIMAL y ) const { x *= m_frequency; y *= m_frequency; switch ( m_fractalType ) { case FBM: return SingleCubicFractalFBM( x, y ); case Billow: return SingleCubicFractalBillow( x, y ); case RigidMulti: return SingleCubicFractalRigidMulti( x, y ); default: return 0; } } FN_DECIMAL FastNoise::SingleCubicFractalFBM( FN_DECIMAL x, FN_DECIMAL y ) const { FN_DECIMAL sum = SingleCubic( m_perm[0], x, y ); FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; amp *= m_gain; sum += SingleCubic( m_perm[i], x, y ) * amp; } return sum * m_fractalBounding; } FN_DECIMAL FastNoise::SingleCubicFractalBillow( FN_DECIMAL x, FN_DECIMAL y ) const { FN_DECIMAL sum = FastAbs( SingleCubic( m_perm[0], x, y ) ) * 2 - 1; FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; amp *= m_gain; sum += ( FastAbs( SingleCubic( m_perm[i], x, y ) ) * 2 - 1 ) * amp; } return sum * m_fractalBounding; } FN_DECIMAL FastNoise::SingleCubicFractalRigidMulti( FN_DECIMAL x, FN_DECIMAL y ) const { FN_DECIMAL sum = 1 - FastAbs( SingleCubic( m_perm[0], x, y ) ); FN_DECIMAL amp = 1; int i = 0; while ( ++i < m_octaves ) { x *= m_lacunarity; y *= m_lacunarity; amp *= m_gain; sum -= ( 1 - FastAbs( SingleCubic( m_perm[i], x, y ) ) ) * amp; } return sum; } FN_DECIMAL FastNoise::GetCubic( FN_DECIMAL x, FN_DECIMAL y ) const { x *= m_frequency; y *= m_frequency; return SingleCubic( 0, x, y ); } const FN_DECIMAL CUBIC_2D_BOUNDING = 1 / ( FN_DECIMAL( 1.5 ) * FN_DECIMAL( 1.5 ) ); FN_DECIMAL FastNoise::SingleCubic( unsigned char offset, FN_DECIMAL x, FN_DECIMAL y ) const { int x1 = FastFloor( x ); int y1 = FastFloor( y ); int x0 = x1 - 1; int y0 = y1 - 1; int x2 = x1 + 1; int y2 = y1 + 1; int x3 = x1 + 2; int y3 = y1 + 2; FN_DECIMAL xs = x - (FN_DECIMAL)x1; FN_DECIMAL ys = y - (FN_DECIMAL)y1; return CubicLerp( CubicLerp( ValCoord2DFast( offset, x0, y0 ), ValCoord2DFast( offset, x1, y0 ), ValCoord2DFast( offset, x2, y0 ), ValCoord2DFast( offset, x3, y0 ), xs ), CubicLerp( ValCoord2DFast( offset, x0, y1 ), ValCoord2DFast( offset, x1, y1 ), ValCoord2DFast( offset, x2, y1 ), ValCoord2DFast( offset, x3, y1 ), xs ), CubicLerp( ValCoord2DFast( offset, x0, y2 ), ValCoord2DFast( offset, x1, y2 ), ValCoord2DFast( offset, x2, y2 ), ValCoord2DFast( offset, x3, y2 ), xs ), CubicLerp( ValCoord2DFast( offset, x0, y3 ), ValCoord2DFast( offset, x1, y3 ), ValCoord2DFast( offset, x2, y3 ), ValCoord2DFast( offset, x3, y3 ), xs ), ys ) * CUBIC_2D_BOUNDING; } // Cellular Noise FN_DECIMAL FastNoise::GetCellular( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { x *= m_frequency; y *= m_frequency; z *= m_frequency; switch ( m_cellularReturnType ) { case CellValue: case NoiseLookup: case Distance: return SingleCellular( x, y, z ); default: return SingleCellular2Edge( x, y, z ); } } FN_DECIMAL FastNoise::SingleCellular( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { int xr = FastRound( x ); int yr = FastRound( y ); int zr = FastRound( z ); FN_DECIMAL distance = 999999; int xc, yc, zc; switch ( m_cellularDistanceFunction ) { case Euclidean: for ( int xi = xr - 1; xi <= xr + 1; xi++ ) { for ( int yi = yr - 1; yi <= yr + 1; yi++ ) { for ( int zi = zr - 1; zi <= zr + 1; zi++ ) { unsigned char lutPos = Index3D_256( 0, xi, yi, zi ); FN_DECIMAL vecX = xi - x + CELL_3D_X[lutPos] * m_cellularJitter; FN_DECIMAL vecY = yi - y + CELL_3D_Y[lutPos] * m_cellularJitter; FN_DECIMAL vecZ = zi - z + CELL_3D_Z[lutPos] * m_cellularJitter; FN_DECIMAL newDistance = vecX * vecX + vecY * vecY + vecZ * vecZ; if ( newDistance < distance ) { distance = newDistance; xc = xi; yc = yi; zc = zi; } } } } break; case Manhattan: for ( int xi = xr - 1; xi <= xr + 1; xi++ ) { for ( int yi = yr - 1; yi <= yr + 1; yi++ ) { for ( int zi = zr - 1; zi <= zr + 1; zi++ ) { unsigned char lutPos = Index3D_256( 0, xi, yi, zi ); FN_DECIMAL vecX = xi - x + CELL_3D_X[lutPos] * m_cellularJitter; FN_DECIMAL vecY = yi - y + CELL_3D_Y[lutPos] * m_cellularJitter; FN_DECIMAL vecZ = zi - z + CELL_3D_Z[lutPos] * m_cellularJitter; FN_DECIMAL newDistance = FastAbs( vecX ) + FastAbs( vecY ) + FastAbs( vecZ ); if ( newDistance < distance ) { distance = newDistance; xc = xi; yc = yi; zc = zi; } } } } break; case Natural: for ( int xi = xr - 1; xi <= xr + 1; xi++ ) { for ( int yi = yr - 1; yi <= yr + 1; yi++ ) { for ( int zi = zr - 1; zi <= zr + 1; zi++ ) { unsigned char lutPos = Index3D_256( 0, xi, yi, zi ); FN_DECIMAL vecX = xi - x + CELL_3D_X[lutPos] * m_cellularJitter; FN_DECIMAL vecY = yi - y + CELL_3D_Y[lutPos] * m_cellularJitter; FN_DECIMAL vecZ = zi - z + CELL_3D_Z[lutPos] * m_cellularJitter; FN_DECIMAL newDistance = ( FastAbs( vecX ) + FastAbs( vecY ) + FastAbs( vecZ ) ) + ( vecX * vecX + vecY * vecY + vecZ * vecZ ); if ( newDistance < distance ) { distance = newDistance; xc = xi; yc = yi; zc = zi; } } } } break; default: break; } unsigned char lutPos; switch ( m_cellularReturnType ) { case CellValue: return ValCoord3D( m_seed, xc, yc, zc ); case NoiseLookup: assert( m_cellularNoiseLookup ); lutPos = Index3D_256( 0, xc, yc, zc ); return m_cellularNoiseLookup->GetNoise( xc + CELL_3D_X[lutPos] * m_cellularJitter, yc + CELL_3D_Y[lutPos] * m_cellularJitter, zc + CELL_3D_Z[lutPos] * m_cellularJitter ); case Distance: return distance; default: return 0; } } FN_DECIMAL FastNoise::SingleCellular2Edge( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const { int xr = FastRound( x ); int yr = FastRound( y ); int zr = FastRound( z ); FN_DECIMAL distance[FN_CELLULAR_INDEX_MAX + 1] = { 999999, 999999, 999999, 999999 }; switch ( m_cellularDistanceFunction ) { case Euclidean: for ( int xi = xr - 1; xi <= xr + 1; xi++ ) { for ( int yi = yr - 1; yi <= yr + 1; yi++ ) { for ( int zi = zr - 1; zi <= zr + 1; zi++ ) { unsigned char lutPos = Index3D_256( 0, xi, yi, zi ); FN_DECIMAL vecX = xi - x + CELL_3D_X[lutPos] * m_cellularJitter; FN_DECIMAL vecY = yi - y + CELL_3D_Y[lutPos] * m_cellularJitter; FN_DECIMAL vecZ = zi - z + CELL_3D_Z[lutPos] * m_cellularJitter; FN_DECIMAL newDistance = vecX * vecX + vecY * vecY + vecZ * vecZ; for ( int i = m_cellularDistanceIndex1; i > 0; i-- ) distance[i] = fmax( fmin( distance[i], newDistance ), distance[i - 1] ); distance[0] = fmin( distance[0], newDistance ); } } } break; case Manhattan: for ( int xi = xr - 1; xi <= xr + 1; xi++ ) { for ( int yi = yr - 1; yi <= yr + 1; yi++ ) { for ( int zi = zr - 1; zi <= zr + 1; zi++ ) { unsigned char lutPos = Index3D_256( 0, xi, yi, zi ); FN_DECIMAL vecX = xi - x + CELL_3D_X[lutPos] * m_cellularJitter; FN_DECIMAL vecY = yi - y + CELL_3D_Y[lutPos] * m_cellularJitter; FN_DECIMAL vecZ = zi - z + CELL_3D_Z[lutPos] * m_cellularJitter; FN_DECIMAL newDistance = FastAbs( vecX ) + FastAbs( vecY ) + FastAbs( vecZ ); for ( int i = m_cellularDistanceIndex1; i > 0; i-- ) distance[i] = fmax( fmin( distance[i], newDistance ), distance[i - 1] ); distance[0] = fmin( distance[0], newDistance ); } } } break; case Natural: for ( int xi = xr - 1; xi <= xr + 1; xi++ ) { for ( int yi = yr - 1; yi <= yr + 1; yi++ ) { for ( int zi = zr - 1; zi <= zr + 1; zi++ ) { unsigned char lutPos = Index3D_256( 0, xi, yi, zi ); FN_DECIMAL vecX = xi - x + CELL_3D_X[lutPos] * m_cellularJitter; FN_DECIMAL vecY = yi - y + CELL_3D_Y[lutPos] * m_cellularJitter; FN_DECIMAL vecZ = zi - z + CELL_3D_Z[lutPos] * m_cellularJitter; FN_DECIMAL newDistance = ( FastAbs( vecX ) + FastAbs( vecY ) + FastAbs( vecZ ) ) + ( vecX * vecX + vecY * vecY + vecZ * vecZ ); for ( int i = m_cellularDistanceIndex1; i > 0; i-- ) distance[i] = fmax( fmin( distance[i], newDistance ), distance[i - 1] ); distance[0] = fmin( distance[0], newDistance ); } } } break; default: break; } switch ( m_cellularReturnType ) { case Distance2: return distance[m_cellularDistanceIndex1]; case Distance2Add: return distance[m_cellularDistanceIndex1] + distance[m_cellularDistanceIndex0]; case Distance2Sub: return distance[m_cellularDistanceIndex1] - distance[m_cellularDistanceIndex0]; case Distance2Mul: return distance[m_cellularDistanceIndex1] * distance[m_cellularDistanceIndex0]; case Distance2Div: return distance[m_cellularDistanceIndex0] / distance[m_cellularDistanceIndex1]; default: return 0; } } FN_DECIMAL FastNoise::GetCellular( FN_DECIMAL x, FN_DECIMAL y ) const { x *= m_frequency; y *= m_frequency; switch ( m_cellularReturnType ) { case CellValue: case NoiseLookup: case Distance: return SingleCellular( x, y ); default: return SingleCellular2Edge( x, y ); } } FN_DECIMAL FastNoise::SingleCellular( FN_DECIMAL x, FN_DECIMAL y ) const { int xr = FastRound( x ); int yr = FastRound( y ); FN_DECIMAL distance = 999999; int xc, yc; switch ( m_cellularDistanceFunction ) { default: case Euclidean: for ( int xi = xr - 1; xi <= xr + 1; xi++ ) { for ( int yi = yr - 1; yi <= yr + 1; yi++ ) { unsigned char lutPos = Index2D_256( 0, xi, yi ); FN_DECIMAL vecX = xi - x + CELL_2D_X[lutPos] * m_cellularJitter; FN_DECIMAL vecY = yi - y + CELL_2D_Y[lutPos] * m_cellularJitter; FN_DECIMAL newDistance = vecX * vecX + vecY * vecY; if ( newDistance < distance ) { distance = newDistance; xc = xi; yc = yi; } } } break; case Manhattan: for ( int xi = xr - 1; xi <= xr + 1; xi++ ) { for ( int yi = yr - 1; yi <= yr + 1; yi++ ) { unsigned char lutPos = Index2D_256( 0, xi, yi ); FN_DECIMAL vecX = xi - x + CELL_2D_X[lutPos] * m_cellularJitter; FN_DECIMAL vecY = yi - y + CELL_2D_Y[lutPos] * m_cellularJitter; FN_DECIMAL newDistance = ( FastAbs( vecX ) + FastAbs( vecY ) ); if ( newDistance < distance ) { distance = newDistance; xc = xi; yc = yi; } } } break; case Natural: for ( int xi = xr - 1; xi <= xr + 1; xi++ ) { for ( int yi = yr - 1; yi <= yr + 1; yi++ ) { unsigned char lutPos = Index2D_256( 0, xi, yi ); FN_DECIMAL vecX = xi - x + CELL_2D_X[lutPos] * m_cellularJitter; FN_DECIMAL vecY = yi - y + CELL_2D_Y[lutPos] * m_cellularJitter; FN_DECIMAL newDistance = ( FastAbs( vecX ) + FastAbs( vecY ) ) + ( vecX * vecX + vecY * vecY ); if ( newDistance < distance ) { distance = newDistance; xc = xi; yc = yi; } } } break; } unsigned char lutPos; switch ( m_cellularReturnType ) { case CellValue: return ValCoord2D( m_seed, xc, yc ); case NoiseLookup: assert( m_cellularNoiseLookup ); lutPos = Index2D_256( 0, xc, yc ); return m_cellularNoiseLookup->GetNoise( xc + CELL_2D_X[lutPos] * m_cellularJitter, yc + CELL_2D_Y[lutPos] * m_cellularJitter ); case Distance: return distance; default: return 0; } } FN_DECIMAL FastNoise::SingleCellular2Edge( FN_DECIMAL x, FN_DECIMAL y ) const { int xr = FastRound( x ); int yr = FastRound( y ); FN_DECIMAL distance[FN_CELLULAR_INDEX_MAX + 1] = { 999999, 999999, 999999, 999999 }; switch ( m_cellularDistanceFunction ) { default: case Euclidean: for ( int xi = xr - 1; xi <= xr + 1; xi++ ) { for ( int yi = yr - 1; yi <= yr + 1; yi++ ) { unsigned char lutPos = Index2D_256( 0, xi, yi ); FN_DECIMAL vecX = xi - x + CELL_2D_X[lutPos] * m_cellularJitter; FN_DECIMAL vecY = yi - y + CELL_2D_Y[lutPos] * m_cellularJitter; FN_DECIMAL newDistance = vecX * vecX + vecY * vecY; for ( int i = m_cellularDistanceIndex1; i > 0; i-- ) distance[i] = fmax( fmin( distance[i], newDistance ), distance[i - 1] ); distance[0] = fmin( distance[0], newDistance ); } } break; case Manhattan: for ( int xi = xr - 1; xi <= xr + 1; xi++ ) { for ( int yi = yr - 1; yi <= yr + 1; yi++ ) { unsigned char lutPos = Index2D_256( 0, xi, yi ); FN_DECIMAL vecX = xi - x + CELL_2D_X[lutPos] * m_cellularJitter; FN_DECIMAL vecY = yi - y + CELL_2D_Y[lutPos] * m_cellularJitter; FN_DECIMAL newDistance = FastAbs( vecX ) + FastAbs( vecY ); for ( int i = m_cellularDistanceIndex1; i > 0; i-- ) distance[i] = fmax( fmin( distance[i], newDistance ), distance[i - 1] ); distance[0] = fmin( distance[0], newDistance ); } } break; case Natural: for ( int xi = xr - 1; xi <= xr + 1; xi++ ) { for ( int yi = yr - 1; yi <= yr + 1; yi++ ) { unsigned char lutPos = Index2D_256( 0, xi, yi ); FN_DECIMAL vecX = xi - x + CELL_2D_X[lutPos] * m_cellularJitter; FN_DECIMAL vecY = yi - y + CELL_2D_Y[lutPos] * m_cellularJitter; FN_DECIMAL newDistance = ( FastAbs( vecX ) + FastAbs( vecY ) ) + ( vecX * vecX + vecY * vecY ); for ( int i = m_cellularDistanceIndex1; i > 0; i-- ) distance[i] = fmax( fmin( distance[i], newDistance ), distance[i - 1] ); distance[0] = fmin( distance[0], newDistance ); } } break; } switch ( m_cellularReturnType ) { case Distance2: return distance[m_cellularDistanceIndex1]; case Distance2Add: return distance[m_cellularDistanceIndex1] + distance[m_cellularDistanceIndex0]; case Distance2Sub: return distance[m_cellularDistanceIndex1] - distance[m_cellularDistanceIndex0]; case Distance2Mul: return distance[m_cellularDistanceIndex1] * distance[m_cellularDistanceIndex0]; case Distance2Div: return distance[m_cellularDistanceIndex0] / distance[m_cellularDistanceIndex1]; default: return 0; } } void FastNoise::GradientPerturb( FN_DECIMAL& x, FN_DECIMAL& y, FN_DECIMAL& z ) const { SingleGradientPerturb( 0, m_gradientPerturbAmp, m_frequency, x, y, z ); } void FastNoise::GradientPerturbFractal( FN_DECIMAL& x, FN_DECIMAL& y, FN_DECIMAL& z ) const { FN_DECIMAL amp = m_gradientPerturbAmp * m_fractalBounding; FN_DECIMAL freq = m_frequency; int i = 0; SingleGradientPerturb( m_perm[0], amp, m_frequency, x, y, z ); while ( ++i < m_octaves ) { freq *= m_lacunarity; amp *= m_gain; SingleGradientPerturb( m_perm[i], amp, freq, x, y, z ); } } void FastNoise::SingleGradientPerturb( unsigned char offset, FN_DECIMAL warpAmp, FN_DECIMAL frequency, FN_DECIMAL& x, FN_DECIMAL& y, FN_DECIMAL& z ) const { FN_DECIMAL xf = x * frequency; FN_DECIMAL yf = y * frequency; FN_DECIMAL zf = z * frequency; int x0 = FastFloor( xf ); int y0 = FastFloor( yf ); int z0 = FastFloor( zf ); int x1 = x0 + 1; int y1 = y0 + 1; int z1 = z0 + 1; FN_DECIMAL xs, ys, zs; switch ( m_interp ) { default: case Linear: xs = xf - (FN_DECIMAL)x0; ys = yf - (FN_DECIMAL)y0; zs = zf - (FN_DECIMAL)z0; break; case Hermite: xs = InterpHermiteFunc( xf - (FN_DECIMAL)x0 ); ys = InterpHermiteFunc( yf - (FN_DECIMAL)y0 ); zs = InterpHermiteFunc( zf - (FN_DECIMAL)z0 ); break; case Quintic: xs = InterpQuinticFunc( xf - (FN_DECIMAL)x0 ); ys = InterpQuinticFunc( yf - (FN_DECIMAL)y0 ); zs = InterpQuinticFunc( zf - (FN_DECIMAL)z0 ); break; } int lutPos0 = Index3D_256( offset, x0, y0, z0 ); int lutPos1 = Index3D_256( offset, x1, y0, z0 ); FN_DECIMAL lx0x = Lerp( CELL_3D_X[lutPos0], CELL_3D_X[lutPos1], xs ); FN_DECIMAL ly0x = Lerp( CELL_3D_Y[lutPos0], CELL_3D_Y[lutPos1], xs ); FN_DECIMAL lz0x = Lerp( CELL_3D_Z[lutPos0], CELL_3D_Z[lutPos1], xs ); lutPos0 = Index3D_256( offset, x0, y1, z0 ); lutPos1 = Index3D_256( offset, x1, y1, z0 ); FN_DECIMAL lx1x = Lerp( CELL_3D_X[lutPos0], CELL_3D_X[lutPos1], xs ); FN_DECIMAL ly1x = Lerp( CELL_3D_Y[lutPos0], CELL_3D_Y[lutPos1], xs ); FN_DECIMAL lz1x = Lerp( CELL_3D_Z[lutPos0], CELL_3D_Z[lutPos1], xs ); FN_DECIMAL lx0y = Lerp( lx0x, lx1x, ys ); FN_DECIMAL ly0y = Lerp( ly0x, ly1x, ys ); FN_DECIMAL lz0y = Lerp( lz0x, lz1x, ys ); lutPos0 = Index3D_256( offset, x0, y0, z1 ); lutPos1 = Index3D_256( offset, x1, y0, z1 ); lx0x = Lerp( CELL_3D_X[lutPos0], CELL_3D_X[lutPos1], xs ); ly0x = Lerp( CELL_3D_Y[lutPos0], CELL_3D_Y[lutPos1], xs ); lz0x = Lerp( CELL_3D_Z[lutPos0], CELL_3D_Z[lutPos1], xs ); lutPos0 = Index3D_256( offset, x0, y1, z1 ); lutPos1 = Index3D_256( offset, x1, y1, z1 ); lx1x = Lerp( CELL_3D_X[lutPos0], CELL_3D_X[lutPos1], xs ); ly1x = Lerp( CELL_3D_Y[lutPos0], CELL_3D_Y[lutPos1], xs ); lz1x = Lerp( CELL_3D_Z[lutPos0], CELL_3D_Z[lutPos1], xs ); x += Lerp( lx0y, Lerp( lx0x, lx1x, ys ), zs ) * warpAmp; y += Lerp( ly0y, Lerp( ly0x, ly1x, ys ), zs ) * warpAmp; z += Lerp( lz0y, Lerp( lz0x, lz1x, ys ), zs ) * warpAmp; } void FastNoise::GradientPerturb( FN_DECIMAL& x, FN_DECIMAL& y ) const { SingleGradientPerturb( 0, m_gradientPerturbAmp, m_frequency, x, y ); } void FastNoise::GradientPerturbFractal( FN_DECIMAL& x, FN_DECIMAL& y ) const { FN_DECIMAL amp = m_gradientPerturbAmp * m_fractalBounding; FN_DECIMAL freq = m_frequency; int i = 0; SingleGradientPerturb( m_perm[0], amp, m_frequency, x, y ); while ( ++i < m_octaves ) { freq *= m_lacunarity; amp *= m_gain; SingleGradientPerturb( m_perm[i], amp, freq, x, y ); } } void FastNoise::SingleGradientPerturb( unsigned char offset, FN_DECIMAL warpAmp, FN_DECIMAL frequency, FN_DECIMAL& x, FN_DECIMAL& y ) const { FN_DECIMAL xf = x * frequency; FN_DECIMAL yf = y * frequency; int x0 = FastFloor( xf ); int y0 = FastFloor( yf ); int x1 = x0 + 1; int y1 = y0 + 1; FN_DECIMAL xs, ys; switch ( m_interp ) { default: case Linear: xs = xf - (FN_DECIMAL)x0; ys = yf - (FN_DECIMAL)y0; break; case Hermite: xs = InterpHermiteFunc( xf - (FN_DECIMAL)x0 ); ys = InterpHermiteFunc( yf - (FN_DECIMAL)y0 ); break; case Quintic: xs = InterpQuinticFunc( xf - (FN_DECIMAL)x0 ); ys = InterpQuinticFunc( yf - (FN_DECIMAL)y0 ); break; } int lutPos0 = Index2D_256( offset, x0, y0 ); int lutPos1 = Index2D_256( offset, x1, y0 ); FN_DECIMAL lx0x = Lerp( CELL_2D_X[lutPos0], CELL_2D_X[lutPos1], xs ); FN_DECIMAL ly0x = Lerp( CELL_2D_Y[lutPos0], CELL_2D_Y[lutPos1], xs ); lutPos0 = Index2D_256( offset, x0, y1 ); lutPos1 = Index2D_256( offset, x1, y1 ); FN_DECIMAL lx1x = Lerp( CELL_2D_X[lutPos0], CELL_2D_X[lutPos1], xs ); FN_DECIMAL ly1x = Lerp( CELL_2D_Y[lutPos0], CELL_2D_Y[lutPos1], xs ); x += Lerp( lx0x, lx1x, ys ) * warpAmp; y += Lerp( ly0x, ly1x, ys ) * warpAmp; } ================================================ FILE: 3rdparty/fastnoise/FastNoise.h ================================================ // FastNoise.h // // MIT License // // Copyright(c) 2017 Jordan Peck // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files(the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and / or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions : // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // // The developer's email is jorzixdan.me2@gzixmail.com (for great email, take // off every 'zix'.) // // VERSION: 0.4.1 #ifndef FASTNOISE_H #define FASTNOISE_H // Uncomment the line below to use doubles throughout FastNoise instead of floats //#define FN_USE_DOUBLES #define FN_CELLULAR_INDEX_MAX 3 #ifdef FN_USE_DOUBLES typedef double FN_DECIMAL; #else typedef float FN_DECIMAL; #endif class FastNoise { public: explicit FastNoise( int seed = 1337 ) { SetSeed( seed ); CalculateFractalBounding(); } enum NoiseType { Value, ValueFractal, Perlin, PerlinFractal, Simplex, SimplexFractal, Cellular, WhiteNoise, Cubic, CubicFractal }; enum Interp { Linear, Hermite, Quintic }; enum FractalType { FBM, Billow, RigidMulti }; enum CellularDistanceFunction { Euclidean, Manhattan, Natural }; enum CellularReturnType { CellValue, NoiseLookup, Distance, Distance2, Distance2Add, Distance2Sub, Distance2Mul, Distance2Div }; // Sets seed used for all noise types // Default: 1337 void SetSeed( int seed ); // Returns seed used for all noise types int GetSeed() const { return m_seed; } // Sets frequency for all noise types // Default: 0.01 void SetFrequency( FN_DECIMAL frequency ) { m_frequency = frequency; } // Returns frequency used for all noise types FN_DECIMAL GetFrequency() const { return m_frequency; } // Changes the interpolation method used to smooth between noise values // Possible interpolation methods (lowest to highest quality) : // - Linear // - Hermite // - Quintic // Used in Value, Perlin Noise and Position Warping // Default: Quintic void SetInterp( Interp interp ) { m_interp = interp; } // Returns interpolation method used for supported noise types Interp GetInterp() const { return m_interp; } // Sets noise return type of GetNoise(...) // Default: Simplex void SetNoiseType( NoiseType noiseType ) { m_noiseType = noiseType; } // Returns the noise type used by GetNoise NoiseType GetNoiseType() const { return m_noiseType; } // Sets octave count for all fractal noise types // Default: 3 void SetFractalOctaves( int octaves ) { m_octaves = octaves; CalculateFractalBounding(); } // Returns octave count for all fractal noise types int GetFractalOctaves() const { return m_octaves; } // Sets octave lacunarity for all fractal noise types // Default: 2.0 void SetFractalLacunarity( FN_DECIMAL lacunarity ) { m_lacunarity = lacunarity; } // Returns octave lacunarity for all fractal noise types FN_DECIMAL GetFractalLacunarity() const { return m_lacunarity; } // Sets octave gain for all fractal noise types // Default: 0.5 void SetFractalGain( FN_DECIMAL gain ) { m_gain = gain; CalculateFractalBounding(); } // Returns octave gain for all fractal noise types FN_DECIMAL GetFractalGain() const { return m_gain; } // Sets method for combining octaves in all fractal noise types // Default: FBM void SetFractalType( FractalType fractalType ) { m_fractalType = fractalType; } // Returns method for combining octaves in all fractal noise types FractalType GetFractalType() const { return m_fractalType; } // Sets distance function used in cellular noise calculations // Default: Euclidean void SetCellularDistanceFunction( CellularDistanceFunction cellularDistanceFunction ) { m_cellularDistanceFunction = cellularDistanceFunction; } // Returns the distance function used in cellular noise calculations CellularDistanceFunction GetCellularDistanceFunction() const { return m_cellularDistanceFunction; } // Sets return type from cellular noise calculations // Note: NoiseLookup requires another FastNoise object be set with SetCellularNoiseLookup() to function // Default: CellValue void SetCellularReturnType( CellularReturnType cellularReturnType ) { m_cellularReturnType = cellularReturnType; } // Returns the return type from cellular noise calculations CellularReturnType GetCellularReturnType() const { return m_cellularReturnType; } // Noise used to calculate a cell value if cellular return type is NoiseLookup // The lookup value is acquired through GetNoise() so ensure you SetNoiseType() on the noise lookup, value, Perlin or simplex is recommended void SetCellularNoiseLookup( FastNoise* noise ) { m_cellularNoiseLookup = noise; } // Returns the noise used to calculate a cell value if the cellular return type is NoiseLookup FastNoise* GetCellularNoiseLookup() const { return m_cellularNoiseLookup; } // Sets the 2 distance indices used for distance2 return types // Default: 0, 1 // Note: index0 should be lower than index1 // Both indices must be >= 0, index1 must be < 4 void SetCellularDistance2Indices( int cellularDistanceIndex0, int cellularDistanceIndex1 ); // Returns the 2 distance indices used for distance2 return types void GetCellularDistance2Indices( int& cellularDistanceIndex0, int& cellularDistanceIndex1 ) const; // Sets the maximum distance a cellular point can move from its grid position // Setting this high will make artifacts more common // Default: 0.45 void SetCellularJitter( FN_DECIMAL cellularJitter ) { m_cellularJitter = cellularJitter; } // Returns the maximum distance a cellular point can move from its grid position FN_DECIMAL GetCellularJitter() const { return m_cellularJitter; } // Sets the maximum warp distance from original location when using GradientPerturb{Fractal}(...) // Default: 1.0 void SetGradientPerturbAmp( FN_DECIMAL gradientPerturbAmp ) { m_gradientPerturbAmp = gradientPerturbAmp; } // Returns the maximum warp distance from original location when using GradientPerturb{Fractal}(...) FN_DECIMAL GetGradientPerturbAmp() const { return m_gradientPerturbAmp; } //2D FN_DECIMAL GetValue( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL GetValueFractal( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL GetPerlin( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL GetPerlinFractal( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL GetSimplex( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL GetSimplexFractal( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL GetCellular( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL GetWhiteNoise( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL GetWhiteNoiseInt( int x, int y ) const; FN_DECIMAL GetCubic( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL GetCubicFractal( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL GetNoise( FN_DECIMAL x, FN_DECIMAL y ) const; void GradientPerturb( FN_DECIMAL& x, FN_DECIMAL& y ) const; void GradientPerturbFractal( FN_DECIMAL& x, FN_DECIMAL& y ) const; //3D FN_DECIMAL GetValue( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL GetValueFractal( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL GetPerlin( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL GetPerlinFractal( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL GetSimplex( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL GetSimplexFractal( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL GetCellular( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL GetWhiteNoise( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL GetWhiteNoiseInt( int x, int y, int z ) const; FN_DECIMAL GetCubic( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL GetCubicFractal( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL GetNoise( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; void GradientPerturb( FN_DECIMAL& x, FN_DECIMAL& y, FN_DECIMAL& z ) const; void GradientPerturbFractal( FN_DECIMAL& x, FN_DECIMAL& y, FN_DECIMAL& z ) const; //4D FN_DECIMAL GetSimplex( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z, FN_DECIMAL w ) const; FN_DECIMAL GetWhiteNoise( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z, FN_DECIMAL w ) const; FN_DECIMAL GetWhiteNoiseInt( int x, int y, int z, int w ) const; private: unsigned char m_perm[512]; unsigned char m_perm12[512]; int m_seed = 1337; FN_DECIMAL m_frequency = FN_DECIMAL( 0.01 ); Interp m_interp = Quintic; NoiseType m_noiseType = Simplex; int m_octaves = 3; FN_DECIMAL m_lacunarity = FN_DECIMAL( 2 ); FN_DECIMAL m_gain = FN_DECIMAL( 0.5 ); FractalType m_fractalType = FBM; FN_DECIMAL m_fractalBounding; CellularDistanceFunction m_cellularDistanceFunction = Euclidean; CellularReturnType m_cellularReturnType = CellValue; FastNoise* m_cellularNoiseLookup = nullptr; int m_cellularDistanceIndex0 = 0; int m_cellularDistanceIndex1 = 1; FN_DECIMAL m_cellularJitter = FN_DECIMAL( 0.45 ); FN_DECIMAL m_gradientPerturbAmp = FN_DECIMAL( 1 ); void CalculateFractalBounding(); //2D FN_DECIMAL SingleValueFractalFBM( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL SingleValueFractalBillow( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL SingleValueFractalRigidMulti( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL SingleValue( unsigned char offset, FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL SinglePerlinFractalFBM( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL SinglePerlinFractalBillow( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL SinglePerlinFractalRigidMulti( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL SinglePerlin( unsigned char offset, FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL SingleSimplexFractalFBM( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL SingleSimplexFractalBillow( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL SingleSimplexFractalRigidMulti( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL SingleSimplexFractalBlend( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL SingleSimplex( unsigned char offset, FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL SingleCubicFractalFBM( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL SingleCubicFractalBillow( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL SingleCubicFractalRigidMulti( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL SingleCubic( unsigned char offset, FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL SingleCellular( FN_DECIMAL x, FN_DECIMAL y ) const; FN_DECIMAL SingleCellular2Edge( FN_DECIMAL x, FN_DECIMAL y ) const; void SingleGradientPerturb( unsigned char offset, FN_DECIMAL warpAmp, FN_DECIMAL frequency, FN_DECIMAL& x, FN_DECIMAL& y ) const; //3D FN_DECIMAL SingleValueFractalFBM( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL SingleValueFractalBillow( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL SingleValueFractalRigidMulti( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL SingleValue( unsigned char offset, FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL SinglePerlinFractalFBM( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL SinglePerlinFractalBillow( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL SinglePerlinFractalRigidMulti( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL SinglePerlin( unsigned char offset, FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL SingleSimplexFractalFBM( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL SingleSimplexFractalBillow( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL SingleSimplexFractalRigidMulti( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL SingleSimplex( unsigned char offset, FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL SingleCubicFractalFBM( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL SingleCubicFractalBillow( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL SingleCubicFractalRigidMulti( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL SingleCubic( unsigned char offset, FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL SingleCellular( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; FN_DECIMAL SingleCellular2Edge( FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z ) const; void SingleGradientPerturb( unsigned char offset, FN_DECIMAL warpAmp, FN_DECIMAL frequency, FN_DECIMAL& x, FN_DECIMAL& y, FN_DECIMAL& z ) const; //4D FN_DECIMAL SingleSimplex( unsigned char offset, FN_DECIMAL x, FN_DECIMAL y, FN_DECIMAL z, FN_DECIMAL w ) const; inline unsigned char Index2D_12( unsigned char offset, int x, int y ) const; inline unsigned char Index3D_12( unsigned char offset, int x, int y, int z ) const; inline unsigned char Index4D_32( unsigned char offset, int x, int y, int z, int w ) const; inline unsigned char Index2D_256( unsigned char offset, int x, int y ) const; inline unsigned char Index3D_256( unsigned char offset, int x, int y, int z ) const; inline unsigned char Index4D_256( unsigned char offset, int x, int y, int z, int w ) const; inline FN_DECIMAL ValCoord2DFast( unsigned char offset, int x, int y ) const; inline FN_DECIMAL ValCoord3DFast( unsigned char offset, int x, int y, int z ) const; inline FN_DECIMAL GradCoord2D( unsigned char offset, int x, int y, FN_DECIMAL xd, FN_DECIMAL yd ) const; inline FN_DECIMAL GradCoord3D( unsigned char offset, int x, int y, int z, FN_DECIMAL xd, FN_DECIMAL yd, FN_DECIMAL zd ) const; inline FN_DECIMAL GradCoord4D( unsigned char offset, int x, int y, int z, int w, FN_DECIMAL xd, FN_DECIMAL yd, FN_DECIMAL zd, FN_DECIMAL wd ) const; }; #endif ================================================ FILE: 3rdparty/fastnoise/LICENSE ================================================ MIT License Copyright (c) 2017 Jordan Peck Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: 3rdparty/fastnoise/README.md ================================================ # FastNoise FastNoise is an open source noise generation library with a large collection of different noise algorithms. This library has been designed for realtime usage from the ground up, so has been optimised for speed without sacrificing noise quality. This project started when my search to find a good noise library for procedural terrain generation concluded without an obvious choice. I enjoyed the options and customisation of Accidental Noise Library and the speed of LibNoise, so many of the techniques from these libraries and the knowledge I gained from reading through their source has gone into creating FastNoise. I have now also created [FastNoise SIMD](https://github.com/Auburns/FastNoiseSIMD), which utilises SIMD CPU instructions to gain huge performance boosts. It is slightly less flexible and cannot be converted to other languages, but if you can I would highly suggest using this for heavy noise generation loads. ### Features - Value Noise 2D, 3D - Perlin Noise 2D, 3D - Simplex Noise 2D, 3D, 4D - Cubic Noise 2D, 3D - Gradient Perturb 2D, 3D - Multiple fractal options for all of the above - Cellular (Voronoi) Noise 2D, 3D - White Noise 2D, 3D, 4D - Supports floats or doubles ### Wiki Usage and documentation available in wiki [Wiki Link](https://github.com/Auburns/FastNoise/wiki) ### Related repositories - [FastNoise C#](https://github.com/Auburns/FastNoise_CSharp) - [FastNoise Java](https://github.com/Auburns/FastNoise_Java) - [FastNoise SIMD](https://github.com/Auburns/FastNoiseSIMD) - [FastNoise Unity](https://www.assetstore.unity3d.com/en/#!/content/70706) - [Unreal FastNoise](https://github.com/midgen/UnrealFastNoise) Credit to [CubicNoise](https://github.com/jobtalle/CubicNoise) for the cubic noise algorithm ## FastNoise Preview I have written a compact testing application for all the features included in FastNoise with a visual representation. I use this for development purposes and testing noise settings used in terrain generation. Download links can be found in the [Releases Section](https://github.com/Auburns/FastNoise/releases). ![FastNoise Preview](http://i.imgur.com/uG7Vepc.png) # Performance Comparisons Using default noise settings on FastNoise and matching those settings across the other libraries where possible. Timings below are x1000 ns to generate 32x32x32 points of noise on a single thread. - CPU: Intel Xeon Skylake @ 2.0Ghz - Compiler: Intel 17.0 x64 | Noise Type | FastNoise | FastNoiseSIMD AVX2 | LibNoise | FastNoise 2D | |-------------|-----------|--------------------|----------|--------------| | White Noise | 141 | 9 | | 111 | | Value | 642 | 152 | | 361 | | Perlin | 1002 | 324 | 1368 | 473 | | Simplex | 1194 | 294 | | 883 | | Cellular | 2979 | 1283 | 58125 | 1074 | | Cubic | 2979 | 952 | | 858 | Comparision of fractal performance [here](https://github.com/Auburns/FastNoiseSIMD/wiki/In-depth-SIMD-level). # Examples ## Cellular Noise ![Cellular Noise](http://i.imgur.com/quAic8M.png) ![Cellular Noise](http://i.imgur.com/gAd9Y2t.png) ![Cellular Noise](http://i.imgur.com/7kJd4fA.png) ## Fractal Noise ![Fractal Noise](http://i.imgur.com/XqSD7eR.png) ## Value Noise ![Value Noise](http://i.imgur.com/X2lbFZR.png) ## White Noise ![White Noise](http://i.imgur.com/QIlYvyQ.png) ## Gradient Perturb ![Gradient Perturb](http://i.imgur.com/gOjc1u1.png) ![Gradient Perturb](http://i.imgur.com/ui045Bk.png) ![Gradient Perturb](http://i.imgur.com/JICFypT.png) # Any suggestions or questions welcome ================================================ FILE: CMakeLists.txt ================================================ cmake_minimum_required(VERSION 3.16.0) # Disable release-builds without debug info set(CMAKE_CONFIGURATION_TYPES Debug RelWithDebInfo CACHE STRING INTERNAL FORCE) # Project version, 4 numbers representation set(DEFAULT_VERSION "0.8.11.0" CACHE STRING "Version" FORCE) # Set from CI only set(BUILD_ID "0" CACHE INTERNAL "") set(GIT_REPO "" CACHE INTERNAL "") set(GIT_REF "" CACHE INTERNAL "") set(GIT_SHA "" CACHE INTERNAL "") project(Ingnomia VERSION ${DEFAULT_VERSION} DESCRIPTION "Gnome city builder" HOMEPAGE_URL "https://github.com/rschurade/Ingnomia" LANGUAGES "CXX" ) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/modules") find_package(Qt5 REQUIRED QUIET COMPONENTS Core Xml Sql OpenGL) find_package(Steam REQUIRED) find_package(Noesis REQUIRED) find_package(OpenAL REQUIRED) # Noesis license set(NOESIS_LICENSE_NAME "" CACHE STRING "Name") set(NOESIS_LICENSE_KEY "" CACHE STRING "Key") set(BUGSPLAT_DB "" CACHE STRING "BSDB") # Without this, paths are not relative in the sources list cmake_policy(SET CMP0076 NEW) include(GNUInstallDirs) # The program itself add_executable(${PROJECT_NAME}) # C++ version set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 17 AUTOMOC ON INTERPROCEDURAL_OPTIMIZATION ON INSTALL_RPATH "$ORIGIN" ) set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_property(GLOBAL PROPERTY AUTOGEN_SOURCE_GROUP "Generated") add_subdirectory(content) # Deployable content # Copy content to target directory add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/content $/content ) if(WIN32) set(RC_SOURCES ${PROJECT_NAME}.ico windows/${PROJECT_NAME}.rc windows/${PROJECT_NAME}.manifest windows/resource.h ) target_sources(${PROJECT_NAME} PRIVATE ${RC_SOURCES} ) endif() target_sources(${PROJECT_NAME} PRIVATE Changelog.md README.md LICENSE ) add_subdirectory(src) # Sources list add_subdirectory(3rdparty) # 3rd party dependencies # Linking target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Xml Qt5::Sql Qt5::OpenGL Steam NoesisApp fastnoise exprtk OpenAL ) # Noesis license configure_file( ${CMAKE_SOURCE_DIR}/src/gui/license.h.in ${CMAKE_SOURCE_DIR}/src/gui/license.h @ONLY ) configure_file( ${CMAKE_SOURCE_DIR}/src/version.h.in ${CMAKE_SOURCE_DIR}/src/version.h @ONLY ) target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/src/gui/license.h.in ${CMAKE_SOURCE_DIR}/src/version.h.in ) if(UNIX) # Qt requires position independent code target_compile_options(${PROJECT_NAME} PRIVATE -fPIC ) endif() get_target_property(SOURCE_LIST ${PROJECT_NAME} SOURCES) source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}" FILES ${SOURCE_LIST}) if(UNIX AND NOT (DEFINED ENV{CXXFLAGS} OR CMAKE_CXX_FLAGS)) set(CMAKE_CXX_FLAGS "-Wall -Wextra -g") # Kill some overly verbose warnings set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-pragmas -Wno-unused-parameter") # But treat likely errors as actual errors set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=missing-field-initializers -Werror=ignored-qualifiers -Werror=delete-non-virtual-dtor -Werror=unused-value") endif() if(MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Gy /Oi /MP /GS- /W3 /permissive- /w24458 /w34456 /w24702") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /CGTHREADS:8 /PROFILE") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Ob2") set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS /SUBSYSTEM:WINDOWS ) set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${PROJECT_NAME}) endif() if(MSVC AND NOT BUGSPLAT_DB STREQUAL "") find_package(BugSplat REQUIRED) target_link_libraries(${PROJECT_NAME} PRIVATE BugSplat ) get_target_property(BUGSPLAT_DLL BugSplat LOCATION) get_target_property(BUGSPLAT_RC_DLL BugSplatRc LOCATION) get_target_property(BUGSPLAT_SEND_DLL BugSplatSendReport LOCATION) list(APPEND RUNTIME_DLLS ${BUGSPLAT_DLL} ${BUGSPLAT_RC_DLL} ${BUGSPLAT_SEND_DLL}) endif() # Install target install( TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR} ) get_target_property(STEAM_DLL Steam LOCATION) get_target_property(NOESIS_DLL Noesis LOCATION) list(APPEND RUNTIME_DLLS ${STEAM_DLL}) list(APPEND RUNTIME_DLLS ${NOESIS_DLL}) if(WIN32) # On Windows, we want to use bundled OpenAL for guaranteed OpenAL Soft support list(APPEND RUNTIME_DLLS ${OPENAL_DLL}) endif(WIN32) install( FILES ${RUNTIME_DLLS} Changelog.md LICENSE DESTINATION ${CMAKE_INSTALL_BINDIR} ) if(WIN32) install( FILES $ DESTINATION ${CMAKE_INSTALL_BINDIR} OPTIONAL ) endif() # Deployment helpers for Windows if(WIN32) include(windeployqt) windeployqt(${PROJECT_NAME}) add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${RUNTIME_DLLS} $ ) INCLUDE_EXTERNAL_MSPROJECT("Blend" ${CMAKE_CURRENT_SOURCE_DIR}/gui/gui.csproj) set_target_properties("Blend" PROPERTIES EXCLUDE_FROM_ALL TRUE) endif() ================================================ FILE: Changelog.md ================================================ # Changelog All notable changes to this project will be documented in this file. ## [0.8.11] ### Fixed - traders now pay the announced price for player owned goods ## [0.8.10] ### Fixed - fix workshop getting stuck if job prerequisites are used elsewhere (#182) - fix half-height walls being completely flat ## [0.8.9] ### Fixed - fix trading of items without quality - fix data inconsitencies in trader UI - fixed potential failure of event spawns ### Added - center camera on event notifications ## [0.8.8] ### Fixed - remove job when deleting farm tile - fix deconstructing scaffold - fix beehive job - suspending workshops - XpMod can be read from config file (#173) - SeedTrader to trade potato & onion seeds. - addded missing material name for Panda, Spider, Woodlouse ### Added - support for sound - add num plots to grove info, ### Changed - update Noesis to 3.0.12 - allow designating grove over existing plants - improve auto craft behavior - some rebalance of trade values for metal coin, bar and ores. (#171) ## [0.8.7] ### Fixed - grape seed on start up - game pausing when in mainmenu - remove dead gnomes from squads - show number of trees in grove window - missing textures when loading the game - floating items when mining the ramp under a working gnome - amount buttons in trader UI - partial write back while updating workshop settings ### Added - attack on sight combat behavior - defend (hold position) combat behavior ### Changed - allow corpses outside stockpiles to be butchered - can designate groves over existing trees - allow jobs in mid-air to be selected - reduce number of item categories ### Removed ## [0.8.6] ### Fixed - crash with missions - remove plants on the tile above when digging stairs up - gnomes forgetting their rooms on load - swapped items getting stuck as constructed when looking for a tool - seeds for leaf plants like tea, tobacco, woad and dyers weed ### Added - burn recipe for bones in the waste disposal - stairs made from stone blocks - fisher gui - controls for mechanisms - controls for automatons - full DPI scaling support - some statistics ### Changed - restructured the tile info window - moved all job handling other than hauling jobs to central job manager instance - trees can no longer overlapp with each other - trees can no longer replace existing tiles - onions and potatos produces seeds again and use seeds to plant ### Removed ## [0.8.5] ### Fixed - moved cursor calculation to game thread - cursor detached from selection when using WASD - going back to resume screen when selecting settings out of a running game - container capacity on stockpiles after load - crash because of incorrect data in save folders - buildable carry containers - crash because of incorrect bitmaps in gnome detail window - user presets saving on embark - translation string for willow tree - willow trees are now plantable - fish shouldn't drown anymore ### Added - capacity info for stockpile tiles on tile info - watched item list - 24 new food items with recipes and kitchen integration - button to save user presets - glass bottle and jar - show version on main menu screen ### Changed - furniture can now be constructed anywhere and won't get deconstructed when a room designation underneath is removed - redesigned inventory overview - removed direct mapping of certain ids to databse rows, that should prevent save games breaking in the future when stuff is removed or inserted at the wrong place - grain plants produce seeds again and need seeds for planting ### Removed ## [0.8.4] ### Fixed - large refactor of code base to fix some crashes and memory leaks - behavior tree instantiation ### Added - Willow trees - Info display for selected command and selection size ### Changed - Rivers now have sand floor, preventing grass and plants spawning there - speed up light updates - speed up animal ai for grazing ### Removed ## [0.8.3] ### Fixed - crash in tile info panel due to wrong thread - random crash due to use of GPU in wrong context - crash with auto craft in waste disposal ### Added ### Changed - sped up auto-craft job generation - include log file in crash dumps ### Removed ## [0.8.2] ### Fixed - suboptimal paths due to wrong heuristic in pathfinding - gnomes trying to work in deep water - missing floor texture for undiscovered areas - find new path if target has moved - crash with selected dig stairs tool at layer 0 - build scaffolds on top of each other - added check for corrupted config file and load standard config if needed - deconstruct workshops sets tile flags correctly, allowing to build on that tile again - prevent creatures from walking into deep water - constrain camera to actual game area - reasonable speed range for WASD - load game screen updates without restarting now ### Added - ui elements to show state of and toggle certain render options - toggle for job sprites - added bugsplat crash reporting to windows builds ### Changed - improved cursor for building floor on walls - optimized pathfinding if multiple gnomes have same goal - reduced water pressure on the faucet - mining job sprite, first poc for job sprites giving more visual feedback about the job ### Removed - old networking code ## [0.8.1] ### Fixed - message window not disappearing after clicking an answer button if game is unpaused, game not possible to unpause now when message window is open - GUI quickly changing size and back after resizing the window - key space for pause - text clipping in some menu panels - dig stairs and ramps cursor - rotating the world keeps view on current location - set view to correct position after load - added bounds to world movement so it can't be moved out of view accidentally - fix keyboard movement for fast speed - felling trees in groves requires a felling axe - jobs created with no required tool - groves not keeping suspend flag - killed animals leave corpses again - butchering animal corpses - explorative mining speed now the same as mining - jobs with missing materials not returned to job queue correctly - visual corruptions on AMD GPUs - some alpha blending issues - uiscale reverting to 100% - crash when adding or deleting a custom profession - building scaffolds - dead gnomes give up workshop assignments - dead creatures drop their inventory - fix crash on startup on some systems ### Added - moved text in xamls to resource files as preparation for translations PR#90 Daynvheur - added french translation PR#90 Daynvheur - settings dialog - WASD movement - item summary - setting for minimum ambient light level - colors for skill buttons in population overview - colors for population schedule buttons - blacksmith recipe for metal needle - honey wine - fill hole command ### Changed - more info for jobs PR #91 by rivenwyrm - updated to Noesis 3.0.6 - removed key triggers from xamls - use only one save game for auto save - improved auto craft behavior - honey can be stored in barrels - greatly reduced bone drops from butchering ### Removed ## [0.8.0] ### Fixed - Isolated simulation thread from UI thread, so they don't share data. UI components are now split into a UI controller living in t he UI thread and a data aggregation component living in the simulation thread. Both parts are connected via the Qt message system, but are not allowed to access state owned by the other thread. - Prevent errors in sprite mapping from cascading. The errors themselves are not resolved yet, but will no longer corrupt an entire save game. - Always resolve all assets relative to the main executable. ### Added - Added Noesis based UI, replacing the existing UI from scratch. (Work in progress.) - Added "Hunting" behavior, in addition to legacy "defend" behavior. Squads can actively seek out enemies all over the map as they become visible, without user involvement. - Added Linux support. ### Changed - Relicense code under [GNU AFFERO GENERAL PUBLIC LICENSE Version 3](LICENSE) and publish as open source. - Switch to CMake build system. - Switch from C++11 with MSVC legacy extensions to pure C++17. - Update Qt to 5.14.1. - Refactored rendering. - Cull empty tiles in vertex rather than fragment shader. - Split opaque and transparent tiles into distinct render passes. - Upload data to GPU via compute shader rahter than direct mapping. - Render dark areas desaturated. - Improve visibility of designations. - Cull tiles down to minimal screen space size in order to minimize overdraw. - Increase required OpenGL version to 4.3. - Add depth buffer to rendering. - Replace explicit squad target control by behavior settings for Squad. - Move Uniform assignment from squad position to individual gnome. Gnomes can now have a uniform without being assigned to a squad, but they still need a squad to control their combat behavior. - Allow arbitrarily sized squads, up from only 5 slots. - Speed up high level pathability tests. - Speed up A* pathfinding. - Speed up liquid simulation. - Speed up spatial item lookup. - Switch from file based SQLite DB to pure in-memory SQLite DB. - Load SQLite DB from human readable SQL file instead of binary representation. - Run as "native Windows 10 application" under Windows 10, rather than running in compatibility mode. ### Removed - Removed old Qt based UI. - Removed RapidJSON from JSON parsing and dependencies. Comments in JSON files are no longer supported. - Removed Quazip from dependencies. - Removed zLib from dependencies. ## [0.7.5] - fix bee hive now craftable at carpenter - add wall torch - add plank stairs - fix furniture not buildable in rooms - fix phase shifting gnomes - fix deconstructing floors moves items to the worker's position - fix item search abandoning too soon - added categories to the workshop construction window to make it easier to find a specific workshop - add adjustable threshold to item overlay, mark item red if amount is lower than threshold - add big torch and brazier, both crafted in the blacksmith workshop - add config option to control the render order of layers: "renderMode": "down|up" up looks better with water transparency but adds more load to the gpu - fix rotating dresser - fix military widget multiple issues - fix gnomes in get job loop when trees not reachable for pick fruit or fell - add damage reduction when wearing armor - add glass workshops - make renderDown the default mode ## [0.7.4] - sprite handling rework to allow more sprites in the future - added adjustable limit to hay harvesting - added water evaporation - fix save/load auqifiers and deaquifiers - fix building a wall removes water on that tile - added setting to set target fps when the game is paused, ( config.json: "pausedRenderTimer": # ) higher number = lower fps - added setting to adjust the light level at night time - added check connection between items and jobs before give the job to a gnome, fixes gnomes getting stuck because of unreachable items - fixed workshop tasks showing different materials when a new material appeared after creating the task - prospecting now has a 50% success chance - prospecting outcome now depends on source material - fix constructed wallfloor disappearing when building a wall on top - added alarm bell and gnomes retreating to its location when the alarm is raised ## [0.7.3] - fix enemy kingdoms not attacking - fix goblin aggression being so high it overcomes the peaceful setting - fix gnomes changing haircolor depending on the direction they face - fix bug with fill trough that would stop gnomes from working - fix some weapon crafting recipes - added popup and center camera on gnome death - when sending several explorers at the same time, they shouldn't find the same kingdom anymore - fix endless get job loop when required items aren't reachable - added checkbox to pasture widget to toggle harvest jobs (milk, shear), that setting will be off for existing games so please check your pastures - improved auto crafting behavior - fix saving of embark presets - fix prospector making stone slivers - added fill hole command - fix crafting of metal bars when source material "any" is selected - fix reset mission list wehn starting a new game - fix crash with removing stockpile filter items - added checkbox to world size slider to enable map sizes greater than 300 - added harvesting grass for hay from pastures - building a structure like fence that removes the WALKABLE flag will also remove the designation (farm, stockpile...) on that tile - improved (hopefully) stockpiling performance - goblins should no longer target gnomes that are on a mission - workshop and stockpile windows now remember their size and position - added new sprites for rough stone walls - split rendering into two passes for floor and everything above, sprites overlapping tile borders won't get cut off by neighboring floor sprite anymore ## [0.7.2] - fix building workshops over the edge - fix automaton removing cores - fix automaton list reset on load - added quick save - fixed crash with non existant mission - added check if gnome can reach workshop when gettings jobs - some animals now drop hides on butcher - item info now shows tool level if item is a tool - job info in the tile info widget now shows required tool level if the job requires a tool - added flintstone pickaxe head - fix wood bed frame - fix wall floor construction - grain plants (wheat, oat, millet, barley) no longer produce seeds, the seed item is grain, they now produce 2 grain per harvest with a 50% chance of a third - fix giving out jobs when required items not exist, this will reduce many loops of getJob-dropJob - fix when building a wall it sets the embedded material and item spriteID to zero - fix when building a wall it moves items and creatures out of that tile. - fix unreachable material preventing some crafting - removed the constraint that all items have to be the same material when selecting "any" material for crafting - stopped eggs from walking around - added beehives and honey - added flowers - added waste disposal workshop ## [0.7.1] - fixed some definitions, flour, bone table - fix saving/loading for larger data size - fixed crash with removing stockpiles under constructed containers - fixed workshops creating auto craft jobs even when they shouldn't - fixed crash with deleting stockpiles - fixed crash with too many gnomes on the profession overview list - fixed crafting of automaton parts - fix auto harvester for vegetables - it's now possible to toggle the debug overlay, default key O - added on screen item counts - quadrupled move speed of gnomes ## [0.7.0] - added death from drowning - added automatons - fixed floor disappearing when deconstructing workshops - fixed replacing fancy floors and walls - added windmill - add bone and skull walls - adjusted all item prices (wip) - fixed mod support - prepared main menu and the new game widget for translations - added neighbor kingdoms and interactions with them - made the ocean front uneven - added rivers ## [0.6.9] - added profession selection to profession overview - lowered required tool level for felling trees so wooden felling axes work now - added sheep dyeing - add sort by profession to profession overview - checking for default profession on start and add it if it's missing - improved random movement - added hard limit of 1000 creatures per type - fix creature breeding when limit is reached - fix deconstructing doors - fix a crash with pastures - improved grass spreading - added birch trees - improved water handling - added engineer and machine workshops - fixed a bug with digging ramps down ## [0.6.8] - added metal pickaxe heads - added peaceful mode - added octree to item management - fixed floor sprite rotation for stone stairs - added toggle for stockpile limit modes - assign workshop, sort gnomes by name - fixed super fast cows - fix crash with deleting a stockpile - added deleting of save games - add priorities to farms, groves and pastures - build containers with multi selection - fix traders having no inventory after load - fix beds sometimes not released properly - fix crash with dyers workshop and auto generating craft plank jobs - fix dyer workshop, save/load created materials and names ## [0.6.7] - possible fix for wrong material crafts - fix double tile definition for tailor workshops - add saving of monsters - add saving of event manager state - fix saving time and day with first auto save on new game - added occupied tile flag to prevent building into trees - fix clear reserved items on hauling job abortion - stockpile limits only uses item type now - fix replace wall being able to be applied to workshops - improved replacing of walls and floors - improved deconstructing - prevent digging ramps under fishery - add workshop craft to by material ## [0.6.6] - add target assignment for squads - fixed freeze with auto craft - fixed crash when pressing keys while in the menu - fix deconstructing workshops - fix lockup with butcher workshop - fix releasing carried items when a wheelbarrow job gets interrupted. - fix traders having no items - fix job selection test tile when clicking different job while one is already selected - switched sacks and bags, sacks are nor buildable and bags the carry container - added container info to item info widget - fix remove items from containers too when taking them from a stockpile - fix building sacks outside of stockpiles - fix building walls on doors - fix item count in trade widgte for items with quality ## [0.6.5] - fixed crash when changing workhop priority - fixed setting uniform and squad names - fixed missing entry in material to tool level table for platinum - added auto save - fixed tools not getting release properly when interupted (this time for real hopefully) - reworked light handling, allow gnomes to carry torches ## [0.6.4] - fixed build palisade, not possible anymore with floor above - fixed loading of installed crates on stockpiles - reduced DB calls for farms and groves - fixed stockpiles generating hauling jobs for fields with containers that don't accept that item - fix workshop crafting now costs time accoring to the crafting recipe - fix designating a grove also set farm flag - added armor and weapon crafting - added armor equipping - added military settings window - added training grounds - fixed crash when clicking the tailor workshop, error in mattress sprite - fixed crash when clicking an A button in the skill overview window - fixed soil corner ramp orientation - fixed crash when restarting the game - fix stone stair rotation - fix undefined job state when a gnome was working a job and a need kicked in - fix grass-soil uramps showing the winter sprite all season - fix another instance of tools not releasing properly when sleep hits ## [0.6.3] - added scheduling - cached some more db values to reduce reoccurring db access - added ingame bug report - fixed fences not showing up - fixed animals procreating - fixed stockpile stacksize when installing container - first goblins won't appear before summer year two - increased gnome move speed - clear log on start now clears log on start - fixed oak tree rotation - nobody noticed wtf - reduced grow time for most plants significantly ## [0.6.2] - added prospecting recipes - fix building fisheries - fix crash with dirt floor sprites after loading - fix materials not registering for crafts - fix tech gain for crafting at workshops - fix tool pick up for dig jobs - fix planks and blocks not recognized for floor construction ## [0.6.1] - added default material to sprite definition, no more bone table as default sprite when building workshops - fixed material2 for combined items at startup - redesigned the stockpile filter tab - added workshop priority - added assign gnome to workshops ## [0.6.0] - added indicator to butcher list if animal is young - added job sprite to upper wall tile for DigStairs - fix renaming groves - fix adding tiles to existing groves - added oak trees - added combat - this is ongoing development - added auto butchering of corpses - added mushroom biome - added keybinding options for actions - added oaks for oak tree planting - replaced the external data storage with a SQLite database ## [0.5.9] - talked to some unreliable onions and straightened them out - fix build thatch outer ramp works again - mine stairs up now removes the wall in the tile above - added more walls with floor on top - fix pine cones defs for stockpiles and containers - add buildable soil and stone outer corner ramps - clicking the gnome list to open a gnome window that is already open now brings that window to front - fixed crash with opening item info when the maker has died - dead gnomes disappear after two days - fix animal state change tick doesn't reset on load - fix animals grow up again - disallow setting designations on tiles occupied by tree leaves - reinstated groves - added some dyes - added hair dyeing - improved lighting ## [0.5.8] - creatures will now evade trees suddenly growing up below them - fixed priorities for different job types with same skill requirement - newly built workshops now accept generated jobs by default - reinstated death from hunger and thirst - gnomes now eat and drink up to full once they started - auto craft items for build jobs - plant tree now checks for other trees in range - plant tree now checks for other plant tree jobs in range - adjusted sunrise and sunset times for seasons - fix missing fish bones in stockpile filter - fix claim items for workshop craft jobs, when a linked stockpile exists but the item is not in that stockpile - fix job priorities when there are farming jobs around - fix deconstructing workhops only creates on deconstruct job even if more tiles are selected - fix deconstructing scaffolds deconstructs all scaffolds above - felling pine trees now produces 1-3 pine cones that can be used to plant new trees - fix plants growing in seasons they shouldn't when planted in that season - now also expel items from the trunk tile when a tree grows up - digging stairs down should create raw materials at "0, 0, 0" anymore - added indirect sunlight to neighboring tiles - fixed trader no appearing ## [0.5.7] New save game required - fix some settings not saving their changes - harvesting trees is now a Horticulture job - dig hole now creates ramps at the outer tiles of the hole - improved get best drink, get best food - improved constructing ramps - fixed crash with removing a farm while paused - fix adding tiles to existing designations open the wrong window - added job priorities - fixed crash when removing linked stockpiles - raised drink value of wine to 40 - carpenters can now craft fishing rods - changed saving items so that adding new items won't break saves anymore (breaks save games one last time) ## [0.5.6] - fix reset the behavior tree when aborting a job through skill deactivation - fix render depth in settings is an INT not a BOOL - fix harvesting trees - reactivated wheelbarrows to work with behavior tree - fix workshop widget checkbox showing the correct state for accept jobs - fix BT for aborting jobs - fix deconstructing stuff - fix deconstructing workshops returns items now ## [0.5.5] New save game required - fix deconstructing built ramps - fixed checkboxes not visible - added behavior trees for creature AI - added sheds, troughs and beehives ## [0.5.4] - added seed and animal trader - added migration, 1-5 gnomes will arrive each season - tile info window doesn't reveal undiscovered tiles anymore - fix crash with population overview clicking skill button after sorting - added bone furniture - added wall paintings ## [0.5.3] - fixed animals not following gnomes - added support for stylesheet mods - improved job sprite rendering - improved job sprites for wall and floor constructions - seperated stone and brick blocks ## [0.5.2] - fix duplicate sprite creations - debug mode disable fow - started implementing basic magic features - added job info to tile info widget - UI overhaul - fix not possible to build walls on ramp tiles anymore - fix floor replacement on grass tiles turning out as raw soil floor ## [0.5.1] New save game required - fixed workshop crafting queue behaving strangely - abort jobs when required skill gets deactivated - can activate stockpile filter categories even with no items in that category present so that newly created items go to that stockpile - added trading ## [0.5.0] - add buckets and sacks as carry containers - added fishery workshop - added item history ## [0.4.9] - fixed missing check for pasture when designating areas - added wheelbarrows - added gui for game settings - added auto generate jobs ## [0.4.8] - added checkbox to gnome window to let them ignore no pass zones - removed seperate render passes for floor and wall tiles ## [0.4.7] - added no pass designation - fix falling gnomes discover their new location - remove floor - improve job selection to avoid getting trapped - build wall - improve job selection to avoid getting trapped - add renaming of gnomes ## [0.4.6] New save game required - added dig ramps down - water flows down now - wild animals no longer spawn in the starting zone - animals now getting hungry - some animals on pastures eat grass - fix dig hole - fixed gravity for dropped tools - fixed path finding/move order not correctly aborting in in some cases - remove dead gnomes from lists ## [0.4.5] - tiles with non wall neighbors are discovered at game start - grass spreads now to dirt tiles - fixed beer and bread recipes taking grain - reinstated water - added fish ## [0.4.4] - improved check if item is allowed in a container - fixed items in containers being rendered after load - built soil and rough stone walls and floors will be mined rather than deconstructed - added cabinet, dresser, statues to funiture options - fixed a workshop crafting related crash - animals no longer randomly wander through doors that are blocked for them - fix: pasture onle show collect eggs checkbox for egg laying animals - separated selection rendering from main render ## [0.4.3] - update lights in range when mining a wall - open stockpile window at stockpile creation - goats give milk now - eggs can now be collected, omelette! - removed glFinish in the main render function, this might improve things on some systems - fixed a stockpile related crash ## [0.4.2] - fix Gnome list showing the right now after sorting - another fix for initial gnome speed - fixed brewing recipes to use brewing skill instead of cooking - building/replacing floor tiles with ramp tops is no longer possible - prevent logs created by felling a tree at map border to float in limbo ## [0.4.1] - shift leftclick now forces the tile info widget to open even if only one thing is on the tile - made gnomes less blinking - added cheese - added move top/bottom buttons to stockpile widgets - fixed bug that caused craft jobs with materials set to "any" not being started - add "fow" option to configs when missing ## [0.4.0] - stockpiling, tiles with containers are handled first - job queue: craft# the number to craft will count down now - job queue: craft to, jobs will not disappear anymore when the number is reached but suspend - slowed down fast runners - sun loving plants no longer grow underground - fixed crash when removing a pasture - fixed selection checking for zLevel to only stop at walls and floors ## [0.3.9] - fix: update selection z level when changing level - added chisel to stone mason - added 3 pixel to mouse y for better tile selection - skill system overhaul (first part) - needs new game - gnome move speed now depends on hauling skill - added save button to profession management to prevent unwanted changes to professions ## [0.3.8] - fix: saving keeps stockpile order now - no more duplicate gnome names, Ulf Ulfson son of Ulf disagrees - gnomes on gnome list and profession overview are now sorted by name - population overview can now be sorted by skill - fixed keyboard zoom not working - population overview and gnome widgets now update each other in real time ## [0.3.7] - improved world rotation - added keybinding ctrl + / ctrl - for changing z levels - made key bindings configurable ## [0.3.6] - added missing translation strings for some item groups - fix replace floor to work under designations - fixed a crash with multiple butchers butchering the same animals - fix missing item definition for sausage and sandwich causing pink boxes - fixed messed up sprites for constructed items on load (double beds) - fix missing definitions ammo pouch - fix workshop craft# and craft to ## [0.3.5] - fixed canceling workshop constructions leaving job sprites behind - show stair orientation when digging stairs down - fixed creatures and gnomes flashing when on the same tile - reworked the workshop gui - stockpiles: initial suspend threshold per item is now 0, if it's 0 the suspend threshold is ignored - fixed some items not possible to stockpile - please report if an item doesn't appear in the stockpile filter ## [0.3.4] - fixed some crashes with butchering animals - added short walls, hotkey H - will need new game - added bones to all butchering results - added animals: duck, goose, dog, cat, fox, wolf, deer, goat, squirrel - fixed sand short wall ## [0.3.3] - if embark items is empty medium preset will be selected - fixed crash when clicking on certain tiles of a rotated crude workbench ## [0.3.2] - replacing walls now return materials - moved the log file to C:\Users\\Documents\My Games\Ingnomia - tweaked cursor positioning if there is a wall structure in the tile in front of it - fix space bar for toggle pause - added keyboard plus and minus for zoom ## [0.3.1] - abort jobs now correctly unclaims items - hunger and thirst now only abort jobs if food/drink items are available - fixed a crash with aborting jobs - made the new game screen more friendly for lower resolutions - added button to create a random gnome - fixed saving of job sprites - added status messages to loading screen - fixed gnomes freezing after load ## [0.3.0] - added check if required items exist before handing out jobs, should reduce green/yellow flashing of jobs - fixed memory leak with jobs - added message box when opengl init fails - reduced sleep, hunger, thirst - renamed the build door widget to build utility so people stop asking why torches are doors - fix stockpile filter settings for loading/saving copy&paste - big windows like Population Overview, Stocks and Kingdom now have a max size of the game window ## [0.2.9] - fixed crash with butcher when pressing cancel on empty list - fixed crash with deconstructing a torch - fixed removing rooms - fixed deconstructing furniture in rooms - fixed ghosts of felling axes making it to the next game ## [0.2.8] - fixed creation of ghost items at position (0,0,0) - added tooltip to construct workshop button listing crafts - fix crash with deconstructing fences - added butcher excess lifestock - lowered food intake and doubled the time before gnomes die from thirst and starvation - added mine stairs up - fixed deconstruction stairs ## [0.2.7] - fixed crashes with removing stockpiles and pasture - fixed domr stuff carrying over after new game - improved eating and drinking - added highlight to selected item in right click menu ## [0.2.6] - fences - added cows, moo - fixed rotating workhop job sprites - fixed crash when loading constructions without sprite - add remove floor, replace wall/floor commands - added remove plant command ## [0.2.5] - require felling axe for tree cutting - added baby animals - fixed crash with workshops with empty recipe lists - gnomes now die from hunger and thirst - updated to Qt5.11.1 ## [0.2.4] - menu option continue loads last save game now - when using a container to build a workshop it now drops its items - added metals and gems to underground - added config option for fow - reordered farm job priorities - fix gnome widget professions - added embark item presets ## [0.2.3] - added random kingdom name generation - added support for multiple save games - added status screen for messages during world generation - screenshots - added keyboard support ( 1 - 0 ) for commands - hide undiscovered tiles ## [0.2.2] - added butchering animals from pastures ## [0.2.1] - added pasture - rework of animal actions ## [0.2.0] - part two of stockpile rework, per item suspends - added copy&paste for stockpile settings - fix work sprites disappearing on escape - added right click menu ## [0.1.9] - when only one entity is present on a tile, clicking it skips the tile info window and opens the respective window - part one of stockpile rework ## [0.1.8] - added wall build mode that auto builds floor tiles below - added outer ramp corners - added checkbox to farmwidget to shown only types with available seed item - improved renderer ## [0.1.7] - added digHole command - added building of most wall and floor types - added scaffold - added gravity to gnomes and items when removing floor tiles ## [0.1.6] - fixed placement of starting items - added dyers workshop ## [0.1.5] - fixed cursor pos for rotated views - paint job sprite green after required tool is picked up - seasonal sprites for slopes ## [0.1.4] - added new game screen - fix #81 changing profession for gnome created additional need bars and attribs ## [0.1.3] - added water processing and rendering - added many workshops and craftable items - added distillery workshop - containers which require the same item and material type now do so ## [0.1.2] - added item info widget - added light handling to renderer - added day/night mode - saving/loading of lights - animated torches - added personal room assignment - added beds to rooms and dorms, gnomes need sleep now - added eating and drinking ## [0.1.1] - added exprtk for math formula parsing - fixed seasonal sprites for opengl renderer - added clearLogOnStart option to config - added enableScaling option to config - added value bars for needs to gnome widget - added value decay per minute for needs - added activity log for gnomes - possible fix for black background in some windows ## [0.1.0] - updated to Qt 5.10.0 - added lots of plants - added "enableLog" option to config.cfg - added changelog.txt ## [0.0.9] - new OpenGL based renderer - reworked stockpile item filtering ## [0.0.8] - reworked sprite handling - gnome sprites generated from parts - reworked the workshop construction window - added high dpi scaling and font size adjustment ================================================ FILE: LICENSE ================================================ GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU Affero General Public License is a free, copyleft license for software and other kinds of works, specifically designed to ensure cooperation with the community in the case of network server software. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. Developers that use our General Public Licenses protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License which gives you legal permission to copy, distribute and/or modify the software. A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate. Many developers of free software are heartened and encouraged by the resulting cooperation. However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public. The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community. It requires the operator of a network server to provide the source code of the modified version running there to the users of that server. Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version. An older license, called the Affero General Public License and published by Affero, was designed to accomplish similar goals. This is a different license, not a version of the Affero GPL, but Affero has released a new version of the Affero GPL which permits relicensing under this license. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU Affero General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Remote Network Interaction; Use with the GNU General Public License. Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements. You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see . ================================================ FILE: README.md ================================================ # Ingnomia # Just looking for the game itself? Prebuilt binaries are available in the [release section](https://github.com/rschurade/Ingnomia/releases) or on [Steam](https://store.steampowered.com/app/709240/Ingnomia/). The active community for this game can be found on our [Discord server](https://discord.gg/y5GygwY). ## What is this? ## Ingnomia started out as an independent remake of the older [Gnomoria](https://store.steampowered.com/app/224500/Gnomoria/) colony simulator, from which it was permitted to borrow some of the assets. While the graphics look similar, all of the engine was rewritten from scratch. Compared to the reference, Ingnomias engine scales significantly better with large colonies. In terms of features, balancing, user interface design etc. Ingnomia has since given its own spin to many of the core game elements. While already in a playable state, it's still under heavy development and truly, by all means, "Early Access". Not all game components have been implemented yet and some bugs are to be expected. Ingnomia is a pure hobby project, and true free-to-play. With "free" spelled as in "free beer". ## How do I get set up for development? ## The following steps describe how to compile the code locally and get the game running on Windows and Linux. Note! Building on Mac is currently not possible. Certain features in the renderer require OpenGL4.3. ### Dependencies ### #### Windows specific #### * Microsoft Visual Studio 2019, the community edition is free * Qt [vs addin](http://download.qt.io/official_releases/vsaddin/2.5.2/) (optional) #### All Platforms #### * OpenGL 4.3 - Mac is not a supported compilation platform since it has deprecated OpenGL * Qt 5.14.1 or newer * [Noesis Gui](https://www.noesisengine.com/developers/downloads.php) 3.0.12\ For using Noesis in a local development build, you need to get a [trial license](https://www.noesisengine.com/trial/). * [Steam SDK](https://partner.steamgames.com/doc/sdk) * [SFML 2.5.1](https://www.sfml-dev.org/download/sfml/2.5.1/) * CMake 3.16 or newer ### Build ### ```bash cp -r "/content/tilesheet" content/ cmake -S . -B "" \ -DQt5_DIR="//lib/cmake/Qt5" \ -DSTEAM_SDK_ROOT="/sdk" \ -DNOESIS_ROOT="" \ -DNOESIS_LICENSE_NAME="" \ -DNOESIS_LICENSE_KEY="" -DSFML_DIR="/lib/cmake/SFML" ``` If no errors have occured, proceed by building the project with the chosen build system or open the generated project in an IDE of your choice. ```bash cmake --build "" ``` ### Building the documentation ### Documentation building scripts are in the `docs/` directory. To rebuild documentation you will need: * Python 3.9 * Pipenv * Tilesheets from an existing installation (in the `content/tilesheet` directory, as when building the game) From the `docs/` directory, run: ```bash pipenv install pipenv run ./generate.py ``` Output is generated in `docs/html`. You can specify a different output by passing `--output path/to/dir` to the generation script. Generation will fail when the output directory exists. Use the `--overwrite` option in that case, but be warned that it will wipe the output directory completely. ### Forks on Github ### When forking the project on Github, you should add `NOESIS_LICENSE_KEY` and `NOESIS_LICENSE_NAME` as secrets in your repositories configuration under Settings/Secrets. If not provided, CI builds will fail for your fork. Ingnomia comes with automatic builds via GitHub Actions, triggered on push to repository. As long as you have forked Ingnomia as a **public** repository, these are expected to be free-of-charge for your GitHub account. ## Contribution guidelines ## Help with Ignomia is always welcome. ### Making suggestions ### We love to hear about your ideas on this game! Please head straight to our [Discord](https://discord.gg/DCSmxVD) server and discuss them in the #suggestions channel. You might see them realized at some point. Please don't open tickets for suggestions on your own. That is reserved for already planed features. ### Reporting bugs ### Even if you can't contribute in code, testing and reporting bugs is just as important to us. If you find something which doesn't behave right, or even crashes, feel free to open a ticket in the bugtracker. Please include only one bug per ticket, with a precise step-by-step instruction how to trigger, and search for open tickets on the same subject first. If you prefer, you may also try to reproduce bugs reported by other users. The more precise informations on a bug are, the higher the chance it can be fixed. ### Code contributions ### If you know any of C++ or XAML you can help right away! Feel free to check for open bugs, and hop over to our [Discord](https://discord.gg/DCSmxVD) channel to get you sorted in. Please provide your contributions in the form of a pull request, rebased onto the current head of development. #### License #### The contents of this repository are licensed under [GNU AFFERO GENERAL PUBLIC LICENSE Version 3](LICENSE). All contributions must adhere to the terms and conditions of this license. By submitting a pull request, you attest that you own the necessary rights on the code and you will abide to the AGPL3 license. ### Who do I talk to? ### Hop over to our [Discord](https://discord.gg/DCSmxVD) server or open a ticket please. ================================================ FILE: cmake/modules/FindBugSplat.cmake ================================================ set(BUGSPLAT_SDK_ROOT "" CACHE PATH "Root to the bugsplat sdk") find_path(BUGSPLAT_INCLUDE_DIR NAMES BugSplat.h HINTS ${BUGSPLAT_SDK_ROOT}/inc ) find_library(BUGSPLAT_LIBRARY NAMES BugSplat64 HINTS ${BUGSPLAT_SDK_ROOT}/lib64 ) find_file(BUGSPLAT_DLL NAMES BugSplat64.dll HINTS ${BUGSPLAT_SDK_ROOT}/bin64 ) find_file(BUGSPLAT_RC_DLL NAMES BugSplatRc64.dll HINTS ${BUGSPLAT_SDK_ROOT}/bin64 ) find_file(BUGSPLAT_SEND_REPORT NAMES BsSndRpt64.exe HINTS ${BUGSPLAT_SDK_ROOT}/bin64 ) include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set BUGSPLAT_FOUND to TRUE # if all listed variables are TRUE find_package_handle_standard_args(BugSplat DEFAULT_MSG BUGSPLAT_LIBRARY BUGSPLAT_INCLUDE_DIR BUGSPLAT_DLL BUGSPLAT_RC_DLL BUGSPLAT_SEND_REPORT) mark_as_advanced(BUGSPLAT_INCLUDE_DIR BUGSPLAT_LIBRARY BUGSPLAT_DLL BUGSPLAT_RC_DLL BUGSPLAT_SEND_REPORT) if(BUGSPLAT_FOUND AND NOT TARGET BugSplat) add_executable(BugSplatSendReport IMPORTED) set_target_properties(BugSplatSendReport PROPERTIES IMPORTED_LOCATION "${BUGSPLAT_SEND_REPORT}" ) add_library(BugSplatRc SHARED IMPORTED) set_target_properties(BugSplatRc PROPERTIES IMPORTED_LOCATION "${BUGSPLAT_RC_DLL}" ) add_library(BugSplat SHARED IMPORTED) set_target_properties(BugSplat PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${BUGSPLAT_INCLUDE_DIR}" IMPORTED_LINK_DEPENDENT_LIBRARIES BugSplatRc IMPORTED_LOCATION "${BUGSPLAT_DLL}" IMPORTED_IMPLIB "${BUGSPLAT_LIBRARY}" ) target_compile_definitions( BugSplat INTERFACE HAVE_BUGSPLAT=1 ) endif() ================================================ FILE: cmake/modules/FindNoesis.cmake ================================================ set(NOESIS_ROOT "" CACHE PATH "Root to the NoesisGui sdk") find_path(NOESIS_INCLUDE_DIR NAMES NoesisPCH.h HINTS ${NOESIS_ROOT}/Include ) find_library(NOESIS_LIBRARY NAMES libNoesis Noesis HINTS ${NOESIS_ROOT}/Bin/linux_x86_64 ${NOESIS_ROOT}/Lib/windows_x86_64 ) if(WIN32) find_file(NOESIS_DLL NAMES Noesis.dll HINTS ${NOESIS_ROOT}/Bin/windows_x86_64 ) else() set(NOESIS_DLL ${NOESIS_LIBRARY}) endif() include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set NOESIS_FOUND to TRUE # if all listed variables are TRUE find_package_handle_standard_args(Noesis DEFAULT_MSG NOESIS_LIBRARY NOESIS_INCLUDE_DIR NOESIS_DLL) mark_as_advanced(NOESIS_INCLUDE_DIR NOESIS_LIBRARY NOESIS_DLL) if(NOESIS_FOUND AND NOT TARGET Noesis) add_library(Noesis SHARED IMPORTED) set_target_properties(Noesis PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${NOESIS_INCLUDE_DIR}" IMPORTED_LOCATION "${NOESIS_DLL}" IMPORTED_IMPLIB "${NOESIS_LIBRARY}" ) endif() ================================================ FILE: cmake/modules/FindOpenAL.cmake ================================================ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. #[=======================================================================[.rst: FindOpenAL ---------- Finds Open Audio Library (OpenAL). Projects using this module should use ``#include "al.h"`` to include the OpenAL header file, **not** ``#include ``. The reason for this is that the latter is not entirely portable. Windows/Creative Labs does not by default put their headers in ``AL/`` and macOS uses the convention ````. Hints ^^^^^ Environment variable ``$OPENALDIR`` can be used to set the prefix of OpenAL installation to be found. By default on macOS, system framework is search first. In other words, OpenAL is searched in the following order: 1. System framework: ``/System/Library/Frameworks``, whose priority can be changed via setting the :variable:`CMAKE_FIND_FRAMEWORK` variable. 2. Environment variable ``$OPENALDIR``. 3. System paths. 4. User-compiled framework: ``~/Library/Frameworks``. 5. Manually compiled framework: ``/Library/Frameworks``. 6. Add-on package: ``/opt``. Result Variables ^^^^^^^^^^^^^^^^ This module defines the following variables: ``OPENAL_FOUND`` If false, do not try to link to OpenAL ``OPENAL_INCLUDE_DIR`` OpenAL include directory ``OPENAL_LIBRARY`` Path to the OpenAL library ``OPENAL_VERSION_STRING`` Human-readable string containing the version of OpenAL #]=======================================================================] # For Windows, Creative Labs seems to have added a registry key for their # OpenAL 1.1 installer. I have added that key to the list of search paths, # however, the key looks like it could be a little fragile depending on # if they decide to change the 1.00.0000 number for bug fix releases. # Also, they seem to have laid down groundwork for multiple library platforms # which puts the library in an extra subdirectory. Currently there is only # Win32 and I have hardcoded that here. This may need to be adjusted as # platforms are introduced. # The OpenAL 1.0 installer doesn't seem to have a useful key I can use. # I do not know if the Nvidia OpenAL SDK has a registry key. set(OPENAL_ROOT "" CACHE PATH "Root to the OpenAL sdk") find_path(OPENAL_INCLUDE_DIR al.h HINTS ENV OPENALDIR ${OPENAL_ROOT} PATHS ~/Library/Frameworks /Library/Frameworks /opt [HKEY_LOCAL_MACHINE\\SOFTWARE\\Creative\ Labs\\OpenAL\ 1.1\ Software\ Development\ Kit\\1.00.0000;InstallDir] PATH_SUFFIXES include/AL include/OpenAL include AL OpenAL ) if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(_OpenAL_ARCH_DIR Win64) else() set(_OpenAL_ARCH_DIR Win32) endif() find_library(OPENAL_LIBRARY NAMES OpenAL al openal OpenAL32 HINTS ENV OPENALDIR ${OPENAL_ROOT} PATHS ~/Library/Frameworks /Library/Frameworks /opt [HKEY_LOCAL_MACHINE\\SOFTWARE\\Creative\ Labs\\OpenAL\ 1.1\ Software\ Development\ Kit\\1.00.0000;InstallDir] PATH_SUFFIXES libx32 lib64 lib libs64 libs libs/${_OpenAL_ARCH_DIR} ) if(WIN32) find_file(OPENAL_DLL NAMES OpenAL32.dll HINTS ${OPENAL_ROOT} PATH_SUFFIXES libx32 lib64 lib libs64 libs bin/${_OpenAL_ARCH_DIR} ) else() set(OPENAL_DLL ${OPENAL_LIBRARY}) endif() unset(_OpenAL_ARCH_DIR) include(FindPackageHandleStandardArgs) find_package_handle_standard_args( OpenAL REQUIRED_VARS OPENAL_LIBRARY OPENAL_INCLUDE_DIR OPENAL_DLL VERSION_VAR OPENAL_VERSION_STRING ) mark_as_advanced(OPENAL_LIBRARY OPENAL_INCLUDE_DIR) if(OPENAL_FOUND AND NOT TARGET OpenAL) add_library(OpenAL SHARED IMPORTED) set_target_properties(OpenAL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${OPENAL_INCLUDE_DIR}" IMPORTED_LOCATION "${OPENAL_DLL}" IMPORTED_IMPLIB "${OPENAL_LIBRARY}") endif() ================================================ FILE: cmake/modules/FindSteam.cmake ================================================ set(STEAM_SDK_ROOT "" CACHE PATH "Root to the steam sdk") find_path(STEAM_INCLUDE_DIR NAMES steam/steam_api.h HINTS ${STEAM_SDK_ROOT}/public ) if(UNIX) find_library(STEAM_LIBRARY NAMES steam_api HINTS ${STEAM_SDK_ROOT}/redistributable_bin/linux64 ) set(STEAM_DLL ${STEAM_LIBRARY}) else() find_library(STEAM_LIBRARY NAMES steam_api64 HINTS ${STEAM_SDK_ROOT}/redistributable_bin/win64 ) find_file(STEAM_DLL NAMES steam_api64.dll HINTS ${STEAM_SDK_ROOT}/redistributable_bin/win64 ) endif() include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set STEAM_FOUND to TRUE # if all listed variables are TRUE find_package_handle_standard_args(Steam DEFAULT_MSG STEAM_LIBRARY STEAM_INCLUDE_DIR STEAM_DLL) mark_as_advanced(STEAM_INCLUDE_DIR STEAM_LIBRARY STEAM_DLL) if(STEAM_FOUND AND NOT TARGET Steam) add_library(Steam SHARED IMPORTED) set_target_properties(Steam PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${STEAM_INCLUDE_DIR}" IMPORTED_LOCATION "${STEAM_DLL}" IMPORTED_IMPLIB "${STEAM_LIBRARY}") endif() ================================================ FILE: cmake/modules/windeployqt.cmake ================================================ find_package(Qt5 REQUIRED QUIET COMPONENTS Core) if(TARGET Qt5::qmake AND NOT TARGET Qt5::windeployqt) get_target_property(_qt5_qmake_location Qt5::qmake IMPORTED_LOCATION) execute_process( COMMAND "${_qt5_qmake_location}" -query QT_INSTALL_PREFIX RESULT_VARIABLE return_code OUTPUT_VARIABLE qt5_install_prefix OUTPUT_STRIP_TRAILING_WHITESPACE ) set(imported_location "${qt5_install_prefix}/bin/windeployqt.exe") if(EXISTS ${imported_location}) add_executable(Qt5::windeployqt IMPORTED) set_target_properties(Qt5::windeployqt PROPERTIES IMPORTED_LOCATION ${imported_location} ) endif() endif() function(windeployqt foo) if(TARGET Qt5::windeployqt) # execute windeployqt in a tmp directory after build add_custom_command(TARGET ${foo} POST_BUILD COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_CURRENT_BINARY_DIR}/windeployqt_$" COMMAND set PATH=%PATH%$${qt5_install_prefix}/bin # for deployment COMMAND Qt5::windeployqt --pdb --no-translations --no-webkit2 --no-system-d3d-compiler --no-opengl-sw --dir "${CMAKE_CURRENT_BINARY_DIR}/windeployqt_$" "$/$" COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_BINARY_DIR}/windeployqt_$/" $ ) # copy deployment directory during installation install( DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/windeployqt_$/" DESTINATION ${CMAKE_INSTALL_BINDIR} ) endif() endfunction() ================================================ FILE: content/CMakeLists.txt ================================================ file( GLOB_RECURSE SOURCE_LIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.xml" "*.json" "*.glsl" "*.xaml" "*.ttf" "*.otf" "*.png" "*.sql" "*.wav" "*License*" ) target_sources(${PROJECT_NAME} PRIVATE ${SOURCE_LIST} ${CMAKE_CURRENT_LIST_FILE} ) foreach ( FILE ${SOURCE_LIST} ) get_filename_component( DIR ${FILE} DIRECTORY ) install( FILES ${FILE} DESTINATION "${CMAKE_INSTALL_BINDIR}/content/${DIR}" ) endforeach() ================================================ FILE: content/JSON/config.json ================================================ { "AutoSaveInterval": 3, "CurrentVersion": "0.7.5.0", "DaysToNextAutoSave": 1, "GUIScale": 1.0, "LastRunVersion": "0.7.5.0", "MaxArrayTextures": "2048", "Pause": true, "WindowHeight": 1631, "WindowPosX": 604, "WindowPosY": 53, "WindowWidth": 3231, "XpMod": 250, "clearLogOnStart": "true", "crosshair": "false", "dataPath": "content/", "enableLog": "true", "enableScaling": "true", "fontSize": "12", "fow": "true", "framelessWindow": "false", "gfxPath": "content/tilesheet", "keyboardMoveSpeed": "100", "language": "english", "lightDecay": "3", "maxThreads": "20", "modDev": "true", "moveX": 0, "moveY": -800, "oldMoveX": 0, "oldMoveY": -800, "overlay": true, "playerName": "Player", "port": "55555", "random": 133, "renderCreatures": true, "renderDepth": "20", "renderMode": "up", "rotation": 0, "scale": 1, "server": "127.0.0.1", "viewLevel": 108, "waterQuality": 1, "windowSizeX": 1600, "windowSizeY": 900 } ================================================ FILE: content/JSON/embarkpresets.json ================================================ [ { "Name": "Gnomoria", "startingItems": [{ "Amount": 2, "Components": [{ "ItemID": "PickaxeHead", "MaterialID": "Pine" }, { "ItemID": "PickaxeBase", "MaterialID": "Pine" } ], "ItemID": "Pickaxe", "Type": "CombinedItem" }, { "Amount": 1, "Components": [{ "ItemID": "FellingAxeHead", "MaterialID": "Pine" }, { "ItemID": "FellingAxeBase", "MaterialID": "Pine" } ], "ItemID": "FellingAxe", "Type": "CombinedItem" }, { "Amount": 128, "ItemID": "Wine", "MaterialID": "Apple", "Type": "Item" }, { "Amount": 32, "ItemID": "Bread", "MaterialID": "Wheat", "Type": "Item" }, { "Amount": 32, "ItemID": "Fruit", "MaterialID": "Strawberry", "Type": "Item" }, { "Amount": 32, "ItemID": "Seed", "MaterialID": "Wheat", "Type": "Item" }, { "Amount": 32, "ItemID": "Seed", "MaterialID": "Strawberry", "Type": "Item" }, { "Amount": 1, "Gender": "male", "ItemID": "Yak", "Type": "Animal" }, { "Amount": 1, "Gender": "female", "ItemID": "Yak", "Type": "Animal" } ] }, { "Name": "Easy", "startingItems": [{ "Amount": 4, "Components": [{ "ItemID": "PickaxeHead", "MaterialID": "Pine" }, { "ItemID": "PickaxeBase", "MaterialID": "Pine" } ], "ItemID": "Pickaxe", "Type": "CombinedItem" }, { "Amount": 4, "Components": [{ "ItemID": "FellingAxeHead", "MaterialID": "Pine" }, { "ItemID": "FellingAxeBase", "MaterialID": "Pine" } ], "ItemID": "FellingAxe", "Type": "CombinedItem" }, { "Amount": 4, "ItemID": "Chisel", "MaterialID": "Granite", "Type": "Item" }, { "Amount": 4, "Components": [{ "ItemID": "KnifeBlade", "MaterialID": "Copper" }, { "ItemID": "KnifeHilt", "MaterialID": "Copper" } ], "ItemID": "Knife", "Type": "CombinedItem" }, { "Amount": 100, "ItemID": "Wine", "MaterialID": "Apple", "Type": "Item" }, { "Amount": 100, "ItemID": "Bread", "MaterialID": "Wheat", "Type": "Item" }, { "Amount": 100, "ItemID": "Beer", "MaterialID": "Wheat", "Type": "Item" }, { "Amount": 20, "ItemID": "Seed", "MaterialID": "Wheat", "Type": "Item" }, { "Amount": 30, "ItemID": "Seed", "MaterialID": "Strawberry", "Type": "Item" }, { "Amount": 20, "ItemID": "Seed", "MaterialID": "Barley", "Type": "Item" }, { "Amount": 20, "ItemID": "Seed", "MaterialID": "Cotton", "Type": "Item" }, { "Amount": 1, "ItemID": "Needle", "MaterialID": "Copper", "Type": "Item" }, { "Amount": 5, "Gender": "female", "ItemID": "Chicken", "Type": "Animal" }, { "Amount": 1, "Gender": "male", "ItemID": "Cow", "Type": "Animal" }, { "Amount": 2, "Gender": "female", "ItemID": "Cow", "Type": "Animal" } ] }, { "Name": "Medium", "startingItems": [{ "Amount": 2, "Components": [{ "ItemID": "PickaxeHead", "MaterialID": "Pine" }, { "ItemID": "PickaxeBase", "MaterialID": "Granite" } ], "ItemID": "Pickaxe", "Type": "CombinedItem" }, { "Amount": 2, "Components": [{ "ItemID": "FellingAxeHead", "MaterialID": "Pine" }, { "ItemID": "FellingAxeBase", "MaterialID": "Pine" } ], "ItemID": "FellingAxe", "Type": "CombinedItem" }, { "Amount": 50, "ItemID": "Wine", "MaterialID": "Apple", "Type": "Item" }, { "Amount": 50, "ItemID": "Bread", "MaterialID": "Wheat", "Type": "Item" }, { "Amount": 50, "ItemID": "Beer", "MaterialID": "Wheat", "Type": "Item" }, { "Amount": 20, "ItemID": "Seed", "MaterialID": "Wheat", "Type": "Item" }, { "Amount": 30, "ItemID": "Seed", "MaterialID": "Strawberry", "Type": "Item" }, { "Amount": 1, "Gender": "male", "ItemID": "Cow", "Type": "Animal" }, { "Amount": 1, "Gender": "female", "ItemID": "Cow", "Type": "Animal" } ] }, { "Name": "Hard", "startingItems": [{ "Amount": 1, "Components": [{ "ItemID": "PickaxeHead", "MaterialID": "Pine" }, { "ItemID": "PickaxeBase", "MaterialID": "Pine" } ], "ItemID": "Pickaxe", "Type": "CombinedItem" }, { "Amount": 1, "Components": [{ "ItemID": "FellingAxeHead", "MaterialID": "Granite" }, { "ItemID": "FellingAxeBase", "MaterialID": "Pine" } ], "ItemID": "FellingAxe", "Type": "CombinedItem" }, { "Amount": 50, "ItemID": "Wine", "MaterialID": "Apple", "Type": "Item" }, { "Amount": 50, "ItemID": "Bread", "MaterialID": "Wheat", "Type": "Item" }, { "Amount": 50, "ItemID": "Beer", "MaterialID": "Wheat", "Type": "Item" }, { "Amount": 30, "ItemID": "Seed", "MaterialID": "Strawberry", "Type": "Item" }, { "Amount": 1, "Gender": "female", "ItemID": "Cow", "Type": "Animal" } ] } ] ================================================ FILE: content/JSON/menusettings.json ================================================ [ { "Text": "Terrain", "Icon": ":/resources/icons/terrain.png", "MenuItem": [ { "Text": "Mine", "Icon": ":/resources/icons/mine.png", "MenuItem": [ { "Text": "Wall", "Icon": ":/resources/icons/mine_wall.png", "ToolTip": "Remove wall", "Action": "Mine" }, { "Text": "Stairs Up", "Icon": ":/resources/icons/mine_stairs.png", "ToolTip": "Mine the wall into stairs going up", "Action": "MineStairsUp" }, { "Text": "Ramp Up", "Icon": ":/resources/icons/mine_ramp.png", "ToolTip": "Mine the wall into a ramp going up", "Disable": true, "Action": "MineRampUp" }, { "Text": "Explorative Mine Wall", "Icon": ":/resources/icons/mine_wall.png", "ToolTip": "Remove wall and continue mining if there are embedded materials in neighboring tiles", "Action": "ExplorativeMine" }, { "Text": "Fill Hole", "Icon": ":/resources/icons/job.png", "ToolTip": "Build wall in the tile below", "Action": "FillHole" } ] }, { "Text": "Dig", "Icon": ":/resources/icons/dig.png", "MenuItem": [ { "Text": "Hole", "Icon": ":/resources/icons/dig_hole", "ToolTip": "Remove floor and section below", "Action": "DigHole" }, { "Text": "Stairs Down", "Icon": ":/resources/icons/dig_stairs", "ToolTip": "Remove floor and mine section below into stairs", "Action": "DigStairsDown" }, { "Text": "Ramp Down", "Icon": ":/resources/icons/dig_ramp", "ToolTip": "Remove floor and mine section below into a ramp", "Action": "DigRampDown" } ] }, { "Text": "Remove Floor", "Icon": ":/resources/icons/remove_floor.png", "ToolTip": "Remove floor leaving the section below untouched", "Action": "RemoveFloor" }, /* { "Text": "Remove Ramp", "Icon": ":/resources/icons/remove_ramp.png", "ToolTip": "Remove ramp", "Disable": true, "Action": "RemoveRamp" }, */ { "Text": "Replace Wall", "Icon": ":/resources/icons/replace_wall.png", "ToolTip": "Replaces an existing wall with a new one", "Action": "ReplaceWindowWall" }, { "Text": "Replace Floor", "Icon": ":/resources/icons/replace_floor.png", "ToolTip": "Replaces an existing floor with a new one", "Action": "ReplaceWindowFloor" }/*, { "Text": "Fill Hole", "Icon": ":/resources/icons/job.png", "ToolTip": "Build a wall from above", "Action": "BuildWall" }, { "Text": "Hide", "Icon": ":/resources/icons/job.png", "ToolTip": "Set terrain to Hidden", "Action": "Hide" }*/ ] }, { "Text": "Agriculture", "Icon": ":/resources/icons/agriculture.png", "MenuItem": [ { "Text": "Farm", "Icon": ":/resources/icons/agriculture.png", "ToolTip": "Grow crops", "Action": "CreateFarm" }, { "Text": "Underground Farm", "Icon": ":/resources/icons/agriculture.png", "ToolTip": "Grow underground crops", "Disable": true, "Action": "CreateUndergroundFarm" }, { "Text": "Pasture", "Icon": ":/resources/icons/pasture.png", "ToolTip": "Livestock graze in a pasture", "Action": "CreatePasture" }, { "Text": "Grove", "Icon": ":/resources/icons/grove.png", "ToolTip": "Grow and harvest trees", "Disable": false, "Action": "CreateGrove" }, { "Text": "Plant Trees", "Icon": ":/resources/icons/grove.png", "ToolTip": "Plant trees", "Action": "PlantTreeWidget" }, { "Text": "Fell Trees", "Icon": ":/resources/icons/fell_trees.png", "ToolTip": "Cut trees down", "Action": "FellTree" }, { "Text": "Pick Fruit", "Icon": ":/resources/icons/cut_clipping.png", "ToolTip": "Pick a fruit from a tree", "Action": "HarvestTree" }, { "Text": "Forage", "Icon": ":/resources/icons/forage.png", "ToolTip": "Forage for food", "Action": "Forage" }, { "Text": "Remove Plant", "Icon": ":/resources/icons/cancel.png", "ToolTip": "Remove plant", "Action": "RemovePlant" } ] }, { "Text": "Build", "Icon": ":/resources/icons/build.png", "MenuItem": [ { "Text": "Workshop", "Icon": ":/resources/icons/workshop.png", "ToolTip": "Workshop", "Action": "BuildWorkshopWindow" }, { "Text": "Mechanism", "Icon": ":/resources/icons/gear.png", "ToolTip": "Mechanism", "MenuItem": [ { "Text": "Build Mechanism", "Icon": ":/resources/icons/engineering.png", "ToolTip": "Build Mechanism", "Action": "BuildMechanismWidget" }, { "Text": "Build Hydraulics", "Icon": ":/resources/icons/hydraulics.png", "ToolTip": "Build Hydraulics", "Action": "BuildHydraulicsWidget" } ] }, { "Text": "Furniture", "Icon": ":/resources/icons/furniture.png", "ToolTip": "Furniture", "Action": "BuildFurnitureWidget" }, { "Text": "Storage", "Icon": ":/resources/icons/chest.png", "ToolTip": "Storage", "Action": "BuildStorageWidget" }, { "Text": "Terrain", "Icon": ":/resources/icons/terrain.png", "ToolTip": "Terrain", "MenuItem": [ { "Text": "Build Wall", "Icon": ":/resources/icons/job.png", "ToolTip": "Build Wall", "Action": "BuildWindowWall" }, { "Text": "Build Floor", "Icon": ":/resources/icons/dig_hole.png", "ToolTip": "Build Floor", "Action": "BuildWindowFloor" }, { "Text": "Build Stairs", "Icon": ":/resources/icons/stair.png", "ToolTip": "Build Stairs", "Action": "BuildWindowStairs" }, { "Text": "Build Ramps", "Icon": ":/resources/icons/mine_ramp.png", "ToolTip": "Build Ramps", "Action": "BuildWindowRamp" } ] }, { "Text": "Utility", "Icon": ":/resources/icons/door.png", "ToolTip": "Utility", "Action": "BuildUtilityWidget" }, { "Text": "Farm untils", "Icon": ":/resources/icons/agriculture.png", "ToolTip": "FarmUtil", "Action": "BuildFarmUtilWidget" }, { "Text": "Build Scaffold", "Icon": ":/resources/icons/scaffolding.png", "ToolTip": "Build Scaffold", "Action": "BuildWindowScaffold" }, ] }, { "Text": "Designate Area", "Icon": ":/resources/icons/designate_area.png", "MenuItem": [ { "Text": "Stockpile", "Icon": ":/resources/icons/chest.png", "ToolTip": "Store items", "Action": "CreateStockpile" }, { "Text": "Agriculture", "Disable": true, "Icon": ":/resources/icons/agriculture.png", "ToolTip": "Agriculture", "MenuItem": [ { "Text": "Farm", "Icon": ":/resources/icons/agriculture.png", "ToolTip": "Grow crops", "Action": "CreateFarm" }, { "Text": "Underground Farm", "Icon": ":/resources/icons/agriculture.png", "ToolTip": "Grow underground crops", "Disable": true, "Action": "CreateUndergroundFarm" }, { "Text": "Pasture", "Icon": ":/resources/icons/pasture.png", "ToolTip": "Livestock graze in a pasture", "Disable": true, "Action": "CreatePasture" }, { "Text": "Grove", "Icon": ":/resources/icons/grove.png", "ToolTip": "Grow and harvest trees", "Disable": true, "Action": "CreateGrove" } ] }, { "Text": "Room", "Icon": ":/resources/icons/room.png", "ToolTip": "Room", "Action": "CreateRoom" }, { "Text": "Guard Area", "Icon": ":/resources/icons/guard.png", "ToolTip": "Designate area to guard", "Disable": true, "Action": "CreateGuardArea" }, { "Text": "Patrol Route", "Icon": ":/resources/icons/patrol.png", "ToolTip": "Designate waypoints to patrol", "Disable": true, "Action": "CreatePatrolRoute" }, { "Text": "No pass", "Icon": ":/resources/icons/remove_designation.png", "ToolTip": "Designate area gnomes will not walk on.", "Action": "CreateNoPass" } ] }, { "Text": "Magic", "Icon": ":/resources/icons/patrol.png", "ToolTip": "Magic", "MenuItem": [ { "Text": "Nature Magic", "Icon": ":/resources/icons/agriculture.png", "ToolTip": "Nature magic", "MenuItem": [ { "Text": "Speed up growth", "Icon": ":/resources/icons/agriculture.png", "ToolTip": "Speed up growth", "Action": "MagicNatureSpeedGrowth" } ] }, { "Text": "Geomancy", "Icon": ":/resources/icons/mine.png", "ToolTip": "Geomancy", "MenuItem": [ { "Text": "Reveal ore", "Icon": ":/resources/icons/mine.png", "ToolTip": "Reveal ore", "Action": "MagicGeomancyRevealOre" } ] } ] }, { "Text": "Job", "Icon": ":/resources/icons/job.png", "MenuItem": [ { "Text": "Suspend", "Disable": true, "Icon": ":/resources/icons/job.png", "ToolTip": "Suspend", "Action": "SuspendJob" }, { "Text": "Resume", "Disable": true, "Icon": ":/resources/icons/job.png", "ToolTip": "Resume", "Action": "ResumeJob" }, { "Text": "Cancel", "Icon": ":/resources/icons/cancel.png", "ToolTip": "Cancel", "Action": "CancelJob" }, { "Text": "Raise priority", "Icon": ":/resources/icons/arrow_up.png", "ToolTip": "Raise the priority of a job.", "Action": "RaisePrio" }, { "Text": "Lower priority", "Icon": ":/resources/icons/arrow_down.png", "ToolTip": "Lower the priority of a job.", "Action": "LowerPrio" } ] }, { "Text": "Clean Floor", "Icon": ":/resources/icons/chest.png", "ToolTip": "Stock items on this floor next if possible", "Disable": true, "Action": "CleanFloor" }, { "Text": "Deconstruct", "Icon": ":/resources/icons/deconstruct.png", "ToolTip": "Deconstruct", "Action": "Deconstruct" }, { "Text": "Remove Designation", "Icon": ":/resources/icons/remove_designation.png", "ToolTip": "Remove Designation", "Action": "RemoveDesignation" } ] ================================================ FILE: content/JSON/newgame.json ================================================ { "allowedAnimals": { "Badger": 2, "Beetle": 0, "BeetleEgg": 0, "BlackBear": 2, "Duck": 0, "Fox": 1, "Goat": 0, "GreenFish": 0, "GreyFish": 0, "Lizzard": 0, "Panda": 0, "Porcupine": 2, "Rabbit": 0, "Roe": 0, "Snake": 0, "Spider": 0, "Squirrel": 2, "Stag": 0, "Wolf": 1, "Woodlouse": 0 }, "allowedPlants": { "Blackberry": true, "Carrot": true, "Cotton": true, "Flower1": false, "Flower2": false, "Flower3": false, "Flower4": false, "Flower5": false, "Flower6": false, "Flower7": false, "Flower8": false, "Onion": true, "Strawberry": true }, "allowedTrees": { "AppleTree": true, "BirchTree": true, "OakTree": true, "OrangeTree": true, "PineTree": true }, "dimX": 100, "dimY": 100, "dimZ": 130, "flatness": 0, "groundLevel": 100, "maxPerType": 30, "numAnimals": 473, "numGnomes": 1, "oceanSize": 5, "peaceful": true, "plantDensity": 50, "riverSize": 1, "rivers": 0, "seed": "532879058", "startingItems": [ { "Amount": 2, "Components": [ { "ItemID": "PickaxeHead", "MaterialID": "Pine" }, { "ItemID": "PickaxeBase", "MaterialID": "Pine" } ], "ItemID": "Pickaxe", "Type": "CombinedItem" }, { "Amount": 1, "Components": [ { "ItemID": "FellingAxeHead", "MaterialID": "Pine" }, { "ItemID": "FellingAxeBase", "MaterialID": "Pine" } ], "ItemID": "FellingAxe", "Type": "CombinedItem" }, { "Amount": 128, "ItemID": "Wine", "MaterialID": "Apple", "Type": "Item" }, { "Amount": 32, "ItemID": "Bread", "MaterialID": "Wheat", "Type": "Item" }, { "Amount": 32, "ItemID": "Fruit", "MaterialID": "Strawberry", "Type": "Item" }, { "Amount": 32, "ItemID": "Grain", "MaterialID": "Wheat", "Type": "Item" }, { "Amount": 32, "ItemID": "Seed", "MaterialID": "Strawberry", "Type": "Item" }, { "Amount": 1, "Gender": "Male", "ItemID": "Yak", "Type": "Animal" }, { "Amount": 1, "Gender": "Female", "ItemID": "Yak", "Type": "Animal" } ], "startingZone": 10, "treeDensity": 51 } ================================================ FILE: content/JSON/profs.json ================================================ [ { "Name": "Gnomad", "Skills": [ "Mining", "Masonry", "Stonecarving", "Woodcutting", "Carpentry", "Woodcarving", "Smelting", "Blacksmithing", "Metalworking", "WeaponCrafting", "ArmorCrafting", "Gemcutting", "JewelryMaking", "Weaving", "Tailoring", "Dying", "Pottery", "Leatherworking", "Bonecarving", "Prospecting", "Tinkering", "Machining", "Engineering", "Mechanic", "AnimalHusbandry", "Butchery", "Fishing", "Horticulture", "Farming", "Cooking", "Brewing", "Construction", "Hauling" ] }, { "Name": "Miner", "Skills": [ "Mining", "Construction", "Hauling" ] }, { "Name": "Farmer", "Skills": [ "Horticulture", "Farming", "Hauling" ] }, { "Name": "Woodcutter", "Skills": [ "Woodcutting", "Carpentry", "Woodcarving", "Hauling" ] }, { "Name": "Mason", "Skills": [ "Masonry", "Construction", "Hauling" ] } ] ================================================ FILE: content/ai/animal_big.xml ================================================ ================================================ FILE: content/ai/animal_guard_dog.xml ================================================ ================================================ FILE: content/ai/animal_hunter.xml ================================================ ================================================ FILE: content/ai/animal_nighthunter.xml ================================================ ================================================ FILE: content/ai/animal_small_pasture.xml ================================================ ================================================ FILE: content/ai/animal_standard.xml ================================================ ================================================ FILE: content/ai/automaton_mark1.xml ================================================ ================================================ FILE: content/ai/automaton_mark2.xml ================================================ ================================================ FILE: content/ai/egg.xml ================================================ ================================================ FILE: content/ai/gnome_standard.xml ================================================ ================================================ FILE: content/ai/gnome_trader.xml ================================================ ================================================ FILE: content/ai/monster_mant_queen.xml ================================================ ================================================ FILE: content/ai/monster_mant_soldier.xml ================================================ ================================================ FILE: content/ai/monster_mant_worker.xml ================================================ ================================================ FILE: content/ai/monster_standard.xml ================================================ ================================================ FILE: content/db/ingnomia.db.sql ================================================ BEGIN TRANSACTION; DROP TABLE IF EXISTS "Workshops_Components"; CREATE TABLE IF NOT EXISTS "Workshops_Components" ( "ID" VARCHAR(30), "Amount" DOUBLE, "ItemID" VARCHAR(30), "MaterialItem" VARCHAR(50), "Offset" VARCHAR(11), "Required" VARCHAR(50), "Forbidden" VARCHAR(50), "SpriteID" VARCHAR(30), "SpriteID2" VARCHAR(30), "Type" VARCHAR(30), "WallRotation" VARCHAR(30), "IsFloor" BOOLEAN ); DROP TABLE IF EXISTS "Workshops"; CREATE TABLE IF NOT EXISTS "Workshops" ( "ID" STRING, "Crafts" STRING, "GUI" STRING, "InputTile" STRING, "OutputTile" STRING, "Size" STRING, "NoAutoGenerate" BOOLEAN, "Icon" STRING, "Tab" STRING ); DROP TABLE IF EXISTS "Words_Verb"; CREATE TABLE IF NOT EXISTS "Words_Verb" ( "PastParticiple" VARCHAR(30), "PresentParticiple" VARCHAR(30), "SimplePast" VARCHAR(30), "SimplePresent" VARCHAR(30), "Word" VARCHAR(30) ); DROP TABLE IF EXISTS "Words_Numbers"; CREATE TABLE IF NOT EXISTS "Words_Numbers" ( "Word" STRING, "Number" INTEGER ); DROP TABLE IF EXISTS "Words_Noun"; CREATE TABLE IF NOT EXISTS "Words_Noun" ( "Plural" VARCHAR(30), "Word" VARCHAR(30) ); DROP TABLE IF EXISTS "Words_Adjective"; CREATE TABLE IF NOT EXISTS "Words_Adjective" ( "Word" VARCHAR(30) ); DROP TABLE IF EXISTS "Words_ActionNoun"; CREATE TABLE IF NOT EXISTS "Words_ActionNoun" ( "Plural" VARCHAR(30), "Word" VARCHAR(30) ); DROP TABLE IF EXISTS "Words"; CREATE TABLE IF NOT EXISTS "Words" ( "Word" VARCHAR(30) ); DROP TABLE IF EXISTS "v_Items"; CREATE TABLE IF NOT EXISTS "v_Items" ( "UID" BIGINT, "position" VARCHAR, "spriteID" BIGINT, "itemUID" INTEGER, "materialUID" INTEGER, "itemSID" VARCHAR, "materialSID" VARCHAR, "category" VARCHAR, "group" VARCHAR, "pickedUp" BOOLEAN, "isConstructed" BOOLEAN, "inStockpile" BIGINT, "inJob" BIGINT, "isContainer" BOOLEAN, "inContainer" BIGINT, "madeBy" BIGINT, "quality" INTEGER, "value" INTEGER, "eatValue" INTEGER, "drinkValue" INTEGER, "color" VARCHAR, "hasComponents" BOOLEAN, "componentOf" BIGINT, "isTool" BOOLEAN, "lightIntensity" INTEGER, "stackSize" INTEGER ); DROP TABLE IF EXISTS "Utility"; CREATE TABLE IF NOT EXISTS "Utility" ( "ID" VARCHAR(30), "Buildable" BOOLEAN, "Item" STRING ); DROP TABLE IF EXISTS "Uniforms"; CREATE TABLE IF NOT EXISTS "Uniforms" ( "ID" INTEGER, "Name" STRING, "UserDefined" BOOLEAN ); DROP TABLE IF EXISTS "Uniform_Slots"; CREATE TABLE IF NOT EXISTS "Uniform_Slots" ( "ID" STRING, "Type" STRING, "ItemID" STRING, "MaterialType" STRING ); DROP TABLE IF EXISTS "Uniform"; CREATE TABLE IF NOT EXISTS "Uniform" ( "ID" STRING, "Sides" INTEGER ); DROP TABLE IF EXISTS "TreeLayouts_Layout"; CREATE TABLE IF NOT EXISTS "TreeLayouts_Layout" ( "ID" VARCHAR(30), "FruitPos" BOOLEAN, "Offset" VARCHAR(11), "Rotation" VARCHAR(30), "SpriteID" VARCHAR(30) ); DROP TABLE IF EXISTS "TreeLayouts"; CREATE TABLE IF NOT EXISTS "TreeLayouts" ( "ID" VARCHAR(30) ); DROP TABLE IF EXISTS "Translation"; CREATE TABLE IF NOT EXISTS "Translation" ( "ID" VARCHAR NOT NULL UNIQUE, "Text" VARCHAR, PRIMARY KEY("ID") ); DROP TABLE IF EXISTS "Traders_Items"; CREATE TABLE IF NOT EXISTS "Traders_Items" ( "ID" VARCHAR(30), "Gender" VARCHAR(30), "Item" VARCHAR(30), "Material" VARCHAR(30), "Max_" INTEGER, "Min_" INTEGER, "Type" VARCHAR(30), "Value_" DOUBLE ); DROP TABLE IF EXISTS "Traders"; CREATE TABLE IF NOT EXISTS "Traders" ( "ID" VARCHAR(30) ); DROP TABLE IF EXISTS "Time"; CREATE TABLE IF NOT EXISTS "Time" ( "ID" VARCHAR(30), "Value_" DOUBLE ); DROP TABLE IF EXISTS "TerrainMaterials"; CREATE TABLE IF NOT EXISTS "TerrainMaterials" ( "ID" VARCHAR(30), "FloorSprite" VARCHAR(30), "Highest" DOUBLE, "Lowest" DOUBLE, "ShortWallSprite" VARCHAR(30), "Type" VARCHAR(30), "WallSprite" VARCHAR(30) ); DROP TABLE IF EXISTS "Tech"; CREATE TABLE IF NOT EXISTS "Tech" ( "ID" VARCHAR(30) ); DROP TABLE IF EXISTS "Sprites_Seasons_Rotations"; CREATE TABLE IF NOT EXISTS "Sprites_Seasons_Rotations" ( "ID" VARCHAR(30), "BaseSprite" VARCHAR(30), "Rotation" VARCHAR(30) ); DROP TABLE IF EXISTS "Sprites_Seasons"; CREATE TABLE IF NOT EXISTS "Sprites_Seasons" ( "ID" VARCHAR(30), "BaseSprite" VARCHAR(30), "Season" VARCHAR(30) ); DROP TABLE IF EXISTS "Sprites_Rotations"; CREATE TABLE IF NOT EXISTS "Sprites_Rotations" ( "ID" VARCHAR(30), "BaseSprite" VARCHAR(30), "Effect" VARCHAR(30), "Rotation" VARCHAR(30), "Sprite" VARCHAR(30) ); DROP TABLE IF EXISTS "Sprites_Random"; CREATE TABLE IF NOT EXISTS "Sprites_Random" ( "ID" VARCHAR(30), "BaseSprite" VARCHAR(30), "Sprite" VARCHAR(30), "Weight" DOUBLE ); DROP TABLE IF EXISTS "Sprites_Frames"; CREATE TABLE IF NOT EXISTS "Sprites_Frames" ( "ID" VARCHAR(30), "BaseSprite" VARCHAR(30) ); DROP TABLE IF EXISTS "Sprites_Combine"; CREATE TABLE IF NOT EXISTS "Sprites_Combine" ( "ID" VARCHAR(30), "BaseSprite" VARCHAR(30), "Offset" VARCHAR(11), "Sprite" VARCHAR(30), "Tint" VARCHAR(30) ); DROP TABLE IF EXISTS "Sprites_ByMaterialTypes"; CREATE TABLE IF NOT EXISTS "Sprites_ByMaterialTypes" ( "ID" VARCHAR(30), "BaseSprite" VARCHAR(30), "MaterialType" VARCHAR(30), "Sprite" VARCHAR(30) ); DROP TABLE IF EXISTS "Sprites_ByMaterials"; CREATE TABLE IF NOT EXISTS "Sprites_ByMaterials" ( "ID" VARCHAR(30), "BaseSprite" VARCHAR(30), "Effect" VARCHAR(30), "MaterialID" VARCHAR(30), "Sprite" VARCHAR(30) ); DROP TABLE IF EXISTS "Sprites"; CREATE TABLE IF NOT EXISTS "Sprites" ( "ID" VARCHAR(30), "Anim" BOOLEAN, "BaseSprite" VARCHAR(30), "HasRandom" BOOLEAN, "Offset" VARCHAR(11), "Rot90" BOOLEAN, "Tint" VARCHAR(30), "DefaultMaterial" VARCHAR, "HasTransp" BOOLEAN ); DROP TABLE IF EXISTS "Spells"; CREATE TABLE IF NOT EXISTS "Spells" ( "ID" VARCHAR(30), "EffectRequirements" VARCHAR(50), "Effects" VARCHAR(50), "Radius" VARCHAR(30), "SkillID" VARCHAR(30) ); DROP TABLE IF EXISTS "Skills"; CREATE TABLE IF NOT EXISTS "Skills" ( "ID" VARCHAR(30), "RequiredToolItemID" VARCHAR(30), "SkillGroup" VARCHAR(30) ); DROP TABLE IF EXISTS "SkillGroups"; CREATE TABLE IF NOT EXISTS "SkillGroups" ( "ID" VARCHAR(30), "Color" VARCHAR(30), "Position" DOUBLE, "SkillID" VARCHAR(50), "Text" VARCHAR(30) ); DROP TABLE IF EXISTS "Seasons"; CREATE TABLE IF NOT EXISTS "Seasons" ( "ID" VARCHAR(30), "NextSeason" VARCHAR(30), "NumDays" DOUBLE, "SunRiseFirst" VARCHAR(30), "SunsetFirst" VARCHAR(30) ); DROP TABLE IF EXISTS "RandomMetals"; CREATE TABLE IF NOT EXISTS "RandomMetals" ( "ID" STRING, "Copper" INTEGER, "Tin" INTEGER, "Malachite" INTEGER, "Iron" INTEGER, "Lead" INTEGER, "Silver" INTEGER, "Gold" INTEGER, "Platinum" INTEGER ); DROP TABLE IF EXISTS "Quality"; CREATE TABLE IF NOT EXISTS "Quality" ( "ID" VARCHAR(30), "Rank" INTEGER, "Modifier" DOUBLE ); DROP TABLE IF EXISTS "Plants_States"; CREATE TABLE IF NOT EXISTS "Plants_States" ( "ID" VARCHAR(30), "Fell" BOOLEAN, "GrowTime" DOUBLE, "GrowTimeDeviation" DOUBLE, "Harvest" BOOLEAN, "ID2" VARCHAR(30), "Layout" VARCHAR(30), "SpriteID" VARCHAR(30), "HasAlpha" BOOLEAN, "LightIntensity" INTEGER ); DROP TABLE IF EXISTS "Plants_OnHarvest_HarvestedItem"; CREATE TABLE IF NOT EXISTS "Plants_OnHarvest_HarvestedItem" ( "ID" VARCHAR(30), "Chance" DOUBLE, "ItemID" VARCHAR(30), "MaterialID" VARCHAR(30) ); DROP TABLE IF EXISTS "Plants_OnHarvest"; CREATE TABLE IF NOT EXISTS "Plants_OnHarvest" ( "ID" VARCHAR(30), "Action" VARCHAR(30) ); DROP TABLE IF EXISTS "Plants_OnFell"; CREATE TABLE IF NOT EXISTS "Plants_OnFell" ( "ID" VARCHAR(30), "ItemID" VARCHAR(30), "MaterialID" VARCHAR(30), "Random" DOUBLE ); DROP TABLE IF EXISTS "Plants"; CREATE TABLE IF NOT EXISTS "Plants" ( "ID" VARCHAR(30), "AllowInWild" BOOLEAN, "FruitItemID" VARCHAR(30), "GrowsIn" VARCHAR(30), "GrowsInSeason" VARCHAR(50), "IsKilledInSeason" VARCHAR(30), "IsLarge" BOOLEAN, "LosesFruitInSeason" VARCHAR(30), "Material" VARCHAR(30), "NumFruitsPerSeason" DOUBLE, "SeedItemID" VARCHAR(30), "ToolButtonSprite" VARCHAR(30), "Type" VARCHAR(30) ); DROP TABLE IF EXISTS "Needs_States_Modifiers"; CREATE TABLE IF NOT EXISTS "Needs_States_Modifiers" ( "ID" VARCHAR(30), "Attribute" VARCHAR(30), "Type" VARCHAR(30), "Value_" DOUBLE ); DROP TABLE IF EXISTS "Needs_States"; CREATE TABLE IF NOT EXISTS "Needs_States" ( "ID" VARCHAR(30), "Action" VARCHAR(30), "ID2" VARCHAR(30), "Priority" DOUBLE, "ThoughtBubble" VARCHAR(30), "Threshold" DOUBLE ); DROP TABLE IF EXISTS "Needs"; CREATE TABLE IF NOT EXISTS "Needs" ( "ID" VARCHAR(30), "BarColor" VARCHAR(30), "DecayPerMinute" DOUBLE, "GainFromSleep" DOUBLE, "Max_" DOUBLE, "Creature" STRING ); DROP TABLE IF EXISTS "Names"; CREATE TABLE IF NOT EXISTS "Names" ( "ID" TEXT, "Gender" STRING(1) DEFAULT M ); DROP TABLE IF EXISTS "Namerules_Rule"; CREATE TABLE IF NOT EXISTS "Namerules_Rule" ( "ID" VARCHAR(30), "Part" VARCHAR(50) ); DROP TABLE IF EXISTS "Namerules"; CREATE TABLE IF NOT EXISTS "Namerules" ( "ID" VARCHAR(30) ); DROP TABLE IF EXISTS "MoveSpeed"; CREATE TABLE IF NOT EXISTS "MoveSpeed" ( "Creature" STRING, "Skill" INTEGER, "Speed" INTEGER ); DROP TABLE IF EXISTS "Monsters_Levels"; CREATE TABLE IF NOT EXISTS "Monsters_Levels" ( "ID" VARCHAR(30), "Level" DOUBLE, "Sprite" VARCHAR(30) ); DROP TABLE IF EXISTS "Monsters"; CREATE TABLE IF NOT EXISTS "Monsters" ( "ID" VARCHAR(30), "BehaviorTree" VARCHAR(30), "Food" VARCHAR(50) ); DROP TABLE IF EXISTS "Missions"; CREATE TABLE IF NOT EXISTS "Missions" ( "ID" STRING, "TypeInt" INTEGER, "MinGnomes" INTEGER, "MaxGnomes" INTEGER, "Target" STRING, "Actions" STRING ); DROP TABLE IF EXISTS "Mechanism"; CREATE TABLE IF NOT EXISTS "Mechanism" ( "ID" STRING, "GUI" STRING, "Buildable" BOOLEAN, "Item" STRING, "Sprite" STRING, "MaxFuel" INTEGER, "ProducePower" INTEGER, "ConsumePower" INTEGER, "Anim" BOOLEAN, "WallSpriteOn" STRING, "WallSpriteOff" STRING, "FloorSpriteOn" STRING, "FloorSpriteOff" STRING, "EffectOn" STRING, "EffectOff" STRING ); DROP TABLE IF EXISTS "MaterialToToolLevel"; CREATE TABLE IF NOT EXISTS "MaterialToToolLevel" ( "ID" VARCHAR(30), "RequiredToolLevel" DOUBLE, "ToolLevel" DOUBLE ); DROP TABLE IF EXISTS "Materials"; CREATE TABLE IF NOT EXISTS "Materials" ( "ID" VARCHAR(30), "Color" VARCHAR(30), "Strength" DOUBLE(30), "Type" VARCHAR(30), "Value" DOUBLE(30) ); DROP TABLE IF EXISTS "Magic"; CREATE TABLE IF NOT EXISTS "Magic" ( "ID" VARCHAR(30), "Color" VARCHAR(30), "Spells" VARCHAR(50) ); DROP TABLE IF EXISTS "Lairs_Tiles"; CREATE TABLE IF NOT EXISTS "Lairs_Tiles" ( "ID" STRING, "Offset" STRING, "Type" STRING ); DROP TABLE IF EXISTS "Lairs_Spawns"; CREATE TABLE IF NOT EXISTS "Lairs_Spawns" ( "ID" STRING, "Type" STRING, "Offset" STRING, "Level" INTEGER, "Rotation" INTEGER, "Gender" INTEGER ); DROP TABLE IF EXISTS "Lairs"; CREATE TABLE IF NOT EXISTS "Lairs" ( "ID" STRING, "Type" STRING, "Size" STRING, "Layout" STRING ); DROP TABLE IF EXISTS "Jobs_Tasks"; CREATE TABLE IF NOT EXISTS "Jobs_Tasks" ( "ID" VARCHAR(30), "ConstructionID" VARCHAR(30), "Duration" STRING, "Material" VARCHAR(30), "Offset" VARCHAR(11), "Task" VARCHAR(30) ); DROP TABLE IF EXISTS "Jobs_SpriteID"; CREATE TABLE IF NOT EXISTS "Jobs_SpriteID" ( "ID" VARCHAR(30), "Offset" VARCHAR(11), "Rotate" BOOLEAN, "SpriteID" VARCHAR(30), "Type" VARCHAR(30) ); DROP TABLE IF EXISTS "Jobs"; CREATE TABLE IF NOT EXISTS "Jobs" ( "ID" VARCHAR(30), "ConstructionType" VARCHAR(30), "MayTrapGnome" BOOLEAN, "RequiredToolItemID" VARCHAR(30), "RequiredToolLevel" VARCHAR(30), "SkillGain" VARCHAR(30), "SkillID" VARCHAR(30), "TechGain" VARCHAR(30), "WorkPosition" VARCHAR(50) ); DROP TABLE IF EXISTS "Items_Tiles"; CREATE TABLE IF NOT EXISTS "Items_Tiles" ( "ID" VARCHAR(30), "Forbidden" VARCHAR(50), "Required" VARCHAR(50), "Location" STRING, "Offset" STRING ); DROP TABLE IF EXISTS "Items_Components"; CREATE TABLE IF NOT EXISTS "Items_Components" ( "ID" VARCHAR(30), "ItemID" VARCHAR(30), "NoMaterial" BOOLEAN ); DROP TABLE IF EXISTS "Items"; CREATE TABLE IF NOT EXISTS "Items" ( "ID" STRING, "SpriteID" STRING, "Category" STRING, "ItemGroup" STRING, "StackSize" INTEGER, "HasQuality" BOOLEAN, "Value" INTEGER, "EatValue" INTEGER, "DrinkValue" INTEGER, "IsContainer" BOOLEAN, "IsTool" BOOLEAN, "LightIntensity" INTEGER, "HasComponents" BOOLEAN, "AllowedMaterialTypes" STRING, "AllowedMaterials" STRING, "AllowedContainers" STRING, "CarryContainer" STRING, "AttackValue" INT, "BurnValue" INTEGER ); DROP TABLE IF EXISTS "ItemGrouping_Groups"; CREATE TABLE IF NOT EXISTS "ItemGrouping_Groups" ( "ID" VARCHAR(30), "GroupID" VARCHAR(30), "SpriteID" VARCHAR ); DROP TABLE IF EXISTS "ItemGrouping"; CREATE TABLE IF NOT EXISTS "ItemGrouping" ( "ID" STRING, "Color" STRING, "SpriteID" STRING ); DROP TABLE IF EXISTS "Hydraulics"; CREATE TABLE IF NOT EXISTS "Hydraulics" ( "ID" STRING, "Buildable" BOOLEAN, "Item" STRING, "Sprite" STRING ); DROP TABLE IF EXISTS "HairColors"; CREATE TABLE IF NOT EXISTS "HairColors" ( "ID" STRING, "Color" STRING ); DROP TABLE IF EXISTS "FormationPerks"; CREATE TABLE IF NOT EXISTS "FormationPerks" ( "ID" STRING ); DROP TABLE IF EXISTS "Food_Values"; CREATE TABLE IF NOT EXISTS "Food_Values" ( "ID" STRING, "MaterialID" STRING, "Fruit" DECIMAL, "Vegetable" DECIMAL, "Meat" DECIMAL, "Dairy" DECIMAL, "Grain" DECIMAL ); DROP TABLE IF EXISTS "FarmUtils"; CREATE TABLE IF NOT EXISTS "FarmUtils" ( "ID" VARCHAR(30), "Buildable" BOOLEAN, "Item" STRING ); DROP TABLE IF EXISTS "Events_OnSuccess"; CREATE TABLE IF NOT EXISTS "Events_OnSuccess" ( "ID" VARCHAR(30), "Action" VARCHAR(30), "CenterCamera" BOOLEAN, "Count" VARCHAR(30), "Message" VARCHAR(300), "Pause" BOOLEAN, "Title" VARCHAR(30) ); DROP TABLE IF EXISTS "Events_OnFailure"; CREATE TABLE IF NOT EXISTS "Events_OnFailure" ( "ID" VARCHAR(30), "Message" VARCHAR(300), "Title" VARCHAR(30) ); DROP TABLE IF EXISTS "Events_Init"; CREATE TABLE IF NOT EXISTS "Events_Init" ( "ID" STRING, "Title" STRING, "Message" STRING, "Min" DOUBLE, "Max" DOUBLE, "Pause" BOOLEAN, "Require" STRING, "Location" STRING ); DROP TABLE IF EXISTS "Events_Expires"; CREATE TABLE IF NOT EXISTS "Events_Expires" ( "ID" VARCHAR(30), "After" DOUBLE, "Unit" VARCHAR(30), "Title" VARCHAR(30), "Message" VARCHAR(300) ); DROP TABLE IF EXISTS "Events"; CREATE TABLE IF NOT EXISTS "Events" ( "ID" VARCHAR(30), "Trigger_" VARCHAR(30), "TriggerCount" DOUBLE, "TriggerUnit" VARCHAR(30), "NotBeforeDay" INTEGER, "NotInPeaceful" BOOLEAN ); DROP TABLE IF EXISTS "EmbeddedMaterials"; CREATE TABLE IF NOT EXISTS "EmbeddedMaterials" ( "ID" VARCHAR(30), "Highest" DOUBLE, "Lowest" DOUBLE, "Type" VARCHAR(30), "WallSprite" VARCHAR(30) ); DROP TABLE IF EXISTS "Creature_Parts"; CREATE TABLE IF NOT EXISTS "Creature_Parts" ( "ID" STRING, "Part" STRING, "BaseSprite" STRING, "Order" INTEGER, "Tint" STRING, "Conceales" STRING ); DROP TABLE IF EXISTS "Creature_Layouts"; CREATE TABLE IF NOT EXISTS "Creature_Layouts" ( "ID" STRING, "Offset" STRING, "Sprite" STRING ); DROP TABLE IF EXISTS "Crafts_TechGain"; CREATE TABLE IF NOT EXISTS "Crafts_TechGain" ( "ID" VARCHAR(30), "TechID" VARCHAR(30), "Value" DOUBLE ); DROP TABLE IF EXISTS "Crafts_SkillGain"; CREATE TABLE IF NOT EXISTS "Crafts_SkillGain" ( "ID" VARCHAR(30), "Value" DOUBLE ); DROP TABLE IF EXISTS "Crafts_Prereqs"; CREATE TABLE IF NOT EXISTS "Crafts_Prereqs" ( "ID" VARCHAR(30), "Category" VARCHAR(30), "TechGroup" VARCHAR(30), "Value" DOUBLE ); DROP TABLE IF EXISTS "Crafts_Components"; CREATE TABLE IF NOT EXISTS "Crafts_Components" ( "ID" VARCHAR(30), "AllowedMaterial" VARCHAR(30), "AllowedMaterialType" VARCHAR(50), "Amount" INTEGER, "ItemID" VARCHAR(30), "RequireSame" BOOLEAN ); DROP TABLE IF EXISTS "Crafts"; CREATE TABLE IF NOT EXISTS "Crafts" ( "ID" VARCHAR(30), "Amount" INTEGER, "ConversionMaterial" VARCHAR(30), "ItemID" VARCHAR(30), "ProductionTime" DOUBLE, "ResultMaterial" VARCHAR(50), "ResultMaterialTypes" VARCHAR(50), "SkillID" VARCHAR(30) ); DROP TABLE IF EXISTS "Containers_Tiles"; CREATE TABLE IF NOT EXISTS "Containers_Tiles" ( "ID" VARCHAR(30), "Construction" BOOLEAN, "Job" BOOLEAN, "Offset" VARCHAR(11), "SpriteID" VARCHAR(30), "Stockpile" BOOLEAN ); DROP TABLE IF EXISTS "Containers_Components"; CREATE TABLE IF NOT EXISTS "Containers_Components" ( "ID" VARCHAR(30), "ItemID" VARCHAR(30) ); DROP TABLE IF EXISTS "Containers"; CREATE TABLE IF NOT EXISTS "Containers" ( "ID" VARCHAR(30), "Buildable" BOOLEAN, "Capacity" INTEGER, "RequireSame" BOOLEAN, "Type" VARCHAR(30), "Item" STRING ); DROP TABLE IF EXISTS "ConstructionTypes"; CREATE TABLE IF NOT EXISTS "ConstructionTypes" ( "ID" VARCHAR(30) ); DROP TABLE IF EXISTS "Constructions_Sprites"; CREATE TABLE IF NOT EXISTS "Constructions_Sprites" ( "ID" VARCHAR(30), "Offset" VARCHAR(11), "SpriteID" VARCHAR(30), "SpriteIDOverride" VARCHAR(30), "Type" VARCHAR(30) ); DROP TABLE IF EXISTS "Constructions_IntermediateSprites"; CREATE TABLE IF NOT EXISTS "Constructions_IntermediateSprites" ( "ID" VARCHAR(30), "Offset" VARCHAR(11), "Percent" DOUBLE, "SpriteID" VARCHAR(30), "Type" VARCHAR(30) ); DROP TABLE IF EXISTS "Constructions_Components"; CREATE TABLE IF NOT EXISTS "Constructions_Components" ( "ID" VARCHAR(30), "Amount" INTEGER, "ItemID" VARCHAR(30), "MaterialTypes" VARCHAR(50), "Materials" VARCHAR(50) ); DROP TABLE IF EXISTS "Constructions"; CREATE TABLE IF NOT EXISTS "Constructions" ( "ID" VARCHAR(30), "NoConstruction" BOOLEAN, "Rotation" BOOLEAN, "Type" VARCHAR(30), "Category" STRING ); DROP TABLE IF EXISTS "BaseSprites"; CREATE TABLE IF NOT EXISTS "BaseSprites" ( "ID" VARCHAR(30), "SourceRectangle" VARCHAR(30), "Tilesheet" VARCHAR(30) ); DROP TABLE IF EXISTS "BaseItems"; CREATE TABLE IF NOT EXISTS "BaseItems" ( "ID" VARCHAR(30) ); DROP TABLE IF EXISTS "Automaton_Cores_Skills"; CREATE TABLE IF NOT EXISTS "Automaton_Cores_Skills" ( "ID" STRING, "SkillID" STRING, "SkillValue" INTEGER ); DROP TABLE IF EXISTS "Automaton_Cores"; CREATE TABLE IF NOT EXISTS "Automaton_Cores" ( "ID" STRING, "BehaviorTree" STRING ); DROP TABLE IF EXISTS "Attributes"; CREATE TABLE IF NOT EXISTS "Attributes" ( "ID" VARCHAR(30) ); DROP TABLE IF EXISTS "Animals_States_Behavior"; CREATE TABLE IF NOT EXISTS "Animals_States_Behavior" ( "ID" VARCHAR(30), "ID2" VARCHAR(30), "RequiredGender" VARCHAR(30), "Amount" DOUBLE, "CreatureID" VARCHAR(30), "DaysBetween" DOUBLE, "EatTime" DOUBLE, "EggID" VARCHAR(30), "FoodValue" DOUBLE, "HungerPerTick" DOUBLE, "ItemID" VARCHAR(30), "Speed" DOUBLE ); DROP TABLE IF EXISTS "Animals_States"; CREATE TABLE IF NOT EXISTS "Animals_States" ( "ID" VARCHAR(30), "ID2" VARCHAR(30), "SpriteID" VARCHAR(30), "DaysToNextState" DOUBLE, "Immobile" BOOLEAN, "BehaviorTree" STRING, "IsAggro" BOOLEAN, "Attack" INTEGER, "Damage" INTEGER, "Anatomy" STRING ); DROP TABLE IF EXISTS "Animals_OnButcher"; CREATE TABLE IF NOT EXISTS "Animals_OnButcher" ( "ID" VARCHAR(30), "Amount" DOUBLE, "ItemID" VARCHAR(30), "Type" VARCHAR(30) ); DROP TABLE IF EXISTS "Animals"; CREATE TABLE IF NOT EXISTS "Animals" ( "ID" VARCHAR(30), "AllowInWild" BOOLEAN, "Aquatic" BOOLEAN, "BehaviorTree" VARCHAR(30), "Biome" VARCHAR(30), "Embark" BOOLEAN, "Food" VARCHAR(50), "GestationDays" DOUBLE, "Pasture" BOOLEAN, "PastureSize" DOUBLE, "Prey" VARCHAR(50), "IsMulti" BOOLEAN ); DROP TABLE IF EXISTS "Anatomy_Parts"; CREATE TABLE IF NOT EXISTS "Anatomy_Parts" ( "ID" STRING, "ID2" STRING, "Parent" STRING, "IsInside" BOOLEAN, "Height" STRING, "Side" STRING, "Facing" STRING, "HP" INTEGER, "IsVital" BOOLEAN ); DROP TABLE IF EXISTS "Anatomy"; CREATE TABLE IF NOT EXISTS "Anatomy" ( "ID" STRING, "Blood" INTEGER, "Root" STRING, "LayerOrder" STRING ); DROP TABLE IF EXISTS "AI"; CREATE TABLE IF NOT EXISTS "AI" ( "ID" VARCHAR(30), "BehaviorTree" VARCHAR(30) ); DROP TABLE IF EXISTS "Actions_Tiles"; CREATE TABLE IF NOT EXISTS "Actions_Tiles" ( "ID" VARCHAR(30), "Offset" VARCHAR(11), "SpriteID" VARCHAR(30), "IsFloor" BOOLEAN, "Required" VARCHAR(50), "Forbidden" VARCHAR(50) ); DROP TABLE IF EXISTS "Actions"; CREATE TABLE IF NOT EXISTS "Actions" ( "ID" VARCHAR(30), "Job" VARCHAR(30), "ConstructionType" VARCHAR(30), "ConstructionSelect" BOOLEAN, "IsFloor" BOOLEAN, "Multi" BOOLEAN, "MultiZ" BOOLEAN, "Rotate" BOOLEAN ); DROP TABLE IF EXISTS "Sounds"; CREATE TABLE IF NOT EXISTS "Sounds" ( "ID" VARCHAR(30), "Material" VARCHAR(30), "SoundFile" VARCHAR(30) ); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Crude',1.0,'RawWood',NULL,'1 0 0',NULL,NULL,'RawWood',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Crude',1.0,'RawStone',NULL,'0 0 0',NULL,NULL,'GiantStoneBlock',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Crude',0.0,NULL,NULL,'1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Crude',0.0,NULL,NULL,'1 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Crude',0.0,NULL,NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Crude',0.0,NULL,NULL,'0 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Carpenter',1.0,'Chair',NULL,'0 0 0',NULL,NULL,'Chair',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Carpenter',1.0,'Workbench',NULL,'-1 0 0',NULL,NULL,'Workbench',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Carpenter',1.0,'Chisel',NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Carpenter',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Carpenter',0.0,NULL,'1|2','1 0 0',NULL,NULL,'WorkshopTable_AxeBench',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Carpenter',0.0,NULL,'1','1 -1 0',NULL,NULL,'WorkshopTable',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Carpenter',0.0,NULL,'1','1 1 0',NULL,NULL,'CratePlank',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Carpenter',0.0,NULL,NULL,'-1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Carpenter',0.0,NULL,'1','-1 1 0',NULL,NULL,'SawHorse',NULL,NULL,'FR',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Sawmill',1.0,'Chair',NULL,'0 0 0',NULL,NULL,'Chair',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Sawmill',1.0,'Workbench',NULL,'-1 0 0',NULL,NULL,'Workbench',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Sawmill',1.0,'Sawblade',NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Sawmill',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Sawmill',0.0,NULL,'1|2','1 0 0',NULL,NULL,'SawTableLeft_SawTableBlade',NULL,NULL,'BR',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Sawmill',0.0,NULL,'1','1 -1 0',NULL,NULL,'SawTableRight',NULL,NULL,'FL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Sawmill',0.0,NULL,'1','1 1 0',NULL,NULL,'CrateLog',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Sawmill',0.0,NULL,NULL,'-1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Sawmill',0.0,NULL,'1','-1 1 0',NULL,NULL,'SawHorse',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonecutter',1.0,'Chair',NULL,'0 0 0',NULL,NULL,'Chair',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonecutter',1.0,'Workbench',NULL,'-1 0 0',NULL,NULL,'Workbench',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonecutter',1.0,'Chisel',NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonecutter',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonecutter',0.0,NULL,'2','1 0 0',NULL,NULL,'GiantStoneBlock',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonecutter',0.0,NULL,'2','1 -1 0',NULL,NULL,'RawStone',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonecutter',0.0,NULL,NULL,'1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonecutter',0.0,NULL,NULL,'-1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonecutter',0.0,NULL,NULL,'-1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonemason',1.0,'Chair',NULL,'0 0 0',NULL,NULL,'Chair',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonemason',1.0,'Workbench',NULL,'-1 0 0',NULL,NULL,'Workbench',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonemason',1.0,'Chisel',NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonemason',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonemason',0.0,NULL,'1','1 0 0',NULL,NULL,'WorkshopTable',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonemason',0.0,NULL,'1','1 -1 0',NULL,NULL,'WorkshopTable',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonemason',0.0,NULL,'2','1 1 0',NULL,NULL,'StoneBlockPile',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonemason',0.0,NULL,NULL,'-1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonemason',0.0,NULL,'1','-1 1 0',NULL,NULL,'SawHorse',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Kitchen',1.0,'Chair',NULL,'0 0 0',NULL,NULL,'Chair',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Kitchen',1.0,'Table',NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Kitchen',1.0,'Knife',NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Kitchen',0.0,NULL,'1','1 1 0',NULL,NULL,'WorkshopTable_Meat',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Kitchen',0.0,NULL,'1','1 0 0',NULL,NULL,'WorkshopTable_KitchenTableTop',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Kitchen',0.0,NULL,'1','1 -1 0',NULL,NULL,'WorkshopTable',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Kitchen',0.0,NULL,NULL,'-1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Kitchen',0.0,NULL,NULL,'-1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Kitchen',0.0,NULL,NULL,'-1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Distillery',1.0,'Table',NULL,'1 1 0',NULL,NULL,'WorkshopTable',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Distillery',2.0,'Barrel',NULL,'-1 0 0',NULL,NULL,'Keg',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Distillery',0.0,NULL,'1','-1 -1 0',NULL,NULL,'Keg',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Distillery',0.0,NULL,'1','-1 1 0',NULL,NULL,'Keg',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Distillery',0.0,NULL,NULL,'0 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Distillery',0.0,NULL,'1','0 1 0',NULL,NULL,'WorkshopWaterTub',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Distillery',0.0,NULL,NULL,'0 -1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Distillery',0.0,NULL,'1','1 -1 0',NULL,NULL,'Distill',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Distillery',0.0,NULL,NULL,'1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Dyer',1.0,'Table',NULL,'1 0 0',NULL,NULL,'WorkshopTable',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Dyer',1.0,'Chair',NULL,'0 0 0',NULL,NULL,'Chair',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Dyer',0.0,NULL,NULL,'1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Dyer',0.0,NULL,NULL,'-1 1 0',NULL,NULL,'DyedCloth',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Dyer',0.0,NULL,'0','-1 -1 0',NULL,NULL,'WoodTub',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Dyer',0.0,NULL,NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Dyer',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Dyer',0.0,NULL,NULL,'-1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Dyer',0.0,NULL,NULL,'1 1 0',NULL,NULL,'Pigment',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Forge',1.0,'Hearth',NULL,'-1 0 0',NULL,NULL,'ForgeWithTop',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Forge',1.0,'Mold',NULL,'0 0 0',NULL,NULL,'MoldWithTop',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Forge',1.0,'Bellows',NULL,'1 -1 0',NULL,NULL,'Bellows',NULL,NULL,'FL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Forge',0.0,NULL,NULL,'-1 1 0',NULL,NULL,'CoalPile',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Forge',0.0,NULL,NULL,'-1 -1 0',NULL,NULL,'OrePile',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Forge',0.0,NULL,NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Forge',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Forge',0.0,NULL,NULL,'1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Forge',0.0,NULL,NULL,'1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Furnace',1.0,'Furnace',NULL,'-1 0 0',NULL,NULL,'FurnaceWithFlame',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Furnace',1.0,'Bellows',NULL,'0 0 0',NULL,NULL,'Bellows',NULL,NULL,'BL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Furnace',0.0,NULL,'1','-1 -1 0',NULL,NULL,'CrateLog',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Furnace',0.0,NULL,NULL,'-1 1 0',NULL,NULL,'CoalPile',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Furnace',0.0,NULL,NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Furnace',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Furnace',0.0,NULL,NULL,'1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Furnace',0.0,NULL,NULL,'1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Furnace',0.0,NULL,NULL,'1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Kiln',1.0,'Furnace',NULL,'-1 0 0',NULL,NULL,'KilnWithFlame',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Kiln',1.0,'Bellows',NULL,'0 0 0',NULL,NULL,'Bellows',NULL,NULL,'BL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Kiln',0.0,NULL,'1','-1 -1 0',NULL,NULL,'WorkshopTable',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Kiln',0.0,NULL,'0','-1 1 0',NULL,NULL,'StoneBlockPile',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Kiln',0.0,NULL,NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Kiln',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Kiln',0.0,NULL,NULL,'1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Kiln',0.0,NULL,NULL,'1 0 0',NULL,NULL,'CoalPile',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Kiln',0.0,NULL,NULL,'1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Blacksmith',1.0,'Bellows',NULL,'-1 0 0',NULL,NULL,'CoalPile',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Blacksmith',1.0,'Hearth',NULL,'-1 1 0',NULL,NULL,'ForgeWithTop',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Blacksmith',1.0,'Anvil',NULL,'0 0 0',NULL,NULL,'Anvil',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Blacksmith',0.0,NULL,'2','-1 -1 0',NULL,NULL,'MetalBarPile',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Blacksmith',0.0,NULL,NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Blacksmith',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Blacksmith',0.0,NULL,NULL,'1 -1 0',NULL,NULL,'WaterTrough',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Blacksmith',0.0,NULL,'0','1 0 0',NULL,NULL,'WorkshopTable_Hammer',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Blacksmith',0.0,NULL,NULL,'1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Metalworker',1.0,'Anvil',NULL,'-1 0 0',NULL,NULL,'Anvil',NULL,NULL,'FL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Metalworker',1.0,'Bellows',NULL,'-1 1 0',NULL,NULL,'Bellows',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Metalworker',1.0,'Hearth',NULL,'1 0 0',NULL,NULL,'ForgeWithTop',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Metalworker',0.0,NULL,NULL,'-1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Metalworker',0.0,NULL,NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Metalworker',0.0,NULL,NULL,'0 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Metalworker',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Metalworker',0.0,NULL,'1|0','1 -1 0',NULL,NULL,'WorkshopTable_Statuette',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Metalworker',0.0,NULL,NULL,'1 1 0',NULL,NULL,'WaterTrough',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Gemcutter',1.0,'Workbench',NULL,'-1 -1 0',NULL,NULL,'WorkshopTable_RawGem',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Gemcutter',1.0,'Chair',NULL,'0 0 0',NULL,NULL,'Chair',NULL,NULL,'BL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Gemcutter',1.0,'CuttingWheel',NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Gemcutter',0.0,NULL,'0|2','-1 0 0',NULL,NULL,'SawTable_TableSaw',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Gemcutter',0.0,NULL,'0','-1 1 0',NULL,NULL,'WorkshopTable',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Gemcutter',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Gemcutter',0.0,NULL,NULL,'1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Gemcutter',0.0,NULL,NULL,'1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Gemcutter',0.0,NULL,NULL,'1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Loom',1.0,'Chair',NULL,'0 0 0',NULL,NULL,'Chair',NULL,NULL,'BL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Loom',1.0,'Loom',NULL,'-1 0 0',NULL,NULL,'Loom',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Loom',0.0,NULL,'1','-1 -1 0',NULL,NULL,'WorkshopTable_Cloth',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Loom',0.0,NULL,NULL,'-1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Loom',0.0,NULL,NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Loom',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Loom',0.0,NULL,NULL,'1 -1 0',NULL,NULL,'ClothRollTableTop',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Loom',0.0,NULL,NULL,'1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Loom',0.0,NULL,NULL,'1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonecarver',1.0,'Workbench',NULL,'-1 0 0',NULL,NULL,'Workbench',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonecarver',1.0,'Chair',NULL,'0 0 0',NULL,NULL,'Chair',NULL,NULL,'BL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonecarver',1.0,'Chisel',NULL,'-1 -1 0',NULL,NULL,'StoneBlockPile',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonecarver',0.0,NULL,'0','-1 1 0',NULL,NULL,'CarpenterStandWithTools',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonecarver',0.0,NULL,NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonecarver',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonecarver',0.0,NULL,NULL,'1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonecarver',0.0,NULL,NULL,'1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Stonecarver',0.0,NULL,NULL,'1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Woodcarver',1.0,'Workbench',NULL,'-1 0 0',NULL,NULL,'Workbench',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Woodcarver',1.0,'Chair',NULL,'0 0 0',NULL,NULL,'Chair',NULL,NULL,'BL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Woodcarver',1.0,'Chisel',NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Woodcarver',0.0,NULL,'0','-1 -1 0',NULL,NULL,'CratePlank',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Woodcarver',0.0,NULL,'0','-1 1 0',NULL,NULL,'CarpenterStandWithTools',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Woodcarver',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Woodcarver',0.0,NULL,NULL,'1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Woodcarver',0.0,NULL,NULL,'1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Woodcarver',0.0,NULL,NULL,'1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Jeweler',1.0,'Workbench',NULL,'-1 -1 0',NULL,NULL,'WorkshopTable_Gem',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Jeweler',1.0,'Chair',NULL,'0 0 0',NULL,NULL,'Chair',NULL,NULL,'BL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Jeweler',1.0,'File',NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Jeweler',0.0,NULL,'0','-1 0 0',NULL,NULL,'WorkshopTable_Vise',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Jeweler',0.0,NULL,'0','-1 1 0',NULL,NULL,'WorkshopTable_JewelryPile',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Jeweler',0.0,NULL,NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Jeweler',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Jeweler',0.0,NULL,NULL,'1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Jeweler',0.0,NULL,NULL,'1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Jeweler',0.0,NULL,NULL,'1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Tailor',1.0,'Table',NULL,'-1 -1 0',NULL,NULL,'WorkshopTable_ClothRollTableTop',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Tailor',1.0,'Chair',NULL,'0 0 0',NULL,NULL,'Chair',NULL,NULL,'BL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Tailor',1.0,'Needle',NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Tailor',0.0,NULL,'0','-1 0 0',NULL,NULL,'WorkshopTable_ShearsTableTop',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Tailor',0.0,NULL,'0','-1 1 0',NULL,NULL,'WorkshopTable_String',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Tailor',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Tailor',0.0,NULL,NULL,'1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Tailor',0.0,NULL,NULL,'1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Tailor',0.0,NULL,NULL,'1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Bonecarver',1.0,'Table',NULL,'-1 -1 0',NULL,NULL,'WorkshopTable_Skull',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Bonecarver',1.0,'Chair',NULL,'0 0 0',NULL,NULL,'Chair',NULL,NULL,'BL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Bonecarver',1.0,'Knife',NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Bonecarver',0.0,NULL,'0','-1 0 0',NULL,NULL,'WorkshopTable_ChiselTableTop',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Bonecarver',0.0,NULL,'0','-1 1 0',NULL,NULL,'WorkshopTable_BoneNeedle',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Bonecarver',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Bonecarver',0.0,NULL,'0','1 -1 0',NULL,NULL,'CarpenterStandWithTools',NULL,NULL,'FL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Bonecarver',0.0,NULL,NULL,'1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Bonecarver',0.0,NULL,NULL,'1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Butcher',1.0,'Table',NULL,'-1 -1 0',NULL,NULL,'WorkshopTable','BigBlood1',NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Butcher',1.0,'Chair',NULL,'0 0 0',NULL,NULL,'Chair',NULL,NULL,'BL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Butcher',1.0,'Knife',NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Butcher',0.0,NULL,'0|2','-1 0 0',NULL,NULL,'WorkshopTable_ButcherTableTop','ButcherTableTop',NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Butcher',0.0,NULL,'0','-1 1 0',NULL,NULL,'WorkshopTable_Meat',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Butcher',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Butcher',0.0,NULL,NULL,'1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Butcher',0.0,NULL,NULL,'1 0 0',NULL,NULL,'MeatStack',NULL,NULL,'BL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Butcher',0.0,NULL,NULL,'1 1 0',NULL,NULL,'SausageStack',NULL,NULL,'BL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MarketStall',3.0,'Table',NULL,'0 -1 0',NULL,NULL,'MarketStallWithTop',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MarketStall',0.0,NULL,'0','0 0 0',NULL,NULL,'MarketStallWithTop',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MarketStall',0.0,NULL,'0','0 1 0',NULL,NULL,'MarketStallWithTop',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MarketStall',1.0,'Chair',NULL,'-1 0 0',NULL,NULL,'Chair',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MarketStall',0.0,NULL,NULL,'1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MarketStall',0.0,NULL,NULL,'1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MarketStall',0.0,NULL,NULL,'1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MarketStall',0.0,NULL,NULL,'-1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MarketStall',0.0,NULL,'0','-1 1 0',NULL,NULL,'Crate',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Prospector',1.0,'Table',NULL,'-1 -1 0',NULL,NULL,'WorkshopTable_ProspectorSliver',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Prospector',1.0,'Chair',NULL,'0 0 0',NULL,NULL,'Chair',NULL,NULL,'BL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Prospector',1.0,'Chisel',NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Prospector',0.0,NULL,'0','-1 0 0',NULL,NULL,'WorkshopTable_ChiselTableTop',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Prospector',0.0,NULL,'0','-1 1 0',NULL,NULL,'WorkshopTable_ProspectorOre',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Prospector',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Prospector',0.0,NULL,NULL,'1 -1 0',NULL,NULL,'WaterTrough',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Prospector',0.0,NULL,NULL,'1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Prospector',0.0,NULL,NULL,'1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Fishery',1.0,'Plank',NULL,'0 -1 0','RampTop',NULL,'ScaffoldFloor',NULL,'Floor',NULL,1); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Fishery',1.0,'Plank',NULL,'-1 -1 0','RampTop',NULL,'ScaffoldFloor',NULL,'Floor',NULL,1); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Fishery',4.0,'Plank',NULL,'1 -1 0','RampTop',NULL,'ScaffoldFloor',NULL,'Floor',NULL,1); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Fishery',0.0,NULL,'0','1 0 0',NULL,NULL,'FishingRodRack',NULL,NULL,'BL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Fishery',0.0,NULL,NULL,'-1 0 0',NULL,NULL,'FishingFishRack',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Fishery',0.0,NULL,NULL,'0 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Fishery',0.0,NULL,NULL,'-1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Fishery',0.0,NULL,'1','1 1 0',NULL,NULL,'FishingVat',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Fishery',0.0,NULL,NULL,'0 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Leatherworker',1.0,'Table',NULL,'1 -1 0',NULL,NULL,'WorkshopTable','RawHide',NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Leatherworker',0.0,NULL,'0|2','1 0 0',NULL,NULL,'WorkshopTable_AxeBench',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Leatherworker',0.0,NULL,NULL,'-1 1 0',NULL,NULL,'TanningRack',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Leatherworker',1.0,'Chair',NULL,'0 0 0',NULL,NULL,'Chair',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Leatherworker',1.0,'Knife',NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Leatherworker',0.0,NULL,NULL,'-1 -1 0',NULL,NULL,'TanningRack',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Leatherworker',0.0,NULL,NULL,'-1 0 0',NULL,NULL,'TanningRack',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Leatherworker',0.0,NULL,NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Leatherworker',0.0,NULL,NULL,'1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Weaponsmith',1.0,'Bellows',NULL,'-1 1 0',NULL,NULL,'Bellows',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Weaponsmith',1.0,'Hearth',NULL,'1 1 0',NULL,NULL,'ForgeWithTop',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Weaponsmith',1.0,'Anvil',NULL,'1 0 0',NULL,NULL,'Anvil',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Weaponsmith',0.0,NULL,NULL,'1 -1 0',NULL,NULL,'WaterTrough',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Weaponsmith',0.0,NULL,NULL,'-1 0 0',NULL,NULL,'UprightWeaponStand',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Weaponsmith',0.0,NULL,NULL,'-1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Weaponsmith',0.0,NULL,NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Weaponsmith',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Weaponsmith',0.0,NULL,NULL,'0 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Armorer',1.0,'Bellows',NULL,'1 -1 0',NULL,NULL,'Bellows',NULL,NULL,'BL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Armorer',1.0,'Hearth',NULL,'-1 1 0',NULL,NULL,'ForgeWithTop',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Armorer',1.0,'Anvil',NULL,'-1 0 0',NULL,NULL,'Anvil',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Armorer',0.0,NULL,NULL,'1 0 0',NULL,NULL,'WaterTrough',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Armorer',0.0,NULL,'1','1 1 0',NULL,NULL,'Statue',NULL,NULL,'BL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Armorer',0.0,NULL,NULL,'0 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Armorer',0.0,NULL,NULL,'-1 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Armorer',0.0,NULL,NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Armorer',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'-2 -2 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'-1 -2 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'0 -2 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'1 -2 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'2 -2 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'-2 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',3.0,'TrainingDummy',NULL,'-1 -1 0',NULL,NULL,'TrainingDummy',NULL,NULL,'FL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,'0','1 -1 0',NULL,NULL,'TrainingDummy',NULL,NULL,'FL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'2 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'-2 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'-1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'0 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'2 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'-2 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'-1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,'0','0 1 0',NULL,NULL,'TrainingDummy',NULL,NULL,'FL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'2 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'-2 2 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'-1 2 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'0 2 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'1 2 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MeleeTraining',0.0,NULL,NULL,'2 2 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Fishery',0.0,NULL,'0','0 -1 -1','Ramp','Wall','Scaffold',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Fishery',0.0,NULL,'0','1 -1 -1','Ramp','Wall','Scaffold',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Fishery',0.0,NULL,'0','-1 -1 -1','Ramp','Wall','Scaffold',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Engineer',1.0,'Chair','','0 0 0','','','Chair','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Engineer',1.0,'Workbench','','-1 0 0','','','Workbench','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Engineer',1.0,'Wrench','','0 -1 0','','','','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Engineer',0.0,'','','0 1 0','','','WorkshopInputIndicator','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Engineer',0.0,'','1|2','1 0 0','','','WorkshopTable_Wrench','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Engineer',0.0,'','1','1 -1 0','','','WorkshopTable_Blueprint','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Engineer',0.0,'','1|2','1 1 0','','','WorkshopTable_Wheel','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Engineer',0.0,'','','-1 -1 0','','','','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Engineer',0.0,'',NULL,'-1 1 0','','',NULL,'','',NULL,''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MachineShop',1.0,'Chair','','0 0 0','','','Chair','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MachineShop',1.0,'Workbench','','-1 0 0','','','Workbench','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MachineShop',1.0,'CuttingWheel','','0 -1 0','','','','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MachineShop',0.0,'','','0 1 0','','','WorkshopInputIndicator','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MachineShop',0.0,'','1|2','1 0 0','','','SawTable_TableSaw','','',NULL,''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MachineShop',0.0,'','1','1 -1 0','','','WorkshopTable_Blueprint','','',NULL,''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MachineShop',0.0,'','1|2','1 1 0','','','WorkshopTable_Bar','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MachineShop',0.0,'','','-1 -1 0','','','','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('MachineShop',0.0,'',NULL,'-1 1 0','','',NULL,'','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Automaton',1.0,'Chair','','0 0 0','','','Chair','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Automaton',1.0,'Workbench','','-1 0 0','','',NULL,'','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Automaton',1.0,'Wrench','','0 -1 0','','','','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Automaton',0.0,'','','0 1 0','','','WorkshopInputIndicator','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Automaton',0.0,'','1|2','1 0 0','','','WorkshopTable_Wrench','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Automaton',0.0,'','1','1 -1 0','','','WorkshopTable_Blueprint','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Automaton',0.0,'','1|2','1 1 0','','','WorkshopTable_Wheel','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Automaton',0.0,'','2','-1 -1 0','','','Automaton','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Automaton',0.0,'','2','-1 1 0','','','AutomatonTorso','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',4.0,'WindmillBlade',NULL,'0 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,NULL,'0 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,NULL,'0 2 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,NULL,'0 3 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,NULL,'1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',4.0,'Plank',NULL,'1 1 0',NULL,NULL,'WindmillBase',NULL,NULL,'BR',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,'','4','1 2 0',NULL,NULL,'WindmillBase',NULL,NULL,'FL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,NULL,'1 3 0',NULL,NULL,'FlourSack',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,NULL,'2 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,NULL,'2 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,NULL,'2 2 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,NULL,'2 3 0',NULL,NULL,'FlourSackPile',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,NULL,'3 0 0',NULL,NULL,'FlourSackPile',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,NULL,'3 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,NULL,'3 2 0',NULL,NULL,'Donkey',NULL,NULL,'FL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,'4','3 3 0',NULL,NULL,'Trough',NULL,NULL,'FL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',4.0,'Plank',NULL,'1 1 1',NULL,NULL,'WindmillBase2',NULL,NULL,'BR',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,'8','1 2 1',NULL,NULL,'WindmillBase2',NULL,NULL,'FL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',4.0,'Plank',NULL,'1 1 2',NULL,NULL,'WindmillRoof',NULL,NULL,'BR',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,'12','1 2 2',NULL,NULL,'WindmillRoof',NULL,NULL,'FL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,'0','2 2 2',NULL,NULL,'WindmillSail1',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,'0','2 1 2',NULL,NULL,'WindmillSail2',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,'0','2 2 1',NULL,NULL,'WindmillSail3',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('Windmill',0.0,NULL,'0','2 1 1',NULL,NULL,'WindmillSail4',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('WasteDisposal',1.0,'Barrel',NULL,'-1 -1 0',NULL,NULL,'Barrel',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('WasteDisposal',1.0,'Crate',NULL,'-1 0 0',NULL,NULL,'Crate',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('WasteDisposal',1.0,'Hearth',NULL,'-1 1 0',NULL,NULL,'ForgeWithTop',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('WasteDisposal',1.0,'Furnace',NULL,'0 -1 0',NULL,NULL,'FurnaceWithFlame',NULL,NULL,'FL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('WasteDisposal',0.0,NULL,NULL,'0 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('WasteDisposal',0.0,'',NULL,'0 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('WasteDisposal',1.0,'Furnace',NULL,'1 -1 0',NULL,NULL,'FurnaceWithFlame',NULL,NULL,'FL',NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('WasteDisposal',0.0,NULL,NULL,'1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('WasteDisposal',0.0,NULL,'2','1 1 0',NULL,NULL,'ForgeWithTop',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('GlassFurnace',1.0,'Furnace',NULL,'-1 0 0',NULL,NULL,'GlassFurnace',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('GlassFurnace',1.0,'Crate',NULL,'1 -1 0',NULL,NULL,'Crate',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('GlassFurnace',0.0,NULL,NULL,'0 1 0',NULL,NULL,'WorkshopInputIndicator',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('GlassFurnace',0.0,NULL,NULL,'-1 -1 0',NULL,NULL,'SandContainer',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('GlassFurnace',0.0,NULL,NULL,'0 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('GlassFurnace',0.0,NULL,NULL,'-1 1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('GlassFurnace',0.0,NULL,NULL,'0 -1 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('GlassFurnace',0.0,NULL,NULL,'1 0 0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('GlassFurnace',1.0,'Hearth',NULL,'1 1 0',NULL,NULL,'WaterTrough',NULL,NULL,NULL,NULL); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('GlassMaker',1.0,'Furnace','','-1 -1 0','','','GlassFurnace','','','FL',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('GlassMaker',1.0,'Table','','1 -1 0','','','WorkshopTable_GlassIngot','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('GlassMaker',0.0,'','','0 1 0','','','WorkshopInputIndicator','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('GlassMaker',0.0,'','','-1 0 0','','',NULL,'','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('GlassMaker',1.0,'Chair','','0 0 0','','','Chair','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('GlassMaker',0.0,'','','-1 1 0','','','','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('GlassMaker',0.0,'','','0 -1 0','','','','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('GlassMaker',0.0,'','1','1 0 0','','','WorkshopTable','','','',''); INSERT INTO "Workshops_Components" ("ID","Amount","ItemID","MaterialItem","Offset","Required","Forbidden","SpriteID","SpriteID2","Type","WallRotation","IsFloor") VALUES ('GlassMaker',0.0,'','1','1 1 0','','','WorkshopTable_Mosaic','','','',''); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Crude','Plank|Stick|WoodChair|Workbench|Chisel',NULL,'1 1 0','1 -1 0','2 3',NULL,NULL,'Wood'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Carpenter','WoodChair|Workbench|Crate|Barrel|Chest|WoodTable|Stick|Haft|Hilt|Knife|PickaxeBaseWood|PickaxeHeadWood|Pickaxe|BedFrame|FancyBedFrame|Bed|FancyBed|WoodDoor|Dresser|Cabinet|Torch|Loom|Bellows|TrainingDummy|Wheelbarrow|Bucket|FishingRod|Shed|AlarmBellBase|BeeHive|Bookshelf',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Wood'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Sawmill','Plank',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Wood'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Stonecutter','Block',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Stone'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Stonemason','StoneChair|StoneTable|StoneSawblade|KnifeBlade|PickaxeHeadStone|Chisel',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Stone'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Kitchen','FlourKitchen|Bread|Sausage|Sandwich|Cheese|CheeseOmelette|SausageOmelette|MushroomOmelette|Vinegar|Sugar|DropCandy|ShepherdsPie|Biscuit|PickledFruit|PickledEgg|PickledVegetable|SmokedMeat|SmokedSausage|SmokedBird|SmokedFish|FreshCheese|HardCheese|FruitBread|FruitPie|VeggiePie|MeatPie|FineMeatPie',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Food'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Distillery','Beer|Wine|FruitWine|HoneyWine|Cider',NULL,'0 -1 0','1 0 0','3 3',NULL,NULL,'Food'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Dyer','RedDye|GreenDye|BlueDye|PurpleDye|YellowDye|CyanDye|DyedTable|DyedPlank|DyedBolt',NULL,'0 1 0','0 -1 0','3 3','true',NULL,'Craft'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Forge','Bar|BronzeBar|SteelBar|RoseGoldBar|Anvil|SliverBar',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Metal'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Furnace','RawCoal',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Wood'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Kiln','Brick|ClayStatuette',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Stone'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Blacksmith','PickaxeHeadMetal|FellingAxeHead|FellingAxe|CuttingWheel|File|BallPeenHammer|MetalNeedle|AlarmBell|AlarmBellBell|BigTorch|Brazier',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Metal'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Metalworker','MetalStatue|MetalStatuette|Coin',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Metal'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Gemcutter','Gem|PickaxeHeadFlintStone',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Craft'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Loom','Bolt',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Craft'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Stonecarver','StoneDoor|Hearth|Mold|Furnace|Trough|StoneStatue|StonePillar|StoneStatuette|PetRock',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Stone'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Woodcarver','WoodStatue|WoodStatuette|PuzzleBox',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Wood'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Jeweler','Ring|GemmedRing|Necklace|GemmedNecklace',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Craft'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Tailor','Bag|Sack|Bandage|String|Padding|Mattress|AmmoPouch',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Craft'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Bonecarver','Needle|BoneStatuette|SkullHelmet|BoneShirt|BoneTable|BoneChair|BoneBedFrame|BoneBed',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Craft'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Butcher',NULL,'Butcher','0 1 0','0 -1 0','3 3',NULL,NULL,'Food'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('MarketStall',NULL,'Trader','-1 0 0','1 0 0','3 3',NULL,NULL,'Misc'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Prospector','SliverFromStone|SliverFromDirt',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Stone'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Fishery',NULL,'Fishery','0 -1 0','0 0 0','3 3',NULL,NULL,'Food'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Leatherworker','LeatherStrap|LeatherArmorPanel|LeatherHelm|LeatherCuirass|LeatherBracer|LeatherPants|LeatherGlove|LeatherBoot|Backpack',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Craft'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Weaponsmith','SwordBlade|Sword|HandAxeHead|HandAxe|HammerHead|Hammer|ClaymoreBlade|Claymore|BattleAxeHead|BattleAxe|WarhammerHead|Warhammer',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Metal'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Armorer','ArmorPlate|ChainGloves|ChainBracers|ChainBoots|ChainPants|ChainHelm|ChainShirt|PlateGloves|PlatePauldrons|PlateBoots|PlateGreaves|PlateHelm|PlateChest|HeavyPlateGloves|HeavyPlatePauldrons|HeavyPlateBoots|HeavyPlateGreaves|HeavyPlateHelm|HeavyPlateChest',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Metal'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('MeleeTraining',NULL,'Training','-2 -2 0','0 0 0','5 5',NULL,NULL,'Misc'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Engineer','Axle|MechanismBase|Gearbox|Handcrank|TrapBase|SpikeTrap|Lever|MechanicalWall|WindmillBlade|PressurePlate|Hatch|SteamEngine',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Mechanics'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('MachineShop','Wrench|Rod|Gear|Spring|Spike|Screw|Cylinder',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Mechanics'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Automaton','Automaton|AutomatonHead|AutomatonTorso|AutomatonArm|AutomatonLeg|AutomatonCoreMark1|AutomatonCoreMark2','','0 1 0','0 -1 0','3 3',NULL,NULL,'Mechanics'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('Windmill','Flour',NULL,'1 0 0','1 3 0','4 4',NULL,'windmill.png','Food'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('WasteDisposal','BurnBone|BurnFishBone|BurnStraw|BurnSeeds',NULL,'0 1 0','0 -1 0','3 3','true',NULL,'Misc'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('GlassFurnace','GlassIngot|RoughGlassGem',NULL,'0 1 0','0 -1 0','3 3',NULL,NULL,'Craft'); INSERT INTO "Workshops" ("ID","Crafts","GUI","InputTile","OutputTile","Size","NoAutoGenerate","Icon","Tab") VALUES ('GlassMaker','MosaicTile|GlassBottle|GlassJar','','0 1 0','0 -1 0','3 3','','','Craft'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('aced','acing','aced','aces','ace'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('acted','acting','acted','acts','act'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('adventured','adventuring','adventured','adventures','adventure'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('aged','aging','aged','ages','age'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('angered','angering','angered','angers','anger'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('armed','arming','armed','arms','arm'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('armored','armoring','armored','armors','armor'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('axed','axing','axed','axes','axe'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('babied','babying','babied','babies','baby'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('backed','backing','backed','backs','back'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('baked','baking','baked','bakes','bake'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('balded','balding','balded','balds','bald'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('bared','baring','bared','bares','bare'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('bastardized','bastardizing','bastardized','bastardizes','bastardize'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('bathed','bathing','bathed','bathes','bathe'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('battled','battling','battled','battles','battle'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('born','bearing','bore','bears','bear'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('beguiled','beguiling','beguiled','beguils','beguil'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('beheaded','beheading','beheaded','beheads','behead'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('belched','belching','belched','belches','belch'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('bewitched','bewitching','bewitched','bewitches','bewitch'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('bitched','bitching','bitched','bitches','bitch'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('blackened','blackening','blackened','blackens','blacken'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('blazed','blazing','blazed','blazes','blaze'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('blinded','blinding','blinded','blinds','blind'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('blistered','blistering','blistered','blisters','blister'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('bloated','bloating','bloated','bloats','bloat'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('bled','bleeding','bled','bleeds','bleed'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('blossomed','blossoming','blossomed','blossoms','blossom'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('boiled','boiling','boiled','boils','boil'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('bolted','bolting','bolted','bolts','bolt'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('booted','booting','booted','boot','boot'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('bothered','bothering','bothered','bothers','bother'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('bowed','bowing','bowed','bows','bow'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('brained','braining','brained','brains','brain'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('breached','breaching','breached','breaches','breach'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('broken','breaking','broke','breaks','break'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('breathed','breathing','breathed','breathes','breathe'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('bred','breeding','bred','breeds','breed'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('brewed','brewing','brewed','brews','brew'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('bridled','bridling','bridled','bridles','bridle'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('brightened','brightening','brighten','brightens','brighten'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('bristled','bristling','bristled','bristles','bristle'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('brimmed','brimming','brimmed','brims','brim'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('brought','bringing','brought','brings','bring'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('broiled','broiling','broiled','broils','broil'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('bucked','bucking','bucked','bucks','buck'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('buckled','buckling','buckled','buckles','buckle'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('bunched','bunching','bunched','bunches','bunch'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('burdened','burdening','burdened','burdens','burden'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('burned','burning','burned','burns','burn'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('buried','burying','buried','buries','bury'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('busheled','busheling','busheled','bushels','bushel'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('busted','busting','busted','busts','bust'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('busied','busying','busied','busies','busy'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('bustled','bustling','bustled','bustles','bustle'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('butchered','butchering','butchered','butchers','butcher'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('buttered','buttering','buttered','butters','butter'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('buttoned','buttoning','buttoned','buttons','button'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('cackled','cackling','cackled','cackles','cackle'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('caged','caging','caged','cages','cage'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('called','calling','called','calls','call'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('camped','camping','camped','camps','camp'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('candied','candying','candied','candies','candy'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('castle','castling','castled','castles','castle'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('caved','caving','caved','caves','cave'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('cavorted','cavorting','cavorted','cavorts','cavort'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('chained','chaining','chained','chains','chain'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('chanted','chanting','chanted','chants','chant'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('charred','charring','charred','chars','char'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('charmed','charming','charmed','charms','charm'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('chewed','chewing','chewed','chews','chew'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('chilled','chilling','chilled','chills','chill'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('chipped','chipping','chipped','chips','chip'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('choked','choking','choked','chokes','choke'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('chopped','chopping','chopped','chops','chop'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('chucked','chucking','chucked','chucks','chuck'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('cindered','cindering','cindered','cinder','cinder'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('clapped','clapping','clapped','claps','clap'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('clasped','clasping','clasped','clasps','clasp'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('clawed','clawing','clawed','claws','claw'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('cleared','clearing','cleared','clears','clear'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('cleaved','cleaving','cleaved','cleaves','cleave'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('clinged','cleaving','clinged','clings','cling'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('cloistered','cloistering','cloistered','cloisters','cloister'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('clubbed','clubbing','clubbed','clubs','club'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('clustered','clustering','clustered','clusters','cluster'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('cluttered','cluttering','cluttered','clutters','clutter'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('coiled','coiling','coiled','coils','coil'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('colored','coloring','colored','colors','color'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('cometed','cometing','cometed','comets','comet'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('conquered','conquering','conquered','conquers','conquer'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('cooked','cooking','cooked','cooks','cook'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('covered','covering','covered','covers','cover'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('coupled','coupling','coupled','couples','couple'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('crawled','crawling','crawled','crawls','crawl'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('creamed','creaming','creamed','creams','cream'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('creeked','creeking','creeked','creeks','creek'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('creet','creeping','crept','creeps','creep'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('crossed','crossing','crossed','crosses','cross'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('crowned','crowning','crowned','crowns','crown'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('crucified','crucifying','crucified','crucifies','crucify'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('crumbled','crumbling','crumbled','crumbles','crumble'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('crunched','crunching','crunched','crunches','crunch'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('crushed','crushing','crushed','crushes','crush'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('cried','crying','cried','cries','cry'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('cuddled','cuddling','cuddled','cuddles','cuddle'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('cursed','cursing','cursed','curses','curse'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('cut','cutting','cut','cuts','cut'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('danced','dancing','danced','dances','dance'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('dangled','dangling','dangled','dangle','dangle'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('dated','dating','dated','dates','date'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('damaged','damaging','damaged','damages','damage'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('damned','damning','damned','damns','damn'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('dawned','dawning','dawned','dawns','dawn'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('died','dying','died','dies','die'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('decapitated','decapitating','decapitated','decapitates','decapitate'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('decayed','decaying','decayed','decays','decay'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('deceived','deceiving','deceived','deceives','deceive'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('desecrated','desecrating','desecrated','desecrates','desecrate'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('deserted','deserting','deserted','deserts','desert'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('despaired','despairing','despaired','despairing','despair'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('destroyed','destroying','destroyed','destroys','destroy'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('devilled','devilling','devilled','bedevils','devil'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('devoured','devouring','devoured','devours','devour'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('dined','dining','dined','dines','dine'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('dirtied','dirtying','dirtied','dirty','dirty'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('disguised','disguising','disguised','disguises','disguise'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('ditched','ditching','ditched','ditches','ditch'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('doomed','dooming','doomed','dooms','doom'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('drained','draining','drained','drains','drain'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('dreamed','dreaming','dreamed','dream','dream'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('dressed','dressing','dressed','dresses','dress'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('drunk','drinking','drank','drinks','drink'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('dripped','dripping','dripped','drips','drip'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('drooled','drooling','drooled','drools','drool'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('drowned','drowning','drowned','drowns','drown'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('dried','drying','dried','dries','dry'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('dumped','dumping','dumped','dump','dump'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('dyed','dying','dyed','dyes','dye'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('eaten','eating','ate','eats','eat'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('engraved','engraving','engraved','engraves','engrave'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('entranced','entrancing','entranced','entrances','entrance'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('entrenched','entrenching','entrenched','entrenches','entrench'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('entwined','entwining','entwined','entwines','entwine'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('executed','executing','executed','executes','execute'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('faced','facing','faced','faces','face'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('fallen','falling','fell','falls','fall'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('fattened','fattening','fattened','fattens','fatten'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('fathered','fathering','fathered','fathers','father'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('feared','fearing','feared','fears','fear'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('feasted','feasting','feasted','feasts','feast'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('found','finding','found','finds','find'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('fired','firing','fired','fire','fire'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('fished','fishing','fished','fishes','fish'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('flamed','flaming','flamed','flames','flame'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('flanked','flanking','flanked','flanks','flank'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('fled','fleeing','fled','flees','flee'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('flung','flinging','flung','flings','fling'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('flooded','flooding','flooded','floods','flood'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('flowered','flowering','flowered','flowers','flower'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('fluted','fluting','fluted','flutes','flute'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('flew','flying','flew','flies','fly'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('focused','focusing','focused','focuses','focus'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('fogged','fogging','fogged','fogs','fog'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('fooled','fooling','fooled','fools','fool'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('forked','forking','forked','forks','fork'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('fortified','fortifying','fortified','fortifies','fortify'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('founded','founding','founded','founds','found'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('fragmented','fragmenting','fragmented','fragments','fragment'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('framed','framing','framed','frames','frame'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('frayed','fraying','frayed','frays','fray'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('freed','freeing','freed','frees','free'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('frenzied','frenzying','frenzied','frenzies','frenzy'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('frozen','freezing','froze','freezes','freeze'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('gamed','gaming','gamed','games','game'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('garnished','garnishing','garnished','garnishes','garnish'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('gazed','gazing','gazed','gazes','gaze'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('geared','gearing','geared','gears','gear'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('gifted','gifting','gifted','gifts','gift'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('glazed','glazing','glazed','glazes','glaze'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('glided','gliding','glided','glides','glide'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('glimmered','glimmering','glimmered','glimmers','glimmer'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('glistened','glistening','glistened','glistens','glisten'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('glossed','glossing','glossed','glosses','gloss'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('gored','goring','gored','gores','gore'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('gorged','gorging','gorged','gorges','gorge'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('greased','greasing','greased','greases','grease'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('greeded','greeding','greeded','greeds','greed'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('grilled','grilling','grilled','grills','grill'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('ground','grinding','ground','grinds','grind'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('gripped','gripping','gripped','grips','grip'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('gripped','gripping','gripped','grips','grip'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('grizzled','grizzling','grizzled','grizzles','grizzle'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('grown','growing','grew','grows','grow'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('growled','growling','growled','growls','growl'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('grubbed','grubbing','grubbed','grubs','grub'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('guarded','guarding','guarded','grguardsubs','guard'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('gutted','gutting','gutted','guts','gut'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('haggled','haggling','haggled','haggles','haggle'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('hammered','hammering','hammered','hammers','hammer'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('handed','handing','handed','hands','hand'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('harvested','harvesting','harvested','harvests','harvest'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('hatcheted','hatcheting','hatcheted','hatchets','hatchet'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('hated','hating','hated','hates','hate'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('haunted','haunting','haunted','haunts','haunt'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('hawked','hawking','hawked','hawks','hawk'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('headed','heading','headed','heads','head'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('hexed','hexing','hexed','hexes','hex'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('hidden','hiding','hid','hides','hide'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('hobbled','hobbling','hobbled','hobbles','hobble'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('hogged','hoggin','hogged','hogs','hog'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('hoisted','hoisting','hoisted','hoists','hoist'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('holed','holing','holed','holes','hole'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('homed','homing','homed','homes','home'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('honeyed','honeying','honeyed','honeys','honey'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('hopped','hopping','hopped','hops','hop'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('hounded','hounding','hounded','hounds','hound'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('howled','howling','howled','howls','howl'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('hugged','huggin','hugged','hugs','hug'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('hummed','humming','hummed','hums','hum'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('hungered','hungering','hungered','hungers','hunger'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('hustled','hustleing','hustled','hustles','hustle'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('iced','icing','iced','ices','ice'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('idled','idling','idled','idles','idle'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('idoled','idoling','idoled','idols','idol'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('idolized','idolizing','idolized','idolizes','idolize'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('imprisoned','imprisoning','imprisoned','imprisons','imprison'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('impured','impuring','impured','impures','impure'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('incensed','incensing','incensed','incenses','incense'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('incested','incesting','incested','incests','incest'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('inched','inching','inched','inches','inch'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('inked','inking','inked','inks','ink'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('ironed','ironing','ironed','irons','iron'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('itched','itching','itched','itches','itch'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('jested','jesting','jested','jests','jest'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('joked','joking','joked','jokes','joke'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('judged','judging','judged','judges','judge'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('juggled','juggling','juggled','juggles','juggle'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('juiced','juicing','juiced','juices','juice'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('jumped','jumping','jumped','jumps','jump'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('justified','justifying','justified','justifies','justify'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('kept','keeping','kept','keeps','keep'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('kicked','kicking','kicked','kicks','kick'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('killed','killing','killed','kills','kill'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('kissed','kissing','kissed','kisses','kiss'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('knead','kneading','kneaded','kneads','knead'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('knifed','knifing','knifed','knifes','knife'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('knighted','knighting','knighted','knights','knight'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('knitted','knitting','knit','knits','knit'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('knotted','knotting','knotted','knots','knot'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('laced','lacing','laced','laces','lace'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('lasted','lasting','lasted','lasts','last'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('led','leading','led','leads','lead'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('leaked','leaking','leaked','leaks','leak'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('leeched','leeching','leeched','leeches','leech'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('lied','lieing','lied','lies','lie'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('lit','lighting','lit','lights','light'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('lived','living','lived','lives','live'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('listened','listening','listened','listens','listen'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('loaned','loaning','loaned','loans','loan'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('locked','locking','locked','locks','lock'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('looted','looting','looted','loots','loot'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('lost','losing','lost','loses','lose'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('loved','loving','loved','loves','love'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('lowered','lowering','lowered','lowers','lower'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('lurched','lurching','lurched','lurches','lurch'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('lurked','lurking','lurked','lurks','lurk'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('mangled','mangling','mangled','mangles','mangle'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('martyred','martyring','martyred','martyrs','martyr'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('mastered','mastering','mastered','masters','master'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('meditated','meditating','meditated','meditates','meditate'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('menaced','menacing','menaced','menaces','menace'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('messed','messing','messed','messes','mess'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('minced','mincing','minced','minces','mince'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('minded','minding','minded','minds','mind'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('mined','mining','mined','mines','mine'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('mirrored','mirroring','mirrored','mirrors','mirror'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('misted','misting','misted','mists','mist'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('molded','molding','molded','molds','mold'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('murdered','murdering','murdered','murders','murder'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('mushed','mushing','mushed','mushes','mush'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('negated','negating','negated','negates','negate'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('nested','nesting','nested','nests','nest'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('nestled','nestling','nestled','nestles','nestle'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('netted','netting','netted','nets','net'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('nibbled','nibbling','nibbled','nibbles','nibble'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('nurtured','nurturing','nurtured','nurtures','nurture'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('opened','opening','opened','opens','open'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('packed','packing','packed','packs','pack'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('padded','pading','padded','pads','pad'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('painted','painting','painted','paints','paint'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('pandered','pandering','pandered','panders','pander'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('panted','panting','panted','pant','pant'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('planted','planting','planted','plants','plant'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('plotted','plotting','plotted','plots','plot'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('pocketed','pocketing','pocketed','pockets','pocket'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('poisoned','poisoning','poisoned','poisons','poison'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('powered','powering','powered','powers','power'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('pranked','pranking','pranked','pranks','prank'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('primed','priming','primed','primes','prime'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('profited','profiting','profited','profits','profit'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('prowled','prowling','prowled','prowls','prowl'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('puked','puking','puked','pukes','puke'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('pulled','pulling','pulled','pulls','pull'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('punched','punching','punched','punches','punch'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('pushed','pushing','pushed','pushes','push'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('quacked','quacking','quacked','quacks','quack'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('quaked','quaking','quaked','quakes','quake'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('quickened','quickening','quickened','quickens','quick'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('raced','racing','raced','races','race'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('rained','raining','rained','rains','rain'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('raked','raking','raked','rakes','rake'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('rammed','ramming','rammed','rams','ram'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('rampaged','rampaging','rampaged','rampages','rampage'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('ransacked','ransacking','ransacked','ransacks','ransack'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('ravaged','ravaging','ravaged','ravages','ravage'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('reigned','reigning','reigned','reigns','reign'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('reined','reining','reined','reins','rein'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('rung','ringing','rang','rings','ring'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('ripped','ripping','ripped','rips','rip'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('risen','rising','rose','rises','rise'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('romanced','romancing','romanced','romances','romance'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('ruined','ruining','ruined','ruins','ruin'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('ruled','ruling','ruled','rules','rule'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('sawn','sawing','sawed','saws','saw'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('scalded','scalding','scalded','scalds','scald'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('scarred','scarring','scarred','scars','scar'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('scolded','scolding','scolded','scolds','scold'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('screamed','screaming','screamed','screams','scream'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('seduced','seducing','seduced','seduces','seduce'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('seen','seeing','saw','sees','see'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('seized','seizing','seized','seizes','seize'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('served','serving','served','serves','serve'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('severed','severing','severed','severs','sever'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('sheared','shearing','sheared','shears','shear'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('sheltered','sheltering','sheltered','shelters','shelter'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('shielded','shielding','shielded','shields','shield'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('shimmered','shimmering','shimmered','shimmers','shimmer'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('shot','shooting','shot','shoots','shoot'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('shown','showing','showed','shows','show'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('showered','showering','showered','showers','shower'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('shredded','shredding','shredded','shreds','shred'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('shrieked','shrieking','shrieked','shrieks','shriek'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('shut','shutting','shut','shuts','shut'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('sickened','sickening','sickened','sickens','sicken'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('sieged','sieging','sieged','sieges','siege'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('silenced','silencing','silenced','silences','silence'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('sung','singing','sang','sings','sing'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('skirted','skirting','skirted','skirts','skirt'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('skulked','skulking','skulked','skulks','skulk'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('slaughtered','slaughtering','slaughtered','slaughters','slaughter'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('enslaved','enslaving','enslaved','enslaves','enslave'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('slain','slaying','slew','slays','slay'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('slimmed','slimming','slimmed','slims','slim'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('slunk','slinking','slunk','slinks','slink'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('slit','sliting','slit','slits','slit'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('slithered','slithering','slithered','slithers','slither'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('smashed','smashing','smashed','smashes','smash'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('smiled','smiling','smiled','smiles','smile'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('smoked','smoking','smoked','smokes','smoke'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('smoothed','smoothing','smoothed','smooths','smooth'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('smouldered','smouldering','smouldered','smoulders','smoulder'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('snacked','snacking','snacked','snacks','snack'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('snickered','snickering','snickered','snickers','snicker'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('snuggled','snuggling','snuggled','snuggles','snuggle'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('soothed','soothing','soothed','soothes','soothe'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('sounded','sounding','sounded','sounds','sound'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('spewed','spewing','spewed','spews','spew'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('spun','spinning','spun','spins','spin'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('spoiled','spoiling','spoiled','spoils','spoil'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('spooned','spooning','spooned','spoons','spoon'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('sprung','springing','sprang','springs','spring'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('spied','spying','spied','spies','spy'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('squirmed','squirming','squirmed','squirms','squirm'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('stabbed','stabbing','stabbed','stabs','stab'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('stalked','stalking','stalked','stalks','stalk'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('stood','standing','stood','stands','stand'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('starved','starving','starved','starves','starve'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('stolen','stealing','stole','steals','steal'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('stuck','sticking','stuck','sticks','stick'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('stoned','stoning','stoned','stones','stone'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('stormed','storming','stormed','storms','storm'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('strapped','strapping','strapped','straps','strap'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('strayed','straying','strayed','strays','stray'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('strengthened','strengthening','strengthened','strengthens','strengthen'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('stretched','stretching','stretched','stretches','stretch'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('stricken','striking','struck','strikes','strike'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('stroked','stroking','stroked','strokes','stroke'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('stuttered','stuttering','stuttered','stutters','stutter'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('styled','styling','styled','styles','style'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('sucked','sucking','sucked','sucks','suck'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('suffered','suffering','suffered','suffers','suffer'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('sundered','sundering','sundered','sunders','sunder'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('surprised','surprising','surprised','surprises','surprise'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('swamped','swamping','swamped','swamps','swamp'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('sweat','sweating','sweat','sweats','sweat'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('swam','swimming','swam','swims','swim'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('taken','taking','took','takes','take'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('tarnished','tarnishing','tarnished','tarnishes','tarnish'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('told','telling','told','tells','tell'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('torn','tearing','torn','tears','tear'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('terrified','terrifying','terrified','terrifies','terrify'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('terrorized','terrorizing','terrorized','terrorizes','terrorize'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('thrown','throwing','threw','throws','throw'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('thundered','thundering','thundered','thunders','thunder'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('ticked','ticking','ticked','ticks','tick'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('tightened','tightenening','tightened','tightens','tighten'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('timed','timing','timed','times','time'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('tormented','tormenting','tormented','torments','torment'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('touched','touching','touched','touches','touch'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('towered','towering','towered','towers','tower'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('trailed','trailing','trailed','trails','trail'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('trapped','trapping','trapped','traps','trap'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('treasured','treasuring','treasured','treasures','treasure'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('treated','treating','treated','treats','treat'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('tricked','tricking','tricked','tricks','trick'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('trimmed','trimming','trimmed','trims','trim'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('troubled','troubling','troubled','troubles','trouble'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('tugged','tugging','tugged','tugs','tug'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('tumbled','tumbling','tumbled','tumbles','tumble'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('tweeted','tweeting','tweeted','tweets','tweet'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('twisted','twisting','twisted','twists','twist'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('vandalized','vandalizing','vandalized','vandalizes','vandalize'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('violated','violating','violated','violates','violate'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('voiced','voicing','voiced','voices','voice'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('voided','voiding','voided','voids','void'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('wailed','wailing','wailed','wails','wail'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('wandered','wandering','wandered','wanders','wander'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('wasted','wasting','wasted','wastes','waste'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('watched','watching','watched','watches','watch'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('waved','waving','waved','waves','wave'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('worn','wearing','wore','wears','wear'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('weaved','weaving','weaved','weaves','weave'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('weeded','weeding','weeded','weeds','weed'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('weighed','weighing','weighed','weighs','weigh'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('wheeled','wheeling','wheeled','wheels','wheel'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('whipped','whipping','whipped','whips','whip'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('whisked','whisking','whisked','whisks','whisk'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('whispered','whispering','whispered','whispers','whisper'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('willed','willing','willed','wills','will'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('wondered','wondering','wondered','wonders','wonder'); INSERT INTO "Words_Verb" ("PastParticiple","PresentParticiple","SimplePast","SimplePresent","Word") VALUES ('worked','working','worked','works','work'); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('zero',0); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('one',1); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('two',2); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('three',3); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('four',4); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('five',5); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('six',6); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('seven',7); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('eight',8); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('nine',9); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('ten',10); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('eleven',11); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('dwelve',12); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('thirteen',13); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('fourteen',14); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('fifteen',15); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('sixteen',16); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('seventeen',17); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('eighteen',18); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('nineteen',19); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('twenty',20); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('thirty',30); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('fourty',40); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('fifty',50); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('sixty',60); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('seventy',70); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('eighty',80); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('ninety',90); INSERT INTO "Words_Numbers" ("Word","Number") VALUES ('one hundred',100); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('aces','ace'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('acts','act'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('adventures','adventure'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('ages','age'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('ales','ale'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('apples','apple'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('ancients','ancient'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('angels','angel'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('angers','anger'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('animals','animal'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('arms','arm'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('armors','armor'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('arrows','arrow'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('artifacts','artifact'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('ashes','ash'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('auras','aura'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('axes','axe'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('babies','baby'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('backs','back'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bakers','baker'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('baldnesses','baldness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('balls','ball'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('banes','bane'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bars','bar'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('barbs','barb'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bastards','bastard'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('baths','bath'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('battles','battle'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('beaks','beak'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('beasts','beast'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bears','bear'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('beds','bed'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bee','bee'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('beers','beer'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('beetles','beetle'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('beguilers','beguiler'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('beheadings','beheading'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('belches','belch'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('berries','berry'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('biles','bile'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bins','bin'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('birds','bird'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bitches','bitch'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('blacknessess','blackness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('blades','blade'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('blazes','blaze'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('blindnesses','blindness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('blisters','blister'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bloats','bloat'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('blood','blood'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bloodinesses','bloodiness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('blossoms','blossom'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('boars','boar'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('boats','boat'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bodices','bodice'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bogs','bog'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('boils','boil'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('boldnesses','boldness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bolts','bolt'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bones','bone'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('books','book'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('boots','boot'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bows','bow'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('brains','brain'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('breaches','breach'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('breeches','breeches'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('breads','bread'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('breaks','break'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('breakfasts','breakfast'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('breaths','breath'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('breeds','breed'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('brews','brew'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('brides','bride'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bridles','bridle'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('brightnesses','brightness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bristles','bristle'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('brilliances','brilliance'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('brims','brim'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('brothers','brother'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('brunches','brunch'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bucks','buck'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('buckles','buckle'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('buds','bud'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bunches','bunch'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('burdens','burden'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('burns','burn'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('burials','burial'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bushes','bush'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('bushels','bushel'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('busts','bust'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('businesses','business'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('busynesses','busyness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('butters','butter'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('butterflies','butterfly'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('buttons','button'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('buzzards','buzzard'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('cackles','cackle'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('cages','cage'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('cakes','cake'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('calls','call'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('camps','camp'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('cancers','cancer'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('candles','candle'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('candies','candy'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('canyons','canyon'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('carnages','carnage'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('caskets','casket'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('castles','castle'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('cats','cat'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('caves','cave'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('cells','cell'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('cellars','cellar'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('chains','chain'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('chants','chant'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('chaoses','chaos'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('chambers','chamber'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('children','child'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('chills','chill'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('chips','chip'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('chokers','choker'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('cinders','cinder'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('clams','clam'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('clasps','clasp'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('claws','claw'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('clears','clear'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('clearings','clearing'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('clefts','cleft'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('cloaks','cloak'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('clods','clod'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('cloisters','cloister'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('closets','closet'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('clubs','club'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('clusters','cluster'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('clutter','clutter'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('cobras','cobra'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('coils','coil'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('coldnesses','coldness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('colors','color'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('comets','comet'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('cooks','cook'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('covers','cover'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('cottons','cotton'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('couples','couple'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('crabs','crab'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('jumps','jump'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('crazes','craze'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('crazinesses','craziness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('creams','cream'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('creeks','creek'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('creeps','creep'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('creepinesses','creepiness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('crescents','crescent'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('crosses','cross'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('crows','crow'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('crowns','crown'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('crotches','crotch'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('crucifixions','crucifixion'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('crypts','crypt'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('crystals','crystal'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('cudgels','cudgel'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('cups','cup'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('curses','curse'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('cuts','cut'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('cysts','cyst'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('dances','dance'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('danknesses','dankness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('daggers','dagger'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('darknesses','darkness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('dates','date'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('damages','damage'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('dawns','dawn'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('days','day'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('dead','dead'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('deaths','death'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('decays','decay'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('depths','deep'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('deer','deer'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('demons','demon'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('desecration','desecration'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('deserts','desert'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('desertednesses','desertedness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('desserts','dessert'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('despairs','despair'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('destructions','destruction'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('devils','devil'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('diamonds','diamond'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('dinners','dinner'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('dirts','dirt'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('disguises','disguise'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('ditches','ditch'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('dogs','dog'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('domains','domain'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('domesciles','domescile'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('donkeys','donkey'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('dooms','doom'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('doors','door'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('dragons','dragon'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('drains','drain'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('dreams','dream'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('dresses','dress'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('drinks','drink'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('drips','drip'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('drools','drool'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('dumps','dump'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('dumplings','dumpling'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('dungs','dung'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('dungeons','dungeon'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('dusks','dusk'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('dusts','dust'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('duties','duty'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('dyes','dye'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('eagles','eagle'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('ears','ear'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('earths','earth'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('eels','eel'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('eerienesses','eerieness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('eggs','egg'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('elders','elder'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('entrances','entrance'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('entrails','entrails'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('entwinements','entwinement'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('evils','evil'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('executions','execution'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('eyes','eye'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('faces','face'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('falls','fall'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('falsehoods','falsehood'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('famines','famine'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fangs','fang'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fats','fat'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fatalities','fatality'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fathers','father'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fear','fear'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('feasts','feast'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fiends','fiend'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fiercenesses','fierceness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('filths','filth'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fins','fin'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fingers','finger'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fires','fire'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fish','fish'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fists','fist'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('flames','flame'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('flanks','flank'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fleas','flea'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fleshes','flesh'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('floods','flood'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('flowers','flower'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('flutes','flute'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('flies','fly'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('focuses','focus'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fogs','fog'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fools','fool'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('feet','foot'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('forests','forest'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fork','fork'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fortifications','fortification'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fortresses','fortress'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('foundations','foundation'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fragments','fragment'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('frames','frame'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('freedoms','freedom'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('frenzies','frenzy'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('frills','frill'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('frogs','frog'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fruits','fruit'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('fungi','fungus'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('furs','fur'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('games','game'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('garlics','garlic'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('garnishes','garnish'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('gazes','gaze'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('gears','gear'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('gerbils','gerbil'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('ghosts','ghost'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('ghouls','ghoul'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('gifts','gift'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('gills','gill'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('glands','gland'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('glazes','glaze'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('glimmers','glimmer'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('glosses','gloss'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('gloves','glove'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('gluttons','glutton'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('goats','goat'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('gods','god'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('gold','gold'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('geese','goose'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('gore','gore'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('gorges','gorge'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('grains','grain'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('grandeurs','grandeur'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('grapes','grape'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('grasses','grass'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('graves','grave'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('greases','grease'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('greatnesses','greatness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('greed','greed'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('griffons','griffon'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('grips','grip'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('gristles','gristle'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('grizzles','grizzle'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('groves','grove'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('growths','growth'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('growls','growl'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('grubs','grub'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('guards','guard'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('guiles','guile'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('guises','guise'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('guts','gut'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hags','hag'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hairs','hair'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hammers','hammer'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hands','hand'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hares','hare'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('harvests','harvest'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hatchets','hatchet'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hates','hate'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('haunts','haunt'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hawks','hawk'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hays','hay'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('heads','head'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hearts','heart'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('heartlessnesses','heartlessness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('heartfulnesses','heartfulness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hearths','hearth'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hedges','hedge'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hells','hell'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('helms','helm'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('heroes','hero'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hexes','hex'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hides','hide'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hideousnesses','hideousness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('highnesses','highness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hills','hill'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hips','hip'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hogs','hog'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('holes','hole'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('holinesses','holiness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('homes','home'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('honeys','honey'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hoods','hood'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hooves','hoof'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hops','hop'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('horns','horn'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('horses','horse'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hounds','hound'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('howls','howl'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hugs','hug'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hungers','hunger'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('hungrinesses','hungriness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('ices','ice'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('idlenessess','idleness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('idols','idol'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('idoltries','idoltry'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('illnesses','illness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('impurities','impurity'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('incenses','incense'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('incests','incest'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('inches','inch'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('inks','ink'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('inklings','inkling'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('inns','inn'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('insanities','insanity'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('invisibilities','invisibility'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('irons','iron'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('ironies','irony'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('itches','itch'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('ivory','ivory'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('ivy','ivy'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('jackals','jackal'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('jaws','jaw'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('jests','jest'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('jokes','joke'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('judges','judge'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('juices','juice'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('jungles','jungle'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('justices','justice'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('keeps','keep'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('kegs','keg'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('keys','key'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('kicks','kick'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('kills','kill'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('kindnesses','kindness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('kisses','kiss'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('kings','king'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('kingdoms','kingdom'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('knives','knife'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('knights','knight'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('knots','knot'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('laces','lace'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lakes','lake'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lards','lard'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('larvae','larva'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('laws','law'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lazinesses','laziness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lead','lead'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('leaves','leaf'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('leak','leak'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('leeches','leech'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('legends','legend'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lenses','lens'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('leopards','leopard'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('leper','leper'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('leprosies','leprosy'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('letters','letter'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lies','lie'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lights','light'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lightnings','lightning'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lives','life'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('limbs','limb'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lips','lip'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('livers','liver'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lizards','lizard'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('loans','loan'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lobsters','lobster'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('locks','lock'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lengths','length'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('loots','loot'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lords','lord'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lice','louse'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('loves','love'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lownesses','lowness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lunches','lunch'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lungs','lung'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lushnesses','lushness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lusts','lust'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lutes','lute'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('lyrics','lyric'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('maggots','maggot'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('magics','magic'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('men','man'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('marshes','marsh'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('martyrs','martyr'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('masters','master'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('meads','mead'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('meadows','meadow'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('meals','meal'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('meats','meat'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('meditations','meditation'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('menaces','menace'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('messes','mess'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('metals','metal'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('midnights','midnight'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('mights','might'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('miles','mile'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('minds','mind'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('mine','mine'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('minions','minion'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('mirror','mirror'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('miseries','misery'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('mists','mist'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('molds','mold'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('moles','mole'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('monkeys','monkey'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('moons','moon'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('moths','moth'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('mothers','mother'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('mice','mouse'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('mouths','mouth'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('muds','mud'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('muffins','muffin'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('mules','mule'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('murders','murder'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('mushes','mush'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('mushrooms','mushroom'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('musics','music'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('mysteries','mystery'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('myths','myth'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('nails','nail'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('natures','nature'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('nests','nest'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('nets','net'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('newts','newt'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('nights','night'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('nightmares','nightmare'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('nobles','noble'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('noses','nose'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('numbers','number'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('nuts','nut'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('oaks','oak'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('oars','oar'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('oats','oat'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('oblivions','oblivion'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('oceans','ocean'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('omens','omen'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('ones','one'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('onions','onion'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('oozes','ooze'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('orbs','orb'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('owls','owl'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('oxen','ox'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('packs','pack'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('pads','pad'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('pages','page'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('pains','pain'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('paints','paint'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('palenesses','paleness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('palms','palm'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('panthers','panther'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('pants','pants'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('papers','paper'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('peaces','peace'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('peaches','peach'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('peppers','pepper'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('pigs','pig'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('pisses','piss'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('pits','pit'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('pitches','pitch'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('plagues','plague'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('plants','plant'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('plots','plot'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('pockets','pocket'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('poisons','poison'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('portals','portal'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('powers','power'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('pranks','prank'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('prides','pride'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('priests','priest'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('prime','prime'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('prisons','prison'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('profanities','profanity'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('profits','profit'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('prophecies','prophecy'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('pukes','puke'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('pulls','pull'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('pulleys','pulley'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('pulps','pulp'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('pusses','pus'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('pushes','push'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('putrescences','putrescence'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('quacks','quack'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('quakes','quake'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('quarks','quark'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('queens','queen'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('quicknesses','quickness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('quills','quill'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rabbits','rabbit'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rabbles','rabble'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('races','race'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('racks','rack'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rags','rag'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rages','rage'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rains','rain'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rakes','rake'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rams','ram'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rampages','rampage'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rats','rat'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('raven','raven'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rawnesses','rawness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('razors','razor'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rednesses','redness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('reigns','reign'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('reins','rein'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('riders','rider'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rims','rim'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rings','ring'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rips','rip'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('ripenesses','ripeness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rites','rite'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rivers','river'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rocks','rock'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rogues','rogue'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('romances','romance'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rooms','room'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('roots','root'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('roses','rose'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rots','rot'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('roughnesses','roughness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('royalties','royalty'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('ruins','ruin'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rumors','rumor'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('rusts','rust'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sabres','sabre'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sacks','sack'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('saints','saint'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('salts','salt'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('salves','salve'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('saps','sap'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('satins','satin'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('savages','savage'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('savageries','savagery'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('saviors','savior'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('saws','saw'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('scabs','scab'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('scalds','scald'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('scars','scar'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('scorpions','scorpion'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('scourges','scourge'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('screams','scream'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('scums','scum'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('seas','sea'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('seals','seal'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('seams','seam'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('seasons','season'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('secrets','secret'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('seductions','seduction'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('seeds','seed'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('seizures','seizure'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('serpents','serpent'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('servants','servant'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sewers','sewer'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('shadows','shadow'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('shafts','shaft'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('shanks','shank'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sharks','shark'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sheens','sheen'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('shells','shell'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('shelters','shelter'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('shields','shield'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('shimmers','shimmer'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('ships','ship'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('shows','show'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('showers','shower'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('shreds','shred'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('shrieks','shriek'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sick','sick'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sicknessess','sickness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sieges','siege'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('silences','silence'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('silks','silk'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('silkinesses','silkiness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('silt','silt'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('silvers','silver'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sins','sin'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sinews','sinew'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('songs','song'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sisters','sister'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('skirts','skirt'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('skulls','skull'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('skulks','skulk'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('skunks','skunk'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('skies','sky'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('slaughters','slaughter'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('slaves','slave'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('slain','slain'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('slimes','slime'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('slits','slit'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('slivers','sliver'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sloths','sloth'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('slugs','slug'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('smashes','smash'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('smiles','smile'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('smiths','smith'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('smokes','smoke'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('smoothnesses','smoothness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('snacks','snack'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('snakes','snake'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sneers','sneer'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('snots','snot'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('soils','soil'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('soldiers','soldier'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('soots','soot'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sorrow','sorrow'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('souls','soul'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sound','sound'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('spasms','spasm'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('spawns','spawn'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('spears','spear'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('spells','spell'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('spews','spew'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('spices','spice'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('spiders','spider'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('spikes','spike'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('spines','spine'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('spirits','spirit'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('spits','spit'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('spoils','spoil'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('spoons','spoon'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('springs','spring'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('spies','spy'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('squids','squid'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('staves','staff'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('stands','stand'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('stars','star'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('steeds','steed'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('starvations','starvation'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('steels','steel'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('stenches','stench'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sticks','stick'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('stone','stone'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('storms','storm'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('strangenesses','strangeness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('strangers','stranger'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('straps','strap'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('straws','straw'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('strays','stray'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('strengths','strength'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('stretches','stretch'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('strikes','strike'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('strokes','stroke'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('stunts','stunt'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('stupidities','stupidity'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('styles','style'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('subordinate','subordinate'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sufferings','suffering'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('summers','summer'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('suppers','supper'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('surprises','surprise'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('swamps','swamp'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sweats','sweat'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sweets','sweet'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('sweetnesses','sweetness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('swiftnesses','swiftness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('swines','swine'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('swords','sword'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('syrups','syrup'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('tails','tail'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('talons','talon'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('tars','tar'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('tarnish','tarnish'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('tempests','tempest'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('tears','tear'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('terrors','terror'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('thieves','thief'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('thirsts','thirst'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('thorns','thorn'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('thralls','thrall'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('throats','throat'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('thrones','throne'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('thunders','thunder'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('ticks','tick'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('tightnesses','tightness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('time','time'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('toads','toad'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('toes','toe'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('tombs','tomb'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('tomes','tome'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('tongues','tongue'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('teeth','tooth'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('torments','torment'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('touches','touch'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('tours','tour'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('towers','tower'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('trails','trail'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('trances','trance'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('traps','trap'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('trashes','trash'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('treasures','treasure'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('treats','treat'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('treaties','treaty'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('trenches','trench'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('tribes','tribe'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('tricks','trick'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('trickeries','trickery'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('trims','trim'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('troubles','trouble'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('tulips','tulip'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('tumors','tumor'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('turmoils','turmoil'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('tusks','tusk'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('twilights','twilight'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('twines','twine'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('twists','twist'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('uglinesses','ugliness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('uncles','uncle'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('urns','urn'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('vandal','vandal'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('vegetables','vegetable'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('vegetations','vegetation'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('velvets','velvet'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('venoms','venom'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('vermins','vermin'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('vilenesses','vileness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('violences','violence'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('vipers','viper'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('voices','voice'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('voids','void'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('volcanoes','volcano'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('vomits','vomit'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('vultures','vulture'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('wails','wail'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('wars','war'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('warriors','warrior'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('wasps','wasp'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('wastes','waste'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('watches','watch'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('watchfulnesses','watchfulness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('waves','wave'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('weasels','weasel'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('weaves','weave'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('weeds','weed'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('weights','weight'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('wheats','wheat'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('wheels','wheel'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('whips','whip'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('whiskers','whisker'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('whiskies','whisky'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('whispers','whisper'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('wickednesses','wickedness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('wildnesses','wildness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('wildernesses','wilderness'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('wills','will'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('wings','wing'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('winters','winter'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('wisps','wisp'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('witches','witch'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('wonders','wonder'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('woods','wood'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('works','work'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('worms','worm'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('wraiths','wraith'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('wraths','wrath'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('wretches','wretch'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('yarns','yarn'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('years','year'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('youths','youth'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('zeals','zeal'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('zealots','zealot'); INSERT INTO "Words_Noun" ("Plural","Word") VALUES ('zephyrs','zephyr'); INSERT INTO "Words_Adjective" ("Word") VALUES ('ace'); INSERT INTO "Words_Adjective" ("Word") VALUES ('aging'); INSERT INTO "Words_Adjective" ("Word") VALUES ('ageless'); INSERT INTO "Words_Adjective" ("Word") VALUES ('alive'); INSERT INTO "Words_Adjective" ("Word") VALUES ('ancient'); INSERT INTO "Words_Adjective" ("Word") VALUES ('angelic'); INSERT INTO "Words_Adjective" ("Word") VALUES ('angery'); INSERT INTO "Words_Adjective" ("Word") VALUES ('animalistic'); INSERT INTO "Words_Adjective" ("Word") VALUES ('armored'); INSERT INTO "Words_Adjective" ("Word") VALUES ('artificial'); INSERT INTO "Words_Adjective" ("Word") VALUES ('ashen'); INSERT INTO "Words_Adjective" ("Word") VALUES ('bad'); INSERT INTO "Words_Adjective" ("Word") VALUES ('bald'); INSERT INTO "Words_Adjective" ("Word") VALUES ('barbed'); INSERT INTO "Words_Adjective" ("Word") VALUES ('beastly'); INSERT INTO "Words_Adjective" ("Word") VALUES ('beguiling'); INSERT INTO "Words_Adjective" ("Word") VALUES ('big'); INSERT INTO "Words_Adjective" ("Word") VALUES ('bitchy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('black'); INSERT INTO "Words_Adjective" ("Word") VALUES ('blazing'); INSERT INTO "Words_Adjective" ("Word") VALUES ('blind'); INSERT INTO "Words_Adjective" ("Word") VALUES ('blistering'); INSERT INTO "Words_Adjective" ("Word") VALUES ('bloated'); INSERT INTO "Words_Adjective" ("Word") VALUES ('bleeding'); INSERT INTO "Words_Adjective" ("Word") VALUES ('bloody'); INSERT INTO "Words_Adjective" ("Word") VALUES ('blossoming'); INSERT INTO "Words_Adjective" ("Word") VALUES ('blue'); INSERT INTO "Words_Adjective" ("Word") VALUES ('boiling'); INSERT INTO "Words_Adjective" ("Word") VALUES ('bold'); INSERT INTO "Words_Adjective" ("Word") VALUES ('bolted'); INSERT INTO "Words_Adjective" ("Word") VALUES ('boned'); INSERT INTO "Words_Adjective" ("Word") VALUES ('bothering'); INSERT INTO "Words_Adjective" ("Word") VALUES ('broken'); INSERT INTO "Words_Adjective" ("Word") VALUES ('bridled'); INSERT INTO "Words_Adjective" ("Word") VALUES ('bright'); INSERT INTO "Words_Adjective" ("Word") VALUES ('bristled'); INSERT INTO "Words_Adjective" ("Word") VALUES ('brilliant'); INSERT INTO "Words_Adjective" ("Word") VALUES ('broiled'); INSERT INTO "Words_Adjective" ("Word") VALUES ('buckled'); INSERT INTO "Words_Adjective" ("Word") VALUES ('bunched'); INSERT INTO "Words_Adjective" ("Word") VALUES ('burdened'); INSERT INTO "Words_Adjective" ("Word") VALUES ('burned'); INSERT INTO "Words_Adjective" ("Word") VALUES ('buried'); INSERT INTO "Words_Adjective" ("Word") VALUES ('busheled'); INSERT INTO "Words_Adjective" ("Word") VALUES ('busted'); INSERT INTO "Words_Adjective" ("Word") VALUES ('busy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('butchered'); INSERT INTO "Words_Adjective" ("Word") VALUES ('buttered'); INSERT INTO "Words_Adjective" ("Word") VALUES ('buttoned'); INSERT INTO "Words_Adjective" ("Word") VALUES ('caged'); INSERT INTO "Words_Adjective" ("Word") VALUES ('caked'); INSERT INTO "Words_Adjective" ("Word") VALUES ('cancerous'); INSERT INTO "Words_Adjective" ("Word") VALUES ('candlelit'); INSERT INTO "Words_Adjective" ("Word") VALUES ('candied'); INSERT INTO "Words_Adjective" ("Word") VALUES ('celled'); INSERT INTO "Words_Adjective" ("Word") VALUES ('chained'); INSERT INTO "Words_Adjective" ("Word") VALUES ('chaotic'); INSERT INTO "Words_Adjective" ("Word") VALUES ('chambered'); INSERT INTO "Words_Adjective" ("Word") VALUES ('charred'); INSERT INTO "Words_Adjective" ("Word") VALUES ('charmed'); INSERT INTO "Words_Adjective" ("Word") VALUES ('childlike'); INSERT INTO "Words_Adjective" ("Word") VALUES ('chilled'); INSERT INTO "Words_Adjective" ("Word") VALUES ('chipped'); INSERT INTO "Words_Adjective" ("Word") VALUES ('cinderous'); INSERT INTO "Words_Adjective" ("Word") VALUES ('clammy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('clasped'); INSERT INTO "Words_Adjective" ("Word") VALUES ('clawlike'); INSERT INTO "Words_Adjective" ("Word") VALUES ('cleared'); INSERT INTO "Words_Adjective" ("Word") VALUES ('clingy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('cloaked'); INSERT INTO "Words_Adjective" ("Word") VALUES ('cluttered'); INSERT INTO "Words_Adjective" ("Word") VALUES ('cobralike'); INSERT INTO "Words_Adjective" ("Word") VALUES ('coiled'); INSERT INTO "Words_Adjective" ("Word") VALUES ('cold'); INSERT INTO "Words_Adjective" ("Word") VALUES ('common'); INSERT INTO "Words_Adjective" ("Word") VALUES ('conquered'); INSERT INTO "Words_Adjective" ("Word") VALUES ('cooked'); INSERT INTO "Words_Adjective" ("Word") VALUES ('covered'); INSERT INTO "Words_Adjective" ("Word") VALUES ('coupled'); INSERT INTO "Words_Adjective" ("Word") VALUES ('crazed'); INSERT INTO "Words_Adjective" ("Word") VALUES ('crazy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('creamy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('creepy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('crescent-shaped'); INSERT INTO "Words_Adjective" ("Word") VALUES ('cross'); INSERT INTO "Words_Adjective" ("Word") VALUES ('crotchety'); INSERT INTO "Words_Adjective" ("Word") VALUES ('crystalline'); INSERT INTO "Words_Adjective" ("Word") VALUES ('dank'); INSERT INTO "Words_Adjective" ("Word") VALUES ('dark'); INSERT INTO "Words_Adjective" ("Word") VALUES ('dead'); INSERT INTO "Words_Adjective" ("Word") VALUES ('dear'); INSERT INTO "Words_Adjective" ("Word") VALUES ('deep'); INSERT INTO "Words_Adjective" ("Word") VALUES ('demonic'); INSERT INTO "Words_Adjective" ("Word") VALUES ('desert'); INSERT INTO "Words_Adjective" ("Word") VALUES ('diamond'); INSERT INTO "Words_Adjective" ("Word") VALUES ('dirty'); INSERT INTO "Words_Adjective" ("Word") VALUES ('domestic'); INSERT INTO "Words_Adjective" ("Word") VALUES ('doomed'); INSERT INTO "Words_Adjective" ("Word") VALUES ('dreamy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('dusty'); INSERT INTO "Words_Adjective" ("Word") VALUES ('dutifull'); INSERT INTO "Words_Adjective" ("Word") VALUES ('dyed'); INSERT INTO "Words_Adjective" ("Word") VALUES ('earthen'); INSERT INTO "Words_Adjective" ("Word") VALUES ('east'); INSERT INTO "Words_Adjective" ("Word") VALUES ('eerie'); INSERT INTO "Words_Adjective" ("Word") VALUES ('elder'); INSERT INTO "Words_Adjective" ("Word") VALUES ('eternal'); INSERT INTO "Words_Adjective" ("Word") VALUES ('everlasting'); INSERT INTO "Words_Adjective" ("Word") VALUES ('evil'); INSERT INTO "Words_Adjective" ("Word") VALUES ('false'); INSERT INTO "Words_Adjective" ("Word") VALUES ('fat'); INSERT INTO "Words_Adjective" ("Word") VALUES ('fatal'); INSERT INTO "Words_Adjective" ("Word") VALUES ('fetid'); INSERT INTO "Words_Adjective" ("Word") VALUES ('fiendish'); INSERT INTO "Words_Adjective" ("Word") VALUES ('fierce'); INSERT INTO "Words_Adjective" ("Word") VALUES ('filthy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('finned'); INSERT INTO "Words_Adjective" ("Word") VALUES ('fiery'); INSERT INTO "Words_Adjective" ("Word") VALUES ('first'); INSERT INTO "Words_Adjective" ("Word") VALUES ('fishy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('flaming'); INSERT INTO "Words_Adjective" ("Word") VALUES ('fleshy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('flowery'); INSERT INTO "Words_Adjective" ("Word") VALUES ('foggy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('foolish'); INSERT INTO "Words_Adjective" ("Word") VALUES ('fragile'); INSERT INTO "Words_Adjective" ("Word") VALUES ('free'); INSERT INTO "Words_Adjective" ("Word") VALUES ('frilly'); INSERT INTO "Words_Adjective" ("Word") VALUES ('froggy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('fruity'); INSERT INTO "Words_Adjective" ("Word") VALUES ('furry'); INSERT INTO "Words_Adjective" ("Word") VALUES ('gaunt'); INSERT INTO "Words_Adjective" ("Word") VALUES ('ghostly'); INSERT INTO "Words_Adjective" ("Word") VALUES ('ghoulish'); INSERT INTO "Words_Adjective" ("Word") VALUES ('gifted'); INSERT INTO "Words_Adjective" ("Word") VALUES ('gilled'); INSERT INTO "Words_Adjective" ("Word") VALUES ('gloved'); INSERT INTO "Words_Adjective" ("Word") VALUES ('gluttonous'); INSERT INTO "Words_Adjective" ("Word") VALUES ('godly'); INSERT INTO "Words_Adjective" ("Word") VALUES ('god-forsaken'); INSERT INTO "Words_Adjective" ("Word") VALUES ('gold'); INSERT INTO "Words_Adjective" ("Word") VALUES ('gory'); INSERT INTO "Words_Adjective" ("Word") VALUES ('grand'); INSERT INTO "Words_Adjective" ("Word") VALUES ('grave'); INSERT INTO "Words_Adjective" ("Word") VALUES ('greasy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('great'); INSERT INTO "Words_Adjective" ("Word") VALUES ('greedy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('green'); INSERT INTO "Words_Adjective" ("Word") VALUES ('grim'); INSERT INTO "Words_Adjective" ("Word") VALUES ('gristly'); INSERT INTO "Words_Adjective" ("Word") VALUES ('grizzly'); INSERT INTO "Words_Adjective" ("Word") VALUES ('grubby'); INSERT INTO "Words_Adjective" ("Word") VALUES ('guileful'); INSERT INTO "Words_Adjective" ("Word") VALUES ('hairy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('handy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('hateful'); INSERT INTO "Words_Adjective" ("Word") VALUES ('headless'); INSERT INTO "Words_Adjective" ("Word") VALUES ('hearty'); INSERT INTO "Words_Adjective" ("Word") VALUES ('heartless'); INSERT INTO "Words_Adjective" ("Word") VALUES ('heartful'); INSERT INTO "Words_Adjective" ("Word") VALUES ('hellish'); INSERT INTO "Words_Adjective" ("Word") VALUES ('helmed'); INSERT INTO "Words_Adjective" ("Word") VALUES ('heroic'); INSERT INTO "Words_Adjective" ("Word") VALUES ('hideous'); INSERT INTO "Words_Adjective" ("Word") VALUES ('high'); INSERT INTO "Words_Adjective" ("Word") VALUES ('hilly'); INSERT INTO "Words_Adjective" ("Word") VALUES ('hip'); INSERT INTO "Words_Adjective" ("Word") VALUES ('hobbly'); INSERT INTO "Words_Adjective" ("Word") VALUES ('hoggy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('holey'); INSERT INTO "Words_Adjective" ("Word") VALUES ('holy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('homey'); INSERT INTO "Words_Adjective" ("Word") VALUES ('hooded'); INSERT INTO "Words_Adjective" ("Word") VALUES ('hooved'); INSERT INTO "Words_Adjective" ("Word") VALUES ('hoppy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('horned'); INSERT INTO "Words_Adjective" ("Word") VALUES ('horny'); INSERT INTO "Words_Adjective" ("Word") VALUES ('hungry'); INSERT INTO "Words_Adjective" ("Word") VALUES ('icy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('idle'); INSERT INTO "Words_Adjective" ("Word") VALUES ('ill'); INSERT INTO "Words_Adjective" ("Word") VALUES ('impure'); INSERT INTO "Words_Adjective" ("Word") VALUES ('inky'); INSERT INTO "Words_Adjective" ("Word") VALUES ('insane'); INSERT INTO "Words_Adjective" ("Word") VALUES ('invisible'); INSERT INTO "Words_Adjective" ("Word") VALUES ('irony'); INSERT INTO "Words_Adjective" ("Word") VALUES ('ivory'); INSERT INTO "Words_Adjective" ("Word") VALUES ('jumpy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('just'); INSERT INTO "Words_Adjective" ("Word") VALUES ('kicking'); INSERT INTO "Words_Adjective" ("Word") VALUES ('kind'); INSERT INTO "Words_Adjective" ("Word") VALUES ('kingly'); INSERT INTO "Words_Adjective" ("Word") VALUES ('knit'); INSERT INTO "Words_Adjective" ("Word") VALUES ('lacy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('larval'); INSERT INTO "Words_Adjective" ("Word") VALUES ('last'); INSERT INTO "Words_Adjective" ("Word") VALUES ('lazy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('leafy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('leaky'); INSERT INTO "Words_Adjective" ("Word") VALUES ('lean'); INSERT INTO "Words_Adjective" ("Word") VALUES ('legendary'); INSERT INTO "Words_Adjective" ("Word") VALUES ('leperous'); INSERT INTO "Words_Adjective" ("Word") VALUES ('light'); INSERT INTO "Words_Adjective" ("Word") VALUES ('lone'); INSERT INTO "Words_Adjective" ("Word") VALUES ('long'); INSERT INTO "Words_Adjective" ("Word") VALUES ('lordly'); INSERT INTO "Words_Adjective" ("Word") VALUES ('lovely'); INSERT INTO "Words_Adjective" ("Word") VALUES ('low'); INSERT INTO "Words_Adjective" ("Word") VALUES ('lush'); INSERT INTO "Words_Adjective" ("Word") VALUES ('lustful'); INSERT INTO "Words_Adjective" ("Word") VALUES ('lyrical'); INSERT INTO "Words_Adjective" ("Word") VALUES ('magical'); INSERT INTO "Words_Adjective" ("Word") VALUES ('manly'); INSERT INTO "Words_Adjective" ("Word") VALUES ('mangy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('mellow'); INSERT INTO "Words_Adjective" ("Word") VALUES ('mighty'); INSERT INTO "Words_Adjective" ("Word") VALUES ('miserable'); INSERT INTO "Words_Adjective" ("Word") VALUES ('misty'); INSERT INTO "Words_Adjective" ("Word") VALUES ('moldy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('molten'); INSERT INTO "Words_Adjective" ("Word") VALUES ('mousy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('muddy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('mushy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('musical'); INSERT INTO "Words_Adjective" ("Word") VALUES ('mysterious'); INSERT INTO "Words_Adjective" ("Word") VALUES ('mythical'); INSERT INTO "Words_Adjective" ("Word") VALUES ('nasty'); INSERT INTO "Words_Adjective" ("Word") VALUES ('natural'); INSERT INTO "Words_Adjective" ("Word") VALUES ('negative'); INSERT INTO "Words_Adjective" ("Word") VALUES ('new'); INSERT INTO "Words_Adjective" ("Word") VALUES ('noble'); INSERT INTO "Words_Adjective" ("Word") VALUES ('north'); INSERT INTO "Words_Adjective" ("Word") VALUES ('null'); INSERT INTO "Words_Adjective" ("Word") VALUES ('oaken'); INSERT INTO "Words_Adjective" ("Word") VALUES ('oceanic'); INSERT INTO "Words_Adjective" ("Word") VALUES ('old'); INSERT INTO "Words_Adjective" ("Word") VALUES ('painful'); INSERT INTO "Words_Adjective" ("Word") VALUES ('pale'); INSERT INTO "Words_Adjective" ("Word") VALUES ('peaceful'); INSERT INTO "Words_Adjective" ("Word") VALUES ('poisonous'); INSERT INTO "Words_Adjective" ("Word") VALUES ('prime'); INSERT INTO "Words_Adjective" ("Word") VALUES ('primitive'); INSERT INTO "Words_Adjective" ("Word") VALUES ('profane'); INSERT INTO "Words_Adjective" ("Word") VALUES ('pulpy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('purple'); INSERT INTO "Words_Adjective" ("Word") VALUES ('putrid'); INSERT INTO "Words_Adjective" ("Word") VALUES ('quick'); INSERT INTO "Words_Adjective" ("Word") VALUES ('quirky'); INSERT INTO "Words_Adjective" ("Word") VALUES ('rainy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('random'); INSERT INTO "Words_Adjective" ("Word") VALUES ('raw'); INSERT INTO "Words_Adjective" ("Word") VALUES ('red'); INSERT INTO "Words_Adjective" ("Word") VALUES ('regal'); INSERT INTO "Words_Adjective" ("Word") VALUES ('ripper'); INSERT INTO "Words_Adjective" ("Word") VALUES ('ripe'); INSERT INTO "Words_Adjective" ("Word") VALUES ('romantic'); INSERT INTO "Words_Adjective" ("Word") VALUES ('roomy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('rosy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('rough'); INSERT INTO "Words_Adjective" ("Word") VALUES ('royal'); INSERT INTO "Words_Adjective" ("Word") VALUES ('rumored'); INSERT INTO "Words_Adjective" ("Word") VALUES ('rusty'); INSERT INTO "Words_Adjective" ("Word") VALUES ('salty'); INSERT INTO "Words_Adjective" ("Word") VALUES ('savage'); INSERT INTO "Words_Adjective" ("Word") VALUES ('scalding'); INSERT INTO "Words_Adjective" ("Word") VALUES ('scummy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('secretive'); INSERT INTO "Words_Adjective" ("Word") VALUES ('shimmery'); INSERT INTO "Words_Adjective" ("Word") VALUES ('silent'); INSERT INTO "Words_Adjective" ("Word") VALUES ('silken'); INSERT INTO "Words_Adjective" ("Word") VALUES ('silky'); INSERT INTO "Words_Adjective" ("Word") VALUES ('silty'); INSERT INTO "Words_Adjective" ("Word") VALUES ('silvery'); INSERT INTO "Words_Adjective" ("Word") VALUES ('sinful'); INSERT INTO "Words_Adjective" ("Word") VALUES ('slitted'); INSERT INTO "Words_Adjective" ("Word") VALUES ('smashing'); INSERT INTO "Words_Adjective" ("Word") VALUES ('smiley'); INSERT INTO "Words_Adjective" ("Word") VALUES ('smooth'); INSERT INTO "Words_Adjective" ("Word") VALUES ('sooty'); INSERT INTO "Words_Adjective" ("Word") VALUES ('soulful'); INSERT INTO "Words_Adjective" ("Word") VALUES ('south'); INSERT INTO "Words_Adjective" ("Word") VALUES ('spicy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('spidery'); INSERT INTO "Words_Adjective" ("Word") VALUES ('spiky'); INSERT INTO "Words_Adjective" ("Word") VALUES ('spirited'); INSERT INTO "Words_Adjective" ("Word") VALUES ('starry'); INSERT INTO "Words_Adjective" ("Word") VALUES ('stern'); INSERT INTO "Words_Adjective" ("Word") VALUES ('sticky'); INSERT INTO "Words_Adjective" ("Word") VALUES ('stormy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('strange'); INSERT INTO "Words_Adjective" ("Word") VALUES ('strapping'); INSERT INTO "Words_Adjective" ("Word") VALUES ('strong'); INSERT INTO "Words_Adjective" ("Word") VALUES ('stretchy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('stunted'); INSERT INTO "Words_Adjective" ("Word") VALUES ('stupid'); INSERT INTO "Words_Adjective" ("Word") VALUES ('stylish'); INSERT INTO "Words_Adjective" ("Word") VALUES ('subordinate'); INSERT INTO "Words_Adjective" ("Word") VALUES ('sucky'); INSERT INTO "Words_Adjective" ("Word") VALUES ('insufferable'); INSERT INTO "Words_Adjective" ("Word") VALUES ('sullen'); INSERT INTO "Words_Adjective" ("Word") VALUES ('swampy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('sweaty'); INSERT INTO "Words_Adjective" ("Word") VALUES ('sweet'); INSERT INTO "Words_Adjective" ("Word") VALUES ('swift'); INSERT INTO "Words_Adjective" ("Word") VALUES ('syrupy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('terrible'); INSERT INTO "Words_Adjective" ("Word") VALUES ('thunderous'); INSERT INTO "Words_Adjective" ("Word") VALUES ('tight'); INSERT INTO "Words_Adjective" ("Word") VALUES ('timey'); INSERT INTO "Words_Adjective" ("Word") VALUES ('toady'); INSERT INTO "Words_Adjective" ("Word") VALUES ('touchy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('trashy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('tricky'); INSERT INTO "Words_Adjective" ("Word") VALUES ('trim'); INSERT INTO "Words_Adjective" ("Word") VALUES ('ugly'); INSERT INTO "Words_Adjective" ("Word") VALUES ('ultimate'); INSERT INTO "Words_Adjective" ("Word") VALUES ('unholy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('unkempt'); INSERT INTO "Words_Adjective" ("Word") VALUES ('unseen'); INSERT INTO "Words_Adjective" ("Word") VALUES ('useless'); INSERT INTO "Words_Adjective" ("Word") VALUES ('velvety'); INSERT INTO "Words_Adjective" ("Word") VALUES ('venomous'); INSERT INTO "Words_Adjective" ("Word") VALUES ('vile'); INSERT INTO "Words_Adjective" ("Word") VALUES ('violence'); INSERT INTO "Words_Adjective" ("Word") VALUES ('violet'); INSERT INTO "Words_Adjective" ("Word") VALUES ('watchful'); INSERT INTO "Words_Adjective" ("Word") VALUES ('wavy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('weird'); INSERT INTO "Words_Adjective" ("Word") VALUES ('west'); INSERT INTO "Words_Adjective" ("Word") VALUES ('white'); INSERT INTO "Words_Adjective" ("Word") VALUES ('wicked'); INSERT INTO "Words_Adjective" ("Word") VALUES ('wild'); INSERT INTO "Words_Adjective" ("Word") VALUES ('willful'); INSERT INTO "Words_Adjective" ("Word") VALUES ('wispy'); INSERT INTO "Words_Adjective" ("Word") VALUES ('wonderous'); INSERT INTO "Words_Adjective" ("Word") VALUES ('wooden'); INSERT INTO "Words_Adjective" ("Word") VALUES ('wormlike'); INSERT INTO "Words_Adjective" ("Word") VALUES ('wrathful'); INSERT INTO "Words_Adjective" ("Word") VALUES ('wretched'); INSERT INTO "Words_Adjective" ("Word") VALUES ('yellow'); INSERT INTO "Words_Adjective" ("Word") VALUES ('young'); INSERT INTO "Words_Adjective" ("Word") VALUES ('youthful'); INSERT INTO "Words_Adjective" ("Word") VALUES ('zealous'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('acers','acer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('actors','actor'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('adventurers','adventurer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('armorers','armorer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('axers','axer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('backers','backer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('barbers','barber'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('bathers','bather'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('battlers','battler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('bearers','bearer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('beheaders','beheader'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('belchers','belcher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('bewitchers','bewitcher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('bitchers','bitcher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('blackeners','blackener'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('blazers','blazer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('blinders','blinder'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('blisterers','blisterer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('bloaters','bloater'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('bleeders','bleeder'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('blossomers','blossomer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('boilers','boiler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('emboldeners','emboldener'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('bolteners','boltener'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('booters','booter'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('botherers','botherer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('bowers','bower'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('breachers','breacher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('breakers','breaker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('breathers','breather'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('breeders','breeder'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('brewer','brew'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('bridlers','bridler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('brighteners','brightener'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('bristlers','bristler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('bringers','bringer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('broilers','broiler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('buckers','bucker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('bucklers','buckler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('burdeners','burdener'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('burners','burner'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('buriers','burier'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('bushelers','busheler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('busters','buster'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('bustlers','bustler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('butchers','butcher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('butterers','butterer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('buttoners','buttoner'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('cacklers','cackler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('callers','caller'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('campers','camper'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('candiers','candier'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('cavers','caver'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('cavorter','cavorter'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('chanters','chanter'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('charrers','charrer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('charmers','charmer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('chewers','chewer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('chillers','chiller'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('chippers','chipper'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('chokers','choker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('choppers','chopper'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('chuckers','chucker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('clappers','clapper'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('claspers','clasper'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('clawers','clawer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('clearers','clearer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('cleavers','cleaver'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('clingers','clinger'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('clubbers','clubber'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('clutterers','clutterer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('coilers','coiler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('colorers','colorer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('conquerors','conqueror'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('chefs','chef'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('coverers','coverer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('couplers','coupler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('crawlers','crawler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('creepers','creeper'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('crossers','crosser'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('crowners','crowner'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('crucifiers','crucifier'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('crunchers','cruncher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('crushers','crusher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('criers','crier'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('cuddlers','cuddler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('cursers','curser'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('cutters','cutter'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('dancers','dancer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('danglers','dangler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('damagers','damager'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('decapitaters','decapitater'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('deceivers','deceiver'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('desecraters','desecrater'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('deserters','deserter'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('despairers','despairer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('destroyers','destroyer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('devourers','devourer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('diners','diner'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('dirtiers','dirtier'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('ditchers','ditcher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('drainers','drainer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('dreamers','dreamer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('dressers','dresser'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('drinkers','drinker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('drippers','dripper'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('droolers','drooler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('drowners','drowner'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('drier','drier'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('dumpers','dumper'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('dyers','dyer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('eaters','eater'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('engravers','engraver'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('entrancers','entrancer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('entrenchers','entrencher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('evildoers','evildoer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('executioners','executioner'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('faces','face'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('feasters','feaster'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('finders','finder'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('fishers','fisher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('flamers','flamer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('flankers','flanker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('flingers','flinger'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('flooders','flooder'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('flutists','flutist'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('fliers','flier'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('focusers','focuser'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('foggers','fogger'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('foolers','fooler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('forkers','forker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('fortifiers','fortifier'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('founders','founder'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('framer','framer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('freers','freer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('freezers','freezer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('gamers','gamer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('garnishers','garnisher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('gazers','gazer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('glazers','glazer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('gliders','glider'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('gorgers','gorger'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('greasers','greaser'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('grillers','griller'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('grinders','grinder'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('grippers','gripper'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('growers','grower'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('grubbers','grubber'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('guarders','guarder'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('gutters','gutter'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('hagglers','haggler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('hammerers','hammerer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('handers','hander'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('harvesters','harvester'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('hatcheters','hatcheter'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('haters','hater'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('haunters','haunter'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('hawker','hawker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('hexers','hexer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('hiders','hider'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('hobblers','hobbler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('hoggers','hogger'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('hoisters','hoister'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('holers','holer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('honeyers','honeyer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('hoppers','hopper'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('hounders','hounder'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('howlers','howler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('hugger','hugger'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('hummers','hummer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('hungerers','hungerer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('hustlers','hustler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('icers','icer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('idlers','idler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('idolizers','idolizer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('imprisoners','imprisoner'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('inkers','inker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('innkeepers','innkeeper'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('ironers','ironer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('itchers','itcher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('jesters','jester'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('jokers','joker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('jugglers','juggler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('juicers','juicer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('jumpers','jumper'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('keepers','keeper'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('kickers','kicker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('killers','killer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('kissers','kisser'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('kneaders','kneader'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('knifer','knifer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('knitters','knitter'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('lawyers','lawyer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('leaders','leader'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('leechers','leecher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('liars','liar'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('lighters','lighter'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('listeners','listener'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('loaners','loaner'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('loners','loner'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('looters','looter'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('losers','loser'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('lovers','lover'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('lurkers','lurker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('lyricists','lyricist'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('manglers','mangler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('meditaters','meditater'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('mincers','mincer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('miners','miner'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('murderers','murderer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('musher','musher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('negators','negator'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('openers','opener'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('packers','packer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('panderers','panderer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('planters','planter'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('plotter','plotter'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('poisoners','poisoner'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('prankers','pranker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('prisoners','prisoner'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('profiters','profiter'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('prophets','prophet'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('prowlers','prowler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('pukers','puker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('pullers','puller'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('punchers','puncher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('pushers','pusher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('quackers','quacker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('racers','racer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('rammers','rammer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('rampagers','rampager'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('ravagers','ravager'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('ringers','ringer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('romancers','romancer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('ruiners','ruiner'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('ruler','ruler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('sawers','sawer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('screamers','screamer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('seducers','seducer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('seers','seer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('server','server'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('severers','severer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('shankers','shanker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('shearers','shearer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('shelterers','shelterer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('shielders','shielder'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('shooters','shooter'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('showers','shower'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('showerers','showerer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('shredder','shredder'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('shrieker','shrieker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('shutter','shutter'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('sickeners','sickener'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('siegers','sieger'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('silencers','silencer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('singers','singer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('skulkers','skulker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('slaughterers','slaughterer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('slavers','slaver'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('slayers','slayer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('slimmers','slimmer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('slitters','slitter'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('smashers','smasher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('smilers','smiler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('smokers','smoker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('smoothers','smoother'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('smoulderers','smoulderer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('snackers','snacker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('snickerers','snickerer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('snugglers','snuggler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('soothers','soother'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('spewers','spewer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('spoilers','spoiler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('spooners','spooner'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('springers','springer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('spiers','spier'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('squirmers','squirmer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('stabbers','stabber'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('stalkers','stalker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('starvers','starver'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('stealers','stealer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('stoners','stoner'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('stormers','stormer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('strengtheners','strengthener'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('stretchers','stretcher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('strikers','striker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('stroker','stroker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('stutterers','stutterer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('stylers','styler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('suckers','sucker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('sufferers','sufferer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('sunderers','sunderer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('surprisers','surpriser'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('swampers','swamper'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('sweater','sweater'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('swimmers','swimmer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('takers','taker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('tarnishers','tarnisher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('tellers','teller'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('terrorizers','terrorizer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('throwers','thrower'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('thunderers','thunderer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('tickers','ticker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('tighteners','tightener'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('timers','timer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('tormenters','tormenter'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('touchers','toucher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('trappers','trapper'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('treasurers','treasurer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('treaters','treater'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('tricksters','trickster'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('trimmers','trimmer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('troublemakers','troublemaker'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('tugger','tugger'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('tumblers','tumbler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('vandalizers','vandalizer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('violators','violator'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('voiders','voider'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('wailers','wailer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('wanderers','wanderer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('wasters','waster'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('watchers','watcher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('wearers','wearer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('weavers','weaver'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('weeders','weeder'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('weighers','weigher'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('wheelers','wheeler'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('whippers','whipper'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('whisperers','whisperer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('wonderers','wonderer'); INSERT INTO "Words_ActionNoun" ("Plural","Word") VALUES ('workers','worker'); INSERT INTO "Words" ("Word") VALUES ('ace'); INSERT INTO "Words" ("Word") VALUES ('act'); INSERT INTO "Words" ("Word") VALUES ('adventure'); INSERT INTO "Words" ("Word") VALUES ('age'); INSERT INTO "Words" ("Word") VALUES ('ageless'); INSERT INTO "Words" ("Word") VALUES ('ale'); INSERT INTO "Words" ("Word") VALUES ('alive'); INSERT INTO "Words" ("Word") VALUES ('apple'); INSERT INTO "Words" ("Word") VALUES ('ancient'); INSERT INTO "Words" ("Word") VALUES ('angel'); INSERT INTO "Words" ("Word") VALUES ('anger'); INSERT INTO "Words" ("Word") VALUES ('animal'); INSERT INTO "Words" ("Word") VALUES ('arm'); INSERT INTO "Words" ("Word") VALUES ('armor'); INSERT INTO "Words" ("Word") VALUES ('arrow'); INSERT INTO "Words" ("Word") VALUES ('artifact'); INSERT INTO "Words" ("Word") VALUES ('artificial'); INSERT INTO "Words" ("Word") VALUES ('ash'); INSERT INTO "Words" ("Word") VALUES ('aura'); INSERT INTO "Words" ("Word") VALUES ('axe'); INSERT INTO "Words" ("Word") VALUES ('baby'); INSERT INTO "Words" ("Word") VALUES ('back'); INSERT INTO "Words" ("Word") VALUES ('bad'); INSERT INTO "Words" ("Word") VALUES ('bake'); INSERT INTO "Words" ("Word") VALUES ('bald'); INSERT INTO "Words" ("Word") VALUES ('ball'); INSERT INTO "Words" ("Word") VALUES ('bane'); INSERT INTO "Words" ("Word") VALUES ('bar'); INSERT INTO "Words" ("Word") VALUES ('bare'); INSERT INTO "Words" ("Word") VALUES ('barb'); INSERT INTO "Words" ("Word") VALUES ('bastard'); INSERT INTO "Words" ("Word") VALUES ('bath'); INSERT INTO "Words" ("Word") VALUES ('battle'); INSERT INTO "Words" ("Word") VALUES ('beak'); INSERT INTO "Words" ("Word") VALUES ('beast'); INSERT INTO "Words" ("Word") VALUES ('bear_animal'); INSERT INTO "Words" ("Word") VALUES ('bear'); INSERT INTO "Words" ("Word") VALUES ('bed'); INSERT INTO "Words" ("Word") VALUES ('bee'); INSERT INTO "Words" ("Word") VALUES ('beer'); INSERT INTO "Words" ("Word") VALUES ('beetle'); INSERT INTO "Words" ("Word") VALUES ('beguil'); INSERT INTO "Words" ("Word") VALUES ('behead'); INSERT INTO "Words" ("Word") VALUES ('belch'); INSERT INTO "Words" ("Word") VALUES ('berry'); INSERT INTO "Words" ("Word") VALUES ('bewitch'); INSERT INTO "Words" ("Word") VALUES ('big'); INSERT INTO "Words" ("Word") VALUES ('bile'); INSERT INTO "Words" ("Word") VALUES ('bin'); INSERT INTO "Words" ("Word") VALUES ('bird'); INSERT INTO "Words" ("Word") VALUES ('bitch'); INSERT INTO "Words" ("Word") VALUES ('black'); INSERT INTO "Words" ("Word") VALUES ('blade'); INSERT INTO "Words" ("Word") VALUES ('blaze'); INSERT INTO "Words" ("Word") VALUES ('blind'); INSERT INTO "Words" ("Word") VALUES ('blister'); INSERT INTO "Words" ("Word") VALUES ('bloat'); INSERT INTO "Words" ("Word") VALUES ('blood'); INSERT INTO "Words" ("Word") VALUES ('bloody'); INSERT INTO "Words" ("Word") VALUES ('blossom'); INSERT INTO "Words" ("Word") VALUES ('blue'); INSERT INTO "Words" ("Word") VALUES ('boar'); INSERT INTO "Words" ("Word") VALUES ('boat'); INSERT INTO "Words" ("Word") VALUES ('bodice'); INSERT INTO "Words" ("Word") VALUES ('bog'); INSERT INTO "Words" ("Word") VALUES ('boil'); INSERT INTO "Words" ("Word") VALUES ('bold'); INSERT INTO "Words" ("Word") VALUES ('bolt'); INSERT INTO "Words" ("Word") VALUES ('bone'); INSERT INTO "Words" ("Word") VALUES ('book'); INSERT INTO "Words" ("Word") VALUES ('boot'); INSERT INTO "Words" ("Word") VALUES ('bother'); INSERT INTO "Words" ("Word") VALUES ('bow'); INSERT INTO "Words" ("Word") VALUES ('brain'); INSERT INTO "Words" ("Word") VALUES ('breach'); INSERT INTO "Words" ("Word") VALUES ('breeches'); INSERT INTO "Words" ("Word") VALUES ('bread'); INSERT INTO "Words" ("Word") VALUES ('break'); INSERT INTO "Words" ("Word") VALUES ('breakfast'); INSERT INTO "Words" ("Word") VALUES ('breath'); INSERT INTO "Words" ("Word") VALUES ('breed'); INSERT INTO "Words" ("Word") VALUES ('brew'); INSERT INTO "Words" ("Word") VALUES ('bride'); INSERT INTO "Words" ("Word") VALUES ('bridle'); INSERT INTO "Words" ("Word") VALUES ('bright'); INSERT INTO "Words" ("Word") VALUES ('bristle'); INSERT INTO "Words" ("Word") VALUES ('brilliant'); INSERT INTO "Words" ("Word") VALUES ('brim'); INSERT INTO "Words" ("Word") VALUES ('bring'); INSERT INTO "Words" ("Word") VALUES ('broil'); INSERT INTO "Words" ("Word") VALUES ('brother'); INSERT INTO "Words" ("Word") VALUES ('brunch'); INSERT INTO "Words" ("Word") VALUES ('buck'); INSERT INTO "Words" ("Word") VALUES ('buckle'); INSERT INTO "Words" ("Word") VALUES ('bud'); INSERT INTO "Words" ("Word") VALUES ('bunch'); INSERT INTO "Words" ("Word") VALUES ('burden'); INSERT INTO "Words" ("Word") VALUES ('burn'); INSERT INTO "Words" ("Word") VALUES ('bury'); INSERT INTO "Words" ("Word") VALUES ('bush'); INSERT INTO "Words" ("Word") VALUES ('bushel'); INSERT INTO "Words" ("Word") VALUES ('bust'); INSERT INTO "Words" ("Word") VALUES ('business'); INSERT INTO "Words" ("Word") VALUES ('busy'); INSERT INTO "Words" ("Word") VALUES ('bustle'); INSERT INTO "Words" ("Word") VALUES ('butcher'); INSERT INTO "Words" ("Word") VALUES ('butter'); INSERT INTO "Words" ("Word") VALUES ('butterfly'); INSERT INTO "Words" ("Word") VALUES ('button'); INSERT INTO "Words" ("Word") VALUES ('buzzard'); INSERT INTO "Words" ("Word") VALUES ('cackle'); INSERT INTO "Words" ("Word") VALUES ('cage'); INSERT INTO "Words" ("Word") VALUES ('cake'); INSERT INTO "Words" ("Word") VALUES ('call'); INSERT INTO "Words" ("Word") VALUES ('camp'); INSERT INTO "Words" ("Word") VALUES ('cancer'); INSERT INTO "Words" ("Word") VALUES ('candle'); INSERT INTO "Words" ("Word") VALUES ('candy'); INSERT INTO "Words" ("Word") VALUES ('canyon'); INSERT INTO "Words" ("Word") VALUES ('carnage'); INSERT INTO "Words" ("Word") VALUES ('casket'); INSERT INTO "Words" ("Word") VALUES ('castle'); INSERT INTO "Words" ("Word") VALUES ('cat'); INSERT INTO "Words" ("Word") VALUES ('cave'); INSERT INTO "Words" ("Word") VALUES ('cavort'); INSERT INTO "Words" ("Word") VALUES ('cell'); INSERT INTO "Words" ("Word") VALUES ('cellar'); INSERT INTO "Words" ("Word") VALUES ('chain'); INSERT INTO "Words" ("Word") VALUES ('chant'); INSERT INTO "Words" ("Word") VALUES ('chaos'); INSERT INTO "Words" ("Word") VALUES ('chamber'); INSERT INTO "Words" ("Word") VALUES ('char'); INSERT INTO "Words" ("Word") VALUES ('charm'); INSERT INTO "Words" ("Word") VALUES ('chew'); INSERT INTO "Words" ("Word") VALUES ('child'); INSERT INTO "Words" ("Word") VALUES ('chill'); INSERT INTO "Words" ("Word") VALUES ('chip'); INSERT INTO "Words" ("Word") VALUES ('choke'); INSERT INTO "Words" ("Word") VALUES ('choker'); INSERT INTO "Words" ("Word") VALUES ('chop'); INSERT INTO "Words" ("Word") VALUES ('chuck'); INSERT INTO "Words" ("Word") VALUES ('cinder'); INSERT INTO "Words" ("Word") VALUES ('clam'); INSERT INTO "Words" ("Word") VALUES ('clap'); INSERT INTO "Words" ("Word") VALUES ('clasp'); INSERT INTO "Words" ("Word") VALUES ('claw'); INSERT INTO "Words" ("Word") VALUES ('clear'); INSERT INTO "Words" ("Word") VALUES ('clearing'); INSERT INTO "Words" ("Word") VALUES ('cleave'); INSERT INTO "Words" ("Word") VALUES ('cling'); INSERT INTO "Words" ("Word") VALUES ('cloak'); INSERT INTO "Words" ("Word") VALUES ('clod'); INSERT INTO "Words" ("Word") VALUES ('cloister'); INSERT INTO "Words" ("Word") VALUES ('closet'); INSERT INTO "Words" ("Word") VALUES ('club'); INSERT INTO "Words" ("Word") VALUES ('cluster'); INSERT INTO "Words" ("Word") VALUES ('clutter'); INSERT INTO "Words" ("Word") VALUES ('cobra'); INSERT INTO "Words" ("Word") VALUES ('coil'); INSERT INTO "Words" ("Word") VALUES ('cold'); INSERT INTO "Words" ("Word") VALUES ('color'); INSERT INTO "Words" ("Word") VALUES ('comet'); INSERT INTO "Words" ("Word") VALUES ('common'); INSERT INTO "Words" ("Word") VALUES ('conquer'); INSERT INTO "Words" ("Word") VALUES ('cook'); INSERT INTO "Words" ("Word") VALUES ('cover'); INSERT INTO "Words" ("Word") VALUES ('cotton'); INSERT INTO "Words" ("Word") VALUES ('couple'); INSERT INTO "Words" ("Word") VALUES ('crab'); INSERT INTO "Words" ("Word") VALUES ('crawl'); INSERT INTO "Words" ("Word") VALUES ('craze'); INSERT INTO "Words" ("Word") VALUES ('crazy'); INSERT INTO "Words" ("Word") VALUES ('cream'); INSERT INTO "Words" ("Word") VALUES ('creek'); INSERT INTO "Words" ("Word") VALUES ('creep'); INSERT INTO "Words" ("Word") VALUES ('creepy'); INSERT INTO "Words" ("Word") VALUES ('crescent'); INSERT INTO "Words" ("Word") VALUES ('cross'); INSERT INTO "Words" ("Word") VALUES ('crow'); INSERT INTO "Words" ("Word") VALUES ('crown'); INSERT INTO "Words" ("Word") VALUES ('crotch'); INSERT INTO "Words" ("Word") VALUES ('crucify'); INSERT INTO "Words" ("Word") VALUES ('crumble'); INSERT INTO "Words" ("Word") VALUES ('crunch'); INSERT INTO "Words" ("Word") VALUES ('crush'); INSERT INTO "Words" ("Word") VALUES ('cry'); INSERT INTO "Words" ("Word") VALUES ('crypt'); INSERT INTO "Words" ("Word") VALUES ('crystal'); INSERT INTO "Words" ("Word") VALUES ('cuddle'); INSERT INTO "Words" ("Word") VALUES ('cudgel'); INSERT INTO "Words" ("Word") VALUES ('cup'); INSERT INTO "Words" ("Word") VALUES ('curse'); INSERT INTO "Words" ("Word") VALUES ('cut'); INSERT INTO "Words" ("Word") VALUES ('cyst'); INSERT INTO "Words" ("Word") VALUES ('dance'); INSERT INTO "Words" ("Word") VALUES ('dangle'); INSERT INTO "Words" ("Word") VALUES ('dank'); INSERT INTO "Words" ("Word") VALUES ('dagger'); INSERT INTO "Words" ("Word") VALUES ('dark'); INSERT INTO "Words" ("Word") VALUES ('date'); INSERT INTO "Words" ("Word") VALUES ('damage'); INSERT INTO "Words" ("Word") VALUES ('damn'); INSERT INTO "Words" ("Word") VALUES ('dawn'); INSERT INTO "Words" ("Word") VALUES ('day'); INSERT INTO "Words" ("Word") VALUES ('dead'); INSERT INTO "Words" ("Word") VALUES ('dear'); INSERT INTO "Words" ("Word") VALUES ('death'); INSERT INTO "Words" ("Word") VALUES ('decapitate'); INSERT INTO "Words" ("Word") VALUES ('decay'); INSERT INTO "Words" ("Word") VALUES ('deceive'); INSERT INTO "Words" ("Word") VALUES ('deep'); INSERT INTO "Words" ("Word") VALUES ('deer'); INSERT INTO "Words" ("Word") VALUES ('demon'); INSERT INTO "Words" ("Word") VALUES ('desecrate'); INSERT INTO "Words" ("Word") VALUES ('desert'); INSERT INTO "Words" ("Word") VALUES ('desert_verb'); INSERT INTO "Words" ("Word") VALUES ('dessert'); INSERT INTO "Words" ("Word") VALUES ('despair'); INSERT INTO "Words" ("Word") VALUES ('destroy'); INSERT INTO "Words" ("Word") VALUES ('destruction'); INSERT INTO "Words" ("Word") VALUES ('devil'); INSERT INTO "Words" ("Word") VALUES ('devour'); INSERT INTO "Words" ("Word") VALUES ('diamond'); INSERT INTO "Words" ("Word") VALUES ('dine'); INSERT INTO "Words" ("Word") VALUES ('dinner'); INSERT INTO "Words" ("Word") VALUES ('dirt'); INSERT INTO "Words" ("Word") VALUES ('disguise'); INSERT INTO "Words" ("Word") VALUES ('ditch'); INSERT INTO "Words" ("Word") VALUES ('dog'); INSERT INTO "Words" ("Word") VALUES ('domain'); INSERT INTO "Words" ("Word") VALUES ('domestic'); INSERT INTO "Words" ("Word") VALUES ('donkey'); INSERT INTO "Words" ("Word") VALUES ('doom'); INSERT INTO "Words" ("Word") VALUES ('door'); INSERT INTO "Words" ("Word") VALUES ('dragon'); INSERT INTO "Words" ("Word") VALUES ('drain'); INSERT INTO "Words" ("Word") VALUES ('dream'); INSERT INTO "Words" ("Word") VALUES ('dress'); INSERT INTO "Words" ("Word") VALUES ('drink'); INSERT INTO "Words" ("Word") VALUES ('drip'); INSERT INTO "Words" ("Word") VALUES ('drool'); INSERT INTO "Words" ("Word") VALUES ('drown'); INSERT INTO "Words" ("Word") VALUES ('dry'); INSERT INTO "Words" ("Word") VALUES ('dump'); INSERT INTO "Words" ("Word") VALUES ('dumpling'); INSERT INTO "Words" ("Word") VALUES ('dung'); INSERT INTO "Words" ("Word") VALUES ('dungeon'); INSERT INTO "Words" ("Word") VALUES ('dusk'); INSERT INTO "Words" ("Word") VALUES ('dust'); INSERT INTO "Words" ("Word") VALUES ('duty'); INSERT INTO "Words" ("Word") VALUES ('dye'); INSERT INTO "Words" ("Word") VALUES ('eagle'); INSERT INTO "Words" ("Word") VALUES ('ear'); INSERT INTO "Words" ("Word") VALUES ('earth'); INSERT INTO "Words" ("Word") VALUES ('east'); INSERT INTO "Words" ("Word") VALUES ('eat'); INSERT INTO "Words" ("Word") VALUES ('eel'); INSERT INTO "Words" ("Word") VALUES ('eerie'); INSERT INTO "Words" ("Word") VALUES ('egg'); INSERT INTO "Words" ("Word") VALUES ('elder'); INSERT INTO "Words" ("Word") VALUES ('engrave'); INSERT INTO "Words" ("Word") VALUES ('eternal'); INSERT INTO "Words" ("Word") VALUES ('entrance'); INSERT INTO "Words" ("Word") VALUES ('entrails'); INSERT INTO "Words" ("Word") VALUES ('entrench'); INSERT INTO "Words" ("Word") VALUES ('entwine'); INSERT INTO "Words" ("Word") VALUES ('everlasting'); INSERT INTO "Words" ("Word") VALUES ('evil'); INSERT INTO "Words" ("Word") VALUES ('execute'); INSERT INTO "Words" ("Word") VALUES ('eye'); INSERT INTO "Words" ("Word") VALUES ('face'); INSERT INTO "Words" ("Word") VALUES ('fall'); INSERT INTO "Words" ("Word") VALUES ('false'); INSERT INTO "Words" ("Word") VALUES ('famine'); INSERT INTO "Words" ("Word") VALUES ('fang'); INSERT INTO "Words" ("Word") VALUES ('fat'); INSERT INTO "Words" ("Word") VALUES ('fatal'); INSERT INTO "Words" ("Word") VALUES ('father'); INSERT INTO "Words" ("Word") VALUES ('fear'); INSERT INTO "Words" ("Word") VALUES ('feast'); INSERT INTO "Words" ("Word") VALUES ('fetid'); INSERT INTO "Words" ("Word") VALUES ('fiend'); INSERT INTO "Words" ("Word") VALUES ('fierce'); INSERT INTO "Words" ("Word") VALUES ('filth'); INSERT INTO "Words" ("Word") VALUES ('fin'); INSERT INTO "Words" ("Word") VALUES ('find'); INSERT INTO "Words" ("Word") VALUES ('finger'); INSERT INTO "Words" ("Word") VALUES ('fire'); INSERT INTO "Words" ("Word") VALUES ('first'); INSERT INTO "Words" ("Word") VALUES ('fish'); INSERT INTO "Words" ("Word") VALUES ('fist'); INSERT INTO "Words" ("Word") VALUES ('flame'); INSERT INTO "Words" ("Word") VALUES ('flank'); INSERT INTO "Words" ("Word") VALUES ('flea'); INSERT INTO "Words" ("Word") VALUES ('flee'); INSERT INTO "Words" ("Word") VALUES ('flesh'); INSERT INTO "Words" ("Word") VALUES ('fling'); INSERT INTO "Words" ("Word") VALUES ('flood'); INSERT INTO "Words" ("Word") VALUES ('flower'); INSERT INTO "Words" ("Word") VALUES ('flute'); INSERT INTO "Words" ("Word") VALUES ('fly'); INSERT INTO "Words" ("Word") VALUES ('focus'); INSERT INTO "Words" ("Word") VALUES ('fog'); INSERT INTO "Words" ("Word") VALUES ('fool'); INSERT INTO "Words" ("Word") VALUES ('foot'); INSERT INTO "Words" ("Word") VALUES ('forest'); INSERT INTO "Words" ("Word") VALUES ('fork'); INSERT INTO "Words" ("Word") VALUES ('fortify'); INSERT INTO "Words" ("Word") VALUES ('fortress'); INSERT INTO "Words" ("Word") VALUES ('found'); INSERT INTO "Words" ("Word") VALUES ('fragile'); INSERT INTO "Words" ("Word") VALUES ('fragment'); INSERT INTO "Words" ("Word") VALUES ('frame'); INSERT INTO "Words" ("Word") VALUES ('fray'); INSERT INTO "Words" ("Word") VALUES ('free'); INSERT INTO "Words" ("Word") VALUES ('frenzy'); INSERT INTO "Words" ("Word") VALUES ('freeze'); INSERT INTO "Words" ("Word") VALUES ('frill'); INSERT INTO "Words" ("Word") VALUES ('frog'); INSERT INTO "Words" ("Word") VALUES ('fruit'); INSERT INTO "Words" ("Word") VALUES ('fungus'); INSERT INTO "Words" ("Word") VALUES ('fur'); INSERT INTO "Words" ("Word") VALUES ('game'); INSERT INTO "Words" ("Word") VALUES ('garlic'); INSERT INTO "Words" ("Word") VALUES ('garnish'); INSERT INTO "Words" ("Word") VALUES ('gaunt'); INSERT INTO "Words" ("Word") VALUES ('gaze'); INSERT INTO "Words" ("Word") VALUES ('gear'); INSERT INTO "Words" ("Word") VALUES ('gerbil'); INSERT INTO "Words" ("Word") VALUES ('ghost'); INSERT INTO "Words" ("Word") VALUES ('ghoul'); INSERT INTO "Words" ("Word") VALUES ('gift'); INSERT INTO "Words" ("Word") VALUES ('gill'); INSERT INTO "Words" ("Word") VALUES ('gland'); INSERT INTO "Words" ("Word") VALUES ('glaze'); INSERT INTO "Words" ("Word") VALUES ('glide'); INSERT INTO "Words" ("Word") VALUES ('glimmer'); INSERT INTO "Words" ("Word") VALUES ('glisten'); INSERT INTO "Words" ("Word") VALUES ('gloss'); INSERT INTO "Words" ("Word") VALUES ('glove'); INSERT INTO "Words" ("Word") VALUES ('glutton'); INSERT INTO "Words" ("Word") VALUES ('goat'); INSERT INTO "Words" ("Word") VALUES ('god'); INSERT INTO "Words" ("Word") VALUES ('god-forsaken'); INSERT INTO "Words" ("Word") VALUES ('gold'); INSERT INTO "Words" ("Word") VALUES ('goose'); INSERT INTO "Words" ("Word") VALUES ('gore'); INSERT INTO "Words" ("Word") VALUES ('gorge'); INSERT INTO "Words" ("Word") VALUES ('grain'); INSERT INTO "Words" ("Word") VALUES ('grand'); INSERT INTO "Words" ("Word") VALUES ('grape'); INSERT INTO "Words" ("Word") VALUES ('grass'); INSERT INTO "Words" ("Word") VALUES ('grave'); INSERT INTO "Words" ("Word") VALUES ('grease'); INSERT INTO "Words" ("Word") VALUES ('great'); INSERT INTO "Words" ("Word") VALUES ('greed'); INSERT INTO "Words" ("Word") VALUES ('green'); INSERT INTO "Words" ("Word") VALUES ('griffon'); INSERT INTO "Words" ("Word") VALUES ('grill'); INSERT INTO "Words" ("Word") VALUES ('grim'); INSERT INTO "Words" ("Word") VALUES ('grind'); INSERT INTO "Words" ("Word") VALUES ('grip'); INSERT INTO "Words" ("Word") VALUES ('gristle'); INSERT INTO "Words" ("Word") VALUES ('grizzle'); INSERT INTO "Words" ("Word") VALUES ('grove'); INSERT INTO "Words" ("Word") VALUES ('grow'); INSERT INTO "Words" ("Word") VALUES ('growl'); INSERT INTO "Words" ("Word") VALUES ('grub'); INSERT INTO "Words" ("Word") VALUES ('guard'); INSERT INTO "Words" ("Word") VALUES ('guile'); INSERT INTO "Words" ("Word") VALUES ('guise'); INSERT INTO "Words" ("Word") VALUES ('gut'); INSERT INTO "Words" ("Word") VALUES ('hag'); INSERT INTO "Words" ("Word") VALUES ('haggle'); INSERT INTO "Words" ("Word") VALUES ('hair'); INSERT INTO "Words" ("Word") VALUES ('hammer'); INSERT INTO "Words" ("Word") VALUES ('hand'); INSERT INTO "Words" ("Word") VALUES ('hare'); INSERT INTO "Words" ("Word") VALUES ('harvest'); INSERT INTO "Words" ("Word") VALUES ('hatchet'); INSERT INTO "Words" ("Word") VALUES ('hate'); INSERT INTO "Words" ("Word") VALUES ('haunt'); INSERT INTO "Words" ("Word") VALUES ('hawk'); INSERT INTO "Words" ("Word") VALUES ('hay'); INSERT INTO "Words" ("Word") VALUES ('head'); INSERT INTO "Words" ("Word") VALUES ('heart'); INSERT INTO "Words" ("Word") VALUES ('heartless'); INSERT INTO "Words" ("Word") VALUES ('heartful'); INSERT INTO "Words" ("Word") VALUES ('hearth'); INSERT INTO "Words" ("Word") VALUES ('hedge'); INSERT INTO "Words" ("Word") VALUES ('hell'); INSERT INTO "Words" ("Word") VALUES ('helm'); INSERT INTO "Words" ("Word") VALUES ('hero'); INSERT INTO "Words" ("Word") VALUES ('hex'); INSERT INTO "Words" ("Word") VALUES ('hide'); INSERT INTO "Words" ("Word") VALUES ('hideous'); INSERT INTO "Words" ("Word") VALUES ('high'); INSERT INTO "Words" ("Word") VALUES ('hill'); INSERT INTO "Words" ("Word") VALUES ('hip'); INSERT INTO "Words" ("Word") VALUES ('hobble'); INSERT INTO "Words" ("Word") VALUES ('hog'); INSERT INTO "Words" ("Word") VALUES ('hoist'); INSERT INTO "Words" ("Word") VALUES ('hole'); INSERT INTO "Words" ("Word") VALUES ('holy'); INSERT INTO "Words" ("Word") VALUES ('home'); INSERT INTO "Words" ("Word") VALUES ('honey'); INSERT INTO "Words" ("Word") VALUES ('hood'); INSERT INTO "Words" ("Word") VALUES ('hoof'); INSERT INTO "Words" ("Word") VALUES ('hop'); INSERT INTO "Words" ("Word") VALUES ('horn'); INSERT INTO "Words" ("Word") VALUES ('horny'); INSERT INTO "Words" ("Word") VALUES ('horse'); INSERT INTO "Words" ("Word") VALUES ('hound'); INSERT INTO "Words" ("Word") VALUES ('howl'); INSERT INTO "Words" ("Word") VALUES ('hug'); INSERT INTO "Words" ("Word") VALUES ('hum'); INSERT INTO "Words" ("Word") VALUES ('hunger'); INSERT INTO "Words" ("Word") VALUES ('hungry'); INSERT INTO "Words" ("Word") VALUES ('hustle'); INSERT INTO "Words" ("Word") VALUES ('ice'); INSERT INTO "Words" ("Word") VALUES ('idle'); INSERT INTO "Words" ("Word") VALUES ('idol'); INSERT INTO "Words" ("Word") VALUES ('idolize'); INSERT INTO "Words" ("Word") VALUES ('ill'); INSERT INTO "Words" ("Word") VALUES ('imprison'); INSERT INTO "Words" ("Word") VALUES ('impure'); INSERT INTO "Words" ("Word") VALUES ('incense'); INSERT INTO "Words" ("Word") VALUES ('incest'); INSERT INTO "Words" ("Word") VALUES ('inch'); INSERT INTO "Words" ("Word") VALUES ('ink'); INSERT INTO "Words" ("Word") VALUES ('inkling'); INSERT INTO "Words" ("Word") VALUES ('inn'); INSERT INTO "Words" ("Word") VALUES ('insane'); INSERT INTO "Words" ("Word") VALUES ('invisible'); INSERT INTO "Words" ("Word") VALUES ('iron'); INSERT INTO "Words" ("Word") VALUES ('irony'); INSERT INTO "Words" ("Word") VALUES ('itch'); INSERT INTO "Words" ("Word") VALUES ('ivory'); INSERT INTO "Words" ("Word") VALUES ('ivy'); INSERT INTO "Words" ("Word") VALUES ('jackal'); INSERT INTO "Words" ("Word") VALUES ('jaw'); INSERT INTO "Words" ("Word") VALUES ('jest'); INSERT INTO "Words" ("Word") VALUES ('joke'); INSERT INTO "Words" ("Word") VALUES ('judge'); INSERT INTO "Words" ("Word") VALUES ('juggle'); INSERT INTO "Words" ("Word") VALUES ('juice'); INSERT INTO "Words" ("Word") VALUES ('jump'); INSERT INTO "Words" ("Word") VALUES ('jungle'); INSERT INTO "Words" ("Word") VALUES ('just'); INSERT INTO "Words" ("Word") VALUES ('justify'); INSERT INTO "Words" ("Word") VALUES ('keep'); INSERT INTO "Words" ("Word") VALUES ('keg'); INSERT INTO "Words" ("Word") VALUES ('key'); INSERT INTO "Words" ("Word") VALUES ('kick'); INSERT INTO "Words" ("Word") VALUES ('kill'); INSERT INTO "Words" ("Word") VALUES ('kind'); INSERT INTO "Words" ("Word") VALUES ('kiss'); INSERT INTO "Words" ("Word") VALUES ('king'); INSERT INTO "Words" ("Word") VALUES ('kingdom'); INSERT INTO "Words" ("Word") VALUES ('knead'); INSERT INTO "Words" ("Word") VALUES ('knife'); INSERT INTO "Words" ("Word") VALUES ('knight'); INSERT INTO "Words" ("Word") VALUES ('knit'); INSERT INTO "Words" ("Word") VALUES ('knot'); INSERT INTO "Words" ("Word") VALUES ('lace'); INSERT INTO "Words" ("Word") VALUES ('lake'); INSERT INTO "Words" ("Word") VALUES ('lard'); INSERT INTO "Words" ("Word") VALUES ('larva'); INSERT INTO "Words" ("Word") VALUES ('last'); INSERT INTO "Words" ("Word") VALUES ('law'); INSERT INTO "Words" ("Word") VALUES ('lazy'); INSERT INTO "Words" ("Word") VALUES ('lead'); INSERT INTO "Words" ("Word") VALUES ('lead_metal'); INSERT INTO "Words" ("Word") VALUES ('leaf'); INSERT INTO "Words" ("Word") VALUES ('leak'); INSERT INTO "Words" ("Word") VALUES ('lean'); INSERT INTO "Words" ("Word") VALUES ('leech'); INSERT INTO "Words" ("Word") VALUES ('legend'); INSERT INTO "Words" ("Word") VALUES ('lens'); INSERT INTO "Words" ("Word") VALUES ('leopard'); INSERT INTO "Words" ("Word") VALUES ('leper'); INSERT INTO "Words" ("Word") VALUES ('leprosy'); INSERT INTO "Words" ("Word") VALUES ('letter'); INSERT INTO "Words" ("Word") VALUES ('lie'); INSERT INTO "Words" ("Word") VALUES ('light'); INSERT INTO "Words" ("Word") VALUES ('lightning'); INSERT INTO "Words" ("Word") VALUES ('life'); INSERT INTO "Words" ("Word") VALUES ('limb'); INSERT INTO "Words" ("Word") VALUES ('lip'); INSERT INTO "Words" ("Word") VALUES ('listen'); INSERT INTO "Words" ("Word") VALUES ('liver'); INSERT INTO "Words" ("Word") VALUES ('lizard'); INSERT INTO "Words" ("Word") VALUES ('loan'); INSERT INTO "Words" ("Word") VALUES ('lobster'); INSERT INTO "Words" ("Word") VALUES ('lock'); INSERT INTO "Words" ("Word") VALUES ('lone'); INSERT INTO "Words" ("Word") VALUES ('long'); INSERT INTO "Words" ("Word") VALUES ('loot'); INSERT INTO "Words" ("Word") VALUES ('lord'); INSERT INTO "Words" ("Word") VALUES ('lose'); INSERT INTO "Words" ("Word") VALUES ('louse'); INSERT INTO "Words" ("Word") VALUES ('love'); INSERT INTO "Words" ("Word") VALUES ('low'); INSERT INTO "Words" ("Word") VALUES ('lunch'); INSERT INTO "Words" ("Word") VALUES ('lung'); INSERT INTO "Words" ("Word") VALUES ('lurch'); INSERT INTO "Words" ("Word") VALUES ('lurk'); INSERT INTO "Words" ("Word") VALUES ('lush'); INSERT INTO "Words" ("Word") VALUES ('lust'); INSERT INTO "Words" ("Word") VALUES ('lute'); INSERT INTO "Words" ("Word") VALUES ('lyric'); INSERT INTO "Words" ("Word") VALUES ('maggot'); INSERT INTO "Words" ("Word") VALUES ('magic'); INSERT INTO "Words" ("Word") VALUES ('man'); INSERT INTO "Words" ("Word") VALUES ('mangle'); INSERT INTO "Words" ("Word") VALUES ('mangy'); INSERT INTO "Words" ("Word") VALUES ('marsh'); INSERT INTO "Words" ("Word") VALUES ('martyr'); INSERT INTO "Words" ("Word") VALUES ('master'); INSERT INTO "Words" ("Word") VALUES ('mead'); INSERT INTO "Words" ("Word") VALUES ('meadow'); INSERT INTO "Words" ("Word") VALUES ('meal'); INSERT INTO "Words" ("Word") VALUES ('meat'); INSERT INTO "Words" ("Word") VALUES ('meditation'); INSERT INTO "Words" ("Word") VALUES ('mellow'); INSERT INTO "Words" ("Word") VALUES ('menace'); INSERT INTO "Words" ("Word") VALUES ('mess'); INSERT INTO "Words" ("Word") VALUES ('metal'); INSERT INTO "Words" ("Word") VALUES ('midnight'); INSERT INTO "Words" ("Word") VALUES ('might'); INSERT INTO "Words" ("Word") VALUES ('mile'); INSERT INTO "Words" ("Word") VALUES ('mince'); INSERT INTO "Words" ("Word") VALUES ('mind'); INSERT INTO "Words" ("Word") VALUES ('mine'); INSERT INTO "Words" ("Word") VALUES ('minion'); INSERT INTO "Words" ("Word") VALUES ('mirror'); INSERT INTO "Words" ("Word") VALUES ('misery'); INSERT INTO "Words" ("Word") VALUES ('mist'); INSERT INTO "Words" ("Word") VALUES ('mold'); INSERT INTO "Words" ("Word") VALUES ('mole'); INSERT INTO "Words" ("Word") VALUES ('molten'); INSERT INTO "Words" ("Word") VALUES ('monkey'); INSERT INTO "Words" ("Word") VALUES ('moon'); INSERT INTO "Words" ("Word") VALUES ('moth'); INSERT INTO "Words" ("Word") VALUES ('mother'); INSERT INTO "Words" ("Word") VALUES ('mouse'); INSERT INTO "Words" ("Word") VALUES ('mouth'); INSERT INTO "Words" ("Word") VALUES ('mud'); INSERT INTO "Words" ("Word") VALUES ('muffin'); INSERT INTO "Words" ("Word") VALUES ('mule'); INSERT INTO "Words" ("Word") VALUES ('murder'); INSERT INTO "Words" ("Word") VALUES ('mush'); INSERT INTO "Words" ("Word") VALUES ('mushroom'); INSERT INTO "Words" ("Word") VALUES ('music'); INSERT INTO "Words" ("Word") VALUES ('mystery'); INSERT INTO "Words" ("Word") VALUES ('myth'); INSERT INTO "Words" ("Word") VALUES ('nail'); INSERT INTO "Words" ("Word") VALUES ('nasty'); INSERT INTO "Words" ("Word") VALUES ('nature'); INSERT INTO "Words" ("Word") VALUES ('negate'); INSERT INTO "Words" ("Word") VALUES ('nest'); INSERT INTO "Words" ("Word") VALUES ('nestle'); INSERT INTO "Words" ("Word") VALUES ('net'); INSERT INTO "Words" ("Word") VALUES ('new'); INSERT INTO "Words" ("Word") VALUES ('newt'); INSERT INTO "Words" ("Word") VALUES ('nibble'); INSERT INTO "Words" ("Word") VALUES ('night'); INSERT INTO "Words" ("Word") VALUES ('nightmare'); INSERT INTO "Words" ("Word") VALUES ('noble'); INSERT INTO "Words" ("Word") VALUES ('north'); INSERT INTO "Words" ("Word") VALUES ('nose'); INSERT INTO "Words" ("Word") VALUES ('null'); INSERT INTO "Words" ("Word") VALUES ('number'); INSERT INTO "Words" ("Word") VALUES ('nurture'); INSERT INTO "Words" ("Word") VALUES ('nut'); INSERT INTO "Words" ("Word") VALUES ('oak'); INSERT INTO "Words" ("Word") VALUES ('oar'); INSERT INTO "Words" ("Word") VALUES ('oat'); INSERT INTO "Words" ("Word") VALUES ('oblivion'); INSERT INTO "Words" ("Word") VALUES ('ocean'); INSERT INTO "Words" ("Word") VALUES ('old'); INSERT INTO "Words" ("Word") VALUES ('omen'); INSERT INTO "Words" ("Word") VALUES ('one'); INSERT INTO "Words" ("Word") VALUES ('onion'); INSERT INTO "Words" ("Word") VALUES ('ooze'); INSERT INTO "Words" ("Word") VALUES ('open'); INSERT INTO "Words" ("Word") VALUES ('orb'); INSERT INTO "Words" ("Word") VALUES ('owl'); INSERT INTO "Words" ("Word") VALUES ('ox'); INSERT INTO "Words" ("Word") VALUES ('pack'); INSERT INTO "Words" ("Word") VALUES ('pad'); INSERT INTO "Words" ("Word") VALUES ('page'); INSERT INTO "Words" ("Word") VALUES ('pain'); INSERT INTO "Words" ("Word") VALUES ('paint'); INSERT INTO "Words" ("Word") VALUES ('pale'); INSERT INTO "Words" ("Word") VALUES ('palm'); INSERT INTO "Words" ("Word") VALUES ('pander'); INSERT INTO "Words" ("Word") VALUES ('pant'); INSERT INTO "Words" ("Word") VALUES ('panther'); INSERT INTO "Words" ("Word") VALUES ('pants'); INSERT INTO "Words" ("Word") VALUES ('paper'); INSERT INTO "Words" ("Word") VALUES ('peace'); INSERT INTO "Words" ("Word") VALUES ('peach'); INSERT INTO "Words" ("Word") VALUES ('pepper'); INSERT INTO "Words" ("Word") VALUES ('pig'); INSERT INTO "Words" ("Word") VALUES ('piss'); INSERT INTO "Words" ("Word") VALUES ('pit'); INSERT INTO "Words" ("Word") VALUES ('pitch'); INSERT INTO "Words" ("Word") VALUES ('plague'); INSERT INTO "Words" ("Word") VALUES ('plant'); INSERT INTO "Words" ("Word") VALUES ('plot'); INSERT INTO "Words" ("Word") VALUES ('pocket'); INSERT INTO "Words" ("Word") VALUES ('poison'); INSERT INTO "Words" ("Word") VALUES ('portal'); INSERT INTO "Words" ("Word") VALUES ('power'); INSERT INTO "Words" ("Word") VALUES ('prank'); INSERT INTO "Words" ("Word") VALUES ('pride'); INSERT INTO "Words" ("Word") VALUES ('priest'); INSERT INTO "Words" ("Word") VALUES ('prime'); INSERT INTO "Words" ("Word") VALUES ('prison'); INSERT INTO "Words" ("Word") VALUES ('primitive'); INSERT INTO "Words" ("Word") VALUES ('profane'); INSERT INTO "Words" ("Word") VALUES ('profit'); INSERT INTO "Words" ("Word") VALUES ('prophecy'); INSERT INTO "Words" ("Word") VALUES ('prowl'); INSERT INTO "Words" ("Word") VALUES ('puke'); INSERT INTO "Words" ("Word") VALUES ('pull'); INSERT INTO "Words" ("Word") VALUES ('pulley'); INSERT INTO "Words" ("Word") VALUES ('pulp'); INSERT INTO "Words" ("Word") VALUES ('punch'); INSERT INTO "Words" ("Word") VALUES ('purple'); INSERT INTO "Words" ("Word") VALUES ('pus'); INSERT INTO "Words" ("Word") VALUES ('push'); INSERT INTO "Words" ("Word") VALUES ('putrid'); INSERT INTO "Words" ("Word") VALUES ('quack'); INSERT INTO "Words" ("Word") VALUES ('quake'); INSERT INTO "Words" ("Word") VALUES ('quark'); INSERT INTO "Words" ("Word") VALUES ('queen'); INSERT INTO "Words" ("Word") VALUES ('quick'); INSERT INTO "Words" ("Word") VALUES ('quill'); INSERT INTO "Words" ("Word") VALUES ('quirk'); INSERT INTO "Words" ("Word") VALUES ('rabbit'); INSERT INTO "Words" ("Word") VALUES ('rabble'); INSERT INTO "Words" ("Word") VALUES ('race'); INSERT INTO "Words" ("Word") VALUES ('rack'); INSERT INTO "Words" ("Word") VALUES ('rag'); INSERT INTO "Words" ("Word") VALUES ('rage'); INSERT INTO "Words" ("Word") VALUES ('rain'); INSERT INTO "Words" ("Word") VALUES ('rake'); INSERT INTO "Words" ("Word") VALUES ('ram'); INSERT INTO "Words" ("Word") VALUES ('rampage'); INSERT INTO "Words" ("Word") VALUES ('random'); INSERT INTO "Words" ("Word") VALUES ('ransack'); INSERT INTO "Words" ("Word") VALUES ('rat'); INSERT INTO "Words" ("Word") VALUES ('ravage'); INSERT INTO "Words" ("Word") VALUES ('raven'); INSERT INTO "Words" ("Word") VALUES ('raw'); INSERT INTO "Words" ("Word") VALUES ('razor'); INSERT INTO "Words" ("Word") VALUES ('red'); INSERT INTO "Words" ("Word") VALUES ('regal'); INSERT INTO "Words" ("Word") VALUES ('reign'); INSERT INTO "Words" ("Word") VALUES ('rein'); INSERT INTO "Words" ("Word") VALUES ('rider'); INSERT INTO "Words" ("Word") VALUES ('rim'); INSERT INTO "Words" ("Word") VALUES ('ring'); INSERT INTO "Words" ("Word") VALUES ('rip'); INSERT INTO "Words" ("Word") VALUES ('ripe'); INSERT INTO "Words" ("Word") VALUES ('rise'); INSERT INTO "Words" ("Word") VALUES ('rite'); INSERT INTO "Words" ("Word") VALUES ('river'); INSERT INTO "Words" ("Word") VALUES ('rock'); INSERT INTO "Words" ("Word") VALUES ('rogue'); INSERT INTO "Words" ("Word") VALUES ('romance'); INSERT INTO "Words" ("Word") VALUES ('room'); INSERT INTO "Words" ("Word") VALUES ('root'); INSERT INTO "Words" ("Word") VALUES ('rose'); INSERT INTO "Words" ("Word") VALUES ('rot'); INSERT INTO "Words" ("Word") VALUES ('rough'); INSERT INTO "Words" ("Word") VALUES ('royal'); INSERT INTO "Words" ("Word") VALUES ('ruin'); INSERT INTO "Words" ("Word") VALUES ('rule'); INSERT INTO "Words" ("Word") VALUES ('rumor'); INSERT INTO "Words" ("Word") VALUES ('rust'); INSERT INTO "Words" ("Word") VALUES ('sabre'); INSERT INTO "Words" ("Word") VALUES ('sack'); INSERT INTO "Words" ("Word") VALUES ('saint'); INSERT INTO "Words" ("Word") VALUES ('salt'); INSERT INTO "Words" ("Word") VALUES ('salve'); INSERT INTO "Words" ("Word") VALUES ('sap'); INSERT INTO "Words" ("Word") VALUES ('satin'); INSERT INTO "Words" ("Word") VALUES ('savage'); INSERT INTO "Words" ("Word") VALUES ('savagery'); INSERT INTO "Words" ("Word") VALUES ('savior'); INSERT INTO "Words" ("Word") VALUES ('saw'); INSERT INTO "Words" ("Word") VALUES ('scab'); INSERT INTO "Words" ("Word") VALUES ('scald'); INSERT INTO "Words" ("Word") VALUES ('scar'); INSERT INTO "Words" ("Word") VALUES ('scold'); INSERT INTO "Words" ("Word") VALUES ('scorpion'); INSERT INTO "Words" ("Word") VALUES ('scourge'); INSERT INTO "Words" ("Word") VALUES ('scream'); INSERT INTO "Words" ("Word") VALUES ('scum'); INSERT INTO "Words" ("Word") VALUES ('sea'); INSERT INTO "Words" ("Word") VALUES ('seal'); INSERT INTO "Words" ("Word") VALUES ('seam'); INSERT INTO "Words" ("Word") VALUES ('season'); INSERT INTO "Words" ("Word") VALUES ('secret'); INSERT INTO "Words" ("Word") VALUES ('seduce'); INSERT INTO "Words" ("Word") VALUES ('seed'); INSERT INTO "Words" ("Word") VALUES ('see'); INSERT INTO "Words" ("Word") VALUES ('seize'); INSERT INTO "Words" ("Word") VALUES ('serpent'); INSERT INTO "Words" ("Word") VALUES ('servant'); INSERT INTO "Words" ("Word") VALUES ('serve'); INSERT INTO "Words" ("Word") VALUES ('sever'); INSERT INTO "Words" ("Word") VALUES ('sewer'); INSERT INTO "Words" ("Word") VALUES ('shadow'); INSERT INTO "Words" ("Word") VALUES ('shaft'); INSERT INTO "Words" ("Word") VALUES ('shank'); INSERT INTO "Words" ("Word") VALUES ('shark'); INSERT INTO "Words" ("Word") VALUES ('shear'); INSERT INTO "Words" ("Word") VALUES ('sheen'); INSERT INTO "Words" ("Word") VALUES ('shell'); INSERT INTO "Words" ("Word") VALUES ('shelter'); INSERT INTO "Words" ("Word") VALUES ('shield'); INSERT INTO "Words" ("Word") VALUES ('shimmer'); INSERT INTO "Words" ("Word") VALUES ('ship'); INSERT INTO "Words" ("Word") VALUES ('shoot'); INSERT INTO "Words" ("Word") VALUES ('show'); INSERT INTO "Words" ("Word") VALUES ('shower'); INSERT INTO "Words" ("Word") VALUES ('shred'); INSERT INTO "Words" ("Word") VALUES ('shriek'); INSERT INTO "Words" ("Word") VALUES ('shut'); INSERT INTO "Words" ("Word") VALUES ('sick'); INSERT INTO "Words" ("Word") VALUES ('sickness'); INSERT INTO "Words" ("Word") VALUES ('siege'); INSERT INTO "Words" ("Word") VALUES ('silence'); INSERT INTO "Words" ("Word") VALUES ('silk'); INSERT INTO "Words" ("Word") VALUES ('silky'); INSERT INTO "Words" ("Word") VALUES ('silt'); INSERT INTO "Words" ("Word") VALUES ('silver'); INSERT INTO "Words" ("Word") VALUES ('sin'); INSERT INTO "Words" ("Word") VALUES ('sinew'); INSERT INTO "Words" ("Word") VALUES ('sing'); INSERT INTO "Words" ("Word") VALUES ('sister'); INSERT INTO "Words" ("Word") VALUES ('skirt'); INSERT INTO "Words" ("Word") VALUES ('skull'); INSERT INTO "Words" ("Word") VALUES ('skulk'); INSERT INTO "Words" ("Word") VALUES ('skunk'); INSERT INTO "Words" ("Word") VALUES ('sky'); INSERT INTO "Words" ("Word") VALUES ('slaughter'); INSERT INTO "Words" ("Word") VALUES ('slave'); INSERT INTO "Words" ("Word") VALUES ('slay'); INSERT INTO "Words" ("Word") VALUES ('slim'); INSERT INTO "Words" ("Word") VALUES ('slime'); INSERT INTO "Words" ("Word") VALUES ('slink'); INSERT INTO "Words" ("Word") VALUES ('slit'); INSERT INTO "Words" ("Word") VALUES ('slither'); INSERT INTO "Words" ("Word") VALUES ('sliver'); INSERT INTO "Words" ("Word") VALUES ('sloth'); INSERT INTO "Words" ("Word") VALUES ('slug'); INSERT INTO "Words" ("Word") VALUES ('smash'); INSERT INTO "Words" ("Word") VALUES ('smile'); INSERT INTO "Words" ("Word") VALUES ('smith'); INSERT INTO "Words" ("Word") VALUES ('smoke'); INSERT INTO "Words" ("Word") VALUES ('smooth'); INSERT INTO "Words" ("Word") VALUES ('smoulder'); INSERT INTO "Words" ("Word") VALUES ('snack'); INSERT INTO "Words" ("Word") VALUES ('snake'); INSERT INTO "Words" ("Word") VALUES ('sneer'); INSERT INTO "Words" ("Word") VALUES ('snicker'); INSERT INTO "Words" ("Word") VALUES ('snot'); INSERT INTO "Words" ("Word") VALUES ('snuggle'); INSERT INTO "Words" ("Word") VALUES ('soil'); INSERT INTO "Words" ("Word") VALUES ('soldier'); INSERT INTO "Words" ("Word") VALUES ('soot'); INSERT INTO "Words" ("Word") VALUES ('soothe'); INSERT INTO "Words" ("Word") VALUES ('sorrow'); INSERT INTO "Words" ("Word") VALUES ('soul'); INSERT INTO "Words" ("Word") VALUES ('sound'); INSERT INTO "Words" ("Word") VALUES ('south'); INSERT INTO "Words" ("Word") VALUES ('spasm'); INSERT INTO "Words" ("Word") VALUES ('spawn'); INSERT INTO "Words" ("Word") VALUES ('spear'); INSERT INTO "Words" ("Word") VALUES ('spell'); INSERT INTO "Words" ("Word") VALUES ('spew'); INSERT INTO "Words" ("Word") VALUES ('spice'); INSERT INTO "Words" ("Word") VALUES ('spider'); INSERT INTO "Words" ("Word") VALUES ('spike'); INSERT INTO "Words" ("Word") VALUES ('spin'); INSERT INTO "Words" ("Word") VALUES ('spine'); INSERT INTO "Words" ("Word") VALUES ('spirit'); INSERT INTO "Words" ("Word") VALUES ('spit'); INSERT INTO "Words" ("Word") VALUES ('spoil'); INSERT INTO "Words" ("Word") VALUES ('spoon'); INSERT INTO "Words" ("Word") VALUES ('spring'); INSERT INTO "Words" ("Word") VALUES ('spy'); INSERT INTO "Words" ("Word") VALUES ('squid'); INSERT INTO "Words" ("Word") VALUES ('squirm'); INSERT INTO "Words" ("Word") VALUES ('stab'); INSERT INTO "Words" ("Word") VALUES ('staff'); INSERT INTO "Words" ("Word") VALUES ('stalk'); INSERT INTO "Words" ("Word") VALUES ('stand'); INSERT INTO "Words" ("Word") VALUES ('star'); INSERT INTO "Words" ("Word") VALUES ('steed'); INSERT INTO "Words" ("Word") VALUES ('starve'); INSERT INTO "Words" ("Word") VALUES ('steal'); INSERT INTO "Words" ("Word") VALUES ('steel'); INSERT INTO "Words" ("Word") VALUES ('stench'); INSERT INTO "Words" ("Word") VALUES ('stern'); INSERT INTO "Words" ("Word") VALUES ('stick'); INSERT INTO "Words" ("Word") VALUES ('sticky'); INSERT INTO "Words" ("Word") VALUES ('stone'); INSERT INTO "Words" ("Word") VALUES ('storm'); INSERT INTO "Words" ("Word") VALUES ('strange'); INSERT INTO "Words" ("Word") VALUES ('stranger'); INSERT INTO "Words" ("Word") VALUES ('strap'); INSERT INTO "Words" ("Word") VALUES ('straw'); INSERT INTO "Words" ("Word") VALUES ('stray'); INSERT INTO "Words" ("Word") VALUES ('strength'); INSERT INTO "Words" ("Word") VALUES ('stretch'); INSERT INTO "Words" ("Word") VALUES ('strike'); INSERT INTO "Words" ("Word") VALUES ('stroke'); INSERT INTO "Words" ("Word") VALUES ('stunt'); INSERT INTO "Words" ("Word") VALUES ('stupid'); INSERT INTO "Words" ("Word") VALUES ('stutter'); INSERT INTO "Words" ("Word") VALUES ('style'); INSERT INTO "Words" ("Word") VALUES ('subordinate'); INSERT INTO "Words" ("Word") VALUES ('suck'); INSERT INTO "Words" ("Word") VALUES ('suffer'); INSERT INTO "Words" ("Word") VALUES ('sullen'); INSERT INTO "Words" ("Word") VALUES ('summer'); INSERT INTO "Words" ("Word") VALUES ('sunder'); INSERT INTO "Words" ("Word") VALUES ('supper'); INSERT INTO "Words" ("Word") VALUES ('surprise'); INSERT INTO "Words" ("Word") VALUES ('swamp'); INSERT INTO "Words" ("Word") VALUES ('sweat'); INSERT INTO "Words" ("Word") VALUES ('sweet'); INSERT INTO "Words" ("Word") VALUES ('sweetness'); INSERT INTO "Words" ("Word") VALUES ('swift'); INSERT INTO "Words" ("Word") VALUES ('swim'); INSERT INTO "Words" ("Word") VALUES ('swine'); INSERT INTO "Words" ("Word") VALUES ('sword'); INSERT INTO "Words" ("Word") VALUES ('syrup'); INSERT INTO "Words" ("Word") VALUES ('take'); INSERT INTO "Words" ("Word") VALUES ('tail'); INSERT INTO "Words" ("Word") VALUES ('talon'); INSERT INTO "Words" ("Word") VALUES ('tar'); INSERT INTO "Words" ("Word") VALUES ('tarnish'); INSERT INTO "Words" ("Word") VALUES ('tell'); INSERT INTO "Words" ("Word") VALUES ('tempest'); INSERT INTO "Words" ("Word") VALUES ('tear'); INSERT INTO "Words" ("Word") VALUES ('terrible'); INSERT INTO "Words" ("Word") VALUES ('terror'); INSERT INTO "Words" ("Word") VALUES ('terrorize'); INSERT INTO "Words" ("Word") VALUES ('thief'); INSERT INTO "Words" ("Word") VALUES ('thirst'); INSERT INTO "Words" ("Word") VALUES ('thorn'); INSERT INTO "Words" ("Word") VALUES ('thrall'); INSERT INTO "Words" ("Word") VALUES ('throat'); INSERT INTO "Words" ("Word") VALUES ('throne'); INSERT INTO "Words" ("Word") VALUES ('throw'); INSERT INTO "Words" ("Word") VALUES ('thunder'); INSERT INTO "Words" ("Word") VALUES ('tick'); INSERT INTO "Words" ("Word") VALUES ('tight'); INSERT INTO "Words" ("Word") VALUES ('time'); INSERT INTO "Words" ("Word") VALUES ('toad'); INSERT INTO "Words" ("Word") VALUES ('toe'); INSERT INTO "Words" ("Word") VALUES ('tomb'); INSERT INTO "Words" ("Word") VALUES ('tome'); INSERT INTO "Words" ("Word") VALUES ('tongue'); INSERT INTO "Words" ("Word") VALUES ('tooth'); INSERT INTO "Words" ("Word") VALUES ('torment'); INSERT INTO "Words" ("Word") VALUES ('touch'); INSERT INTO "Words" ("Word") VALUES ('tour'); INSERT INTO "Words" ("Word") VALUES ('tower'); INSERT INTO "Words" ("Word") VALUES ('trail'); INSERT INTO "Words" ("Word") VALUES ('trance'); INSERT INTO "Words" ("Word") VALUES ('trap'); INSERT INTO "Words" ("Word") VALUES ('trash'); INSERT INTO "Words" ("Word") VALUES ('treasure'); INSERT INTO "Words" ("Word") VALUES ('treat'); INSERT INTO "Words" ("Word") VALUES ('treaty'); INSERT INTO "Words" ("Word") VALUES ('trench'); INSERT INTO "Words" ("Word") VALUES ('tribe'); INSERT INTO "Words" ("Word") VALUES ('trick'); INSERT INTO "Words" ("Word") VALUES ('trickery'); INSERT INTO "Words" ("Word") VALUES ('trim'); INSERT INTO "Words" ("Word") VALUES ('trouble'); INSERT INTO "Words" ("Word") VALUES ('tug'); INSERT INTO "Words" ("Word") VALUES ('tulip'); INSERT INTO "Words" ("Word") VALUES ('tumble'); INSERT INTO "Words" ("Word") VALUES ('tumor'); INSERT INTO "Words" ("Word") VALUES ('turmoil'); INSERT INTO "Words" ("Word") VALUES ('tusk'); INSERT INTO "Words" ("Word") VALUES ('tweet'); INSERT INTO "Words" ("Word") VALUES ('twilight'); INSERT INTO "Words" ("Word") VALUES ('twine'); INSERT INTO "Words" ("Word") VALUES ('twist'); INSERT INTO "Words" ("Word") VALUES ('ugly'); INSERT INTO "Words" ("Word") VALUES ('ultimate'); INSERT INTO "Words" ("Word") VALUES ('uncle'); INSERT INTO "Words" ("Word") VALUES ('unholy'); INSERT INTO "Words" ("Word") VALUES ('unkempt'); INSERT INTO "Words" ("Word") VALUES ('unseen'); INSERT INTO "Words" ("Word") VALUES ('urn'); INSERT INTO "Words" ("Word") VALUES ('useless'); INSERT INTO "Words" ("Word") VALUES ('vandal'); INSERT INTO "Words" ("Word") VALUES ('vegetable'); INSERT INTO "Words" ("Word") VALUES ('vegetation'); INSERT INTO "Words" ("Word") VALUES ('velvet'); INSERT INTO "Words" ("Word") VALUES ('venom'); INSERT INTO "Words" ("Word") VALUES ('vermin'); INSERT INTO "Words" ("Word") VALUES ('vile'); INSERT INTO "Words" ("Word") VALUES ('violate'); INSERT INTO "Words" ("Word") VALUES ('violence'); INSERT INTO "Words" ("Word") VALUES ('violet'); INSERT INTO "Words" ("Word") VALUES ('viper'); INSERT INTO "Words" ("Word") VALUES ('voice'); INSERT INTO "Words" ("Word") VALUES ('void'); INSERT INTO "Words" ("Word") VALUES ('volcano'); INSERT INTO "Words" ("Word") VALUES ('vomit'); INSERT INTO "Words" ("Word") VALUES ('vulture'); INSERT INTO "Words" ("Word") VALUES ('wail'); INSERT INTO "Words" ("Word") VALUES ('wander'); INSERT INTO "Words" ("Word") VALUES ('war'); INSERT INTO "Words" ("Word") VALUES ('warrior'); INSERT INTO "Words" ("Word") VALUES ('wasp'); INSERT INTO "Words" ("Word") VALUES ('waste'); INSERT INTO "Words" ("Word") VALUES ('watch'); INSERT INTO "Words" ("Word") VALUES ('watchful'); INSERT INTO "Words" ("Word") VALUES ('wave'); INSERT INTO "Words" ("Word") VALUES ('wear'); INSERT INTO "Words" ("Word") VALUES ('weasel'); INSERT INTO "Words" ("Word") VALUES ('weave'); INSERT INTO "Words" ("Word") VALUES ('weed'); INSERT INTO "Words" ("Word") VALUES ('weigh'); INSERT INTO "Words" ("Word") VALUES ('weird'); INSERT INTO "Words" ("Word") VALUES ('west'); INSERT INTO "Words" ("Word") VALUES ('wheat'); INSERT INTO "Words" ("Word") VALUES ('wheel'); INSERT INTO "Words" ("Word") VALUES ('whip'); INSERT INTO "Words" ("Word") VALUES ('whisk'); INSERT INTO "Words" ("Word") VALUES ('whisker'); INSERT INTO "Words" ("Word") VALUES ('whisky'); INSERT INTO "Words" ("Word") VALUES ('whisper'); INSERT INTO "Words" ("Word") VALUES ('white'); INSERT INTO "Words" ("Word") VALUES ('wicked'); INSERT INTO "Words" ("Word") VALUES ('wild'); INSERT INTO "Words" ("Word") VALUES ('wilderness'); INSERT INTO "Words" ("Word") VALUES ('will'); INSERT INTO "Words" ("Word") VALUES ('wing'); INSERT INTO "Words" ("Word") VALUES ('winter'); INSERT INTO "Words" ("Word") VALUES ('wisp'); INSERT INTO "Words" ("Word") VALUES ('witch'); INSERT INTO "Words" ("Word") VALUES ('wonder'); INSERT INTO "Words" ("Word") VALUES ('wood'); INSERT INTO "Words" ("Word") VALUES ('work'); INSERT INTO "Words" ("Word") VALUES ('worm'); INSERT INTO "Words" ("Word") VALUES ('wraith'); INSERT INTO "Words" ("Word") VALUES ('wrath'); INSERT INTO "Words" ("Word") VALUES ('wretch'); INSERT INTO "Words" ("Word") VALUES ('yarn'); INSERT INTO "Words" ("Word") VALUES ('year'); INSERT INTO "Words" ("Word") VALUES ('yellow'); INSERT INTO "Words" ("Word") VALUES ('young'); INSERT INTO "Words" ("Word") VALUES ('youth'); INSERT INTO "Words" ("Word") VALUES ('zeal'); INSERT INTO "Words" ("Word") VALUES ('zealot'); INSERT INTO "Words" ("Word") VALUES ('zephyr'); INSERT INTO "Utility" ("ID","Buildable","Item") VALUES ('Door',1,NULL); INSERT INTO "Utility" ("ID","Buildable","Item") VALUES ('Torch',1,NULL); INSERT INTO "Utility" ("ID","Buildable","Item") VALUES ('WallTorch',1,'Torch'); INSERT INTO "Utility" ("ID","Buildable","Item") VALUES ('BigTorch',1,NULL); INSERT INTO "Utility" ("ID","Buildable","Item") VALUES ('Brazier',1,NULL); INSERT INTO "Utility" ("ID","Buildable","Item") VALUES ('AlarmBell',1,NULL); INSERT INTO "Uniforms" ("ID","Name","UserDefined") VALUES (1,'Leather',0); INSERT INTO "Uniforms" ("ID","Name","UserDefined") VALUES (2,'Chain',0); INSERT INTO "Uniforms" ("ID","Name","UserDefined") VALUES (3,'Plate',0); INSERT INTO "Uniforms" ("ID","Name","UserDefined") VALUES (4,'Heavy Plate',0); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('HeadArmor','Leather','LeatherHelm','Leather'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('HeadArmor','Bone','SkullHelmet','Bone'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('HeadArmor','Chainmail','ChainHelm','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('HeadArmor','Plate','PlateHelm','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('HeadArmor','HeavyPlate','HeavyPlateHelm','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('ChestArmor','Leather','LeatherCuirass','Leather'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('ChestArmor','Bone','BoneShirt','Bone'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('ChestArmor','Chainmail','ChainShirt','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('ChestArmor','Plate','PlateChest','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('ChestArmor','HeavyPlate','HeavyPlateChest','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('ArmArmor','Leather','LeatherBracer','Leather'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('ArmArmor','Chainmail','ChainBracer','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('ArmArmor','Plate','PlatePauldron','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('ArmArmor','HeavyPlate','HeavyPlatePauldron','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('HandArmor','Leather','LeatherGlove','Leather'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('HandArmor','Chainmail','ChainGlove','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('HandArmor','Plate','PlateGlove','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('HandArmor','HeavyPlate','HeavyPlateGlove','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('LegArmor','Leather','LeatherPants','Leather'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('LegArmor','Chainmail','ChainPants','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('LegArmor','Plate','PlateGreaves','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('LegArmor','HeavyPlate','HeavyPlateGreaves','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('FootArmor','Leather','LeatherBoot','Leather'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('FootArmor','Chainmail','ChainBoot','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('FootArmor','Plate','PlateBoot','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('FootArmor','HeavyPlate','HeavyPlateBoot','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('LeftHandHeld','Torch','Torch','Wood'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('RightHandHeld','Sword','Sword','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('RightHandHeld','Pickaxe','Pickaxe','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('RightHandHeld','FellingAxe','FellingAxe','Metal'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('Back','Backpack','Backpack','Leather'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('Back','Quiver','Quiver','Leather'); INSERT INTO "Uniform_Slots" ("ID","Type","ItemID","MaterialType") VALUES ('Back','AmmoPouch','AmmoPouch','Leather'); INSERT INTO "Uniform" ("ID","Sides") VALUES ('HeadArmor',1); INSERT INTO "Uniform" ("ID","Sides") VALUES ('ChestArmor',1); INSERT INTO "Uniform" ("ID","Sides") VALUES ('ArmArmor',2); INSERT INTO "Uniform" ("ID","Sides") VALUES ('HandArmor',2); INSERT INTO "Uniform" ("ID","Sides") VALUES ('LegArmor',1); INSERT INTO "Uniform" ("ID","Sides") VALUES ('FootArmor',2); INSERT INTO "Uniform" ("ID","Sides") VALUES ('LeftHandHeld',1); INSERT INTO "Uniform" ("ID","Sides") VALUES ('RightHandHeld',1); INSERT INTO "Uniform" ("ID","Sides") VALUES ('Back',1); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('PineTree',0,'0 0 0',NULL,'PineTrunk1'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('PineTree',0,'0 0 1',NULL,'PineTrunk2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('PineTree',0,'1 0 1','FR','PineTree1'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('PineTree',0,'0 1 1','FL','PineTree1'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('PineTree',0,'-1 0 1','BL','PineTree1'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('PineTree',0,'0 -1 1','BR','PineTree1'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('PineTree',0,'0 0 2',NULL,'PineTrunk2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('PineTree',0,'1 0 2','FR','PineTree2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('PineTree',0,'0 1 2','FL','PineTree2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('PineTree',0,'-1 0 2','BL','PineTree2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('PineTree',0,'0 -1 2','BR','PineTree2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('PineTree',0,'0 0 3',NULL,'PineTrunk2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('PineTree',0,'1 0 3','FR','PineTree3'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('PineTree',0,'0 1 3','FL','PineTree3'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('PineTree',0,'-1 0 3','BL','PineTree3'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('PineTree',0,'0 -1 3','BR','PineTree3'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('PineTree',0,'0 0 4',NULL,'PineTop'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',0,'0 0 0',NULL,'AppleTreeTrunkBottom'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',0,'0 0 1',NULL,'AppleTreeTrunkMiddle'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',0,'1 0 1','FR','AppleTreeBottom'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',0,'0 1 1','FL','AppleTreeBottom'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',0,'-1 0 1','BL','AppleTreeBottom'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',0,'0 -1 1','BR','AppleTreeBottom'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',0,'1 1 1','FR','AppleTreeBottomCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',0,'-1 1 1','FL','AppleTreeBottomCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',0,'-1 -1 1','BL','AppleTreeBottomCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',0,'1 -1 1','BR','AppleTreeBottomCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',1,'-1 -1 2',NULL,'AppleTreeMiddle'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',1,'-1 0 2',NULL,'AppleTreeMiddle'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',1,'-1 1 2',NULL,'AppleTreeMiddle'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',1,'0 -1 2',NULL,'AppleTreeMiddle'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',0,'0 0 2',NULL,'AppleTreeTrunkMiddle'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',1,'0 1 2',NULL,'AppleTreeMiddle'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',1,'1 -1 2',NULL,'AppleTreeMiddle'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',1,'1 0 2',NULL,'AppleTreeMiddle'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',1,'1 1 2',NULL,'AppleTreeMiddle'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',1,'1 0 3','FR','AppleTreeTop'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',1,'0 1 3','FL','AppleTreeTop'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',1,'-1 0 3','BL','AppleTreeTop'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',1,'0 -1 3','BR','AppleTreeTop'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',0,'0 0 3',NULL,'AppleTreeMiddleTop'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',1,'-1 1 3','FL','AppleTreeTopCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',1,'1 1 3','FR','AppleTreeTopCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',1,'-1 -1 3','BL','AppleTreeTopCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('AppleTree',1,'1 -1 3','BR','AppleTreeTopCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',0,'0 0 0',NULL,'OrangeTreeTrunkBottom'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',0,'0 0 1',NULL,'OrangeTreeTrunkMiddle'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',0,'1 0 1','FR','OrangeTreeBottom'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',0,'0 1 1','FL','OrangeTreeBottom'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',0,'-1 0 1','BL','OrangeTreeBottom'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',0,'0 -1 1','BR','OrangeTreeBottom'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',0,'1 1 1','FR','OrangeTreeBottomCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',0,'-1 1 1','FL','OrangeTreeBottomCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',0,'-1 -1 1','BL','OrangeTreeBottomCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',0,'1 -1 1','BR','OrangeTreeBottomCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',1,'-1 -1 2','BL','OrangeTreeMiddleCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',1,'-1 0 2',NULL,'OrangeTreeMiddle'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',1,'-1 1 2','FL','OrangeTreeMiddleCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',1,'0 -1 2',NULL,'OrangeTreeMiddle'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',0,'0 0 2',NULL,'OrangeTreeTrunkMiddle'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',1,'0 1 2',NULL,'OrangeTreeMiddle'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',1,'1 -1 2','BR','OrangeTreeMiddleCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',1,'1 0 2',NULL,'OrangeTreeMiddle'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',1,'1 1 2','FR','OrangeTreeMiddleCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',1,'1 0 3','FR','OrangeTreeTop'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',1,'0 1 3','FL','OrangeTreeTop'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',1,'-1 0 3','BL','OrangeTreeTop'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',1,'0 -1 3','BR','OrangeTreeTop'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',0,'0 0 3',NULL,'OrangeTreeMiddleTop'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',1,'-1 1 3','FL','OrangeTreeTopCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',1,'1 1 3','FR','OrangeTreeTopCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',1,'-1 -1 3','BL','OrangeTreeTopCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OrangeTree',1,'1 -1 3','BR','OrangeTreeTopCorner'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'0 0 0',NULL,'OakTree21'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'0 0 1',NULL,'OakTree22'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'-1 1 1',NULL,'OakTree1'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'0 1 1',NULL,'OakTree2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'1 1 1',NULL,'OakTree3'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'1 0 1',NULL,'OakTree4'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'1 -1 1',NULL,'OakTree5'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'-1 -1 1',NULL,'OakTree6_2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'-1 0 1',NULL,'OakTree6_3'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'0 -1 1',NULL,'OakTree6_1'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'0 0 2',NULL,'OakTree22'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'-1 1 2',NULL,'OakTree7'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'0 1 2',NULL,'OakTree8'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'1 1 2',NULL,'OakTree9'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'1 0 2',NULL,'OakTree10'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'1 -1 2',NULL,'OakTree11'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'-1 -1 2',NULL,'OakTree12_2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'-1 0 2',NULL,'OakTree12_3'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'0 -1 2',NULL,'OakTree12_1'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'-1 1 3',NULL,'OakTree23'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'0 1 3',NULL,'OakTree24'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'1 1 3',NULL,'OakTree25'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'1 0 3',NULL,'OakTree26'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'1 -1 3',NULL,'OakTree27'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'-1 0 3',NULL,'OakTree28'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'0 0 3',NULL,'OakTree29'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'0 -1 3',NULL,'OakTree210'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('OakTree',0,'-1 -1 3',NULL,'OakTree211'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'0 0 0',NULL,'WillowTree21'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'0 0 1',NULL,'WillowTree22'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'-1 1 1',NULL,'WillowTree1'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'0 1 1',NULL,'WillowTree2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'1 1 1',NULL,'WillowTree3'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'1 0 1',NULL,'WillowTree4'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'1 -1 1',NULL,'WillowTree5'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'-1 -1 1',NULL,'WillowTree6_2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'-1 0 1',NULL,'WillowTree6_3'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'0 -1 1',NULL,'WillowTree6_1'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'0 0 2',NULL,'WillowTree22'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'-1 1 2',NULL,'WillowTree7'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'0 1 2',NULL,'WillowTree8'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'1 1 2',NULL,'WillowTree9'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'1 0 2',NULL,'WillowTree10'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'1 -1 2',NULL,'WillowTree11'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'-1 -1 2',NULL,'WillowTree12_2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'-1 0 2',NULL,'WillowTree12_3'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'0 -1 2',NULL,'WillowTree12_1'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'-1 1 3',NULL,'WillowTree23'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'0 1 3',NULL,'WillowTree24'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'1 1 3',NULL,'WillowTree25'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'1 0 3',NULL,'WillowTree26'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'1 -1 3',NULL,'WillowTree27'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'-1 0 3',NULL,'WillowTree28'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'0 0 3',NULL,'WillowTree29'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'0 -1 3',NULL,'WillowTree210'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('WillowTree',0,'-1 -1 3',NULL,'WillowTree211'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom1',0,'0 0 0',NULL,'Mushroom1_1'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom1',0,'0 0 1',NULL,'Mushroom1_2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom1',0,'0 0 2',NULL,'Mushroom1_3'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom1',0,'0 0 3',NULL,'Mushroom1_4'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'0 0 0',NULL,'Mushroom2_14'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'0 0 1',NULL,'Mushroom2_22'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'0 0 2',NULL,'Mushroom2_28'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'0 0 3',NULL,'Mushroom2_16'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'-1 1 3','FL','Mushroom2_3_11'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'0 1 3',NULL,'Mushroom2_16'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'1 1 3',NULL,'Mushroom2_3_11'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'1 0 3',NULL,'Mushroom2_16'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'1 -1 3','BR','Mushroom2_3_11'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'0 -1 3',NULL,'Mushroom2_16'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'-1 -1 3','BL','Mushroom2_3_11'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'-1 0 3',NULL,'Mushroom2_16'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'-1 2 3','FL','Mushroom2_3_21'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'0 2 3',NULL,'Mushroom2_3_02'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'1 2 3',NULL,'Mushroom2_3_12'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'2 2 3',NULL,'Mushroom2_3_22'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'2 1 3',NULL,'Mushroom2_3_21'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'2 0 3','BR','Mushroom2_3_02'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'2 -1 3','BR','Mushroom2_3_12'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'0 0 4',NULL,'Mushroom2_19'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'-1 0 4','BL','Mushroom2_4_10'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'0 -1 4','BR','Mushroom2_4_10'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'1 -1 4','BR','Mushroom2_4_11'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'1 0 4',NULL,'Mushroom2_4_10'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'1 1 4',NULL,'Mushroom2_4_11'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'0 1 4','FL','Mushroom2_4_10'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'-1 1 4','FL','Mushroom2_4_11'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom3',0,'0 0 0',NULL,'Mushroom2_14'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom3',0,'0 0 1',NULL,'Mushroom2_22'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom3',0,'0 0 2',NULL,'Mushroom2_16'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom3',0,'1 0 2',NULL,'Mushroom3_2_10'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom3',0,'0 1 2','FL','Mushroom3_2_10'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom3',0,'-1 0 2','BL','Mushroom3_2_10'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom3',0,'0 -1 2','BR','Mushroom3_2_10'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom3',0,'1 1 2',NULL,'Mushroom3_2_11'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom3',0,'-1 1 2','FL','Mushroom3_2_11'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom3',0,'-1 -1 2','BL','Mushroom3_2_11'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom3',0,'1 -1 2','BR','Mushroom3_2_11'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom3',0,'0 0 3',NULL,'Mushroom2_6_2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom3',0,'1 0 3',NULL,'Mushroom3_3_10'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom3',0,'0 1 3','FL','Mushroom3_3_10'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'0 0 0',NULL,'BirchTree1'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'0 0 1',NULL,'BirchTree2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'1 0 1',NULL,'BirchTree9'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'0 1 1',NULL,'BirchTree6'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'-1 0 1',NULL,'BirchTree7'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'0 -1 1',NULL,'BirchTree8'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'0 2 2',NULL,'BirchTree5'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'2 0 2',NULL,'BirchTree10'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'0 0 2',NULL,'BirchTree2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'1 0 3',NULL,'BirchTree9'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'0 1 3',NULL,'BirchTree6'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'-1 0 3',NULL,'BirchTree7'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'0 -1 3',NULL,'BirchTree8'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'0 2 4',NULL,'BirchTree5'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'2 0 4',NULL,'BirchTree11_1'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'0 0 3',NULL,'BirchTree2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'0 0 4',NULL,'BirchTree2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'1 1 3',NULL,'BirchTree11_1'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'-1 0 5',NULL,'BirchTree20_3'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'-1 -1 5',NULL,'BirchTree11_5'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'0 -1 5',NULL,'BirchTree20_4'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'1 1 5',NULL,'BirchTree11_5'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'0 1 5',NULL,'BirchTree20_2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'1 0 5',NULL,'BirchTree20_1'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'0 0 5',NULL,'BirchTree2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'0 0 6',NULL,'BirchTree15'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'0 -2 2',NULL,'BirchTree5_10'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'-2 0 2',NULL,'BirchTree10_5'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'0 -2 4',NULL,'BirchTree5_10'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'-2 0 4',NULL,'BirchTree10_5'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'1 -1 3',NULL,'BirchTree11_2'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'-1 -1 3',NULL,'BirchTree11_3'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'-1 1 3',NULL,'BirchTree11_4'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'1 -1 5',NULL,'BirchTree11_6'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('BirchTree',0,'-1 1 5',NULL,'BirchTree11_6'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'-2 -2 3','BL','Mushroom2_3_22'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'-2 -1 3','BL','Mushroom2_3_21'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'-2 1 3','FL','Mushroom2_3_12'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'-2 2 3','FL','Mushroom2_3_22'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'-1 -2 3','BL','Mushroom2_3_12'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'0 -2 3','BL','Mushroom2_3_02'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'1 -2 3','BR','Mushroom2_3_21'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'2 -2 3','BR','Mushroom2_3_22'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'-2 0 3','FL','Mushroom2_3_02'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom2',0,'-1 -1 4','BL','Mushroom2_4_11'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom3',0,'-1 0 3','BL','Mushroom3_3_10'); INSERT INTO "TreeLayouts_Layout" ("ID","FruitPos","Offset","Rotation","SpriteID") VALUES ('Mushroom3',0,'0 -1 3','BR','Mushroom3_3_10'); INSERT INTO "TreeLayouts" ("ID") VALUES ('PineTree'); INSERT INTO "TreeLayouts" ("ID") VALUES ('AppleTree'); INSERT INTO "TreeLayouts" ("ID") VALUES ('OrangeTree'); INSERT INTO "TreeLayouts" ("ID") VALUES ('OakTree'); INSERT INTO "TreeLayouts" ("ID") VALUES ('WillowTree'); INSERT INTO "TreeLayouts" ("ID") VALUES ('Mushroom1'); INSERT INTO "TreeLayouts" ("ID") VALUES ('Mushroom2'); INSERT INTO "TreeLayouts" ("ID") VALUES ('Mushroom3'); INSERT INTO "TreeLayouts" ("ID") VALUES ('BirchTree'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Floor','floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Wall','wall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$PileOf','Pile of'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Stockpile','Stockpile'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Stockpiles','Stockpiles'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Grove','Grove'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Farm','Farm'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Pasture','Pasture'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Room','Room'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Door','Door'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Population','Population'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Kingdom','Kingdom'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GnomeList','Gnome List'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Professions','Professions'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Skills','Skills'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Inventory','Inventory'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Build','Build'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Gnome','Gnome'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Workshop','Workshop'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Debug','Debug'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Overview','Overview'); INSERT INTO "Translation" ("ID","Text") VALUES ('$LastActions','Last Actions'); INSERT INTO "Translation" ("ID","Text") VALUES ('$PlantTree','Plant Tree'); INSERT INTO "Translation" ("ID","Text") VALUES ('$BuildStorage','Build Storage'); INSERT INTO "Translation" ("ID","Text") VALUES ('$BuildFurniture','Build Furniture'); INSERT INTO "Translation" ("ID","Text") VALUES ('$BuildDoor','Build Door'); INSERT INTO "Translation" ("ID","Text") VALUES ('$BuildUtility','Build Utility'); INSERT INTO "Translation" ("ID","Text") VALUES ('$BuildItem','Build Item'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Utility','Utility'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemHistory','Item History'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ButtonBack','Back'); INSERT INTO "Translation" ("ID","Text") VALUES ('$TechName_TechWood','wood tech'); INSERT INTO "Translation" ("ID","Text") VALUES ('$TechName_TechStone','stone tech'); INSERT INTO "Translation" ("ID","Text") VALUES ('$TechName_TechMetal','metal tech'); INSERT INTO "Translation" ("ID","Text") VALUES ('$TechName_TechEngineer','engineering tech'); INSERT INTO "Translation" ("ID","Text") VALUES ('$TechName_TechCloth','cloth tech'); INSERT INTO "Translation" ("ID","Text") VALUES ('$TechName_TechFood','food tech'); INSERT INTO "Translation" ("ID","Text") VALUES ('$TechName_TechMilitary','military tech'); INSERT INTO "Translation" ("ID","Text") VALUES ('$TechName_TechMagic','magic tech'); INSERT INTO "Translation" ("ID","Text") VALUES ('$TechName_TechLeather','leather tech'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SeasonName_Spring','Spring'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SeasonName_Summer','Summer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SeasonName_Autumn','Autumn'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SeasonName_Winter','Winter'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Crude','crude workbench'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Carpenter','carpenter'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Sawmill','sawmill'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Kitchen','kitchen'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Stonecutter','stonecutter'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Stonemason','stonemason'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Distillery','distillery'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Forge','forge'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Furnace','furnace'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Kiln','kiln'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Blacksmith','blacksmith'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Metalworker','metal worker'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Gemcutter','gem cutter'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Loom','loom'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Stonecarver','stone carver'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Woodcarver','wood carver'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Jeweler','jeweler'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Tailor','tailor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Bonecarver','bone carver'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Butcher','butcher'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_MarketStall','market stall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Prospector','prospector'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Dyer','dyer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Fishery','fishery'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_HauleItem','Haule item'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_HauleMultipleItems','Haule multiple items'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_Fish','Fish'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_Mine','Mine'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_DigHole','Dig hole'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_ExplorativeMine','Explorative mine'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_RemoveRamp','Remove ramp'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_RemoveFloor','Remove floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_Deconstruct','Deconstruct'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_RemovePlant','Remove plant'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_MineStairsUp','Mine stairs up'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_DigStairsDown','Dig stairs down'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_DigRampDown','Dig ramp down'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_BuildWall','Build wall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_BuildFence','Build fence'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_BuildFloor','Build floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_BuildWallFloor','Build wall with floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_BuildStairs','Build stairs'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_BuildScaffold','Build scaffolding'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_BuildRamp','Build ramp'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_BuildRampCorner','Build ramp corner'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_BuildWorkshop','Build workshop'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_BuildStorage','Build storage'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_BuildFurniture','build furniture'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_BuildItem','Build item'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_BuildDoor','Build door'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_BuildTorch','Build torch'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_Harvest','Harvest'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_HarvestTree','harvest tree'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_PlantTree','Plant tree'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_PlantTreeGrove','Plant tree in grove'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_Till','Till'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_Plant','Plant'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_PlantFarm','Plant farm'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_FellTree','Fell tree'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_CraftAtWorkshop','Craft at workshop'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_ManMarketStall','Man market stall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_ButcherFish','Butcher fish'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_LeadAnimalToPasture','Lead animal to pasture'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_HarvestAnimal','Harvest animal'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_ButcherAnimal','Butcher animal'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_Magic_Nature_SpeedGrowth','Cast nature spell,speed up growth'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_Magic_Geomancy_RevealOre','Cast geomancy spell,reveal ore'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_AlarmBell','alarm bell'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_AlarmBellBase','alarm bell base'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_AlarmBellBell','alarm bell bell'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_AmmoPouch','ammo pouch'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Anvil','anvil'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_AppleTree','apple tree'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Bag','bag'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_BallPeenHammer','ballpeen hammer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Bandage','bandage'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Bar','bar'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Barrel','barrel'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Beans','beans'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Bed','bed'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_WoodBedFrame','wood bed frame'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Beer','beer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Bellows','bellows'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Berries','berries'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Block','block'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Brick','brick'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Bolt','bolt of cloth'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Bone','bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_BoneShirt','bone shirt'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Bread','bread'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Bucket','bucket'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Cabinet','cabinet'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Chair','chair'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Cheese','cheese'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_CheeseOmelette','cheese omelette'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Chisel','chisel'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Clipping','clipping'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Coin','coin'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Crate','crate'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_CuttingWheel','cutting wheel'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Door','door'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Dresser','dresser'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Dye','dye'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Egg','egg'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_FancyBed','four poster bed'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_FancyBedFrame','four poster bed frame'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_FellingAxeBase','felling axe base'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_FellingAxeHead','felling axe head'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_FellingAxe','felling axe'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_File','file'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_FishBone','fish bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Fruit','fruit'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Furnace','furnace'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Gem','gem'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_GemmedRing','gemmed ring'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_GemmedNecklace','gemmed necklace'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Grain','grain'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Haft','haft'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Hearth','hearth'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Hide','hide'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Hilt','hilt'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Knife','knife'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_KnifeBlade','knife blade'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_KnifeHilt','knife hilt'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_LeatherStrap','leather strap'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Leaves','leaves'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_LogFloor','log floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_LogWall','log wall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Loom','loom'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Mattress','mattress'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Meat','meat'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Milk','milk'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Mold','mold'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Mushroom','mushroom'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_MushroomOmelette','mushroom omelette'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Necklace','necklace'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Needle','needle'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_OrangeTree','orange tree'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Padding','padding'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_PetRock','pet rock'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Pickaxe','pickaxe'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_PickaxeBase','pickaxe base'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_PickaxeHead','pickaxe head'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Pillar','pillar'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_OakTree','oak tree'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_WillowTree','willow tree'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_PineTree','pine tree'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Plank','plank'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_PlankStairs','plank stairs'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_BlockStairs','block stairs'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_PuzzleBox','puzzle box'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Radish','fruit'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_RawCloth','raw cloth'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_RawCoal','raw coal'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_RawGem','raw gem'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_RawOre','raw ore'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_RawSoil','raw soil'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_RawStone','raw stone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_RawWood','raw wood'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Ring','ring'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Sandwich','sandwich'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Sack','sack'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Sawblade','sawblade'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Seed','seed'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Skull','skull'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_SkullHelmet','skull helmet'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_SoilFloor','soil floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_SoilStairs','soil stairs'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_SoilWall','soil wall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Statue','statue'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Statuette','statuette'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Stick','stick'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_StoneFloor','stone floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_StoneStairs','stone stairs'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_StoneWall','stone wall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Straw','straw'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_String','string'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Sausage','sausage'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_SausageOmelette','sausage omelette'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Table','table'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Torch','torch'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_TrainingDummy','training dummy'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Trough','trough'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Vegetable','vegetable'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Wheelbarrow','wheelbarrow'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Wheat','wheat'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Wine','wine'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_WoodBed','bed'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_WoodBedSheets','bed sheets'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Workbench','workbench'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_FishingRod','fishing rod'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Fish','fish'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_AnimalCorpse','corpse'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_GoblinCorpse','corpse'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Painting','painting'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_BeeHive','bee hive'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Shed','shed'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Cone','cone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Oak','acorn'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_WillowSeed','willow seed'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_AlarmBell','alarm bell'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_AmmoPouch','ammo pouch'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Anvil','anvil'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_ArmorPlate','armor plate'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_ArtificialArm','artificial arm'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_ArtificialFoot','artificial foot'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_ArtificialHand','artificial hand'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_ArtificialLeg','artificial leg'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Axle','axle'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Bag','bag'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BallPeenHammer','ball peen hammer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Bandage','bandage'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Bar','bar'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Barrel','barrel'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BattleAxe','battle axe'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BattleAxeHead','battle axe head'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Bed','bed'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BedFrame','bed frame'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Beer','beer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Bellows','bellows'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BladeTrap','blade trap'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Block','block'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Blunderbuss','blunderbuss'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BlunderbussBarrel','blunderbuss barrel'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BlunderbussStock','blunderbuss stock'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Bolt','bolt'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BoneChair','bone chair'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BoneShirt','bone shirt'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BoneStatuette','bone statuette'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BoneTable','bone table'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Boot','boot'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Bread','bread'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Breastplate','breastplate'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Brick','brick block'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BronzeBar','bronze bar'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Bucket','bucket'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Cabinet','cabinet'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Cheese','cheese'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_CheeseOmelette','cheese omelette'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Chisel','chisel'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_ClayStatuette','clay statuette'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Claymore','claymore'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_ClaymoreBlade','claymore blade'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Coin','coin'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Crate','crate'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Crossbow','crossbow'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_CrossbowBow','crossbow bow'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_CrossbowStock','crossbow stock'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_CuttingWheel','cutting wheel'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Cylinder','cylinder'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Dresser','dresser'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_FancyBed','fancy bed'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_FancyBedFrame','fancy bed frame'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_FellingAxe','felling axe'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_FellingAxeHead','felling axe head'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_File','file'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Furnace','furnace'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_FruitWine','fruit wine'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_HoneyWine','honey wine'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Gauntlet','gauntlet'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Gear','gear'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Gearbox','gearbox'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Gem','gem'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_GemmedNecklace','gemmed necklace'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_GemmedRing','gemmed ring'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Greave','greave'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Haft','haft'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Hammer','hammer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_HammerHead','hammer head'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_HandAxe','hand axe'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_HandAxeHead','hand axe head'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Handcrank','handcrank'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Hatch','hatch'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Hearth','hearth'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Helmet','helmet'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Hilt','hilt'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Knife','knife'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_KnifeBlade','knife blade'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_LeatherArmorPanel','leather armor panel'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_LeatherBoot','leather boot'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_LeatherBracer','leather bracer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_LeatherCuirass','leather cuirass'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_LeatherGlove','leather glove'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_LeatherGreave','leather greave'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_LeatherHelm','leather helm'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_LeatherStrap','leather strap'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Lever','lever'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Loom','loom'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Mattress','mattress'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_MechanicalWall','mechanical wall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_MechanismBase','mechanism base'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_MetalCrossbowBolt','crossbow bolt'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_MetalMusketRound','musket round'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_MetalStatue','statue'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_MetalStatuette','statuette'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Mold','mold'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_MushroomOmelette','mushroom omelette'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Necklace','necklace'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Needle','needle'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_MetalNeedle','needle'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Padding','padding'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Pauldron','pauldron'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PetRock','pet rock'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Pickaxe','pickaxe'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PickaxeBaseWood','pickaxe base'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PickaxeHeadFlintStone','pickaxe head'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PickaxeHeadStone','pickaxe head'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PickaxeHeadWood','pickaxe head'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Pistol','pistol'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PistolBarrel','pistol barral'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PistolStock','pistol stock'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Plank','plank'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PressurePlate','pressure plate'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PuzzleBox','puzzle box'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Quiver','quiver'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_RawCoal','coal'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Ring','ring'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Rod','rod'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_RoseGoldBar','rosegold bar'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Sack','sack'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Sandwich','sandwich'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Sausage','sausage'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_SausageOmelette','sausage omelette'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Screw','screw'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Shield','shield'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_ShieldBacking','shield backing'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_ShieldBoss','shield boss'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_SkullHelmet','skull helmet'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_SliverBar','bar'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Spike','spike'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_SpikeTrap','spike trap'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Spring','spring'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_SteelBar','steel bar'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Stick','stick'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_StoneChair','chair'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_StoneCrossbowBolt','crossbow bolt'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_StoneDoor','door'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_StoneHammer','hammer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_StoneHandAxe','hand axe'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_StoneMusketRound','musket round'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_StonePillar','pillar'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_StoneSawblade','saw blade'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_StoneStatue','statue'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_StoneStatuette','statuette'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_StoneSword','sword'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_StoneTable','table'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_String','string'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Sword','sword'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_SwordBlade','sword blade'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Tea','tea'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Tile','tile'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Torch','torch'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_TowerShield','tower shield'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_TowerShieldBacking','tower shield backing'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_TrainingDummy','training dummy'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_TrapBase','trap base'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Trough','trough'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Warhammer','warhammer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_WarhammerHead','warhammer head'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Wheelbarrow','wheelbarrow'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_WindmillBlade','windmill blade'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Wine','wine'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_WoodChair','chair'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_WoodDoor','door'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_WoodStatue','statue'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_WoodStatuette','statuette'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_WoodTable','table'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_WoodenShield','shield'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Workbench','workbench'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Wrench','wrench'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_FishingRod','fishing rod'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_DyedTable','dye table'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_DyedPlank','dye plank'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_RedDye','red dye'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_GreenDye','green dye'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_YellowDye','yellow dye'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BlueDye','blue dye'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PurpleDye','purple dye'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_CyanDye','cyan dye'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_DyeHair','dye hair'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_AlarmBellBase','alarm bell base'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_AlarmBellBell','alarm bell bell'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CategoryName_Materials','Materials'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CategoryName_Grown','Grown'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CategoryName_Workshop','Workshop'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CategoryName_Food','Food'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CategoryName_Containers','Containers'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CategoryName_Furniture','Furniture'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CategoryName_Cloth','Cloth'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CategoryName_Butchery','Butchery'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CategoryName_Drinks','Drinks'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Gem','gem'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Coal','coal'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Soil','soil'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Metal','metal'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Stone','stone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Wood','wood'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Tree','tree'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Plant','plant'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Tools','tools'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Workplaces','workplaces'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Raw','raw'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Pastry','pastry'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Drinks','drinks'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Immovable','immovable'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Movable','movable'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Living','living'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Unprocessed','unprocessed'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Bones','bones'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Meats','meats'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Hides','hides'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Fruit','fruits'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Vegetable','vegetables'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Alcoholic','alcoholics'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Chairs','chairs'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Tables','tables'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Beds','beds'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Doors','doors'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Cabinets','cabinets'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_ClothProducts','products'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_LeatherProducts','products'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_JewelryProducts','products'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Misc','misc'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_MiscMaterials','misc materials'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Corpses','corpses'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_None','none'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_any','any'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Grass','grass'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Dirt','dirt'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Sand','sand'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Clay','clay'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Granite','granite'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Basalt','basalt'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Marble','marble'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Sandstone','sandstone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Bauxite','bauxite'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Serpentine','serpentine'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_LapisLazuli','lapislazuli'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Obsidian','obsidian'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_ClayBrick','clay brick'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_SandBrick','sand brick'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Water','water'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Lava','lava'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Pine','pine'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Oak','oak'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Willow','willow'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_AppleWood','applewood'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Birch','birch'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Coal','coal'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Copper','copper'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Malachite','malachite'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Tin','tin'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Bronze','bronze'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Iron','iron'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Steel','steel'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Lead','lead'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Silver','silver'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Gold','gold'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_RoseGold','rosegold'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Platinum','platinum'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Emerald','emerald'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Sapphire','sapphire'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Amethyst','amethyst'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Diamond','diamond'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Ruby','ruby'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_FlintStone','flintstone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Amber','amber'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Beryll','beryll'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Topaz','topaz'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Wool','wool'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Chicken','chicken'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Yak','yak'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Emu','emu'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Sheep','sheep'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Pig','pig'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Cow','cow'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Rabbit','rabbit'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Llama','llama'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Duck','duck'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Goose','goose'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Dog','dog'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Cat','cat'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Porcupine','porcupine'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Fox','fox'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Wolf','wolf'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Deer','deer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Badger','badger'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_BlackBear','black bear'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Goat','goat'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Squirrel','squirrel'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_GreenFish','green'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_GreyFish','grey'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Panda','panda'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Spider','spider'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Woodlouse','woodlouse'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_ChickenBone','chicken bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_YakBone','yak bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_EmuBone','emu bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_SheepBone','sheep bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_PigBone','pig bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_CowBone','cow bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_RabbitBone','rabbit bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_LlamaBone','llama bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_DuckBone','duck bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_GooseBone','goose bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_DogBone','dog bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_CatBone','cat bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_PorcupineBone','porcupine bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_FoxBone','fox bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_WolfBone','wolf bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_DeerBone','deer bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_GoatBone','goat bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_BadgerBone','badger bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_BlackBearBone','black bear bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_SquirrelBone','squirrel bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_GreenFishBone','green bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_GreyFishBone','grey bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_PandaBone','panda bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_SpiderBone','spider bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_WoodlouseBone','woodlouse bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_OrangeWood','orangewood'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Mushroom','mushroom'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Silica','silica'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Ceramic','ceramic'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Glass','glass'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Strawberry','strawberry'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Apple','apple'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Wheat','wheat'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Cotton','cotton'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Orange','orange'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Carrot','carrot'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Onion','onion'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Potato','potato'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Cabbage','cabbage'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Asparagus','asparagus'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Broccoli','broccoli'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Cauliflower','cauliflower'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Cucumber','cucumber'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Garlic','garlic'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Parsnip','parsnip'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Radish','radish'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Turnip','turnip'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Lettuce','lettuce'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Melon','melon'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Sugarbeet','sugar'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Pumpkin','pumpkin'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Peas','pea'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Tea','tea'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Tobacco','tobacco'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Pineapple','pineapple'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Corn','corn'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Leek','leek'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Beans','beans'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Blackberry','blackberry'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Artichoke','artichoke'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Bottlegourd','bottle gourd'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Tomato','tomato'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Capsicum','capsicum'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Grape','grape'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_BeetRoot','beet root'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Woad','woad'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_DyersWeed','dyers weed'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Barley','barley'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Oat','oat'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Millet','millet'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Red','red'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Green','green'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Blue','blue'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Purple','purple'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Yellow','yellow'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Cyan','cyan'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_WoolBag','wool'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_CottonBag','cotton'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Goblin','goblin'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Mushroom1','mushroom'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Mushroom2','mushroom'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Mushroom3','mushroom'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_StrawMushroom','mushroom'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_WoodMushroom','mushroom'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_FibreMushroom','mushroom'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_GrainMushroom','mushroom'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ERROR_TranslationKeyUnknown','***ERROR*** unknown string'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Tree','tree'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Plant','plant'); INSERT INTO "Translation" ("ID","Text") VALUES ('$AttributeName_Str','Strength'); INSERT INTO "Translation" ("ID","Text") VALUES ('$AttributeName_Dex','Dexterity'); INSERT INTO "Translation" ("ID","Text") VALUES ('$AttributeName_Con','Constitution'); INSERT INTO "Translation" ("ID","Text") VALUES ('$AttributeName_Int','Intelligence'); INSERT INTO "Translation" ("ID","Text") VALUES ('$AttributeName_Wis','Wisdom'); INSERT INTO "Translation" ("ID","Text") VALUES ('$AttributeName_Cha','Charisma'); INSERT INTO "Translation" ("ID","Text") VALUES ('$NeedName_Hunger','Hunger'); INSERT INTO "Translation" ("ID","Text") VALUES ('$NeedName_Thirst','Thirst'); INSERT INTO "Translation" ("ID","Text") VALUES ('$NeedName_Sleep','Sleep'); INSERT INTO "Translation" ("ID","Text") VALUES ('$NeedName_Happiness','Happiness'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Panda','Panda'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Rabbit','Rabbit'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Chicken','Chicken'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Pig','Pig'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_PigPink','Pig'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_PigYellow','Pig'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Sheep','Sheep'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Woodlouse','Woodlouse'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Dragon','Dragon'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Badger','Badger'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Lizzard','Lizzard'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_BlackBear','Black Bear'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Llama','Llama'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Yak','Yak'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Cow','Cow'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Emu','Emu'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Spider','Spider'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Beetle','Beetle'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_BeetleEgg','Beetle egg'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Duck','Duck'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Goose','Goose'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Shepherd','Shepherd Dog'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_CatTabby','Tabby Cat'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_CatBlack','Black Cat'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Porcupine','Porcupine'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Fox','Fox'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Wolf','Wolf'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Stag','Stag'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Roe','Roe'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Goat','Goat'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Snake','Snake'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Squirrel','Squirrel'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_GreyFish','Grey Fish'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_GreenFish','Green Fish'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_CrystalSnake','Crystal Snake'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_ZygYoung','Young Zyg'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_ZygYouth','Zyg Youth'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_ZygAdult','Adult Zyg'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_ZygSenior','Senior Zyg'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Mining','Mining'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Mining','Miner'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Masonry','Masonry'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Masonry','Mason'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Stonecarving','Stonecarving'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Stonecarving','Stonecarver'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Woodcutting','Woodcutting'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Woodcutting','Woodcutter'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Carpentry','Carpentry'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Carpentry','Carpenter'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Woodcarving','Woodcarving'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Woodcarving','Woodcarver'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Smelting','Smelting'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Smelting','Smelter'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Blacksmithing','Blacksmithing'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Blacksmithing','Blacksmith'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Metalworking','Metalworking'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Metalworking','Metalworker'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_WeaponCrafting','Weapon Crafting'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_WeaponCrafting','Weaponsmith'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_ArmorCrafting','Armor Crafting'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_ArmorCrafting','Armorer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Gemcutting','Gemcutting'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Gemcutting','Gemcutter'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_JewelryMaking','Jewelry Making'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_JewelryMaking','Jeweler'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Weaving','Weaving'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Weaving','Weaver'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Tailoring','Tailoring'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Tailoring','Tailor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Dyeing','Dyeing'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Dyeing','Dyer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Pottery','Pottery'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Pottery','Potter'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Leatherworking','Leatherworking'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Leatherworking','Leatherworker'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Tinkering','Tinkering'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Tinkering','Tinkerer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Machining','Machining'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Machining','Machinist'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Engineering','Engineering'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Engineering','Engineer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Mechanic','Mechanic'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Mechanic','Mechanic'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_AnimalHusbandry','Animal Husbandry'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_AnimalHusbandry','Rancher'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Butchery','Butchery'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Butchery','Butcher'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Horticulture','Horticulture'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Horticulture','Gardener'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Farming','Farming'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Farming','Farmer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Cooking','Cooking'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Cooking','Chef'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Brewing','Brewing'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Brewing','Brewer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Construction','Construction'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Construction','Builder'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Hauling','Hauling'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Hauling','Hauler'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_NaturalAttack','Fighting'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_NaturalAttack','Fighter'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Brawling','Brawling'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Brawling','Brawler'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Sword','Sword'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Sword','Swords'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Axe','Axe'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Axe','Axe'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Hammer','Hammer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Hammer','Hammer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Dodge','Dodge'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Dogde','Dodger'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Shield','Shield'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Shield','Shielder'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Armor','Armor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Armor','Knight'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Discipline','Discipline'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Discipline','Discipline'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Crossbow','Crossbow'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Crossbow','Crossbow'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Gun','Gun'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Gun','Gun'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Medic','Medic'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Medic','Medic'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Caretaking','Caretaking'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Caretaking','Caretaker'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Bonecarving','Bonecarving'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Bonecarving','Bonecarver'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Prospecting','Prospecting'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Prospecting','Prospector'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Fishing','Fishing'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_Fishing','Fisher'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_MagicNature','Nature'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_MagicNature','Nature mage'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_MagicGeomancy','Geomancy'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillTitle_MagicGeomancy','Geomancer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$StateName_Hungry','hungry'); INSERT INTO "Translation" ("ID","Text") VALUES ('$StateName_VeryHungry','very hungry'); INSERT INTO "Translation" ("ID","Text") VALUES ('$StateName_Starving','starving'); INSERT INTO "Translation" ("ID","Text") VALUES ('$StateName_StarvedToDeath','dead'); INSERT INTO "Translation" ("ID","Text") VALUES ('$StateName_Thirsty','thirsty'); INSERT INTO "Translation" ("ID","Text") VALUES ('$StateName_VeryThirsty','very thirsty'); INSERT INTO "Translation" ("ID","Text") VALUES ('$StateName_Dehydrated','dehydrated'); INSERT INTO "Translation" ("ID","Text") VALUES ('$StateName_DiedFromThirst','dead'); INSERT INTO "Translation" ("ID","Text") VALUES ('$StateName_Sleepy','sleepy'); INSERT INTO "Translation" ("ID","Text") VALUES ('$StateName_VerySleepy','very sleepy'); INSERT INTO "Translation" ("ID","Text") VALUES ('$StateName_DeadTired','dead tired'); INSERT INTO "Translation" ("ID","Text") VALUES ('$QualityName_Bad','bad'); INSERT INTO "Translation" ("ID","Text") VALUES ('$QualityName_Acceptable','acceptable'); INSERT INTO "Translation" ("ID","Text") VALUES ('$QualityName_Average','average'); INSERT INTO "Translation" ("ID","Text") VALUES ('$QualityName_Good','good'); INSERT INTO "Translation" ("ID","Text") VALUES ('$QualityName_Excellent','excellent'); INSERT INTO "Translation" ("ID","Text") VALUES ('$QualityName_Outstanding','outstanding'); INSERT INTO "Translation" ("ID","Text") VALUES ('$QualityName_Legendary','legendary'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_SliverFromStone','metal sliver'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Sliver','metal sliver'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_SliverFromDirt','metal sliver'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Military','Military'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MilitaryPositionPerk_Highlander','Highlander'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MilitaryPositionPerk_Frenzy','Frenzy'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MilitaryPositionPerk_WayOfGnome','Way of the gnome'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MilitaryPositionPerk_Marksman','Marksgnome'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MilitaryPositionPerk_Scout','Scout'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MilitaryPositionPerk_Guard','Guard'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MilitaryFormationPerk_EyesOpen','Keep your eyes open'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MilitaryFormationPerk_ShieldWall','Shieldwall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MilitaryFormationPerk_MeleeOffense','The best defense...'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MilitaryFormationPerk_FiringSquad','Firing squad'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Leatherworker','Leatherworker'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Weaponsmith','Weaponsmith'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Armorer','Armorer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_RawHide','raw hide'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_LeatherArmorPanel','leather panel'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_LeatherHelm','leather helm'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_LeatherCuirass','leather cuirass'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_LeatherPants','leather pants'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_LeatherBoot','leather boot'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_LeatherBracer','leather bracer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_LeatherGlove','leather glove'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_EmuLeather','emu'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_CowLeather','cow'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_YakLeather','yak'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_ChainBoots','chainmail boots'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_ChainBracers','chainmail bracers'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_ChainGloves','chainmail gloves'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_ChainHelm','chainmail helm'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_ChainPants','chainmail pants'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_ChainShirt','chainmail shirt'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PlateBoots','plate boots'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PlateChest','plate chest'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PlateGloves','plate gloves'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PlateGreaves','plate greaves'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PlateHelm','plate helm'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PlatePauldrons','plate pauldrons'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_HeavyPlateBoots','heavy plate boots'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_HeavyPlateChest','heavy plate chest'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_HeavyPlateGloves','heavy plate gloves'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_HeavyPlateGreaves','heavy plate greaves'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_HeavyPlateHelm','heavy plate helm'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_HeavyPlatePauldrons','heavy plate pauldrons'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_ArmorPlate','armor plate'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_ChainBoot','chainmail boot'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_ChainBracer','chainmail bracer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_ChainGlove','chainmail glove'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_ChainHelm','chainmail helm'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_ChainPants','chainmail pants'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_ChainShirt','chainmail shirt'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Corpse','corpse'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_CrystalMushroom','crystal mushroom'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_FishMeat','fish meat'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_HeavyPlateBoot','heavy plate boot'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_HeavyPlateChest','heavy plate chest'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_HeavyPlateGlove','heavy plate glove'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_HeavyPlateGreaves','heavy plate greaves'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_HeavyPlateHelm','heavy plate helm'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_HeavyPlatePauldron','heavy plate pauldron'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_PlateBoot','plate boot'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_PlateChest','plate chest'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_PlateGlove','plate glove'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_PlateGreaves','plate greaves'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_PlateHelm','plate helm'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_PlatePauldron','plate pauldron'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Tea','tea'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_WoodTub','wood tub'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Chainmail','chainmail'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Plate','plate'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_HeavyPlate','heavy plate'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Sword','sword'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_SwordBase','sword base'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_SwordBlade','sword blade'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CategoryName_Weapons','Weapons'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_WeaponsComponents','components'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_WeaponsMetal','metal'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Unarmed','Unarmed'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Melee','Melee'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Ranged','Ranged'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Thrown','Thrown'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_Block','Block'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_MeleeTraining','training ground'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Acorn','acorn'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Parts','parts'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Lights','lights'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_BoneArmor','bone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_NonAlcoholic','non alcoholic'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Cooked','cooked'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Meat','meat'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Other','other'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Leather','leather'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CategoryName_Armor','Armor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CategoryName_Jewelry','Jewelry'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Materials','materials'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PickaxeHeadMetal','pickaxe head'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_GearBox','gear box'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_GearBoxBase','gear box base'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_GearBoxFrame','gear box frame'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_SteamEngine','steam engine'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Gear','gear'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Rod','rod'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Spring','spring'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Axle','axle'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_VerticalAxle','vertical axle'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Containers','containers'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Furniture','furniture'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Mechanism','mechanism'); INSERT INTO "Translation" ("ID","Text") VALUES ('$FarmUtils','farm utilities'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CategoryName_Utility','Utility'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Mechanism','mechanisms'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Cylinder','cylinder'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_DyedBolt','dye bolt of cloth'); INSERT INTO "Translation" ("ID","Text") VALUES ('$Hydraulics','hydraulics'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Pipe','pipe'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_PipeCenter','pipe'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_PipeExit','pipe exit'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Pump','pump'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Hydraulics','hydraulics'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Lever','lever'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_LeverBase','lever base'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_LeverHandle','lever handle'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Engineer','engineer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_MachineShop','machine shop'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Wrench','wrench'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Spike','spike'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Screw','screw'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_MechanismBase','mechanism base'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Gearbox','gear box'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Handcrank','handcrank'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_TrapBase','trap base'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_SpikeTrap','spike trap'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_MechanicalWall','mechanical wall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_WindmillBlade','windmill blade'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_PressurePlate','pressure plate'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Hatch','hatch'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Automaton','automaton'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Automaton','automaton maker'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Automaton','automaton'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_AutomatonHead','automaton head'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_AutomatonTorso','automaton torso'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_AutomatonArm','automaton arm'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_AutomatonLeg','automaton leg'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_AutomatonCoreMark1','automaton core mark 1'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_AutomatonCoreMark2','automaton core mark 2'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Automaton','automaton'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_AutomatonHead','automaton head'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_AutomatonTorso','automaton torso'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_AutomatonLeg','automaton leg'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_AutomatonArm','automaton arm'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_AutomatonCoreMark1','automaton core mark 1'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_AutomatonCoreMark2','automaton core mark 2'); INSERT INTO "Translation" ("ID","Text") VALUES ('$NeedName_Fuel','Fuel'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_Windmill','windmill'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Flour','flour'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Flour','flour'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_FlourKitchen','flour'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BoneBedFrame','bone bed frame'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BoneBed','bone bed'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_BoneBedFrame','bone bed frame'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Continue','Continue'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_NewGame','New Game'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Resume','Resume'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Join','Join'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Mods','Mods'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Save','Save'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Load','Load'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Exit','Exit'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_MainMenu','Main Menu'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Settings','Settings'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_SettingsVideo','Video'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_SettingsAudio','Audio'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_SettingsBindings','Key Bindings'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_SettingsGame','Game'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Random','Random'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_New','New'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Delete','Delete'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Back','Back'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_StartGame','Start Game'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_KingdomName','Kingdom Name'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Seed','Seed'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Size','Size'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_zLevels','z-Levels'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Ground','Ground'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Flatness','Flatness'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Presets','Presets'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_AddItem','Add Item'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_AddAnimals','Add Animals'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Remove','Remove'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_FaunaFlora','Fauna Flora'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_TreeDensity','Tree Density'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_PlantDensity','Plant Density'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_WildAnimals','Wild Animals'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_MaxPerType','Max per type'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_StartingZone','Starting Zone'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_AllowedTrees','Allowed Trees'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_AllowedPlants','Allowed Wild Plants'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Enemies','Enemies'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_PeacefulMode','No enemies (peaceful mode)'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Gnomes','Gnomes'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_NewPreset','New Preset'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_SavePreset','Save Preset'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_DeletePreset','Delete Preset'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_AllowedAnimals','Allowed Animals'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Embark','Embark'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_World','World'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_BirchTree','birch tree'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Kingdom','Kingdom'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Stocks','Stocks'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Population','Population'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Military','Military'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Events','Events'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Overview','Overview'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Technology','Technology'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_TechTree','Tech tree'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Skills','Skills'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Schedule','Schedule'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Name','Name'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Profession','Profession'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Schedule_none','none'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Schedule_eat','eat'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Schedule_sleep','sleep'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Schedule_training','training'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Threats','Threats'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Squads','Squads'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Formations','Formations'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Positions','Positions'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Uniforms','Uniforms'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Perk','Perk'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Uniform','Uniform'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Leader','Leader'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_MaintainDistance','Maintain distance'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_RetreatBleeding','Retreat if bleeding'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_AvoidEnemies','Avoid enemies'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Formation','Formation'); INSERT INTO "Translation" ("ID","Text") VALUES ('$UniformSlot_HeadArmor','head armor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$UniformSlot_ChestArmor','chest armor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$UniformSlot_ArmArmor','arm armor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$UniformSlot_HandArmor','hand armor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$UniformSlot_LegArmor','leg armor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$UniformSlot_FootArmor','foot armor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$UniformSlot_LeftHandHeld','held in left hand'); INSERT INTO "Translation" ("ID","Text") VALUES ('$UniformSlot_RightHandHeld','held in right hand'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Neighbors','Neighbors'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Missions','Missions'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Action_Improve','Improve relationship'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Action_Insult','Insult'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Action_InviteTrader','Invite trader'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Action_InviteAmbassador','Invite ambassador (not implemented yet)'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GUI_Action_Select','Select Action'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_LeatherPants','leather pants'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Shed','shed'); INSERT INTO "Translation" ("ID","Text") VALUES ('$StockOverlay','Overlay'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SelectCategory','select category'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SelectGroup','select group'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SelectItem','select item'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SelectMaterial','select material'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_WasteDisposal','waste disposal'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BurnFishBone','burn fish bones'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BurnBone','burn bones'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BurnStraw','burn straw'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BurnSeeds','burn seeds'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Farm','farm'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_BladeTrap','blade trap'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Hay','hay'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Flower1','flower'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Flower2','flower'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Flower3','flower'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Flower4','flower'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Flower5','flower'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Flower6','flower'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Flower7','flower'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Flower8','flower'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Flower1','orange flower'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Flower2','yellow flower'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Flower3','white flower'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Flower4','pink flower'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Flower5','red flower'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Flower6','purple flower'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Flower7','blue flower'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Flower8','yellow flower 2'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Honey','honey'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_Bee','bee'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_HandAxeHead','hand axe head'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_HandAxe','hand axe'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_HammerHead','hammer head'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Hammer','hammer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_ClaymoreBlade','claymore blade'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Claymore','claymore'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_BattleAxeHead','battle axe head'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_BattleAxe','battle axe'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_WarhammerHead','warhammer head'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Warhammer','warhammer'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_AlarmBell','alarm bells'); INSERT INTO "Translation" ("ID","Text") VALUES ('$JobName_SoundAlarm','sound the alarm'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BeeHive','bee hive'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_WallTorch','wall torch'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Chest','chest'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Chest','chest'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Bookshelf','book shelf'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Bookshelf','book shelf'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_BigTorch','big torch'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Brazier','brazier'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_BigTorch','big torch'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Brazier','brazier'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Sabretooth','Sabretooth tiger'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Mammoth','Woolly Mammoth'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_BearLeather','bear'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Backpack','backpack'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Quiver','quiver'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Backpack','backpack'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_WolfLeather','wolf'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_StagLeather','stag'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_GlassMaker','glass maker'); INSERT INTO "Translation" ("ID","Text") VALUES ('$WorkshopName_GlassFurnace','glass furnace'); INSERT INTO "Translation" ("ID","Text") VALUES ('$SkillName_GlassMaking','Glass Making'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_GlassIngot','ingot'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_GlassIngot','glass ingot'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_RoughGlassGem','rough gem'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_RoughGlassGem','rough glass gem'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_MosaicTile','mosaic tile'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_MosaicTile','mosaic tile'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_SoilStairs','soil stairs'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_StoneStairs','stone stairs'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_SoilRamp','soil ramp'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_StoneRamp','stone ramp'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_Scaffold','scaffold'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_Palisade','palisade'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_StoneWall','stone wall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_SoilWallFloor','soil wall and floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_StoneWallFloor','stone wall and floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_PlankWallFloor','plank wall and floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_BlockWall','block wall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_BrickWall','brick wall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_PlankWall','plank wall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_PlankFloor','plank floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_SoilWall','soil wall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_LogWall','log wall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_ThatchWall','thatch wall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_ThatchFloor','thatch floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_ThatchRamp','thatch ramp'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_Roof','roof'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_SoilCornerRamp','soil corner ramp'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_StoneCornerRamp','stone corner ramp'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_ThatchCornerRamp','thatch corner ramp'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_BlockFloor','block floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_StoneFloor','stone floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_BrickFloor','brick floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_SoilFloor','soil floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_LogFloor','log floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_FancyWall1','fancy wall 1'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_FancyWall2','fancy wall 2'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_FancyWall3','fancy wall 3'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_FancyWall4','fancy wall 4'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_FancyWall5','fancy wall 5'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_FancyWall6','fancy wall 6'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_FancyFloor1','fancy floor 1'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_FancyFloor2','fancy floor 2'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_FancyFloor3','fancy floor 3'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_FancyFloor4','fancy floor 4'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_FancyFloor5','fancy floor 5'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_FancyFloor6','fancy floor 6'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_BlockFence','block fence'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_CobbleStoneFence','cobble stone fence'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_WoodFence','wood fence'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_VerticalAxle','vertical axle'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_Pipe','pipe'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_PipeExit','pipe exit'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_BoneWall','bone wall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_SkullWall','skull wall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_BoneFloor','bone floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_WallTorch','wall torch'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_PlankStairs','plank stairs'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_BlockStairs','block stairs'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_MosaicWall','mosaic wall'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ConstructionName_MosaicFloor','mosaic floor'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Sand','soil'); INSERT INTO "Translation" ("ID","Text") VALUES ('$GroupName_Clay','soil'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_any (same)','any (same)'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_Goblin','Goblin'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_MantSoldier','Mant soldier'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_MantWorker','Mant worker'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CreatureName_MantQueen','Mant queen'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Cider','cider'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Vinegar','vinegar'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Sugar','sugar'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_DropCandy','drop candy'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_ShepherdsPie','shepherds pie'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_Biscuit','biscuit'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_PickledFruit','pickled fruit'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_FruitPreserve','fruit preserve'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_SmokedMeat','smoked meat'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_SmokedSausage','smoked sausage'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_FruitBread','fruit bread'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_FreshCheese','fresh cheese'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_HardCheese','hard cheese'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_MeatPie','meat pie'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_PickledVegetable','pickled vegetable'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_PickledEgg','pickled egg'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_VegetablePreserve','vegetable preserve'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_SmokedBird','smoked bird'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_SmokedFish','smoked fish'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_FlatBread','flat bread'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_FruitPie','fruit pie'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_VeggiePie','veggie pie'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_FineMeatPie','fine meat pie'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Cider','cider'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Vinegar','vinegar'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Sugar','sugar'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_DropCandy','drop candy'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_ShepherdsPie','shepherds pie'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_Biscuit','biscuit'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PickledFruit','pickled fruit'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_FruitPreserve','fruit preserve'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_SmokedMeat','smoked meat'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_SmokedSausage','smoked sausage'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_FruitBread','fruit bread'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_FreshCheese','fresh cheese'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_HardCheese','hard cheese'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_MeatPie','meat pie'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PickledVegetable','pickled vegetable'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_PickledEgg','pickled egg'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_VegetablePreserve','vegetable preserve'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_SmokedBird','smoked bird'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_SmokedFish','smoked fish'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_FlatBread','flat bread'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_FruitPie','fruit pie'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_VeggiePie','veggie pie'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_FineMeatPie','fine meat pie'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_GlassJar','jar'); INSERT INTO "Translation" ("ID","Text") VALUES ('$ItemName_GlassBottle','bottle'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_GlassJar','jar'); INSERT INTO "Translation" ("ID","Text") VALUES ('$CraftName_GlassBottle','bottle'); INSERT INTO "Translation" ("ID","Text") VALUES ('$MaterialName_GlowShroom','mushroom'); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('WoodTrader',NULL,'RawWood','Pine',100,0,NULL,10.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('WoodTrader',NULL,'RawWood','AppleWood',100,0,NULL,10.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('WoodTrader',NULL,'RawWood','OrangeWood',100,0,NULL,10.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('WoodTrader',NULL,'RawWood','Birch',100,0,NULL,10.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('OreTrader',NULL,'RawOre','Copper',50,0,NULL,60.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('OreTrader',NULL,'RawOre','Tin',59,0,NULL,60.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('OreTrader',NULL,'RawOre','Iron',20,0,NULL,100.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('OreTrader',NULL,'RawOre','Lead',20,0,NULL,150.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('OreTrader',NULL,'RawOre','Silver',10,0,NULL,500.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('OreTrader',NULL,'RawOre','Gold',10,0,NULL,750.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('AnimalTrader','Male','Cow',NULL,2,0,'Animal',150.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('AnimalTrader','Female','Cow',NULL,2,0,'Animal',150.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('AnimalTrader','Male','Yak',NULL,2,0,'Animal',150.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('AnimalTrader','Female','Yak',NULL,2,0,'Animal',150.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('AnimalTrader','Male','Chicken',NULL,5,0,'Animal',150.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('AnimalTrader','Female','Chicken',NULL,5,0,'Animal',150.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('AnimalTrader','Male','Rabbit',NULL,2,0,'Animal',150.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('AnimalTrader','Female','Rabbit',NULL,2,0,'Animal',150.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Strawberry',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Carrot',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Onion',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Potato',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Cabbage',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Asparagus',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Broccoli',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Cauliflower',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Cucumber',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Garlic',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Parsnip',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Radish',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Turnip',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Lettuce',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Melon',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Sugarbeet',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Pumpkin',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Peas',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','BeetRoot',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Wheat',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Barley',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Oat',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Millet',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Cotton',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Tea',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Tobacco',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Pineapple',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Corn',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Leek',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Beans',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Blackberry',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Bottlegourd',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Artichoke',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Grape',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Tomato',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Capsicum',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','Woad',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('SeedTrader',NULL,'Seed','DyersWeed',50,0,NULL,20.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('WoodTrader',NULL,'RawWood','Oak',100,0,NULL,10.0); INSERT INTO "Traders_Items" ("ID","Gender","Item","Material","Max_","Min_","Type","Value_") VALUES ('WoodTrader',NULL,'RawWood','Willow',100,0,NULL,10.0); INSERT INTO "Traders" ("ID") VALUES ('WoodTrader'); INSERT INTO "Traders" ("ID") VALUES ('OreTrader'); INSERT INTO "Traders" ("ID") VALUES ('AnimalTrader'); INSERT INTO "Traders" ("ID") VALUES ('SeedTrader'); INSERT INTO "Time" ("ID","Value_") VALUES ('TicksPerMinute',10.0); INSERT INTO "Time" ("ID","Value_") VALUES ('MinutesPerHour',60.0); INSERT INTO "Time" ("ID","Value_") VALUES ('HoursPerDay',24.0); INSERT INTO "Time" ("ID","Value_") VALUES ('MillisecondsSlow',25.0); INSERT INTO "Time" ("ID","Value_") VALUES ('MillisecondsFast',5.0); INSERT INTO "TerrainMaterials" ("ID","FloorSprite","Highest","Lowest","ShortWallSprite","Type","WallSprite") VALUES ('Air','EmptyFloor',1000.0,0.0,'EmptyWall','Air','EmptyWall'); INSERT INTO "TerrainMaterials" ("ID","FloorSprite","Highest","Lowest","ShortWallSprite","Type","WallSprite") VALUES ('Dirt','RoughFloor',-1.0,-2.0,'RoughSoilWallShort','Soil','RoughWall'); INSERT INTO "TerrainMaterials" ("ID","FloorSprite","Highest","Lowest","ShortWallSprite","Type","WallSprite") VALUES ('Sand','RoughFloor',-3.0,-4.0,'RoughSoilWallShort','Soil','RoughWall'); INSERT INTO "TerrainMaterials" ("ID","FloorSprite","Highest","Lowest","ShortWallSprite","Type","WallSprite") VALUES ('Clay','RoughFloor',-5.0,-6.0,'RoughClayWallShort','Clay','RoughWall'); INSERT INTO "TerrainMaterials" ("ID","FloorSprite","Highest","Lowest","ShortWallSprite","Type","WallSprite") VALUES ('Sandstone','RoughFloor',-7.0,-14.0,'RoughStoneWallShort','Stone','RoughWall'); INSERT INTO "TerrainMaterials" ("ID","FloorSprite","Highest","Lowest","ShortWallSprite","Type","WallSprite") VALUES ('Marble','RoughFloor',-15.0,-26.0,'RoughStoneWallShort','Stone','RoughWall'); INSERT INTO "TerrainMaterials" ("ID","FloorSprite","Highest","Lowest","ShortWallSprite","Type","WallSprite") VALUES ('Bauxite','RoughFloor',-27.0,-42.0,'RoughStoneWallShort','Stone','RoughWall'); INSERT INTO "TerrainMaterials" ("ID","FloorSprite","Highest","Lowest","ShortWallSprite","Type","WallSprite") VALUES ('LapisLazuli','RoughFloor',-43.0,-59.0,'RoughStoneWallShort','Stone','RoughWall'); INSERT INTO "TerrainMaterials" ("ID","FloorSprite","Highest","Lowest","ShortWallSprite","Type","WallSprite") VALUES ('Serpentine','RoughFloor',-60.0,-74.0,'RoughStoneWallShort','Stone','RoughWall'); INSERT INTO "TerrainMaterials" ("ID","FloorSprite","Highest","Lowest","ShortWallSprite","Type","WallSprite") VALUES ('Granite','RoughFloor',-75.0,-88.0,'RoughStoneWallShort','Stone','RoughWall'); INSERT INTO "TerrainMaterials" ("ID","FloorSprite","Highest","Lowest","ShortWallSprite","Type","WallSprite") VALUES ('Basalt','RoughFloor',-89.0,-1000.0,'RoughStoneWallShort','Stone','RoughWall'); INSERT INTO "Tech" ("ID") VALUES ('TechWood'); INSERT INTO "Tech" ("ID") VALUES ('TechStone'); INSERT INTO "Tech" ("ID") VALUES ('TechMetal'); INSERT INTO "Tech" ("ID") VALUES ('TechEngineer'); INSERT INTO "Tech" ("ID") VALUES ('TechCloth'); INSERT INTO "Tech" ("ID") VALUES ('TechLeather'); INSERT INTO "Tech" ("ID") VALUES ('TechFood'); INSERT INTO "Tech" ("ID") VALUES ('TechMilitary'); INSERT INTO "Tech" ("ID") VALUES ('TechMagic'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampSpring','GrassRamp_Spring_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampSpring','GrassRamp_Spring_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampSpring','GrassRamp_Spring_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampSpring','GrassRamp_Spring_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampSummer','GrassRamp_Summer_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampSummer','GrassRamp_Summer_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampSummer','GrassRamp_Summer_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampSummer','GrassRamp_Summer_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampAutumn','GrassRamp_Autumn_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampAutumn','GrassRamp_Autumn_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampAutumn','GrassRamp_Autumn_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampAutumn','GrassRamp_Autumn_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampWinter','GrassRamp_Winter_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampWinter','GrassRamp_Winter_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampWinter','GrassRamp_Winter_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampWinter','GrassRamp_Winter_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampTopSpring','GrassRampTop_Spring_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampTopSpring','GrassRampTop_Spring_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampTopSpring','GrassRampTop_Spring_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampTopSpring','GrassRampTop_Spring_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampTopSummer','GrassRampTop_Summer_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampTopSummer','GrassRampTop_Summer_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampTopSummer','GrassRampTop_Summer_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampTopSummer','GrassRampTop_Summer_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampTopAutumn','GrassRampTop_Autumn_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampTopAutumn','GrassRampTop_Autumn_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampTopAutumn','GrassRampTop_Autumn_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampTopAutumn','GrassRampTop_Autumn_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampTopWinter','GrassRampTop_Winter_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampTopWinter','GrassRampTop_Winter_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampTopWinter','GrassRampTop_Winter_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassRampTopWinter','GrassRampTop_Winter_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassOuterCornerRampSpring','GrassOuterCornerRamp_Spring_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassOuterCornerRampSpring','GrassOuterCornerRamp_Spring_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassOuterCornerRampSpring','EmptyWall','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassOuterCornerRampSpring','GrassOuterCornerRamp_Spring_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassOuterCornerRampSummer','GrassOuterCornerRamp_Summer_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassOuterCornerRampSummer','GrassOuterCornerRamp_Summer_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassOuterCornerRampSummer','EmptyWall','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassOuterCornerRampSummer','GrassOuterCornerRamp_Summer_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassOuterCornerRampAutumn','GrassOuterCornerRamp_Autumn_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassOuterCornerRampAutumn','GrassOuterCornerRamp_Autumn_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassOuterCornerRampAutumn','EmptyWall','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassOuterCornerRampAutumn','GrassOuterCornerRamp_Autumn_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassOuterCornerRampWinter','GrassOuterCornerRamp_Winter_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassOuterCornerRampWinter','GrassOuterCornerRamp_Winter_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassOuterCornerRampWinter','EmptyWall','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassOuterCornerRampWinter','GrassOuterCornerRamp_Winter_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampSpring','GrassCornerRamp_Spring_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampSpring','GrassCornerRamp_Spring_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampSpring','GrassCornerRamp_Spring_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampSpring','GrassCornerRamp_Spring_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampSummer','GrassCornerRamp_Summer_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampSummer','GrassCornerRamp_Summer_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampSummer','GrassCornerRamp_Summer_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampSummer','GrassCornerRamp_Summer_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampAutumn','GrassCornerRamp_Autumn_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampAutumn','GrassCornerRamp_Autumn_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampAutumn','GrassCornerRamp_Autumn_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampAutumn','GrassCornerRamp_Autumn_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampWinter','GrassCornerRamp_Winter_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampWinter','GrassCornerRamp_Winter_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampWinter','GrassCornerRamp_Winter_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampWinter','GrassCornerRamp_Winter_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampTopSpring','GrassCornerRampTop_Spring_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampTopSpring','GrassCornerRampTop_Spring_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampTopSpring','GrassCornerRampTop_Spring_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampTopSpring','GrassCornerRampTop_Spring_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampTopSummer','GrassCornerRampTop_Summer_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampTopSummer','GrassCornerRampTop_Summer_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampTopSummer','GrassCornerRampTop_Summer_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampTopSummer','GrassCornerRampTop_Summer_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampTopAutumn','GrassCornerRampTop_Autumn_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampTopAutumn','GrassCornerRampTop_Autumn_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampTopAutumn','GrassCornerRampTop_Autumn_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampTopAutumn','GrassCornerRampTop_Autumn_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampTopWinter','GrassCornerRampTop_Winter_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampTopWinter','GrassCornerRampTop_Winter_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampTopWinter','GrassCornerRampTop_Winter_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassCornerRampTopWinter','GrassCornerRampTop_Winter_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampSpring','GrassURamp_Spring_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampSpring','GrassURamp_Spring_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampSpring','GrassURamp_Spring_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampSpring','GrassURamp_Spring_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampSummer','GrassURamp_Summer_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampSummer','GrassURamp_Summer_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampSummer','GrassURamp_Summer_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampSummer','GrassURamp_Summer_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampAutumn','GrassURamp_Autumn_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampAutumn','GrassURamp_Autumn_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampAutumn','GrassURamp_Autumn_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampAutumn','GrassURamp_Autumn_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampWinter','GrassURamp_Winter_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampWinter','GrassURamp_Winter_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampWinter','GrassURamp_Winter_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampWinter','GrassURamp_Winter_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampTopSpring','GrassURampTop_Spring_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampTopSpring','GrassURampTop_Spring_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampTopSpring','GrassURampTop_Spring_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampTopSpring','GrassURampTop_Spring_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampTopSummer','GrassURampTop_Summer_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampTopSummer','GrassURampTop_Summer_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampTopSummer','GrassURampTop_Summer_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampTopSummer','GrassURampTop_Summer_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampTopAutumn','GrassURampTop_Autumn_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampTopAutumn','GrassURampTop_Autumn_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampTopAutumn','GrassURampTop_Autumn_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampTopAutumn','GrassURampTop_Autumn_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampTopWinter','GrassURampTop_Winter_FL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampTopWinter','GrassURampTop_Winter_FR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampTopWinter','GrassURampTop_Winter_BL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('GrassURampTopWinter','GrassURampTop_Winter_BR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampSpring','SoilRampFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampSpring','SoilRampFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampSpring','SoilRampBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampSpring','SoilRampBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampSummer','SoilRampFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampSummer','SoilRampFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampSummer','SoilRampBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampSummer','SoilRampBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampAutumn','SoilRampFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampAutumn','SoilRampFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampAutumn','SoilRampBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampAutumn','SoilRampBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampWinter','SoilRampFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampWinter','SoilRampFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampWinter','SoilRampBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampWinter','SoilRampBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampTopSpring','SoilRampTopFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampTopSpring','SoilRampTopFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampTopSpring','SoilRampTopBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampTopSpring','SoilRampTopBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampTopSummer','SoilRampTopFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampTopSummer','SoilRampTopFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampTopSummer','SoilRampTopBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampTopSummer','SoilRampTopBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampTopAutumn','SoilRampTopFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampTopAutumn','SoilRampTopFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampTopAutumn','SoilRampTopBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampTopAutumn','SoilRampTopBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampTopWinter','SoilRampTopFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampTopWinter','SoilRampTopFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampTopWinter','SoilRampTopBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilRampTopWinter','SoilRampTopBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampSpring','SoilCornerRampFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampSpring','SoilCornerRampFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampSpring','SoilCornerRampBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampSpring','SoilCornerRampBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampSummer','SoilCornerRampFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampSummer','SoilCornerRampFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampSummer','SoilCornerRampBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampSummer','SoilCornerRampBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampAutumn','SoilCornerRampFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampAutumn','SoilCornerRampFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampAutumn','SoilCornerRampBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampAutumn','SoilCornerRampBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampWinter','SoilCornerRampFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampWinter','SoilCornerRampFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampWinter','SoilCornerRampBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampWinter','SoilCornerRampBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampTopSpring','SoilCornerRampTopFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampTopSpring','SoilCornerRampTopFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampTopSpring','SoilCornerRampTopBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampTopSpring','SoilCornerRampTopBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampTopSummer','SoilCornerRampTopFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampTopSummer','SoilCornerRampTopFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampTopSummer','SoilCornerRampTopBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampTopSummer','SoilCornerRampTopBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampTopAutumn','SoilCornerRampTopFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampTopAutumn','SoilCornerRampTopFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampTopAutumn','SoilCornerRampTopBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampTopAutumn','SoilCornerRampTopBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampTopWinter','SoilCornerRampTopFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampTopWinter','SoilCornerRampTopFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampTopWinter','SoilCornerRampTopBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilCornerRampTopWinter','SoilCornerRampTopBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampSpring','SoilURampFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampSpring','SoilURampFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampSpring','SoilURampBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampSpring','SoilURampBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampSummer','SoilURampFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampSummer','SoilURampFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampSummer','SoilURampBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampSummer','SoilURampBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampAutumn','SoilURampFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampAutumn','SoilURampFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampAutumn','SoilURampBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampAutumn','SoilURampBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampWinter','SoilURampFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampWinter','SoilURampFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampWinter','SoilURampBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampWinter','SoilURampBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampTopSpring','SoilURampTopFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampTopSpring','SoilURampTopFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampTopSpring','SoilURampTopBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampTopSpring','SoilURampTopBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampTopSummer','SoilURampTopFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampTopSummer','SoilURampTopFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampTopSummer','SoilURampTopBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampTopSummer','SoilURampTopBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampTopAutumn','SoilURampTopFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampTopAutumn','SoilURampTopFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampTopAutumn','SoilURampTopBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampTopAutumn','SoilURampTopBR','BR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampTopWinter','SoilURampTopFL','FL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampTopWinter','SoilURampTopFR','FR'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampTopWinter','SoilURampTopBL','BL'); INSERT INTO "Sprites_Seasons_Rotations" ("ID","BaseSprite","Rotation") VALUES ('SoilURampTopWinter','SoilURampTopBR','BR'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass1','Grass_1_0','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass1','Grass_1_4','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass1','Grass_1_7','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass1','Grass_1_10','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass2','Grass_2_0','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass2','Grass_2_4','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass2','Grass_2_7','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass2','Grass_2_10','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass3','Grass_3_0','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass3','Grass_3_4','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass3','Grass_3_7','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass3','Grass_3_10','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass4','Grass_4_0','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass4','Grass_4_4','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass4','Grass_4_7','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass4','Grass_4_10','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass5','Grass_5_0','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass5','Grass_5_4','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass5','Grass_5_7','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass5','Grass_5_10','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass6','Grass_6_0','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass6','Grass_6_4','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass6','Grass_6_7','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('Grass6','Grass_6_10','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower0','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower0','RedFlower_0','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower0','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower0','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower1','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower1','RedFlower_1','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower1','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower1','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower2','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower2','RedFlower_2','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower2','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower2','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower3','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower3','RedFlower_3','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower3','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower3','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower4','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower4','RedFlower_4','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower4','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower4','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower5','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower5','RedFlower_5','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower5','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower5','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower6','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower6','RedFlower_6','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower6','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower6','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower7','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower7','RedFlower_7','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower7','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower7','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower8','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower8','RedFlower_8','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower8','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RRedFlower8','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower0','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower0','BlueFlower_0','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower0','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower0','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower1','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower1','BlueFlower_1','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower1','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower1','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower2','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower2','BlueFlower_2','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower2','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower2','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower3','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower3','BlueFlower_3','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower3','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower3','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower4','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower4','BlueFlower_4','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower4','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower4','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower5','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower5','BlueFlower_5','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower5','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower5','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower6','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower6','BlueFlower_6','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower6','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower6','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower7','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower7','BlueFlower_7','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower7','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower7','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower8','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower8','BlueFlower_8','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower8','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RBlueFlower8','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower0','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower0','YellowFlower_0','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower0','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower0','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower1','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower1','YellowFlower_1','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower1','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower1','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower2','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower2','YellowFlower_2','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower2','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower2','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower3','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower3','YellowFlower_3','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower3','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower3','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower4','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower4','YellowFlower_4','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower4','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower4','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower5','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower5','YellowFlower_5','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower5','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower5','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower6','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower6','YellowFlower_6','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower6','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower6','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower7','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower7','YellowFlower_7','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower7','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower7','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower8','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower8','YellowFlower_8','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower8','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowFlower8','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower0','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower0','PurpleFlower_0','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower0','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower0','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower1','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower1','PurpleFlower_1','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower1','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower1','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower2','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower2','PurpleFlower_2','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower2','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower2','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower3','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower3','PurpleFlower_3','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower3','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower3','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower4','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower4','PurpleFlower_4','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower4','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower4','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower5','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower5','PurpleFlower_5','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower5','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower5','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower6','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower6','PurpleFlower_6','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower6','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower6','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower7','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower7','PurpleFlower_7','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower7','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower7','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower8','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower8','PurpleFlower_8','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower8','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RPurpleFlower8','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower0','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower0','OrangeFlower_0','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower0','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower0','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower1','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower1','OrangeFlower_1','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower1','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower1','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower2','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower2','OrangeFlower_2','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower2','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower2','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower3','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower3','OrangeFlower_3','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower3','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower3','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower4','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower4','OrangeFlower_4','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower4','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower4','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower5','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower5','OrangeFlower_5','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower5','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower5','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower6','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower6','OrangeFlower_6','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower6','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower6','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower7','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower7','OrangeFlower_7','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower7','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower7','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower8','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower8','OrangeFlower_8','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower8','empty','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeFlower8','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom0','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom0','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom0','WhiteMushroom_0','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom0','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom1','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom1','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom1','WhiteMushroom_1','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom1','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom2','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom2','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom2','WhiteMushroom_2','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom2','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom3','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom3','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom3','WhiteMushroom_3','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom3','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom4','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom4','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom4','WhiteMushroom_4','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom4','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom5','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom5','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom5','WhiteMushroom_5','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom5','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom6','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom6','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom6','WhiteMushroom_6','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom6','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom7','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom7','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom7','WhiteMushroom_7','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom7','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom8','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom8','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom8','WhiteMushroom_8','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RWhiteMushroom8','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom1','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom1','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom1','YellowMushroom_1','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom1','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom2','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom2','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom2','YellowMushroom_2','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom2','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom3','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom3','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom3','YellowMushroom_3','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom3','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom4','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom4','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom4','YellowMushroom_4','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom4','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom5','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom5','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom5','YellowMushroom_5','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom5','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom6','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom6','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom6','YellowMushroom_6','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom6','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom7','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom7','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom7','YellowMushroom_7','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom7','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom8','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom8','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom8','YellowMushroom_8','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RYellowMushroom8','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom1','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom1','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom1','OrangeMushroom_1','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom1','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom2','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom2','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom2','OrangeMushroom_2','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom2','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom3','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom3','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom3','OrangeMushroom_3','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom3','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom4','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom4','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom4','OrangeMushroom_4','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom4','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom5','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom5','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom5','OrangeMushroom_5','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom5','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom6','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom6','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom6','OrangeMushroom_6','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom6','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom7','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom7','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom7','OrangeMushroom_7','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom7','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom8','empty','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom8','empty','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom8','OrangeMushroom_8','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('ROrangeMushroom8','empty','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone0','Stone_0','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone0','Stone_0','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone0','Stone_0','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone0','Stone_Snow_0','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone1','Stone_1','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone1','Stone_1','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone1','Stone_1','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone1','Stone_Snow_1','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone2','Stone_2','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone2','Stone_2','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone2','Stone_2','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone2','Stone_Snow_2','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone3','Stone_3','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone3','Stone_3','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone3','Stone_3','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone3','Stone_Snow_3','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone4','Stone_4','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone4','Stone_4','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone4','Stone_4','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone4','Stone_Snow_4','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone5','Stone_5','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone5','Stone_5','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone5','Stone_5','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone5','Stone_Snow_5','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone6','Stone_6','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone6','Stone_6','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone6','Stone_6','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone6','Stone_Snow_6','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone7','Stone_7','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone7','Stone_7','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone7','Stone_7','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone7','Stone_Snow_7','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone8','Stone_8','Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone8','Stone_8','Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone8','Stone_8','Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('RStone8','Stone_Snow_8','Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassRamp',NULL,'Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassRamp',NULL,'Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassRamp',NULL,'Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassRamp',NULL,'Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassRampTop',NULL,'Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassRampTop',NULL,'Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassRampTop',NULL,'Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassRampTop',NULL,'Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassOuterCornerRamp',NULL,'Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassOuterCornerRamp',NULL,'Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassOuterCornerRamp',NULL,'Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassOuterCornerRamp',NULL,'Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassCornerRamp',NULL,'Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassCornerRamp',NULL,'Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassCornerRamp',NULL,'Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassCornerRamp',NULL,'Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassCornerRampTop',NULL,'Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassCornerRampTop',NULL,'Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassCornerRampTop',NULL,'Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassCornerRampTop',NULL,'Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassURamp',NULL,'Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassURamp',NULL,'Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassURamp',NULL,'Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassURamp',NULL,'Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassURampTop',NULL,'Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassURampTop',NULL,'Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassURampTop',NULL,'Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('GrassURampTop',NULL,'Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilRamp',NULL,'Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilRamp',NULL,'Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilRamp',NULL,'Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilRamp',NULL,'Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilRampTop',NULL,'Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilRampTop',NULL,'Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilRampTop',NULL,'Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilRampTop',NULL,'Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilCornerRamp',NULL,'Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilCornerRamp',NULL,'Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilCornerRamp',NULL,'Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilCornerRamp',NULL,'Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilCornerRampTop',NULL,'Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilCornerRampTop',NULL,'Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilCornerRampTop',NULL,'Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilCornerRampTop',NULL,'Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilURamp',NULL,'Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilURamp',NULL,'Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilURamp',NULL,'Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilURamp',NULL,'Winter'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilURampTop',NULL,'Spring'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilURampTop',NULL,'Summer'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilURampTop',NULL,'Autumn'); INSERT INTO "Sprites_Seasons" ("ID","BaseSprite","Season") VALUES ('SoilURampTop',NULL,'Winter'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodBedFrame','WoodBedFrameFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodBedFrame','WoodBedFrameFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodBedFrame','WoodBedFrameBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodBedFrame','WoodBedFrameBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodBedSheets','MattressFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodBedSheets','MattressFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodBedSheets','MattressBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodBedSheets','MattressBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FancyWoodBedFrame','FancyWoodBedFrameFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FancyWoodBedFrame','FancyWoodBedFrameFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FancyWoodBedFrame','FancyWoodBedFrameBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FancyWoodBedFrame','FancyWoodBedFrameBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FancyWoodBedSheets','FancyWoodBedSheetsFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FancyWoodBedSheets','FancyWoodBedSheetsFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FancyWoodBedSheets','FancyWoodBedSheetsBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FancyWoodBedSheets','FancyWoodBedSheetsBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodChair','WoodChairFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodChair','WoodChairFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodChair','WoodChairBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodChair','WoodChairBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneChair','StoneChairFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneChair','StoneChairFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneChair','StoneChairBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneChair','StoneChairBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BoneChair','BoneChairFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BoneChair','BoneChairFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BoneChair','BoneChairBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BoneChair','BoneChairBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Statue','StoneStatueFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Statue','StoneStatueFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Statue','StoneStatueBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Statue','StoneStatueBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('RawWood','RawWood',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('RawWood','RawWood','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('RawWood','RawWood',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('RawWood','RawWood','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MarketStallBase','MarketStallBase',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MarketStallBase','MarketStallBase','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MarketStallBase','MarketStallBase',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MarketStallBase','MarketStallBase','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MarketStallTop','MarketStallTop',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MarketStallTop','MarketStallTop','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MarketStallTop','MarketStallTop',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MarketStallTop','MarketStallTop','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CarpenterStandTools','CarpenterStandToolsFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CarpenterStandTools','CarpenterStandToolsFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CarpenterStandTools','EmptyWall',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CarpenterStandTools','EmptyWall',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CarpenterStand','CarpenterStandFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CarpenterStand','CarpenterStandFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CarpenterStand','CarpenterStandBR','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CarpenterStand','CarpenterStandBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('TableSaw','TableSaw',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('TableSaw','TableSaw','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('TableSaw','TableSaw',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('TableSaw','TableSaw','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawTable','SawTable',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawTable','SawTable','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawTable','SawTable',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawTable','SawTable','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Workbench','WorkbenchFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Workbench','WorkbenchFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Workbench','WorkbenchBR','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Workbench','WorkbenchBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AxeBench','AxeBenchFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AxeBench','AxeBenchFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AxeBench','AxeBenchBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AxeBench','AxeBenchBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Keg','KegFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Keg','KegFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Keg','KegBL',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Keg','KegBL','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('TanningRack','TanningRackFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('TanningRack','TanningRackFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('TanningRack','TanningRackBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('TanningRack','TanningRackBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodPile',NULL,NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodPile',NULL,'FlipHorizontal','FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodPile',NULL,NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodPile',NULL,'FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneBlockPile','StoneBlockPileFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneBlockPile','StoneBlockPileFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneBlockPile','StoneBlockPileBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneBlockPile','StoneBlockPileBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawTableLeft','SawTableLeft',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawTableLeft','SawTableLeft','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawTableLeft','SawTableLeft2',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawTableLeft','SawTableLeft2','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawTableRight','SawTableRight',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawTableRight','SawTableRight','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawTableRight','SawTableRight2',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawTableRight','SawTableRight2','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawTableBlade','SawTableBladeFL',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawTableBlade','SawTableBladeFL','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawTableBlade','SawTableBladeBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawTableBlade','SawTableBladeBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawHorse','SawHorse',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawHorse','SawHorse','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawHorse','SawHorse',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SawHorse','SawHorse','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ShearsTableTop','ShearsTableTopFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ShearsTableTop','ShearsTableTopFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ShearsTableTop','ShearsTableTopBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ShearsTableTop','ShearsTableTopBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClothRollTableTop','ClothRollTableTop',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClothRollTableTop','ClothRollTableTop','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClothRollTableTop','ClothRollTableTop',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClothRollTableTop','ClothRollTableTop','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mold','MoldFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mold','MoldFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mold','MoldBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mold','MoldBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MoldTop','MoldTopFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MoldTop','MoldTopFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MoldTop','EmptyWall',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MoldTop','EmptyWall','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Bellows','BellowsFL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Bellows','BellowsFL','FlipHorizontal','FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Bellows','BellowsBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Bellows','BellowsBR','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BellowsNozzle','BellowsNozzleFR',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BellowsNozzle','BellowsNozzleFR','FlipHorizontal','FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BellowsNozzle','BellowsNozzleBL',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BellowsNozzle','BellowsNozzleBL','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Furnace','FurnaceFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Furnace','FurnaceFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Furnace','FurnaceBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Furnace','FurnaceBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FurnaceFlame','FurnaceFlameFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FurnaceFlame','FurnaceFlameFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FurnaceFlame','EmptyWall',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FurnaceFlame','EmptyWall','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Kiln','KilnFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Kiln','KilnFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Kiln','KilnBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Kiln','KilnBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('KilnFlame','KilnFlameFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('KilnFlame','KilnFlameFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('KilnFlame','EmptyWall',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('KilnFlame','EmptyWall','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Anvil','AnvilFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Anvil','AnvilFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Anvil','AnvilBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Anvil','AnvilBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Trough','Trough','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Trough','Trough',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Trough','Trough','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Trough','Trough',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Shed','ShedFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Shed','ShedFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Shed','ShedBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Shed','ShedBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MetalBarPile','MetalBarPile','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MetalBarPile','MetalBarPile',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MetalBarPile','MetalBarPile',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MetalBarPile','MetalBarPile','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GreenFish','GreenFish',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GreenFish','GreenFish','FlipHorizontal','FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GreenFish','GreenFishBack',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GreenFish','GreenFishBack','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Panda','Panda',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Panda','Panda','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Panda','PandaBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Panda','PandaBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Rabbit','Rabbit',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Rabbit','Rabbit','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Rabbit','RabbitBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Rabbit','RabbitBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('RabbitYoung','RabbitYoung',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('RabbitYoung','RabbitYoung','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('RabbitYoung','RabbitYoungBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('RabbitYoung','RabbitYoungBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Chicken','Chicken',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Chicken','Chicken','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Chicken','ChickenBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Chicken','ChickenBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ChickenYoung','ChickenYoung',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ChickenYoung','ChickenYoung','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ChickenYoung','ChickenYoungBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ChickenYoung','ChickenYoungBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PigPink','PigPink',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PigPink','PigPink','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PigPink','PigPinkBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PigPink','PigPinkBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PigYoung','PigYoung',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PigYoung','PigYoung','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PigYoung','PigYoungBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PigYoung','PigYoungBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PigYellow','PigYellow',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PigYellow','PigYellow','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PigYellow','PigYellowBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PigYellow','PigYellowBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Sheep','Sheep',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Sheep','Sheep','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Sheep','SheepBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Sheep','SheepBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepYoung','SheepYoung',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepYoung','SheepYoung','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepYoung','SheepYoungBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepYoung','SheepYoungBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Woodlouse','Woodlouse',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Woodlouse','Woodlouse','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Woodlouse','WoodlouseBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Woodlouse','WoodlouseBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Badger','Badger',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Badger','Badger','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Badger','BadgerBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Badger','BadgerBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Lizzard','Lizzard',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Lizzard','Lizzard','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Lizzard','LizzardBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Lizzard','LizzardBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlackBear','BlackBear',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlackBear','BlackBear','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlackBear','BlackBearBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlackBear','BlackBearBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Llama','Llama',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Llama','Llama','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Llama','LlamaBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Llama','LlamaBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('LlamaYoung','LlamaYoung',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('LlamaYoung','LlamaYoung','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('LlamaYoung','LlamaYoungBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('LlamaYoung','LlamaYoungBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Emu','Emu',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Emu','Emu','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Emu','EmuBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Emu','EmuBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('EmuYoung','EmuYoung',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('EmuYoung','EmuYoung','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('EmuYoung','EmuYoungBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('EmuYoung','EmuYoungBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Cow','Cow',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Cow','Cow','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Cow','CowBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Cow','CowBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CowYoung','CowYoung',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CowYoung','CowYoung','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CowYoung','CowYoungBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CowYoung','CowYoungBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Yak','Yak',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Yak','Yak','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Yak','YakBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Yak','YakBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('YakYoung','YakYoung',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('YakYoung','YakYoung','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('YakYoung','YakYoungBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('YakYoung','YakYoungBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Spider','Spider',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Spider','Spider','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Spider','SpiderBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Spider','SpiderBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Beetle','Beetle',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Beetle','Beetle','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Beetle','BeetleBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Beetle','BeetleBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Duck','Duck',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Duck','Duck','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Duck','DuckBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Duck','DuckBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('DuckYoung','DuckYoung',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('DuckYoung','DuckYoung','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('DuckYoung','DuckYoungBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('DuckYoung','DuckYoungBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Goose','Goose',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Goose','Goose','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Goose','GooseBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Goose','GooseBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GooseYoung','GooseYoung',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GooseYoung','GooseYoung','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GooseYoung','GooseYoungBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GooseYoung','GooseYoungBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Shepherd','Shepherd',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Shepherd','Shepherd','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Shepherd','ShepherdBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Shepherd','ShepherdBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ShepherdYoung','ShepherdYoung',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ShepherdYoung','ShepherdYoung','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ShepherdYoung','ShepherdYoungBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ShepherdYoung','ShepherdYoungBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CatTabby','CatTabby',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CatTabby','CatTabby','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CatTabby','CatTabbyBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CatTabby','CatTabbyBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CatBlack','CatBlack',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CatBlack','CatBlack','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CatBlack','CatBlackBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CatBlack','CatBlackBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Porcupine','Porcupine',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Porcupine','Porcupine','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Porcupine','PorcupineBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Porcupine','PorcupineBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Fox','Fox',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Fox','Fox','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Fox','FoxBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Fox','FoxBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Wolf','Wolf',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Wolf','Wolf','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Wolf','WolfBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Wolf','WolfBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Stag','Stag',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Stag','Stag','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Stag','StagBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Stag','StagBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Roe','Roe',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Roe','Roe','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Roe','RoeBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Roe','RoeBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Goat','Goat',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Goat','Goat','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Goat','GoatBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Goat','GoatBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GoatYoung','GoatYoung',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GoatYoung','GoatYoung','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GoatYoung','GoatYoungBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GoatYoung','GoatYoungBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Squirrel','Squirrel',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Squirrel','Squirrel','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Squirrel','SquirrelBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Squirrel','SquirrelBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GreyFish','GreyFish',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GreyFish','GreyFish','FlipHorizontal','FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GreyFish','GreyFishBack',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GreyFish','GreyFishBack','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Goblin',NULL,'FlipHorizontal','FL','GoblinFR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Goblin',NULL,NULL,'FR','GoblinFR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Goblin',NULL,NULL,'BR','GoblinFR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Goblin',NULL,'FlipHorizontal','BL','GoblinFR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CrystalSnake','CrystalSnakeFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CrystalSnake','CrystalSnakeFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CrystalSnake','CrystalSnakeBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CrystalSnake','CrystalSnakeBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygYoungBlue','ZygYoungBlueFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygYoungBlue','ZygYoungBlueFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygYoungBlue','ZygYoungBlueBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygYoungBlue','ZygYoungBlueBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygYoungRed','ZygYoungRedFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygYoungRed','ZygYoungRedFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygYoungRed','ZygYoungRedBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygYoungRed','ZygYoungRedBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygYouthBlue','ZygYouthBlueFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygYouthBlue','ZygYouthBlueFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygYouthBlue','ZygYouthBlueBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygYouthBlue','ZygYouthBlueBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygYouthRed','ZygYouthRedFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygYouthRed','ZygYouthRedFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygYouthRed','ZygYouthRedBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygYouthRed','ZygYouthRedBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygAdultBlue','ZygAdultBlueFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygAdultBlue','ZygAdultBlueFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygAdultBlue','ZygAdultBlueBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygAdultBlue','ZygAdultBlueBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygAdultRed','ZygAdultRedFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygAdultRed','ZygAdultRedFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygAdultRed','ZygAdultRedBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygAdultRed','ZygAdultRedBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygSeniorBlue','ZygSeniorBlueFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygSeniorBlue','ZygSeniorBlueFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygSeniorBlue','ZygSeniorBlueBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygSeniorBlue','ZygSeniorBlueBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygSeniorRed','ZygSeniorRedFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygSeniorRed','ZygSeniorRedFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygSeniorRed','ZygSeniorRedBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ZygSeniorRed','ZygSeniorRedBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('DyedCloth','DyedCloth',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('DyedCloth','DyedCloth','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('DyedCloth','DyedCloth',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('DyedCloth','DyedCloth','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Cabinet','CabinetFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Cabinet','CabinetFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Cabinet','CabinetBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Cabinet','CabinetBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting1','Painting1',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting1','Painting1','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting1','Painting1',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting1','Painting1','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting2','Painting2',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting2','Painting2','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting2','Painting2',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting2','Painting2','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting3','Painting3',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting3','Painting3','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting3','Painting3',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting3','Painting3','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting4','Painting4',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting4','Painting4','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting4','Painting4',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting4','Painting4','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting5','Painting5',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting5','Painting5','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting5','Painting5',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting5','Painting5','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting6','Painting6',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting6','Painting6','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting6','Painting6',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting6','Painting6','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting7','Painting7',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting7','Painting7','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting7','Painting7',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting7','Painting7','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting8','Painting8',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting8','Painting8','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting8','Painting8',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Painting8','Painting8','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FishingFishRack','FishingFishRack',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FishingFishRack','FishingFishRack','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FishingFishRack','FishingFishRack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FishingFishRack','FishingFishRack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FishingRack','FishingRackFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FishingRack','FishingRackFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FishingRack','FishingRackBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FishingRack','FishingRackBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FishingRods','FishingRodsFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FishingRods','FishingRodsFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FishingRods','FishingRodsBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('FishingRods','FishingRodsBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Palisade','Palisade',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Palisade','Palisade','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Palisade','Palisade',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Palisade','Palisade','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PalisadeTop','PalisadeTop',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PalisadeTop','PalisadeTop','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PalisadeTop','PalisadeTop',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PalisadeTop','PalisadeTop','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotN',NULL,NULL,'FR','BlockFenceN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotN',NULL,NULL,'FL','BlockFenceE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotN',NULL,NULL,'BL','BlockFenceS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotN',NULL,NULL,'BR','BlockFenceW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotE',NULL,NULL,'FR','BlockFenceE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotE',NULL,NULL,'FL','BlockFenceS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotE',NULL,NULL,'BL','BlockFenceW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotE',NULL,NULL,'BR','BlockFenceN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotS',NULL,NULL,'FR','BlockFenceS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotS',NULL,NULL,'FL','BlockFenceW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotS',NULL,NULL,'BL','BlockFenceN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotS',NULL,NULL,'BR','BlockFenceE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotW',NULL,NULL,'FR','BlockFenceW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotW',NULL,NULL,'FL','BlockFenceN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotW',NULL,NULL,'BL','BlockFenceE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotW',NULL,NULL,'BR','BlockFenceS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNS',NULL,NULL,'FR','BlockFenceNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNS',NULL,NULL,'FL','BlockFenceEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNS',NULL,NULL,'BL','BlockFenceNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNS',NULL,NULL,'BR','BlockFenceEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotEW',NULL,NULL,'FR','BlockFenceEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotEW',NULL,NULL,'FL','BlockFenceNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotEW',NULL,NULL,'BL','BlockFenceEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotEW',NULL,NULL,'BR','BlockFenceNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNE',NULL,NULL,'FR','BlockFenceNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNE',NULL,NULL,'FL','BlockFenceES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNE',NULL,NULL,'BL','BlockFenceSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNE',NULL,NULL,'BR','BlockFenceNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotES',NULL,NULL,'FR','BlockFenceES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotES',NULL,NULL,'FL','BlockFenceSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotES',NULL,NULL,'BL','BlockFenceNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotES',NULL,NULL,'BR','BlockFenceNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotSW',NULL,NULL,'FR','BlockFenceSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotSW',NULL,NULL,'FL','BlockFenceNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotSW',NULL,NULL,'BL','BlockFenceNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotSW',NULL,NULL,'BR','BlockFenceES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNW',NULL,NULL,'FR','BlockFenceNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNW',NULL,NULL,'FL','BlockFenceNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNW',NULL,NULL,'BL','BlockFenceES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNW',NULL,NULL,'BR','BlockFenceSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotESW',NULL,NULL,'FR','BlockFenceESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotESW',NULL,NULL,'FL','BlockFenceNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotESW',NULL,NULL,'BL','BlockFenceNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotESW',NULL,NULL,'BR','BlockFenceNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNSW',NULL,NULL,'FR','BlockFenceNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNSW',NULL,NULL,'FL','BlockFenceNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNSW',NULL,NULL,'BL','BlockFenceNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNSW',NULL,NULL,'BR','BlockFenceESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNEW',NULL,NULL,'FR','BlockFenceNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNEW',NULL,NULL,'FL','BlockFenceNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNEW',NULL,NULL,'BL','BlockFenceESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNEW',NULL,NULL,'BR','BlockFenceNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNES',NULL,NULL,'FR','BlockFenceNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNES',NULL,NULL,'FL','BlockFenceESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNES',NULL,NULL,'BL','BlockFenceNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BlockFenceRotNES',NULL,NULL,'BR','BlockFenceNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotN',NULL,NULL,'FR','CobbleStoneFenceN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotN',NULL,NULL,'FL','CobbleStoneFenceE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotN',NULL,NULL,'BL','CobbleStoneFenceS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotN',NULL,NULL,'BR','CobbleStoneFenceW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotE',NULL,NULL,'FR','CobbleStoneFenceE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotE',NULL,NULL,'FL','CobbleStoneFenceS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotE',NULL,NULL,'BL','CobbleStoneFenceW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotE',NULL,NULL,'BR','CobbleStoneFenceN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotS',NULL,NULL,'FR','CobbleStoneFenceS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotS',NULL,NULL,'FL','CobbleStoneFenceW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotS',NULL,NULL,'BL','CobbleStoneFenceN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotS',NULL,NULL,'BR','CobbleStoneFenceE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotW',NULL,NULL,'FR','CobbleStoneFenceW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotW',NULL,NULL,'FL','CobbleStoneFenceN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotW',NULL,NULL,'BL','CobbleStoneFenceE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotW',NULL,NULL,'BR','CobbleStoneFenceS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNS',NULL,NULL,'FR','CobbleStoneFenceNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNS',NULL,NULL,'FL','CobbleStoneFenceEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNS',NULL,NULL,'BL','CobbleStoneFenceNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNS',NULL,NULL,'BR','CobbleStoneFenceEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotEW',NULL,NULL,'FR','CobbleStoneFenceEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotEW',NULL,NULL,'FL','CobbleStoneFenceNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotEW',NULL,NULL,'BL','CobbleStoneFenceEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotEW',NULL,NULL,'BR','CobbleStoneFenceNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNE',NULL,NULL,'FR','CobbleStoneFenceNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNE',NULL,NULL,'FL','CobbleStoneFenceES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNE',NULL,NULL,'BL','CobbleStoneFenceSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNE',NULL,NULL,'BR','CobbleStoneFenceNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotES',NULL,NULL,'FR','CobbleStoneFenceES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotES',NULL,NULL,'FL','CobbleStoneFenceSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotES',NULL,NULL,'BL','CobbleStoneFenceNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotES',NULL,NULL,'BR','CobbleStoneFenceNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotSW',NULL,NULL,'FR','CobbleStoneFenceSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotSW',NULL,NULL,'FL','CobbleStoneFenceNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotSW',NULL,NULL,'BL','CobbleStoneFenceNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotSW',NULL,NULL,'BR','CobbleStoneFenceES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNW',NULL,NULL,'FR','CobbleStoneFenceNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNW',NULL,NULL,'FL','CobbleStoneFenceNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNW',NULL,NULL,'BL','CobbleStoneFenceES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNW',NULL,NULL,'BR','CobbleStoneFenceSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotESW',NULL,NULL,'FR','CobbleStoneFenceESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotESW',NULL,NULL,'FL','CobbleStoneFenceNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotESW',NULL,NULL,'BL','CobbleStoneFenceNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotESW',NULL,NULL,'BR','CobbleStoneFenceNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNSW',NULL,NULL,'FR','CobbleStoneFenceNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNSW',NULL,NULL,'FL','CobbleStoneFenceNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNSW',NULL,NULL,'BL','CobbleStoneFenceNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNSW',NULL,NULL,'BR','CobbleStoneFenceESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNEW',NULL,NULL,'FR','CobbleStoneFenceNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNEW',NULL,NULL,'FL','CobbleStoneFenceNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNEW',NULL,NULL,'BL','CobbleStoneFenceESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNEW',NULL,NULL,'BR','CobbleStoneFenceNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNES',NULL,NULL,'FR','CobbleStoneFenceNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNES',NULL,NULL,'FL','CobbleStoneFenceESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNES',NULL,NULL,'BL','CobbleStoneFenceNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('CobbleStoneFenceRotNES',NULL,NULL,'BR','CobbleStoneFenceNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotN',NULL,NULL,'FR','WoodFenceN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotN',NULL,NULL,'FL','WoodFenceE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotN',NULL,NULL,'BL','WoodFenceS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotN',NULL,NULL,'BR','WoodFenceW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotE',NULL,NULL,'FR','WoodFenceE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotE',NULL,NULL,'FL','WoodFenceS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotE',NULL,NULL,'BL','WoodFenceW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotE',NULL,NULL,'BR','WoodFenceN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotS',NULL,NULL,'FR','WoodFenceS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotS',NULL,NULL,'FL','WoodFenceW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotS',NULL,NULL,'BL','WoodFenceN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotS',NULL,NULL,'BR','WoodFenceE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotW',NULL,NULL,'FR','WoodFenceW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotW',NULL,NULL,'FL','WoodFenceN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotW',NULL,NULL,'BL','WoodFenceE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotW',NULL,NULL,'BR','WoodFenceS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNS',NULL,NULL,'FR','WoodFenceNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNS',NULL,NULL,'FL','WoodFenceEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNS',NULL,NULL,'BL','WoodFenceNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNS',NULL,NULL,'BR','WoodFenceEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotEW',NULL,NULL,'FR','WoodFenceEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotEW',NULL,NULL,'FL','WoodFenceNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotEW',NULL,NULL,'BL','WoodFenceEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotEW',NULL,NULL,'BR','WoodFenceNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNE',NULL,NULL,'FR','WoodFenceNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNE',NULL,NULL,'FL','WoodFenceES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNE',NULL,NULL,'BL','WoodFenceSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNE',NULL,NULL,'BR','WoodFenceNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotES',NULL,NULL,'FR','WoodFenceES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotES',NULL,NULL,'FL','WoodFenceSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotES',NULL,NULL,'BL','WoodFenceNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotES',NULL,NULL,'BR','WoodFenceNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotSW',NULL,NULL,'FR','WoodFenceSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotSW',NULL,NULL,'FL','WoodFenceNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotSW',NULL,NULL,'BL','WoodFenceNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotSW',NULL,NULL,'BR','WoodFenceES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNW',NULL,NULL,'FR','WoodFenceNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNW',NULL,NULL,'FL','WoodFenceNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNW',NULL,NULL,'BL','WoodFenceES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNW',NULL,NULL,'BR','WoodFenceSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotESW',NULL,NULL,'FR','WoodFenceESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotESW',NULL,NULL,'FL','WoodFenceNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotESW',NULL,NULL,'BL','WoodFenceNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotESW',NULL,NULL,'BR','WoodFenceNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNSW',NULL,NULL,'FR','WoodFenceNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNSW',NULL,NULL,'FL','WoodFenceNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNSW',NULL,NULL,'BL','WoodFenceNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNSW',NULL,NULL,'BR','WoodFenceESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNEW',NULL,NULL,'FR','WoodFenceNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNEW',NULL,NULL,'FL','WoodFenceNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNEW',NULL,NULL,'BL','WoodFenceESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNEW',NULL,NULL,'BR','WoodFenceNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNES',NULL,NULL,'FR','WoodFenceNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNES',NULL,NULL,'FL','WoodFenceESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNES',NULL,NULL,'BL','WoodFenceNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodFenceRotNES',NULL,NULL,'BR','WoodFenceNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Rafter','RafterFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Rafter','RafterFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Rafter','RafterBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Rafter','RafterBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Roofing','RoofingFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Roofing','RoofingFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Roofing','RoofingBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Roofing','RoofingBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WorkshopTable','WorkshopTable',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WorkshopTable','WorkshopTable',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WorkshopTable','WorkshopTable',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WorkshopTable','WorkshopTable',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ChiselTableTop','ChiselTableTopFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ChiselTableTop','ChiselTableTopFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ChiselTableTop','ChiselTableTopBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ChiselTableTop','ChiselTableTopBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ButcherTableTop','ButcherTableTopFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ButcherTableTop','ButcherTableTopFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ButcherTableTop','ButcherTableTopBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ButcherTableTop','ButcherTableTopBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('KitchenTableTop','KitchenTableTopFR','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('KitchenTableTop','KitchenTableTopFR',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('KitchenTableTop','KitchenTableTopBL','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('KitchenTableTop','KitchenTableTopBL',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('HammerTableTop','HammerTableTopBL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('HammerTableTop','HammerTableTopFR','FlipHorizontal','FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('HammerTableTop','HammerTableTopFR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('HammerTableTop','HammerTableTopBL','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Loom','LoomFR',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Loom','LoomFR','FlipHorizontal','FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Loom','LoomBL',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Loom','LoomBL','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayRamp','ClayRampFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayRamp','ClayRampFL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayRamp','ClayRampBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayRamp','ClayRampBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneRamp','StoneRampFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneRamp','StoneRampFL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneRamp','StoneRampBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneRamp','StoneRampBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ThatchRamp','ThatchRampFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ThatchRamp','ThatchRampFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ThatchRamp','ThatchRampBR','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ThatchRamp','ThatchRampBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ThatchRampTop','ThatchRampTopFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ThatchRampTop','ThatchRampTopFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ThatchRampTop','ThatchRampTopBR','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ThatchRampTop','ThatchRampTopBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayCornerRamp','ClayCornerRampFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayCornerRamp','ClayCornerRampFL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayCornerRamp','ClayCornerRampBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayCornerRamp','ClayCornerRampBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneCornerRamp','StoneCornerRampFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneCornerRamp','StoneCornerRampFL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneCornerRamp','StoneCornerRampBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneCornerRamp','StoneCornerRampBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayURamp','ClayURampFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayURamp','ClayURampFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayURamp','ClayURampBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayURamp','ClayURampBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneURamp','StoneURampFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneURamp','StoneURampFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneURamp','StoneURampBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneURamp','StoneURampBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayURampTop','ClayURampTopFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayURampTop','ClayURampTopFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayURampTop','ClayURampTopBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayURampTop','ClayURampTopBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneRampTop','StoneRampTopFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneRampTop','StoneRampTopFL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneRampTop','StoneRampTopBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneRampTop','StoneRampTopBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayCornerRampTop','ClayCornerRampTopFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayCornerRampTop','ClayCornerRampTopFL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayCornerRampTop','ClayCornerRampTopBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayCornerRampTop','ClayCornerRampTopBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneCornerRampTop','StoneCornerRampTopFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneCornerRampTop','StoneCornerRampTopFL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneCornerRampTop','StoneCornerRampTopBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneCornerRampTop','StoneCornerRampTopBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayURampTop','ClayURampTopFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayURampTop','ClayURampTopFL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayURampTop','ClayURampTopBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayURampTop','ClayURampTopBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneURampTop','StoneURampTopFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneURampTop','StoneURampTopFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneURampTop','StoneURampTopBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneURampTop','StoneURampTopBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SoilOuterCornerRamp','SoilOuterCornerRampBR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SoilOuterCornerRamp','SoilOuterCornerRampFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SoilOuterCornerRamp','EmptyWall',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SoilOuterCornerRamp','SoilOuterCornerRampBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayOuterCornerRamp','ClayOuterCornerRampBR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayOuterCornerRamp','ClayOuterCornerRampFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayOuterCornerRamp','EmptyWall',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ClayOuterCornerRamp','ClayOuterCornerRampBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneOuterCornerRamp','StoneOuterCornerRampBR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneOuterCornerRamp','StoneOuterCornerRampFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneOuterCornerRamp','EmptyWall',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneOuterCornerRamp','StoneOuterCornerRampBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ThatchOuterCornerRamp','ThatchOuterCornerRampBR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ThatchOuterCornerRamp','ThatchOuterCornerRampFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ThatchOuterCornerRamp','EmptyWall',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('ThatchOuterCornerRamp','ThatchOuterCornerRampBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AppleTreeTop','AppleTreeTopFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AppleTreeTop','AppleTreeTopFL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AppleTreeTop','AppleTreeTopBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AppleTreeTop','AppleTreeTopBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AppleTreeTopCorner','AppleTreeTopCornerFront',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AppleTreeTopCorner','AppleTreeTopCornerLeft',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AppleTreeTopCorner','AppleTreeTopCornerBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AppleTreeTopCorner','AppleTreeTopCornerRight',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AppleTreeBottom','AppleTreeBottom',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AppleTreeBottom','AppleTreeBottom',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AppleTreeBottom','AppleTreeMiddle',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AppleTreeBottom','AppleTreeMiddle',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AppleTreeBottomCorner','AppleTreeBottomCornerFront',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AppleTreeBottomCorner','AppleTreeBottomCornerLeft',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AppleTreeBottomCorner','AppleTreeMiddle',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('AppleTreeBottomCorner','AppleTreeBottomCornerRight',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PineTree1','PineTree9',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PineTree1','PineTree8',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PineTree1','PineTree14',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PineTree1','PineTree15',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PineTree2','PineTree13',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PineTree2','PineTree12',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PineTree2','PineTree3',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PineTree2','PineTree4',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PineTree3','PineTree2',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PineTree3','PineTree1',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PineTree3','PineTree10',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PineTree3','PineTree11',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PineTree4','PineTree17',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PineTree4','PineTree16',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PineTree4','PineTree14',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PineTree4','PineTree15',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeTop','OrangeTreeTopFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeTop','OrangeTreeTopFL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeTop','OrangeTreeTopBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeTop','OrangeTreeTopBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeTopCorner','OrangeTreeTopCornerFront',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeTopCorner','OrangeTreeTopCornerLeft',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeTopCorner','OrangeTreeTopCornerBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeTopCorner','OrangeTreeTopCornerRight',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeMiddleCorner','OrangeTreeMiddleCornerFront',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeMiddleCorner','OrangeTreeMiddleCornerLeft',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeMiddleCorner','OrangeTreeMiddleCornerBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeMiddleCorner','OrangeTreeMiddleCornerRight',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeBottom','OrangeTreeBottom',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeBottom','OrangeTreeBottom',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeBottom','OrangeTreeMiddle',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeBottom','OrangeTreeMiddle',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeBottomCorner','OrangeTreeBottomCornerFront',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeBottomCorner','OrangeTreeBottomCornerLeft',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeBottomCorner','OrangeTreeMiddle',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OrangeTreeBottomCorner','OrangeTreeBottomCornerRight',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassRamp','MushroomGrassRamp_3_FL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassRamp','MushroomGrassRamp_3_FR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassRamp','MushroomGrassRamp_3_BL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassRamp','MushroomGrassRamp_3_BR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassRampTop','MushroomGrassRampTop_3_FL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassRampTop','MushroomGrassRampTop_3_FR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassRampTop','MushroomGrassRampTop_3_BL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassRampTop','MushroomGrassRampTop_3_BR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassCornerRamp','MushroomGrassCornerRamp_3_FL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassCornerRamp','MushroomGrassCornerRamp_3_FR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassCornerRamp','MushroomGrassCornerRamp_3_BL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassCornerRamp','MushroomGrassCornerRamp_3_BR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassCornerRampTop','MushroomGrassCornerRampTop_3_FL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassCornerRampTop','MushroomGrassCornerRampTop_3_FR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassCornerRampTop','MushroomGrassCornerRampTop_3_BL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassCornerRampTop','MushroomGrassCornerRampTop_3_BR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassURamp','MushroomGrassURamp_3_FL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassURamp','MushroomGrassURamp_3_FR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassURamp','MushroomGrassURamp_3_FR',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassURamp','MushroomGrassURamp_3_FL',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassURampTop','MushroomGrassURampTop_3_FL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassURampTop','MushroomGrassURampTop_3_FR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassURampTop','MushroomGrassURampTop_3_FR',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MushroomGrassURampTop','MushroomGrassURampTop_3_FL',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree1','OakTree1','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree1','OakTree6','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree1','OakTree3','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree1','OakTree5','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree10','OakTree10','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree10','OakTree8','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree10','OakTree12','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree10','OakTree12','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree11','OakTree11','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree11','OakTree9','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree11','OakTree12','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree11','OakTree7','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree12_1','OakTree12','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree12_1','OakTree10','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree12_1','OakTree12','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree12_1','OakTree8','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree2','OakTree2','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree2','OakTree6','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree2','OakTree4','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree2','OakTree6','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree210','OakTree210','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree210','OakTree26','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree210','OakTree28','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree210','OakTree24','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree211','OakTree211','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree211','OakTree27','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree211','OakTree23','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree211','OakTree25','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree23','OakTree23','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree23','OakTree211','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree23','OakTree25','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree23','OakTree27','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree24','OakTree24','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree24','OakTree28','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree24','OakTree26','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree24','OakTree210','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree25','OakTree25','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree25','OakTree23','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree25','OakTree27','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree25','OakTree211','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree26','OakTree26','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree26','OakTree24','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree26','OakTree210','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree26','OakTree28','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree27','OakTree27','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree27','OakTree25','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree27','OakTree211','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree27','OakTree23','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree28','OakTree28','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree28','OakTree210','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree28','OakTree24','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree28','OakTree26','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree29','OakTree29','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree29','OakTree29','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree29','OakTree29','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree29','OakTree29','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree3','OakTree3','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree3','OakTree1','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree3','OakTree5','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree3','OakTree6','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree4','OakTree4','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree4','OakTree2','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree4','OakTree6','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree4','OakTree6','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree5','OakTree5','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree5','OakTree3','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree5','OakTree6','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree5','OakTree1','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree6_1','OakTree6','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree6_1','OakTree4','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree6_1','OakTree6','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree6_1','OakTree2','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree7','OakTree7','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree7','OakTree12','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree7','OakTree9','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree7','OakTree11','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree8','OakTree8','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree8','OakTree12','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree8','OakTree10','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree8','OakTree12','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree9','OakTree9','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree9','OakTree7','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree9','OakTree11','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree9','OakTree12','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree6_2','OakTree6','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree6_2','OakTree5','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree6_2','OakTree1','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree6_2','OakTree3','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree6_3','OakTree6','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree6_3','OakTree6','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree6_3','OakTree2','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree6_3','OakTree4','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree12_3','OakTree12','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree12_3','OakTree12','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree12_3','OakTree8','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree12_3','OakTree10','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree12_2','OakTree12',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree12_2','OakTree11',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree12_2','OakTree9',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('OakTree12_2','OakTree7',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree1','WillowTree1','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree1','WillowTree6','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree1','WillowTree3','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree1','WillowTree5','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree10','WillowTree10','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree10','WillowTree8','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree10','WillowTree12','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree10','WillowTree12','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree11','WillowTree11','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree11','WillowTree9','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree11','WillowTree12','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree11','WillowTree7','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree12_1','WillowTree12','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree12_1','WillowTree10','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree12_1','WillowTree12','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree12_1','WillowTree8','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree2','WillowTree2','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree2','WillowTree6','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree2','WillowTree4','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree2','WillowTree6','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree210','WillowTree210','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree210','WillowTree26','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree210','WillowTree28','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree210','WillowTree24','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree211','WillowTree211','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree211','WillowTree27','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree211','WillowTree23','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree211','WillowTree25','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree23','WillowTree23','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree23','WillowTree211','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree23','WillowTree25','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree23','WillowTree27','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree24','WillowTree24','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree24','WillowTree28','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree24','WillowTree26','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree24','WillowTree210','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree25','WillowTree25','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree25','WillowTree23','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree25','WillowTree27','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree25','WillowTree211','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree26','WillowTree26','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree26','WillowTree24','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree26','WillowTree210','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree26','WillowTree28','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree27','WillowTree27','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree27','WillowTree25','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree27','WillowTree211','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree27','WillowTree23','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree28','WillowTree28','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree28','WillowTree210','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree28','WillowTree24','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree28','WillowTree26','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree29','WillowTree29','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree29','WillowTree29','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree29','WillowTree29','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree29','WillowTree29','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree3','WillowTree3','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree3','WillowTree1','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree3','WillowTree5','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree3','WillowTree6','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree4','WillowTree4','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree4','WillowTree2','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree4','WillowTree6','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree4','WillowTree6','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree5','WillowTree5','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree5','WillowTree3','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree5','WillowTree6','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree5','WillowTree1','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree6_1','WillowTree6','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree6_1','WillowTree4','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree6_1','WillowTree6','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree6_1','WillowTree2','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree7','WillowTree7','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree7','WillowTree12','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree7','WillowTree9','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree7','WillowTree11','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree8','WillowTree8','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree8','WillowTree12','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree8','WillowTree10','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree8','WillowTree12','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree9','WillowTree9','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree9','WillowTree7','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree9','WillowTree11','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree9','WillowTree12','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree6_2','WillowTree6','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree6_2','WillowTree5','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree6_2','WillowTree1','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree6_2','WillowTree3','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree6_3','WillowTree6','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree6_3','WillowTree6','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree6_3','WillowTree2','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree6_3','WillowTree4','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree12_3','WillowTree12','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree12_3','WillowTree12','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree12_3','WillowTree8','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree12_3','WillowTree10','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree12_2','WillowTree12',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree12_2','WillowTree11',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree12_2','WillowTree9',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WillowTree12_2','WillowTree7',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('UprightWeaponStand','UprightWeaponStandFR','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('UprightWeaponStand','UprightWeaponStandFR','FlipHorizontal','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('UprightWeaponStand','UprightWeaponStandBL','FlipHorizontal','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('UprightWeaponStand','UprightWeaponStandBL','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('TrainingDummy','TrainingDummy','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('TrainingDummy','TrainingDummy','FlipHorizontal','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('TrainingDummy','TrainingDummy','FlipHorizontal','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('TrainingDummy','TrainingDummy','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepRed','SheepRed','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepRed','SheepRed','FlipHorizontal','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepRed','SheepRedBack','FlipHorizontal','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepRed','SheepRedBack','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepGreen','SheepGreen','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepGreen','SheepGreen','FlipHorizontal','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepGreen','SheepGreenBack','FlipHorizontal','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepGreen','SheepGreenBack','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepBlue','SheepBlue','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepBlue','SheepBlue','FlipHorizontal','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepBlue','SheepBlueBack','FlipHorizontal','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepBlue','SheepBlueBack','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepYellow','SheepYellow','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepYellow','SheepYellow','FlipHorizontal','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepYellow','SheepYellowBack','FlipHorizontal','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepYellow','SheepYellowBack','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepPurple','SheepPurple','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepPurple','SheepPurple','FlipHorizontal','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepPurple','SheepPurpleBack','FlipHorizontal','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepPurple','SheepPurpleBack','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepCyan','SheepCyan','','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepCyan','SheepCyan','FlipHorizontal','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepCyan','SheepCyanBack','FlipHorizontal','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SheepCyan','SheepCyanBack','','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SteamEngineBoiler',NULL,NULL,'FR','SteamEngineBoilerFR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SteamEngineBoiler',NULL,'FlipHorizontal','FL','SteamEngineBoilerFR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SteamEngineBoiler',NULL,NULL,'BL','SteamEngineBoilerBL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SteamEngineBoiler',NULL,'FlipHorizontal','BR','SteamEngineBoilerBL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SteamEnginePiston',NULL,NULL,'FR','SteamEnginePistonFR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SteamEnginePiston',NULL,'FlipHorizontal','FL','SteamEnginePistonFR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SteamEnginePiston',NULL,NULL,'BL','SteamEnginePistonBL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SteamEnginePiston',NULL,'FlipHorizontal','BR','SteamEnginePistonBL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Axle',NULL,NULL,'FR','AxleAnim'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Axle',NULL,'FlipHorizontal','FL','AxleAnim'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Axle',NULL,NULL,'BL','AxleAnim'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Axle',NULL,'FlipHorizontal','BR','AxleAnim'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotN','','','FR','PipeN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotN','','','FL','PipeE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotN','','','BL','PipeS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotN','','','BR','PipeW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotE','','','FR','PipeE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotE','','','FL','PipeS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotE','','','BL','PipeW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotE','','','BR','PipeN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotS','','','FR','PipeS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotS','','','FL','PipeW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotS','','','BL','PipeN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotS','','','BR','PipeE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotW','','','FR','PipeW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotW','','','FL','PipeN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotW','','','BL','PipeE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotW','','','BR','PipeS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNS','','','FR','PipeNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNS','','','FL','PipeEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNS','','','BL','PipeNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNS','','','BR','PipeEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotEW','','','FR','PipeEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotEW','','','FL','PipeNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotEW','','','BL','PipeEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotEW','','','BR','PipeNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNE','','','FR','PipeNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNE','','','FL','PipeES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNE','','','BL','PipeSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNE','','','BR','PipeNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotES','','','FR','PipeES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotES','','','FL','PipeSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotES','','','BL','PipeNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotES','','','BR','PipeNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotSW','','','FR','PipeSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotSW','','','FL','PipeNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotSW','','','BL','PipeNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotSW','','','BR','PipeES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNW','','','FR','PipeNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNW','','','FL','PipeNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNW','','','BL','PipeES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNW','','','BR','PipeSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotESW','','','FR','PipeESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotESW','','','FL','PipeNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotESW','','','BL','PipeNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotESW','','','BR','PipeNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNSW','','','FR','PipeNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNSW','','','FL','PipeNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNSW','','','BL','PipeNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNSW','','','BR','PipeESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNEW','','','FR','PipeNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNEW','','','FL','PipeNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNEW','','','BL','PipeESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNEW','','','BR','PipeNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNES','','','FR','PipeNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNES','','','FL','PipeESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNES','','','BL','PipeNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeRotNES','','','BR','PipeNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotN','','','FR','PipeExitN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotN','','','FL','PipeExitE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotN','','','BL','PipeExitS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotN','','','BR','PipeExitW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotE','','','FR','PipeExitE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotE','','','FL','PipeExitS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotE','','','BL','PipeExitW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotE','','','BR','PipeExitN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotS','','','FR','PipeExitS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotS','','','FL','PipeExitW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotS','','','BL','PipeExitN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotS','','','BR','PipeExitE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotW','','','FR','PipeExitW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotW','','','FL','PipeExitN'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotW','','','BL','PipeExitE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotW','','','BR','PipeExitS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNS','','','FR','PipeExitNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNS','','','FL','PipeExitEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNS','','','BL','PipeExitNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNS','','','BR','PipeExitEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotEW','','','FR','PipeExitEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotEW','','','FL','PipeExitNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotEW','','','BL','PipeExitEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotEW','','','BR','PipeExitNS'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNE','','','FR','PipeExitNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNE','','','FL','PipeExitES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNE','','','BL','PipeExitSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNE','','','BR','PipeExitNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotES','','','FR','PipeExitES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotES','','','FL','PipeExitSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotES','','','BL','PipeExitNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotES','','','BR','PipeExitNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotSW','','','FR','PipeExitSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotSW','','','FL','PipeExitNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotSW','','','BL','PipeExitNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotSW','','','BR','PipeExitES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNW','','','FR','PipeExitNW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNW','','','FL','PipeExitNE'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNW','','','BL','PipeExitES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNW','','','BR','PipeExitSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotESW','','','FR','PipeExitESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotESW','','','FL','PipeExitNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotESW','','','BL','PipeExitNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotESW','','','BR','PipeExitNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNSW','','','FR','PipeExitNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNSW','','','FL','PipeExitNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNSW','','','BL','PipeExitNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNSW','','','BR','PipeExitESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNEW','','','FR','PipeExitNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNEW','','','FL','PipeExitNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNEW','','','BL','PipeExitESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNEW','','','BR','PipeExitNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNES','','','FR','PipeExitNES'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNES','','','FL','PipeExitESW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNES','','','BL','PipeExitNSW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PipeExitRotNES','','','BR','PipeExitNEW'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree6','BirchTree6',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree6','BirchTree7',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree6','BirchTree8',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree6','BirchTree9',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree7','BirchTree7',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree7','BirchTree8',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree7','BirchTree9',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree7','BirchTree6',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree8','BirchTree8',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree8','BirchTree9',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree8','BirchTree6',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree8','BirchTree7',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree9','BirchTree9',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree9','BirchTree6',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree9','BirchTree7',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree9','BirchTree8',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree5_10','EmptyWall',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree5_10','BirchTree10',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree5_10','BirchTree5',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree5_10','EmptyWall',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree10_5','EmptyWall',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree10_5','EmptyWall',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree10_5','BirchTree10',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree10_5','BirchTree5',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree5','BirchTree5',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree5','EmptyWall',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree5','EmptyWall',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree5','BirchTree10',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree10','BirchTree10',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree10','BirchTree5',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree10','EmptyWall',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree10','EmptyWall',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_1','BirchTree11',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_1','EmptyWall',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_1','EmptyWall',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_1','EmptyWall',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_2','EmptyWall',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_2','BirchTree11',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_2','EmptyWall',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_2','EmptyWall',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_3','EmptyWall',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_3','EmptyWall',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_3','BirchTree11',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_3','EmptyWall',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_4','EmptyWall',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_4','EmptyWall',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_4','EmptyWall',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_4','BirchTree11',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_5','BirchTree11',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_5','EmptyWall',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_5','BirchTree11',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_5','EmptyWall',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_6','EmptyWall',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_6','BirchTree11',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_6','EmptyWall',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree11_6','BirchTree11',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree20_1','BirchTree20',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree20_1','BirchTree19',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree20_1','BirchTree11',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree20_1','BirchTree11',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree20_2','BirchTree19',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree20_2','BirchTree11',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree20_2','BirchTree11',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree20_2','BirchTree20',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree20_3','BirchTree11',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree20_3','BirchTree11',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree20_3','BirchTree20',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree20_3','BirchTree19',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree20_4','BirchTree11',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree20_4','BirchTree20',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree20_4','BirchTree19',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BirchTree20_4','BirchTree11',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Handcrank','HandcrankFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Handcrank','HandcrankFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Handcrank','HandcrankBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Handcrank','HandcrankBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Automaton',NULL,NULL,'FR','AutomatonFR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Automaton',NULL,'FlipHorizontal','FL','AutomatonFR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Automaton',NULL,NULL,'BR','AutomatonBR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Automaton',NULL,'FlipHorizontal','BL','AutomatonBR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailFrame1',NULL,NULL,'FR','WindmillSail1FR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailFrame1',NULL,'FlipHorizontal','FL','WindmillSail2FR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailFrame1',NULL,NULL,'BL','WindmillSail2BL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailFrame1',NULL,'FlipHorizontal','BR','WindmillSail1BL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailFrame2',NULL,NULL,'FR','WindmillSail2FR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailFrame2',NULL,'FlipHorizontal','FL','WindmillSail1FR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailFrame2',NULL,NULL,'BL','WindmillSail1BL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailFrame2',NULL,'FlipHorizontal','BR','WindmillSail2BL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailFrame3',NULL,NULL,'FR','WindmillSail3FR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailFrame3',NULL,'FlipHorizontal','FL','WindmillSail4FR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailFrame3',NULL,NULL,'BL','WindmillSail4BL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailFrame3',NULL,'FlipHorizontal','BR','WindmillSail3BL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailFrame4',NULL,NULL,'FR','WindmillSail4FR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailFrame4',NULL,'FlipHorizontal','FL','WindmillSail3FR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailFrame4',NULL,NULL,'BL','WindmillSail3BL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailFrame4',NULL,'FlipHorizontal','BR','WindmillSail4BL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillBase','WindmillBaseFL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillBase','WindmillBaseFL','FlipHorizontal','FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillBase','WindmillBaseBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillBase','WindmillBaseBR','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillRoof','WindmillRoofFL','','FL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillRoof','WindmillRoofFL','FlipHorizontal','FR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillRoof','WindmillRoofBR','','BR',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillRoof','WindmillRoofBR','FlipHorizontal','BL',''); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillBase2','WindmillBase2FL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillBase2','WindmillBase2FL','FlipHorizontal','FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillBase2','WindmillBase2BR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillBase2','WindmillBase2BR','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SoilStairsTop','StairsTopFR',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SoilStairsTop','StairsTopFR','FlipHorizontal','FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SoilStairsTop','StairsTopBL',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SoilStairsTop','StairsTopBL','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneStairsTop','BlockStairsTopFR',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneStairsTop','BlockStairsTopFR','FlipHorizontal','FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneStairsTop','BlockStairsTopBL',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneStairsTop','BlockStairsTopBL','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SoilStairs','StairsFR',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SoilStairs','StairsFR','FlipHorizontal','FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SoilStairs','StairsBL',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SoilStairs','StairsBL','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneStairs','BlockStairsFR',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneStairs','BlockStairsFR','FlipHorizontal','FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneStairs','BlockStairsBL',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneStairs','BlockStairsBL','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodDoor','WoodDoorRight',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodDoor','WoodDoorLeft',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodDoor','WoodDoorRight',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodDoor','WoodDoorLeft',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneDoor','StoneDoorRight',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneDoor','StoneDoorLeft',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneDoor','StoneDoorRight',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('StoneDoor','StoneDoorLeft',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodTable','WoodTable',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodTable','WoodTable','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodTable','WoodTable',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WoodTable','WoodTable','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BoneBedFrame','BoneBedFrameFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BoneBedFrame','BoneBedFrameFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BoneBedFrame','BoneBedFrameBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BoneBedFrame','BoneBedFrameBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BoneBedSheets','BoneBedSheetsFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BoneBedSheets','BoneBedSheetsFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BoneBedSheets','MattressBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BoneBedSheets','MattressBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailCloth1','','','FR','WindmillSailCloth1FR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailCloth1','','FlipHorizontal','FL','WindmillSailCloth2FR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailCloth1','','','BL','WindmillSailCloth2BL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailCloth1','','FlipHorizontal','BR','WindmillSailCloth1BL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailCloth2','','','FR','WindmillSailCloth2FR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailCloth2','','FlipHorizontal','FL','WindmillSailCloth1FR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailCloth2','','','BL','WindmillSailCloth1BL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailCloth2','','FlipHorizontal','BR','WindmillSailCloth2BL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailCloth3','','','FR','WindmillSailCloth3FR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailCloth3','','FlipHorizontal','FL','WindmillSailCloth4FR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailCloth3','','','BL','WindmillSailCloth4BL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailCloth3','','FlipHorizontal','BR','WindmillSailCloth3BL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailCloth4','','','FR','WindmillSailCloth4FR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailCloth4','','FlipHorizontal','FL','WindmillSailCloth3FR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailCloth4','','','BL','WindmillSailCloth3BL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WindmillSailCloth4','','FlipHorizontal','BR','WindmillSailCloth4BL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Donkey','Donkey',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Donkey','Donkey','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Donkey','DonkeyBack',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Donkey','DonkeyBack','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_02','Mushroom2_4',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_02','EmptyWall',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_02','EmptyWall',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_02','Mushroom2_21',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_11','Mushroom2_15',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_11','Mushroom2_17',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_11','Mushroom2_23',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_11','Mushroom2_18',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_12','Mushroom2_4',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_12','EmptyWall',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_12','EmptyWall',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_12','Mushroom2_11',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_21','Mushroom2_12',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_21','Mushroom2_9',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_21','EmptyWall',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_21','EmptyWall',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_22','Mushroom2_10',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_22','EmptyWall',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_22','EmptyWall',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_3_22','EmptyWall',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_4_10','Mushroom2_2',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_4_10','Mushroom2_1',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_4_10','Mushroom2_3',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_4_10','Mushroom2_5',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_4_11','Mushroom2_6',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_4_11','Mushroom2_7',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_4_11','EmptyWall',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom2_4_11','Mushroom2_8',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom3_2_10','Mushroom2_12',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom3_2_10','Mushroom2_4',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom3_2_10','Mushroom2_16',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom3_2_10','Mushroom2_16',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom3_2_11','Mushroom2_10',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom3_2_11','Mushroom2_9',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom3_2_11','Mushroom2_23',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom3_2_11','Mushroom2_11',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom3_3_10','EmptyWall',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom3_3_10','EmptyWall',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom3_3_10','Mushroom2_7',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Mushroom3_3_10','Mushroom2_8',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WallTorchFlame',NULL,NULL,'FR','WallTorchFlameFR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WallTorchFlame',NULL,'FlipHorizontal','FL','WallTorchFlameFR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WallTorchFlame',NULL,NULL,'BL','WallTorchFlameBL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WallTorchFlame',NULL,'FlipHorizontal','BR','WallTorchFlameBL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WallTorchBase',NULL,NULL,'FR','WallTorchBaseFR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WallTorchBase',NULL,'FlipHorizontal','FL','WallTorchBaseFR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WallTorchBase',NULL,NULL,'BL','WallTorchBaseBL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('WallTorchBase',NULL,'FlipHorizontal','BR','WallTorchBaseBL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PlankStairs','PlankStairsFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PlankStairs','PlankStairsFL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PlankStairs','PlankStairsBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PlankStairs','PlankStairsBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PlankStairsTop','PlankStairsTopFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PlankStairsTop','PlankStairsTopFL',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PlankStairsTop','PlankStairsTopBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('PlankStairsTop','PlankStairsTopBR',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Chest','Chest','FlipHorizontal','FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Chest','Chest',NULL,'FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Chest','Chest','FlipHorizontal','BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Chest','Chest',NULL,'BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BookshelfShelf','BookshelfFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BookshelfShelf','BookshelfFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BookshelfShelf','BookshelfBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BookshelfShelf','BookshelfBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BookshelfBooks','BookshelfBooksFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BookshelfBooks','BookshelfBooksFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BookshelfBooks','BookshelfBooksBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('BookshelfBooks','BookshelfBooksBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Dresser','DresserFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Dresser','DresserFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Dresser','DresserBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('Dresser','DresserBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GlassFurnace',NULL,NULL,'FR','GlassFurnaceFR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GlassFurnace',NULL,'FlipHorizontal','FL','GlassFurnaceFR'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GlassFurnace',NULL,NULL,'BL','GlassFurnaceBL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('GlassFurnace',NULL,'FlipHorizontal','BR','GlassFurnaceBL'); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MeatStack','MeatStackFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MeatStack','MeatStackFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MeatStack','MeatStackBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('MeatStack','MeatStackBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SausageStack','SausageStackFR',NULL,'FR',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SausageStack','SausageStackFR','FlipHorizontal','FL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SausageStack','SausageStackBL',NULL,'BL',NULL); INSERT INTO "Sprites_Rotations" ("ID","BaseSprite","Effect","Rotation","Sprite") VALUES ('SausageStack','SausageStackBL','FlipHorizontal','BR',NULL); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('Pig',NULL,'PigPink',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('Pig',NULL,'PigYellow',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('ZygYoung',NULL,'ZygYoungBlue',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('ZygYoung',NULL,'ZygYoungRed',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('ZygYouth',NULL,'ZygYouthBlue',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('ZygYouth',NULL,'ZygYouthRed',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('ZygAdult',NULL,'ZygAdultBlue',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('ZygAdult',NULL,'ZygAdultRed',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('ZygSenior',NULL,'ZygSeniorBlue',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('ZygSenior',NULL,'ZygSeniorRed',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('Painting',NULL,'Painting1',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('Painting',NULL,'Painting2',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('Painting',NULL,'Painting3',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('Painting',NULL,'Painting4',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('Painting',NULL,'Painting5',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('Painting',NULL,'Painting6',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('Painting',NULL,'Painting7',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('Painting',NULL,'Painting8',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('AppleTreeApples',NULL,'AppleTreeApple1',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('AppleTreeApples',NULL,'AppleTreeApple2',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('AppleTreeApples',NULL,'AppleTreeApple3',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('OrangeTreeOranges',NULL,'OrangeTreeOrange1',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('OrangeTreeOranges',NULL,'OrangeTreeOrange2',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('OrangeTreeOranges',NULL,'OrangeTreeOrange3',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('Grass',NULL,'Grass1',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('Grass',NULL,'Grass5',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail','EmptyFloor',NULL,50.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail',NULL,'GrassDetail1',10.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail',NULL,'GrassDetail2',10.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail',NULL,'GrassDetail3',10.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail',NULL,'GrassDetail4',10.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail',NULL,'GrassDetail5',10.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail1',NULL,'RRedFlower0',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail1',NULL,'RRedFlower1',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail1',NULL,'RRedFlower2',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail1',NULL,'RRedFlower3',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail1',NULL,'RRedFlower4',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail1',NULL,'RRedFlower5',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail1',NULL,'RRedFlower6',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail1',NULL,'RRedFlower7',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail1',NULL,'RRedFlower8',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail1',NULL,'RBlueFlower0',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail1',NULL,'RBlueFlower1',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail1',NULL,'RBlueFlower2',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail1',NULL,'RBlueFlower3',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail1',NULL,'RBlueFlower4',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail1',NULL,'RBlueFlower5',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail1',NULL,'RBlueFlower6',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail1',NULL,'RBlueFlower7',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail1',NULL,'RBlueFlower8',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail2',NULL,'RYellowFlower0',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail2',NULL,'RYellowFlower1',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail2',NULL,'RYellowFlower2',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail2',NULL,'RYellowFlower3',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail2',NULL,'RYellowFlower4',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail2',NULL,'RYellowFlower5',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail2',NULL,'RYellowFlower6',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail2',NULL,'RYellowFlower7',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail2',NULL,'RYellowFlower8',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail2',NULL,'RPurpleFlower0',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail2',NULL,'RPurpleFlower1',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail2',NULL,'RPurpleFlower2',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail2',NULL,'RPurpleFlower3',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail2',NULL,'RPurpleFlower4',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail2',NULL,'RPurpleFlower5',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail2',NULL,'RPurpleFlower6',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail2',NULL,'RPurpleFlower7',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail2',NULL,'RPurpleFlower8',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail3',NULL,'ROrangeFlower0',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail3',NULL,'ROrangeFlower1',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail3',NULL,'ROrangeFlower2',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail3',NULL,'ROrangeFlower3',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail3',NULL,'ROrangeFlower4',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail3',NULL,'ROrangeFlower5',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail3',NULL,'ROrangeFlower6',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail3',NULL,'ROrangeFlower7',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail3',NULL,'ROrangeFlower8',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail3',NULL,'RWhiteMushroom0',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail3',NULL,'RWhiteMushroom1',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail3',NULL,'RWhiteMushroom2',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail3',NULL,'RWhiteMushroom3',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail3',NULL,'RWhiteMushroom4',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail3',NULL,'RWhiteMushroom5',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail3',NULL,'RWhiteMushroom6',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail3',NULL,'RWhiteMushroom7',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail3',NULL,'RWhiteMushroom8',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail4',NULL,'RYellowMushroom1',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail4',NULL,'RYellowMushroom2',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail4',NULL,'RYellowMushroom3',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail4',NULL,'RYellowMushroom4',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail4',NULL,'RYellowMushroom5',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail4',NULL,'RYellowMushroom6',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail4',NULL,'RYellowMushroom7',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail4',NULL,'RYellowMushroom8',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail4',NULL,'ROrangeMushroom1',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail4',NULL,'ROrangeMushroom2',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail4',NULL,'ROrangeMushroom3',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail4',NULL,'ROrangeMushroom4',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail4',NULL,'ROrangeMushroom5',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail4',NULL,'ROrangeMushroom6',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail4',NULL,'ROrangeMushroom7',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail4',NULL,'ROrangeMushroom8',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail5',NULL,'RStone0',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail5',NULL,'RStone1',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail5',NULL,'RStone2',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail5',NULL,'RStone3',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail5',NULL,'RStone4',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail5',NULL,'RStone5',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail5',NULL,'RStone6',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail5',NULL,'RStone7',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail5',NULL,'RStone8',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail5',NULL,'RStone0',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail5',NULL,'RStone1',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail5',NULL,'RStone2',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail5',NULL,'RStone3',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail5',NULL,'RStone4',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail5',NULL,'RStone5',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail5',NULL,'RStone6',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail5',NULL,'RStone7',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('GrassDetail5',NULL,'RStone8',0.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('MushroomGrass',NULL,'MushroomGrass1',20.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('MushroomGrass',NULL,'MushroomGrass2',20.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('MushroomGrass',NULL,'MushroomGrass3',20.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('MushroomGrass',NULL,'MushroomGrass4',20.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('MushroomGrass',NULL,'MushroomGrass5',20.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('MushroomGrassDetail','EmptyFloor',NULL,75.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('MushroomGrassDetail','MushroomGrassDetail1',NULL,5.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('MushroomGrassDetail','MushroomGrassDetail2',NULL,5.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('MushroomGrassDetail','MushroomGrassDetail3',NULL,5.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('MushroomGrassDetail','MushroomGrassDetail4',NULL,5.0); INSERT INTO "Sprites_Random" ("ID","BaseSprite","Sprite","Weight") VALUES ('MushroomGrassDetail','MushroomGrassDetail5',NULL,5.0); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('GroundTorchFlame','GroundTorchFlame1'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('GroundTorchFlame','GroundTorchFlame2'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('GroundTorchFlame','GroundTorchFlame3'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('GroundTorchFlame','GroundTorchFlame4'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('PentagramAnim','Pentagram1'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('PentagramAnim','Pentagram2'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('PentagramAnim','Pentagram3'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('PentagramAnim','Pentagram4'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('Sparkles','SparkleFrame1'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('Sparkles','SparkleFrame2'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('Sparkles','SparkleFrame3'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('Sparkles','SparkleFrame4'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('SteamEnginePistonFR','SteamEnginePiston1FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('SteamEnginePistonFR','SteamEnginePiston2FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('SteamEnginePistonFR','SteamEnginePiston3FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('SteamEnginePistonFR','SteamEnginePiston4FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('SteamEngineBoilerFR','SteamEngineBoilerFR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('SteamEngineBoilerFR','SteamEngineBoilerFR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('SteamEngineBoilerFR','SteamEngineBoilerFR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('SteamEngineBoilerFR','SteamEngineBoilerFR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('SteamEnginePistonBL','SteamEnginePiston1BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('SteamEnginePistonBL','SteamEnginePiston2BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('SteamEnginePistonBL','SteamEnginePiston3BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('SteamEnginePistonBL','SteamEnginePiston4BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('SteamEngineBoilerBL','SteamEngineBoilerBL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('SteamEngineBoilerBL','SteamEngineBoilerBL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('SteamEngineBoilerBL','SteamEngineBoilerBL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('SteamEngineBoilerBL','SteamEngineBoilerBL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('VerticalAxle','AxleUD1'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('VerticalAxle','AxleUD2'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('VerticalAxle','AxleUD3'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('VerticalAxle','AxleUD2'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('AxleAnim','Axle1FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('AxleAnim','Axle2FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('AxleAnim','Axle3FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('AxleAnim','Axle4FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('PumpBase','PumpBase'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('PumpBase','PumpBase'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('PumpBase','PumpBase'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('PumpBase','PumpBase'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('PumpTop','PumpTop1'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('PumpTop','PumpTop2'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('PumpTop','PumpTop3'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('PumpTop','PumpTop1'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('PumpConnectors','PumpPipeConnectors'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('PumpConnectors','PumpPipeConnectors'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('PumpConnectors','PumpPipeConnectors'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('PumpConnectors','PumpPipeConnectors'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail1FR','WindmillSail1_1FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail1FR','WindmillSail1_2FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail1FR','WindmillSail1_3FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail1FR','WindmillSail1_4FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail2FR','WindmillSail2_1FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail2FR','WindmillSail2_2FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail2FR','WindmillSail2_3FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail2FR','WindmillSail2_4FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail3FR','WindmillSail3_1FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail3FR','WindmillSail3_2FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail3FR','WindmillSail3_3FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail3FR','WindmillSail3_4FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail4FR','WindmillSail4_1FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail4FR','WindmillSail4_2FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail4FR','WindmillSail4_3FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail4FR','WindmillSail4_4FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail1BL','WindmillSail1_1BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail1BL','WindmillSail1_2BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail1BL','WindmillSail1_3BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail1BL','WindmillSail1_4BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail2BL','WindmillSail2_1BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail2BL','WindmillSail2_2BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail2BL','WindmillSail2_3BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail2BL','WindmillSail2_4BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail3BL','WindmillSail3_1BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail3BL','WindmillSail3_2BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail3BL','WindmillSail3_3BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail3BL','WindmillSail3_4BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail4BL','WindmillSail4_1BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail4BL','WindmillSail4_2BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail4BL','WindmillSail4_3BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSail4BL','WindmillSail4_4BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth1FR','WindmillSailCloth1_1FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth1FR','WindmillSailCloth1_2FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth1FR','WindmillSailCloth1_3FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth1FR','WindmillSailCloth1_4FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth2FR','WindmillSailCloth2_1FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth2FR','WindmillSailCloth2_2FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth2FR','WindmillSailCloth2_3FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth2FR','WindmillSailCloth2_4FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth3FR','WindmillSailCloth3_1FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth3FR','WindmillSailCloth3_2FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth3FR','WindmillSailCloth3_3FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth3FR','WindmillSailCloth3_4FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth4FR','WindmillSailCloth4_1FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth4FR','WindmillSailCloth4_2FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth4FR','WindmillSailCloth4_3FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth4FR','WindmillSailCloth4_4FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth1BL','WindmillSailCloth1_1BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth1BL','WindmillSailCloth1_2BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth1BL','WindmillSailCloth1_3BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth1BL','WindmillSailCloth1_4BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth2BL','WindmillSailCloth2_1BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth2BL','WindmillSailCloth2_2BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth2BL','WindmillSailCloth2_3BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth2BL','WindmillSailCloth2_4BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth3BL','WindmillSailCloth3_1BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth3BL','WindmillSailCloth3_2BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth3BL','WindmillSailCloth3_3BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth3BL','WindmillSailCloth3_4BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth4BL','WindmillSailCloth4_1BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth4BL','WindmillSailCloth4_2BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth4BL','WindmillSailCloth4_3BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WindmillSailCloth4BL','WindmillSailCloth4_4BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WallTorchFlameFR','WallTorchFlame1FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WallTorchFlameFR','WallTorchFlame2FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WallTorchFlameFR','WallTorchFlame3FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WallTorchFlameFR','WallTorchFlame4FR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WallTorchFlameBL','WallTorchFlame1BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WallTorchFlameBL','WallTorchFlame2BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WallTorchFlameBL','WallTorchFlame3BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WallTorchFlameBL','WallTorchFlame4BL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WallTorchBaseFR','WallTorchBaseFR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WallTorchBaseFR','WallTorchBaseFR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WallTorchBaseFR','WallTorchBaseFR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WallTorchBaseFR','WallTorchBaseFR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WallTorchBaseBL','WallTorchBaseBL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WallTorchBaseBL','WallTorchBaseBL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WallTorchBaseBL','WallTorchBaseBL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('WallTorchBaseBL','WallTorchBaseBL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('BigTorchFlame','BigTorchFlame1'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('BigTorchFlame','BigTorchFlame2'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('BigTorchFlame','BigTorchFlame3'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('BigTorchFlame','BigTorchFlame4'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('BrazierFlame','BrazierFlame1'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('BrazierFlame','BrazierFlame2'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('BrazierFlame','BrazierFlame3'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('BrazierFlame','BrazierFlame4'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('BigTorchBase','BigTorchBase'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('BigTorchBase','BigTorchBase'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('BigTorchBase','BigTorchBase'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('BigTorchBase','BigTorchBase'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('BrazierBase','BrazierBase'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('BrazierBase','BrazierBase'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('BrazierBase','BrazierBase'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('BrazierBase','BrazierBase'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('GlassFurnaceFlame','GlassFurnaceFlame1'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('GlassFurnaceFlame','GlassFurnaceFlame2'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('GlassFurnaceFlame','GlassFurnaceFlame3'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('GlassFurnaceFlame','GlassFurnaceFlame4'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('GlassFurnaceOven','GlassFurnaceFR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('GlassFurnaceOven','GlassFurnaceFR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('GlassFurnaceOven','GlassFurnaceFR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('GlassFurnaceOven','GlassFurnaceFR'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('GlassFurnaceBL','GlassFurnaceBL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('GlassFurnaceBL','GlassFurnaceBL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('GlassFurnaceBL','GlassFurnaceBL'); INSERT INTO "Sprites_Frames" ("ID","BaseSprite") VALUES ('GlassFurnaceBL','GlassFurnaceBL'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodBed',NULL,NULL,'WoodBedFrame',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodBed',NULL,NULL,'WoodBedSheets',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('FancyBed',NULL,NULL,'FancyWoodBedFrame',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('FancyBed',NULL,NULL,'FancyWoodBedSheets',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('MarketStallWithTop',NULL,NULL,'MarketStallBase',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('MarketStallWithTop',NULL,NULL,'MarketStallTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CarpenterStandWithTools',NULL,NULL,'CarpenterStand',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CarpenterStandWithTools',NULL,NULL,'CarpenterStandTools',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('SawTable_TableSaw',NULL,NULL,'SawTable',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('SawTable_TableSaw',NULL,NULL,'TableSaw',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('ThoughtBubbleThirsty',NULL,NULL,'ThoughtBubble',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('ThoughtBubbleThirsty',NULL,NULL,'StatusThirsty',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('ThoughtBubbleHungry',NULL,NULL,'ThoughtBubble',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('ThoughtBubbleHungry',NULL,NULL,'StatusHungry',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('ThoughtBubbleCombat',NULL,NULL,'ThoughtBubble',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('ThoughtBubbleCombat',NULL,NULL,'StatusCombat',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GroundTorch',NULL,NULL,'GroundTorchFlame',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GroundTorch',NULL,NULL,'GroundTorchBase',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('SawTableLeft_SawTableBlade',NULL,NULL,'SawTableLeft','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('SawTableLeft_SawTableBlade',NULL,NULL,'SawTableBlade','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('AlarmBell',NULL,NULL,'AlarmBellBell',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('AlarmBell',NULL,NULL,'AlarmBellBase',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('ForgeWithTop',NULL,NULL,'Forge',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('ForgeWithTop',NULL,NULL,'ForgeTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('MoldWithTop',NULL,NULL,'Mold',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('MoldWithTop',NULL,NULL,'MoldTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BellowsWithNozzle',NULL,NULL,'Bellows',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BellowsWithNozzle',NULL,NULL,'BellowsNozzle',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('FurnaceWithFlame',NULL,NULL,'Furnace',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('FurnaceWithFlame',NULL,NULL,'FurnaceFlame',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('KilnWithFlame',NULL,NULL,'Kiln',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('KilnWithFlame',NULL,NULL,'KilnFlame',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GoblinFR','GoblinArmLeft',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GoblinFR','GoblinHandLeft',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GoblinFR','GoblinTorso',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GoblinFR','GoblinHead',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GoblinFR','GoblinFootLeft',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GoblinFR','GoblinFootRight',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GoblinFR','GoblinArmRight',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GoblinFR','GoblinHandRight',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('FishingRodRack',NULL,NULL,'FishingRack',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('FishingRodRack',NULL,NULL,'FishingRods',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceN','BlockFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceN','BlockFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceE','BlockFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceE','BlockFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceS','BlockFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceS','BlockFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceW','BlockFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceW','BlockFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNS','BlockFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNS','BlockFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNS','BlockFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceEW','BlockFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceEW','BlockFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceEW','BlockFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNE','BlockFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNE','BlockFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNE','BlockFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceES','BlockFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceES','BlockFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceES','BlockFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceSW','BlockFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceSW','BlockFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceSW','BlockFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNW','BlockFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNW','BlockFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNW','BlockFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceESW','BlockFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceESW','BlockFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceESW','BlockFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceESW','BlockFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNSW','BlockFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNSW','BlockFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNSW','BlockFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNSW','BlockFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNEW','BlockFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNEW','BlockFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNEW','BlockFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNEW','BlockFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNES','BlockFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNES','BlockFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNES','BlockFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceNES','BlockFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceRotNESW','BlockFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceRotNESW','BlockFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceRotNESW','BlockFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceRotNESW','BlockFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BlockFenceRotNESW','BlockFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceN','CobbleStoneFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceN','CobbleStoneFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceE','CobbleStoneFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceE','CobbleStoneFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceS','CobbleStoneFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceS','CobbleStoneFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceW','CobbleStoneFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceW','CobbleStoneFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNS','CobbleStoneFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNS','CobbleStoneFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNS','CobbleStoneFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceEW','CobbleStoneFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceEW','CobbleStoneFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceEW','CobbleStoneFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNE','CobbleStoneFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNE','CobbleStoneFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNE','CobbleStoneFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceES','CobbleStoneFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceES','CobbleStoneFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceES','CobbleStoneFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceSW','CobbleStoneFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceSW','CobbleStoneFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceSW','CobbleStoneFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNW','CobbleStoneFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNW','CobbleStoneFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNW','CobbleStoneFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceESW','CobbleStoneFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceESW','CobbleStoneFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceESW','CobbleStoneFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceESW','CobbleStoneFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNSW','CobbleStoneFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNSW','CobbleStoneFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNSW','CobbleStoneFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNSW','CobbleStoneFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNEW','CobbleStoneFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNEW','CobbleStoneFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNEW','CobbleStoneFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNEW','CobbleStoneFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNES','CobbleStoneFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNES','CobbleStoneFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNES','CobbleStoneFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceNES','CobbleStoneFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceRotNESW','CobbleStoneFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceRotNESW','CobbleStoneFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceRotNESW','CobbleStoneFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceRotNESW','CobbleStoneFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CobbleStoneFenceRotNESW','CobbleStoneFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceN','WoodFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceN','WoodFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceE','WoodFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceE','WoodFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceS','WoodFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceS','WoodFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceW','WoodFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceW','WoodFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNS','WoodFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNS','WoodFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNS','WoodFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceEW','WoodFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceEW','WoodFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceEW','WoodFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNE','WoodFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNE','WoodFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNE','WoodFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceES','WoodFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceES','WoodFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceES','WoodFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceSW','WoodFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceSW','WoodFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceSW','WoodFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNW','WoodFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNW','WoodFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNW','WoodFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceESW','WoodFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceESW','WoodFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceESW','WoodFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceESW','WoodFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNSW','WoodFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNSW','WoodFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNSW','WoodFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNSW','WoodFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNEW','WoodFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNEW','WoodFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNEW','WoodFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNEW','WoodFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNES','WoodFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNES','WoodFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNES','WoodFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceNES','WoodFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceRotNESW','WoodFenceWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceRotNESW','WoodFenceNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceRotNESW','WoodFencePost',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceRotNESW','WoodFenceEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WoodFenceRotNESW','WoodFenceSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CombinedRoof',NULL,NULL,'Rafter',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('CombinedRoof',NULL,NULL,'Roofing',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Knife',NULL,NULL,'KnifeBlade',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Knife',NULL,NULL,'KnifeHilt',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Pickaxe',NULL,NULL,'PickaxeHead',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Pickaxe',NULL,NULL,'PickaxeBase',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('FellingAxe',NULL,NULL,'FellingAxeHead',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('FellingAxe',NULL,NULL,'FellingAxeBase',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_AxeBench','WorkshopTable',NULL,NULL,'Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_AxeBench','AxeBenchFR',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_KitchenTableTop',NULL,NULL,'WorkshopTable',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_KitchenTableTop',NULL,NULL,'KitchenTableTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Hammer',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Hammer',NULL,NULL,'HammerTableTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_RawGem',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_RawGem','RawGem','0 -8',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Gem',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Gem','Gem','0 -8',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_JewelryPile',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_JewelryPile','JewelryPile','0 -8',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Vise',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Vise','ViseTableTop',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Cloth',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Cloth','Fiber','0 -8',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_ClothRollTableTop',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_ClothRollTableTop','ClothRollTableTop','0 0',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_ShearsTableTop',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_ShearsTableTop','ShearsTableTopFR',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_String',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_String','String','0 -8',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Statuette',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Statuette','Statuette','0 -8',NULL,'Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Skull',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Skull','Skull','0 -8',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_BoneNeedle',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_BoneNeedle','BoneNeedle','0 -4',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_ChiselTableTop',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_ChiselTableTop',NULL,NULL,'ChiselTableTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Meat',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Meat','Meat','0 -8',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_ButcherTableTop',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_ButcherTableTop',NULL,NULL,'ButcherTableTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Hammer','HammerHead','0 0',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Hammer','HammerBase','0 0',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_ProspectorOre',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_ProspectorOre','ProspectorTableOreTop',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_ProspectorSliver',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_ProspectorSliver','ProspectorTableSliverTop',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GrassSoilRamp',NULL,NULL,'SoilRamp',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GrassSoilRamp',NULL,NULL,'GrassRamp',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GrassSoilRampTop',NULL,NULL,'SoilRampTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GrassSoilRampTop',NULL,NULL,'GrassRampTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GrassSoilCornerRamp',NULL,NULL,'SoilCornerRamp',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GrassSoilCornerRamp',NULL,NULL,'GrassCornerRamp',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GrassSoilCornerRampTop',NULL,NULL,'SoilCornerRampTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GrassSoilCornerRampTop',NULL,NULL,'GrassCornerRampTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GrassSoilURamp',NULL,NULL,'SoilURamp',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GrassSoilURamp',NULL,NULL,'GrassURamp',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GrassSoilURampTop',NULL,NULL,'SoilURampTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GrassSoilURampTop',NULL,NULL,'GrassURampTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('AppleTreeTopWithFruit',NULL,NULL,'AppleTreeTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('AppleTreeTopWithFruit',NULL,NULL,'AppleTreeApples',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('AppleTreeTopCornerWithFruit',NULL,NULL,'AppleTreeTopCorner',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('AppleTreeTopCornerWithFruit',NULL,NULL,'AppleTreeApples',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('AppleTreeMiddleWithFruit',NULL,NULL,'AppleTreeMiddle',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('AppleTreeMiddleWithFruit',NULL,NULL,'AppleTreeApples',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('OrangeTreeTopWithFruit',NULL,NULL,'OrangeTreeTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('OrangeTreeTopWithFruit',NULL,NULL,'OrangeTreeOranges',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('OrangeTreeMiddleCornerWithFruit',NULL,NULL,'OrangeTreeMiddleCorner',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('OrangeTreeMiddleCornerWithFruit',NULL,NULL,'OrangeTreeOranges',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('OrangeTreeTopCornerWithFruit',NULL,NULL,'OrangeTreeTopCorner',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('OrangeTreeTopCornerWithFruit',NULL,NULL,'OrangeTreeOranges',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('OrangeTreeMiddleWithFruit',NULL,NULL,'OrangeTreeMiddle',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('OrangeTreeMiddleWithFruit',NULL,NULL,'OrangeTreeOranges',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GrassWithDetail',NULL,NULL,'Grass',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GrassWithDetail',NULL,NULL,'GrassDetail',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('MushroomGrassWithDetail',NULL,NULL,'MushroomGrass',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('MushroomGrassWithDetail',NULL,NULL,'MushroomGrassDetail',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('MushroomGrassSoilRamp',NULL,NULL,'SoilRamp',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('MushroomGrassSoilRamp',NULL,NULL,'MushroomGrassRamp',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('MushroomGrassSoilRampTop',NULL,NULL,'SoilRampTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('MushroomGrassSoilRampTop',NULL,NULL,'MushroomGrassRampTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('MushroomGrassSoilCornerRamp',NULL,NULL,'SoilCornerRamp',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('MushroomGrassSoilCornerRamp',NULL,NULL,'MushroomGrassCornerRamp',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('MushroomGrassSoilCornerRampTop',NULL,NULL,'SoilCornerRampTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('MushroomGrassSoilCornerRampTop',NULL,NULL,'MushroomGrassCornerRampTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('MushroomGrassSoilURamp',NULL,NULL,'SoilURamp',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('MushroomGrassSoilURamp',NULL,NULL,'MushroomGrassURamp',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('MushroomGrassSoilURampTop',NULL,NULL,'SoilURampTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('MushroomGrassSoilURampTop',NULL,NULL,'MushroomGrassURampTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Sword',NULL,NULL,'SwordBlade',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Sword',NULL,NULL,'SwordBase',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GearBox',NULL,NULL,'GearBoxBase',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GearBox',NULL,NULL,'GearBoxFrame',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('SteamEngine',NULL,NULL,'SteamEngineBoiler',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('SteamEngine',NULL,NULL,'SteamEnginePiston',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeN','PipeNorth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeN','PipePost','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeE','PipePost','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeE','PipeEast','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeS','PipePost','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeS','PipeSouth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeW','PipeWest','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeW','PipePost','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeNE','PipeNorth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeNE','PipeFittingNE','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeNE','PipeEast','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeES','PipeFittingES','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeES','PipeEast','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeES','PipeSouth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeSW','PipeWest','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeSW','PipeFittingSW','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeSW','PipeSouth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeNW','PipeWest','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeNW','PipeNorth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeNW','PipeFittingNW','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeESW','PipeWest','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeESW','PipeFittingESW','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeESW','PipeEast','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeESW','PipeSouth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeNSW','PipeWest','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeNSW','PipeNorth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeNSW','PipeFittingNSW','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeNSW','PipeSouth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeNEW','PipeWest','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeNEW','PipeNorth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeNEW','PipeFittingNEW','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeNEW','PipeEast','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeNES','PipeNorth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeNES','PipeFittingNES','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeNES','PipeEast','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeNES','PipeSouth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeRotNESW','PipeWest','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeRotNESW','PipeNorth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeRotNESW','PipePost','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeRotNESW','PipeEast','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeRotNESW','PipeSouth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Pump',NULL,NULL,'PumpConnectors',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Pump',NULL,NULL,'PumpBase',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitN','PipeNorth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitN','PipeFittingItem','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitE','PipeFittingItem','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitE','PipeEast','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitS','PipeFittingItem','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitS','PipeSouth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitW','PipeWest','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitW','PipeFittingItem','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNE','PipeNorth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNE','PipeFittingItem','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNE','PipeEast','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitES','PipeFittingItem','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitES','PipeEast','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitES','PipeSouth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitSW','PipeWest','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitSW','PipeFittingItem','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitSW','PipeSouth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNW','PipeWest','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNW','PipeNorth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNW','PipeFittingItem','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitESW','PipeWest','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitESW','PipeFittingItem','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitESW','PipeEast','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitESW','PipeSouth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNSW','PipeWest','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNSW','PipeNorth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNSW','PipeFittingItem','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNSW','PipeSouth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNEW','PipeWest','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNEW','PipeNorth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNEW','PipeFittingItem','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNEW','PipeEast','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNES','PipeNorth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNES','PipeFittingItem','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNES','PipeEast','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNES','PipeSouth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitRotNESW','PipeWest','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitRotNESW','PipeNorth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitRotNESW','PipeFittingItem','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitRotNESW','PipeEast','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitRotNESW','PipeSouth','','',''); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNS','PipeNorth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNS','PipeFittingItem',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitNS','PipeSouth',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitEW','PipeWest',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitEW','PipeFittingItem',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('PipeExitEW','PipeEast',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Pump',NULL,NULL,'PumpTop',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('LeverOn',NULL,NULL,'LeverBase',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('LeverOn','LeverOnFR',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('LeverOff',NULL,NULL,'LeverBase',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('LeverOff','LeverOffFR',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Wrench',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Wrench','Wrench','0 -8',NULL,'Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Blueprint',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Blueprint','BlueprintTableTop','0 -1',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Bar',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Bar','Bar','0 -8',NULL,'Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Wheel',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Wheel','Gear','0 -8',NULL,'Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('AutomatonFR','AutomatonLeftFootFR',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('AutomatonFR','AutomatonRightFootFR',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('AutomatonFR','AutomatonTorsoFR',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('AutomatonFR','AutomatonLeftArmFR',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('AutomatonFR','AutomatonRightArmFR',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('AutomatonBR','AutomatonLeftFootBR',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('AutomatonBR','AutomatonRightFootBR',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('AutomatonBR','AutomatonTorsoBR',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('AutomatonBR','AutomatonLeftArmBR',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('AutomatonBR','AutomatonRightArmBR',NULL,NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BoneBed',NULL,NULL,'BoneBedFrame',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BoneBed',NULL,NULL,'BoneBedSheets',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WindmillSail1',NULL,'0 0','WindmillSailFrame1',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WindmillSail1',NULL,'0 0','WindmillSailCloth1',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WindmillSail2',NULL,'0 0','WindmillSailFrame2',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WindmillSail2',NULL,'0 0','WindmillSailCloth2',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WindmillSail3',NULL,'0 0','WindmillSailFrame3',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WindmillSail3',NULL,'0 0','WindmillSailCloth3',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WindmillSail4',NULL,'0 0','WindmillSailFrame4',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WindmillSail4',NULL,'0 0','WindmillSailCloth4',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Warhammer','WarhammerHead','0 0',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Warhammer','WarhammerBase','0 0',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Claymore','ClaymoreBlade','0 0',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Claymore','ClaymoreBase','0 0',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('HandAxe','HandAxeHead','0 0',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('HandAxe','HandAxeBase','0 0',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BattleAxe','BattleAxeHead','0 0',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BattleAxe','BattleAxeBase','0 0',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WallTorch',NULL,NULL,'WallTorchBase',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WallTorch',NULL,NULL,'WallTorchFlame',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Bookshelf',NULL,NULL,'BookshelfShelf',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Bookshelf',NULL,NULL,'BookshelfBooks',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BigTorch',NULL,NULL,'BigTorchBase',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('BigTorch',NULL,NULL,'BigTorchFlame',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Brazier',NULL,NULL,'BrazierBase',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('Brazier',NULL,NULL,'BrazierFlame',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GlassFurnaceFR',NULL,NULL,'GlassFurnaceOven','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('GlassFurnaceFR',NULL,NULL,'GlassFurnaceFlame',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Mosaic',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_Mosaic','MosaicTile','0 -8',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_GlassIngot',NULL,NULL,'WorkshopTable','Material'); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('WorkshopTable_GlassIngot','GlassIngot','0 -8',NULL,NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('UIPickaxe',NULL,NULL,'UIPickaxeHead',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('UIPickaxe',NULL,NULL,'UIPickaxeBase',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('UIFellingAxe',NULL,NULL,'UIFellingAxeHead',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('UIFellingAxe',NULL,NULL,'UIFellingAxeBase',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('UISword',NULL,NULL,'UISwordBlade',NULL); INSERT INTO "Sprites_Combine" ("ID","BaseSprite","Offset","Sprite","Tint") VALUES ('UISword',NULL,NULL,'UISwordBase',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Chair',NULL,'Stone','StoneChair'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Chair',NULL,'Bone','BoneChair'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Chair',NULL,'Wood','WoodChair'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('StairsTop',NULL,'Soil','SoilStairsTop'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('StairsTop',NULL,'Stone','StoneStairsTop'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Stairs',NULL,'Soil','SoilStairs'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Stairs',NULL,'Stone','StoneStairs'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Door',NULL,'Wood','WoodDoor'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Door',NULL,'Stone','StoneDoor'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Table',NULL,'Wood','WoodTable'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Table','StoneTable','Stone',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Table','BoneTable','Bone',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('RoughFloor','RoughSoilFloor','Soil',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('RoughFloor','RoughSandFloor','Sand',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('RoughFloor','RoughClayFloor','Clay',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('RoughFloor',NULL,'Stone','RoughStoneFloor2'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('RoughWall','RoughSoilWall','Soil',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('RoughWall','RoughSandWall','Sand',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('RoughWall','RoughClayWall','Clay',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('RoughWall',NULL,'Stone','RoughStoneWall2'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('RoughWallShort','RoughSoilWallShort','Soil',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('RoughWallShort','RoughSandWallShort','Sand',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('RoughWallShort','RoughClayWallShort','Clay',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('RoughWallShort',NULL,'Stone','RoughStoneFloor3'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Floor',NULL,'Stone',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Floor','MetalFloor','Metal',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Floor','LogFloor','Wood',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('LogFloor','LogFloor','Wood',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Wall',NULL,'Stone',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Wall','MetalWall','Metal',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Wall','LogWall','Wood',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('LogWall','LogWall','Wood',NULL); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Ramp',NULL,'Soil','SoilRamp'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Ramp',NULL,'Sand','SoilRamp'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Ramp',NULL,'Clay','ClayRamp'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Ramp',NULL,'Stone','StoneRamp'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('CornerRamp',NULL,'Soil','SoilCornerRamp'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('CornerRamp',NULL,'Sand','SoilCornerRamp'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('CornerRamp',NULL,'Clay','ClayCornerRamp'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('CornerRamp',NULL,'Stone','StoneCornerRamp'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('URamp',NULL,'Soil','SoilURamp'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('URamp',NULL,'Sand','SoilURamp'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('URamp',NULL,'Clay','ClayURamp'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('URamp',NULL,'Stone','StoneURamp'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('RampTop',NULL,'Soil','SoilRampTop'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('RampTop',NULL,'Sand','SoilRampTop'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('RampTop',NULL,'Clay','ClayRampTop'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('RampTop',NULL,'Stone','StoneRampTop'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('CornerRampTop',NULL,'Soil','SoilCornerRampTop'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('CornerRampTop',NULL,'Sand','SoilCornerRampTop'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('CornerRampTop',NULL,'Clay','ClayCornerRampTop'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('CornerRampTop',NULL,'Stone','StoneCornerRampTop'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('URampTop',NULL,'Soil','SoilURampTop'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('URampTop',NULL,'Sand','SoilURampTop'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('URampTop',NULL,'Clay','ClayURampTop'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('URampTop',NULL,'Stone','StoneURampTop'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('OuterCornerRamp',NULL,'Soil','SoilOuterCornerRamp'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('OuterCornerRamp',NULL,'Sand','SoilOuterCornerRamp'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('OuterCornerRamp',NULL,'Clay','ClayOuterCornerRamp'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('OuterCornerRamp',NULL,'Stone','StoneOuterCornerRamp'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('OuterCornerRamp',NULL,'Grain','ThatchOuterCornerRamp'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Bed',NULL,'Wood','WoodBed'); INSERT INTO "Sprites_ByMaterialTypes" ("ID","BaseSprite","MaterialType","Sprite") VALUES ('Bed',NULL,'Bone','BoneBed'); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Panda','Rot90','Panda',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Rabbit','Rot90','Rabbit',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Chicken','Rot90','Chicken',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','PigPink','Rot90','PigPink',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','PigYellow','Rot90','PigYellow',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Sheep','Rot90','Sheep',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Woodlouse','Rot90','Woodlouse',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Badger','Rot90','Badger',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Lizzard','Rot90','Lizzard',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','BlackBear','Rot90','BlackBear',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Llama','Rot90','Llama',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Yak','Rot90','Yak',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Emu','Rot90','Emu',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Spider','Rot90','Spider',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Beetle','Rot90','Beetle',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','RabbitYoung','Rot90','RabbitYoung',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','ChickenYoung','Rot90','ChickenYoung',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','PigYoung','Rot90','PigYoung',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','SheepYoung','Rot90','SheepYoung',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','LlamaYoung','Rot90','LlamaYoung',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','YakYoung','Rot90','YakYoung',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','EmuYoung','Rot90','EmuYoung',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Duck','Rot90','Duck',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Cow','Rot90','Cow',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','CowYoung','Rot90','CowYoung',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','DuckYoung','Rot90','DuckYoung',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Goose','Rot90','Goose',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','GooseYoung','Rot90','GooseYoung',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Shepherd','Rot90','Shepherd',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','ShepherdYoung','Rot90','ShepherdYoung',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','CatTabby','Rot90','CatTabby',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','CatBlack','Rot90','CatBlack',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Porcupine','Rot90','Porcupine',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Fox','Rot90','Fox',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Wolf','Rot90','Wolf',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Stag','Rot90','Stag',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Roe','Rot90','Roe',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Goat','Rot90','Goat',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','GoatYoung','Rot90','GoatYoung',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','Squirrel','Rot90','Squirrel',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','GreyFish','Rot90','GreyFish',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','GreenFish','Rot90','GreenFish',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Corpse','GreenFishBack','Rot90','GreenFishBack',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('MonsterCorpse',NULL,'Rot90','Goblin','GoblinFR'); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Fruit','Melon','none','Melon',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Fruit','Pumpkin','none','Pumpkin',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Fruit','Pineapple','none','Pineapple',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Fruit','Strawberry','none','Strawberry',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Fruit','Apple','none','Apple',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Fruit','Orange','none','Orange',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Carrot','none','Carrot',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Onion','none','Onion',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Potato','none','Potato',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Cabbage','none','Cabbage',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Asparagus','none','Asparagus',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Broccoli','none','Broccoli',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Cauliflower','none','Cauliflower',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Cucumber','none','Cucumber',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Garlic','none','Garlic',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Parsnip','none','Parsnip',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Radish','none','Radish',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Turnip','none','Turnip',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Lettuce','none','Lettuce',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Sugarbeet','none','Sugarbeet',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Peas','none','Peas',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','BeetRoot','none','BeetRoot',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Corn','none','Corn',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Leek','none','Leek',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Beans','none','Beans',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Artichoke','none','Artichoke',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Bottlegourd','none','Bottlegourd',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Woad','none','Woad',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Tomato','none','Tomato',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Vegetable','Capsicum','none','Capsicum',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Berries','Blackberry','none','Blackberry',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Berries','Grape','none','Grape',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Leaves','Tea','none','Tea',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Leaves','Tobacco','none','Tobacco',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Leaves','DyersWeed','none','DyersWeed',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Mushroom',NULL,'none','none',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','CarrotPlant','none','Carrot',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','OnionPlant','none','Onion',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','PotatoPlant','none','Potato',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','CabbagePlant','none','Cabbage',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','AsparagusPlant','none','Asparagus',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','BroccoliPlant','none','Broccoli',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','CauliflowerPlant','none','Cauliflower',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','CucumberPlant','none','Cucumber',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','RicePlant','none','Rice',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','GarlicPlant','none','Garlic',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','ParsnipPlant','none','Parsnip',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','RadishPlant','none','Radish',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','TurnipPlant','none','Turnip',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','LettucePlant','none','Lettuce',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','MelonPlant','none','Melon',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','SugarbeetPlant','none','Sugarbeet',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','PumpkinPlant','none','Pumpkin',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','PeasPlant','none','Peas',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','BeetRoot','none','BeetRoot',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','StrawberryPlant','none','Strawberry',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('Plant','CottonPlant','none','Cotton',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','CarrotPlantWithFruit','none','Carrot',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','OnionPlantWithFruit','none','Onion',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','PotatoPlantWithFruit','none','Potato',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','CabbagePlantWithFruit','none','Cabbage',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','AsparagusPlantWithFruit','none','Asparagus',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','BroccoliPlantWithFruit','none','Broccoli',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','CauliflowerPlantWithFruit','none','Cauliflower',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','CucumberPlantWithFruit','none','Cucumber',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','RicePlantWithFruit','none','Rice',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','GarlicPlantWithFruit','none','Garlic',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','ParsnipPlantWithFruit','none','Parsnip',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','RadishPlantWithFruit','none','Radish',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','TurnipPlantWithFruit','none','Turnip',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','LettucePlantWithFruit','none','Lettuce',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','MelonPlantWithFruit','none','Melon',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','SugarbeetPlantWithFruit','none','Sugarbeet',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','PumpkinPlantWithFruit','none','Pumpkin',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','PeasPlantWithFruit','none','Peas',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','BeetRoot','none','BeetRoot',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','StrawberryPlantWithFruit','none','Strawberry',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantWithFruit','CottonPlantWithFruit','none','Cotton',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLarge','TeaPlant','none','Tea',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLarge','TobaccoPlant','none','Tobacco',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLarge','PineapplePlant','none','Pineapple',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLarge','CornPlant','none','Corn',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLarge','LeekPlant','none','Leek',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLarge','BeansPlant','none','Beans',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLarge','BlackberryPlant','none','Blackberry',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLarge','ArtichokePlant','none','Artichoke',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLarge','BottlegourdPlant','none','Bottlegourd',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLarge','WoadPlant','none','Woad',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLarge','DyersWeedPlant','none','DyersWeed',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLarge','GrapePlant','none','Grape',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLarge','TomatoPlant','none','Tomato',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLarge','CapsicumPlant','none','Capsicum',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLarge','BarleyPlant','none','Barley',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLarge','OatPlant','none','Oat',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLarge','MilletPlant','none','Millet',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLarge','WheatPlant','none','Wheat',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLargeWithFruit','TeaPlantWithFruit','none','Tea',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLargeWithFruit','TobaccoPlantWithFruit','none','Tobacco',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLargeWithFruit','PineapplePlantWithFruit','none','Pineapple',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLargeWithFruit','CornPlantWithFruit','none','Corn',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLargeWithFruit','LeekPlantWithFruit','none','Leek',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLargeWithFruit','BeansPlantWithFruit','none','Beans',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLargeWithFruit','BlackberryPlantWithFruit','none','Blackberry',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLargeWithFruit','ArtichokePlantWithFruit','none','Artichoke',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLargeWithFruit','BottlegourdPlantWithFruit','none','Bottlegourd',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLargeWithFruit','WoadPlantWithFruit','none','Woad',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLargeWithFruit','DyersWeedPlantWithFruit','none','DyersWeed',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLargeWithFruit','GrapePlantWithFruit','none','Grape',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLargeWithFruit','TomatoPlantWithFruit','none','Tomato',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLargeWithFruit','CapsicumPlantWithFruit','none','Capsicum',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLargeWithFruit','BarleyPlantWithFruit','none','Barley',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLargeWithFruit','OatPlantWithFruit','none','Oat',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLargeWithFruit','MilletPlantWithFruit','none','Millet',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('PlantLargeWithFruit','WheatPlantWithFruit','none','Wheat',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneWall2','BasaltWall','none','Basalt',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneWall2','GraniteWall','none','Granite',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneWall2','SerpentineWall','none','Serpentine',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneWall2','BauxiteWall','none','Bauxite',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneWall2','SandstoneWall','none','Sandstone',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneWall2','LapisWall','none','LapisLazuli',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneWall2','MarbleWall','none','Marble',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneFloor2','BasaltFloor','none','Basalt',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneFloor2','GraniteFloor','none','Granite',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneFloor2','SerpentineFloor','none','Serpentine',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneFloor2','BauxiteFloor','none','Bauxite',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneFloor2','SandstoneFloor','none','Sandstone',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneFloor2','LapisFloor','none','LapisLazuli',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneFloor2','MarbleFloor','none','Marble',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneFloor3','BasaltFloor','none','Basalt',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneFloor3','GraniteFloor','none','Granite',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneFloor3','SerpentineFloor','none','Serpentine',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneFloor3','BauxiteFloor','none','Bauxite',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneFloor3','SandstoneFloor','none','Sandstone',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneFloor3','LapisFloor','none','LapisLazuli',NULL); INSERT INTO "Sprites_ByMaterials" ("ID","BaseSprite","Effect","MaterialID","Sprite") VALUES ('RoughStoneFloor3','MarbleFloor','none','Marble',NULL); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SelectionFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SelectionWall',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SolidSelectionFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SolidSelectionWall',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SolidSelectionWallShort',0,'SolidSelectionWall',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MiningJobWall',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MiningJobWallShort',0,'MiningJobWall',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SelectionWallShort',0,'SelectionWall',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mattress',0,'MattressFR',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodBedFrame',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodBedSheets',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodBed',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FancyWoodBedFrame',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FancyWoodBedSheets',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FancyBed',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodChair',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoneChair',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BoneChair',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Chair',0,NULL,0,'0 0',0,'Material','Wood',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StairsTop',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Stairs',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WaterLeftWall_',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WaterRightWall_',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PineTree',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PineTreeNoLeaves',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AppleTree',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AppleTreeNoLeaves',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTreeNoLeaves',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Sapling',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('TilledSoil',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PlantedSoil',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Statue',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Door',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Table',0,NULL,0,'0 0',0,'Material','Wood',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Well',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WellTop',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RawSoil',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RawStone',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RawWood',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RawCoal',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RawOre',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RawGem',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RawHide',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Block',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Plank',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Bar',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Gem',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Bolt',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Bandage',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MarketStallBase',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MarketStallTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MarketStallWithTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CarpenterStandTools',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CarpenterStand',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CarpenterStandWithTools',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('TableSaw',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SawTable',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SawTable_TableSaw',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Workbench',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Workmat',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AxeBench',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Keg',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopWaterTub',0,'WorkshopWaterTub',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Distill',0,'Distill',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('TanningRack',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodPile',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GiantStoneBlock',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoneBlockPile',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ThoughtBubble',0,'ThoughtBubble',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StatusTired',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StatusSleeping',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ThoughtBubbleThirsty',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ThoughtBubbleHungry',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ThoughtBubbleCombat',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StatusThirsty',0,'StatusThirsty',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StatusHungry',0,'StatusHungry',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StatusCombat',0,'StatusCombat',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LittleBlood1',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LittleBlood2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BigBlood1',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BigBlood2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Crate',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Barrel',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Bag',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Egg',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Meat',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Bread',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Sausage',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Sandwich',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Bone',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Skull',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GroundTorch',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GroundTorchBase',0,'GroundTorchBase',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GroundTorchFlame',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Coin',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Statuette',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SelectionFloorTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SelectionWallTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ChiseledBlockFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ChiseledBlockWall',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PetRock',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Gear',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CuttingWheel',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Spring',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('HatchFrame',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('HatchFrameItem',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SpikeTrapSpike2',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SpikeTrapItemSpike',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BladeTrapBlade3',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BladeTrapItemBlade',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ClaymoreBlade',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PuzzleBox',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Clipping',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SpikeTrapSpike1',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BladeTrapBlade1',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BladeTrapBlade2',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StonePillar',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AmmoPouch',0,'GnomeAmmoPouch',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OgreTorso',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OgreHead',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OgreArmRight',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OgreArmLeft',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OgreHandRight',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OgreHandLeft',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OgreFootRight',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OgreFootLeft',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlueOgreTorso',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlueOgreHeadRight',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlueOgreHeadLeft',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlueOgreArmRight',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlueOgreArmLeft',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlueOgreHandRight',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlueOgreHandLeft',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlueOgreFootRight',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlueOgreFootLeft',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MantTorso',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MantHead',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MantAntennaeRight',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MantAntennaeLeft',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MantArmRight',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MantArmLeft',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MantLegRight',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MantLegLeft',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BeetleTorso',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BeetleHead',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Cocoon',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZombieTorso',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZombieHead',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZombieArmRight',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZombieArmLeft',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZombieHandRight',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZombieHandLeft',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZombieFootRight',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZombieFootLeft',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SkeletonTorso',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SkeletonHead',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SkeletonArmRight',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SkeletonArmLeft',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SkeletonHandRight',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SkeletonHandLeft',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SkeletonFootRight',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SkeletonFootLeft',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('String',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillBlade',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Cylinder',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Spike',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Grain',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Chisel',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Wrench',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StrawBed',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ArmorPlate',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LeatherPanel',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LeatherStrip',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BoneNeedle',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AppleOnGround',0,'Apple',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PlankWall',0,'PlankWall',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PlankFloor',0,'PlankFloor',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StarEngravedBlockFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StarEngravedBlockWall',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SpiralEngravedBlockFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SpiralEngravedBlockWall',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MoonEngravedBlockFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MoonEngravedBlockWall',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WaterEngravedBlockFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WaterEngravedBlockWall',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('EngravedBlockFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('EngravedBlockWall',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BoneFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BoneWall',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BoneShirt',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MechanicalWallClosed',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PumpFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PumpScrew1',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PumpScrew2',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PumpScrew3',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PumpScrew4',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Screw',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SawTableLeft_SawTableBlade',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SawTableLeft',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SawTableRight',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SawTableBlade',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CrateLog',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CratePlank',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SawHorse',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ShearsTableTop',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ClothRollTableTop',0,NULL,0,'0 8',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('JewelryPile',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BoltRoundPile',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MusketRoundPile',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MetalSliver',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTree',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTreeNoLeaves',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomPlant',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomItem',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Cheese',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Omelette',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FishingRod',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AlarmBellBase',0,'AlarmBellBase',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AlarmBellBell',0,'AlarmBellBell',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AlarmBell',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('TowerShieldBase',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('TowerShield',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ScaffoldFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Scaffold',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Bucket',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Sack',0,'Sack',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GolemArmRight',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GolemArmLeft',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GolemLegRight',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GolemLegLeft',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFloorFrame',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodCrossFrame',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodVFloorFrame',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodVFrame',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodPanelledFloorFrame',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodPanelledFrame',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SmoothStoneFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SmoothStoneWall',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CeramicFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CeramicWall',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CarvedStoneFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CarvedStoneWall',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Silica',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RoughSoilWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RoughClayWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RoughStoneWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LogWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FancyBlockWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CarvedStoneWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PlankWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MetalWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ThatchWall',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ThatchFloor',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MetalHighlightWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ChiseledBlockWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StarEngravedBlockWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SpiralEngravedBlockWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MoonEngravedBlockWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WaterEngravedBlockWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('EngravedBlockWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BoneWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ThatchWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SmoothStoneWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CeramicWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CarvedWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FancyBlockFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FancyBlockWall',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('EmbeddedOre',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('EmbeddedGem',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WaterFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LavaFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Forge',0,'Forge',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ForgeTop',0,'ForgeTop',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ForgeWithTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mold',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MoldTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MoldWithTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Bellows',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BellowsNozzle',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BellowsWithNozzle',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CoalPile',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrePile',0,NULL,0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Furnace',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FurnaceFlame',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FurnaceWithFlame',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Kiln',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('KilnFlame',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('KilnWithFlame',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Anvil',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WaterTrough',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BeeHiveEmpty',0,'BeeHiveEmpty',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BeeHiveFull',0,'BeeHiveFull',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Trough',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Shed',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MetalBarPile',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GreenFish',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Corpse',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Panda',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Rabbit',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RabbitYoung',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Chicken',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ChickenYoung',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Pig',0,NULL,1,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PigPink',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PigYoung',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PigYellow',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Sheep',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SheepYoung',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Woodlouse',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Badger',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Lizzard',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlackBear',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Llama',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LlamaYoung',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Emu',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('EmuYoung',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Cow',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CowYoung',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Yak',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('YakYoung',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Spider',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Beetle',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Duck',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('DuckYoung',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Goose',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GooseYoung',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Shepherd',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ShepherdYoung',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CatTabby',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CatBlack',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Porcupine',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Fox',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Wolf',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Stag',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Roe',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Goat',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GoatYoung',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Squirrel',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Snake',0,'Snake',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GreyFish',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MonsterCorpse',0,NULL,0,'0 0',1,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Goblin',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GoblinFR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CrystalSnake',0,NULL,0,'0 0',0,NULL,NULL,1); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZygYoung',0,NULL,1,'0 0',0,NULL,NULL,1); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZygYoungBlue',0,NULL,0,'0 0',0,NULL,NULL,1); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZygYoungRed',0,NULL,0,'0 0',0,NULL,NULL,1); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZygYouth',0,NULL,1,'0 0',0,NULL,NULL,1); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZygYouthBlue',0,NULL,0,'0 0',0,NULL,NULL,1); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZygYouthRed',0,NULL,0,'0 0',0,NULL,NULL,1); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZygAdult',0,NULL,1,'0 0',0,NULL,NULL,1); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZygAdultBlue',0,NULL,0,'0 0',0,NULL,NULL,1); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZygAdultRed',0,NULL,0,'0 0',0,NULL,NULL,1); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZygSenior',0,NULL,1,'0 0',0,NULL,NULL,1); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZygSeniorBlue',0,NULL,0,'0 0',0,NULL,NULL,1); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ZygSeniorRed',0,NULL,0,'0 0',0,NULL,NULL,1); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Fruit',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Vegetable',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Berries',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Leaves',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Plant',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PlantWithFruit',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PlantLarge',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PlantLargeWithFruit',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PlantGrowHelper1',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PlantGrowHelper2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PlantGrowHelper3',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Seed',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Wheat',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Fiber',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PineCone',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Oak',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowSeed',0,'Seed',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StrawMushroom',0,'StrawMushroom',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodMushroom',0,'WoodMushroom',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FibreMushroom',0,'FibreMushroom',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrainMushroom',0,'GrainMushroom',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Pigment',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('DyedCloth',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodTub',0,'WoodTub',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Dye',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Dresser',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Cabinet',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Painting',0,NULL,1,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Painting1',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Painting2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Painting3',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Painting4',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Painting5',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Painting6',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Painting7',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Painting8',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('TrainingDummy',0,'TrainingDummy',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Wheelbarrow',0,'Wheelbarrow',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FishingFishRack',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FishingRack',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FishingRods',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FishingRodRack',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FishingVat',0,'FishingVat',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockWall',0,'BlockWall100',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFloor25',0,'BlockFloor25',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFloor50',0,'BlockFloor50',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFloor75',0,'BlockFloor75',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFloor100',0,'BlockFloor100',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Palisade',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PalisadeTop',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFence',0,'BlockFencePost',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceN',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceE',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceS',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceNS',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceEW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceNE',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceES',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceSW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceNW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceESW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceNSW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceNEW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceNES',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceRot',0,'BlockFencePost',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceRotN',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceRotE',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceRotS',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceRotW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceRotNS',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceRotEW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceRotNE',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceRotES',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceRotSW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceRotNW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceRotESW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceRotNSW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceRotNEW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceRotNES',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlockFenceRotNESW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFence',0,'CobbleStoneFencePost',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceN',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceE',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceS',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceNS',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceEW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceNE',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceES',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceSW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceNW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceESW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceNSW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceNEW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceNES',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceRot',0,'CobbleStoneFencePost',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceRotN',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceRotE',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceRotS',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceRotW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceRotNS',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceRotEW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceRotNE',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceRotES',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceRotSW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceRotNW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceRotESW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceRotNSW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceRotNEW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceRotNES',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CobbleStoneFenceRotNESW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFence',0,'WoodFencePost',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceN',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceE',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceS',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceNS',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceEW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceNE',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceES',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceSW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceNW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceESW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceNSW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceNEW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceNES',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceRot',0,'WoodFencePost',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceRotN',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceRotE',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceRotS',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceRotW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceRotNS',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceRotEW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceRotNE',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceRotES',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceRotSW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceRotNW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceRotESW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceRotNSW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceRotNEW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceRotNES',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodFenceRotNESW',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Rafter',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Roofing',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CombinedRoof',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('KnifeBlade',0,'KnifeBlade',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('KnifeHilt',0,'KnifeHilt',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Hilt',0,'KnifeHilt',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Knife',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Pickaxe',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PickaxeHead',0,'PickaxeHead',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PickaxeBase',0,'PickaxeBase',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FellingAxe',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FellingAxeBase',0,'FellingAxeBase',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FellingAxeHead',0,'FellingAxeHead',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_AxeBench',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_KitchenTableTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_Hammer',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_RawGem',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_Gem',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_JewelryPile',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_Vise',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_Cloth',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_ClothRollTableTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_ShearsTableTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_String',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_Statuette',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_Skull',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_BoneNeedle',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_ChiselTableTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ChiselTableTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_Meat',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_ButcherTableTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ButcherTableTop',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('KitchenTableTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('HammerTableTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('File',0,'Sword',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('HammerHead',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Loom',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_ProspectorOre',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_ProspectorSliver',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SwordBlade',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('HandAxeHead',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Shield',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BattleAxeHead',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WarhammerHead',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SwordBase',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('HandAxeBase',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('HammerBase',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ShieldBase',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BattleAxeBase',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WarhammerBase',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ClaymoreBase',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlunderbussBase',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BlunderbussBarrel',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PistolBase',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PistolBarrel',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CrossbowBase',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Crossbow',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RoughFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RoughWall',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RoughWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RoughStoneWall',0,'RoughStoneWall',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RoughStoneFloor',0,'RoughStoneFloor',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Floor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LogFloor',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Wall',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LogWall',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Ramp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CornerRamp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('URamp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RampTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CornerRampTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('URampTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ClayRamp',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoneRamp',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ThatchRamp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ThatchRampTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ClayCornerRamp',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoneCornerRamp',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ClayURamp',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoneURamp',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ClayRampTop',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoneRampTop',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ClayCornerRampTop',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoneCornerRampTop',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ClayURampTop',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoneURampTop',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassSoilRamp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassSoilRampTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassSoilCornerRamp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassSoilCornerRampTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassSoilURamp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassSoilURampTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OuterCornerRamp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SoilOuterCornerRamp',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ClayOuterCornerRamp',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoneOuterCornerRamp',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ThatchOuterCornerRamp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AppleTreeTopWithFruit',0,NULL,1,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AppleTreeTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AppleTreeTopCornerWithFruit',0,NULL,1,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AppleTreeTopCorner',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AppleTreeMiddle',0,'AppleTreeMiddle',0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AppleTreeMiddleWithFruit',0,NULL,1,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AppleTreeMiddleTop',0,'AppleTreeMiddle',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AppleTreeBottom',0,NULL,0,'0 -8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AppleTreeBottomCorner',0,NULL,0,'0 -8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AppleTreeTrunkMiddle',0,'AppleTreeTrunkMiddle',0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AppleTreeTrunkBottom',0,'AppleTreeTrunkBottom',0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AppleTreeApples',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AppleTreeApple1',0,'AppleTreeApple1',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AppleTreeApple2',0,'AppleTreeApple2',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AppleTreeApple3',0,'AppleTreeApple3',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PineTrunk1',0,'PineTrunk1',0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PineTrunk2',0,'PineTrunk2',0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PineTree1',0,NULL,0,'0 -8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PineTree2',0,NULL,0,'0 -6',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PineTree3',0,NULL,0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PineTree4',0,NULL,0,'0 -2',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PineTop',0,'PineTreeTop',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTreeTopWithFruit',0,NULL,1,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTreeMiddleCornerWithFruit',0,NULL,1,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTreeTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTreeTopCornerWithFruit',0,NULL,1,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTreeTopCorner',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTreeMiddleCorner',0,NULL,0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTreeMiddle',0,'OrangeTreeMiddle',0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTreeMiddleWithFruit',0,NULL,1,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTreeMiddleTop',0,'OrangeTreeMiddle',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTreeBottom',0,NULL,0,'0 -8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTreeBottomCorner',0,NULL,0,'0 -8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTreeTrunkMiddle',0,'OrangeTreeTrunkMiddle',0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTreeTrunkBottom',0,'OrangeTreeTrunkBottom',0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTreeOranges',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTreeOrange1',0,'OrangeTreeOrange1',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTreeOrange2',0,'OrangeTreeOrange2',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OrangeTreeOrange3',0,'OrangeTreeOrange3',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree1',0,NULL,0,'0 -8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree2',0,NULL,0,'0 -8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree3',0,NULL,0,'0 -8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree4',0,NULL,0,'0 -8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree5',0,NULL,0,'0 -8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree6_1',0,NULL,0,'0 -8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree7',0,NULL,0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree8',0,NULL,0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree9',0,NULL,0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree10',0,NULL,0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree11',0,NULL,0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree12_1',0,NULL,0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree13',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree14',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree21',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree22',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree23',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree24',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree25',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree26',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree27',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree28',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree29',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree210',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree211',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree212',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree213',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree214',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree1',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree3',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree4',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree5',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree6_1',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree7',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree8',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree9',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree10',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree11',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree12_1',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree13',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree14',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree21',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree22',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree23',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree24',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree25',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree26',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree27',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree28',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree29',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree210',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree211',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree212',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree213',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree214',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Grass1',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Grass2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Grass3',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Grass4',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Grass5',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Grass6',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassWithDetail',0,NULL,1,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Grass',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassDetail',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RRedFlower0',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RRedFlower1',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RRedFlower2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RRedFlower3',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RRedFlower4',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RRedFlower5',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RRedFlower6',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RRedFlower7',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RRedFlower8',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RBlueFlower0',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RBlueFlower1',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RBlueFlower2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RBlueFlower3',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RBlueFlower4',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RBlueFlower5',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RBlueFlower6',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RBlueFlower7',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RBlueFlower8',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RYellowFlower0',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RYellowFlower1',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RYellowFlower2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RYellowFlower3',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RYellowFlower4',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RYellowFlower5',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RYellowFlower6',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RYellowFlower7',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RYellowFlower8',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RPurpleFlower0',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RPurpleFlower1',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RPurpleFlower2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RPurpleFlower3',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RPurpleFlower4',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RPurpleFlower5',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RPurpleFlower6',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RPurpleFlower7',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RPurpleFlower8',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ROrangeFlower0',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ROrangeFlower1',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ROrangeFlower2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ROrangeFlower3',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ROrangeFlower4',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ROrangeFlower5',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ROrangeFlower6',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ROrangeFlower7',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ROrangeFlower8',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RWhiteMushroom0',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RWhiteMushroom1',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RWhiteMushroom2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RWhiteMushroom3',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RWhiteMushroom4',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RWhiteMushroom5',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RWhiteMushroom6',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RWhiteMushroom7',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RWhiteMushroom8',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RYellowMushroom1',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RYellowMushroom2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RYellowMushroom3',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RYellowMushroom4',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RYellowMushroom5',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RYellowMushroom6',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RYellowMushroom7',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RYellowMushroom8',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ROrangeMushroom1',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ROrangeMushroom2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ROrangeMushroom3',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ROrangeMushroom4',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ROrangeMushroom5',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ROrangeMushroom6',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ROrangeMushroom7',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ROrangeMushroom8',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RStone0',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RStone1',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RStone2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RStone3',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RStone4',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RStone5',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RStone6',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RStone7',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RStone8',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassDetail1',0,NULL,1,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassDetail2',0,NULL,1,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassDetail3',0,NULL,1,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassDetail4',0,NULL,1,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassDetail5',0,NULL,1,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassRamp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassRampTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassOuterCornerRamp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassCornerRamp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassCornerRampTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassURamp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrassURampTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SoilRamp',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SoilRampTop',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SoilCornerRamp',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SoilCornerRampTop',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SoilURamp',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SoilURampTop',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Pentagram',0,'Pentagram1',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PentagramAnim',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Sparkles',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrassWithDetail',0,NULL,1,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrass',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrass1',0,'MushroomGrass1',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrass2',0,'MushroomGrass2',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrass3',0,'MushroomGrass3',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrass4',0,'MushroomGrass4',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrass5',0,'MushroomGrass5',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrassDetail',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CrystalPole',0,'CrystalPole',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CrystalShroom',0,'CrystalShroom',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrassRamp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrassRampTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrassCornerRamp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrassCornerRampTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrassURamp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrassURampTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrassSoilRamp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrassSoilRampTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrassSoilCornerRamp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrassSoilCornerRampTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrassSoilURamp',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MushroomGrassSoilURampTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom1_1',0,'Mushroom1_1',0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom1_2',0,'Mushroom1_2',0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom1_3',0,'Mushroom1_3',0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom1_4',0,'Mushroom1_4',0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_1',0,'Mushroom2_1',0,'0 12',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_2',0,'Mushroom2_2',0,'0 12',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_3',0,'Mushroom2_3',0,'0 12',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_4',0,'Mushroom2_4',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_5',0,'Mushroom2_5',0,'0 12',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_6',0,'Mushroom2_6',0,'0 12',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_7',0,'Mushroom2_7',0,'0 12',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_8',0,'Mushroom2_8',0,'0 12',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_6_2',0,'Mushroom2_6',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_7_2',0,'Mushroom2_7',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_8_2',0,'Mushroom2_8',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_9',0,'Mushroom2_9',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_10',0,'Mushroom2_10',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_4_2',0,'Mushroom2_4',0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_9_2',0,'Mushroom2_9',0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_10_2',0,'Mushroom2_10',0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_11_2',0,'Mushroom2_11',0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_12_2',0,'Mushroom2_12',0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_11',0,'Mushroom2_11',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_12',0,'Mushroom2_12',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_13',0,'Mushroom2_13',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_14',0,'Mushroom2_14',0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_15',0,'Mushroom2_15',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_16',0,'Mushroom2_16',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_17',0,'Mushroom2_17',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_18',0,'Mushroom2_18',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_19',0,'Mushroom2_19',0,'0 12',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_20',0,'Mushroom2_20',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_21',0,'Mushroom2_21',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_22',0,'Mushroom2_22',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_23',0,'Mushroom2_23',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_24',0,'Mushroom2_24',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_25',0,'Mushroom2_25',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_26',0,'Mushroom2_26',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_27',0,'Mushroom2_27',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_28',0,'Mushroom2_28',0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_29',0,'Mushroom2_29',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_30',0,'Mushroom2_30',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_31',0,'Mushroom2_31',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_32',0,'Mushroom2_32',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_33',0,'Mushroom2_33',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_34',0,'Mushroom2_34',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Breastplate',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Helmet',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree6_2',0,NULL,0,'0 -8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree6_3',0,NULL,0,'0 -8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree12_2',0,NULL,0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OakTree12_3',0,NULL,0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree6_2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree6_3',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree12_2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WillowTree12_3',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UprightWeaponStand','false','','false','0 0','false','','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LeatherArmorHead',0,'LeatherArmorHead',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LeatherArmorChest',0,'LeatherArmorChest',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LeatherArmorArms',0,'LeatherArmorArms',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LeatherArmorLegs',0,'LeatherArmorLegs',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LeatherArmorHands',0,'LeatherArmorHands',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LeatherArmorFeet',0,'LeatherArmorFeet',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ChainArmorHead',0,'ChainArmorHead',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ChainArmorChest',0,'ChainArmorChest',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ChainArmorArms',0,'ChainArmorArms',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ChainArmorHands',0,'ChainArmorHands',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ChainArmorLegs',0,'ChainArmorLegs',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ChainArmorFeet',0,'ChainArmorFeet',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PlateArmorHead',0,'PlateArmorHead',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PlateArmorChest',0,'PlateArmorChest',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PlateArmorArms',0,'PlateArmorArms',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PlateArmorHands',0,'PlateArmorHands',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PlateArmorLegs',0,'PlateArmorLegs',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PlateArmorFeet',0,'PlateArmorFeet',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('HeavyPlateArmorHead',0,'HeavyPlateArmorHead',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('HeavyPlateArmorChest',0,'HeavyPlateArmorChest',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('HeavyPlateArmorArms',0,'HeavyPlateArmorArms',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('HeavyPlateArmorHands',0,'HeavyPlateArmorHands',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('HeavyPlateArmorLegs',0,'HeavyPlateArmorLegs',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('HeavyPlateArmorFeet',0,'HeavyPlateArmorFeet',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Sword',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BoneArmorChest','false','BoneArmorChest','false','0 0','false','','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GearBoxBase',0,'GearBoxBase',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GearBoxFrame',0,'GearBoxFrame',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GearBox',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Spring',0,'Spring',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Cylinder',0,'Cylinder',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Axle',1,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('VerticalAxle',1,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopInputIndicator',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SheepRed','false','','false','0 0','false','','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SheepGreen','false','','false','0 0','false','','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SheepBlue','false','','false','0 0','false','','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SheepYellow','false','','false','0 0','false','','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SheepPurple','false','','false','0 0','false','','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SheepCyan','false','','false','0 0','false','','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SteamEngineBoilerFR',1,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SteamEnginePistonFR',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SteamEngineBoilerBL',1,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SteamEnginePistonBL',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SteamEngine',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SteamEngineBoiler',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SteamEnginePiston',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AxleAnim',1,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Pipe',0,'PipePost',0,'0 0',0,NULL,'',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeN',0,'',0,'0 0',0,NULL,'',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeE',0,'',0,'0 0',0,NULL,'',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeS',0,'',0,'0 0',0,NULL,'',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeW',0,'',0,'0 0',0,NULL,'',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeNS',0,'',0,'0 0',0,NULL,'',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeEW',0,'',0,'0 0',0,NULL,'',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeNE',0,'',0,'0 0',0,NULL,'',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeES',0,'',0,'0 0',0,NULL,'',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeSW',0,'',0,'0 0',0,NULL,'',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeNW',0,'',0,'0 0',0,NULL,'',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeESW',0,'',0,'0 0',0,NULL,'',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeNSW',0,'',0,'0 0',0,NULL,'',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeNEW',0,'',0,'0 0',0,NULL,'',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeNES',0,'',0,'0 0',0,NULL,'',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeRot',0,'PipePost',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeRotN',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeRotE',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeRotS',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeRotW',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeRotNS',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeRotEW',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeRotNE',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeRotES',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeRotSW',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeRotNW',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeRotESW',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeRotNSW',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeRotNEW',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeRotNES',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeRotNESW',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeItem',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeFittingItem',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Pump',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PumpBase',1,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PumpTop',1,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExit',0,'PipeFittingItem',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitN',0,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitE',0,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitS',0,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitW',0,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitNS',0,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitEW',0,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitNE',0,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitES',0,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitSW',0,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitNW',0,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitESW',0,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitNSW',0,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitNEW',0,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitNES',0,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitRot',0,'PipeFittingItem',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitRotN',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitRotE',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitRotS',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitRotW',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitRotNS',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitRotEW',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitRotNE',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitRotES',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitRotSW',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitRotNW',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitRotESW',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitRotNSW',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitRotNEW',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitRotNES',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PipeExitRotNESW',0,'',0,'0 0',0,'Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PumpConnectors',1,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree1',0,NULL,0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree2',0,NULL,0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree3',0,NULL,0,'0 -4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree4',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree5',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree6',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree7',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree8',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree9',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree10',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree11',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree12',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree13',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree14',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree15',0,NULL,0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree16',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree17',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree18',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree19',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree20',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree5_10',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree10_5',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree11_1',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree11_2',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree11_3',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree11_4',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree11_5',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree11_6',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree20_1',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree20_2',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree20_3',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BirchTree20_4',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LeverOff',0,NULL,0,'0 0',NULL,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LeverOn',0,NULL,0,'0 0',NULL,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LeverBase',0,'LeverBaseFR',0,'0 0',NULL,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_Wrench',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_Blueprint',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_Bar',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_Wheel',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Handcrank',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SpikeTrapItem','false','','false','0 0','false','','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MechanicalWallItem',0,'MechanicalWallClosed',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MechanicalWallOpen',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MechanicalWallShort',0,'MechanicalWallOpen',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AutomatonCore',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AutomatonFR',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AutomatonBR',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Automaton',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSail1FR',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSail2FR',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSail3FR',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSail4FR',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSail1BL',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSail2BL',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSail3BL',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSail4BL',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSailFrame1',1,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSailFrame2',1,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSailFrame3',1,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSailFrame4',1,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillBase',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillRoof',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FlourSack',0,'Sack',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillBase2',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SoilStairsTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoneStairsTop',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SoilStairs',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoneStairs',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodDoor',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoneDoor',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodTable',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SkullWall',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SkullWallShort',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BoneBedFrame',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BoneBedSheets',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BoneBed',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Bed',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSailCloth1FR',1,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSailCloth2FR',1,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSailCloth3FR',1,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSailCloth4FR',1,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSailCloth1BL',1,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSailCloth2BL',1,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSailCloth3BL',1,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSailCloth4BL',1,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSailCloth1',1,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSailCloth2',1,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSailCloth3',1,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSailCloth4',1,'',0,'0 0',0,'','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSail1',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSail2',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSail3',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WindmillSail4',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FlourSack',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FlourSackPile',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Donkey',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_3_02',0,NULL,0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_3_11',0,NULL,0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_3_12',0,NULL,0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_3_21',0,NULL,0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_3_22',0,NULL,0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_4_10',0,NULL,0,'0 12',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom2_4_11',0,NULL,0,'0 12',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom3_2_10',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom3_2_11',0,NULL,0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mushroom3_3_10',0,NULL,0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mammoth000',0,'MammothFL17',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mammoth010',0,'MammothFL13',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mammoth020',0,'MammothFL4',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mammoth100',0,'MammothFL1',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mammoth110',0,'MammothFL2',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mammoth120',0,'MammothFL3',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mammoth001',0,'MammothFL12',0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mammoth011',0,'MammothFL12',0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mammoth021',0,'MammothFL5',0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mammoth101',0,'MammothFL8',0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mammoth111',0,'MammothFL7',0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mammoth121',0,'MammothFL6',0,'0 4',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mammoth002',0,'MammothFL16',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mammoth012',0,'MammothFL15',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mammoth022',0,'MammothFL14',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mammoth102',0,'MammothFL9',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mammoth112',0,'MammothFL10',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Mammoth122',0,'MammothFL11',0,'0 8',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Straw',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Hay',0,'HayBale',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Flower1',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Flower2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Flower3',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Flower4',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Flower5',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Flower6',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Flower7',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Flower8',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Flower1Young',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Flower2Young',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Flower3Young',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Flower4Young',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Flower5Young',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Flower6Young',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Flower7Young',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Flower8Young',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Honey','false','','false','0 0','false','','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Hammer',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Warhammer',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Claymore',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('HandAxe',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BattleAxe',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RoughStoneWall2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RoughStoneFloor2',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RoughStoneFloor3',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WallTorch',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WallTorchBase',1,NULL,0,'0 0',NULL,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WallTorchFlame',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WallTorchFlameFR',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WallTorchFlameBL',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WallTorchBaseFR',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WallTorchBaseBL',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PlankStairs',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PlankStairsTop',0,NULL,NULL,'0 0',NULL,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Chest','false','','false','0 0','false','Material','',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BookshelfShelf',0,NULL,NULL,'0 0',NULL,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BookshelfBooks',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Bookshelf',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BigTorchBase',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BigTorchFlame',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BrazierBase',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BrazierFlame',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BigTorch',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Brazier',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Sabretooth1FL',NULL,'Sabretooth1FL',NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Sabretooth2FL',NULL,'Sabretooth2FL',NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Sabretooth1FR',NULL,'Sabretooth1FR',NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Sabretooth2FR',NULL,'Sabretooth2FR',NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Sabretooth1BR',NULL,'Sabretooth1BR',NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Sabretooth2BR',NULL,'Sabretooth2BR',NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Sabretooth1BL',NULL,'Sabretooth1BL',NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Sabretooth2BL',NULL,'Sabretooth2BL',NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Backpack',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SandContainer',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GlassFurnace',1,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GlassFurnaceFlame',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GlassFurnaceOven',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GlassFurnaceFR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GlassFurnaceBL',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_Mosaic',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WorkshopTable_GlassIngot',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GlassIngot',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('RoughGlassGem',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MosaicTile',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MosaicFloor',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MosaicWall',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MosaicWallShort',0,'MosaicFloor',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BowsRackBL',0,'BowsRackB',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BowsRackFR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GlassWorkPipeBL',0,'GlassWorkPipeB',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GlassWorkPipeFR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GlassIngotStack',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('TargetBR',0,NULL,0,'0 0',NULL,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('TargetFL',0,NULL,0,'0 0',NULL,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('IngotMouldBL',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('IngotMouldFR',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('IngotMouldTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AlchemyVialsFL',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodCarverStockBL',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('WoodCarverStockFR',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ArrowBucket',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MortarAndPestle',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AlchemyStill',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CarpenterStock',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoneCarverTableTop',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OilMillFL',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OilMillBR',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('OilStack',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PaperPress',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PaperMakerTableTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GlassBottleStack',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GlassPanelStack',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AlchemyStillFrame',1,'AlchemyStillFrame1',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CarpenterTableTopBR',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CarpenterTableTopBR',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PaperRack',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CharcoalKilnBL',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CharcoalKilnFR',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CharcoalKilnFrame',1,'CharcoalKilnFrame1',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GlassBlowerStockBL',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GlassBlowerStockFR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SawMillTable',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SawMillBlade',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CoalPile',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LeatherCrate',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('DyeTableTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('DyedClothStack',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MarketStallBR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MarketStallFR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CartBR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CartFL',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CrateSealed',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('HideStack',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LeatherSuitFR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LeatherSuitBR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('LeatherSheet',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoneWorkTools',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('VatBL',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('VatFR',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MarketStallTopBR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MarketStallTopFR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AnimalStallBL',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AnimalStallFR',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('TanningVatBL',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('TanningVatFR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('CharcoalKilnFrame',1,'CharcoalKilnFrame1',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ChiselMasonFR',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ChiselMasonBR',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoneRubble',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('DyeVatBL',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('DyeVatFR',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StovePanTop',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MarketSackFR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MarketSackBL',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoolWood',0,NULL,0,'0 0',0,'Material','Wood',0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoneCarveBL',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoneCarveFR',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoveBL',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoveFR',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BrewVat',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('BrewVatTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('KitchenHearth',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('KitchenPot',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PotTop',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoveCookBL',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('StoveCookFR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FruitPress',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('KilnFlame',1,'KilnFlame1',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FurnaceFlame',1,'FurnaceFlame1',0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('TailorStand',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ClothStack',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SpinningWheelBR',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SpinningWheelFR',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SpinningWheelTopBR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SpinningWheelTopFR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ArmourSuitBR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ArmourSuitFR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrindStoneTop',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GrindStone',0,NULL,0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ThreadStack',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MeatStack',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SausageStack',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MeatGrinderBR',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MeatGrinderFL',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIChainmailArmorHead',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIChainmailArmorChest',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIChainmailArmorArms',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIChainmailArmorHands',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIChainmailArmorLegs',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIChainmailArmorFeet',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIPlateArmorHead',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIPlateArmorChest',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIPlateArmorArms',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIPlateArmorHands',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIPlateArmorLegs',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIPlateArmorFeet',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIHeavyPlateArmorHead',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIHeavyPlateArmorChest',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIHeavyPlateArmorArms',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIHeavyPlateArmorHands',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIHeavyPlateArmorLegs',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIHeavyPlateArmorFeet',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UILeatherArmorHead',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UILeatherArmorChest',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UILeatherArmorArms',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UILeatherArmorHands',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UILeatherArmorLegs',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UILeatherArmorFeet',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIBoneArmorHead',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIBoneArmorChest',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIBoneArmorArms',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIBoneArmorHands',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIBoneArmorLegs',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIBoneArmorFeet',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIEmptySlotHead',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIEmptySlotChest',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIEmptySlotArms',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIEmptySlotHands',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIEmptySlotLegs',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIEmptySlotFeet',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIEmptySlotShield',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIEmptySlotNeck',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIEmptySlotBack',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIEmptySlotRing',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIEmptySlotWeapon',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UITorch',0,NULL,0,'0 -16',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIPickaxe',0,NULL,0,'0 -16',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIPickaxeHead',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIPickaxeBase',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIFellingAxe',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIFellingAxeBase',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UIFellingAxeHead',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UISword',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UISwordBlade',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('UISwordBase',0,NULL,0,'0 -16',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Milk',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Wine',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Beer',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('TeaCup',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Cider',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Vinegar',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Sugar',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('DropCandy',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('ShepherdsPie',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('Biscuit',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PickledFruit',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FruitPreserve',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SmokedMeat',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SmokedSausage',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FruitBread',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FreshCheese',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('HardCheese',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('MeatPie',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PickledVegetable',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('PickledEgg',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('VegetablePreserve',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SmokedBird',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('SmokedFish',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FlatBread',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FruitPie',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('VeggiePie',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('FineMeatPie',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GlassJar',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('GlassBottle',0,NULL,0,'0 0',0,NULL,NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AutomatonTorso',0,'AutomatonTorsoFR',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AutomatonHead',0,'AutomatonHeadFR',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AutomatonArm',0,'AutomatonRightArmFR',0,'0 0',0,'Material',NULL,0); INSERT INTO "Sprites" ("ID","Anim","BaseSprite","HasRandom","Offset","Rot90","Tint","DefaultMaterial","HasTransp") VALUES ('AutomatonFoot',0,'AutomatonRightFootFR',0,'0 0',0,'Material',NULL,0); INSERT INTO "Spells" ("ID","EffectRequirements","Effects","Radius","SkillID") VALUES ('SpeedGrowth','Plant','PlantGrowth','HalfSkill','MagicNature'); INSERT INTO "Spells" ("ID","EffectRequirements","Effects","Radius","SkillID") VALUES ('RevealOre','EmbeddedMaterial','Reveal','Skill','MagicGeomancy'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Mining','Pickaxe','Stone'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Masonry',NULL,'Stone'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Stonecarving',NULL,'Stone'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Woodcutting','FellingAxe','Wood'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Carpentry',NULL,'Wood'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Woodcarving',NULL,'Wood'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Smelting',NULL,'Metal'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Blacksmithing',NULL,'Metal'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Metalworking',NULL,'Metal'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('WeaponCrafting',NULL,'Metal'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('ArmorCrafting',NULL,'Metal'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Gemcutting',NULL,'Gem'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('JewelryMaking',NULL,'Gem'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Weaving',NULL,'Cloth'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Tailoring',NULL,'Cloth'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Dyeing',NULL,'Cloth'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Pottery',NULL,'Misc Craft'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Leatherworking',NULL,'Misc Craft'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Bonecarving',NULL,'Misc Craft'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Prospecting',NULL,'Misc Craft'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Tinkering',NULL,'Engineer'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Machining',NULL,'Engineer'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Engineering',NULL,'Engineer'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Mechanic',NULL,'Engineer'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('AnimalHusbandry',NULL,'Rancher'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Butchery',NULL,'Rancher'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Fishing',NULL,'Rancher'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Horticulture',NULL,'Agriculture'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Farming',NULL,'Agriculture'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Cooking',NULL,'Agriculture'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Brewing',NULL,'Agriculture'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Construction',NULL,'Misc'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Hauling',NULL,'Misc'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Unarmed',NULL,'Combat'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Melee',NULL,'Combat'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Ranged',NULL,'Combat'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Thrown',NULL,'Combat'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Dodge',NULL,'Defense'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Block',NULL,'Defense'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Armor',NULL,'Defense'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Crossbow',NULL,'Combat'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Gun',NULL,'Combat'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Medic',NULL,'Doctor'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('Caretaking',NULL,'Doctor'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('MagicNature',NULL,'Magic'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('MagicGeomancy',NULL,'Magic'); INSERT INTO "Skills" ("ID","RequiredToolItemID","SkillGroup") VALUES ('GlassMaking',NULL,'Gem'); INSERT INTO "SkillGroups" ("ID","Color","Position","SkillID","Text") VALUES ('Stone','160 160 160 255',1.0,'Mining|Masonry|Stonecarving','Stone'); INSERT INTO "SkillGroups" ("ID","Color","Position","SkillID","Text") VALUES ('Wood','175 114 86 255',2.0,'Woodcutting|Carpentry|Woodcarving','Wood'); INSERT INTO "SkillGroups" ("ID","Color","Position","SkillID","Text") VALUES ('Metal','120 120 120 255',3.0,'Smelting|Blacksmithing|Metalworking|WeaponCrafting|ArmorCrafting','Metal'); INSERT INTO "SkillGroups" ("ID","Color","Position","SkillID","Text") VALUES ('Gem','112 155 175 255',4.0,'Gemcutting|JewelryMaking|GlassMaking','Gem'); INSERT INTO "SkillGroups" ("ID","Color","Position","SkillID","Text") VALUES ('Cloth','135 175 150 255',5.0,'Weaving|Tailoring|Dyeing','Cloth'); INSERT INTO "SkillGroups" ("ID","Color","Position","SkillID","Text") VALUES ('MiscCraft','165 105 175 255',6.0,'Pottery|Leatherworking|Bonecarving|Prospecting','Misc Craft'); INSERT INTO "SkillGroups" ("ID","Color","Position","SkillID","Text") VALUES ('Engineer','175 45 123 255',7.0,'Tinkering|Machining|Engineering|Mechanic','Engineer'); INSERT INTO "SkillGroups" ("ID","Color","Position","SkillID","Text") VALUES ('Rancher','134 175 105 255',8.0,'AnimalHusbandry|Butchery|Fishing','Rancher'); INSERT INTO "SkillGroups" ("ID","Color","Position","SkillID","Text") VALUES ('Agriculture','255 106 0 255',9.0,'Horticulture|Farming|Cooking|Brewing','Agriculture'); INSERT INTO "SkillGroups" ("ID","Color","Position","SkillID","Text") VALUES ('Doctor','173 6 29 255',10.0,'Medic|Caretaking','Doctor'); INSERT INTO "SkillGroups" ("ID","Color","Position","SkillID","Text") VALUES ('Misc','160 160 160 255',11.0,'Construction|Hauling','Misc'); INSERT INTO "SkillGroups" ("ID","Color","Position","SkillID","Text") VALUES ('Magic','175 175 200 255',12.0,'MagicNature|MagicGeomancy','Magic'); INSERT INTO "SkillGroups" ("ID","Color","Position","SkillID","Text") VALUES ('Combat','140 140 140 255',13.0,'Unarmed|Melee|Ranged|Thrown','Combat'); INSERT INTO "SkillGroups" ("ID","Color","Position","SkillID","Text") VALUES ('Defense','173 142 112 255',14.0,'Dodge|Block|Armor','Defense'); INSERT INTO "Seasons" ("ID","NextSeason","NumDays","SunRiseFirst","SunsetFirst") VALUES ('Spring','Summer',12.0,'6:14','18:23'); INSERT INTO "Seasons" ("ID","NextSeason","NumDays","SunRiseFirst","SunsetFirst") VALUES ('Summer','Autumn',12.0,'4:54','21:30'); INSERT INTO "Seasons" ("ID","NextSeason","NumDays","SunRiseFirst","SunsetFirst") VALUES ('Autumn','Winter',12.0,'6:52','19:14'); INSERT INTO "Seasons" ("ID","NextSeason","NumDays","SunRiseFirst","SunsetFirst") VALUES ('Winter','Spring',12.0,'8:12','16:04'); INSERT INTO "RandomMetals" ("ID","Copper","Tin","Malachite","Iron","Lead","Silver","Gold","Platinum") VALUES ('Granite',0,0,20,20,0,20,20,20); INSERT INTO "RandomMetals" ("ID","Copper","Tin","Malachite","Iron","Lead","Silver","Gold","Platinum") VALUES ('Basalt',0,0,0,10,0,30,30,30); INSERT INTO "RandomMetals" ("ID","Copper","Tin","Malachite","Iron","Lead","Silver","Gold","Platinum") VALUES ('Marble',30,30,20,0,0,20,0,0); INSERT INTO "RandomMetals" ("ID","Copper","Tin","Malachite","Iron","Lead","Silver","Gold","Platinum") VALUES ('Sandstone',50,50,0,0,0,0,0,0); INSERT INTO "RandomMetals" ("ID","Copper","Tin","Malachite","Iron","Lead","Silver","Gold","Platinum") VALUES ('Bauxite',20,20,20,20,20,0,0,0); INSERT INTO "RandomMetals" ("ID","Copper","Tin","Malachite","Iron","Lead","Silver","Gold","Platinum") VALUES ('Serpentine',10,10,20,20,20,10,10,0); INSERT INTO "RandomMetals" ("ID","Copper","Tin","Malachite","Iron","Lead","Silver","Gold","Platinum") VALUES ('Dirt',50,50,0,0,0,0,0,0); INSERT INTO "Quality" ("ID","Rank","Modifier") VALUES ('Acceptable',1,0.8); INSERT INTO "Quality" ("ID","Rank","Modifier") VALUES ('Average',2,1.0); INSERT INTO "Quality" ("ID","Rank","Modifier") VALUES ('Good',3,1.2); INSERT INTO "Quality" ("ID","Rank","Modifier") VALUES ('Excellent',4,1.5); INSERT INTO "Quality" ("ID","Rank","Modifier") VALUES ('Outstanding',5,1.8); INSERT INTO "Quality" ("ID","Rank","Modifier") VALUES ('Legendary',6,3.0); INSERT INTO "Quality" ("ID","Rank","Modifier") VALUES ('Bad',0,0.6); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Strawberry',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Strawberry',0,1.2,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Strawberry',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Carrot',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Carrot',0,1.5,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Carrot',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Onion',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Onion',0,1.3,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Onion',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Potato',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Potato',0,2.0,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Potato',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Cabbage',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Cabbage',0,1.0,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Cabbage',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Asparagus',0,2.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Asparagus',0,3.5,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Asparagus',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Broccoli',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Broccoli',0,2.5,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Broccoli',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Cauliflower',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Cauliflower',0,3.0,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Cauliflower',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Cucumber',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Cucumber',0,2.75,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Cucumber',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Garlic',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Garlic',0,3.5,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Garlic',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Parsnip',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Parsnip',0,2.0,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Parsnip',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Radish',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Radish',0,1.0,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Radish',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Turnip',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Turnip',0,2.0,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Turnip',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Lettuce',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Lettuce',0,2.0,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Lettuce',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Melon',0,2.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Melon',0,3.5,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Melon',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Sugarbeet',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Sugarbeet',0,2.0,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Sugarbeet',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Pumpkin',0,2.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Pumpkin',0,3.5,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Pumpkin',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Peas',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Peas',0,1.0,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Peas',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('BeetRoot',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('BeetRoot',0,2.0,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('BeetRoot',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Wheat',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Wheat',0,2.5,0.0,0,'GrownNoFruits',NULL,'PlantLarge',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Wheat',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantLargeWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Barley',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Barley',0,2.5,0.0,0,'GrownNoFruits',NULL,'PlantLarge',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Barley',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantLargeWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Oat',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Oat',0,2.6,0.0,0,'GrownNoFruits',NULL,'PlantLarge',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Oat',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantLargeWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Millet',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Millet',0,2.5,0.0,0,'GrownNoFruits',NULL,'PlantLarge',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Millet',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantLargeWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Cotton',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Cotton',0,2.0,0.0,0,'GrownNoFruits',NULL,'Plant',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Cotton',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Tea',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Tea',0,3.5,0.0,0,'GrownNoFruits',NULL,'PlantLarge',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Tea',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantLargeWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Tobacco',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Tobacco',0,3.5,0.0,0,'GrownNoFruits',NULL,'PlantLarge',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Tobacco',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantLargeWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Pineapple',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Pineapple',0,2.0,0.0,0,'GrownNoFruits',NULL,'PlantLarge',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Pineapple',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantLargeWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Corn',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Corn',0,3.5,0.0,0,'GrownNoFruits',NULL,'PlantLarge',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Corn',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantLargeWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Leek',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Leek',0,2.0,0.0,0,'GrownNoFruits',NULL,'PlantLarge',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Leek',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantLargeWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Beans',0,1.0,0.7,0,'Planted',NULL,'PlantGrowHelper2',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Beans',0,2.0,0.7,0,'GrownNoFruits',NULL,'PlantLarge',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Beans',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantLargeWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Blackberry',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Blackberry',0,2.0,0.0,0,'GrownNoFruits',NULL,'PlantLarge',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Blackberry',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantLargeWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Artichoke',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Artichoke',0,2.0,0.0,0,'GrownNoFruits',NULL,'PlantLarge',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Artichoke',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantLargeWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Bottlegourd',0,1.0,0.0,0,'Planted',NULL,'PlantGrowHelper2',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Bottlegourd',0,2.0,0.0,0,'GrownNoFruits',NULL,'PlantLarge',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Bottlegourd',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantLargeWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Grape',0,1.0,0.0,0,'Planted',NULL,'PlantGrowHelper3',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Grape',0,3.0,0.0,0,'GrownNoFruits',NULL,'PlantLarge',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Grape',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantLargeWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Tomato',0,1.0,0.0,0,'Planted',NULL,'PlantGrowHelper1',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Tomato',0,3.5,0.0,0,'GrownNoFruits',NULL,'PlantLarge',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Tomato',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantLargeWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Capsicum',0,1.0,0.0,0,'Planted',NULL,'PlantGrowHelper1',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Capsicum',0,2.0,0.0,0,'GrownNoFruits',NULL,'PlantLarge',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Capsicum',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantLargeWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Woad',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Woad',0,2.0,0.0,0,'GrownNoFruits',NULL,'PlantLarge',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Woad',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantLargeWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('DyersWeed',0,1.0,0.0,0,'Planted',NULL,'PlantedSoil',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('DyersWeed',0,2.0,0.0,0,'GrownNoFruits',NULL,'PlantLarge',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('DyersWeed',0,0.0,0.0,1,'GrownHasFruits',NULL,'PlantLargeWithFruit',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('PineTree',0,1.1,0.0,0,'Sapling',NULL,'Sapling',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('PineTree',0,6.5,0.0,0,'NoLeaves',NULL,'PineTreeNoLeaves',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('PineTree',1,0.0,0.0,0,'FullyGrown','PineTree','none',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('AppleTree',0,3.0,0.0,0,'Sapling',NULL,'Sapling',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('AppleTree',0,3.0,0.0,0,'NoLeaves',NULL,'AppleTreeNoLeaves',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('AppleTree',1,5.0,0.0,0,'FullyGrown','AppleTree','none',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('AppleTree',1,0.0,0.0,1,'FullyGrownWithFruit','AppleTree','none',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('OrangeTree',0,3.0,0.0,0,'Sapling',NULL,'Sapling',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('OrangeTree',0,3.0,0.0,0,'NoLeaves',NULL,'OrangeTreeNoLeaves',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('OrangeTree',1,5.0,0.0,0,'FullyGrown','OrangeTree','none',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('OrangeTree',1,0.0,0.0,1,'FullyGrownWithFruit','OrangeTree','none',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('OakTree',0,1.1,0.0,0,'Sapling',NULL,'Sapling',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('OakTree',0,6.5,0.0,0,'NoLeaves',NULL,'PineTreeNoLeaves',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('OakTree',1,0.0,0.0,0,'Sapling','OakTree','none',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('WillowTree',0,1.1,0.0,0,'Sapling',NULL,'Sapling',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('WillowTree',0,6.5,0.0,0,'NoLeaves',NULL,'PineTreeNoLeaves',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('WillowTree',1,0.0,0.0,0,'Sapling','WillowTree','none',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Mushroom1',1,0.0,0.0,0,'FullyGrown','Mushroom1','none',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Mushroom2',1,0.0,0.0,0,'FullyGrown','Mushroom2','none',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Mushroom3',1,0.0,0.0,0,'FullyGrown','Mushroom3','none',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('StrawMushroom',0,0.0,0.0,0,'FullyGrown',NULL,'StrawMushroom',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('WoodMushroom',0,0.0,0.0,0,'FullyGrown',NULL,'WoodMushroom',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('FibreMushroom',0,0.0,0.0,0,'FullyGrown',NULL,'FibreMushroom',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('GrainMushroom',0,0.0,0.0,0,'FullyGrown',NULL,'GrainMushroom',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('BirchTree',0,1.2,0.0,0,'Sapling',NULL,'Sapling',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('BirchTree',0,6.3,0.0,0,'NoLeaves',NULL,'BirchTree',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('BirchTree',1,0.0,0.0,0,'Sapling','BirchTree','none',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower1',0,2.0,0.0,0,'Planted',NULL,'Flower1Young',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower1',0,3.0,0.0,0,'GrownNoFruits',NULL,'Flower1',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower2',0,2.0,0.0,0,'Planted',NULL,'Flower2Young',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower2',0,3.0,0.0,0,'GrownNoFruits',NULL,'Flower2',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower3',0,2.0,0.0,0,'Planted',NULL,'Flower3Young',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower3',0,3.0,0.0,0,'GrownNoFruits',NULL,'Flower3',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower4',0,2.0,0.0,0,'Planted',NULL,'Flower4Young',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower4',0,3.0,0.0,0,'GrownNoFruits',NULL,'Flower4',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower5',0,2.0,0.0,0,'Planted',NULL,'Flower5Young',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower5',0,3.0,0.0,0,'GrownNoFruits',NULL,'Flower5',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower6',0,2.0,0.0,0,'Planted',NULL,'Flower6Young',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower6',0,3.0,0.0,0,'GrownNoFruits',NULL,'Flower6',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower7',0,2.0,0.0,0,'Planted',NULL,'Flower7Young',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower7',0,3.0,0.0,0,'GrownNoFruits',NULL,'Flower7',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower8',0,2.0,0.0,0,'Planted',NULL,'Flower8Young',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower8',0,3.0,0.0,0,'GrownNoFruits',NULL,'Flower8',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower1',0,0.0,0.0,1,'GrownHasFruits',NULL,'Flower1',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower2',0,0.0,0.0,1,'GrownHasFruits',NULL,'Flower2',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower3',0,0.0,0.0,1,'GrownHasFruits',NULL,'Flower3',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower4',0,0.0,0.0,1,'GrownHasFruits',NULL,'Flower4',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower5',0,0.0,0.0,1,'GrownHasFruits',NULL,'Flower5',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower6',0,0.0,0.0,1,'GrownHasFruits',NULL,'Flower6',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower7',0,0.0,0.0,1,'GrownHasFruits',NULL,'Flower7',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('Flower8',0,0.0,0.0,1,'GrownHasFruits',NULL,'Flower8',NULL,NULL); INSERT INTO "Plants_States" ("ID","Fell","GrowTime","GrowTimeDeviation","Harvest","ID2","Layout","SpriteID","HasAlpha","LightIntensity") VALUES ('GlowShroom',0,0.0,0.0,0,'FullyGrown',NULL,'CrystalShroom',1,8); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Strawberry',0.0,'Fruit','Strawberry'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Strawberry',0.0,'Seed','Strawberry'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Strawberry',0.5,'Seed','Strawberry'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Carrot',0.0,'Vegetable','Carrot'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Carrot',0.0,'Seed','Carrot'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Carrot',0.5,'Seed','Carrot'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Onion',0.0,'Vegetable','Onion'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Onion',0.0,'Vegetable','Onion'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Onion',0.0,'Seed','Onion'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Onion',0.3,'Seed','Onion'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Potato',0.0,'Vegetable','Potato'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Potato',0.0,'Vegetable','Potato'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Potato',0.0,'Seed','Potato'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Potato',0.3,'Seed','Potato'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Cabbage',0.0,'Vegetable','Cabbage'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Cabbage',0.0,'Seed','Cabbage'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Cabbage',0.5,'Seed','Cabbage'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Asparagus',0.0,'Vegetable','Asparagus'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Asparagus',0.0,'Seed','Asparagus'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Asparagus',0.5,'Seed','Asparagus'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Broccoli',0.0,'Vegetable','Broccoli'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Broccoli',0.0,'Seed','Broccoli'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Broccoli',0.5,'Seed','Broccoli'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Cauliflower',0.0,'Vegetable','Cauliflower'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Cauliflower',0.0,'Seed','Cauliflower'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Cauliflower',0.5,'Seed','Cauliflower'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Cucumber',0.0,'Vegetable','Cucumber'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Cucumber',0.0,'Seed','Cucumber'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Cucumber',0.5,'Seed','Cucumber'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Garlic',0.0,'Vegetable','Garlic'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Garlic',0.0,'Seed','Garlic'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Garlic',0.5,'Seed','Garlic'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Parsnip',0.0,'Vegetable','Parsnip'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Parsnip',0.0,'Seed','Parsnip'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Parsnip',0.5,'Seed','Parsnip'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Radish',0.0,'Vegetable','Radish'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Radish',0.0,'Seed','Radish'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Radish',0.5,'Seed','Radish'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Turnip',0.0,'Vegetable','Turnip'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Turnip',0.0,'Seed','Turnip'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Turnip',0.5,'Seed','Turnip'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Lettuce',0.0,'Vegetable','Lettuce'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Lettuce',0.0,'Seed','Lettuce'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Lettuce',0.5,'Seed','Lettuce'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Melon',0.0,'Fruit','Melon'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Melon',0.0,'Seed','Melon'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Melon',0.5,'Seed','Melon'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Sugarbeet',0.0,'Vegetable','Sugarbeet'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Sugarbeet',0.0,'Seed','Sugarbeet'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Sugarbeet',0.5,'Seed','Sugarbeet'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Pumpkin',0.0,'Fruit','Pumpkin'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Pumpkin',0.0,'Seed','Pumpkin'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Pumpkin',0.5,'Seed','Pumpkin'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Peas',0.0,'Vegetable','Peas'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Peas',0.0,'Seed','Peas'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Peas',0.5,'Seed','Peas'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('BeetRoot',0.0,'Vegetable','BeetRoot'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('BeetRoot',0.0,'Seed','BeetRoot'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('BeetRoot',0.5,'Seed','BeetRoot'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Wheat',0.0,'Grain','Wheat'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Wheat',0.0,'Straw','Wheat'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Wheat',0.0,'Seed','Wheat'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Wheat',0.3,'Seed','Wheat'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Barley',0.0,'Grain','Barley'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Barley',0.0,'Straw','Barley'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Barley',0.0,'Seed','Barley'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Barley',0.3,'Seed','Barley'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Oat',0.0,'Grain','Oat'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Oat',0.0,'Straw','Oat'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Oat',0.0,'Seed','Oat'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Oat',0.3,'Seed','Oat'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Millet',0.0,'Grain','Millet'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Millet',0.0,'Straw','Millet'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Millet',0.0,'Seed','Millet'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Millet',0.3,'Seed','Millet'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Cotton',0.0,'RawCloth','Cotton'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Cotton',0.0,'Seed','Cotton'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Cotton',0.3,'Seed','Cotton'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Tea',0.0,'Leaves','Tea'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Tea',0.0,'Seed','Tea'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Tea',0.5,'Seed','Tea'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Tobacco',0.0,'Leaves','Tobacco'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Tobacco',0.0,'Seed','Tobacco'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Tobacco',0.5,'Seed','Tobacco'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Pineapple',0.0,'Fruit','Pineapple'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Pineapple',0.0,'Seed','Pineapple'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Pineapple',0.5,'Seed','Pineapple'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Corn',0.0,'Vegetable','Corn'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Corn',0.0,'Seed','Corn'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Corn',0.5,'Seed','Corn'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Leek',0.0,'Vegetable','Leek'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Leek',0.0,'Seed','Leek'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Leek',0.5,'Seed','Leek'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Beans',0.0,'Vegetable','Beans'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Beans',0.0,'Seed','Beans'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Beans',0.5,'Seed','Beans'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Blackberry',0.0,'Berries','Blackberry'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Blackberry',0.0,'Seed','Blackberry'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Blackberry',0.5,'Seed','Blackberry'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Artichoke',0.0,'Vegetable','Artichoke'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Artichoke',0.0,'Seed','Artichoke'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Artichoke',0.5,'Seed','Artichoke'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Bottlegourd',0.0,'Vegetable','Bottlegourd'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Bottlegourd',0.0,'Seed','Bottlegourd'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Bottlegourd',0.5,'Seed','Bottlegourd'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Grape',0.0,'Berries','Grape'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Grape',0.0,'Seed','Grape'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Grape',0.5,'Seed','Grape'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Tomato',0.0,'Vegetable','Tomato'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Tomato',0.0,'Seed','Tomato'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Tomato',0.5,'Seed','Tomato'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Capsicum',0.0,'Vegetable','Capsicum'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Capsicum',0.0,'Seed','Capsicum'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Capsicum',0.5,'Seed','Capsicum'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Woad',0.0,'Leaves','Woad'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Woad',0.0,'Seed','Woad'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Woad',0.5,'Seed','Woad'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('DyersWeed',0.0,'Leaves','DyersWeed'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('DyersWeed',0.0,'Seed','DyersWeed'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('DyersWeed',0.5,'Seed','DyersWeed'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('AppleTree',0.0,'Fruit','Apple'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('OrangeTree',0.0,'Fruit','Orange'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Flower1',0.0,'Seed','Flower1'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Flower1',0.0,'Seed','Flower1'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Flower2',0.0,'Seed','Flower2'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Flower2',0.0,'Seed','Flower2'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Flower3',0.0,'Seed','Flower3'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Flower3',0.0,'Seed','Flower3'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Flower4',0.0,'Seed','Flower4'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Flower4',0.0,'Seed','Flower4'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Flower5',0.0,'Seed','Flower5'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Flower5',0.0,'Seed','Flower5'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Flower6',0.0,'Seed','Flower6'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Flower6',0.0,'Seed','Flower6'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Flower7',0.0,'Seed','Flower7'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Flower7',0.0,'Seed','Flower7'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Flower8',0.0,'Seed','Flower8'); INSERT INTO "Plants_OnHarvest_HarvestedItem" ("ID","Chance","ItemID","MaterialID") VALUES ('Flower8',0.0,'Seed','Flower8'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Strawberry','StateOneBack'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Carrot','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Onion','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Potato','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Cabbage','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Asparagus','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Broccoli','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Cauliflower','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Cucumber','StateOneBack'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Garlic','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Parsnip','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Radish','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Turnip','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Lettuce','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Melon','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Sugarbeet','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Pumpkin','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Peas','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('BeetRoot','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Wheat','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Barley','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Oat','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Millet','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Cotton','StateOneBack'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Tea','StateOneBack'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Tobacco','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Pineapple','StateOneBack'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Corn','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Leek','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Beans','StateOneBack'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Blackberry','StateOneBack'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Artichoke','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Bottlegourd','StateOneBack'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Grape','StateOneBack'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Tomato','StateOneBack'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Capsicum','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Woad','StateOneBack'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('DyersWeed','StateOneBack'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('AppleTree','ReduceFruitCount'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('OrangeTree','ReduceFruitCount'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Flower1','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Flower2','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Flower3','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Flower4','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Flower5','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Flower6','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Flower7','Destroy'); INSERT INTO "Plants_OnHarvest" ("ID","Action") VALUES ('Flower8','Destroy'); INSERT INTO "Plants_OnFell" ("ID","ItemID","MaterialID","Random") VALUES ('PineTree','RawWood','Pine',0.0); INSERT INTO "Plants_OnFell" ("ID","ItemID","MaterialID","Random") VALUES ('PineTree','Cone','Pine',3.0); INSERT INTO "Plants_OnFell" ("ID","ItemID","MaterialID","Random") VALUES ('AppleTree','RawWood','AppleWood',0.0); INSERT INTO "Plants_OnFell" ("ID","ItemID","MaterialID","Random") VALUES ('OrangeTree','RawWood','OrangeWood',0.0); INSERT INTO "Plants_OnFell" ("ID","ItemID","MaterialID","Random") VALUES ('OakTree','RawWood','Oak',0.0); INSERT INTO "Plants_OnFell" ("ID","ItemID","MaterialID","Random") VALUES ('OakTree','Oak','Oak',3.0); INSERT INTO "Plants_OnFell" ("ID","ItemID","MaterialID","Random") VALUES ('WillowTree','RawWood','Willow',0.0); INSERT INTO "Plants_OnFell" ("ID","ItemID","MaterialID","Random") VALUES ('WillowTree','Seed','Willow',2.0); INSERT INTO "Plants_OnFell" ("ID","ItemID","MaterialID","Random") VALUES ('BirchTree','RawWood','Birch',0.0); INSERT INTO "Plants_OnFell" ("ID","ItemID","MaterialID","Random") VALUES ('BirchTree','Seed','Birch',3.0); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Strawberry',1,NULL,'Sun','Spring|Summer|Autumn',NULL,0,'Winter','Strawberry',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Carrot',1,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Carrot',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Onion',1,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Onion',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Potato',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Potato',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Cabbage',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Cabbage',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Asparagus',0,NULL,'Sun','Spring|Summer|Autumn',NULL,0,'Winter','Asparagus',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Broccoli',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Broccoli',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Cauliflower',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Cauliflower',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Cucumber',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Cucumber',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Garlic',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Garlic',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Parsnip',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Parsnip',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Radish',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Radish',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Turnip',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Turnip',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Lettuce',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Lettuce',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Melon',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Melon',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Sugarbeet',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Sugarbeet',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Pumpkin',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Pumpkin',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Peas',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Peas',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('BeetRoot',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'BeetRoot',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Wheat',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Wheat',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Barley',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Barley',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Oat',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Oat',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Millet',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Millet',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Cotton',1,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Cotton',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Tea',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Tea',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Tobacco',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Tobacco',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Pineapple',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Pineapple',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Corn',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Corn',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Leek',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Leek',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Beans',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Beans',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Blackberry',1,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Blackberry',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Artichoke',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Artichoke',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Bottlegourd',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Bottlegourd',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Grape',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Grape',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Tomato',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Tomato',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Capsicum',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Capsicum',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Woad',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Woad',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('DyersWeed',0,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'DyersWeed',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('PineTree',0,NULL,'Sun','Spring|Summer|Autumn',NULL,0,NULL,'Pine',0.0,'Cone','PineTree','Tree'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('AppleTree',0,'Fruit','Sun','Spring|Summer|Autumn',NULL,0,'Winter','Apple',9.0,'Fruit','AppleTree','Tree'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('OrangeTree',0,'Fruit','Sun','Spring|Summer|Autumn',NULL,0,'Winter','Orange',9.0,'Fruit','OrangeTree','Tree'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('OakTree',0,NULL,'Sun','Spring|Summer|Autumn',NULL,0,NULL,'Oak',0.0,'Oak','OakTree212','Tree'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('WillowTree',0,NULL,'Sun','Spring|Summer|Autumn',NULL,0,NULL,'Willow',0.0,'Seed','WillowTree212','Tree'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Mushroom1',0,NULL,'Dark','Spring|Summer|Autumn|Winter',NULL,1,NULL,'Mushroom',0.0,NULL,NULL,'Mushroom'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Mushroom2',0,NULL,'Dark','Spring|Summer|Autumn|Winter',NULL,1,NULL,'Mushroom',0.0,NULL,NULL,'Mushroom'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Mushroom3',0,NULL,'Dark','Spring|Summer|Autumn|Winter',NULL,1,NULL,'Mushroom',0.0,NULL,NULL,'Mushroom'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('StrawMushroom',1,NULL,'Dark','Spring|Summer|Autumn|Winter',NULL,0,NULL,'Mushroom',0.0,'Spore',NULL,'Mushroom'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('WoodMushroom',1,NULL,'Dark','Spring|Summer|Autumn|Winter',NULL,0,NULL,'Mushroom',0.0,'Spore',NULL,'Mushroom'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('FibreMushroom',1,NULL,'Dark','Spring|Summer|Autumn|Winter',NULL,0,NULL,'Mushroom',0.0,'Spore',NULL,'Mushroom'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('GrainMushroom',1,NULL,'Dark','Spring|Summer|Autumn|Winter',NULL,0,NULL,'Mushroom',0.0,'Spore',NULL,'Mushroom'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('BirchTree',0,NULL,'Sun','Spring|Summer|Autumn',NULL,0,NULL,'Birch',0.0,'Seed','BirchTree','Tree'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Flower1',1,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Flower1',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Flower2',1,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Flower2',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Flower3',1,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Flower3',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Flower4',1,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Flower4',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Flower5',1,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Flower5',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Flower6',1,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Flower6',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Flower7',1,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Flower7',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('Flower8',1,NULL,'Sun','Spring|Summer|Autumn','Winter',0,NULL,'Flower8',0.0,'Seed',NULL,'Plant'); INSERT INTO "Plants" ("ID","AllowInWild","FruitItemID","GrowsIn","GrowsInSeason","IsKilledInSeason","IsLarge","LosesFruitInSeason","Material","NumFruitsPerSeason","SeedItemID","ToolButtonSprite","Type") VALUES ('GlowShroom',1,NULL,'Dark','Spring|Summer|Autumn|Winter',NULL,0,NULL,'Mushroom',0.0,'Spore',NULL,'Mushroom'); INSERT INTO "Needs_States_Modifiers" ("ID","Attribute","Type","Value_") VALUES ('SleepDeadTired','Dex','Attribute',-5.0); INSERT INTO "Needs_States_Modifiers" ("ID","Attribute","Type","Value_") VALUES ('SleepDeadTired','Happiness','Need',-20.0); INSERT INTO "Needs_States_Modifiers" ("ID","Attribute","Type","Value_") VALUES ('SleepVerySleepy','Dex','Attribute',-2.0); INSERT INTO "Needs_States_Modifiers" ("ID","Attribute","Type","Value_") VALUES ('HungerStarving','Str','Attribute',-5.0); INSERT INTO "Needs_States_Modifiers" ("ID","Attribute","Type","Value_") VALUES ('HungerStarving','Happiness','Need',-20.0); INSERT INTO "Needs_States_Modifiers" ("ID","Attribute","Type","Value_") VALUES ('HungerVeryHungry','Str','Attribute',-2.0); INSERT INTO "Needs_States_Modifiers" ("ID","Attribute","Type","Value_") VALUES ('HungerVeryHungry','Happiness','Need',-10.0); INSERT INTO "Needs_States_Modifiers" ("ID","Attribute","Type","Value_") VALUES ('HungerHungry','Str','Attribute',-1.0); INSERT INTO "Needs_States_Modifiers" ("ID","Attribute","Type","Value_") VALUES ('ThirstDehydrated','Int','Attribute',-5.0); INSERT INTO "Needs_States_Modifiers" ("ID","Attribute","Type","Value_") VALUES ('ThirstDehydrated','Happiness','Need',-20.0); INSERT INTO "Needs_States_Modifiers" ("ID","Attribute","Type","Value_") VALUES ('ThirstVeryThirsty','Int','Attribute',-2.0); INSERT INTO "Needs_States_Modifiers" ("ID","Attribute","Type","Value_") VALUES ('ThirstVeryThirsty','Happiness','Need',-10.0); INSERT INTO "Needs_States_Modifiers" ("ID","Attribute","Type","Value_") VALUES ('ThirstThirsty','Int','Attribute',-1.0); INSERT INTO "Needs_States" ("ID","Action","ID2","Priority","ThoughtBubble","Threshold") VALUES ('Sleep','FallAsleepOnSpot','DeadTired',3.0,'Sleeping',0.0); INSERT INTO "Needs_States" ("ID","Action","ID2","Priority","ThoughtBubble","Threshold") VALUES ('Sleep','Sleep','VerySleepy',2.0,NULL,25.0); INSERT INTO "Needs_States" ("ID","Action","ID2","Priority","ThoughtBubble","Threshold") VALUES ('Hunger','Die','StarvedToDeath',0.0,NULL,-100.0); INSERT INTO "Needs_States" ("ID","Action","ID2","Priority","ThoughtBubble","Threshold") VALUES ('Hunger','EatClosest','Starving',5.0,'Hungry',0.0); INSERT INTO "Needs_States" ("ID","Action","ID2","Priority","ThoughtBubble","Threshold") VALUES ('Hunger','Eat','VeryHungry',4.0,'Hungry',15.0); INSERT INTO "Needs_States" ("ID","Action","ID2","Priority","ThoughtBubble","Threshold") VALUES ('Hunger','EatBest','Hungry',3.0,'Hungry',30.0); INSERT INTO "Needs_States" ("ID","Action","ID2","Priority","ThoughtBubble","Threshold") VALUES ('Thirst','Die','DiedFromThirst',0.0,NULL,-100.0); INSERT INTO "Needs_States" ("ID","Action","ID2","Priority","ThoughtBubble","Threshold") VALUES ('Thirst','DrinkClosest','Dehydrated',5.0,'Thirsty',0.0); INSERT INTO "Needs_States" ("ID","Action","ID2","Priority","ThoughtBubble","Threshold") VALUES ('Thirst','Drink','VeryThirsty',4.0,'Thirsty',15.0); INSERT INTO "Needs_States" ("ID","Action","ID2","Priority","ThoughtBubble","Threshold") VALUES ('Thirst','DrinkBest','Thirsty',3.0,'Thirsty',30.0); INSERT INTO "Needs_States" ("ID","Action","ID2","Priority","ThoughtBubble","Threshold") VALUES ('Happiness',NULL,'VeryHappy',0.0,NULL,80.0); INSERT INTO "Needs_States" ("ID","Action","ID2","Priority","ThoughtBubble","Threshold") VALUES ('Happiness',NULL,'Happy',0.0,NULL,60.0); INSERT INTO "Needs_States" ("ID","Action","ID2","Priority","ThoughtBubble","Threshold") VALUES ('Happiness',NULL,'Unhappy',0.0,NULL,40.0); INSERT INTO "Needs_States" ("ID","Action","ID2","Priority","ThoughtBubble","Threshold") VALUES ('Happiness',NULL,'VeryUnhappy',0.0,NULL,20.0); INSERT INTO "Needs_States" ("ID","Action","ID2","Priority","ThoughtBubble","Threshold") VALUES ('Happiness',NULL,'Depressed',0.0,NULL,0.0); INSERT INTO "Needs" ("ID","BarColor","DecayPerMinute","GainFromSleep","Max_","Creature") VALUES ('Sleep','#FFFFA0',-0.03,0.35,100.0,'Gnome'); INSERT INTO "Needs" ("ID","BarColor","DecayPerMinute","GainFromSleep","Max_","Creature") VALUES ('Hunger','#FFA0A0',-0.025,0.0,100.0,'Gnome'); INSERT INTO "Needs" ("ID","BarColor","DecayPerMinute","GainFromSleep","Max_","Creature") VALUES ('Thirst','#A0A0FF',-0.025,0.0,100.0,'Gnome'); INSERT INTO "Needs" ("ID","BarColor","DecayPerMinute","GainFromSleep","Max_","Creature") VALUES ('Happiness','#C050C0',0.0,0.0,100.0,'Gnome'); INSERT INTO "Needs" ("ID","BarColor","DecayPerMinute","GainFromSleep","Max_","Creature") VALUES ('Fuel','#707070',-0.5,0.0,3000.0,'Automaton'); INSERT INTO "Names" ("ID","Gender") VALUES ('bartleby','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('bartlett','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('beeblebrox','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('bembledack','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('bingledack','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('blart','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('blerg','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('bunwalla','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('dambleban','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('dangle','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('dindlebert','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('dinkledoodle','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('dimperdoodle','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('doodle','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('engelbert','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('fishtybuns','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('fistelvase','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('fizban','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('fizzy','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('fondle','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('foodle','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('jeff','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('gnapoleon','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('gnemo','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('gneo','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('gnick','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('gnomeo','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('hugh','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('humperdinck','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('humptyback','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('klingybun','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('kringelbert','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('perrywinkle','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('slartibartfast','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('steviebuns','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('versenwald','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('vingelbert','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('wangledack','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('wingelbert','M '); INSERT INTO "Names" ("ID","Gender") VALUES ('wingledanck','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('winkle','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('wizzy','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('wocket','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('yingybert','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('zangelbert','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('zifnab','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('zindledack','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('zingelbert','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('zoltan','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('grimm','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('twosprocket','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('gashweld','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('fizwhistle','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('wobbletop','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('fizzlespit','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('fizzwizzle','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('fizzlebizz','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('mixilpixil','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('spark','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('whindlebolt','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('fizzlespinner','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('booms','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('doohickey','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('thistlefuzz','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('baubbletump','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('mekkatorque','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('tinker','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('lemkenilli','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('twizzlefixit','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('Ulf Ulfson son of Ulf','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('hinkles','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('gimrizz','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('gimble','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('gaffer','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('flickin','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('fizzle','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('fimble','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('dink','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('deek','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('crazzle','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('craggle','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('cog','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('caz','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('boog','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('binjy','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('bingus','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('bimble','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('billibub','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('belbi','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('loosegrip','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('togglevolt','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('gyromate','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('spindlenut','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('wizzle','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('wemble','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('twilbur','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('tickin','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('spackle','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('rizzle','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('razzle','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('pithwick','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('ozzie','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('milo','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('mazzer','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('gabriel','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('abibo','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('ado','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('amos','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('anno','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('axel','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('azas','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('bacchus','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('baltram','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('bardo','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('barlow','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('barr','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('basil','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('bean','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('bruno','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('casper','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('cass','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('cato','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('cecil','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('chester','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('ciro','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('conan','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('crispin','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('cyr','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('dewey','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('didymus','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('dion','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('dolph','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('drogo','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('elmer','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('enzio','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('eunus','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('eustace','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('ewald','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('fabian','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('falco','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('felix','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('fergus','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('festus','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('filbert','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('finbarr','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('fintan','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('fulk','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('gall','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('gaspar','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('gaston','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('gene','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('giles','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('gummar','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('gus','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('hero','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('hugo','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('iago','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('igor','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('ivar','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('jasper','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('jerome','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('jesse','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('joris','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('justus','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('karl','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('kellan','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('klas','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('knute','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('kurt','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('linus','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('lipo','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('lullus','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('mace','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('manfred','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('melvin','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('merry','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('milo','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('naldo','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('napper','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('ned','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('nestor','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('odo','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('olaf','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('omer','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('otto','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('pambo','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('pepin','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('pinian','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('poppo','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('remi','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('rex','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('rufus','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('titus','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('tito','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('ugo','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('ulmer','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('ursus','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('west','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('zeno','M'); INSERT INTO "Names" ("ID","Gender") VALUES ('bartlett','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('beeblebrox','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('bembledack','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('bingledack','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('bunwalla','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('dangle','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('dindlebert','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('dinkledoodle','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('dimperdoodle','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('doodle','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('engelbert','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('fishtybuns','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('fistelvase','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('fizban','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('fizzy','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('fondle','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('foodle','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('jeff','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('klingybun','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('perrywinkle','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('versenwald','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('wangledack','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('wingledanck','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('winkle','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('wizzy','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('zifnab','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('zindledack','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('twosprocket','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('gashweld','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('fizwhistle','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('wobbletop','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('fizzlespit','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('fizzwizzle','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('fizzlebizz','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('mixilpixil','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('spark','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('whindlebolt','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('fizzlespinner','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('booms','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('doohickey','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('thistlefuzz','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('baubbletump','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('mekkatorque','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('tinker','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('lemkenilli','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('twizzlefixit','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('jinky','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('jennabink','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('hinkles','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('flickin','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('fizzle','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('fimble','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('dink','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('deek','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('caz','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('boog','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('bipsi','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('binni','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('bink','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('binjy','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('bingus','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('bimble','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('belbi','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('trini','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('togglevolt','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('bubblefizz','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('spindlenut','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('wizzle','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('wemble','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('twilbur','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('trixie','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('tink','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('tilli','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('tickin','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('tally','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('sprite','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('spackle','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('rizzle','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('rixa','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('rillie','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('razzle','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('pithwick','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('ozzie','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('minx','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('milo','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('milli','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('mazzer','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('jeska','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('azas','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('basil','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('bean','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('cass','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('cato','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('cecil','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('crispin','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('cyr','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('dewey','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('dion','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('falco','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('hero','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('jasper','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('jesse','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('justus','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('kellan','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('merry','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('pambo','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('pepin','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('pinian','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('poppo','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('remi','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('west','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('zeno','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('ada','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('alba','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('aura','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('ava','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('balbina','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('bassa','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('belina','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('bess','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('bobilia','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('cera','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('clara','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('cleo','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('cyra','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('daisy','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('daria','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('enid','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('etta','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('eve','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('fay','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('fifi','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('flora','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('gemma','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('gladys','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('goldie','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('gwen','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('hallie','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('hedwig','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('hester','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('june','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('lelia','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('mimi','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('myrtle','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('nanette','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('nell','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('nessa','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('nimmia','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('nona','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('ola','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('olive','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('oona','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('pearl','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('pia','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('polly','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('rose','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('ruby','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('silva','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('stella','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('tatiana','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('thea','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('tilda','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('ursula','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('violet','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('wanda','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('xina','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('zara','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('zita','F'); INSERT INTO "Names" ("ID","Gender") VALUES ('grog','M'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Faction','Compound_Noun_Singular'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Faction','The|Adjective|Noun_Singular'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Faction','Land|of|Noun_Plural'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Faction','The|Adjective|Kingdom'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Faction','The|Noun_Singular|Kingdom'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Faction','The|Verb_PastParticiple|Land'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Squad','The|Verb_PresentParticiple|Noun_Plural'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Squad','The|Verb_PresentParticiple|Noun_Plural|Of|Noun_Singular'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Squad','The|Adjective|Noun_Plural'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Squad','The|Verb_PastParticiple|Noun_Plural'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Squad','The|Adjective|Noun_Plural|Of|Noun_Singular'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Squad','Adjective|Noun_Plural'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Squad','Verb_PastParticiple|Noun_Plural'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Squad','The|Adjective|ActionNoun_Plural'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Squad','Adjective|ActionNoun_Plural'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Squad','The|Adjective|ActionNoun_Plural|Of|Noun_Singular'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Squad','The|Compound_ActionNoun_Plural|Of|Noun_Singular'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Squad','The|Compound_ActionNoun_Plural'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Item','The|Noun_Singular|Of|The|Noun'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Item','The|Adjective|Noun_Singular|Of|The|Noun'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Item','The|ActionNoun_Singular|Of|The|Noun'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Item','The|Adjective|Noun_Singular'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Item','The|Adjective|ActionNoun_Singular'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Item','The|Verb_PresentParticiple|Of|The|Noun'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Item','The|Verb_PresentParticiple|Noun_Singular'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Item','The|Verb_PastParticiple|Noun_Singular'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Item','The|Verb_PastParticiple|ActionNoun'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Item','Compound_Noun_Singular'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Item','The|Compound_Noun_Singular'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Item','Compound_ActionNoun_Singular'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Item','The|Compound_ActionNoun_Singular'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Item','The|Compound_Verb_PresentParticiple'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Item','The|GenericNoun|Of|Noun'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Item','The|Verb_PresentParticiple|Noun'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('Item','The|Adjective|Noun'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('EnemyName','ProperNoun|The|Compound_ActionNoun_Singular'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('EnemyName','ProperNoun|The|ActionNoun_Singular'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('EnemyName','ProperNoun|The|Noun_Singular'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('EnemyName','ProperNoun|The|Verb_PresentParticiple|Noun_Singular'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('EnemyName','ProperNoun|The|GenericNoun|Of|Noun'); INSERT INTO "Namerules_Rule" ("ID","Part") VALUES ('EnemyName','ProperNoun|The|Adjective|Noun'); INSERT INTO "Namerules" ("ID") VALUES ('Faction'); INSERT INTO "Namerules" ("ID") VALUES ('Squad'); INSERT INTO "Namerules" ("ID") VALUES ('Item'); INSERT INTO "Namerules" ("ID") VALUES ('EnemyName'); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',1,30); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',2,35); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',3,40); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',4,45); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',5,50); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',6,55); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',7,60); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',8,65); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',9,70); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',10,75); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',11,80); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',12,85); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',13,90); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',14,95); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',15,100); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',16,105); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',17,110); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',18,115); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',19,120); INSERT INTO "MoveSpeed" ("Creature","Skill","Speed") VALUES ('Gnome',20,125); INSERT INTO "Monsters_Levels" ("ID","Level","Sprite") VALUES ('Goblin',0.0,'Goblin'); INSERT INTO "Monsters" ("ID","BehaviorTree","Food") VALUES ('Goblin','Monster','Vegetable'); INSERT INTO "Monsters" ("ID","BehaviorTree","Food") VALUES ('MantWorker','MantWorker',NULL); INSERT INTO "Monsters" ("ID","BehaviorTree","Food") VALUES ('MantSoldier','MantSoldier',NULL); INSERT INTO "Monsters" ("ID","BehaviorTree","Food") VALUES ('MantQueen','MantQueen',NULL); INSERT INTO "Missions" ("ID","TypeInt","MinGnomes","MaxGnomes","Target","Actions") VALUES ('Explore',1,1,1,NULL,NULL); INSERT INTO "Missions" ("ID","TypeInt","MinGnomes","MaxGnomes","Target","Actions") VALUES ('Spy',2,1,1,'Kingdom',NULL); INSERT INTO "Missions" ("ID","TypeInt","MinGnomes","MaxGnomes","Target","Actions") VALUES ('Emissary',3,1,1,'Kingdom','Improve|Insult|InviteTrader|InviteAmbassador'); INSERT INTO "Missions" ("ID","TypeInt","MinGnomes","MaxGnomes","Target","Actions") VALUES ('Raid',4,3,5,'Kingdom',NULL); INSERT INTO "Missions" ("ID","TypeInt","MinGnomes","MaxGnomes","Target","Actions") VALUES ('Sabotage',5,3,5,'Kingdom',NULL); INSERT INTO "Mechanism" ("ID","GUI","Buildable","Item","Sprite","MaxFuel","ProducePower","ConsumePower","Anim","WallSpriteOn","WallSpriteOff","FloorSpriteOn","FloorSpriteOff","EffectOn","EffectOff") VALUES ('GearBox',NULL,1,NULL,NULL,0,0,0,'false',NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Mechanism" ("ID","GUI","Buildable","Item","Sprite","MaxFuel","ProducePower","ConsumePower","Anim","WallSpriteOn","WallSpriteOff","FloorSpriteOn","FloorSpriteOff","EffectOn","EffectOff") VALUES ('Axle',NULL,1,NULL,NULL,0,0,0,'true',NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Mechanism" ("ID","GUI","Buildable","Item","Sprite","MaxFuel","ProducePower","ConsumePower","Anim","WallSpriteOn","WallSpriteOff","FloorSpriteOn","FloorSpriteOff","EffectOn","EffectOff") VALUES ('VerticalAxle',NULL,1,'Axle','AxleUD1',0,0,0,'true',NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Mechanism" ("ID","GUI","Buildable","Item","Sprite","MaxFuel","ProducePower","ConsumePower","Anim","WallSpriteOn","WallSpriteOff","FloorSpriteOn","FloorSpriteOff","EffectOn","EffectOff") VALUES ('SteamEngine','Active|Fuel',1,NULL,NULL,5000,25,0,'true',NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Mechanism" ("ID","GUI","Buildable","Item","Sprite","MaxFuel","ProducePower","ConsumePower","Anim","WallSpriteOn","WallSpriteOff","FloorSpriteOn","FloorSpriteOff","EffectOn","EffectOff") VALUES ('Lever','Active',1,NULL,NULL,0,0,0,'false','LeverOn','LeverOff',NULL,NULL,NULL,NULL); INSERT INTO "Mechanism" ("ID","GUI","Buildable","Item","Sprite","MaxFuel","ProducePower","ConsumePower","Anim","WallSpriteOn","WallSpriteOff","FloorSpriteOn","FloorSpriteOff","EffectOn","EffectOff") VALUES ('Pump',NULL,0,NULL,NULL,0,0,10,'true',NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Mechanism" ("ID","GUI","Buildable","Item","Sprite","MaxFuel","ProducePower","ConsumePower","Anim","WallSpriteOn","WallSpriteOff","FloorSpriteOn","FloorSpriteOff","EffectOn","EffectOff") VALUES ('MechanicalWall','Invert',1,NULL,NULL,0,0,5,'false','MechanicalWallOpen','MechanicalWallClosed',NULL, NULL,'Floor','Wall'); INSERT INTO "Mechanism" ("ID","GUI","Buildable","Item","Sprite","MaxFuel","ProducePower","ConsumePower","Anim","WallSpriteOn","WallSpriteOff","FloorSpriteOn","FloorSpriteOff","EffectOn","EffectOff") VALUES ('PressurePlate','Invert',1,NULL,NULL,0,0,0,'false',NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "MaterialToToolLevel" ("ID","RequiredToolLevel","ToolLevel") VALUES ('Wood',1.0,1.0); INSERT INTO "MaterialToToolLevel" ("ID","RequiredToolLevel","ToolLevel") VALUES ('Dirt',1.0,0.0); INSERT INTO "MaterialToToolLevel" ("ID","RequiredToolLevel","ToolLevel") VALUES ('Sand',1.0,0.0); INSERT INTO "MaterialToToolLevel" ("ID","RequiredToolLevel","ToolLevel") VALUES ('Clay',1.0,0.0); INSERT INTO "MaterialToToolLevel" ("ID","RequiredToolLevel","ToolLevel") VALUES ('FlintStone',1.0,2.0); INSERT INTO "MaterialToToolLevel" ("ID","RequiredToolLevel","ToolLevel") VALUES ('Stone',2.0,2.0); INSERT INTO "MaterialToToolLevel" ("ID","RequiredToolLevel","ToolLevel") VALUES ('Basalt',3.0,2.0); INSERT INTO "MaterialToToolLevel" ("ID","RequiredToolLevel","ToolLevel") VALUES ('Granite',4.0,2.0); INSERT INTO "MaterialToToolLevel" ("ID","RequiredToolLevel","ToolLevel") VALUES ('Sandstone',1.0,1.0); INSERT INTO "MaterialToToolLevel" ("ID","RequiredToolLevel","ToolLevel") VALUES ('Copper',2.0,2.0); INSERT INTO "MaterialToToolLevel" ("ID","RequiredToolLevel","ToolLevel") VALUES ('Bronze',3.0,3.0); INSERT INTO "MaterialToToolLevel" ("ID","RequiredToolLevel","ToolLevel") VALUES ('Iron',3.0,4.0); INSERT INTO "MaterialToToolLevel" ("ID","RequiredToolLevel","ToolLevel") VALUES ('Steel',4.0,5.0); INSERT INTO "MaterialToToolLevel" ("ID","RequiredToolLevel","ToolLevel") VALUES ('Diamond',5.0,6.0); INSERT INTO "MaterialToToolLevel" ("ID","RequiredToolLevel","ToolLevel") VALUES ('Platinum',4.0,5.0); INSERT INTO "MaterialToToolLevel" ("ID","RequiredToolLevel","ToolLevel") VALUES ('Tin',1.0,2.0); INSERT INTO "MaterialToToolLevel" ("ID","RequiredToolLevel","ToolLevel") VALUES ('Metal',2.0,2.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('None','255 255 255 240',0.0,'None',0.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Grass','255 255 255 255',0.0,'Plant',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Dirt','171 125 35 255',0.5,'Soil',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Sand','235 235 100 255',0.5,'Sand',1.2); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Clay','144 88 78 255',0.5,'Clay',1.2); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Granite','128 128 128 255',0.7,'Stone',1.5); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Basalt','64 64 64 255',0.7,'Stone',1.8); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Marble','255 255 255 255',0.7,'Stone',1.3); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Sandstone','192 118 67 255',0.7,'Stone',1.2); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Bauxite','127 63 63 255',0.7,'Stone',1.3); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Serpentine','137 168 106 255',0.7,'Stone',1.5); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('LapisLazuli','75 93 255 255',0.7,'Stone',1.7); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Obsidian','16 16 16 255',3.4,'Stone',5.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Water','0 0 255 128',0.1,'Liquid',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Lava','255 90 0 255',1.0,'Liquid',0.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Pine','199 134 54 255',0.5,'Wood',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Oak','169 104 54 255',0.7,'Wood',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('AppleWood','199 101 54 255',0.5,'Wood',1.5); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Birch','242 210 105 255',0.5,'Wood',2.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Coal','64 64 64 255',0.5,'Coal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Copper','214 74 0 255',1.0,'Metal',6.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Malachite','28 140 70 255',1.0,'Metal',10.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Tin','127 127 127 255',0.5,'Metal',6.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Bronze','166 125 61 255',1.9,'Metal',15.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Iron','76 76 76 255',3.4,'Metal',10.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Steel','70 130 180 255',5.2,'Metal',25.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Lead','118 136 143 255',0.75,'Metal',15.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Silver','192 192 192 255',0.75,'Metal',50.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Gold','255 215 0 255',0.5,'Metal',75.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('RoseGold','183 110 121 255',0.5,'Metal',60.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Platinum','229 228 226 255',0.5,'Metal',90.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('FlintStone','10 10 10 255',0.7,'Gem',3.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Emerald','25 233 25 255',3.0,'Gem',4.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Amethyst','173 15 255 255',3.0,'Gem',4.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Diamond','255 255 255 255',3.0,'Gem',10.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Sapphire','0 0 160 255',3.0,'Gem',4.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Ruby','255 0 0 255',3.0,'Gem',4.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Amber','239 75 5 255',3.0,'Gem',2.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Beryll','0 154 58 255',3.0,'Gem',4.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Topaz','255 255 128 255',3.0,'Gem',4.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Wool','255 255 255 255',0.1,'Cloth',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('OrangeWood','198 161 115 255',0.5,'Wood',2.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Mushroom','255 255 255 255',0.1,'Plant',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Ceramic','164 79 58 255',0.7,'Stone',2.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Glass','255 255 255 255',0.1,'Glass',2.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Chicken','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Emu','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Yak','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Sheep','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Pig','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Cow','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Rabbit','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Llama','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Duck','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Goose','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Dog','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Cat','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Porcupine','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Fox','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Wolf','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Deer','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Badger','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('BlackBear','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Goat','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Squirrel','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('GreyFish','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('GreenFish','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('ChickenBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('EmuBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('YakBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('SheepBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('PigBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('CowBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('RabbitBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('LlamaBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('DuckBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('GooseBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('DogBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('CatBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('PorcupineBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('FoxBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('WolfBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('DeerBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('GoatBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('BadgerBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('BlackBearBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('SquirrelBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('GreyFishBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('GreenFishBone','255 255 255 255',0.1,'Bone',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('JobYellow','255 255 0 60',NULL,'System',0.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('JobGreen','128 255 128 60',NULL,'System',0.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('JobPurple','255 0 255 60',NULL,'System',0.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('RendererStockpile','200 255 50 64',NULL,'System',0.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('RendererGrove','128 255 255 64',NULL,'System',0.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('RendererFarm','255 128 255 64',NULL,'System',0.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('RendererWorkshop','245 140 180 64',NULL,'System',0.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Green','0 255 0 255',NULL,'Dye',2.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Red','255 0 0 255',NULL,'Dye',2.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Blue','0 0 255 255',NULL,'Dye',2.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Purple','255 0 255 255',NULL,'Dye',2.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Cyan','0 255 255 255',NULL,'Dye',2.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Yellow','255 255 0 255',NULL,'Dye',2.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Grey','120 120 120 255',NULL,'Dye',2.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Goblin','255 255 255 255',NULL,'Monster',2.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Strawberry','255 255 255 255',0.1,'Fruit',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Apple','255 255 255 255',0.1,'Fruit',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Orange','255 255 255 255',0.1,'Fruit',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Wheat','253 196 23 255',0.25,'Grain',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Cotton','255 255 255 255',0.1,'Cloth',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Carrot','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Onion','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Potato','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Cabbage','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Asparagus','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Broccoli','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Cauliflower','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Cucumber','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Garlic','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Parsnip','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Radish','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Turnip','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Lettuce','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Melon','255 255 255 255',0.1,'Fruit',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Sugarbeet','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Pumpkin','255 255 255 255',0.1,'Fruit',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Peas','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Tea','255 255 255 255',0.1,'Leaves',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Tobacco','255 255 255 255',0.1,'Leaves',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Pineapple','255 255 255 255',0.1,'Fruit',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Leek','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Corn','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Beans','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Blackberry','255 255 255 255',0.1,'Berries',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Artichoke','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Bottlegourd','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Tomato','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Capsicum','255 255 255 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Grape','255 255 255 255',0.1,'Berries',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('BeetRoot','255 0 0 255',0.1,'Vegetable',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Woad','255 255 255 255',0.1,'Leaves',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('DyersWeed','255 255 255 255',0.1,'Leaves',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Barley','255 255 255 255',0.1,'Grain',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Oat','255 255 255 255',0.1,'Grain',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Millet','255 255 255 255',0.1,'Grain',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Flower1','255 255 255 255',0.1,'Flower',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Flower2','255 255 255 255',0.1,'Flower',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Flower3','255 255 255 255',0.1,'Flower',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Flower4','255 255 255 255',0.1,'Flower',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Flower5','255 255 255 255',0.1,'Flower',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Flower6','255 255 255 255',0.1,'Flower',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Flower7','255 255 255 255',0.1,'Flower',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Flower8','255 255 255 255',0.1,'Flower',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Bee','255 255 255 255',0.1,'Animal',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('YakLeather','255 255 255 255',0.5,'Leather',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('CowLeather','255 255 255 255',0.5,'Leather',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('EmuLeather','255 255 255 255',0.5,'Leather',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('BearLeather','255 255 255 255',0.5,'Leather',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('WolfLeather','255 255 255 255',0.5,'Leather',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('StagLeather','255 255 255 255',0.5,'Leather',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Glass','255 255 255 255',0.8,'Glass',1.0); INSERT INTO "Materials" ("ID","Color","Strength","Type","Value") VALUES ('Willow','189 124 74 255',0.7,'Wood',1.0); INSERT INTO "Magic" ("ID","Color","Spells") VALUES ('Nature','255 106 0 255','SpeedGrowth'); INSERT INTO "Magic" ("ID","Color","Spells") VALUES ('Geomancy','175 114 86 255','RevealOre'); INSERT INTO "Lairs_Spawns" ("ID","Type","Offset","Level","Rotation","Gender") VALUES ('MantLair1','Queen','5 5 0',0,0,2); INSERT INTO "Lairs_Spawns" ("ID","Type","Offset","Level","Rotation","Gender") VALUES ('MantLair1','Soldier','7 3 0',0,0,1); INSERT INTO "Lairs_Spawns" ("ID","Type","Offset","Level","Rotation","Gender") VALUES ('MantLair1','Soldier','3 3 0',0,0,1); INSERT INTO "Lairs_Spawns" ("ID","Type","Offset","Level","Rotation","Gender") VALUES ('MantLair1','Soldier','3 7 0',0,0,1); INSERT INTO "Lairs_Spawns" ("ID","Type","Offset","Level","Rotation","Gender") VALUES ('MantLair1','Soldier','7 7 0',0,0,1); INSERT INTO "Lairs_Spawns" ("ID","Type","Offset","Level","Rotation","Gender") VALUES ('MantLair1','Soldier','11 15 3',0,0,1); INSERT INTO "Lairs_Spawns" ("ID","Type","Offset","Level","Rotation","Gender") VALUES ('MantLair1','Soldier','12 15 3',0,0,1); INSERT INTO "Lairs_Spawns" ("ID","Type","Offset","Level","Rotation","Gender") VALUES ('MantLair1','Soldier','11 16 3',0,0,1); INSERT INTO "Lairs_Spawns" ("ID","Type","Offset","Level","Rotation","Gender") VALUES ('MantLair1','Soldier','12 16 3',0,0,1); INSERT INTO "Lairs" ("ID","Type","Size","Layout") VALUES ('MantLair1','Mant','16 23 4','2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 1 1 2 3 3 2 2 2 2 2 2 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 2 2 2 2 2 2 2 2 0 0 2 1 1 1 1 1 2 2 2 2 2 2 2 2 1 1 2 2 1 1 1 2 2 2 2 2 2 2 2 2 1 1 2 2 2 1 2 2 2 2 2 2 2 2 2 2 1 1 2 2 2 1 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 3 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 3 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 1 2 2 1 1 2 2 2 2 2 2 2 2 2 2 1 1 1 2 1 1 2 2 1 2 2 2 2 2 2 1 1 1 1 1 1 1 2 1 1 1 2 2 2 2 2 2 1 1 1 2 1 1 1 1 1 1 1 2 2 2 2 2 2 1 2 2 1 1 2 1 1 1 2 2 2 2 2 2 2 2 2 2 1 1 2 2 1 2 2 2 2 2 2 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 1 1 1 2 2 2 1 1 1 2 2 2 2 2 2 2 1 1 2 2 1 2 2 1 1 2 2 2 2 2 2 2 1 1 1 1 1 1 2 1 1 2 2 2 2 2 2 2 1 1 2 2 1 2 2 3 3 2 2 2 2 2 2 2 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('Fish',NULL,200,NULL,'0 0 0','Fish'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('Mine',NULL,50,NULL,'0 0 0','MineWall'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('DigHole',NULL,20,NULL,'0 0 0','DigHole'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('ExplorativeMine',NULL,50,NULL,'0 0 0','ExplorativeMineWall'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('RemoveRamp',NULL,50,NULL,'0 0 0','RemoveRamp'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('RemoveFloor',NULL,50,NULL,'0 0 0','MineFloor'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('Deconstruct',NULL,50,NULL,'0 0 0','Deconstruct'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('RemovePlant',NULL,10,NULL,'0 0 0','RemovePlant'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('MineStairsUp',NULL,0,NULL,'0 0 0','ConstructDugStairs'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('DigStairsDown',NULL,50,NULL,'0 0 -1','ConstructDugStairs'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('DigRampDown','Ramp',50,NULL,'0 0 -1','ConstructDugRamp'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('BuildWall','Wall',50,'SelectedMaterial','0 0 0','Construct'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('BuildFence','Fence',50,'SelectedMaterial','0 0 0','Construct'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('BuildFloor','Floor',20,'SelectedMaterial','0 0 0','Construct'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('BuildWallFloor','WallFloor',100,'SelectedMaterial','0 0 0','Construct'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('BuildStairs','Stairs',30,'SelectedMaterial','0 0 0','Construct'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('BuildScaffold','Scaffold',10,'SelectedMaterial','0 0 0','Construct'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('BuildRamp','ThatchRamp',20,'SelectedMaterial','0 0 0','Construct'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('BuildRampCorner','RampCorner',10,'SelectedMaterial','0 0 0','Construct'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('BuildWorkshop','Workshop',20,'SelectedMaterial','0 0 0','Construct'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('BuildItem','Item',10,'SelectedMaterial','0 0 0','Construct'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('BuildStorage','Storage',10,'SelectedMaterial','0 0 0','Construct'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('BuildFurniture','Furniture',10,NULL,'0 0 0','Construct'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('BuildDoor','Door',10,NULL,'0 0 0','Construct'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('BuildTorch','Torch',10,NULL,'0 0 0','Construct'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('Harvest',NULL,10,NULL,'0 0 0','Harvest'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('HarvestTree',NULL,10,NULL,'0 0 0','Harvest'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('PlantTree',NULL,10,NULL,'0 0 0','PlantTree'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('Till',NULL,10,NULL,'0 0 0','Till'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('Plant',NULL,10,NULL,'0 0 0','Plant'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('PlantFarm',NULL,10,NULL,'0 0 0','Plant'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('FellTree',NULL,10,NULL,'0 0 0','FellTree'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('CraftAtWorkshop',NULL,'$Craft',NULL,'0 0 0','Craft'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('ManMarketStall',NULL,10000,NULL,'0 0 0','Trade'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('ButcherCorpse',NULL,50,NULL,'0 0 0','ButcherCorpse'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('ButcherFish',NULL,50,NULL,'0 0 0','ButcherFish'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('Magic_Nature_SpeedGrowth',NULL,0,NULL,'0 0 0','PrepareSpell'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('Magic_Nature_SpeedGrowth',NULL,100,NULL,'0 0 0','CastSpell'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('Magic_Nature_SpeedGrowth',NULL,0,NULL,'0 0 0','FinishSpell'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('Magic_Geomancy_RevealOre',NULL,0,NULL,'0 0 0','PrepareSpell'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('Magic_Geomancy_RevealOre',NULL,100,NULL,'0 0 0','CastSpell'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('Magic_Geomancy_RevealOre',NULL,0,NULL,'0 0 0','FinishSpell'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('SwitchMechanism',NULL,10,NULL,'0 0 0','SwitchMechanism'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('Refuel',NULL,30,NULL,'0 0 0','Refuel'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('InvertMechanism',NULL,10,NULL,'0 0 0','InvertMechanism'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('Install',NULL,30,NULL,'0 0 0','Install'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('Uninstall',NULL,30,NULL,'0 0 0','Uninstall'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('FillTrough',NULL,10,NULL,'0 0 0','FillTrough'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('FillHole','Wall',50,'SelectedMaterial','0 0 -1','Construct'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('HarvestHay',NULL,10,NULL,'0 0 0','HarvestHay'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('SoundAlarm','',5,'','0 0 0','SoundAlarm'); INSERT INTO "Jobs_Tasks" ("ID","ConstructionID","Duration","Material","Offset","Task") VALUES ('EquipItem','',5,'','0 0 0','EquipItem'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('Mine','0 0 0',0,'MiningJobWall',NULL); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('DigHole','0 0 -1',0,'MiningJobWall',NULL); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('DigHole','0 0 0',0,'SolidSelectionFloor','Floor'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('ExplorativeMine','0 0 0',0,'MiningJobWall',NULL); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('RemoveRamp','0 0 0',0,'MiningJobWall',NULL); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('RemoveFloor','0 0 0',0,'SolidSelectionFloor','Floor'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('Deconstruct','0 0 0',0,'SelectionWall',NULL); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('RemovePlant','0 0 0',0,'SelectionWall',NULL); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('MineStairsUp','0 0 0',1,'Stairs',NULL); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('MineStairsUp','0 0 1',1,'StairsTop','Floor'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('DigStairsDown','0 0 -1',1,'Stairs',NULL); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('DigStairsDown','0 0 0',1,'StairsTop','Floor'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('DigStairsDown','0 0 0',0,'SelectionWall','Wall'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('DigRampDown','0 0 -1',1,'Ramp',NULL); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('DigRampDown','0 0 0',1,'RampTop','Floor'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('BuildWall','0 0 0',0,'SolidSelectionWall',NULL); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('BuildFence','0 0 0',0,'WoodFence',NULL); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('BuildFloor','0 0 0',0,'SolidSelectionFloor','Floor'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('BuildWallFloor','0 0 0',0,'SelectionFloor','Floor'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('BuildWallFloor','0 0 0',0,'SelectionWall','Wall'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('BuildStairs','0 0 0',1,'Stairs',NULL); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('BuildStairs','0 0 1',1,'StairsTop','Floor'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('BuildScaffold','0 0 0',0,'Scaffold','Wall'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('BuildScaffold','0 0 1',0,'ScaffoldFloor','Floor'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('BuildRamp','0 0 0',1,'ThatchRamp',NULL); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('BuildRamp','0 0 1',0,'ThatchRampTop','Floor'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('BuildRampCorner','0 0 0',1,'OuterCornerRamp',NULL); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('Harvest','0 0 0',0,'SolidSelectionWall',NULL); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('HarvestTree','0 0 0',0,'SolidSelectionWall',NULL); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('PlantTree','0 0 0',0,'Sapling',NULL); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('Till','0 0 0',0,'SolidSelectionFloor','Floor'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('Plant','0 0 0',0,'SelectionFloor','Floor'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('PlantFarm','0 0 0',0,'SelectionFloor','Floor'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('FellTree','0 0 0',0,'SolidSelectionWall',NULL); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('Magic_Nature_SpeedGrowth','0 0 0',0,'Pentagram','Floor'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('Magic_Geomancy_RevealOre','0 0 0',0,'Pentagram','Floor'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('FillHole','0 0 0',0,'SelectionFloor','Floor'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('FillHole','0 0 -1',0,'SolidSelectionWall','Wall'); INSERT INTO "Jobs_SpriteID" ("ID","Offset","Rotate","SpriteID","Type") VALUES ('SoundAlarm','0 0 0',0,'SelectionWall','Wall'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('HauleItem',NULL,0,NULL,NULL,NULL,'Hauling',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('HauleMultipleItems',NULL,0,NULL,NULL,NULL,'Hauling',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('Fish',NULL,0,NULL,NULL,NULL,'Fishing',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('Mine',NULL,0,'Pickaxe','ByWallMaterial',NULL,'Mining',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('DigHole',NULL,1,'Pickaxe','ByWallMaterial',NULL,'Mining',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('ExplorativeMine',NULL,0,'Pickaxe','ByWallMaterial',NULL,'Mining',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('RemoveRamp',NULL,0,'Pickaxe','ByWallMaterial',NULL,'Mining',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('RemoveFloor',NULL,1,'Pickaxe','ByFloorMaterial',NULL,'Mining',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('Deconstruct',NULL,0,NULL,NULL,NULL,'Construction',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('RemovePlant',NULL,0,NULL,NULL,NULL,'Farming',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('MineStairsUp',NULL,0,'Pickaxe','ByWallMaterial',NULL,'Mining',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('DigStairsDown',NULL,0,'Pickaxe','ByWallMaterial',NULL,'Mining',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('DigRampDown',NULL,0,'Pickaxe','ByWallMaterial',NULL,'Mining',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('BuildWall','Wall',1,NULL,NULL,NULL,'Construction',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('BuildFence','Fence',1,NULL,NULL,NULL,'Construction',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('BuildFloor','Floor',0,NULL,NULL,NULL,'Construction',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('BuildWallFloor','WallFloor',1,NULL,NULL,NULL,'Construction',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('BuildStairs','Stairs',0,NULL,NULL,NULL,'Construction',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('BuildScaffold','Scaffold',0,NULL,NULL,NULL,'Construction',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('BuildRamp','Ramp',0,NULL,NULL,NULL,'Construction',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('BuildRampCorner','RampCorner',0,NULL,NULL,NULL,'Construction',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('BuildWorkshop','Workshop',0,NULL,NULL,NULL,'Construction',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('BuildItem','Item',0,NULL,NULL,NULL,'Construction',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('BuildStorage','Storage',0,NULL,NULL,NULL,'Construction',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('BuildFurniture','Furniture',0,NULL,NULL,NULL,'Construction',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('BuildDoor','Door',0,NULL,NULL,NULL,'Construction',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('BuildTorch','Torch',0,NULL,NULL,NULL,'Construction',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('Harvest',NULL,0,NULL,NULL,NULL,'Farming',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('HarvestTree',NULL,0,NULL,NULL,NULL,'Horticulture',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('PlantTree',NULL,0,NULL,NULL,NULL,'Horticulture',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('Till',NULL,0,NULL,NULL,NULL,'Farming',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('Plant','Plant',0,NULL,NULL,NULL,'Farming',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('PlantFarm','Plant',0,NULL,NULL,NULL,'Farming',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('FellTree',NULL,0,'FellingAxe','ByPlantMaterial',NULL,'Woodcutting',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('CraftAtWorkshop',NULL,0,NULL,NULL,'$Craft','WorkshopSkill','$Craft','0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('ManMarketStall',NULL,0,NULL,NULL,NULL,'Trading',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('ButcherCorpse',NULL,0,NULL,NULL,NULL,'Butchery',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('ButcherFish',NULL,0,NULL,NULL,NULL,'Butchery',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('LeadAnimalToPasture',NULL,0,NULL,NULL,NULL,'AnimalHusbandry',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('HarvestAnimal',NULL,0,NULL,NULL,NULL,'AnimalHusbandry',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('TameAnimal',NULL,0,NULL,NULL,NULL,'AnimalHusbandry',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('ButcherAnimal',NULL,0,NULL,NULL,NULL,'Butchery',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('Magic_Nature_SpeedGrowth',NULL,0,NULL,NULL,NULL,'MagicNature',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('Magic_Geomancy_RevealOre',NULL,0,NULL,NULL,NULL,'MagicGeomancy',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('SwitchMechanism',NULL,0,NULL,NULL,NULL,'Machining',NULL,'0 0 0|-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('Refuel',NULL,0,NULL,NULL,NULL,'Machining',NULL,'0 0 0|-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('InvertMechanism',NULL,0,NULL,NULL,NULL,'Machining',NULL,'0 0 0|-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('Install',NULL,0,NULL,NULL,NULL,'Machining',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('Uninstall',NULL,0,NULL,NULL,NULL,'Machining',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('FillTrough',NULL,0,NULL,NULL,NULL,'AnimalHusbandry',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('FillHole','Wall',1,NULL,NULL,NULL,'Construction',NULL,'-1 0 0|0 -1 0|1 0 0|0 1 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('HarvestHay',NULL,0,NULL,NULL,NULL,'Farming',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('EquipItem',NULL,0,NULL,NULL,NULL,'Hauling',NULL,'0 0 0'); INSERT INTO "Jobs" ("ID","ConstructionType","MayTrapGnome","RequiredToolItemID","RequiredToolLevel","SkillGain","SkillID","TechGain","WorkPosition") VALUES ('SoundAlarm','',0,'','','','Machining','','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Bed','Wall|Tree|Construction|Plant|Job','Floor|AllowFurniture','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('FancyBed','Wall|Tree|Construction|Plant|Job','Floor|AllowFurniture','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Chair','Wall|Tree|Construction|Plant|Job','Floor|AllowFurniture','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Table','Wall|Tree|Construction|Plant|Job','Floor|AllowFurniture','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Cabinet','Wall|Tree|Construction|Plant|Job','Floor|AllowFurniture','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Dresser','Wall|Tree|Construction|Plant|Job','Floor|AllowFurniture','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Bookshelf','Wall|Tree|Construction|Plant|Job','Floor|AllowFurniture','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Painting','Wall|Tree|Construction|Plant|Job','Floor|AllowFurniture','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Crate','Wall|Tree|Construction|Plant|Job','Floor|Stockpile','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Barrel','Wall|Tree|Construction|Plant|Job','Floor|Stockpile','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Bag','Wall|Tree|Construction|Plant|Job','Floor|Stockpile','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Door','Wall|Tree|Construction|Plant|Job|Designation','Floor','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Torch','Wall|Tree|Construction|Plant|Job','Floor','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Statue','Wall|Tree|Construction|Plant|Job','Floor','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Trough','Wall|Tree|Construction|Plant|Job','Floor|Pasture','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Shed','Wall|Tree|Construction|Plant|Job','Floor|Pasture','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('BeeHive','Wall|Tree|Construction|Plant|Job','Floor','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Sack','Wall|Tree|Construction|Plant|Job','Floor|Stockpile','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Axle','Wall|Tree|Plant|Job|Mechanism','Floor','FloorHidden','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('VerticalAxle','Wall|Tree|Construction|Plant|Job','GearBox','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('SteamEngine','Wall|Tree|Construction|Plant|Job','Floor','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('GearBox','Wall|Tree|Construction|Plant|Job','Floor','Floor','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Pump','Wall|Tree|Construction|Plant|Job','Floor','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Lever','Wall|Tree|Construction|Plant|Job','Floor','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('MechanicalWall','Wall|Tree|Construction|Plant|Job','Floor','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('PressurePlate','Wall|Tree|Construction|Plant|Job','Floor','Floor','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('AlarmBell','Wall|Tree|Construction|Plant|Job','Floor|AllowBell','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('WallTorch','Wall|Tree|Construction|Plant|Job','Floor','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('WallTorch',NULL,'Wall','Wall','-1 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Chest','Wall|Tree|Construction|Plant|Job','Floor|Stockpile','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('BigTorch','Wall|Tree|Construction|Plant|Job','Floor','Wall','0 0 0'); INSERT INTO "Items_Tiles" ("ID","Forbidden","Required","Location","Offset") VALUES ('Brazier','Wall|Tree|Construction|Plant|Job','Floor','Wall','0 0 0'); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('WoodBed','WoodBedFrame',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('WoodBed','Mattress',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('FancyBed','FancyBedFrame',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('FancyBed','Mattress',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Knife','KnifeBlade',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Knife','KnifeHilt',1); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Pickaxe','PickaxeHead',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Pickaxe','PickaxeBase',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('FellingAxe','FellingAxeHead',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('FellingAxe','FellingAxeBase',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('AlarmBell','AlarmBellBell',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('AlarmBell','AlarmBellBase',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Sword','SwordBlade',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Sword','Hilt',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('GearBox','GearBoxBase',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('GearBox','GearBoxFrame',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('MechanismBase','Gear',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('MechanismBase','Spring',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('SteamEngine','Cylinder',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('SteamEngine','MechanismBase',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('SteamEngine','Gear',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('SteamEngine','Rod',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Lever','LeverBase',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Lever','LeverHandle',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Automaton','AutomatonHead',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Automaton','AutomatonTorso',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Automaton','AutomatonArm',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Automaton','AutomatonArm',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Automaton','AutomatonLeg',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Automaton','AutomatonLeg',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Hammer','HammerHead',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Hammer','Haft',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Warhammer','WarhammerHead',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Warhammer','Haft',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Claymore','ClaymoreBlade',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('Claymore','Hilt',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('HandAxe','HandAxeHead',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('HandAxe','Haft',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('BattleAxe','BattleAxeHead',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('BattleAxe','Haft',0); INSERT INTO "Items_Components" ("ID","ItemID","NoMaterial") VALUES ('WallTorch','Torch',0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('RawSoil','RawSoil','Materials','Soil',20,0,1,0,0,0,0,0,0,'Soil|Sand',NULL,NULL,'Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('RawStone','RawStone','Materials','Stone',10,0,1,0,0,0,0,0,0,'Stone',NULL,NULL,'Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('RawWood','RawWood','Materials','Wood',1,0,1,0,0,0,0,0,0,'Wood',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('RawCoal','RawCoal','Materials','Wood',20,0,2,0,0,0,0,0,0,'Coal',NULL,'Crate','Wheelbarrow',0,3000); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('RawOre','RawOre','Materials','Metal',20,0,2,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('RawGem','RawGem','Materials','Gem',4,0,1,0,0,0,0,0,0,'Gem',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Gem','Gem','Materials','Gem',4,0,2,0,0,0,0,0,0,'Gem',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Seed','Seed','Grown','Plant',1,0,1,0,0,0,0,0,0,'Vegetable|Fruit|Flower|Grain|Leaves|Berries','Cotton','Sack','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Bed','Bed','Furniture','Beds',1,1,10,0,0,0,0,0,0,'Wood|Bone',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('WoodBedFrame','WoodBedFrame','Furniture','Parts',1,1,10,0,0,0,0,0,0,'Wood',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('FancyBedFrame','FancyWoodBedFrame','Furniture','Parts',1,1,9,0,0,0,0,0,0,'Wood',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('FancyBed','FancyBed','Furniture','Beds',1,1,10,0,0,0,0,0,1,'Wood',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Mattress','Mattress','Furniture','Parts',1,1,9,0,0,0,0,0,0,'Cloth',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Chair','Chair','Furniture','Chairs',1,1,9,0,0,0,0,0,0,'Wood|Stone|Bone',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Table','Table','Furniture','Tables',1,1,12,0,0,0,0,0,0,'Wood|Stone|Bone',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Cabinet','Cabinet','Furniture','Cabinets',1,1,13,0,0,0,0,0,0,'Wood',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Dresser','Dresser','Furniture','Cabinets',1,1,13,0,0,0,0,0,0,'Wood',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Painting','Painting','Furniture','Misc',1,1,200,0,0,0,0,0,0,'Wood',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Stick','FellingAxeBase','Materials','Wood',1,0,3,0,0,0,0,0,0,'Wood',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Sawblade','Gear','Workshop','Tools',1,1,3,0,0,0,0,0,0,'Metal|Stone',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Bone','Bone','Butchery','Bones',1,0,1,0,0,0,0,0,0,'Bone',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('FishBone','Bone','Butchery','Bones',1,0,1,0,0,0,0,0,0,'Bone',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Skull','Skull','Butchery','Bones',1,0,1,0,0,0,0,0,0,'Bone',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Hide','RawHide','Butchery','Hides',1,0,1,0,0,0,0,0,0,'Animal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('RawCloth','Fiber','Cloth','Unprocessed',1,0,1,0,0,0,0,0,0,'Cloth',NULL,'Sack','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Plank','Plank','Materials','Wood',1,0,6,0,0,0,0,0,0,'Wood',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Workbench','Workbench','Workshop','Workplaces',1,1,13,0,0,0,0,0,0,'Wood',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Chisel','Chisel','Workshop','Tools',1,1,3,0,0,0,0,0,0,'Stone',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Crate','Crate','Containers','Immovable',1,1,9,0,0,1,0,0,0,'Wood',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Barrel','Barrel','Containers','Immovable',1,1,9,0,0,1,0,0,0,'Wood',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Bag','Bag','Containers','Movable',1,1,13,0,0,1,0,0,0,'Cloth',NULL,'Crate',NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Sack','Sack','Containers','Immovable',1,1,13,0,0,1,0,0,0,'Cloth',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Bucket','Bucket','Containers','Movable',1,1,9,0,0,1,0,0,0,'Wood',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Block','Block','Materials','Stone',1,0,2,0,0,0,0,0,0,'Stone',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Brick','Block','Materials','Soil',1,0,3,0,0,0,0,0,0,NULL,'Clay|Sand','Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Hilt','SwordBase','Weapons','WeaponsComponents',1,0,4,0,0,0,0,0,0,'Wood',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Haft','FellingAxeBase','Weapons','WeaponsComponents',1,0,4,0,0,0,0,0,0,'Wood',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('KnifeBlade','KnifeBlade','Workshop','Tools',1,0,3,0,0,0,0,0,0,'Stone|Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('KnifeHilt','KnifeHilt','Workshop','Tools',1,0,10,0,0,0,0,0,0,'Wood',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Knife','Knife','Workshop','Tools',1,1,5,0,0,0,1,0,1,'Stone|Metal',NULL,'Crate','Wheelbarrow',5,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('PickaxeHead','PickaxeHead','Workshop','Tools',1,1,29,0,0,0,0,0,0,'Wood|Stone|Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('PickaxeBase','PickaxeBase','Workshop','Tools',1,0,4,0,0,0,0,0,0,'Wood',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Pickaxe','Pickaxe','Workshop','Tools',1,1,5,0,0,0,1,0,1,'Wood|Stone|Metal',NULL,'Crate','Wheelbarrow',5,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Door','Door','Utility','Doors',1,0,9,0,0,0,0,0,0,'Wood|Stone',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Torch','GroundTorch','Utility','Lights',1,0,4,0,0,0,0,21,0,'Wood',NULL,'Crate',NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('CrystalMushroom','CrystalShroom','Food','Raw',1,0,10,10,0,0,0,0,0,'Mushroom',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Mold','Mold','Workshop','Tools',1,0,9,0,0,0,0,0,0,'Stone',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Hearth','Forge','Workshop','Tools',1,0,13,0,0,0,0,0,0,'Stone',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Bellows','BellowsWithNozzle','Workshop','Tools',1,0,5,0,0,0,0,0,0,'Wood',NULL,'Crate',NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Bar','Bar','Materials','Metal',1,0,20,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Furnace','Furnace','Workshop','Workplaces',1,0,21,0,0,0,0,0,0,'Stone',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Anvil','Anvil','Workshop','Workplaces',1,0,225,0,0,0,0,0,0,'Metal',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('CuttingWheel','Gear','Workshop','Tools',1,0,29,0,0,0,0,0,0,'Metal|Stone',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('FellingAxeHead','FellingAxeHead','Workshop','Tools',1,0,29,0,0,0,0,0,0,'Wood|Stone|Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('FellingAxeBase','FellingAxeBase','Workshop','Tools',1,0,10,0,0,0,0,0,0,'Wood',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('FellingAxe','FellingAxe','Workshop','Tools',1,1,30,0,0,0,1,0,1,'Wood|Stone|Metal',NULL,'Crate','Wheelbarrow',5,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('File','File','Workshop','Tools',1,0,29,0,0,0,0,0,0,'Metal',NULL,NULL,'Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('BallPeenHammer','Hammer','Workshop','Tools',1,0,29,0,0,0,0,0,0,'Metal',NULL,'Crate',NULL,5,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('AlarmBellBase','AlarmBellBase','Furniture','Parts',1,0,10,0,0,0,0,0,0,'Wood',NULL,'Crate',NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('AlarmBellBell','AlarmBellBell','Furniture','Parts',1,0,10,0,0,0,0,0,0,'Metal',NULL,'Crate',NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('AlarmBell','AlarmBell','Utility','Other',1,0,57,0,0,0,0,0,1,'Metal',NULL,'Crate',NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Statue','Statue','Furniture','Misc',1,1,100,0,0,0,0,0,0,'Wood|Stone|Metal',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Statuette','Statuette','Furniture','Misc',1,1,25,0,0,0,0,0,0,'Wood|Stone|Metal',NULL,'Crate',NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Coin','Coin','Furniture','Misc',1,1,25,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Loom','Loom','Workshop','Workplaces',1,0,13,0,0,0,0,0,0,'Wood',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Bolt','Bolt','Cloth','ClothProducts',1,0,6,0,0,0,0,0,0,'Cloth',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Trough','Trough','Utility','Farm',1,0,9,0,0,0,0,0,0,'Stone',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Shed','Shed','Utility','Farm',1,0,20,0,0,0,0,0,0,'Wood',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('BeeHive','BeeHiveEmpty','Utility','Farm',1,0,20,0,0,0,0,0,0,'Wood',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Pillar','StonePillar','Furniture','Misc',1,0,9,0,0,0,0,0,0,'Stone',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('PetRock','PetRock','Furniture','Misc',1,1,3,0,0,0,0,0,0,'Stone',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('PuzzleBox','PuzzleBox','Furniture','Misc',1,1,3,0,0,0,0,0,0,'Wood',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Ring','JewelryPile','Jewelry','JewelryProducts',1,1,29,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('GemmedRing','JewelryPile','Jewelry','JewelryProducts',1,1,29,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Necklace','JewelryPile','Jewelry','JewelryProducts',1,1,57,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('GemmedNecklace','JewelryPile','Jewelry','JewelryProducts',1,1,29,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Needle','BoneNeedle','Workshop','Tools',1,0,2,0,0,0,0,0,0,'Metal|Bone',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('String','String','Cloth','ClothProducts',1,0,3,0,0,0,0,0,0,'Cloth',NULL,'Sack','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Straw','Straw','Grown','Plant',10,0,1,0,0,0,0,0,0,'Grain',NULL,NULL,'Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Bandage','Bandage','Cloth','ClothProducts',1,0,3,0,0,0,0,0,0,'Cloth',NULL,'Crate',NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Padding','Fiber','Cloth','ClothProducts',1,0,4,0,0,0,0,0,0,'Cloth',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('LeatherStrap','LeatherStrip','Cloth','ClothProducts',1,0,2,0,0,0,0,0,0,NULL,'CowLeather|YakLeather|EmuLeather','Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('SkullHelmet','Skull','Armor','BoneArmor',1,0,2,0,0,0,0,0,0,'Bone',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('BoneShirt','BoneShirt','Armor','BoneArmor',1,0,5,0,0,0,0,0,0,'Bone',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('WoodTub','WoodTub','Workshop','Workplaces',1,0,10,0,0,0,0,0,0,'Wood',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Dye','Dye','Workshop','Materials',1,0,5,0,0,0,0,0,0,'Dye',NULL,'Barrel','Bucket',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('AmmoPouch','AmmoPouch','Armor','Leather',1,1,4,0,0,0,0,0,0,NULL,'Cow|Yak|Emu','Crate',NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Wheelbarrow','Wheelbarrow','Containers','Movable',1,1,9,0,0,0,1,0,0,'Wood',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('FishingRod','FishingRod','Workshop','Tools',1,1,4,0,0,0,1,0,0,'Wood',NULL,'Crate',NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Fish','GreenFish','Butchery','Corpses',10,0,1,0,0,0,0,0,0,NULL,'GreenFish|GreyFish','Barrel','Bucket',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('AnimalCorpse','Corpse','Butchery','Corpses',1,0,0,0,0,0,0,0,0,'Animal',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('GoblinCorpse','MonsterCorpse','Butchery','Corpses',1,0,0,0,0,0,0,0,0,'Goblin',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Cone','PineCone','Grown','Tree',1,0,0,0,0,0,0,0,0,NULL,'Pine','Sack','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Oak','Oak','Grown','Tree',1,0,0,0,0,0,0,0,0,NULL,'Oak','Sack','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Corpse',NULL,'Butchery','Corpses',1,0,0,0,0,0,0,0,0,'Animal',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Meat','Meat','Food','Raw',1,0,1,0,0,0,0,0,0,'Animal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('FishMeat','Meat','Food','Raw',1,0,1,0,0,0,0,0,0,NULL,'GreenFish|GreyFish','Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Egg','Egg','Food','Raw',1,0,1,0,0,0,0,0,0,NULL,'Chicken|Duck|Goose|Emu','Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Milk','Milk','Drinks','NonAlcoholic',1,0,1,0,30,0,0,0,0,NULL,'Cow|Yak','Barrel','Bucket',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Bread','Bread','Food','Cooked',1,1,10,25,0,0,0,0,0,'Grain',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Sandwich','Sandwich','Food','Cooked',1,1,30,50,0,0,0,0,0,'Grain',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Wine','Wine','Drinks','Alcoholic',1,1,2,0,40,0,0,0,0,'Fruit|Berries',NULL,'Barrel','Bucket',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Beer','Beer','Drinks','Alcoholic',1,1,2,0,50,0,0,0,0,'Grain',NULL,'Barrel','Bucket',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Tea','TeaCup','Drinks','NonAlcoholic',1,1,2,0,30,0,0,0,0,NULL,'Tea','Barrel','Bucket',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('CheeseOmelette','Omelette','Food','Cooked',1,1,10,40,0,0,0,0,0,NULL,NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('MushroomOmelette','Omelette','Food','Cooked',1,1,10,40,0,0,0,0,0,NULL,NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Sausage','Sausage','Food','Cooked',1,1,10,30,0,0,0,0,0,'Animal|Monster',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('SausageOmelette','Omelette','Food','Cooked',1,1,10,50,0,0,0,0,0,NULL,NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Cheese','Cheese','Food','Cooked',1,1,10,25,0,0,0,0,0,NULL,'Cow|Yak','Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Fruit','Fruit','Food','Raw',1,0,1,20,0,0,0,0,0,'Fruit',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Vegetable','Vegetable','Food','Raw',1,0,1,20,0,0,0,0,0,'Vegetable',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Berries','Berries','Food','Raw',1,0,1,10,0,0,0,0,0,'Berries',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Leaves','Leaves','Food','Other',1,0,1,0,0,0,0,0,0,'Leaves',NULL,'Sack','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Mushroom','MushroomItem','Food','Raw',1,0,1,0,0,0,0,0,0,'Mushroom',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Grain','Grain','Grown','Plant',1,0,1,0,0,0,0,0,0,'Grain',NULL,'Sack','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Sliver','MetalSliver','Materials','Metal',1,0,11,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('RawHide','RawHide','Butchery','Hides',1,0,1,0,0,0,0,0,0,NULL,'Cow|Yak|Emu','Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('LeatherArmorPanel','LeatherPanel','Armor','Leather',1,1,2,0,0,0,0,0,0,NULL,'CowLeather|YakLeather|EmuLeather','Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('LeatherHelm','LeatherArmorHead','Armor','Leather',1,1,7,0,0,0,0,0,0,NULL,'CowLeather|YakLeather|EmuLeather','Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('LeatherCuirass','LeatherArmorChest','Armor','Leather',1,1,9,0,0,0,0,0,0,NULL,'CowLeather|YakLeather|EmuLeather','Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('LeatherBoot','LeatherArmorFeet','Armor','Leather',1,1,5,0,0,0,0,0,0,NULL,'CowLeather|YakLeather|EmuLeather','Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('LeatherPants','LeatherArmorLegs','Armor','Leather',1,1,1,0,0,0,0,0,0,NULL,'CowLeather|YakLeather|EmuLeather','Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('LeatherBracer','LeatherArmorArms','Armor','Leather',1,1,5,0,0,0,0,0,0,NULL,'CowLeather|YakLeather|EmuLeather','Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('LeatherGlove','LeatherArmorHands','Armor','Leather',1,1,5,0,0,0,0,0,0,NULL,'CowLeather|YakLeather|EmuLeather','Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('ChainHelm','ChainArmorHead','Armor','Chainmail',1,1,57,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('ChainShirt','ChainArmorChest','Armor','Chainmail',1,1,113,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('ChainBracer','ChainArmorArms','Armor','Chainmail',1,1,57,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('ChainGlove','ChainArmorHands','Armor','Chainmail',1,1,57,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('ChainPants','ChainArmorLegs','Armor','Chainmail',1,1,85,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('ChainBoot','ChainArmorFeet','Armor','Chainmail',1,1,57,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('PlateHelm','PlateArmorHead','Armor','Plate',1,1,229,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('PlateChest','PlateArmorChest','Armor','Plate',1,1,457,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('PlatePauldron','PlateArmorArms','Armor','Plate',1,1,229,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('PlateGlove','PlateArmorHands','Armor','Plate',1,1,229,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('PlateGreaves','PlateArmorLegs','Armor','Plate',1,1,343,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('PlateBoot','PlateArmorFeet','Armor','Plate',1,1,229,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('HeavyPlateHelm','HeavyPlateArmorHead','Armor','HeavyPlate',1,1,457,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('HeavyPlateChest','HeavyPlateArmorChest','Armor','HeavyPlate',1,1,913,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('HeavyPlatePauldron','HeavyPlateArmorArms','Armor','HeavyPlate',1,1,457,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('HeavyPlateGlove','HeavyPlateArmorHands','Armor','HeavyPlate',1,1,457,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('HeavyPlateGreaves','HeavyPlateArmorLegs','Armor','HeavyPlate',1,1,685,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('HeavyPlateBoot','HeavyPlateArmorFeet','Armor','HeavyPlate',1,1,457,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('ArmorPlate','ArmorPlate','Armor','Plate',1,0,57,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Sword','Sword','Weapons','WeaponsMetal',1,1,142,0,0,0,0,0,1,'Wood|Stone|Metal',NULL,'Crate','Wheelbarrow',10,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('SwordBlade','SwordBlade','Weapons','WeaponsComponents',1,1,141,0,0,0,0,0,0,'Wood|Stone|Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('TrainingDummy','TrainingDummy','Workshop','Workplaces',1,0,7,0,0,0,0,0,0,'Wood',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('GearBox','GearBox','Utility','Mechanism',1,0,100,0,0,0,0,0,1,NULL,NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('GearBoxBase','GearBoxBase','Parts','Mechanism',1,0,50,0,0,0,0,0,0,'Metal',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('GearBoxFrame','GearBoxFrame','Parts','Mechanism',1,0,50,0,0,0,0,0,0,'Metal',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('SteamEngine','SteamEngine','Utility','Mechanism',1,0,60,0,0,0,0,0,1,'Metal',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Gear','Gear','Parts','Mechanism',1,0,29,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Rod','FellingAxeBase','Parts','Mechanism',1,0,29,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('MechanismBase','GearBoxFrame','Parts','Mechanism',1,0,59,0,0,0,0,0,1,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Spring','Spring','Parts','Mechanism',1,0,29,0,0,0,0,0,0,'Metal',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Cylinder','Cylinder','Parts','Mechanism',1,0,57,0,0,0,0,0,0,'Metal',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Axle','Axle','Utility','Mechanism',1,0,30,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('VerticalAxle','VerticalAxle','Utility','Mechanism',1,0,20,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Pipe','PipeItem','Utility','Hydraulics',1,0,20,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('PipeExit','PipeFittingItem','Utility','Hydraulics',1,0,20,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Pump','Pump','Utility','Hydraulics',1,0,50,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Lever','LeverOff','Utility','Mechanism',1,0,60,0,0,0,0,0,1,'Metal',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('LeverBase','LeverBase','Parts','Mechanism',1,0,30,0,0,0,0,0,0,'Metal',NULL,'Crate',NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('LeverHandle','FellingAxeBase','Parts','Mechanism',1,0,20,0,0,0,0,0,0,'Wood',NULL,'Crate',NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Wrench','Wrench','Workshop','Tools',1,1,29,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Spike','Spike','Parts','Mechanism',1,1,57,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Screw','Screw','Parts','Mechanism',1,0,57,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Handcrank','Handcrank','Utility','Mechanism',1,0,60,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('TrapBase','GearBoxFrame','Parts','Mechanism',1,0,60,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('SpikeTrap','SpikeTrapItem','Utility','Mechanism',1,0,172,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('BladeTrap','BladeTrapItemBlade','Utility','Mechanism',1,0,142,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('MechanicalWall','MechanicalWallItem','Utility','Mechanism',1,0,60,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('WindmillBlade','WindmillBlade','Parts','Mechanism',1,0,3,0,0,0,0,0,0,'Wood',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('PressurePlate','MechanicalWallOpen','Utility','Mechanism',1,0,60,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Hatch','HatchFrameItem','Utility','Mechanism',1,0,60,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Automaton','Automaton','Utility','Automaton',1,0,459,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('AutomatonHead','AutomatonHead','Parts','Automaton',1,0,172,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('AutomatonTorso','AutomatonTorso','Parts','Automaton',1,0,286,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('AutomatonArm','AutomatonArm','Parts','Automaton',1,0,172,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('AutomatonLeg','AutomatonFoot','Parts','Automaton',1,0,229,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('AutomatonCoreMark1','AutomatonCore','Parts','Automaton',1,0,115,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('AutomatonCoreMark2','AutomatonCore','Parts','Automaton',1,0,229,0,0,0,0,0,0,'Metal',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Flour','FlourSack','Food','Other',1,0,58,0,0,0,0,0,0,'Grain',NULL,'Sack','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('BoneBedFrame','BoneBedFrame','Furniture','Parts',1,1,7,0,0,0,0,0,0,'Bone',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Hay','Hay','Grown','Plant',20,0,1,0,0,0,0,0,0,'Grass','Grass',NULL,'Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Honey','Honey','Food','Raw',1,0,1,0,0,0,0,0,0,NULL,'Bee','Barrel',NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('HammerHead','HammerHead','Weapons','WeaponsComponents',1,1,140,0,0,0,0,0,0,'Metal|Stone',NULL,'Crate',NULL,0,NULL); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('WarhammerHead','WarhammerHead','Weapons','WeaponsComponents',1,1,140,0,0,0,0,0,0,'Metal|Stone',NULL,'Crate',NULL,0,NULL); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Hammer','Hammer','Weapons','WeaponsMetal',1,1,150,0,0,0,0,0,0,NULL,NULL,'Crate',NULL,10,NULL); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Warhammer','Warhammer','Weapons','WeaponsMetal',1,1,150,0,0,0,0,0,0,NULL,NULL,'Crate',NULL,15,NULL); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('ClaymoreBlade','ClaymoreBlade','Weapons','WeaponsComponents',1,1,180,0,0,0,0,0,0,'Metal|Stone',NULL,'Crate',NULL,NULL,NULL); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('HandAxeHead','HandAxeHead','Weapons','WeaponsComponents',1,1,100,0,0,0,0,0,0,'Metal',NULL,'Crate',NULL,NULL,NULL); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('BattleAxeHead','BattleAxeHead','Weapons','WeaponsComponents',1,1,149,0,0,0,0,0,0,'Metal',NULL,'Crate',NULL,NULL,NULL); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('WallTorch','WallTorch','Utility','Lights',1,0,4,0,0,0,0,21,0,'Wood',NULL,'Crate',NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Chest','Chest','Containers','Immovable',1,1,100,0,0,1,0,0,0,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Bookshelf','Bookshelf','Furniture','Cabinets',1,1,20,0,0,0,0,0,0,'Wood',NULL,NULL,NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('BigTorch','BigTorch','Utility','Lights',1,0,10,0,0,0,0,30,0,'Metal',NULL,'Crate',NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Brazier','Brazier','Utility','Lights',1,0,20,0,0,0,0,25,0,'Metal',NULL,'Crate',NULL,0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Backpack','Backpack','Armor','Leather',1,0,30,0,0,0,0,0,0,'Leather',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('GlassIngot','GlassIngot','Materials','Gem',1,0,20,0,0,0,0,0,0,'Glass',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('RoughGlassGem','RoughGlassGem','Materials','Gem',1,0,20,0,0,0,0,0,0,'Glass',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('MosaicTile','MosaicTile','Materials','Gem',1,0,20,0,0,0,0,0,0,'Glass',NULL,'Crate','Wheelbarrow',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Cider','Cider','Drinks','Alcoholic',1,1,2,0,50,0,0,0,0,'Fruit',NULL,'Barrel','Bucket',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Vinegar','Vinegar','Food','Other',1,0,1,0,0,0,0,0,0,'Fruit',NULL,'Barrel','Bucket',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Sugar','Sugar','Food','Other',1,0,5,5,0,0,0,0,0,NULL,'Sugarbeet','Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('DropCandy','DropCandy','Food','Cooked',1,1,10,10,0,0,0,0,0,NULL,'Sugarbeet','Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('ShepherdsPie','ShepherdsPie','Food','Cooked',1,1,50,50,0,0,0,0,0,'Vegetable',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('Biscuit','Biscuit','Food','Cooked',1,1,10,25,0,0,0,0,0,'Grain',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('PickledFruit','PickledFruit','Food','Cooked',1,1,40,20,0,0,0,0,0,'Fruit',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('FruitPreserve','FruitPreserve','Food','Cooked',1,1,50,25,0,0,0,0,0,'Fruit',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('SmokedMeat','SmokedMeat','Food','Cooked',1,1,10,25,0,0,0,0,0,'Animal',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('SmokedSausage','SmokedSausage','Food','Cooked',1,1,10,25,0,0,0,0,0,'Animal',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('FruitBread','FruitBread','Food','Cooked',1,1,20,30,0,0,0,0,0,'Fruit',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('FreshCheese','FreshCheese','Food','Cooked',1,1,10,20,0,0,0,0,0,NULL,'Cow|Yak','Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('HardCheese','HardCheese','Food','Cooked',1,1,10,20,0,0,0,0,0,NULL,'Cow|Yak','Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('MeatPie','MeatPie','Food','Cooked',1,1,20,25,0,0,0,0,0,'Animal',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('PickledVegetable','PickledVegetable','Food','Cooked',1,1,40,20,0,0,0,0,0,'Vegetable',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('PickledEgg','PickledEgg','Food','Cooked',1,1,40,20,0,0,0,0,0,NULL,'Chicken|Duck|Goose|Emu','Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('VegetablePreserve','VegetablePreserve','Food','Cooked',1,1,50,25,0,0,0,0,0,'Vegetable',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('SmokedBird','SmokedBird','Food','Cooked',1,1,10,25,0,0,0,0,0,NULL,'Chicken|Duck|Goose|Emu','Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('SmokedFish','SmokedFish','Food','Cooked',1,1,10,25,0,0,0,0,0,NULL,'GreenFish|GreyFish','Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('FlatBread','FlatBread','Food','Cooked',1,1,10,20,0,0,0,0,0,'Grain',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('FruitPie','FruitPie','Food','Cooked',1,1,20,30,0,0,0,0,0,'Fruit',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('VeggiePie','VeggiePie','Food','Cooked',1,1,20,30,0,0,0,0,0,'Vegetable',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('FineMeatPie','FineMeatPie','Food','Cooked',1,1,20,50,0,0,0,0,0,'Animal',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('GlassJar','GlassJar','Workshop','Materials',1,0,10,0,0,0,0,0,0,'Glass',NULL,'Crate','Bag',0,0); INSERT INTO "Items" ("ID","SpriteID","Category","ItemGroup","StackSize","HasQuality","Value","EatValue","DrinkValue","IsContainer","IsTool","LightIntensity","HasComponents","AllowedMaterialTypes","AllowedMaterials","AllowedContainers","CarryContainer","AttackValue","BurnValue") VALUES ('GlassBottle','GlassBottle','Workshop','Materials',1,0,10,0,0,0,0,0,0,'Glass',NULL,'Crate','Bag',0,0); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Materials','Gem','Gem'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Materials','Soil','RawSoil'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Materials','Metal','RawOre'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Materials','Stone','Block'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Materials','Wood','RawWood'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Grown','Plant','Straw'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Workshop','Tools','Knife'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Workshop','Workplaces','Workbench'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Food','Other','Leaves'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Food','Raw','Fruit'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Food','Cooked','Sausage'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Drinks','Alcoholic','Wine'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Drinks','NonAlcoholic','Milk'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Containers','Immovable','Crate'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Containers','Movable','Wheelbarrow'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Furniture','Chairs','WoodChair'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Furniture','Tables','Table'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Furniture','Beds','WoodBed'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Utility','Doors','Door'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Furniture','Misc','Painting'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Furniture','FarmUtils','Shed'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Cloth','Unprocessed','RawCloth'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Cloth','ClothProducts','Bolt'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Leather','LeatherProducts','LeatherStrap'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Jewelry','JewelryProducts','Ring'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Butchery','Corpses','Skull'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Butchery','Bones','Bone'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Butchery','Meats','Meat'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Butchery','Hides','Hide'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Armor','Leather','LeatherArmorChest'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Armor','Chainmail','ChainArmorChest'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Armor','Plate','PlateArmorChest'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Armor','HeavyPlate','HeavyPlateArmorChest'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Weapons','WeaponsMetal','Sword'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Weapons','WeaponsComponents','SwordBlade'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Furniture','Parts','FancyBedFrame'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Utility','Lights','Torch'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Armor','BoneArmor','BoneArmorChest'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Food','Meat','Meat'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Workshop','Materials','Dye'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Utility','Mechanism','Gear'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Utility','Hydraulics','Pipe'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Utility','Automaton','Automaton'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Utility','Farm','BeeHiveFull'); INSERT INTO "ItemGrouping_Groups" ("ID","GroupID","SpriteID") VALUES ('Utility','AlarmBell','AlarmBell'); INSERT INTO "ItemGrouping" ("ID","Color","SpriteID") VALUES ('Materials','160 160 160 255','RawOre'); INSERT INTO "ItemGrouping" ("ID","Color","SpriteID") VALUES ('Grown','160 255 160 255','Sapling'); INSERT INTO "ItemGrouping" ("ID","Color","SpriteID") VALUES ('Workshop','220 220 160 255','Gear'); INSERT INTO "ItemGrouping" ("ID","Color","SpriteID") VALUES ('Food','160 160 225 255','Fruit'); INSERT INTO "ItemGrouping" ("ID","Color","SpriteID") VALUES ('Drinks','160 160 225 255','Milk'); INSERT INTO "ItemGrouping" ("ID","Color","SpriteID") VALUES ('Containers','255 160 160 255','Crate'); INSERT INTO "ItemGrouping" ("ID","Color","SpriteID") VALUES ('Furniture','160 160 160 255','Cabinet'); INSERT INTO "ItemGrouping" ("ID","Color","SpriteID") VALUES ('Cloth','225 225 255 255','DyedCloth'); INSERT INTO "ItemGrouping" ("ID","Color","SpriteID") VALUES ('Armor','225 225 255 255','LeatherArmorChest'); INSERT INTO "ItemGrouping" ("ID","Color","SpriteID") VALUES ('Jewelry','225 225 255 255','Gem'); INSERT INTO "ItemGrouping" ("ID","Color","SpriteID") VALUES ('Butchery','160 160 160 255','Meat'); INSERT INTO "ItemGrouping" ("ID","Color","SpriteID") VALUES ('Weapons','255 255 255 255','Sword'); INSERT INTO "ItemGrouping" ("ID","Color","SpriteID") VALUES ('Utility','255 255 255 255','Torch'); INSERT INTO "Hydraulics" ("ID","Buildable","Item","Sprite") VALUES ('Pipe',1,NULL,'Pipe'); INSERT INTO "Hydraulics" ("ID","Buildable","Item","Sprite") VALUES ('PipeExit',1,NULL,NULL); INSERT INTO "Hydraulics" ("ID","Buildable","Item","Sprite") VALUES ('Pump',1,NULL,NULL); INSERT INTO "HairColors" ("ID","Color") VALUES ('Green','0 255 0 255'); INSERT INTO "HairColors" ("ID","Color") VALUES ('Red','255 0 0 255'); INSERT INTO "HairColors" ("ID","Color") VALUES ('Blue','0 0 255 255'); INSERT INTO "HairColors" ("ID","Color") VALUES ('Cyan','0 255 255 255'); INSERT INTO "HairColors" ("ID","Color") VALUES ('Purple','255 0 255 255'); INSERT INTO "HairColors" ("ID","Color") VALUES ('Yellow','255 255 0 255'); INSERT INTO "FormationPerks" ("ID") VALUES ('EyesOpen'); INSERT INTO "FormationPerks" ("ID") VALUES ('ShieldWall'); INSERT INTO "FormationPerks" ("ID") VALUES ('MeleeOffense'); INSERT INTO "FormationPerks" ("ID") VALUES ('FiringSquad'); INSERT INTO "FarmUtils" ("ID","Buildable","Item") VALUES ('Shed',1,NULL); INSERT INTO "FarmUtils" ("ID","Buildable","Item") VALUES ('Trough',1,NULL); INSERT INTO "FarmUtils" ("ID","Buildable","Item") VALUES ('BeeHive',1,NULL); INSERT INTO "Events_OnSuccess" ("ID","Action","CenterCamera","Count","Message","Pause","Title") VALUES ('EventTrader','SpawnTraderGnome',0,'$Num','A trader has arrived!',0,'Trader!'); INSERT INTO "Events_OnSuccess" ("ID","Action","CenterCamera","Count","Message","Pause","Title") VALUES ('EventMigration','SpawnGnome',1,'$Num',NULL,0,NULL); INSERT INTO "Events_OnSuccess" ("ID","Action","CenterCamera","Count","Message","Pause","Title") VALUES ('EventInvasion','SpawnGoblin',1,'$Num','A force of $Num goblin has arrived.',0,'Invasion'); INSERT INTO "Events_OnFailure" ("ID","Message","Title") VALUES ('EventMigration','Unfortunately those gnomes didn''t find an entry to your base.','Gnomes got lost.'); INSERT INTO "Events_OnFailure" ("ID","Message","Title") VALUES ('EventInvasion','Luckily for you those goblins didn''t find a way to your base.','Goblins got lost.'); INSERT INTO "Events_Init" ("ID","Title","Message","Min","Max","Pause","Require","Location") VALUES ('EventTrader','none','none',1.0,1.0,1,'FreeMarketStall','RandomBorderTile'); INSERT INTO "Events_Init" ("ID","Title","Message","Min","Max","Pause","Require","Location") VALUES ('EventMigration','New Gnomes','$Num new gnomes have arrived. Do you accept them into your base?',1.0,5.0,1,'Query','RandomBorderTile'); INSERT INTO "Events_Init" ("ID","Title","Message","Min","Max","Pause","Require","Location") VALUES ('EventInvasion','none','none',1.0,5.0,0,'None','RandomBorderTile'); INSERT INTO "Events_Expires" ("ID","After","Unit","Title","Message") VALUES ('EventMigration',1.0,'Day','You waited too long','Unfortunately your decision took too long and they are looking elsewhere.'); INSERT INTO "Events" ("ID","Trigger_","TriggerCount","TriggerUnit","NotBeforeDay","NotInPeaceful") VALUES ('EventTrader','Kingdom',0.0,'none',0,'false'); INSERT INTO "Events" ("ID","Trigger_","TriggerCount","TriggerUnit","NotBeforeDay","NotInPeaceful") VALUES ('EventMigration','OnSeasonChange',0.0,'none',0,'false'); INSERT INTO "Events" ("ID","Trigger_","TriggerCount","TriggerUnit","NotBeforeDay","NotInPeaceful") VALUES ('EventInvasion','Kingdom',0.0,'none',60,'true'); INSERT INTO "EmbeddedMaterials" ("ID","Highest","Lowest","Type","WallSprite") VALUES ('Coal',-6.0,-1000.0,'Ore','EmbeddedOre'); INSERT INTO "EmbeddedMaterials" ("ID","Highest","Lowest","Type","WallSprite") VALUES ('Tin',-7.0,-25.0,'Ore','EmbeddedOre'); INSERT INTO "EmbeddedMaterials" ("ID","Highest","Lowest","Type","WallSprite") VALUES ('Copper',-15.0,-30.0,'Ore','EmbeddedOre'); INSERT INTO "EmbeddedMaterials" ("ID","Highest","Lowest","Type","WallSprite") VALUES ('Malachite',-30.0,-50.0,'Ore','EmbeddedOre'); INSERT INTO "EmbeddedMaterials" ("ID","Highest","Lowest","Type","WallSprite") VALUES ('Lead',-20.0,-40.0,'Ore','EmbeddedOre'); INSERT INTO "EmbeddedMaterials" ("ID","Highest","Lowest","Type","WallSprite") VALUES ('Iron',-40.0,-80.0,'Ore','EmbeddedOre'); INSERT INTO "EmbeddedMaterials" ("ID","Highest","Lowest","Type","WallSprite") VALUES ('Silver',-50.0,-80.0,'Ore','EmbeddedOre'); INSERT INTO "EmbeddedMaterials" ("ID","Highest","Lowest","Type","WallSprite") VALUES ('Gold',-75.0,-95.0,'Ore','EmbeddedOre'); INSERT INTO "EmbeddedMaterials" ("ID","Highest","Lowest","Type","WallSprite") VALUES ('Platinum',-90.0,-100.0,'Ore','EmbeddedOre'); INSERT INTO "EmbeddedMaterials" ("ID","Highest","Lowest","Type","WallSprite") VALUES ('FlintStone',-3.0,-6.0,'Gem','EmbeddedGem'); INSERT INTO "EmbeddedMaterials" ("ID","Highest","Lowest","Type","WallSprite") VALUES ('Amber',-3.0,-15.0,'Gem','EmbeddedGem'); INSERT INTO "EmbeddedMaterials" ("ID","Highest","Lowest","Type","WallSprite") VALUES ('Beryll',-10.0,-40.0,'Gem','EmbeddedGem'); INSERT INTO "EmbeddedMaterials" ("ID","Highest","Lowest","Type","WallSprite") VALUES ('Topaz',-15.0,-60.0,'Gem','EmbeddedGem'); INSERT INTO "EmbeddedMaterials" ("ID","Highest","Lowest","Type","WallSprite") VALUES ('Amethyst',-30.0,-80.0,'Gem','EmbeddedGem'); INSERT INTO "EmbeddedMaterials" ("ID","Highest","Lowest","Type","WallSprite") VALUES ('Ruby',-30.0,-80.0,'Gem','EmbeddedGem'); INSERT INTO "EmbeddedMaterials" ("ID","Highest","Lowest","Type","WallSprite") VALUES ('Sapphire',-30.0,-80.0,'Gem','EmbeddedGem'); INSERT INTO "EmbeddedMaterials" ("ID","Highest","Lowest","Type","WallSprite") VALUES ('Emerald',-20.0,-70.0,'Gem','EmbeddedGem'); INSERT INTO "EmbeddedMaterials" ("ID","Highest","Lowest","Type","WallSprite") VALUES ('Diamond',-50.0,-1000.0,'Gem','EmbeddedGem'); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Goblin','LeftArm','GoblinArmLeft',1,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Goblin','Torso','GoblinTorso',2,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Goblin','RightArm','GoblinArmRight',4,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Goblin','Head','GoblinHead',5,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Goblin','Feet','GoblinFootLeft',6,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Goblin','Hair','#GoblinHair1|GoblinHair2|GoblinHair3|GoblinHair4',7,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Goblin','Facial','#GoblinBeard1|GoblinBeard2|GoblinBeard3|GoblinBeard4|GoblinBeard5',8,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Goblin','Clothing','#GoblinClothing1|GoblinClothing2|GoblinClothing3|GoblinClothing4|GoblinClothing5',3,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GoblinBack','Head','GoblinHead',1,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GoblinBack','Torso','GoblinTorso',2,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GoblinBack','LeftArm','GoblinArmLeft',4,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GoblinBack','RightArm','GoblinArmRight',5,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GoblinBack','Feet','GoblinFootLeft',6,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GoblinBack','Hair','#GoblinHair1|GoblinHair2|GoblinHair3|GoblinHair4|GoblinHair5',7,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GoblinBack','Clothing','#GoblinClothing1|GoblinClothing2|GoblinClothing3|GoblinClothing4|GoblinClothing5',3,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Gnome','RightArm','GnomeArmRight',6,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Gnome','RightArmArmor',NULL,7,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Gnome','RightHandArmor',NULL,8,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Gnome','Torso','GnomeTorso',4,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Gnome','Clothing','Shirt',5,'ShirtColor',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Gnome','ChestArmor',NULL,9,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Gnome','LeftArm','GnomeArmLeft',1,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Gnome','LeftArmArmor',NULL,2,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Gnome','LeftHandArmor',NULL,3,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Gnome','LeftFootArmor',NULL,'B','Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Gnome','RightFootArmor',NULL,'C','Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Gnome','Boots','GnomeBoots','A',NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Gnome','Head','GnomeHead','D',NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Gnome','Facial','FacialHair','E','HairColor',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Gnome','Hair','Hair','G','HairColor',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Gnome','HeadArmor',NULL,'F','Material','Hair'); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Gnome','RightHandHeld',NULL,'H','Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Gnome','LeftHandHeld',NULL,'I','Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GnomeBack','RightArm','GnomeArmRightBack','A',NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GnomeBack','RightArmArmor',NULL,'B','Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GnomeBack','RightHandArmor',NULL,'C','Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GnomeBack','Torso','GnomeTorsoBack',8,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GnomeBack','Clothing','Shirt',9,'$ShirtColor',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GnomeBack','ChestArmor',NULL,'D','Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GnomeBack','LeftArm','GnomeArmLeftBack',2,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GnomeBack','LeftArmArmor',NULL,3,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GnomeBack','LeftHandArmor',NULL,4,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GnomeBack','LeftFootArmor',NULL,6,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GnomeBack','RightFootArmor',NULL,7,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GnomeBack','Boots','GnomeBootsBack',5,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GnomeBack','Head','GnomeHeadBack',1,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GnomeBack','Hair','Hair','F','HairColor',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GnomeBack','HeadArmor',NULL,'E','Material','Hair'); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GnomeBack','RightHandHeld',NULL,'G','Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GnomeBack','LeftHandHeld',NULL,'H','Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantWorker','Torso','MantWorkerBodyFR',1,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantWorker','Head','MantWorkerHeadFR',2,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantWorker','LeftArm','MantWorkerArmLeftFR',3,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantWorker','RightArm','MantWorkerArmRightFR',4,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantWorker','LeftLeg','MantWorkerLegLeftFR',5,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantWorker','RightLeg','MantWorkerLegRightFR',6,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantWorkerBack','Torso','MantWorkerBodyBR',4,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantWorkerBack','Head','MantWorkerHeadBR',5,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantWorkerBack','LeftArm','MantWorkerArmLeftBR',3,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantWorkerBack','RightArm','MantWorkerArmRightBR',6,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantWorkerBack','LeftLeg','MantWorkerLegLeftBR',1,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantWorkerBack','RightLeg','MantWorkerLegRightBR',2,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantSoldier','Torso','MantSoldierBodyFR',3,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantSoldier','Head','MantSoldierHeadFR',5,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantSoldier','LeftArm','MantSoldierArmLeftFR',1,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantSoldier','RightArm','MantSoldierArmRightFR',4,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantSoldier','LeftLeg','MantSoldierLegLeftFR',6,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantSoldier','RightLeg','MantSoldierLegRightFR',2,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantSoldierBack','Torso','MantSoldierBodyBR',4,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantSoldierBack','Head','MantSoldierHeadBR',6,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantSoldierBack','LeftArm','MantSoldierArmLeftBR',5,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantSoldierBack','RightArm','MantSoldierArmRightBR',3,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantSoldierBack','LeftLeg','MantSoldierLegLeftBR',1,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantSoldierBack','RightLeg','MantSoldierLegRightBR',2,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantQueen','Torso','MantQueenBodyFR',3,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantQueen','Head','MantQueenHeadFR',5,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantQueen','LeftArm','MantQueenArmLeftFR',1,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantQueen','RightArm','MantQueenArmRightFR',4,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantQueen','LeftLeg','MantQueenLegLeftFR',6,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantQueen','RightLeg','MantQueenLegRightFR',2,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantQueenBack','Torso','MantQueenBodyBR',4,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantQueenBack','Head','MantQueenHeadBR',6,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantQueenBack','LeftArm','MantQueenArmLeftBR',5,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantQueenBack','RightArm','MantQueenArmRightBR',3,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantQueenBack','LeftLeg','MantQueenLegLeftBR',1,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('MantQueenBack','RightLeg','MantQueenLegRightBR',2,'',''); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Automaton','ArmLeft','AutomatonLeftArmFR',1,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Automaton','Torso','AutomatonTorsoFR',2,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Automaton','ArmRight','AutomatonRightArmFR',3,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Automaton','Head','AutomatonHeadFR',4,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Automaton','LegLeft','AutomatonLeftFootFR',5,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Automaton','LegRight','AutomatonRightFootFR',6,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('AutomatonBack','Head','AutomatonHeadBR',1,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('AutomatonBack','ArmLeft','AutomatonLeftArmBR',4,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('AutomatonBack','Torso','AutomatonTorsoBR',5,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('AutomatonBack','ArmRight','AutomatonRightArmBR',6,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('AutomatonBack','LegLeft','AutomatonLeftFootBR',2,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('AutomatonBack','LegRight','AutomatonRightFootBR',3,'Material',NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('AutomatonBack','Flame','AutomatonFurnaceFlameBR',7,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('Automaton','Eye','AutomatonEyeFR',7,NULL,NULL); INSERT INTO "Creature_Parts" ("ID","Part","BaseSprite","Order","Tint","Conceales") VALUES ('GnomeBack','Back',NULL,'I',NULL,NULL); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFL','0 0 0','Mammoth000'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFL','0 1 0','Mammoth010'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFL','0 2 0','Mammoth020'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFL','1 0 0','Mammoth100'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFL','1 1 0','Mammoth110'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFL','1 2 0','Mammoth120'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFL','0 0 1','Mammoth001'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFL','0 1 1','Mammoth011'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFL','0 2 1','Mammoth021'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFL','1 0 1','Mammoth101'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFL','1 1 1','Mammoth111'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFL','1 2 1','Mammoth121'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFL','0 0 2','Mammoth002'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFL','0 1 2','Mammoth012'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFL','0 2 2','Mammoth022'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFL','1 0 2','Mammoth102'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFL','1 1 2','Mammoth112'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFL','1 2 2','Mammoth122'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('SabretoothFL','0 0 0','Sabretooth1FL'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('SabretoothFL','0 -1 0','Sabretooth2FL'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('SabretoothFR','0 0 0','Sabretooth1FR'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('SabretoothFR','-1 0 0','Sabretooth2FR'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('SabretoothBR','0 0 0','Sabretooth1BR'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('SabretoothBR','0 1 0','Sabretooth2BR'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('SabretoothBL','0 0 0','Sabretooth1BL'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('SabretoothBL','1 0 0','Sabretooth2BL'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFR','0 0 0','Mammoth000'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFR','0 1 0','Mammoth010'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFR','0 2 0','Mammoth020'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFR','1 0 0','Mammoth100'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFR','1 1 0','Mammoth110'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFR','1 2 0','Mammoth120'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFR','0 0 1','Mammoth001'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFR','0 1 1','Mammoth011'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFR','0 2 1','Mammoth021'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFR','1 0 1','Mammoth101'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFR','1 1 1','Mammoth111'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFR','1 2 1','Mammoth121'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFR','0 0 2','Mammoth002'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFR','0 1 2','Mammoth012'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFR','0 2 2','Mammoth022'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFR','1 0 2','Mammoth102'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFR','1 1 2','Mammoth112'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothFR','1 2 2','Mammoth122'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBL','0 0 0','Mammoth000'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBL','0 1 0','Mammoth010'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBL','0 2 0','Mammoth020'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBL','1 0 0','Mammoth100'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBL','1 1 0','Mammoth110'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBL','1 2 0','Mammoth120'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBL','0 0 1','Mammoth001'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBL','0 1 1','Mammoth011'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBL','0 2 1','Mammoth021'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBL','1 0 1','Mammoth101'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBL','1 1 1','Mammoth111'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBL','1 2 1','Mammoth121'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBL','0 0 2','Mammoth002'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBL','0 1 2','Mammoth012'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBL','0 2 2','Mammoth022'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBL','1 0 2','Mammoth102'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBL','1 1 2','Mammoth112'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBL','1 2 2','Mammoth122'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBR','0 0 0','Mammoth000'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBR','0 1 0','Mammoth010'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBR','0 2 0','Mammoth020'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBR','1 0 0','Mammoth100'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBR','1 1 0','Mammoth110'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBR','1 2 0','Mammoth120'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBR','0 0 1','Mammoth001'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBR','0 1 1','Mammoth011'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBR','0 2 1','Mammoth021'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBR','1 0 1','Mammoth101'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBR','1 1 1','Mammoth111'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBR','1 2 1','Mammoth121'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBR','0 0 2','Mammoth002'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBR','0 1 2','Mammoth012'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBR','0 2 2','Mammoth022'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBR','1 0 2','Mammoth102'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBR','1 1 2','Mammoth112'); INSERT INTO "Creature_Layouts" ("ID","Offset","Sprite") VALUES ('MammothBR','1 2 2','Mammoth122'); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Plank','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Stick','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Haft','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Hilt','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Knife','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('StoneChair','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('WoodTable','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('WoodChair','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('StoneTable','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Workbench','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Crate','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Barrel','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Chisel','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('StoneSawblade','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('KnifeBlade','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Block','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Bread','TechFood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Beer','TechFood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Wine','TechFood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('FruitWine','TechFood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('HoneyWine','TechFood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Bar','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('BronzeBar','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('SteelBar','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('RoseGoldBar','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Anvil','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('SliverBar','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Gem','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Bolt','TechCloth',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('RawCoal','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Brick','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Tile','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('ClayStatuette','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Tea','TechFood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('StoneDoor','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Hearth','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Mold','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Furnace','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Trough','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('StoneSword','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('StoneHandAxe','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('StoneHammer','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('StoneCrossbowBolt','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('StoneMusketRound','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('StoneStatue','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('StonePillar','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('StoneStatuette','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('PetRock','TechStone',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('BedFrame','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('FancyBedFrame','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Bed','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('FancyBed','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('WoodDoor','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Dresser','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Cabinet','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Torch','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Loom','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Bellows','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('TrainingDummy','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Wheelbarrow','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Bucket','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('WoodenShield','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('CrossbowStock','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('BlunderbussStock','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('PistolStock','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('WoodStatue','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('WoodStatuette','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('PuzzleBox','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('FellingAxeHead','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('FellingAxe','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('CuttingWheel','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('File','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('BallPeenHammer','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('AlarmBell','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('MetalStatue','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('MetalStatuette','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Coin','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Wrench','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Rod','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Gear','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Spring','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Spike','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('MetalCrossbowBolt','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('CrossbowBow','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('MetalMusketRound','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('BlunderbussBarrel','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('PistolBarrel','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Screw','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Ring','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('GemmedRing','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Necklace','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('GemmedNecklace','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Bag','TechCloth',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Sack','TechCloth',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Bandage','TechCloth',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('String','TechCloth',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Padding','TechCloth',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Mattress','TechCloth',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('AmmoPouch','TechCloth',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('LeatherStrap','TechLeather',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('LeatherArmorPanel','TechLeather',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('LeatherHelm','TechLeather',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('LeatherCuirass','TechLeather',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('LeatherBracer','TechLeather',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('LeatherGreave','TechLeather',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('LeatherGlove','TechLeather',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('LeatherBoot','TechLeather',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Quiver','TechLeather',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Sausage','TechFood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Sandwich','TechFood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Cheese','TechFood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('CheeseOmelette','TechFood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('SausageOmelette','TechFood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('MushroomOmelette','TechFood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('SwordBlade','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Sword','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('HandAxeHead','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('HandAxe','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('HammerHead','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Hammer','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('ClaymoreBlade','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Claymore','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('BattleAxeHead','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('BattleAxe','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('WarhammerHead','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Warhammer','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('ShieldBoss','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('ShieldBacking','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Shield','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('TowerShieldBacking','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('TowerShield','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('ArmorPlate','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Helmet','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Breastplate','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Pauldron','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Greave','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Gauntlet','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Boot','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Axle','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('MechanismBase','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Gearbox','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Handcrank','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('TrapBase','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('SpikeTrap','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('BladeTrap','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Crossbow','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Lever','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('MechanicalWall','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('WindmillBlade','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('PressurePlate','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Hatch','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Blunderbuss','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Pistol','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Cylinder','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('ArtificialArm','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('ArtificialHand','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('ArtificialLeg','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('ArtificialFoot','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Automaton','TechEngineer',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('MetalNeedle','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('BoneStatuette','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('SkullHelmet','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('BoneShirt','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('ChainBoots','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('ChainPants','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('ChainGloves','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('ChainBracers','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('ChainShirt','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('ChainHelm','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('PlateBoots','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('PlatePauldrons','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('PlateGloves','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('PlateHelm','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('PlateGreaves','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('PlateChest','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('HeavyPlateBoots','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('HeavyPlateChest','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('HeavyPlateGloves','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('HeavyPlateGreaves','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('HeavyPlateHelm','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('HeavyPlatePauldrons','TechMetal',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('BeeHive','TechWood',1.0); INSERT INTO "Crafts_TechGain" ("ID","TechID","Value") VALUES ('Chest','TechCloth',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Plank',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Stick',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Haft',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Hilt',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Knife',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('StoneChair',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('WoodTable',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('WoodChair',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('StoneTable',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Workbench',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Crate',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Barrel',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Chisel',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('StoneSawblade',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('KnifeBlade',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Block',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Bread',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Beer',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Wine',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('FruitWine',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('HoneyWine',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Bar',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('BronzeBar',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('SteelBar',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('RoseGoldBar',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Anvil',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('SliverBar',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Gem',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Bolt',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('RawCoal',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Brick',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Tile',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('ClayStatuette',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Tea',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('StoneDoor',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Hearth',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Mold',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Furnace',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('StoneSword',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('StoneHandAxe',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('StoneHammer',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('StoneCrossbowBolt',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('StoneMusketRound',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('StoneStatue',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('StonePillar',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('StoneStatuette',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('PetRock',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('BedFrame',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('FancyBedFrame',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Bed',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('FancyBed',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('WoodDoor',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Dresser',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Cabinet',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Torch',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Loom',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Bellows',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('TrainingDummy',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Wheelbarrow',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Bucket',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('WoodenShield',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('CrossbowStock',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('BlunderbussStock',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('PistolStock',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('WoodStatue',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('WoodStatuette',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('PuzzleBox',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('FellingAxeHead',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('FellingAxe',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('CuttingWheel',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('File',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('BallPeenHammer',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('AlarmBell',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('MetalStatue',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('MetalStatuette',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Coin',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Wrench',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Rod',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Gear',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Spring',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Spike',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('MetalCrossbowBolt',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('CrossbowBow',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('MetalMusketRound',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('BlunderbussBarrel',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('PistolBarrel',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Screw',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Ring',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('GemmedRing',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Necklace',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('GemmedNecklace',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Bag',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Sack',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Bandage',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('String',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Padding',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Mattress',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('AmmoPouch',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('LeatherStrap',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('LeatherArmorPanel',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('LeatherHelm',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('LeatherCuirass',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('LeatherBracer',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('LeatherGreave',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('LeatherGlove',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('LeatherBoot',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Quiver',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Sausage',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Sandwich',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Cheese',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('CheeseOmelette',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('SausageOmelette',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('MushroomOmelette',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('SwordBlade',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Sword',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('HandAxeHead',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('HandAxe',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('HammerHead',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Hammer',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('ClaymoreBlade',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Claymore',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('BattleAxeHead',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('BattleAxe',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('WarhammerHead',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Warhammer',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('ShieldBoss',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('ShieldBacking',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Shield',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('TowerShieldBacking',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('TowerShield',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('ArmorPlate',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Helmet',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Breastplate',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Pauldron',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Greave',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Gauntlet',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Boot',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Axle',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('MechanismBase',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Gearbox',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Handcrank',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('TrapBase',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('SpikeTrap',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('BladeTrap',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Crossbow',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Lever',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('MechanicalWall',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('WindmillBlade',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('PressurePlate',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Hatch',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Blunderbuss',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Pistol',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Cylinder',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('ArtificialArm',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('ArtificialHand',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('ArtificialLeg',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('ArtificialFoot',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Automaton',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Needle',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('MetalNeedle',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('BoneStatuette',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('SkullHelmet',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('BoneShirt',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('ChainBoots',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('ChainPants',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('ChainGloves',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('ChainBracers',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('ChainShirt',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('ChainHelm',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('PlateBoots',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('PlatePauldrons',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('PlateGloves',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('PlateHelm',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('PlateGreaves',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('PlateChest',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('HeavyPlateBoots',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('HeavyPlateChest',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('HeavyPlateGloves',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('HeavyPlateGreaves',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('HeavyPlateHelm',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('HeavyPlatePauldrons',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('BeeHive',1.0); INSERT INTO "Crafts_SkillGain" ("ID","Value") VALUES ('Chest',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Crate','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Barrel','tech','TechWood',10.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Bar','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('BronzeBar','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('SteelBar','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('RoseGoldBar','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Anvil','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('SliverBar','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Gem','tech','TechStone',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Bolt','tech','TechCloth',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('RawCoal','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Brick','tech','TechStone',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Tile','tech','TechStone',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('ClayStatuette','tech','TechStone',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Tea','tech','TechFood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('StoneDoor','tech','TechStone',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Hearth','tech','TechStone',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Mold','tech','TechStone',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Furnace','tech','TechStone',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Trough','tech','TechStone',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('StoneSword','tech','TechStone',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('StoneHandAxe','tech','TechStone',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('StoneHammer','tech','TechStone',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('StoneCrossbowBolt','tech','TechStone',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('StoneMusketRound','tech','TechStone',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('StoneStatue','tech','TechStone',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('StonePillar','tech','TechStone',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('StoneStatuette','tech','TechStone',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('PetRock','tech','TechStone',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('BedFrame','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('FancyBedFrame','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Bed','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('FancyBed','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('WoodDoor','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Dresser','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Cabinet','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Torch','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Loom','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Bellows','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('TrainingDummy','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Wheelbarrow','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Bucket','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('WoodenShield','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('CrossbowStock','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('BlunderbussStock','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('PistolStock','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('WoodStatue','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('WoodStatuette','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('PuzzleBox','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('FellingAxeHead','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('FellingAxe','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('CuttingWheel','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('File','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('BallPeenHammer','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('AlarmBell','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('MetalStatue','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('MetalStatuette','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Coin','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Wrench','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Rod','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Gear','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Spring','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Spike','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('MetalCrossbowBolt','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('CrossbowBow','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('MetalMusketRound','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('BlunderbussBarrel','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('PistolBarrel','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Screw','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Ring','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('GemmedRing','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Necklace','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('GemmedNecklace','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Bag','tech','TechCloth',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Sack','tech','TechCloth',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Bandage','tech','TechCloth',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('String','tech','TechCloth',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Padding','tech','TechCloth',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Mattress','tech','TechCloth',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('AmmoPouch','tech','TechCloth',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('LeatherStrap','tech','TechLeather',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('LeatherArmorPanel','tech','TechLeather',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('LeatherHelm','tech','TechLeather',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('LeatherCuirass','tech','TechLeather',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('LeatherBracer','tech','TechLeather',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('LeatherGreave','tech','TechLeather',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('LeatherGlove','tech','TechLeather',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('LeatherBoot','tech','TechLeather',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Quiver','tech','TechLeather',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Sausage','tech','TechFood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Sandwich','tech','TechFood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Cheese','tech','TechFood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('CheeseOmelette','tech','TechFood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('SausageOmelette','tech','TechFood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('MushroomOmelette','tech','TechFood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('SwordBlade','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Sword','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('HandAxeHead','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('HandAxe','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('HammerHead','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Hammer','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('ClaymoreBlade','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Claymore','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('BattleAxeHead','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('BattleAxe','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('WarhammerHead','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Warhammer','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('ShieldBoss','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('ShieldBacking','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Shield','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('TowerShieldBacking','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('TowerShield','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('ArmorPlate','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Helmet','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Breastplate','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Pauldron','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Greave','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Gauntlet','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Boot','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Axle','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('MechanismBase','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Gearbox','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Handcrank','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('TrapBase','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('SpikeTrap','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('BladeTrap','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Crossbow','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Lever','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('MechanicalWall','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('WindmillBlade','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('PressurePlate','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Hatch','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Blunderbuss','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Pistol','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Cylinder','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('ArtificialArm','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('ArtificialHand','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('ArtificialLeg','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('ArtificialFoot','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Automaton','tech','TechEngineer',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Needle','tech','TechCloth',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('MetalNeedle','tech','TechMetal',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('BoneStatuette','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('SkullHelmet','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('BoneShirt','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('PickaxeHeadFlintStone','tech','TechWood',1.0); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('ChainBoots',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('ChainPants',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('ChainGloves',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('ChainBracers',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('ChainShirt',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('ChainHelm',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('PlateBoots',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('PlatePauldrons',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('PlateGloves',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('PlateHelm',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('PlateGreaves',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('PlateChest',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('HeavyPlateBoots',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('HeavyPlateChest',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('HeavyPlateGloves',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('HeavyPlateGreaves',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('HeavyPlateHelm',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('HeavyPlatePauldrons',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('BeeHive',NULL,NULL,NULL); INSERT INTO "Crafts_Prereqs" ("ID","Category","TechGroup","Value") VALUES ('Chest',NULL,NULL,NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Cider','Apple',NULL,1,'Fruit',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Vinegar',NULL,NULL,1,'Wine',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Sugar','Sugarbeet',NULL,1,'Vegetable',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('DropCandy',NULL,NULL,2,'Sugar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('DropCandy',NULL,NULL,1,'Fruit',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ShepherdsPie',NULL,NULL,1,'Vegetable',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ShepherdsPie',NULL,NULL,1,'Vegetable',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ShepherdsPie','Potato',NULL,1,'Vegetable',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ShepherdsPie',NULL,NULL,1,'Meat',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Biscuit',NULL,NULL,1,'Flour',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Biscuit',NULL,NULL,1,'Egg',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PickledFruit',NULL,NULL,1,'Fruit',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PickledFruit',NULL,NULL,1,'Sugar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PickledFruit',NULL,NULL,1,'GlassJar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FruitPreserve',NULL,NULL,2,'Fruit',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SmokedMeat',NULL,NULL,1,'Meat',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SmokedMeat',NULL,'Wood',1,'RawCoal',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SmokedSausage',NULL,NULL,1,'Sausage',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SmokedSausage',NULL,'Wood',1,'RawCoal',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FruitBread',NULL,NULL,1,'Fruit',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FruitBread',NULL,NULL,1,'Flour',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FreshCheese',NULL,NULL,2,'Milk',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HardCheese',NULL,NULL,2,'Milk',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MeatPie',NULL,NULL,1,'Meat',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MeatPie',NULL,NULL,1,'Flour',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MeatPie',NULL,NULL,1,'Egg',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PickledVegetable',NULL,NULL,1,'Vegetable',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PickledVegetable',NULL,NULL,1,'Vinegar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PickledVegetable',NULL,NULL,1,'GlassJar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PickledEgg',NULL,NULL,1,'Egg',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PickledEgg',NULL,NULL,1,'Vinegar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PickledEgg',NULL,NULL,1,'GlassJar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('VegetablePreserve',NULL,NULL,1,'Vegetable',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SmokedBird','Chicken|Duck|Emu',NULL,1,'Meat',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SmokedBird',NULL,'Wood',1,'RawCoal',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SmokedFish',NULL,NULL,1,'FishMeat',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SmokedFish',NULL,'Wood',1,'RawCoal',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FlatBread',NULL,NULL,1,'Flour',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FruitPie',NULL,NULL,1,'Fruit',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FruitPie',NULL,NULL,1,'Flour',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FruitPie',NULL,NULL,1,'Sugar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FruitPie',NULL,NULL,1,'Egg',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('VeggiePie',NULL,NULL,1,'Vegetable',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('VeggiePie',NULL,NULL,1,'Flour',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('VeggiePie',NULL,NULL,1,'Egg',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FineMeatPie',NULL,NULL,3,'Meat',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FineMeatPie',NULL,NULL,1,'Flour',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FineMeatPie',NULL,NULL,1,'Egg',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Plank',NULL,NULL,1,'RawWood',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Stick',NULL,NULL,1,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Haft',NULL,NULL,1,'Stick',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Hilt',NULL,NULL,1,'Stick',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Knife',NULL,NULL,1,'KnifeBlade',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Knife',NULL,NULL,1,'Hilt',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('StoneChair',NULL,NULL,4,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('WoodTable',NULL,NULL,2,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('WoodTable',NULL,NULL,4,'Stick',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('WoodChair',NULL,NULL,2,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('WoodChair',NULL,NULL,4,'Stick',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('StoneTable',NULL,NULL,5,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Workbench',NULL,NULL,6,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Crate',NULL,NULL,4,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Barrel',NULL,NULL,4,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Chisel',NULL,NULL,2,'RawStone',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('StoneSawblade',NULL,NULL,1,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('KnifeBlade',NULL,NULL,1,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Block',NULL,NULL,1,'RawStone',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Bread',NULL,NULL,1,'Flour',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Beer',NULL,NULL,1,'Grain',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Wine',NULL,NULL,1,'Berries',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FruitWine',NULL,NULL,1,'Fruit',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HoneyWine',NULL,NULL,1,'Honey',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('DyedTable',NULL,'Wood',1,'Table',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('DyedTable',NULL,NULL,1,'Dye',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('DyedPlank',NULL,NULL,1,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('DyedPlank',NULL,NULL,1,'Dye',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('RedDye','BeetRoot',NULL,1,'Vegetable',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('RedDye','BeetRoot',NULL,1,'Vegetable',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('GreenDye','Woad',NULL,1,'Leaves',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('GreenDye','DyersWeed',NULL,1,'Leaves',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BlueDye','Woad',NULL,1,'Leaves',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BlueDye','Woad',NULL,1,'Leaves',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('YellowDye','DyersWeed',NULL,1,'Leaves',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('YellowDye','DyersWeed',NULL,1,'Leaves',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PurpleDye','Red',NULL,1,'Dye',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PurpleDye','Blue',NULL,1,'Dye',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('CyanDye','Green',NULL,1,'Dye',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('CyanDye','Blue',NULL,1,'Dye',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('DyeHair',NULL,NULL,1,'Dye',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Bar',NULL,NULL,2,'RawOre','true'); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Bar',NULL,NULL,1,'RawCoal',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BronzeBar','Tin',NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BronzeBar','Copper',NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BronzeBar',NULL,NULL,1,'RawCoal',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SteelBar','Iron',NULL,2,'Bar','true'); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SteelBar',NULL,NULL,2,'RawCoal',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('RoseGoldBar','Gold',NULL,3,'Bar','true'); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('RoseGoldBar','Copper',NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('RoseGoldBar',NULL,NULL,1,'RawCoal',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Anvil',NULL,NULL,8,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SliverBar',NULL,NULL,10,'Sliver',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SliverBar',NULL,NULL,1,'RawCoal',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Gem',NULL,NULL,1,'RawGem',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Bolt',NULL,NULL,1,'RawCloth',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('RawCoal',NULL,NULL,1,'RawWood',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Brick','Clay|Sand',NULL,1,'RawSoil',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Brick',NULL,NULL,1,'RawCoal',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ClayStatuette','Clay',NULL,1,'RawSoil',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Tea',NULL,NULL,1,'Mushroom',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('StoneDoor',NULL,NULL,4,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Hearth',NULL,NULL,6,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Mold',NULL,NULL,4,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Furnace',NULL,NULL,10,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Trough',NULL,NULL,4,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('StoneSword',NULL,NULL,1,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('StoneSword',NULL,NULL,1,'Hilt',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('StoneHandAxe',NULL,NULL,1,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('StoneHandAxe',NULL,NULL,1,'Haft',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('StoneHammer',NULL,NULL,1,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('StoneHammer',NULL,NULL,1,'Haft',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('StoneCrossbowBolt',NULL,NULL,1,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('StoneMusketRound',NULL,NULL,1,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('StoneStatue',NULL,NULL,4,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('StonePillar',NULL,NULL,4,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('StoneStatuette',NULL,NULL,1,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PetRock',NULL,NULL,1,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BedFrame',NULL,NULL,4,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FancyBedFrame',NULL,NULL,4,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Bed',NULL,NULL,1,'WoodBedFrame',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Bed',NULL,NULL,1,'Mattress',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FancyBed',NULL,NULL,1,'FancyBedFrame',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FancyBed',NULL,NULL,1,'Mattress',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('WoodDoor',NULL,NULL,4,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Dresser',NULL,NULL,6,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Cabinet',NULL,NULL,6,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Torch',NULL,NULL,1,'Stick',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Torch',NULL,NULL,1,'RawCoal',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Loom',NULL,NULL,4,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Loom',NULL,NULL,4,'Stick',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Bellows',NULL,NULL,2,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('TrainingDummy',NULL,NULL,1,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('TrainingDummy',NULL,NULL,2,'Stick',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Wheelbarrow',NULL,NULL,4,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Wheelbarrow',NULL,NULL,2,'Stick',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Bucket',NULL,NULL,4,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('WoodenShield',NULL,NULL,3,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('CrossbowStock',NULL,NULL,1,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BlunderbussStock',NULL,NULL,1,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PistolStock',NULL,NULL,1,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('WoodStatue',NULL,NULL,4,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('WoodStatuette',NULL,NULL,1,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PuzzleBox',NULL,NULL,1,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FellingAxeHead',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FellingAxe',NULL,NULL,1,'FellingAxeHead',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FellingAxe',NULL,NULL,1,'Haft',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('CuttingWheel',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('File',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BallPeenHammer',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('AlarmBell',NULL,NULL,1,'AlarmBellBell',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('AlarmBell',NULL,NULL,1,'AlarmBellBase',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MetalStatue',NULL,NULL,4,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MetalStatuette',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Coin',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Wrench',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Rod',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Gear',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Spring',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Spike',NULL,NULL,2,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MetalCrossbowBolt',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('CrossbowBow',NULL,NULL,3,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MetalMusketRound',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BlunderbussBarrel',NULL,NULL,5,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PistolBarrel',NULL,NULL,3,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Screw',NULL,NULL,2,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Ring',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('GemmedRing',NULL,NULL,1,'Gem',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('GemmedRing',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Necklace',NULL,NULL,2,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('GemmedNecklace',NULL,NULL,1,'Gem',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('GemmedNecklace',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Bag',NULL,NULL,2,'Bolt',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Bag',NULL,NULL,1,'String',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Sack',NULL,NULL,2,'Bolt',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Sack',NULL,NULL,2,'String',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Bandage',NULL,NULL,1,'Bolt',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('String',NULL,NULL,1,'Bolt',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Padding',NULL,NULL,1,'Bolt',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Padding',NULL,NULL,1,'RawCloth',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Padding',NULL,NULL,1,'String',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Mattress',NULL,NULL,4,'Bolt',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Mattress',NULL,NULL,1,'String',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Mattress',NULL,NULL,2,'Straw',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('AmmoPouch',NULL,NULL,1,'Bolt',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('AmmoPouch',NULL,NULL,1,'String',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherStrap',NULL,NULL,1,'RawHide',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherArmorPanel',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherHelm',NULL,NULL,3,'LeatherArmorPanel',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherHelm',NULL,NULL,1,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherHelm',NULL,NULL,1,'String',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherCuirass',NULL,NULL,4,'LeatherArmorPanel',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherCuirass',NULL,NULL,2,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherCuirass',NULL,NULL,2,'String',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherBracer',NULL,NULL,2,'LeatherArmorPanel',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherBracer',NULL,NULL,1,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherBracer',NULL,NULL,1,'String',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherPants',NULL,NULL,2,'LeatherArmorPanel',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherPants',NULL,NULL,1,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherPants',NULL,NULL,1,'String',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherGlove',NULL,NULL,1,'LeatherArmorPanel',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherGlove',NULL,NULL,1,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherGlove',NULL,NULL,1,'String',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherBoot',NULL,NULL,1,'LeatherArmorPanel',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherBoot',NULL,NULL,1,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('LeatherBoot',NULL,NULL,1,'String',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Quiver',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Quiver',NULL,NULL,1,'String',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Sausage',NULL,NULL,1,'Meat',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Sandwich',NULL,NULL,1,'Sausage',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Sandwich',NULL,NULL,1,'Bread',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Cheese',NULL,NULL,1,'Milk',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('CheeseOmelette',NULL,NULL,1,'Cheese',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('CheeseOmelette',NULL,NULL,1,'Egg',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SausageOmelette',NULL,NULL,1,'Sausage',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SausageOmelette',NULL,NULL,1,'Cheese',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SausageOmelette',NULL,NULL,1,'Egg',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MushroomOmelette',NULL,NULL,1,'Mushroom',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MushroomOmelette',NULL,NULL,1,'Cheese',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MushroomOmelette',NULL,NULL,1,'Egg',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SwordBlade',NULL,NULL,5,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Sword',NULL,NULL,1,'SwordBlade',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Sword',NULL,NULL,1,'Hilt',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HandAxeHead',NULL,NULL,5,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HandAxe',NULL,NULL,1,'HandAxeHead',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HandAxe',NULL,NULL,1,'Haft',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HammerHead',NULL,NULL,5,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Hammer',NULL,NULL,1,'HammerHead',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Hammer',NULL,NULL,1,'Haft',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ClaymoreBlade',NULL,NULL,8,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Claymore',NULL,NULL,1,'ClaymoreBlade',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Claymore',NULL,NULL,1,'Hilt',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BattleAxeHead',NULL,NULL,8,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BattleAxe',NULL,NULL,1,'BattleAxeHead',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BattleAxe',NULL,NULL,1,'Haft',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('WarhammerHead',NULL,NULL,8,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Warhammer',NULL,NULL,1,'WarhammerHead',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Warhammer',NULL,NULL,1,'Haft',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ShieldBoss',NULL,NULL,2,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ShieldBacking',NULL,NULL,3,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Shield',NULL,NULL,1,'ShieldBoss',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Shield',NULL,NULL,1,'ShieldBacking',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('TowerShieldBacking',NULL,NULL,6,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('TowerShield',NULL,NULL,1,'ShieldBoss',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('TowerShield',NULL,NULL,1,'TowerShieldBacking',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Helmet',NULL,NULL,3,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Helmet',NULL,NULL,1,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Helmet',NULL,NULL,1,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Breastplate',NULL,NULL,4,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Breastplate',NULL,NULL,2,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Breastplate',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Pauldron',NULL,NULL,2,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Pauldron',NULL,NULL,1,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Pauldron',NULL,NULL,1,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Greave',NULL,NULL,2,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Greave',NULL,NULL,1,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Greave',NULL,NULL,1,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Gauntlet',NULL,NULL,1,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Gauntlet',NULL,NULL,1,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Boot',NULL,NULL,1,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Boot',NULL,NULL,1,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Axle',NULL,NULL,1,'Rod',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MechanismBase',NULL,NULL,2,'Gear',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MechanismBase',NULL,NULL,1,'Spring',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Gearbox',NULL,NULL,1,'MechanismBase',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Gearbox',NULL,NULL,4,'Gear',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Handcrank',NULL,NULL,1,'MechanismBase',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Handcrank',NULL,NULL,1,'Rod',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('TrapBase',NULL,NULL,1,'MechanismBase',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('TrapBase',NULL,NULL,1,'Spring',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SpikeTrap',NULL,NULL,1,'TrapBase',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SpikeTrap',NULL,NULL,3,'Spike',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BladeTrap',NULL,NULL,1,'TrapBase',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BladeTrap',NULL,NULL,1,'SwordBlade',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Crossbow',NULL,NULL,1,'CrossbowBow',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Crossbow',NULL,NULL,1,'CrossbowStock',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Crossbow',NULL,NULL,1,'String',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Lever',NULL,NULL,1,'MechanismBase',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Lever',NULL,NULL,1,'Rod',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MechanicalWall',NULL,NULL,1,'MechanismBase',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MechanicalWall',NULL,NULL,2,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('WindmillBlade',NULL,NULL,1,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('WindmillBlade',NULL,NULL,1,'Bolt',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PressurePlate',NULL,NULL,1,'MechanismBase',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PressurePlate',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Hatch',NULL,NULL,1,'MechanismBase',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Hatch',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Blunderbuss',NULL,NULL,1,'BlunderbussBarrel',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Blunderbuss',NULL,NULL,1,'BlunderbussStock',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Pistol',NULL,NULL,1,'PistolBarrel',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Pistol',NULL,NULL,1,'PistolStock',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Cylinder',NULL,NULL,4,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ArtificialArm',NULL,NULL,2,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ArtificialArm',NULL,NULL,1,'Rod',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ArtificialArm',NULL,NULL,1,'Gear',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ArtificialArm',NULL,NULL,1,'ArtificialHand',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ArtificialHand',NULL,NULL,1,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ArtificialHand',NULL,NULL,1,'Gear',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ArtificialLeg',NULL,NULL,2,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ArtificialLeg',NULL,NULL,1,'Rod',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ArtificialLeg',NULL,NULL,1,'Gear',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ArtificialLeg',NULL,NULL,1,'ArtificialFoot',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ArtificialFoot',NULL,NULL,1,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ArtificialFoot',NULL,NULL,1,'Gear',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Needle',NULL,NULL,1,'Bone',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MetalNeedle',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BoneStatuette',NULL,NULL,1,'Bone',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SkullHelmet',NULL,NULL,1,'Skull',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BoneShirt',NULL,NULL,4,'Bone',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BoneShirt',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PickaxeHeadWood',NULL,NULL,1,'Stick',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PickaxeHeadFlintStone','FlintStone',NULL,1,'Gem',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PickaxeHeadStone',NULL,NULL,1,'Block',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PickaxeBaseWood',NULL,NULL,1,'Stick',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Pickaxe',NULL,NULL,1,'PickaxeHead',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Pickaxe',NULL,NULL,1,'PickaxeBase',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FishingRod',NULL,NULL,1,'Stick',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FishingRod',NULL,NULL,1,'String',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SliverFromStone',NULL,NULL,1,'RawStone',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SliverFromDirt',NULL,NULL,10,'RawSoil',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ChainBoots',NULL,NULL,2,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ChainBoots',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ChainBracers',NULL,NULL,2,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ChainBracers',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ChainGloves',NULL,NULL,2,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ChainGloves',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ChainHelm',NULL,NULL,2,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ChainHelm',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ChainHelm',NULL,NULL,2,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ChainPants',NULL,NULL,3,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ChainPants',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ChainPants',NULL,NULL,2,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ChainShirt',NULL,NULL,4,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ChainShirt',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ChainShirt',NULL,NULL,2,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('ArmorPlate',NULL,NULL,2,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HeavyPlateBoots',NULL,NULL,8,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HeavyPlateBoots',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HeavyPlateChest',NULL,NULL,16,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HeavyPlateChest',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HeavyPlateChest',NULL,NULL,4,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HeavyPlateGloves',NULL,NULL,8,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HeavyPlateGloves',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HeavyPlateGreaves',NULL,NULL,12,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HeavyPlateGreaves',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HeavyPlateGreaves',NULL,NULL,2,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HeavyPlateHelm',NULL,NULL,8,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HeavyPlateHelm',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HeavyPlateHelm',NULL,NULL,2,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HeavyPlatePauldrons',NULL,NULL,8,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('HeavyPlatePauldrons',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PlateBoots',NULL,NULL,4,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PlateBoots',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PlateChest',NULL,NULL,8,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PlateChest',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PlateChest',NULL,NULL,4,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PlateGloves',NULL,NULL,4,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PlateGloves',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PlateGreaves',NULL,NULL,6,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PlateGreaves',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PlateGreaves',NULL,NULL,2,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PlateHelm',NULL,NULL,4,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PlateHelm',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PlateHelm',NULL,NULL,2,'Padding',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PlatePauldrons',NULL,NULL,4,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PlatePauldrons',NULL,NULL,2,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('DyedBolt',NULL,NULL,1,'Bolt',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('DyedBolt',NULL,NULL,1,'Dye',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('PickaxeHeadMetal',NULL,NULL,1,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SteamEngine',NULL,NULL,1,'MechanismBase',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SteamEngine',NULL,NULL,1,'Cylinder',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SteamEngine',NULL,NULL,1,'Rod',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('SteamEngine',NULL,NULL,1,'Gear',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Automaton',NULL,NULL,1,'AutomatonTorso',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Automaton',NULL,NULL,1,'AutomatonHead',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Automaton',NULL,NULL,2,'AutomatonLeg',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Automaton',NULL,NULL,2,'AutomatonArm',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('AutomatonHead',NULL,NULL,3,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('AutomatonTorso',NULL,NULL,5,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('AutomatonArm',NULL,NULL,3,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('AutomatonLeg',NULL,NULL,4,'ArmorPlate',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Flour',NULL,NULL,1,'Grain',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('FlourKitchen',NULL,NULL,1,'Grain',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BoneTable',NULL,NULL,8,'Bone',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BoneChair',NULL,NULL,5,'Bone',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BoneBedFrame',NULL,NULL,6,'Bone',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BoneBed',NULL,NULL,1,'BoneBedFrame',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BoneBed',NULL,NULL,1,'Mattress',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('AutomatonCoreMark1',NULL,NULL,2,'Screw',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('AutomatonCoreMark1',NULL,NULL,2,'Gear',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('AutomatonCoreMark1',NULL,NULL,2,'Spring',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('AutomatonCoreMark2',NULL,NULL,4,'Screw',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('AutomatonCoreMark2',NULL,NULL,4,'Gear',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('AutomatonCoreMark2',NULL,NULL,4,'Spring',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Shed',NULL,NULL,6,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BurnFishBone',NULL,NULL,1,'FishBone',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BurnBone',NULL,NULL,1,'Bone',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BurnStraw',NULL,NULL,1,'Straw',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BurnSeeds',NULL,NULL,5,'Seed',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('AlarmBellBell',NULL,NULL,2,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('AlarmBellBase',NULL,NULL,2,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BeeHive','','',4,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Chest',NULL,NULL,3,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Bookshelf',NULL,NULL,6,'Plank',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BigTorch',NULL,NULL,3,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('BigTorch',NULL,NULL,2,'RawCoal',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Brazier',NULL,NULL,4,'Bar',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Brazier',NULL,NULL,4,'RawCoal',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Backpack',NULL,NULL,4,'LeatherStrap',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Backpack',NULL,NULL,1,'LeatherArmorPanel',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('Backpack',NULL,NULL,2,'String',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('GlassIngot','Sand',NULL,1,'RawSoil',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('GlassIngot',NULL,NULL,2,'RawCoal',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('RoughGlassGem','Sand',NULL,1,'RawSoil',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('RoughGlassGem',NULL,NULL,2,'RawCoal',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MosaicTile',NULL,NULL,1,'GlassIngot',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MosaicTile','Red',NULL,1,'Dye',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MosaicTile','Green',NULL,1,'Dye',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('MosaicTile','Blue',NULL,1,'Dye',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('GlassJar',NULL,NULL,1,'GlassIngot',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('GlassJar',NULL,NULL,1,'RawCoal',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('GlassBottle',NULL,NULL,1,'GlassIngot',NULL); INSERT INTO "Crafts_Components" ("ID","AllowedMaterial","AllowedMaterialType","Amount","ItemID","RequireSame") VALUES ('GlassBottle',NULL,NULL,1,'RawCoal',NULL); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Plank',1,NULL,'Plank',10.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Stick',1,NULL,'Stick',10.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Haft',1,NULL,'Haft',50.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Hilt',1,NULL,'Hilt',50.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Knife',1,NULL,'Knife',50.0,NULL,'Stone|Metal','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('StoneChair',1,NULL,'Chair',50.0,NULL,'Stone','Masonry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('WoodTable',1,NULL,'Table',60.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('WoodChair',1,NULL,'Chair',60.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('StoneTable',1,NULL,'Table',60.0,NULL,'Stone','Masonry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Workbench',1,NULL,'Workbench',50.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Crate',1,NULL,'Crate',50.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Barrel',1,NULL,'Barrel',50.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Chisel',1,NULL,'Chisel',50.0,NULL,'Stone','Masonry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('StoneSawblade',1,NULL,'Sawblade',50.0,NULL,'Stone','Masonry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('KnifeBlade',1,NULL,'KnifeBlade',50.0,NULL,'Stone','Masonry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Block',1,NULL,'Block',10.0,NULL,'Stone','Masonry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Bread',1,NULL,'Bread',20.0,NULL,'Grain','Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Beer',1,NULL,'Beer',20.0,NULL,'Grain','Brewing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Wine',1,NULL,'Wine',20.0,NULL,'Berries','Brewing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('HoneyWine',1,NULL,'Wine',20.0,NULL,'Honey','Brewing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('FruitWine',1,NULL,'Wine',20.0,NULL,'Fruit','Brewing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('DyedTable',1,'$Dye','Table',20.0,NULL,'Wood','Dyeing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('DyedPlank',1,'$Dye','Plank',20.0,NULL,'Wood','Dyeing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('RedDye',1,'Red','Dye',20.0,NULL,'Dye','Dyeing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('GreenDye',1,'Green','Dye',20.0,NULL,'Dye','Dyeing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BlueDye',1,'Blue','Dye',20.0,NULL,'Dye','Dyeing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('YellowDye',1,'Yellow','Dye',20.0,NULL,'Dye','Dyeing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PurpleDye',1,'Purple','Dye',20.0,NULL,'Dye','Dyeing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('CyanDye',1,'Cyan','Dye',20.0,NULL,'Dye','Dyeing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('DyeHair',1,'$GnomeHair','Dye',20.0,NULL,'Dye','Dyeing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Bar',1,NULL,'Bar',30.0,NULL,'Metal','Smelting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BronzeBar',2,'Bronze','Bar',30.0,'Bronze',NULL,'Smelting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('SteelBar',1,'Steel','Bar',30.0,'Steel',NULL,'Smelting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('RoseGoldBar',4,'RoseGold','Bar',30.0,'RoseGold',NULL,'Smelting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Anvil',1,NULL,'Anvil',30.0,NULL,'Metal','Smelting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('SliverBar',1,NULL,'Bar',30.0,NULL,'Metal','Smelting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Gem',1,NULL,'Gem',30.0,NULL,'Gem','Gemcutting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Bolt',1,NULL,'Bolt',30.0,NULL,'Cloth','Weaving'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('RawCoal',1,'Coal','RawCoal',30.0,NULL,'Coal','Smelting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Brick',1,NULL,'Brick',30.0,NULL,NULL,'Pottery'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('ClayStatuette',1,'Clay','Statuette',30.0,NULL,'Clay','Pottery'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Tea',1,NULL,'Tea',30.0,NULL,'Plant','Brewing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('StoneDoor',1,NULL,'Door',30.0,NULL,'Stone','Masonry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Hearth',1,NULL,'Hearth',30.0,NULL,'Stone','Masonry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Mold',1,NULL,'Mold',30.0,NULL,'Stone','Masonry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Furnace',1,NULL,'Furnace',30.0,NULL,'Stone','Masonry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Trough',1,NULL,'Trough',30.0,NULL,'Stone','Masonry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('StoneSword',1,NULL,'StoneSword',30.0,NULL,'Stone','Masonry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('StoneHandAxe',1,NULL,'StoneHandAxe',30.0,NULL,'Stone','Masonry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('StoneHammer',1,NULL,'StoneHammer',30.0,NULL,'Stone','Masonry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('StoneCrossbowBolt',16,NULL,'CrossbowBolt',30.0,NULL,'Stone','Masonry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('StoneMusketRound',32,NULL,'MusketRound',30.0,NULL,'Stone','Masonry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('StoneStatue',1,NULL,'Statue',30.0,NULL,'Stone','Stonecarving'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('StonePillar',1,NULL,'Pillar',30.0,NULL,'Stone','Stonecarving'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('StoneStatuette',1,NULL,'Statuette',30.0,NULL,'Stone','Stonecarving'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PetRock',1,NULL,'PetRock',30.0,NULL,'Stone','Stonecarving'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BedFrame',1,NULL,'WoodBedFrame',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('FancyBedFrame',1,NULL,'FancyBedFrame',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Bed',1,NULL,'Bed',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('FancyBed',1,NULL,'FancyBed',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('WoodDoor',1,NULL,'Door',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Dresser',1,NULL,'Dresser',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Cabinet',1,NULL,'Cabinet',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Torch',1,NULL,'Torch',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Loom',1,NULL,'Loom',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Bellows',1,NULL,'Bellows',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('TrainingDummy',1,NULL,'TrainingDummy',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Wheelbarrow',1,NULL,'Wheelbarrow',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Bucket',1,NULL,'Bucket',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('WoodenShield',1,NULL,'WoodenShield',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('CrossbowStock',1,NULL,'CrossbowStock',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BlunderbussStock',1,NULL,'BlunderbussStock',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PistolStock',1,NULL,'PistolStock',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('WoodStatue',1,NULL,'Statue',30.0,NULL,'Wood','Woodcarving'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('WoodStatuette',1,NULL,'Statuette',30.0,NULL,'Wood','Woodcarving'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PuzzleBox',1,NULL,'PuzzleBox',30.0,NULL,'Wood','Woodcarving'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('FellingAxeHead',1,NULL,'FellingAxeHead',30.0,NULL,'Metal','Blacksmithing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('FellingAxe',1,NULL,'FellingAxe',30.0,NULL,'Metal','Blacksmithing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('CuttingWheel',1,NULL,'CuttingWheel',30.0,NULL,'Metal','Blacksmithing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('File',1,NULL,'File',30.0,NULL,'Metal','Blacksmithing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BallPeenHammer',1,NULL,'BallPeenHammer',30.0,NULL,'Metal','Blacksmithing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('AlarmBell',1,NULL,'AlarmBell',30.0,NULL,'Metal','Blacksmithing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('MetalStatue',1,NULL,'Statue',30.0,NULL,'Metal','Metalworking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('MetalStatuette',1,NULL,'Statuette',30.0,NULL,NULL,'Metalworking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Coin',1,NULL,'Coin',30.0,NULL,'Metal','Metalworking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Wrench',1,NULL,'Wrench',30.0,NULL,'Metal','Machining'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Rod',2,NULL,'Rod',30.0,NULL,'Metal','Machining'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Gear',1,NULL,'Gear',30.0,NULL,'Metal','Machining'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Spring',1,NULL,'Spring',30.0,NULL,'Metal','Machining'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Spike',1,NULL,'Spike',30.0,NULL,'Metal','Machining'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('MetalCrossbowBolt',16,NULL,'CrossbowBolt',30.0,NULL,'Metal','Machining'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('CrossbowBow',1,NULL,'CrossbowBow',30.0,NULL,'Metal','Machining'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('MetalMusketRound',32,NULL,'MusketRound',30.0,NULL,'Metal','Machining'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BlunderbussBarrel',1,NULL,'BlunderbussBarrel',30.0,NULL,'Metal','Machining'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PistolBarrel',1,NULL,'PistolBarrel',30.0,NULL,'Metal','Machining'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Screw',1,NULL,'Screw',30.0,NULL,'Metal','Machining'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Ring',1,NULL,'Ring',30.0,NULL,'Metal','JewelryMaking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('GemmedRing',1,NULL,'GemmedRing',30.0,NULL,'Gem','JewelryMaking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Necklace',1,NULL,'Necklace',30.0,NULL,'Metal','JewelryMaking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('GemmedNecklace',1,NULL,'GemmedNecklace',30.0,NULL,'Gem','JewelryMaking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Bag',1,NULL,'Bag',30.0,NULL,'Cloth','Tailoring'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Sack',1,NULL,'Sack',30.0,NULL,'Cloth','Tailoring'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Bandage',1,NULL,'Bandage',30.0,NULL,'Cloth','Tailoring'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('String',1,NULL,'String',30.0,NULL,'Cloth','Tailoring'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Padding',1,NULL,'Padding',30.0,NULL,'Cloth','Tailoring'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Mattress',1,NULL,'Mattress',30.0,NULL,'Cloth','Tailoring'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('AmmoPouch',1,NULL,'AmmoPouch',30.0,NULL,'Cloth','Tailoring'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('LeatherStrap',2,'$Leather','LeatherStrap',30.0,NULL,'Leather','Leatherworking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('LeatherArmorPanel',1,NULL,'LeatherArmorPanel',30.0,NULL,'Leather','Leatherworking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('LeatherHelm',1,NULL,'LeatherHelm',30.0,NULL,'Leather','Leatherworking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('LeatherCuirass',1,NULL,'LeatherCuirass',30.0,NULL,'Leather','Leatherworking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('LeatherBracer',1,NULL,'LeatherBracer',30.0,NULL,'Leather','Leatherworking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('LeatherPants',1,NULL,'LeatherPants',30.0,NULL,'Leather','Leatherworking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('LeatherGlove',1,NULL,'LeatherGlove',30.0,NULL,'Leather','Leatherworking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('LeatherBoot',1,NULL,'LeatherBoot',30.0,NULL,'Leather','Leatherworking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Quiver',1,NULL,'Quiver',30.0,NULL,'Leather','Leatherworking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Sausage',1,NULL,'Sausage',30.0,NULL,'Meat','Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Sandwich',1,NULL,'Sandwich',30.0,NULL,'Meat','Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Cheese',1,NULL,'Cheese',30.0,NULL,'Animal','Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('CheeseOmelette',1,NULL,'CheeseOmelette',30.0,NULL,'Animal','Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('SausageOmelette',1,NULL,'SausageOmelette',30.0,NULL,'Meat','Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('MushroomOmelette',1,NULL,'MushroomOmelette',30.0,NULL,'Plant','Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('SwordBlade',1,NULL,'SwordBlade',30.0,NULL,'Metal','WeaponCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Sword',1,NULL,'Sword',30.0,NULL,'Metal','WeaponCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('HandAxeHead',1,NULL,'HandAxeHead',30.0,NULL,'Metal','WeaponCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('HandAxe',1,NULL,'HandAxe',30.0,NULL,'Metal','WeaponCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('HammerHead',1,NULL,'HammerHead',30.0,NULL,'Metal','WeaponCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Hammer',1,NULL,'Hammer',30.0,NULL,'Metal','WeaponCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('ClaymoreBlade',1,NULL,'ClaymoreBlade',30.0,NULL,'Metal','WeaponCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Claymore',1,NULL,'Claymore',30.0,NULL,'Metal','WeaponCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BattleAxeHead',1,NULL,'BattleAxeHead',30.0,NULL,'Metal','WeaponCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BattleAxe',1,NULL,'BattleAxe',30.0,NULL,'Metal','WeaponCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('WarhammerHead',1,NULL,'WarhammerHead',30.0,NULL,'Metal','WeaponCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Warhammer',1,NULL,'Warhammer',30.0,NULL,'Metal','WeaponCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('ShieldBoss',1,NULL,'ShieldBoss',30.0,NULL,'Metal','WeaponCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('ShieldBacking',1,NULL,'ShieldBacking',30.0,NULL,'Metal','WeaponCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Shield',1,NULL,'Shield',30.0,NULL,'Metal','WeaponCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('TowerShieldBacking',1,NULL,'TowerShieldBacking',30.0,NULL,'Metal','WeaponCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('TowerShield',1,NULL,'TowerShield',30.0,NULL,'Metal','WeaponCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('ArmorPlate',1,'','ArmorPlate',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Helmet',1,NULL,'Helmet',30.0,NULL,'Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Breastplate',1,NULL,'Breastplate',30.0,NULL,'Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Pauldron',1,NULL,'Pauldron',30.0,NULL,'Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Greave',1,NULL,'Greave',30.0,NULL,'Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Gauntlet',1,NULL,'Gauntlet',30.0,NULL,'Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Boot',1,NULL,'Boot',30.0,NULL,'Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Axle',1,NULL,'Axle',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('MechanismBase',1,NULL,'MechanismBase',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Gearbox',1,NULL,'Gearbox',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Handcrank',1,NULL,'Handcrank',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('TrapBase',1,NULL,'TrapBase',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('SpikeTrap',1,NULL,'SpikeTrap',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BladeTrap',1,NULL,'BladeTrap',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Crossbow',1,NULL,'Crossbow',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Lever',1,NULL,'Lever',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('MechanicalWall',1,NULL,'MechanicalWall',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('WindmillBlade',1,NULL,'WindmillBlade',30.0,NULL,'Wood','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PressurePlate',1,NULL,'PressurePlate',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Hatch',1,NULL,'Hatch',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Blunderbuss',1,NULL,'Blunderbuss',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Pistol',1,NULL,'Pistol',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Cylinder',1,NULL,'Cylinder',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('ArtificialArm',1,NULL,'ArtificialArm',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('ArtificialHand',1,NULL,'ArtificialHand',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('ArtificialLeg',1,NULL,'ArtificialLeg',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('ArtificialFoot',1,NULL,'ArtificialFoot',30.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Needle',1,NULL,'Needle',30.0,NULL,'Bone|FishBone','Bonecarving'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('MetalNeedle',1,NULL,'Needle',30.0,NULL,'Metal','Blacksmithing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BoneStatuette',1,NULL,'Statuette',30.0,NULL,'Bone','Bonecarving'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('SkullHelmet',1,NULL,'SkullHelmet',30.0,NULL,'Bone','Bonecarving'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BoneShirt',1,NULL,'BoneShirt',30.0,NULL,'Bone','Bonecarving'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PickaxeHeadWood',1,NULL,'PickaxeHead',50.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PickaxeHeadFlintStone',1,NULL,'PickaxeHead',50.0,'FlintStone',NULL,'Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PickaxeHeadStone',1,NULL,'PickaxeHead',50.0,NULL,'Stone','Masonry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PickaxeBaseWood',1,NULL,'PickaxeBase',50.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Pickaxe',1,NULL,'Pickaxe',50.0,NULL,'Wood|Stone|Metal','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('FishingRod',1,NULL,'FishingRod',50.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('SliverFromStone',1,NULL,'Sliver',50.0,'RandomMetal',NULL,'Prospecting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('SliverFromDirt',1,NULL,'Sliver',50.0,'RandomMetal',NULL,'Prospecting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('ChainBoots',1,'','ChainBoot',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('ChainPants',1,'','ChainPants',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('ChainGloves',1,'','ChainGlove',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('ChainBracers',1,'','ChainBracer',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('ChainShirt',1,'','ChainShirt',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('ChainHelm',1,'','ChainHelm',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PlateBoots',1,'','PlateBoot',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PlatePauldrons',1,'','PlatePauldron',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PlateGloves',1,'','PlateGlove',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PlateHelm',1,'','PlateHelm',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PlateGreaves',1,'','PlateGreaves',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PlateChest',1,'','PlateChest',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('HeavyPlateBoots',1,'','HeavyPlateBoot',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('HeavyPlateChest',1,'','HeavyPlateChest',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('HeavyPlateGloves',1,'','HeavyPlateGlove',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('HeavyPlateGreaves',1,'','HeavyPlateGreaves',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('HeavyPlateHelm',1,'','HeavyPlateHelm',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('HeavyPlatePauldrons',1,'','HeavyPlatePauldron',30.0,'','Metal','ArmorCrafting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PickaxeHeadMetal',1,NULL,'PickaxeHead',50.0,NULL,'Metal','Blacksmithing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('DyedBolt',1,'$Dye','Bolt',50.0,NULL,'Cloth','Dyeing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('SteamEngine',1,NULL,'SteamEngine',100.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Automaton',1,NULL,'Automaton',500.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('AutomatonHead',1,NULL,'AutomatonHead',100.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('AutomatonTorso',1,NULL,'AutomatonTorso',100.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('AutomatonLeg',1,NULL,'AutomatonLeg',50.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('AutomatonArm',1,NULL,'AutomatonArm',50.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('AutomatonCoreMark1',1,NULL,'AutomatonCoreMark1',200.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('AutomatonCoreMark2',1,NULL,'AutomatonCoreMark2',200.0,NULL,'Metal','Engineering'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Flour',1,NULL,'Flour',20.0,NULL,'Grain','Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('FlourKitchen',1,NULL,'Flour',100.0,NULL,'Grain','Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BoneTable',1,NULL,'Table',60.0,NULL,'Bone','Bonecarving'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BoneChair',1,NULL,'Chair',50.0,NULL,'Bone','Bonecarving'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BoneBedFrame',1,NULL,'BoneBedFrame',50.0,NULL,'Bone','Bonecarving'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BoneBed',1,NULL,'Bed',50.0,NULL,'Bone','Bonecarving'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Shed',1,NULL,'Shed',50.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BurnFishBone',0,NULL,NULL,1.0,NULL,NULL,'Smelting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BurnBone',0,NULL,NULL,1.0,NULL,NULL,'Smelting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BurnStraw',0,NULL,NULL,1.0,NULL,NULL,'Smelting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BurnSeeds',0,NULL,NULL,1.0,NULL,NULL,'Smelting'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('AlarmBellBase',1,'','AlarmBellBase',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('AlarmBellBell',1,'','AlarmBellBell',30.0,NULL,'Metal','Blacksmithing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BeeHive',1,'','BeeHive',20.0,NULL,NULL,'Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Chest',1,'','Chest',10.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Bookshelf',1,NULL,'Bookshelf',30.0,NULL,'Wood','Carpentry'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('BigTorch',1,NULL,'BigTorch',30.0,NULL,'Metal','Blacksmithing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Brazier',1,NULL,'Brazier',30.0,NULL,'Metal','Blacksmithing'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Backpack',1,NULL,'Backpack',30.0,NULL,'Leather','Leatherworking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('GlassIngot',1,'Glass','GlassIngot',10.0,NULL,NULL,'GlassMaking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('RoughGlassGem',1,'Glass','RoughGlassGem',10.0,NULL,NULL,'GlassMaking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('MosaicTile',1,NULL,'MosaicTile',10.0,NULL,NULL,'GlassMaking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Cider',1,NULL,'Cider',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Vinegar',1,NULL,'Vinegar',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Sugar',1,NULL,'Sugar',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('DropCandy',1,NULL,'DropCandy',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('ShepherdsPie',1,NULL,'ShepherdsPie',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('Biscuit',1,NULL,'Biscuit',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PickledFruit',1,NULL,'PickledFruit',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('FruitPreserve',1,NULL,'FruitPreserve',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('SmokedMeat',1,NULL,'SmokedMeat',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('SmokedSausage',1,NULL,'SmokedSausage',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('FruitBread',1,NULL,'FruitBread',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('FreshCheese',1,NULL,'FreshCheese',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('HardCheese',1,NULL,'HardCheese',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('MeatPie',1,NULL,'MeatPie',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PickledVegetable',1,NULL,'PickledVegetable',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('PickledEgg',1,NULL,'PickledEgg',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('VegetablePreserve',1,NULL,'VegetablePreserve',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('SmokedBird',1,NULL,'SmokedBird',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('SmokedFish',1,NULL,'SmokedFish',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('FlatBread',1,NULL,'FlatBread',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('FruitPie',1,NULL,'FruitPie',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('VeggiePie',1,NULL,'VeggiePie',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('FineMeatPie',1,NULL,'FineMeatPie',20.0,NULL,NULL,'Cooking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('GlassJar',1,NULL,'GlassJar',50.0,NULL,NULL,'GlassMaking'); INSERT INTO "Crafts" ("ID","Amount","ConversionMaterial","ItemID","ProductionTime","ResultMaterial","ResultMaterialTypes","SkillID") VALUES ('GlassBottle',1,NULL,'GlassBottle',50.0,NULL,NULL,'GlassMaking'); INSERT INTO "Containers_Tiles" ("ID","Construction","Job","Offset","SpriteID","Stockpile") VALUES ('Crate',0,0,'0 0 0','Crate',1); INSERT INTO "Containers_Tiles" ("ID","Construction","Job","Offset","SpriteID","Stockpile") VALUES ('Barrel',0,0,'0 0 0','Barrel',1); INSERT INTO "Containers_Tiles" ("ID","Construction","Job","Offset","SpriteID","Stockpile") VALUES ('Bucket',0,0,'0 0 0','Bucket',0); INSERT INTO "Containers_Tiles" ("ID","Construction","Job","Offset","SpriteID","Stockpile") VALUES ('Bag',0,0,'0 0 0','Bag',0); INSERT INTO "Containers_Tiles" ("ID","Construction","Job","Offset","SpriteID","Stockpile") VALUES ('Sack',0,0,'0 0 0','Sack',1); INSERT INTO "Containers_Tiles" ("ID","Construction","Job","Offset","SpriteID","Stockpile") VALUES ('Wheelbarrow',0,0,'0 0 0','Wheelbarrow',0); INSERT INTO "Containers_Tiles" ("ID","Construction","Job","Offset","SpriteID","Stockpile") VALUES ('Chest',0,0,'0 0 0','Chest',1); INSERT INTO "Containers_Components" ("ID","ItemID") VALUES ('Crate','Crate'); INSERT INTO "Containers_Components" ("ID","ItemID") VALUES ('Barrel','Barrel'); INSERT INTO "Containers_Components" ("ID","ItemID") VALUES ('Bucket','Bucket'); INSERT INTO "Containers_Components" ("ID","ItemID") VALUES ('Bag','Bag'); INSERT INTO "Containers_Components" ("ID","ItemID") VALUES ('Sack','Sack'); INSERT INTO "Containers_Components" ("ID","ItemID") VALUES ('Wheelbarrow','Wheelbarrow'); INSERT INTO "Containers_Components" ("ID","ItemID") VALUES ('Chest','Chest'); INSERT INTO "Containers" ("ID","Buildable","Capacity","RequireSame","Type","Item") VALUES ('Crate',1,50,0,NULL,NULL); INSERT INTO "Containers" ("ID","Buildable","Capacity","RequireSame","Type","Item") VALUES ('Barrel',1,50,1,NULL,NULL); INSERT INTO "Containers" ("ID","Buildable","Capacity","RequireSame","Type","Item") VALUES ('Bucket',0,10,1,NULL,NULL); INSERT INTO "Containers" ("ID","Buildable","Capacity","RequireSame","Type","Item") VALUES ('Bag',0,20,1,NULL,NULL); INSERT INTO "Containers" ("ID","Buildable","Capacity","RequireSame","Type","Item") VALUES ('Sack',1,65,1,NULL,NULL); INSERT INTO "Containers" ("ID","Buildable","Capacity","RequireSame","Type","Item") VALUES ('Wheelbarrow',0,15,1,NULL,NULL); INSERT INTO "Containers" ("ID","Buildable","Capacity","RequireSame","Type","Item") VALUES ('Chest',1,25,0,NULL,NULL); INSERT INTO "ConstructionTypes" ("ID") VALUES ('Wall'); INSERT INTO "ConstructionTypes" ("ID") VALUES ('FancyWall'); INSERT INTO "ConstructionTypes" ("ID") VALUES ('Fence'); INSERT INTO "ConstructionTypes" ("ID") VALUES ('Floor'); INSERT INTO "ConstructionTypes" ("ID") VALUES ('FancyFloor'); INSERT INTO "ConstructionTypes" ("ID") VALUES ('WallFloor'); INSERT INTO "ConstructionTypes" ("ID") VALUES ('Stairs'); INSERT INTO "ConstructionTypes" ("ID") VALUES ('Ramp'); INSERT INTO "ConstructionTypes" ("ID") VALUES ('RampCorner'); INSERT INTO "ConstructionTypes" ("ID") VALUES ('Scaffold'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('SoilStairs','0 0 0','Stairs',NULL,'StairsBottom'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('SoilStairs','0 0 1','StairsTop',NULL,'StairsTop'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('StoneStairs','0 0 0','Stairs',NULL,'StairsBottom'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('StoneStairs','0 0 1','StairsTop',NULL,'StairsTop'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('SoilRamp','0 0 0','Ramp',NULL,'RampBottom'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('SoilRamp','0 0 1','RampTop',NULL,'RampTop'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('StoneRamp','0 0 0','Ramp',NULL,'RampBottom'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('StoneRamp','0 0 1','RampTop',NULL,'RampTop'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('Scaffold','0 0 0','Scaffold',NULL,'StairsBottom'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('Scaffold','0 0 1','ScaffoldFloor',NULL,'StairsTop'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('Palisade','0 0 0','Palisade',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('Palisade','0 0 1','PalisadeTop',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('StoneWall','0 0 0','RoughWall','RoughStoneWall','Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('SoilWallFloor','0 0 0','RoughWall',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('SoilWallFloor','0 0 1','RoughFloor',NULL,'Floor'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('StoneWallFloor','0 0 0','RoughStoneWall2',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('StoneWallFloor','0 0 1','RoughStoneFloor2',NULL,'Floor'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('PlankWallFloor','0 0 0','PlankWall',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('PlankWallFloor','0 0 1','PlankFloor',NULL,'Floor'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('BlockWall','0 0 0','BlockWall',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('BrickWall','0 0 0','CeramicWall',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('PlankWall','0 0 0','PlankWall',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('PlankFloor','0 0 0','PlankFloor',NULL,'Floor'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('SoilWall','0 0 0','RoughWall',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('LogWall','0 0 0','LogWall',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('ThatchWall','0 0 0','ThatchWall',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('ThatchFloor','0 0 0','ThatchFloor',NULL,'Floor'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('ThatchRamp','0 0 0','ThatchRamp',NULL,'RampBottom'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('ThatchRamp','0 0 1','ThatchRampTop',NULL,'RampTop'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('Roof','0 0 0','CombinedRoof',NULL,'RampBottom'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('SoilCornerRamp','0 0 0','SoilOuterCornerRamp',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('StoneCornerRamp','0 0 0','StoneOuterCornerRamp',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('ThatchCornerRamp','0 0 0','ThatchOuterCornerRamp',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('BlockFloor','0 0 0','BlockFloor100',NULL,'Floor'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('StoneFloor','0 0 0','RoughStoneFloor',NULL,'Floor'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('BrickFloor','0 0 0','CeramicFloor',NULL,'Floor'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('SoilFloor','0 0 0','RoughFloor',NULL,'Floor'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('LogFloor','0 0 0','LogFloor',NULL,'Floor'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('FancyWall1','0 0 0','StarEngravedBlockWall',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('FancyWall2','0 0 0','SpiralEngravedBlockWall',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('FancyWall3','0 0 0','MoonEngravedBlockWall',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('FancyWall4','0 0 0','WaterEngravedBlockWall',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('FancyWall5','0 0 0','EngravedBlockWall',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('FancyWall6','0 0 0','CarvedStoneWall',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('FancyFloor1','0 0 0','StarEngravedBlockFloor',NULL,'Floor'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('FancyFloor2','0 0 0','SpiralEngravedBlockFloor',NULL,'Floor'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('FancyFloor3','0 0 0','MoonEngravedBlockFloor',NULL,'Floor'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('FancyFloor4','0 0 0','WaterEngravedBlockFloor',NULL,'Floor'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('FancyFloor5','0 0 0','EngravedBlockFloor',NULL,'Floor'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('FancyFloor6','0 0 0','CarvedStoneFloor',NULL,'Floor'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('BlockFence','0 0 0','BlockFence',NULL,'WallSeeThrough'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('CobbleStoneFence','0 0 0','CobbleStoneFence',NULL,'WallSeeThrough'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('WoodFence','0 0 0','WoodFence',NULL,'WallSeeThrough'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('Pipe','0 0 0','Pipe',NULL,'WallSeeThrough'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('PipeExit','0 0 0','PipeExit',NULL,'WallSeeThrough'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('BoneWall','0 0 0','BoneWall',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('SkullWall','0 0 0','SkullWall',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('BoneFloor','0 0 0','BoneFloor',NULL,'Floor'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('WallTorch','0 0 0','WallTorch',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('PlankStairs','0 0 0','PlankStairs',NULL,'StairsBottom'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('PlankStairs','0 0 1','PlankStairsTop',NULL,'StairsTop'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('BlockStairs','0 0 0','StoneStairs',NULL,'StairsBottom'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('BlockStairs','0 0 1','StoneStairsTop',NULL,'StairsTop'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('MosaicWall','0 0 0','MosaicWall',NULL,'Wall'); INSERT INTO "Constructions_Sprites" ("ID","Offset","SpriteID","SpriteIDOverride","Type") VALUES ('MosaicFloor','0 0 0','MosaicFloor',NULL,'Floor'); INSERT INTO "Constructions_IntermediateSprites" ("ID","Offset","Percent","SpriteID","Type") VALUES ('BlockWall','0 0 0',98.0,'BlockWall100','Wall'); INSERT INTO "Constructions_IntermediateSprites" ("ID","Offset","Percent","SpriteID","Type") VALUES ('BlockWall','0 0 0',75.0,'BlockWall75','Wall'); INSERT INTO "Constructions_IntermediateSprites" ("ID","Offset","Percent","SpriteID","Type") VALUES ('BlockWall','0 0 0',50.0,'BlockWall50','Wall'); INSERT INTO "Constructions_IntermediateSprites" ("ID","Offset","Percent","SpriteID","Type") VALUES ('BlockWall','0 0 0',25.0,'BlockWall25','Wall'); INSERT INTO "Constructions_IntermediateSprites" ("ID","Offset","Percent","SpriteID","Type") VALUES ('BlockFloor','0 0 0',75.0,'BlockFloor75','Floor'); INSERT INTO "Constructions_IntermediateSprites" ("ID","Offset","Percent","SpriteID","Type") VALUES ('BlockFloor','0 0 0',50.0,'BlockFloor50','Floor'); INSERT INTO "Constructions_IntermediateSprites" ("ID","Offset","Percent","SpriteID","Type") VALUES ('BlockFloor','0 0 0',25.0,'BlockFloor25','Floor'); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('SoilStairs',1,'RawSoil',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('StoneStairs',1,'RawStone',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('SoilRamp',1,'RawSoil',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('StoneRamp',1,'RawStone',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('Scaffold',2,'Plank',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('Palisade',4,'RawWood',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('StoneWall',1,'RawStone',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('SoilWallFloor',2,'RawSoil',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('StoneWallFloor',2,'RawStone',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('PlankWallFloor',2,'Plank',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('BlockWall',1,'Block',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('BrickWall',1,'Brick',NULL,'Clay|Sand'); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('PlankWall',1,'Plank',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('PlankFloor',1,'Plank',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('SoilWall',1,'RawSoil',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('LogWall',1,'RawWood',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('ThatchWall',4,'Straw',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('ThatchFloor',4,'Straw',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('ThatchRamp',4,'Straw',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('Roof',1,'Plank',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('Roof',2,'Block',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('SoilCornerRamp',1,'RawSoil',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('StoneCornerRamp',1,'RawStone',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('ThatchCornerRamp',4,'Straw',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('BlockFloor',1,'Block',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('StoneFloor',1,'RawStone',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('BrickFloor',1,'Brick',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('SoilFloor',1,'RawSoil',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('LogFloor',1,'RawWood',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('FancyWall1',1,'Block',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('FancyWall2',1,'Block',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('FancyWall3',1,'Block',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('FancyWall4',1,'Block',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('FancyWall5',1,'Block',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('FancyWall6',1,'Block',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('FancyFloor1',1,'Block',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('FancyFloor2',1,'Block',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('FancyFloor3',1,'Block',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('FancyFloor4',1,'Block',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('FancyFloor5',1,'Block',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('FancyFloor6',1,'Block',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('BlockFence',1,'Block',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('CobbleStoneFence',1,'RawStone',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('WoodFence',1,'Plank',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('VerticalAxle',1,'Axle',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('BoneWall',5,'Bone',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('SkullWall',5,'Skull',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('BoneFloor',4,'Bone',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('WallTorch',1,'Torch',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('PlankStairs',4,'Plank',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('BlockStairs',2,'Block',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('MosaicWall',2,'MosaicTile',NULL,NULL); INSERT INTO "Constructions_Components" ("ID","Amount","ItemID","MaterialTypes","Materials") VALUES ('MosaicFloor',2,'MosaicTile',NULL,NULL); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('SoilStairs',0,1,'Stairs','Soil'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('StoneStairs',0,1,'Stairs','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('SoilRamp',0,1,'Ramp','Soil'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('StoneRamp',0,1,'Ramp','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('Scaffold',0,0,'Stairs','Wood'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('Palisade',0,0,'Wall','Wood'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('StoneWall',1,0,'Wall','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('SoilWallFloor',1,0,'WallFloor','Soil'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('StoneWallFloor',1,0,'WallFloor','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('PlankWallFloor',0,0,'WallFloor','Wood'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('BlockWall',0,0,'Wall','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('BrickWall',0,0,'Wall','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('PlankWall',0,0,'Wall','Wood'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('PlankFloor',0,0,'Floor','Wood'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('SoilWall',1,0,'Wall','Soil'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('LogWall',0,0,'Wall','Wood'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('ThatchWall',0,0,'Wall','Other'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('ThatchFloor',0,0,'Floor','Other'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('ThatchRamp',0,0,'Ramp','Other'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('Roof',0,0,'Ramp','Wood'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('SoilCornerRamp',0,0,'RampCorner','Soil'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('StoneCornerRamp',0,0,'RampCorner','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('ThatchCornerRamp',0,0,'RampCorner','Other'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('BlockFloor',0,0,'Floor','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('StoneFloor',1,0,'Floor','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('BrickFloor',0,0,'Floor','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('SoilFloor',1,0,'Floor','Soil'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('LogFloor',0,0,'Floor','Wood'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('FancyWall1',0,0,'Wall','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('FancyWall2',0,0,'Wall','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('FancyWall3',0,0,'Wall','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('FancyWall4',0,0,'Wall','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('FancyWall5',0,0,'Wall','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('FancyWall6',0,0,'Wall','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('FancyFloor1',0,0,'Floor','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('FancyFloor2',0,0,'Floor','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('FancyFloor3',0,0,'Floor','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('FancyFloor4',0,0,'Floor','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('FancyFloor5',0,0,'Floor','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('FancyFloor6',0,0,'Floor','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('BlockFence',0,0,'Fence','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('CobbleStoneFence',0,0,'Fence','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('WoodFence',0,0,'Fence','Wood'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('VerticalAxle',0,0,'Item',NULL); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('Pipe',0,0,'Hydraulics',NULL); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('PipeExit',0,0,'Hydraulics',NULL); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('BoneWall',0,0,'Wall','Other'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('SkullWall',0,0,'Wall','Other'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('BoneFloor',0,0,'Floor','Other'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('WallTorch',0,1,'Item',NULL); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('PlankStairs',0,1,'Stairs','Wood'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('BlockStairs',0,1,'Stairs','Stone'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('MosaicWall',0,0,'Wall','Other'); INSERT INTO "Constructions" ("ID","NoConstruction","Rotation","Type","Category") VALUES ('MosaicFloor',0,0,'Floor','Other'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('EmptyFloor','320 0 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('EmptyWall','320 0 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SelectionFloor','0 0 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SelectionWall','0 36 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SolidSelectionFloor','32 0 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SolidSelectionWall','32 36 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MiningJobWall','0 648 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RoughSoilFloor','0 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RoughSoilWall','0 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RoughClayFloor','256 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RoughClayWall','256 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RoughStoneFloor','32 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RoughStoneWall','32 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LogFloor','64 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LogWall','64 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockStoneFloor','128 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockStoneWall','128 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FancyBlockFloor','160 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FancyBlockWall','160 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlankFloor','224 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlankWall','224 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MetalFloor','96 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MetalWall','96 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('EmbeddedOre','0 540 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('EmbeddedGem','32 540 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WaterFloor','128 0 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LavaFloor','160 0 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WaterRightWall_','128 36 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WaterLeftWall_','160 36 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTree','0 252 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTreeNoLeaves','32 252 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTree','64 252 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeNoLeaves','96 252 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree','128 252 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTreeNoLeaves','160 252 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Sapling','256 252 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TilledSoil','288 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlantedSoil','288 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StairsTopFR','32 288 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StairsTopBL','96 288 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StairsFR','32 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StairsBL','96 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockStairsTopFR','160 288 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockStairsTopBL','224 288 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockStairsFR','160 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockStairsBL','224 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodBedFrameFR','32 432 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodBedFrameBL','0 432 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MattressFR','96 432 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MattressBL','64 432 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FancyWoodBedFrameFR','160 432 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FancyWoodBedFrameBL','128 432 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FancyWoodBedSheetsFR','224 432 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FancyWoodBedSheetsBL','192 432 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MetalBarPile','96 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneStatueFR','960 468 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneStatueBL','928 468 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodDoorLeft','896 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodDoorRight','992 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneDoorLeft','704 468 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneDoorRight','800 468 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodTable','96 576 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodChairFR','832 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodChairBL','800 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Well','256 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WellTop','288 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GearBoxBaseItem','288 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GearBoxFrameItem','352 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GearBoxBase','256 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GearBoxFrame','320 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeverBaseFL','320 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeverBaseFR','352 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeverBaseBR','288 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeverBaseBL','256 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeverOnFL','576 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeverOnFR','608 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeverOnBR','544 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeverOnBL','512 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeverOffFL','448 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeverOffFR','480 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeverOffBR','416 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeverOffBL','384 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PressurePlate','96 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PressurePlateItem','96 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HatchOpen','736 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HatchClosed','608 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HatchItem','704 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SpikeTrap','128 432 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BladeTrap','224 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BladeTrapItem','96 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HandcrankFL','544 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HandcrankFR','576 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HandcrankBR','512 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HandcrankBL','480 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Windmill1','416 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Windmill2','448 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Windmill3','480 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Windmill4','512 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RawSoil','96 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RawStone','128 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RawWood','160 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RawCoal','992 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RawOre','64 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RawGem','0 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RawHide','32 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Block','384 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Plank','544 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Bar','832 36 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Gem','384 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Bolt','800 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Bandage','800 36 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Wheat','320 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeSwordRight','64 324 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeSwordLeft','288 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeAxeRight','576 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeAxeLeft','544 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHammerRight','320 180 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHammerLeft','288 180 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePickaxeRight','864 180 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePickaxeRightBack','832 180 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinTorso','64 0 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinHead','32 0 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinArmRight','96 0 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinArmLeft','128 0 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinHandRight','160 0 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinHandLeft','160 0 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinFootRight','0 72 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinFootLeft','0 72 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinClothTorso1','672 216 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinClothTorso2','704 216 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GolemTorso','96 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MarketStallBase','256 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CarpenterStandToolsFR','384 180 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CarpenterStandFR','320 180 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CarpenterStandBR','352 180 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TableSaw','128 504 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SawTable','288 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WorkbenchFR','256 36 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WorkbenchBR','288 36 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Workmat','192 576 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AxeBenchFR','192 252 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AxeBenchBL','192 288 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('KegFR','128 324 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('KegBL','128 324 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WorkshopWaterTub','256 576 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinTunnel','928 216 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Distill','160 360 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TanningRackFR','192 180 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TanningRackBL','224 180 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodPile','64 576 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GiantStoneBlock','288 216 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneBlockPileFL','320 216 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneBlockPileFR','320 216 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneBlockPileBR','352 216 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneBlockPileBL','352 216 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FurnaceFR','224 360 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FurnaceBL','256 360 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FurnaceFlameFR','288 360 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AnvilFR','288 324 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AnvilBL','320 324 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WaterTrough','160 108 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UprightWeaponStandFL','256 432 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UprightWeaponStandFR','256 432 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UprightWeaponStandBR','224 432 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UprightWeaponStandBL','224 432 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HammerTableTopFR','384 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HammerTableTopBL','352 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CoalPile','480 108 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BellowsFL','256 0 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BellowsBR','224 0 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Forge','224 324 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MoldFR','192 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MoldBL','160 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilRampFL','0 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilRampFR','32 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilRampBL','64 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilRampBR','96 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilCornerRampFR','128 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilCornerRampBL','224 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilCornerRampFL','192 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilCornerRampBR','160 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilURampBL','256 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilURampFL','288 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilRampTopFL','0 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilRampTopFR','32 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilRampTopBL','64 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilRampTopBR','96 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilCornerRampTopFR','128 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilCornerRampTopBR','160 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilCornerRampTopFL','192 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilCornerRampTopBL','224 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilURampTopBL','256 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilURampTopFL','288 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayRampFL','320 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayRampFR','352 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayRampBL','384 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayRampBR','416 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayCornerRampFR','448 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayCornerRampBR','480 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayCornerRampFL','512 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayCornerRampBL','544 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayURampBL','576 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayURampFR','608 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayRampTopFL','320 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayRampTopFR','352 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayRampTopBL','384 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayRampTopBR','416 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayCornerRampTopFR','448 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayCornerRampTopBR','480 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayCornerRampTopFL','512 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayCornerRampTopBL','544 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayURampTopBL','576 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayURampTopFR','608 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneRampFL','0 252 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneRampFR','32 252 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneRampBL','64 252 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneRampBR','96 252 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneCornerRampFR','128 252 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneCornerRampBR','160 252 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneCornerRampFL','192 252 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneCornerRampBL','224 252 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneURampBL','256 252 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneURampFR','288 252 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneRampTopFL','0 216 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneRampTopFR','32 216 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneRampTopBL','64 216 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneRampTopBR','96 216 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneCornerRampTopFR','128 216 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneCornerRampTopBR','160 216 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneCornerRampTopFL','192 216 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneCornerRampTopBL','224 216 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneURampTopBL','256 216 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneURampTopFR','288 216 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ThoughtBubble','224 504 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StatusTired','448 432 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StatusSleeping','384 432 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StatusThirsty','416 432 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StatusHungry','352 432 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StatusCombat','320 432 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LittleBlood1','640 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LittleBlood2','672 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BigBlood1','160 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BigBlood2','192 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Crate','576 108 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Barrel','864 36 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Sack','768 36 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Egg','832 108 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Meat','352 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Bread','960 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Sausage','224 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Sandwich','192 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Milk','0 0 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Wine','32 0 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Beer','64 0 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TeaCup','96 0 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Cider','128 0 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Vinegar','160 0 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Sugar','192 0 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('DropCandy','224 0 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ShepherdsPie','256 0 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Biscuit','0 36 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PickledFruit','32 36 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FruitPreserve','64 36 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SmokedMeat','96 36 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SmokedSausage','128 36 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FruitBread','160 36 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FreshCheese','192 36 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HardCheese','224 36 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MeatPie','256 36 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PickledVegetable','0 72 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PickledEgg','32 72 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('VegetablePreserve','64 72 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SmokedBird','96 72 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SmokedFish','128 72 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FlatBread','160 72 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FruitPie','192 72 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('VeggiePie','224 72 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FineMeatPie','256 72 32 36','food_drink_ingredients.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Bone','864 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Skull','960 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LoomFR','352 432 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LoomBL','320 432 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LoomFaceFL','384 432 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LoomFaceFR','384 432 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LoomFaceBR','320 468 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LoomFaceBL','320 468 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GroundTorchBase','128 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GroundTorchFlame1','160 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GroundTorchFlame2','192 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GroundTorchFlame3','224 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GroundTorchFlame4','256 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PickaxeHead','160 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FellingAxeHead','32 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SwordBlade','64 504 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HandAxeHead','416 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HammerHead','288 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Shield','608 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFellingAxeRight','96 180 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFellingAxeRightBack','64 180 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShieldRight','192 216 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShieldLeft','160 216 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodDoor','864 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneDoor','672 468 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Coin','544 108 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Statuette','288 432 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SelectionFloorTop','64 0 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SelectionWallTop','64 36 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ChiseledBlockFloor','480 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ChiseledBlockWall','480 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PetRock','96 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Gear','224 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Spring','256 432 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeTorchRight','448 216 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeTorchLeft','416 216 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeBattleAxe','608 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BattleAxeHead','896 36 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeWarhammer','544 216 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WarhammerHead','160 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HatchFrame','640 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HatchFrameItem','672 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SpikeTrapSpike2','224 432 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SpikeTrapItemSpike','160 432 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BladeTrapBlade3','320 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BladeTrapItemBlade','352 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeClaymore','832 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClaymoreBlade','352 108 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PuzzleBox','960 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Clipping','416 108 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SpikeTrapSpike1','192 432 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BladeTrapBlade1','256 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BladeTrapBlade2','288 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PickaxeBase','128 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FellingAxeBase','0 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SwordBase','96 504 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HandAxeBase','448 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HammerBase','320 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ShieldBase','640 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BattleAxeBase','928 36 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WarhammerBase','192 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClaymoreBase','384 108 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeSwordRightBase','64 360 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeSwordLeftBase','224 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeAxeRightBase','512 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeAxeLeftBase','480 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHammerRightBase','256 180 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHammerBaseLeft','224 180 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePickaxeRightBase','800 180 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePickaxeRightBackBase','768 180 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFellingAxeRightBase','32 180 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFellingAxeRightBackBase','0 180 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShieldRightBase','128 216 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShieldBaseLeft','96 216 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeTorchRightBase','384 216 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeTorchBaseLeft','352 216 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeBattleAxeBase','640 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeWarhammerBase','576 216 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeClaymoreBase','864 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeBlunderbussBase','704 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeBlunderbussBarrel','672 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlunderbussBase','768 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlunderbussBarrel','736 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePistolRightBase','928 180 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePistolBaseLeft','896 180 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePistolRight','992 180 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePistolLeft','960 180 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PistolBase','512 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PistolBarrel','480 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeCrossbowBase','928 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeCrossbow','896 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CrossbowBase','704 108 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Crossbow','672 108 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeAmmoPouch','448 144 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeQuiver','0 216 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TrainingDummy','288 180 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StonePillar','896 468 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OgreTorso','896 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OgreHead','864 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OgreArmRight','704 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OgreArmLeft','672 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OgreHandRight','832 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OgreHandLeft','800 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OgreFootRight','768 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OgreFootLeft','736 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueOgreTorso','672 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueOgreHeadRight','640 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueOgreHeadLeft','608 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueOgreArmRight','448 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueOgreArmLeft','416 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueOgreHandRight','576 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueOgreHandLeft','544 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueOgreFootRight','512 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueOgreFootLeft','480 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantTorso','224 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantHead','128 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantAntennaeRight','32 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantAntennaeLeft','0 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantArmRight','96 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantArmLeft','64 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantLegRight','192 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantLegLeft','160 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BeetleTorso','0 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BeetleHead','992 36 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Cocoon','512 108 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZombieTorso','544 576 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZombieHead','512 576 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZombieArmRight','352 576 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZombieArmLeft','320 576 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZombieHandRight','480 576 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZombieHandLeft','448 576 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZombieFootRight','416 576 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZombieFootLeft','384 576 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SkeletonTorso','928 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SkeletonHead','896 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SkeletonArmRight','736 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SkeletonArmLeft','704 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SkeletonHandRight','864 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SkeletonHandLeft','832 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SkeletonFootRight','800 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SkeletonFootLeft','768 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('KnifeBlade','128 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('KnifeHilt','160 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Hilt','800 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ForgeTop','256 324 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MoldTopFR','128 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('String','32 504 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillBlade','544 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Cylinder','736 108 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Spike','96 432 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FancyWoodBedTopFR','992 108 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BellowsNozzleBL','288 0 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BellowsNozzleFR','320 0 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LogFL','768 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LogFR','800 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LogBR','736 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LogBL','704 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OldGrain','928 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Chisel','288 252 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Wrench','64 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StrawBed','0 504 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ArmorPlate','128 0 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeatherPanel','192 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeatherStrip','224 288 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BoneNeedle','896 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneTable','992 468 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneChairFR','640 468 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneChairBL','608 468 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StarEngravedBlockFloor','352 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StarEngravedBlockWall','352 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SpiralEngravedBlockFloor','384 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SpiralEngravedBlockWall','384 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MoonEngravedBlockFloor','416 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MoonEngravedBlockWall','416 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WaterEngravedBlockFloor','448 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WaterEngravedBlockWall','448 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('EngravedBlockFloor','192 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('EngravedBlockWall','192 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BoneFloor','512 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BoneWall','512 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ThatchFloor','544 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ThatchWall','544 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ThatchRampTopFR','480 216 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ThatchRampTopBR','544 216 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ThatchRampFR','480 252 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ThatchRampBR','544 252 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlankStairsTopFR','256 288 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlankStairsTopFL','288 288 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlankStairsTopBL','320 288 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlankStairsTopBR','352 288 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlankStairsFR','256 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlankStairsFL','288 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlankStairsBL','320 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlankStairsBR','352 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PostAndRailFencePost','704 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PostAndRailFenceFL','640 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PostAndRailFenceFR','672 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PostAndRailFenceBR','608 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PostAndRailFenceBL','576 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PicketFencePost','320 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PicketFenceFL','256 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PicketFenceFR','288 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PicketFenceBR','224 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PicketFenceBL','192 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CabinetFR','96 108 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CabinetBL','64 108 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BoneShirt','928 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PumpFloor','800 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PumpScrew1','832 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PumpScrew2','864 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PumpScrew3','896 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PumpScrew4','928 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Screw','512 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SawTableLeft','384 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SawTableLeft2','416 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SawTableRight','448 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SawTableRight2','480 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SawTableBladeFL','352 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SawTableBladeBL','320 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CrateLog','0 180 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CratePlank','256 144 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SawHorse','224 144 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WorkshopTable','224 288 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ChiselTableTopFR','352 144 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ChiselTableTopBL','384 144 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ShearsTableTopFR','128 468 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ShearsTableTopBL','96 468 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClothRollTableTop','0 504 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ButcherTableTopFR','384 324 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ButcherTableTopBL','352 324 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('KitchenTableTopFL','0 324 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('KitchenTableTopFR','0 324 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('KitchenTableTopBR','32 324 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('KitchenTableTopBL','32 324 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ViseTableTop','352 0 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueprintTableTop','0 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PaperTableTopFL','32 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PaperTableTopFR','32 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PaperTableTopBR','32 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PaperTableTopBL','32 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('JewelryPile','832 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('KilnFR','256 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('KilnBL','224 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('KilnFlameFR','288 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MarketStallTop','288 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BoltRoundPile','832 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MusketRoundPile','640 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MetalSliver','416 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTree','192 252 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeNoLeaves','224 252 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Trough','352 504 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomPlant','608 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomItem','576 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Cheese','224 108 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Omelette','960 324 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Wheelbarrow','352 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WheelbarrowBackHandle','384 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SkullOnPikeFL','32 432 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SkullOnPikeFR','64 432 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SkullOnPikeBR','0 432 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SkullOnPikeBL','992 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PikeFL','416 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PikeFR','448 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PikeBR','384 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PikeBL','352 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AlarmBellBase','320 108 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AlarmBellBell','352 108 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TowerShieldBase','288 504 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TowerShield','256 504 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ScaffoldFloor','608 72 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Scaffold','608 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GolemArmRight','992 216 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GolemArmLeft','960 216 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GolemLegRight','64 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GolemLegLeft','32 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodFloorFrame','352 396 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodCrossFrame','192 36 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodVFloorFrame','224 0 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodVFrame','224 36 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodPanelledFloorFrame','192 0 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodPanelledFrame','192 0 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SmoothStoneFloor','256 0 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SmoothStoneWall','256 36 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CeramicFloor','288 0 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CeramicWall','288 36 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CarvedStoneFloor','352 0 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CarvedStoneWall','352 36 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Silica','672 396 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ArtificialRightArm','256 0 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ArtificialLeftArm','160 0 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ArtificialRightHand','352 0 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ArtificialLeftHand','192 0 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ArtificialRightLeg','416 0 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ArtificialLeftLeg','224 0 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ArtificialRightArms','320 0 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ArtificialRightArmHands','288 0 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ArtificialRightHands','384 0 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ArtificialRightLegs','448 0 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AutomatonHeadFR','32 0 32 36','automatons.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GolemCore','0 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodDoorLeftOpenLeft','928 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodDoorLeftOpenRight','960 540 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodDoorRightOpenLeft','0 576 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodDoorRightOpenRight','32 576 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneDoorLeftOpenLeft','736 468 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneDoorLeftOpenRight','768 468 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneDoorRightOpenLeft','832 468 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneDoorRightOpenRight','864 468 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RoughSoilWallShort','0 720 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RoughClayWallShort','256 720 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RoughStoneWallShort','32 720 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LogWallShort','64 720 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockWallShort','128 720 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FancyBlockWallShort','160 720 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CarvedStoneWallShort','352 684 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlankWallShort','224 720 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MetalWallShort','96 720 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MetalHighlightWallShort','96 720 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ChiseledBlockWallShort','480 720 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StarEngravedBlockWallShort','352 720 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SpiralEngravedBlockWallShort','384 720 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MoonEngravedBlockWallShort','416 720 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WaterEngravedBlockWallShort','448 720 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('EngravedBlockWallShort','192 720 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BoneWallShort','512 720 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ThatchWallShort','544 720 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodWallShortFrame','192 684 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodVWallShortFrame','224 684 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodPanelledWallShortFrame','320 36 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SmoothStoneWallShort','256 684 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CeramicWallShort','288 684 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CarvedWallShort','480 108 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ProspectorTableOreTop','736 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ProspectorTableSliverTop','768 360 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Panda','224 216 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Rabbit','192 216 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Chicken','192 0 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PigPink','96 0 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PigYellow','128 0 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Sheep','160 0 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Woodlouse','480 360 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PandaBack','224 252 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RabbitBack','192 252 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ChickenBack','192 36 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PigPinkBack','96 36 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PigYellowBack','128 36 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SheepBack','160 36 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodlouseBack','480 396 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Badger','0 216 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BadgerBack','0 252 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Lizzard','32 216 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LizzardBack','32 252 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlackBear','96 216 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlackBearBack','96 252 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Llama','32 0 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LlamaBack','32 36 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Yak','64 0 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YakBack','64 36 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Emu','288 0 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('EmuBack','288 36 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Spider','416 360 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SpiderBack','416 396 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Beetle','448 360 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BeetleBack','448 396 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RabbitYoung','192 288 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RabbitYoungBack','192 324 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ChickenYoung','192 72 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ChickenYoungBack','192 108 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PigYoung','96 72 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PigYoungBack','96 108 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SheepYoung','160 72 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SheepYoungBack','160 108 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LlamaYoung','32 72 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LlamaYoungBack','32 108 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YakYoung','64 72 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YakYoungBack','64 108 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('EmuYoung','288 72 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('EmuYoungBack','288 108 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Duck','224 0 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Cow','0 0 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CowBack','0 36 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CowYoung','0 72 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CowYoungBack','0 108 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('DuckBack','224 36 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('DuckYoung','224 72 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('DuckYoungBack','224 108 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Goose','256 0 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GooseBack','256 36 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GooseYoung','256 72 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GooseYoungBack','256 108 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Shepherd','320 0 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ShepherdBack','320 36 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ShepherdYoung','320 72 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ShepherdYoungBack','320 108 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CatTabby','352 0 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CatTabbyBack','352 36 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CatBlack','384 0 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CatBlackBack','384 36 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Porcupine','64 216 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PorcupineBack','64 252 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Fox','128 216 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FoxBack','128 252 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Wolf','160 216 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WolfBack','160 252 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stag','256 216 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StagBack','256 252 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Roe','288 216 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RoeBack','288 252 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Goat','320 216 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoatBack','320 252 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoatYoung','320 288 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoatYoungBack','320 324 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Squirrel','352 216 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SquirrelBack','352 252 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GreyFish','0 360 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GreyFishBack','0 396 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GreenFish','32 360 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GreenFishBack','32 396 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ShedFR','96 144 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ShedBL','128 144 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Snake','128 360 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Carrot','32 0 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CarrotPlant','32 36 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CarrotPlantWithFruit','32 72 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Onion','64 0 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OnionPlant','64 36 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OnionPlantWithFruit','64 72 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Potato','96 0 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PotatoPlant','96 36 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PotatoPlantWithFruit','96 72 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Cabbage','128 0 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CabbagePlant','128 36 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CabbagePlantWithFruit','128 72 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Asparagus','160 0 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AsparagusPlant','160 36 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AsparagusPlantWithFruit','160 72 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Broccoli','192 0 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BroccoliPlant','192 36 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BroccoliPlantWithFruit','192 72 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Cauliflower','224 0 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CauliflowerPlant','224 36 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CauliflowerPlantWithFruit','224 72 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Cucumber','256 0 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CucumberPlant','256 36 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CucumberPlantWithFruit','256 72 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RicePlant','288 36 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RicePlantWithFruit','288 72 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Garlic','0 108 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GarlicPlant','0 144 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GarlicPlantWithFruit','0 180 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Parsnip','32 108 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ParsnipPlant','32 144 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ParsnipPlantWithFruit','32 180 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Radish','64 108 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RadishPlant','64 144 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RadishPlantWithFruit','64 180 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Turnip','96 108 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TurnipPlant','96 144 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TurnipPlantWithFruit','96 180 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Lettuce','128 108 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LettucePlant','128 144 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LettucePlantWithFruit','128 180 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Melon','160 108 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MelonPlant','160 144 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MelonPlantWithFruit','160 180 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Sugarbeet','192 108 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SugarbeetPlant','192 144 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SugarbeetPlantWithFruit','192 180 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Pumpkin','224 108 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PumpkinPlant','224 144 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PumpkinPlantWithFruit','224 180 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Peas','256 108 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PeasPlant','256 144 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PeasPlantWithFruit','256 180 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BeetRoot','288 108 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BeetRootPlant','288 144 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BeetRootWithFruit','288 180 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Tea','0 216 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TeaPlant','0 252 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TeaPlantWithFruit','0 288 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Tobacco','32 216 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TobaccoPlant','32 252 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TobaccoPlantWithFruit','32 288 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Pineapple','64 216 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineapplePlant','64 252 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineapplePlantWithFruit','64 288 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Corn','96 216 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CornPlant','96 252 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CornPlantWithFruit','96 288 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Leek','128 216 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeekPlant','128 252 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeekPlantWithFruit','128 288 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Beans','160 216 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BeansPlant','160 252 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BeansPlantWithFruit','160 288 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Blackberry','192 216 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlackberryPlant','192 252 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlackberryPlantWithFruit','192 288 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Artichoke','224 216 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ArtichokePlant','224 252 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ArtichokePlantWithFruit','224 288 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Bottlegourd','256 216 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BottlegourdPlant','256 252 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BottlegourdPlantWithFruit','256 288 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grape','288 216 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrapePlant','288 252 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrapePlantWithFruit','288 288 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Tomato','0 324 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TomatoPlant','0 360 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TomatoPlantWithFruit','0 396 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Capsicum','32 324 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CapsicumPlant','32 360 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CapsicumPlantWithFruit','32 396 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Woad','64 324 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoadPlant','64 360 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoadPlantWithFruit','64 396 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('DyersWeed','96 324 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('DyersWeedPlant','96 360 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('DyersWeedPlantWithFruit','96 396 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlantGrowHelper1','160 324 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlantGrowHelper2','160 360 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlantGrowHelper3','160 396 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BarleyPlant','192 360 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BarleyPlantWithFruit','192 396 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OatPlant','224 360 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OatPlantWithFruit','224 396 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MilletPlant','256 360 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MilletPlantWithFruit','256 396 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WheatPlant','288 360 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WheatPlantWithFruit','288 396 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grain','192 324 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Strawberry','320 0 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StrawberryPlant','320 36 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StrawberryPlantWithFruit','320 72 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Fiber','352 0 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CottonPlant','352 36 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CottonPlantWithFruit','352 72 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Seed','256 576 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Apple','256 540 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Orange','288 540 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BeeHiveEmpty','128 360 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BeeHiveFull','128 396 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineCone','320 540 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StrawMushroom','320 360 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodMushroom','352 360 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FibreMushroom','384 360 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrainMushroom','416 360 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Oak','352 540 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Pigment','0 216 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Dye','96 0 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('DyedCloth','32 216 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodTub','288 144 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FishingRodsFR','0 0 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FishingRodsBL','32 0 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FishingRackFR','32 0 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FishingRackBL','32 36 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FishingVat','0 72 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FishingFishRack','32 72 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BoneChairFR','224 216 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BoneChairBL','256 216 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BoneTable','224 252 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Painting1','0 144 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Painting2','0 180 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Painting3','0 216 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Painting4','0 252 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Painting5','32 144 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Painting6','32 180 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Painting7','32 216 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Painting8','32 252 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockWall25','0 396 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockWall50','32 396 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockWall75','64 396 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockWall100','96 396 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockFloor25','0 360 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockFloor50','32 360 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockFloor75','64 360 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockFloor100','96 360 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrePile','288 432 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneOuterCornerRampFR','480 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneOuterCornerRampBR','480 360 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneOuterCornerRampFL','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneOuterCornerRampBL','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilOuterCornerRampFR','512 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilOuterCornerRampBR','512 360 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilOuterCornerRampFL','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilOuterCornerRampBL','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayOuterCornerRampFR','544 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayOuterCornerRampBR','544 360 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayOuterCornerRampFL','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClayOuterCornerRampBL','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ThatchOuterCornerRampFR','608 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ThatchOuterCornerRampBR','608 360 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ThatchOuterCornerRampFL','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ThatchOuterCornerRampBL','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassOuterCornerRamp_Spring_FR','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassOuterCornerRamp_Spring_BR','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassOuterCornerRamp_Spring_FL','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassOuterCornerRamp_Summer_FR','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassOuterCornerRamp_Summer_BR','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassOuterCornerRamp_Summer_FL','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassOuterCornerRamp_Autumn_FR','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassOuterCornerRamp_Autumn_BR','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassOuterCornerRamp_Autumn_FL','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassOuterCornerRamp_Winter_FR','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassOuterCornerRamp_Winter_BR','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassOuterCornerRamp_Winter_FL','448 324 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Palisade','128 360 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PalisadeTop','128 396 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RoughSandFloor','384 0 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RoughSandWall','384 36 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RoughSandWallShort','384 684 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodFenceWest','0 432 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodFencePost','32 432 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodFenceEast','64 432 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockFenceWest','96 432 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockFencePost','128 432 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockFenceEast','160 432 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CobbleStoneFenceWest','192 432 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CobbleStoneFencePost','224 432 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CobbleStoneFenceEast','256 432 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockFenceNorth','96 468 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlockFenceSouth','128 468 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CobbleStoneFenceNorth','160 468 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CobbleStoneFenceSouth','192 468 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodFenceNorth','0 468 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodFenceSouth','32 468 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RafterFR','0 504 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RoofingFR','32 504 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RafterBL','64 504 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RoofingBL','96 504 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHead','32 0 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeTorso','64 0 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeArmRight','96 0 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeArmLeft','128 0 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFeet','0 72 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeArmor','160 0 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHelmet1','160 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeArmorBack','192 0 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHelmet1Back','192 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHeadBack','32 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeTorsoBack','64 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeArmRightBack','128 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeArmLeftBack','96 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFeetBrown','0 108 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFeetBrownBack','0 108 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeBoots','192 72 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeBootsBack','192 72 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair1','0 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair2','32 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair3','64 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair4','96 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair5','128 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair6','160 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair7','192 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair8','224 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair9','256 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair10','288 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair11','320 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair12','352 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair13','384 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair14','416 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair15','448 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair1Back','0 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair2Back','32 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair3Back','64 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair4Back','96 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair5Back','128 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair6Back','160 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair7Back','192 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair8Back','224 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair9Back','256 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair10Back','288 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair11Back','320 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair12Back','352 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair13Back','384 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair14Back','416 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHair15Back','448 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt1','0 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt2','32 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt3','64 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt4','96 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt5','128 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt6','160 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt7','192 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt8','224 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt9','256 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt10','288 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt11','320 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt12','352 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt13','384 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt14','416 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt15','448 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt1Back','0 288 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt2Back','32 288 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt3Back','64 288 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt4Back','96 288 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt5Back','128 288 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt6Back','160 288 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt7Back','192 288 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt8Back','224 288 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt9Back','256 288 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt10Back','288 288 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt11Back','320 288 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt12Back','352 288 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt13Back','384 288 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt14Back','416 288 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeShirt15Back','448 288 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFacialHair1','0 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFacialHair2','32 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFacialHair3','64 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFacialHair4','96 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFacialHair5','128 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFacialHair6','160 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFacialHair7','192 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFacialHair8','224 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFacialHair9','256 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFacialHair10','288 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFacialHair11','320 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFacialHair12','352 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFacialHair13','384 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFacialHair14','416 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFacialHair15','448 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeWheelbarrowRight','224 0 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeWheelbarrowLeft','224 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeWheelbarrowRightBase','224 0 1 1','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeWheelbarrowBaseLeft','224 32 1 1','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Bag','256 72 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Bucket','288 72 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeBagRight','256 0 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeBagLeft','256 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeBucketRight','288 0 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeBucketLeft','288 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeBagRightBase','256 0 1 1','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeBagBaseLeft','256 32 1 1','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeBucketRightBase','288 0 1 1','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeBucketBaseLeft','288 32 1 1','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FishingRod','320 72 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFishingRodLeft','320 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeFishingRodRight','320 0 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeTopFL','0 0 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeTopFR','32 0 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeTopBL','64 0 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeMiddle','96 0 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeTopBR','128 0 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeTopCornerFront','160 0 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeTopCornerBack','512 0 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeTopCornerLeft','192 0 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeTopCornerRight','224 0 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeBottomCornerLeft','256 0 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeBottomCornerFront','288 0 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeBottomCornerRight','320 0 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeBottom','352 0 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeTrunkMiddle','384 0 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeTrunkBottom','416 0 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeApples','448 0 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeApple1','0 72 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeApple2','32 72 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AppleTreeApple3','64 72 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeTopFL','0 108 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeTopFR','32 108 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeTopBL','64 108 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeMiddle','96 108 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeTopBR','128 108 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeTopCornerFront','160 108 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeTopCornerBack','512 108 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeTopCornerLeft','192 108 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeTopCornerRight','224 108 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeBottomCornerLeft','256 108 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeBottomCornerFront','288 108 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeBottomCornerRight','320 108 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeBottom','352 108 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeTrunkMiddle','384 108 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeTrunkBottom','416 108 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeOranges','448 108 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeOrange1','96 72 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeOrange2','128 72 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeOrange3','160 72 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeMiddleCornerLeft','0 144 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeMiddleCornerRight','32 144 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeMiddleCornerFront','64 144 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeTreeMiddleCornerBack','96 144 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTree1','0 36 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTree2','32 36 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTree3','64 36 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTree4','96 36 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTreeTop','128 36 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTrunk2','160 36 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTrunk1','192 36 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTree8','224 36 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTree9','256 36 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTree10','288 36 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTree11','320 36 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTree12','352 36 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTree13','384 36 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTree14','416 36 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTree15','448 36 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTree16','480 36 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PineTree17','512 36 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree1','0 180 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree2','32 180 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree3','64 180 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree4','96 180 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree5','128 180 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree6','160 180 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree7','192 180 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree8','224 180 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree9','256 180 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree10','288 180 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree11','320 180 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree12','352 180 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree13','384 180 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree14','416 180 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree21','0 216 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree22','32 216 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree23','64 216 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree24','96 216 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree25','128 216 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree26','160 216 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree27','192 216 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree28','224 216 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree29','256 216 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree210','288 216 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree211','320 216 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree212','352 216 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree213','384 216 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OakTree214','416 216 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree1','0 360 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree2','32 360 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree3','64 360 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree4','96 360 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree5','128 360 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree6','160 360 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree7','192 360 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree8','224 360 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree9','256 360 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree10','288 360 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree11','320 360 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree12','352 360 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree13','384 360 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree14','416 360 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree21','0 396 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree22','32 396 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree23','64 396 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree24','96 396 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree25','128 396 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree26','160 396 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree27','192 396 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree28','224 396 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree29','256 396 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree210','288 396 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree211','320 396 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree212','352 396 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree213','384 396 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WillowTree214','416 396 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_1_0','0 36 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_1_1','32 36 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_1_2','64 36 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_1_3','96 36 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_1_4','128 36 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_1_5','160 36 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_1_6','192 36 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_1_7','224 36 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_1_8','256 36 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_1_9','288 36 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_1_10','320 36 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_1_11','352 36 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_1_12','384 36 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_2_0','0 72 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_2_1','32 72 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_2_2','64 72 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_2_3','96 72 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_2_4','128 72 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_2_5','160 72 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_2_6','192 72 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_2_7','224 72 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_2_8','256 72 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_2_9','288 72 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_2_10','320 72 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_2_11','352 72 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_2_12','384 72 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_3_0','0 108 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_3_1','32 108 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_3_2','64 108 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_3_3','96 108 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_3_4','128 108 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_3_5','160 108 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_3_6','192 108 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_3_7','224 108 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_3_8','256 108 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_3_9','288 108 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_3_10','320 108 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_3_11','352 108 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_3_12','384 108 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_4_0','0 144 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_4_1','32 144 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_4_2','64 144 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_4_3','96 144 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_4_4','128 144 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_4_5','160 144 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_4_6','192 144 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_4_7','224 144 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_4_8','256 144 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_4_9','288 144 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_4_10','320 144 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_4_11','352 144 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_4_12','384 144 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_5_0','0 180 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_5_1','32 180 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_5_2','64 180 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_5_3','96 180 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_5_4','128 180 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_5_5','160 180 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_5_6','192 180 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_5_7','224 180 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_5_8','256 180 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_5_9','288 180 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_5_10','320 180 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_5_11','352 180 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_5_12','384 180 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_6_0','0 216 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_6_1','32 216 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_6_2','64 216 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_6_3','96 216 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_6_4','128 216 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_6_5','160 216 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_6_6','192 216 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_6_7','224 216 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_6_8','256 216 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_6_9','288 216 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_6_10','320 216 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_6_11','352 216 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_6_12','384 216 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_7_0','0 252 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_7_1','32 252 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_7_2','64 252 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_7_3','96 252 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_7_4','128 252 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_7_5','160 252 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_7_6','192 252 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_7_7','224 252 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_7_8','256 252 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_7_9','288 252 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_7_10','320 252 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_7_11','352 252 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_7_12','384 252 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_8_0','0 288 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_8_1','32 288 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_8_2','64 288 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_8_3','96 288 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_8_4','128 288 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_8_5','160 288 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_8_6','192 288 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_8_7','224 288 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_8_8','256 288 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_8_9','288 288 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_8_10','320 288 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_8_11','352 288 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_8_12','384 288 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_9_0','0 324 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_9_1','32 324 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_9_2','64 324 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_9_3','96 324 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_9_4','128 324 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_9_5','160 324 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_9_6','192 324 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_9_7','224 324 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_9_8','256 324 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_9_9','288 324 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_9_10','320 324 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_9_11','352 324 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_9_12','384 324 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_10_0','0 360 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_10_1','32 360 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_10_2','64 360 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_10_3','96 360 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_10_4','128 360 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_10_5','160 360 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_10_6','192 360 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_10_7','224 360 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_10_8','256 360 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_10_9','288 360 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_10_10','320 360 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_10_11','352 360 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_10_12','384 360 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_11_0','0 396 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_11_1','32 396 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_11_2','64 396 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_11_3','96 396 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_11_4','128 396 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_11_5','160 396 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_11_6','192 396 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_11_7','224 396 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_11_8','256 396 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_11_9','288 396 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_11_10','320 396 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_11_11','352 396 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_11_12','384 396 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_12_0','0 432 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_12_1','32 432 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_12_2','64 432 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_12_3','96 432 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_12_4','128 432 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_12_5','160 432 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_12_6','192 432 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_12_7','224 432 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_12_8','256 432 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_12_9','288 432 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_12_10','320 432 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_12_11','352 432 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_12_12','384 432 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_13_0','0 468 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_13_1','32 468 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_13_2','64 468 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_13_3','96 468 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_13_4','128 468 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_13_5','160 468 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_13_6','192 468 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_13_7','224 468 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_13_8','256 468 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_13_9','288 468 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_13_10','320 468 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_13_11','352 468 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_13_12','384 468 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_14_0','0 504 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_14_1','32 504 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_14_2','64 504 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_14_3','96 504 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_14_4','128 504 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_14_5','160 504 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_14_6','192 504 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_14_7','224 504 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_14_8','256 504 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_14_9','288 504 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_14_10','320 504 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_14_11','352 504 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_14_12','384 504 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_15_0','0 540 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_15_1','32 540 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_15_2','64 540 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_15_3','96 540 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_15_4','128 540 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_15_5','160 540 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_15_6','192 540 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_15_7','224 540 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_15_8','256 540 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_15_9','288 540 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_15_10','320 540 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_15_11','352 540 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_15_12','384 540 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_16_0','0 576 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_16_1','32 576 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_16_2','64 576 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_16_3','96 576 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_16_4','128 576 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_16_5','160 576 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_16_6','192 576 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_16_7','224 576 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_16_8','256 576 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_16_9','288 576 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_16_10','320 576 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_16_11','352 576 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_16_12','384 576 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_17_0','0 612 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_17_1','32 612 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_17_2','64 612 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_17_3','96 612 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_17_4','128 612 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_17_5','160 612 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_17_6','192 612 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_17_7','224 612 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_17_8','256 612 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_17_9','288 612 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_17_10','320 612 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_17_11','352 612 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_17_12','384 612 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_18_0','0 648 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_18_1','32 648 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_18_2','64 648 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_18_3','96 648 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_18_4','128 648 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_18_5','160 648 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_18_6','192 648 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_18_7','224 648 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_18_8','256 648 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_18_9','288 648 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_18_10','320 648 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_18_11','352 648 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_18_12','384 648 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_19_0','0 684 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_19_1','32 684 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_19_2','64 684 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_19_3','96 684 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_19_4','128 684 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_19_5','160 684 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_19_6','192 684 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_19_7','224 684 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_19_8','256 684 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_19_9','288 684 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_19_10','320 684 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_19_11','352 684 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_19_12','384 684 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_20_0','0 720 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_20_1','32 720 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_20_2','64 720 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_20_3','96 720 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_20_4','128 720 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_20_5','160 720 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_20_6','192 720 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_20_7','224 720 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_20_8','256 720 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_20_9','288 720 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_20_10','320 720 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_20_11','352 720 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_20_12','384 720 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_21_0','0 756 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_21_1','32 756 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_21_2','64 756 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_21_3','96 756 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_21_4','128 756 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_21_5','160 756 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_21_6','192 756 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_21_7','224 756 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_21_8','256 756 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_21_9','288 756 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_21_10','320 756 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_21_11','352 756 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_21_12','384 756 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_22_0','0 792 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_22_1','32 792 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_22_2','64 792 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_22_3','96 792 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_22_4','128 792 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_22_5','160 792 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_22_6','192 792 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_22_7','224 792 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_22_8','256 792 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_22_9','288 792 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_22_10','320 792 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_22_11','352 792 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_22_12','384 792 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_23_0','0 828 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_23_1','32 828 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_23_2','64 828 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_23_3','96 828 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_23_4','128 828 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_23_5','160 828 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_23_6','192 828 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_23_7','224 828 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_23_8','256 828 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_23_9','288 828 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_23_10','320 828 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_23_11','352 828 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_23_12','384 828 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_24_0','0 864 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_24_1','32 864 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_24_2','64 864 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_24_3','96 864 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_24_4','128 864 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_24_5','160 864 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_24_6','192 864 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_24_7','224 864 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_24_8','256 864 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_24_9','288 864 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_24_10','320 864 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_24_11','352 864 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_24_12','384 864 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_25_0','0 900 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_25_1','32 900 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_25_2','64 900 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_25_3','96 900 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_25_4','128 900 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_25_5','160 900 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_25_6','192 900 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_25_7','224 900 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_25_8','256 900 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_25_9','288 900 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_25_10','320 900 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_25_11','352 900 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_25_12','384 900 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_26_0','0 936 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_26_1','32 936 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_26_2','64 936 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_26_3','96 936 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_26_4','128 936 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_26_5','160 936 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_26_6','192 936 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_26_7','224 936 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_26_8','256 936 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_26_9','288 936 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_26_10','320 936 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_26_11','352 936 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_26_12','384 936 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_27_0','0 972 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_27_1','32 972 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_27_2','64 972 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_27_3','96 972 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_27_4','128 972 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_27_5','160 972 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_27_6','192 972 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_27_7','224 972 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_27_8','256 972 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_27_9','288 972 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_27_10','320 972 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_27_11','352 972 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_27_12','384 972 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_28_0','0 1008 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_28_1','32 1008 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_28_2','64 1008 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_28_3','96 1008 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_28_4','128 1008 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_28_5','160 1008 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_28_6','192 1008 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_28_7','224 1008 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_28_8','256 1008 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_28_9','288 1008 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_28_10','320 1008 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_28_11','352 1008 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_28_12','384 1008 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_29_0','0 1044 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_29_1','32 1044 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_29_2','64 1044 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_29_3','96 1044 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_29_4','128 1044 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_29_5','160 1044 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_29_6','192 1044 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_29_7','224 1044 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_29_8','256 1044 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_29_9','288 1044 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_29_10','320 1044 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_29_11','352 1044 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_29_12','384 1044 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_30_0','0 1080 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_30_1','32 1080 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_30_2','64 1080 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_30_3','96 1080 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_30_4','128 1080 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_30_5','160 1080 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_30_6','192 1080 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_30_7','224 1080 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_30_8','256 1080 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_30_9','288 1080 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_30_10','320 1080 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_30_11','352 1080 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Grass_30_12','384 1080 32 36','seasonalgrass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('empty','256 180 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RedFlower_0','0 0 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RedFlower_1','32 0 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RedFlower_2','64 0 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RedFlower_3','96 0 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RedFlower_4','128 0 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RedFlower_5','160 0 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RedFlower_6','192 0 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RedFlower_7','224 0 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RedFlower_8','256 0 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueFlower_0','0 36 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueFlower_1','32 36 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueFlower_2','64 36 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueFlower_3','96 36 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueFlower_4','128 36 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueFlower_5','160 36 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueFlower_6','192 36 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueFlower_7','224 36 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BlueFlower_8','256 36 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowFlower_0','0 72 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowFlower_1','32 72 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowFlower_2','64 72 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowFlower_3','96 72 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowFlower_4','128 72 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowFlower_5','160 72 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowFlower_6','192 72 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowFlower_7','224 72 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowFlower_8','256 72 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PurpleFlower_0','0 108 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PurpleFlower_1','32 108 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PurpleFlower_2','64 108 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PurpleFlower_3','96 108 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PurpleFlower_4','128 108 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PurpleFlower_5','160 108 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PurpleFlower_6','192 108 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PurpleFlower_7','224 108 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PurpleFlower_8','256 108 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeFlower_0','0 144 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeFlower_1','32 144 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeFlower_2','64 144 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeFlower_3','96 144 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeFlower_4','128 144 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeFlower_5','160 144 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeFlower_6','192 144 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeFlower_7','224 144 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeFlower_8','256 144 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WhiteMushroom_0','0 180 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WhiteMushroom_1','32 180 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WhiteMushroom_2','64 180 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WhiteMushroom_3','96 180 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WhiteMushroom_4','128 180 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WhiteMushroom_5','160 180 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WhiteMushroom_6','192 180 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WhiteMushroom_7','224 180 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WhiteMushroom_8','256 180 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowMushroom_0','0 216 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowMushroom_1','32 216 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowMushroom_2','64 216 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowMushroom_3','96 216 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowMushroom_4','128 216 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowMushroom_5','160 216 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowMushroom_6','192 216 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowMushroom_7','224 216 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowMushroom_8','256 216 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeMushroom_0','0 252 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeMushroom_1','32 252 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeMushroom_2','64 252 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeMushroom_3','96 252 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeMushroom_4','128 252 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeMushroom_5','160 252 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeMushroom_6','192 252 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeMushroom_7','224 252 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeMushroom_8','256 252 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WhiteMushroom_Snow_0','0 288 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WhiteMushroom_Snow_1','32 288 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WhiteMushroom_Snow_2','64 288 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WhiteMushroom_Snow_3','96 288 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WhiteMushroom_Snow_4','128 288 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WhiteMushroom_Snow_5','160 288 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WhiteMushroom_Snow_6','192 288 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WhiteMushroom_Snow_7','224 288 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WhiteMushroom_Snow_8','256 288 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowMushroom_Snow_0','0 324 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowMushroom_Snow_1','32 324 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowMushroom_Snow_2','64 324 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowMushroom_Snow_3','96 324 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowMushroom_Snow_4','128 324 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowMushroom_Snow_5','160 324 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowMushroom_Snow_6','192 324 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowMushroom_Snow_7','224 324 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('YellowMushroom_Snow_8','256 324 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeMushroom_Snow_0','0 360 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeMushroom_Snow_1','32 360 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeMushroom_Snow_2','64 360 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeMushroom_Snow_3','96 360 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeMushroom_Snow_4','128 360 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeMushroom_Snow_5','160 360 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeMushroom_Snow_6','192 360 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeMushroom_Snow_7','224 360 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OrangeMushroom_Snow_8','256 360 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stone_0','0 396 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stone_1','32 396 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stone_2','64 396 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stone_3','96 396 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stone_4','128 396 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stone_5','160 396 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stone_6','192 396 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stone_7','224 396 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stone_8','256 396 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stone_Snow_0','0 432 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stone_Snow_1','32 432 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stone_Snow_2','64 432 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stone_Snow_3','96 432 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stone_Snow_4','128 432 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stone_Snow_5','160 432 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stone_Snow_6','192 432 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stone_Snow_7','224 432 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Stone_Snow_8','256 432 32 36','seasonaldetails.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_Spring_FL','0 0 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_Spring_FL','0 36 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_Spring_FR','32 0 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_Spring_FR','32 36 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_Spring_BL','64 0 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_Spring_BL','64 36 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_Spring_BR','96 0 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_Spring_BR','96 36 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_April_FL','0 72 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_April_FL','0 108 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_April_FR','32 72 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_April_FR','32 108 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_April_BL','64 72 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_April_BL','64 108 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_April_BR','96 72 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_April_BR','96 108 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_May_FL','0 144 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_May_FL','0 180 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_May_FR','32 144 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_May_FR','32 180 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_May_BL','64 144 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_May_BL','64 180 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_May_BR','96 144 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_May_BR','96 180 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_June_FL','0 216 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_June_FL','0 252 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_June_FR','32 216 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_June_FR','32 252 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_June_BL','64 216 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_June_BL','64 252 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_June_BR','96 216 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_June_BR','96 252 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_Summer_FL','0 288 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_Summer_FL','0 324 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_Summer_FR','32 288 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_Summer_FR','32 324 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_Summer_BL','64 288 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_Summer_BL','64 324 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_Summer_BR','96 288 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_Summer_BR','96 324 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_August_FL','0 360 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_August_FL','0 396 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_August_FR','32 360 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_August_FR','32 396 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_August_BL','64 360 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_August_BL','64 396 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_August_BR','96 360 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_August_BR','96 396 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_September_FL','0 432 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_September_FL','0 468 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_September_FR','32 432 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_September_FR','32 468 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_September_BL','64 432 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_September_BL','64 468 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_September_BR','96 432 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_September_BR','96 468 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_Autumn_FL','0 504 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_Autumn_FL','0 540 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_Autumn_FR','32 504 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_Autumn_FR','32 540 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_Autumn_BL','64 504 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_Autumn_BL','64 540 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_Autumn_BR','96 504 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_Autumn_BR','96 540 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_November_FL','0 576 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_November_FL','0 612 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_November_FR','32 576 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_November_FR','32 612 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_November_BL','64 576 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_November_BL','64 612 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_November_BR','96 576 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_November_BR','96 612 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_December_FL','0 648 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_December_FL','0 684 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_December_FR','32 648 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_December_FR','32 684 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_December_BL','64 648 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_December_BL','64 684 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_December_BR','96 648 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_December_BR','96 684 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_Winter_FL','0 720 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_Winter_FL','0 756 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_Winter_FR','32 720 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_Winter_FR','32 756 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_Winter_BL','64 720 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_Winter_BL','64 756 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_Winter_BR','96 720 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_Winter_BR','96 756 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_February_FL','0 792 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_February_FL','0 828 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_February_FR','32 792 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_February_FR','32 828 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_February_BL','64 792 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_February_BL','64 828 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRampTop_February_BR','96 792 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassRamp_February_BR','96 828 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_Spring_FL','128 0 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_Spring_FL','128 36 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_Spring_FR','160 0 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_Spring_FR','160 36 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_Spring_BL','192 0 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_Spring_BL','192 36 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_Spring_BR','224 0 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_Spring_BR','224 36 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_April_FL','128 72 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_April_FL','128 108 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_April_FR','160 72 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_April_FR','160 108 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_April_BL','192 72 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_April_BL','192 108 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_April_BR','224 72 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_April_BR','224 108 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_May_FL','128 144 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_May_FL','128 180 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_May_FR','160 144 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_May_FR','160 180 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_May_BL','192 144 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_May_BL','192 180 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_May_BR','224 144 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_May_BR','224 180 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_June_FL','128 216 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_June_FL','128 252 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_June_FR','160 216 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_June_FR','160 252 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_June_BL','192 216 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_June_BL','192 252 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_June_BR','224 216 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_June_BR','224 252 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_Summer_FL','128 288 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_Summer_FL','128 324 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_Summer_FR','160 288 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_Summer_FR','160 324 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_Summer_BL','192 288 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_Summer_BL','192 324 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_Summer_BR','224 288 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_Summer_BR','224 324 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_August_FL','128 360 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_August_FL','128 396 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_August_FR','160 360 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_August_FR','160 396 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_August_BL','192 360 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_August_BL','192 396 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_August_BR','224 360 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_August_BR','224 396 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_September_FL','128 432 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_September_FL','128 468 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_September_FR','160 432 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_September_FR','160 468 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_September_BL','192 432 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_September_BL','192 468 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_September_BR','224 432 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_September_BR','224 468 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_Autumn_FL','128 504 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_Autumn_FL','128 540 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_Autumn_FR','160 504 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_Autumn_FR','160 540 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_Autumn_BL','192 504 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_Autumn_BL','192 540 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_Autumn_BR','224 504 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_Autumn_BR','224 540 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_November_FL','128 576 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_November_FL','128 612 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_November_FR','160 576 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_November_FR','160 612 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_November_BL','192 576 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_November_BL','192 612 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_November_BR','224 576 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_November_BR','224 612 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_December_FL','128 648 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_December_FL','128 684 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_December_FR','160 648 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_December_FR','160 684 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_December_BL','192 648 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_December_BL','192 684 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_December_BR','224 648 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_December_BR','224 684 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_Winter_FL','128 720 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_Winter_FL','128 756 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_Winter_FR','160 720 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_Winter_FR','160 756 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_Winter_BL','192 720 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_Winter_BL','192 756 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_Winter_BR','224 720 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_Winter_BR','224 756 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_February_FL','128 792 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_February_FL','128 828 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_February_FR','160 792 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_February_FR','160 828 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_February_BL','192 792 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_February_BL','192 828 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRampTop_February_BR','224 792 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassCornerRamp_February_BR','224 828 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_Spring_FR','256 0 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_Spring_FR','256 36 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_Spring_FL','288 0 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_Spring_FL','288 36 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_Spring_BL','256 0 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_Spring_BL','256 36 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_Spring_BR','288 0 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_Spring_BR','288 36 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_April_FL','256 72 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_April_FL','256 108 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_April_FR','288 72 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_April_FR','288 108 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_April_BR','256 72 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_April_BR','256 108 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_April_BL','288 72 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_April_BL','288 108 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_May_FL','256 144 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_May_FL','256 180 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_May_FR','288 144 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_May_FR','288 180 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_May_BR','256 144 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_May_BR','256 180 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_May_BL','288 144 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_May_BL','288 180 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_June_FL','256 216 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_June_FL','256 252 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_June_FR','288 216 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_June_FR','288 252 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_June_BR','256 216 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_June_BR','256 252 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_June_BL','288 216 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_June_BL','288 252 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_Summer_FR','256 288 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_Summer_FR','256 324 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_Summer_FL','288 288 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_Summer_FL','288 324 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_Summer_BL','256 288 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_Summer_BL','256 324 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_Summer_BR','288 288 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_Summer_BR','288 324 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_August_FL','256 360 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_August_FL','256 396 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_August_FR','288 360 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_August_FR','288 396 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_August_BR','256 360 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_August_BR','256 396 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_August_BL','288 360 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_August_BL','288 396 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_September_FL','256 432 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_September_FL','256 468 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_September_FR','288 432 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_September_FR','288 468 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_September_BR','256 432 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_September_BR','256 468 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_September_BL','288 432 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_September_BL','288 468 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_Autumn_FR','256 504 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_Autumn_FR','256 540 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_Autumn_FL','288 504 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_Autumn_FL','288 540 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_Autumn_BL','256 504 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_Autumn_BL','256 540 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_Autumn_BR','288 504 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_Autumn_BR','288 540 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_November_FL','256 576 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_November_FL','256 612 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_November_FR','288 576 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_November_FR','288 612 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_November_BR','256 576 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_November_BR','256 612 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_November_BL','288 576 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_November_BL','288 612 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_December_FL','256 648 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_December_FL','256 684 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_December_FR','288 648 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_December_FR','288 684 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_December_BR','256 648 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_December_BR','256 684 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_December_BL','288 648 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_December_BL','288 684 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_Winter_FR','256 720 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_Winter_FR','256 756 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_Winter_FL','288 720 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_Winter_FL','288 756 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_Winter_BL','256 720 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_Winter_BL','256 756 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_Winter_BR','288 720 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_Winter_BR','288 756 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_February_FL','256 792 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_February_FL','256 828 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_February_FR','288 792 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_February_FR','288 828 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_February_BR','256 792 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_February_BR','256 828 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURampTop_February_BL','288 792 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrassURamp_February_BL','288 828 32 36','seasonalslopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Pentagram1','0 0 32 36','magic.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Pentagram2','32 0 32 36','magic.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Pentagram3','0 0 32 36','magic.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Pentagram4','32 0 32 36','magic.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SparkleFrame1','96 40 32 36','magic.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SparkleFrame2','128 40 32 36','magic.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SparkleFrame3','160 40 32 36','magic.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SparkleFrame4','192 40 32 36','magic.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrass1','0 0 32 36','mushroom_biome_grass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrass2','32 0 32 36','mushroom_biome_grass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrass3','64 0 32 36','mushroom_biome_grass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrass4','96 0 32 36','mushroom_biome_grass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrass5','128 0 32 36','mushroom_biome_grass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassDetail1','0 32 32 36','mushroom_biome_grass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassDetail2','32 32 32 36','mushroom_biome_grass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassDetail3','64 32 32 36','mushroom_biome_grass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassDetail4','96 32 32 36','mushroom_biome_grass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassDetail5','128 32 32 36','mushroom_biome_grass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CrystalPole','64 180 32 36','mushroom_biome_grass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CrystalShroom','96 180 32 36','mushroom_biome_grass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CrystalSnakeFR','0 180 32 36','mushroom_biome_grass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CrystalSnakeBL','32 180 32 36','mushroom_biome_grass.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_1_FL','0 0 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_1_FL','0 36 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_1_FR','32 0 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_1_FR','32 36 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_1_BL','64 0 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_1_BL','64 36 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_1_BR','96 0 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_1_BR','96 36 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_1_FL','128 0 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_1_FL','128 36 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_1_FR','160 0 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_1_FR','160 36 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_1_BL','192 0 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_1_BL','192 36 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_1_BR','224 0 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_1_BR','224 36 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURampTop_1_FR','256 0 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURamp_1_FR','256 36 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURampTop_1_FL','288 0 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURamp_1_FL','288 36 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_2_FL','0 72 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_2_FL','0 72 32 32','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_2_FR','32 72 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_2_FR','32 72 32 32','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_2_BL','64 72 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_2_BL','64 72 32 32','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_2_BR','96 72 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_2_BR','96 72 32 32','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_2_FL','128 72 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_2_FL','128 72 32 32','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_2_FR','160 72 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_2_FR','160 72 32 32','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_2_BL','192 72 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_2_BL','192 72 32 32','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_2_BR','224 72 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_2_BR','224 72 32 32','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURampTop_2_FR','256 72 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURamp_2_FR','256 72 32 32','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURampTop_2_FL','288 72 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURamp_2_FL','288 72 32 32','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_3_FL','0 144 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_3_FL','0 180 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_3_FR','32 144 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_3_FR','32 180 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_3_BL','64 144 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_3_BL','64 180 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_3_BR','96 144 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_3_BR','96 180 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_3_FL','128 144 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_3_FL','128 180 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_3_FR','160 144 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_3_FR','160 180 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_3_BL','192 144 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_3_BL','192 180 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_3_BR','224 144 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_3_BR','224 180 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURampTop_3_FR','256 144 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURamp_3_FR','256 180 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURampTop_3_FL','288 144 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURamp_3_FL','288 180 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_4_FL','0 216 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_4_FL','0 252 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_4_FR','32 216 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_4_FR','32 252 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_4_BL','64 216 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_4_BL','64 252 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_4_BR','96 216 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_4_BR','96 252 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_4_FL','128 216 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_4_FL','128 252 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_4_FR','160 216 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_4_FR','160 252 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_4_BL','192 216 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_4_BL','192 252 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_4_BR','224 216 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_4_BR','224 252 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURampTop_4_FR','256 216 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURamp_4_FR','256 252 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURampTop_4_FL','288 216 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURamp_4_FL','288 252 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_5_FL','0 288 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_5_FL','0 324 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_5_FR','32 288 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_5_FR','32 324 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_5_BL','64 288 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_5_BL','64 324 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRampTop_5_BR','96 288 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassRamp_5_BR','96 324 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_5_FL','128 288 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_5_FL','128 324 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_5_FR','160 288 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_5_FR','160 324 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_5_BL','192 288 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_5_BL','192 324 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRampTop_5_BR','224 288 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassCornerRamp_5_BR','224 324 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURampTop_5_FR','256 288 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURamp_5_FR','256 324 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURampTop_5_FL','288 288 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MushroomGrassURamp_5_FL','288 324 32 36','mushroom_biome_slopes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom1_1','0 72 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom1_2','32 72 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom1_3','64 72 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom1_4','96 72 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_1','0 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_2','32 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_3','64 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_4','96 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_5','128 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_6','160 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_7','192 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_8','224 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_9','256 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_10','288 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_11','320 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_12','352 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_13','384 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_14','416 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_15','448 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_16','480 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_17','512 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_18','544 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_19','576 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_20','608 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_21','640 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_22','672 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_23','704 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_24','736 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_25','768 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_26','800 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_27','832 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_28','864 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_29','896 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_30','928 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_31','960 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_32','992 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_33','1024 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Mushroom2_34','1056 36 32 36','mushrooms.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZygYoungBlueFR','0 0 32 36','mushroom_biome_zygs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZygYoungBlueBL','0 36 32 36','mushroom_biome_zygs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZygYoungRedFR','0 72 32 36','mushroom_biome_zygs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZygYoungRedBL','0 108 32 36','mushroom_biome_zygs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZygYouthBlueFR','0 144 32 36','mushroom_biome_zygs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZygYouthBlueBL','0 180 32 36','mushroom_biome_zygs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZygYouthRedFR','0 216 32 36','mushroom_biome_zygs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZygYouthRedBL','0 252 32 36','mushroom_biome_zygs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZygAdultBlueFR','0 288 32 36','mushroom_biome_zygs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZygAdultBlueBL','0 324 32 36','mushroom_biome_zygs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZygAdultRedFR','0 360 32 36','mushroom_biome_zygs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZygAdultRedBL','0 396 32 36','mushroom_biome_zygs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZygSeniorBlueFR','0 432 32 36','mushroom_biome_zygs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZygSeniorBlueBL','0 468 32 36','mushroom_biome_zygs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZygSeniorRedFR','0 504 32 36','mushroom_biome_zygs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ZygSeniorRedBL','0 540 32 36','mushroom_biome_zygs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Breastplate','992 72 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Helmet','768 252 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeLeatherHeadArmor','480 0 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHeavyPlateRightFootArmorBack','736 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHeavyPlateLeftFootArmorBack','704 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHeavyPlateRightHandArmorBack','672 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHeavyPlateRightArmArmorBack','640 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHeavyPlateLeftHandArmorBack','608 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHeavyPlateLeftArmArmorBack','576 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHeavyPlateChestArmorBack','544 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHeavyPlateHeadArmorBack','480 252 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHeavyPlateRightFootArmor','736 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHeavyPlateLeftFootArmor','704 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHeavyPlateRightHandArmor','608 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHeavyPlateRightArmArmor','576 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHeavyPlateLeftHandArmor','672 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHeavyPlateLeftArmArmor','640 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHeavyPlateChestArmor','544 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeHeavyPlateHeadArmor','480 216 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePlateRightFootArmorBack','736 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePlateLeftFootArmorBack','704 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePlateRightHandArmorBack','672 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePlateRightArmArmorBack','640 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePlateLeftHandArmorBack','608 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePlateLeftArmArmorBack','576 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePlateChestArmorBack','544 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePlateHeadArmorBack','480 180 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePlateRightFootArmor','736 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePlateLeftFootArmor','704 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePlateRightHandArmor','608 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePlateRightArmArmor','576 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePlateLeftHandArmor','672 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePlateLeftArmArmor','640 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePlateChestArmor','544 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomePlateHeadArmor','480 144 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeChainmailRightFootArmorBack','736 108 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeChainmailLeftFootArmorBack','704 108 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeChainmailRightHandArmorBack','672 108 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeChainmailRightArmArmorBack','640 108 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeChainmailLeftHandArmorBack','608 108 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeChainmailLeftArmArmorBack','576 108 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeChainmailChestArmorBack','544 108 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeChainmailHeadArmorBack','480 108 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeChainmailRightFootArmor','736 72 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeChainmailLeftFootArmor','704 72 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeChainmailRightHandArmor','608 72 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeChainmailRightArmArmor','576 72 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeChainmailLeftHandArmor','672 72 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeChainmailLeftArmArmor','640 72 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeChainmailChestArmor','544 72 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeChainmailHeadArmor','480 72 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeLeatherRightFootArmorBack','736 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeLeatherLeftFootArmorBack','704 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeLeatherRightHandArmorBack','672 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeLeatherRightArmArmorBack','640 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeLeatherLeftHandArmorBack','608 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeLeatherLeftArmArmorBack','576 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeLeatherChestArmorBack','544 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeLeatherHeadArmorBack','480 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeLeatherRightFootArmor','736 0 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeLeatherLeftFootArmor','704 0 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeLeatherRightHandArmor','608 0 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeLeatherRightArmArmor','576 0 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeLeatherLeftHandArmor','672 0 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeLeatherLeftArmArmor','640 0 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeLeatherChestArmor','544 0 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TerrainDummy','0 0 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlantDummy','288 0 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FlaxPlant','0 468 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FlaxPlantWithFruit','0 504 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeatherArmorHead','0 0 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeatherArmorChest','32 0 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeatherArmorArms','64 0 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeatherArmorHands','96 0 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeatherArmorLegs','128 0 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeatherArmorFeet','160 0 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ChainArmorHead','0 36 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ChainArmorChest','32 36 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ChainArmorArms','64 36 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ChainArmorHands','96 36 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ChainArmorLegs','128 36 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ChainArmorFeet','160 36 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlateArmorHead','0 72 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlateArmorChest','32 72 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlateArmorArms','64 72 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlateArmorHands','96 72 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlateArmorLegs','128 72 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlateArmorFeet','160 72 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HeavyPlateArmorHead','0 108 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HeavyPlateArmorChest','32 108 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HeavyPlateArmorArms','64 108 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HeavyPlateArmorHands','96 108 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HeavyPlateArmorLegs','128 108 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HeavyPlateArmorFeet','160 108 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BoneArmorHead','0 144 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BoneArmorChest','32 144 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BoneArmorArms','64 144 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BoneArmorLegs','128 144 32 36','weapons_armour.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeSwordRightBackBase','256 360 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeSwordRightBack','256 324 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinHair1','0 144 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinHair2','32 108 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinHair3','64 108 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinHair4','96 108 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinBeard1','0 180 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinBeard2','32 180 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinBeard3','64 180 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinBeard4','96 180 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinBeard5','128 180 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinClothing1','0 216 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinClothing2','32 216 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinClothing3','64 216 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinClothing4','96 216 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinClothing5','128 216 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinArmLeftBack','128 36 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinArmRightBack','96 36 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinTorsoBack','64 36 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinHeadBack','32 36 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinFootLeftBack','96 72 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinHair1Back','0 144 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinHair2Back','32 144 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinHair3Back','64 144 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinHair4Back','96 144 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinClothing1Back','0 252 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinClothing2Back','32 252 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinClothing3Back','64 252 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinClothing4Back','96 252 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinClothing5Back','128 252 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinHair5','128 108 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GoblinHair5Back','128 144 32 36','goblin.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilURampFR','256 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilURampBR','288 180 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilURampTopFR','256 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SoilURampTopBR','288 144 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeTorchLeftBase','384 396 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeTorchLeft','416 396 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WorkshopInputIndicator','512 0 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SheepRed','0 432 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SheepRedBack','0 468 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SheepGreen','32 432 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SheepGreenBack','32 468 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SheepBlue','64 432 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SheepBlueBack','64 468 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SheepYellow','96 432 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SheepYellowBack','96 468 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SheepPurple','128 432 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SheepCyan','160 432 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SheepCyanBack','160 468 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SheepPurpleBack','128 468 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SteamEngineBoilerFR','512 0 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SteamEnginePiston1FR','512 36 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SteamEnginePiston2FR','512 72 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SteamEnginePiston3FR','512 108 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SteamEnginePiston4FR','512 144 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SteamEngineBoilerBL','544 0 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SteamEnginePiston1BL','544 36 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SteamEnginePiston2BL','544 72 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SteamEnginePiston3BL','544 108 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SteamEnginePiston4BL','544 144 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PipeItem','416 72 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PipeFittingItem','288 216 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PipeWest','320 108 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PipePost','320 0 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PipeEast','288 108 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PipeNorth','352 108 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PipeSouth','384 108 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PipeNS','448 108 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PipeEW','416 108 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PipeFittingNW','352 0 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PipeFittingSW','384 0 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PipeFittingES','416 0 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PipeFittingNE','448 0 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PipeFittingNEW','288 36 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PipeFittingNSW','320 36 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PipeFittingESW','352 36 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PipeFittingNES','384 36 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PumpBase','480 0 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PumpTop1','480 36 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PumpTop2','480 72 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PumpTop3','480 108 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PumpPipeConnectors','192 252 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree1','0 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree2','32 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree3','64 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree4','96 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree5','128 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree6','160 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree7','192 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree8','224 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree9','256 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree10','288 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree11','320 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree12','352 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree13','384 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree14','416 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree15','448 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree16','480 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree17','512 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree18','544 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree19','576 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BirchTree20','608 288 32 36','multitrees.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SpikeTrapItem','0 180 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MechanicalWallOpen','224 72 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MechanicalWallClosed','256 72 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AutomatonTorsoFR','64 0 32 36','automatons.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AutomatonRightArmFR','96 0 32 36','automatons.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AutomatonLeftArmFR','128 0 32 36','automatons.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AutomatonRightFootFR','160 0 32 36','automatons.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AutomatonLeftFootFR','192 0 32 36','automatons.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AutomatonTorsoBR','64 36 32 36','automatons.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AutomatonRightArmBR','128 36 32 36','automatons.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AutomatonLeftArmBR','96 36 32 36','automatons.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AutomatonLeftFootBR','160 36 32 36','automatons.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AutomatonRightFootBR','192 36 32 36','automatons.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillBaseFL','0 0 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillBaseBR','32 0 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillRoofFL','128 0 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillRoofBR','160 0 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail1_1FR','0 36 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail1_2FR','64 36 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail1_3FR','128 36 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail2_1FR','32 36 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail2_2FR','96 36 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail2_3FR','160 36 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail3_1FR','0 72 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail3_2FR','64 72 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail3_3FR','128 72 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail4_1FR','32 72 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail4_2FR','96 72 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail4_3FR','160 72 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail1_1BL','0 180 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail1_2BL','64 180 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail1_3BL','128 180 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail2_1BL','32 180 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail2_2BL','96 180 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail2_3BL','160 180 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail3_1BL','0 216 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail3_2BL','64 216 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail3_3BL','128 216 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail4_1BL','32 216 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail4_2BL','96 216 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail4_3BL','160 216 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SlidingWallMechanism','0 360 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SlidingWallWall','32 360 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SlidingWallOpen','0 396 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MechanicalStairRaisedFL','128 0 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MechanicalStairRaisedBL','160 0 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MechanicalStairLoweredFL','128 36 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MechanicalStairLoweredBL','160 36 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PipeUP','448 72 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Valve','416 180 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SkullWall','160 360 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SkullWallShort','512 720 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BoneBedFrameFR','224 324 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BoneBedFrameBL','224 288 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BoneBedSheetsFR','288 324 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Axle1FR','96 288 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Axle2FR','128 288 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Axle3FR','160 288 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Axle','64 36 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Axle4FR','192 288 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AxleUD1','96 324 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AxleUD2','160 324 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AxleUD3','128 324 32 36','traps_mechanism.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillBase2FL','64 0 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillBase2BR','96 0 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail1_4BL','192 180 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail1_4FR','192 36 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail2_4FR','224 36 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail3_4FR','192 72 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail4_4FR','224 72 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail2_4BL','224 180 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail3_4BL','192 216 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSail4_4BL','224 216 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth1_1FR','0 108 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth1_2FR','64 108 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth1_3FR','128 108 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth2_1FR','32 108 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth2_2FR','96 108 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth2_3FR','160 108 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth3_1FR','0 144 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth3_2FR','64 144 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth3_3FR','128 144 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth4_1FR','32 144 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth4_2FR','96 144 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth4_3FR','160 144 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth1_1BL','0 252 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth1_2BL','64 252 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth1_3BL','128 252 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth2_1BL','32 252 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth2_2BL','96 252 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth2_3BL','160 252 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth3_1BL','0 288 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth3_2BL','64 288 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth3_3BL','128 288 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth4_1BL','32 288 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth4_2BL','96 288 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth4_3BL','160 288 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth1_4BL','192 252 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth1_4FR','192 108 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth2_4FR','224 108 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth3_4FR','192 144 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth4_4FR','224 144 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth2_4BL','224 252 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth3_4BL','192 288 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WindmillSailCloth4_4BL','224 288 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FlourSack','192 0 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FlourSackPile','224 0 32 36','windmill.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Donkey','416 0 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('DonkeyBack','416 36 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('DonkeyYoung','416 72 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('DonkeyYoungBack','416 108 32 36','animals.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantWorkerBodyFR','160 216 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantWorkerBodyBR','160 252 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantWorkerHeadFR','192 216 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantWorkerHeadBR','192 252 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantWorkerArmRightFR','224 216 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantWorkerArmRightBR','224 252 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantWorkerArmLeftFR','256 216 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantWorkerArmLeftBR','256 252 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantWorkerLegRightFR','288 216 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantWorkerLegRightBR','288 252 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantWorkerLegLeftFR','320 216 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantWorkerLegLeftBR','320 252 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantSoldierBodyFR','224 288 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantSoldierBodyBR','224 324 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantSoldierHeadFR','256 288 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantSoldierHeadBR','256 324 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantSoldierArmRightFR','288 288 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantSoldierArmRightBR','320 324 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantSoldierArmLeftFR','320 288 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantSoldierArmLeftBR','288 324 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantSoldierLegRightFR','384 288 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantSoldierLegRightBR','384 324 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantSoldierLegLeftFR','352 288 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantSoldierLegLeftBR','352 324 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantQueenBodyFR','224 288 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantQueenBodyBR','224 324 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantQueenHeadFR','256 288 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantQueenHeadBR','256 324 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantQueenArmRightFR','288 288 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantQueenArmRightBR','320 324 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantQueenArmLeftFR','320 288 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantQueenArmLeftBR','288 324 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantQueenLegRightFR','384 288 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantQueenLegRightBR','384 324 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantQueenLegLeftFR','352 288 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MantQueenLegLeftBR','352 324 32 36','mobs.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AutomatonHeadBR','32 36 32 36','automatons.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AutomatonFurnaceFlameBR','64 72 32 36','automatons.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AutomatonEyeFR','224 0 32 36','automatons.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothFL1','0 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothFL2','32 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothFL3','64 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothFL4','96 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothFL5','128 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothFL6','160 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothFL7','192 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothFL8','224 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothFL9','256 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothFL10','288 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothFL11','320 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothFL12','352 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothFL13','384 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothFL14','416 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothFL15','448 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothFL16','480 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothFL17','512 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothBR1','0 36 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothBR2','32 36 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothBR3','64 36 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothBR4','96 36 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothBR5','128 36 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothBR6','160 36 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothBR7','192 36 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothBR8','224 36 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothBR9','256 36 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothBR10','288 36 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothBR11','320 36 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothBR12','352 36 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothBR13','384 36 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothBR14','416 36 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothBR15','448 36 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothBR16','480 36 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothBR17','512 36 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothFL','512 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MammothBR','512 0 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AutomatonCore','0 72 32 36','automatons.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Straw','288 432 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Hay','256 432 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Flower1Young','320 144 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Flower1','320 180 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Flower2Young','352 144 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Flower2','352 180 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Flower3Young','384 144 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Flower3','384 180 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Flower4Young','416 144 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Flower4','416 180 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Flower5Young','448 144 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Flower5','448 180 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Flower6Young','320 252 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Flower6','320 288 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Flower7Young','352 252 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Flower7','352 288 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Flower8Young','384 252 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Flower8','384 288 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Honey','128 324 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HayBale','128 432 32 36','plants.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BasaltFloor','32 576 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GraniteFloor','64 576 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SerpentineFloor','96 576 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BauxiteFloor','128 576 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SandstoneFloor','160 576 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LapisFloor','192 576 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MarbleFloor','224 576 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BasaltWall','32 612 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GraniteWall','64 612 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SerpentineWall','96 612 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BauxiteWall','128 612 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SandstoneWall','160 612 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LapisWall','192 612 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MarbleWall','224 612 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WallTorchBaseBL','0 468 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WallTorchBaseFR','0 504 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WallTorchFlame1BL','32 468 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WallTorchFlame2BL','64 468 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WallTorchFlame3BL','96 468 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WallTorchFlame4BL','128 468 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WallTorchFlame1FR','32 504 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WallTorchFlame2FR','64 504 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WallTorchFlame3FR','96 504 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WallTorchFlame4FR','128 504 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Chest','64 36 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BookshelfFR','64 252 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BookshelfBooksFR','64 288 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BookshelfBL','64 324 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BookshelfBooksBL','32 324 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Bookshelf2FR','96 252 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Bookshelf2BooksFR','96 288 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Bookshelf2BL','96 324 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Cabinet2FR','128 252 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Cabinet2BL','128 288 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BigTorchBase','224 144 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BrazierBase','256 144 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BigTorchFlame1','96 72 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BigTorchFlame2','128 72 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BigTorchFlame3','160 72 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BigTorchFlame4','192 72 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BrazierFlame1','192 36 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BrazierFlame2','224 36 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BrazierFlame3','256 36 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BrazierFlame4','288 36 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('DresserFR','0 396 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('DresserBL','32 396 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Sabretooth1FL','0 216 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Sabretooth2FL','32 216 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Sabretooth1BR','96 216 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Sabretooth2BR','64 216 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Sabretooth1FR','0 288 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Sabretooth2FR','32 288 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Sabretooth1BL','96 288 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Sabretooth2BL','64 288 32 36','multicreatures.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AlarmBellBellItem','384 108 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PlaceHolder','0 0 32 36','default.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('Backpack','352 72 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GnomeBackpackBack','352 36 32 36','gnomes.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SandContainer','96 72 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GlassFurnaceFR','128 36 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GlassFurnaceBL','160 36 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GlassFurnaceFlame1','128 72 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GlassFurnaceFlame2','160 72 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GlassFurnaceFlame3','192 72 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GlassFurnaceFlame4','224 72 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GlassIngot','384 0 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GlassBlock','480 0 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MosaicTile','416 0 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('RoughGlassGem','448 0 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MosaicFloor','448 0 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MosaicWall','448 36 32 36','terrain.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BowsRackFR','64 0 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BowsRackB','96 0 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GlassWorkPipeB','128 0 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GlassWorkPipeFR','160 0 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GlassIngotStack','192 0 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TargetBR','96 36 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TargetFL','64 36 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('IngotMouldBL','224 36 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('IngotMouldFR','192 36 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AlchemyVialsFL','320 36 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodCarverStockBL','384 36 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('WoodCarverStockFR','352 36 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ArrowBucket','64 72 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MortarAndPestle','288 72 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AlchemyStill','256 72 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CarpenterStock','352 72 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneCarverTableTop','384 72 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OilMillFL','0 144 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OilMillBR','0 108 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('OilStack','32 108 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PaperPress','64 108 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PaperMakerTableTop','96 108 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GlassBottleStack','192 108 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GlassPanelStack','224 108 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AlchemyStillFrame4','288 108 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AlchemyStillFrame3','256 108 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AlchemyStillFrame2','320 72 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AlchemyStillFrame1','320 108 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CarpenterTableTopFF','352 108 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CarpenterTableTopBR','384 108 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PaperRack','64 144 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CharcoalKilnBL','128 144 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CharcoalKilnFR','96 144 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GlassBlowerStockBL','192 144 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GlassBlowerStockFR','160 144 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SawMillTable','288 144 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SawMillBlade','320 144 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CoalPile','32 180 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CharcoalKilnFrame4','160 180 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CharcoalKilnFrame3','128 180 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CharcoalKilnFrame2','96 180 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CharcoalKilnFrame1','64 180 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeatherCrate','256 180 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('DyeTableTop','0 216 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('DyedClothStack','32 216 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MarketStallBR','96 216 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MarketStallFR','64 216 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CartBR','128 252 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CartFL','128 216 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('CrateSealed','160 216 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('HideStack','192 216 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeatherSuitFR','224 216 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeatherSuitBR','224 252 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('LeatherSheet','256 216 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneWorkTools','384 216 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('VatBL','32 252 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('VatFR','0 252 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MarketStallTopBR','96 252 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MarketStallTopFR','64 252 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AnimalStallBL','160 288 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('AnimalStallFR','160 252 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TanningVatBL','256 252 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TanningVatFR','256 288 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ChiselMasonFR','320 252 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ChiselMasonBR','288 252 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneRubble','352 252 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('DyeVatBL','32 288 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('DyeVatFR','0 288 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StovePanTop','64 288 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MarketSackFR','128 288 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MarketSackBL','96 288 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoolWood','288 288 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneCarveBL','352 288 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoneCarveFR','320 288 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoveBL','96 324 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoveFR','64 324 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BrewVat','160 324 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('BrewVatTop','192 324 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('KitchenPot','0 360 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('KitchenHearth','32 360 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('PotTop','64 360 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoveCookBL','128 360 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('StoveCookFR','96 360 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FruitPress','192 360 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FurnaceFlame4','384 360 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FurnaceFlame3','352 360 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FurnaceFlame2','320 360 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('FurnaceFlame1','288 360 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('KilnFlame4','320 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('KilnFlame3','288 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('KilnFlame2','320 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('KilnFlame1','288 396 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('IngotMouldTop','384 0 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('TailorStand','384 288 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ClothStack','0 432 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SpinningWheelBR','64 432 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SpinningWheelFR','32 432 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SpinningWheelTopBR','64 468 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SpinningWheelTopFR','32 468 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ArmourSuitBR','128 432 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ArmourSuitFR','96 432 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrindStoneTop','160 432 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GrindStone','192 432 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('ThreadStack','0 468 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MeatStackFR','192 468 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SausageStackFR','160 468 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MeatStackBL','256 468 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('SausageStackBL','224 468 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MeatGrinderBR','64 504 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('MeatGrinderFL','32 504 32 36','workshops.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIChainmailArmorHead','0 0 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIChainmailArmorChest','32 0 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIChainmailArmorArms','64 0 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIChainmailArmorHands','96 0 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIChainmailArmorLegs','128 0 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIChainmailArmorFeet','160 0 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIPlateArmorHead','0 36 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIPlateArmorChest','32 36 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIPlateArmorArms','64 36 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIPlateArmorHands','96 36 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIPlateArmorLegs','128 36 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIPlateArmorFeet','160 36 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIHeavyPlateArmorHead','0 72 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIHeavyPlateArmorChest','32 72 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIHeavyPlateArmorArms','64 72 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIHeavyPlateArmorHands','96 72 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIHeavyPlateArmorLegs','128 72 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIHeavyPlateArmorFeet','160 72 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UILeatherArmorHead','0 108 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UILeatherArmorChest','32 108 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UILeatherArmorArms','64 108 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UILeatherArmorHands','96 108 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UILeatherArmorLegs','128 108 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UILeatherArmorFeet','160 108 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIBoneArmorHead','0 144 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIBoneArmorChest','32 144 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIBoneArmorArms','64 144 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIBoneArmorHands','96 144 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIBoneArmorLegs','128 144 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIBoneArmorFeet','160 144 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIEmptySlotHead','0 180 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIEmptySlotChest','32 180 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIEmptySlotArms','64 180 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIEmptySlotHands','96 180 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIEmptySlotLegs','128 180 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIEmptySlotFeet','160 180 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIEmptySlotShield','0 216 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIEmptySlotNeck','32 216 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIEmptySlotPotion','64 216 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIEmptySlotRing','96 216 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIEmptySlotWeapon','128 216 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIEmptySlotBack','160 216 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UITorch','160 144 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIWoodenSword','192 0 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIWoodenShield','224 0 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIStoneSwordBlade','256 0 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UISwordBlade','192 36 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIAxeBlade','224 36 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIStoneAxeBlade','256 36 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UISwordBase','192 72 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIAxeBase','224 72 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UI1','256 72 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIFellingAxeHead','192 108 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIPickaxeHead','224 108 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UI2','256 108 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIFellingAxeBase','192 144 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIPickaxeBase','224 144 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UI3','256 144 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIHammerHead','192 180 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIMetalShield','224 180 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIStoneHammerHead','256 180 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIHammerBase','192 216 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UIBow','224 216 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('UI4','256 216 32 36','weapons-armour-UI-large.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GlassJar','416 108 32 36','furniture.png'); INSERT INTO "BaseSprites" ("ID","SourceRectangle","Tilesheet") VALUES ('GlassBottle','480 108 32 36','furniture.png'); INSERT INTO "BaseItems" ("ID") VALUES ('RawSoil'); INSERT INTO "BaseItems" ("ID") VALUES ('RawStone'); INSERT INTO "BaseItems" ("ID") VALUES ('RawWood'); INSERT INTO "BaseItems" ("ID") VALUES ('RawCoal'); INSERT INTO "BaseItems" ("ID") VALUES ('RawOre'); INSERT INTO "BaseItems" ("ID") VALUES ('RawGem'); INSERT INTO "BaseItems" ("ID") VALUES ('Bone'); INSERT INTO "BaseItems" ("ID") VALUES ('Meat'); INSERT INTO "BaseItems" ("ID") VALUES ('Grain'); INSERT INTO "BaseItems" ("ID") VALUES ('Milk'); INSERT INTO "BaseItems" ("ID") VALUES ('Fruit'); INSERT INTO "BaseItems" ("ID") VALUES ('Vegetable'); INSERT INTO "BaseItems" ("ID") VALUES ('Leaves'); INSERT INTO "BaseItems" ("ID") VALUES ('RawCloth'); INSERT INTO "BaseItems" ("ID") VALUES ('RawHide'); INSERT INTO "BaseItems" ("ID") VALUES ('Straw'); INSERT INTO "BaseItems" ("ID") VALUES ('Berries'); INSERT INTO "BaseItems" ("ID") VALUES ('Egg'); INSERT INTO "BaseItems" ("ID") VALUES ('Mushroom'); INSERT INTO "BaseItems" ("ID") VALUES ('Skull'); INSERT INTO "BaseItems" ("ID") VALUES ('Fish'); INSERT INTO "BaseItems" ("ID") VALUES ('FishMeat'); INSERT INTO "BaseItems" ("ID") VALUES ('FishBone'); INSERT INTO "Automaton_Cores_Skills" ("ID","SkillID","SkillValue") VALUES ('AutomatonCoreMark1','Hauling',2000); INSERT INTO "Automaton_Cores_Skills" ("ID","SkillID","SkillValue") VALUES ('AutomatonCoreMark2','Hauling',2000); INSERT INTO "Automaton_Cores_Skills" ("ID","SkillID","SkillValue") VALUES ('AutomatonCoreMark2','Mining',2000); INSERT INTO "Automaton_Cores_Skills" ("ID","SkillID","SkillValue") VALUES ('AutomatonCoreMark2','Woodcutting',2000); INSERT INTO "Automaton_Cores" ("ID","BehaviorTree") VALUES ('AutomatonCoreMark1','AutomatonMark1'); INSERT INTO "Automaton_Cores" ("ID","BehaviorTree") VALUES ('AutomatonCoreMark2','AutomatonMark2'); INSERT INTO "Attributes" ("ID") VALUES ('Str'); INSERT INTO "Attributes" ("ID") VALUES ('Dex'); INSERT INTO "Attributes" ("ID") VALUES ('Con'); INSERT INTO "Attributes" ("ID") VALUES ('Int'); INSERT INTO "Attributes" ("ID") VALUES ('Wis'); INSERT INTO "Attributes" ("ID") VALUES ('Cha'); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('PandaAdult','NoneYet',NULL,0.0,NULL,0.0,0.0,NULL,0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('ChickenAdult','EggLayer',NULL,1.0,NULL,1.0,0.0,'Chicken',0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('DuckAdult','EggLayer',NULL,1.0,NULL,1.0,0.0,'Duck',0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('GooseAdult','EggLayer',NULL,1.0,NULL,1.0,0.0,'Goose',0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('GoatYoung','Grazing',NULL,0.0,NULL,0.0,0.0,NULL,8.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('GoatAdult','Grazing',NULL,0.0,NULL,0.0,0.0,NULL,4.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('GoatAdult','Producer','female',1.0,NULL,1.0,0.0,NULL,0.0,0.0,'Milk',0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('SheepYoung','Grazing',NULL,0.0,NULL,0.0,0.0,NULL,8.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('SheepAdult','Grazing',NULL,0.0,NULL,0.0,0.0,NULL,4.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('SheepAdult','Producer',NULL,5.0,NULL,10.0,0.0,NULL,0.0,0.0,'RawCloth',0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('BadgerAdult','NoneYet',NULL,0.0,NULL,0.0,0.0,NULL,0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('LizzardAdult','NoneYet',NULL,0.0,NULL,0.0,0.0,NULL,0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('SquirrelAdult','NoneYet',NULL,0.0,NULL,0.0,0.0,NULL,0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('BlackBearAdult','NoneYet',NULL,0.0,NULL,0.0,0.0,NULL,0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('LlamaYoung','Grazing',NULL,0.0,NULL,0.0,0.0,NULL,4.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('LlamaAdult','Grazing',NULL,0.0,NULL,0.0,0.0,NULL,2.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('LlamaAdult','Producer',NULL,5.0,NULL,10.0,0.0,NULL,0.0,0.0,'RawCloth',0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('YakYoung','Grazing',NULL,0.0,NULL,0.0,0.0,NULL,2.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('YakAdult','Grazing',NULL,0.0,NULL,0.0,0.0,NULL,1.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('YakAdult','Producer','female',1.0,NULL,1.0,0.0,NULL,0.0,0.0,'Milk',0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('CowYoung','Grazing',NULL,0.0,NULL,0.0,0.0,NULL,2.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('CowAdult','Grazing',NULL,0.0,NULL,0.0,0.0,NULL,1.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('CowAdult','Producer','female',1.0,NULL,1.0,0.0,NULL,0.0,0.0,'Milk',0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('EmuAdult','EggLayer',NULL,1.0,NULL,3.0,0.0,'Emu',0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('SpiderAdult','NoneYet',NULL,0.0,NULL,0.0,0.0,NULL,0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('SnakeAdult','NoneYet',NULL,0.0,NULL,0.0,0.0,NULL,0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('BeetleEggAdult','Morph',NULL,0.0,'Beetle',0.0,0.0,NULL,0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('BeetleAdult','EggLayer',NULL,3.0,NULL,10.0,0.0,'BeetleEgg',0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('WoodlouseAdult','TreeVermin',NULL,0.0,NULL,0.0,10.0,NULL,0.0,0.1,NULL,1.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('GreyFishAdult','NoneYet',NULL,0.0,NULL,0.0,0.0,NULL,0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('GreenFishAdult','NoneYet',NULL,0.0,NULL,0.0,0.0,NULL,0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('CrystalSnakeAdult','NoneYet',NULL,0.0,NULL,0.0,0.0,NULL,0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('ZygYoungAdult','NoneYet',NULL,0.0,NULL,0.0,0.0,NULL,0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('ZygYouthAdult','NoneYet',NULL,0.0,NULL,0.0,0.0,NULL,0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('ZygAdultAdult','NoneYet',NULL,0.0,NULL,0.0,0.0,NULL,0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('ZygSeniorAdult','NoneYet',NULL,0.0,NULL,0.0,0.0,NULL,0.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('ChickenAdult','Grazing',NULL,0.0,NULL,0.0,0.0,NULL,10.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('DuckAdult','Grazing',NULL,0.0,NULL,0.0,0.0,NULL,10.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('GooseAdult','Grazing',NULL,0.0,NULL,0.0,0.0,NULL,10.0,0.0,NULL,0.0); INSERT INTO "Animals_States_Behavior" ("ID","ID2","RequiredGender","Amount","CreatureID","DaysBetween","EatTime","EggID","FoodValue","HungerPerTick","ItemID","Speed") VALUES ('Rabbit','Grazing',NULL,0.0,NULL,0.0,0.0,NULL,10.0,0.0,NULL,0.0); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Panda','Adult','Panda',0.0,0,'Animal','false',5,10,'AnimalBig'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Rabbit','Young','RabbitYoung',3.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Rabbit','Adult','Rabbit',0.0,0,'Animal','false',2,3,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Chicken','Egg','Egg',3.0,1,'Egg','false',0,0,'Egg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Chicken','Young','ChickenYoung',3.0,0,'Animal','false',1,1,'BirdSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Chicken','Adult','Chicken',0.0,0,'Animal','false',2,3,'Bird'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Duck','Egg','Egg',3.0,1,'Egg','false',0,0,'Egg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Duck','Young','DuckYoung',3.0,0,'Animal','false',1,1,'BirdSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Duck','Adult','Duck',0.0,0,'Animal','false',2,3,'Bird'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Goose','Egg','Egg',3.0,1,'Egg','false',0,0,'Egg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Goose','Young','GooseYoung',3.0,0,'Animal','false',1,1,'BirdSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Goose','Adult','Goose',0.0,0,'Animal','false',2,3,'Bird'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Pig','Young','PigYoung',8.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Pig','Adult','Pig',0.0,0,'Animal','false',4,3,'Animal'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Shepherd','Young','ShepherdYoung',8.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Shepherd','Adult','Shepherd',0.0,0,'Animal','false',6,10,'Animal'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('CatTabby','Young','CatTabby',8.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('CatTabby','Adult','CatTabby',0.0,0,'Animal','false',3,3,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('CatBlack','Young','CatBlack',8.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('CatBlack','Adult','CatBlack',0.0,0,'Animal','false',3,3,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Porcupine','Young','Porcupine',8.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Porcupine','Adult','Porcupine',0.0,0,'Animal','false',5,8,'Animal'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Fox','Young','Fox',8.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Fox','Adult','Fox',0.0,0,'AnimalNightHunter','true',4,5,'Animal'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Wolf','Young','Wolf',8.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Wolf','Adult','Wolf',0.0,0,'AnimalHunter','true',6,10,'Animal'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Stag','Young','Stag',8.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Stag','Adult','Stag',0.0,0,'Animal','false',5,8,'Animal'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Roe','Young','Roe',8.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Roe','Adult','Roe',0.0,0,'Animal','false',4,6,'Animal'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Goat','Young','GoatYoung',8.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Goat','Adult','Goat',0.0,0,'Animal','false',3,5,'Animal'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Sheep','Young','SheepYoung',7.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Sheep','Adult','Sheep',0.0,0,'Animal','false',3,4,'Animal'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Badger','Adult','Badger',0.0,0,'Animal','false',5,10,'Animal'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Lizzard','Adult','Lizzard',0.0,0,'Animal','false',3,5,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Squirrel','Adult','Squirrel',0.0,0,'Animal','false',2,2,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('BlackBear','Adult','BlackBear',0.0,0,'Animal','false',6,12,'AnimalBig'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Llama','Young','LlamaYoung',8.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Llama','Adult','Llama',0.0,0,'Animal','false',4,6,'Animal'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Yak','Young','YakYoung',10.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Yak','Adult','Yak',0.0,0,'Animal','false',5,9,'AnimalBig'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Cow','Young','CowYoung',10.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Cow','Adult','Cow',0.0,0,'Animal','false',4,8,'AnimalBig'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Emu','Egg','Egg',5.0,1,'Egg','false',0,0,'Egg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Emu','Young','EmuYoung',5.0,0,'Animal','false',1,1,'Bird'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Emu','Adult','Emu',0.0,0,'Animal','false',5,6,'BirdBig'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Spider','Adult','Spider',0.0,0,'Animal','false',5,7,'Spider'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Snake','Adult','Snake',0.0,0,'Animal','false',6,7,'Snake'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('BeetleEgg','Egg','Cocoon',10.0,1,'Animal','false',0,0,'Egg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('BeetleEgg','Adult','Cocoon',0.0,0,'Animal','false',0,0,'Egg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Beetle','Adult','Beetle',0.0,0,'Animal','false',4,6,'Bug'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Woodlouse','Egg','Cocoon',2.0,1,'Animal','false',0,0,'Egg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Woodlouse','Adult','Woodlouse',0.0,0,'Animal','false',3,4,'Bug'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('GreyFish','Adult','GreyFish',0.0,0,'Animal','false',1,1,'Fish'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('GreenFish','Adult','GreyFish',0.0,0,'Animal','false',1,1,'Fish'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('CrystalSnake','Adult','CrystalSnake',0.0,0,'Animal','false',6,7,'Snake'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('ZygYoung','Adult','ZygYoung',0.0,0,'Animal','false',1,1,'Zyg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('ZygYouth','Adult','ZygYouth',0.0,0,'Animal','false',1,1,'Zyg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('ZygAdult','Adult','ZygAdult',0.0,0,'Animal','false',1,1,'Zyg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('ZygSenior','Adult','ZygSenior',0.0,0,'Animal','false',1,1,'Zyg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Mammoth','Adult','Mammoth',0.0,0,'AnimalBig','false',20,20,'AnimalBig'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Sabretooth','Adult','Sabretooth',0.0,0,'AnimalBig','true',15,15,'AnimalBig'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Goat','Adult','Goat',0.0,0,'Animal','false',3,5,'Animal'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Sheep','Young','SheepYoung',7.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Sheep','Adult','Sheep',0.0,0,'Animal','false',3,4,'Animal'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Badger','Adult','Badger',0.0,0,'Animal','false',5,10,'Animal'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Lizzard','Adult','Lizzard',0.0,0,'Animal','false',3,5,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Squirrel','Adult','Squirrel',0.0,0,'Animal','false',2,2,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('BlackBear','Adult','BlackBear',0.0,0,'Animal','false',6,12,'AnimalBig'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Llama','Young','LlamaYoung',8.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Llama','Adult','Llama',0.0,0,'Animal','false',4,6,'Animal'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Yak','Young','YakYoung',10.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Yak','Adult','Yak',0.0,0,'Animal','false',5,9,'AnimalBig'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Cow','Young','CowYoung',10.0,0,'Animal','false',1,1,'AnimalSmall'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Cow','Adult','Cow',0.0,0,'Animal','false',4,8,'AnimalBig'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Emu','Egg','Egg',5.0,1,'Egg','false',0,0,'Egg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Emu','Young','EmuYoung',5.0,0,'Animal','false',1,1,'Bird'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Emu','Adult','Emu',0.0,0,'Animal','false',5,6,'BirdBig'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Spider','Adult','Spider',0.0,0,'Animal','false',5,7,'Spider'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Snake','Adult','Snake',0.0,0,'Animal','false',6,7,'Snake'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('BeetleEgg','Egg','Cocoon',10.0,1,'Animal','false',0,0,'Egg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('BeetleEgg','Adult','Cocoon',0.0,0,'Animal','false',0,0,'Egg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Beetle','Adult','Beetle',0.0,0,'Animal','false',4,6,'Bug'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Woodlouse','Egg','Cocoon',2.0,1,'Animal','false',0,0,'Egg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Woodlouse','Adult','Woodlouse',0.0,0,'Animal','false',3,4,'Bug'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('GreyFish','Adult','GreyFish',0.0,0,'Animal','false',1,1,'Fish'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('GreenFish','Adult','GreyFish',0.0,0,'Animal','false',1,1,'Fish'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('CrystalSnake','Adult','CrystalSnake',0.0,0,'Animal','false',6,7,'Snake'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('ZygYoung','Adult','ZygYoung',0.0,0,'Animal','false',1,1,'Zyg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('ZygYouth','Adult','ZygYouth',0.0,0,'Animal','false',1,1,'Zyg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('ZygAdult','Adult','ZygAdult',0.0,0,'Animal','false',1,1,'Zyg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('ZygSenior','Adult','ZygSenior',0.0,0,'Animal','false',1,1,'Zyg'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Mammoth','Adult','Mammoth',0.0,0,'AnimalBig','false',20,20,'AnimalBig'); INSERT INTO "Animals_States" ("ID","ID2","SpriteID","DaysToNextState","Immobile","BehaviorTree","IsAggro","Attack","Damage","Anatomy") VALUES ('Sabretooth','Adult','Sabretooth',0.0,0,'AnimalBig','true',15,15,'AnimalBig'); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Panda',4.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Panda',2.0,'Bone',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Rabbit',2.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Chicken',2.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Duck',2.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Goose',2.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Pig',4.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Pig',1.0,'Bone',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Shepherd',2.0,'Meat','Dog'); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Shepherd',1.0,'Bone','Dog'); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('CatTabby',2.0,'Meat','Cat'); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('CatBlack',2.0,'Meat','Cat'); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Porcupine',4.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Porcupine',1.0,'Bone',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Fox',2.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Fox',1.0,'Bone',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Wolf',3.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Wolf',1.0,'Bone',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Stag',4.0,'Meat','Deer'); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Stag',1.0,'Bone',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Roe',4.0,'Meat','Deer'); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Roe',1.0,'Bone',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Goat',4.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Goat',1.0,'Bone',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Badger',2.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Badger',1.0,'Bone',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Sheep',4.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Sheep',1.0,'Bone',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Lizzard',2.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Squirrel',2.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('BlackBear',6.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('BlackBear',1.0,'Bone',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Llama',6.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Llama',1.0,'Bone',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Yak',8.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Yak',1.0,'Bone',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Cow',8.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Cow',1.0,'Bone',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Emu',4.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Emu',1.0,'Bone',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Spider',3.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Snake',2.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Beetle',3.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Woodlouse',2.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('GreyFish',2.0,'FishMeat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('GreyFish',1.0,'FishBone',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('GreenFish',2.0,'FishMeat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('GreenFish',1.0,'FishBone',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('CrystalSnake',2.0,'Meat',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Cow',1.0,'RawHide',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Stag',1.0,'RawHide',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Wolf',1.0,'RawHide',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Yak',1.0,'RawHide',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Bear',1.0,'RawHide',NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES (NULL,NULL,NULL,NULL); INSERT INTO "Animals_OnButcher" ("ID","Amount","ItemID","Type") VALUES ('Emu',1.0,'RawHide',NULL); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Panda',1,0,'Animal',NULL,0,'Fruit',0.0,0,0.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Rabbit',1,0,'Animal',NULL,0,'Vegetable',3.0,1,1.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Chicken',0,0,'Animal',NULL,0,'Seed|Grain',0.0,1,1.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Duck',1,0,'Animal',NULL,0,'Seed|Grain',0.0,1,1.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Goose',0,0,'Animal',NULL,0,'Seed|Grain',0.0,1,1.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Pig',0,0,'Animal',NULL,0,'Vegetable|Grain',10.0,1,2.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Shepherd',0,0,'AnimalGuardDog',NULL,1,'Meat',10.0,0,2.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('CatTabby',0,0,'Animal',NULL,1,'Meat',10.0,0,2.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('CatBlack',0,0,'Animal',NULL,1,'Meat',10.0,0,2.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Porcupine',1,0,'Animal',NULL,0,'Fruit',10.0,0,2.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Fox',1,0,'AnimalNightHunter',NULL,0,'Meat',10.0,0,2.0,'Chicken|Goose',0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Wolf',1,0,'AnimalHunter',NULL,0,'Meat',10.0,0,2.0,'Rabbit',0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Stag',1,0,'Animal',NULL,0,'Hay|Grain',10.0,0,2.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Roe',1,0,'Animal',NULL,0,'Hay|Grain',10.0,0,2.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Goat',1,0,'Animal',NULL,0,'Hay|Grain',10.0,1,2.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Sheep',0,0,'Animal',NULL,0,'Hay|Grain',9.0,1,2.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Badger',1,0,'Animal',NULL,0,'Fruit',0.0,0,0.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Lizzard',1,0,'Animal',NULL,0,'Fruit|Vegetable',0.0,0,0.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Squirrel',1,0,'Animal',NULL,0,'Fruit',0.0,0,0.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('BlackBear',1,0,'Animal',NULL,0,'Meat|Fruit',0.0,0,0.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Llama',0,0,'Animal',NULL,0,'Hay|Grain',8.0,1,3.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Yak',0,0,'Animal',NULL,0,'Hay|Grain',12.0,1,4.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Cow',0,0,'Animal',NULL,0,'Hay|Grain',12.0,1,4.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Emu',0,0,'Animal',NULL,0,'Seed|Grain',0.0,1,2.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Spider',1,0,'Animal',NULL,0,'Meat',0.0,0,0.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Snake',1,0,'Animal',NULL,0,'Meat',0.0,0,0.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('BeetleEgg',1,0,'Animal',NULL,0,'none',0.0,0,0.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Beetle',1,0,'Animal',NULL,0,'Meat|Fruit|Vegetable',0.0,0,0.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('Woodlouse',1,0,'Animal',NULL,0,'RawWood|Plank',0.0,0,0.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('GreyFish',1,1,'Animal',NULL,0,'Seed|Grain',0.0,0,0.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('GreenFish',1,1,'Animal',NULL,0,'Seed|Grain',0.0,0,0.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('CrystalSnake',1,0,'Animal','Mushroom',0,'none',0.0,0,0.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('ZygYoung',1,0,'Animal','Mushroom',0,'none',0.0,0,0.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('ZygYouth',1,0,'Animal','Mushroom',0,'none',0.0,0,0.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('ZygAdult',1,0,'Animal','Mushroom',0,'none',0.0,0,0.0,NULL,0); INSERT INTO "Animals" ("ID","AllowInWild","Aquatic","BehaviorTree","Biome","Embark","Food","GestationDays","Pasture","PastureSize","Prey","IsMulti") VALUES ('ZygSenior',1,0,'Animal','Mushroom',0,'none',0.0,0,0.0,NULL,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Humanoid','Torso',NULL,'false','Middle','Center','Both',50,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Humanoid','Head','Torso','false','High','Center','Both',50,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Humanoid','Brain','Head','true','High','Center','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Humanoid','LeftEye','Head','false','High','Left','Both',1,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Humanoid','RightEye','Head','false','High','Right','Both',1,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Humanoid','LeftArm','Torso','false','Middle','Left','Both',30,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Humanoid','LeftHand','LeftArm','false','Middle','Left','Both',15,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Humanoid','RightArm','Torso','false','Middle','Right','Both',30,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Humanoid','RightHand','RightArm','false','Middle','Right','Both',15,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Humanoid','LeftLeg','Torso','false','Low','Left','Both',40,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Humanoid','LeftFoot','LeftLeg','false','Low','Left','Both',20,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Humanoid','RightLeg','Torso','false','Low','Right','Both',40,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Humanoid','RightFoot','RightLeg','false','Low','Right','Both',20,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Humanoid','Heart','Torso','true','Middle','Center','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Humanoid','LeftLung','Torso','true','Middle','Left','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Humanoid','RightLung','Torso','true','Middle','Right','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Animal','Torso',NULL,'false','Middle','Center','Both',50,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Animal','Head','Torso','false','High','Center','Front',50,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Animal','Brain','Head','true','High','Center','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Animal','LeftEye','Head','false','High','Left','Both',1,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Animal','RightEye','Head','false','High','Right','Both',1,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Animal','LeftFrontLeg','Torso','false','Low','Left','Front',30,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Animal','LeftFrontFoot','LeftFrontLeg','false','Low','Left','Front',15,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Animal','RightFrontLeg','Torso','false','Low','Right','Front',30,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Animal','RightFrontFoot','RightFrontLeg','false','Low','Right','Front',15,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Animal','LeftLeg','Torso','false','Low','Left','Back',40,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Animal','LeftFoot','LeftLeg','false','Low','Left','Back',20,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Animal','RightLeg','Torso','false','Low','Right','Back',40,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Animal','RightFoot','RightLeg','false','Low','Right','Back',20,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Animal','Heart','Torso','true','Middle','Center','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Animal','LeftLung','Torso','true','Middle','Left','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Animal','RightLung','Torso','true','Middle','Right','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalSmall','Torso',NULL,'false','Middle','Center','Both',25,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalSmall','Head','Torso','false','High','Center','Front',25,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalSmall','Brain','Head','true','High','Center','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalSmall','LeftEye','Head','false','High','Left','Both',1,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalSmall','RightEye','Head','false','High','Right','Both',1,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalSmall','LeftFrontLeg','Torso','false','Low','Left','Front',15,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalSmall','LeftFrontFoot','LeftFrontLeg','false','Low','Left','Front',7,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalSmall','RightFrontLeg','Torso','false','Low','Right','Front',15,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalSmall','RightFrontFoot','RightFrontLeg','false','Low','Right','Front',7,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalSmall','LeftLeg','Torso','false','Low','Left','Back',20,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalSmall','LeftFoot','LeftLeg','false','Low','Left','Back',10,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalSmall','RightLeg','Torso','false','Low','Right','Back',20,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalSmall','RightFoot','RightLeg','false','Low','Right','Back',10,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalSmall','Heart','Torso','true','Middle','Center','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalSmall','LeftLung','Torso','true','Middle','Left','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalSmall','RightLung','Torso','true','Middle','Right','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalBig','Torso',NULL,'false','Middle','Center','Both',75,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalBig','Head','Torso','false','High','Center','Front',75,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalBig','Brain','Head','true','High','Center','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalBig','LeftEye','Head','false','High','Left','Both',1,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalBig','RightEye','Head','false','High','Right','Both',1,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalBig','LeftFrontLeg','Torso','false','Low','Left','Front',45,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalBig','LeftFrontFoot','LeftFrontLeg','false','Low','Left','Front',22,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalBig','RightFrontLeg','Torso','false','Low','Right','Front',45,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalBig','RightFrontFoot','RightFrontLeg','false','Low','Right','Front',22,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalBig','LeftLeg','Torso','false','Low','Left','Back',60,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalBig','LeftFoot','LeftLeg','false','Low','Left','Back',30,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalBig','RightLeg','Torso','false','Low','Right','Back',60,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalBig','RightFoot','RightLeg','false','Low','Right','Back',30,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalBig','Heart','Torso','true','Middle','Center','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalBig','LeftLung','Torso','true','Middle','Left','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('AnimalBig','RightLung','Torso','true','Middle','Right','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Bird','Torso',NULL,'false','Middle','Center','Both',20,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Bird','Head','Torso','false','High','Center','Front',10,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Bird','Brain','Head','true','High','Center','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Bird','LeftEye','Head','false','High','Left','Both',1,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Bird','RightEye','Head','false','High','Right','Both',1,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Bird','LeftWing','Torso','false','Middle','Left','Both',10,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Bird','RightWing','Torso','false','Middle','Right','Both',10,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Bird','LeftLeg','Torso','false','Low','Left','Back',15,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Bird','LeftFoot','LeftLeg','false','Low','Left','Back',10,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Bird','RightLeg','Torso','false','Low','Right','Back',15,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Bird','RightFoot','RightLeg','false','Low','Right','Back',10,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Bird','Heart','Torso','true','Middle','Center','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Bird','LeftLung','Torso','true','Middle','Left','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Bird','RightLung','Torso','true','Middle','Right','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdSmall','Torso',NULL,'false','Middle','Center','Both',10,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdSmall','Head','Torso','false','High','Center','Front',5,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdSmall','Brain','Head','true','High','Center','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdSmall','LeftEye','Head','false','High','Left','Both',1,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdSmall','RightEye','Head','false','High','Right','Both',1,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdSmall','LeftWing','Torso','false','Middle','Left','Both',5,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdSmall','RightWing','Torso','false','Middle','Right','Both',5,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdSmall','LeftLeg','Torso','false','Low','Left','Back',10,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdSmall','LeftFoot','LeftLeg','false','Low','Left','Back',5,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdSmall','RightLeg','Torso','false','Low','Right','Back',10,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdSmall','RightFoot','RightLeg','false','Low','Right','Back',5,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdSmall','Heart','Torso','true','Middle','Center','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdSmall','LeftLung','Torso','true','Middle','Left','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdSmall','RightLung','Torso','true','Middle','Right','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdBig','Torso',NULL,'false','Middle','Center','Both',50,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdBig','Head','Torso','false','High','Center','Front',20,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdBig','Brain','Head','true','High','Center','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdBig','LeftEye','Head','false','High','Left','Both',1,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdBig','RightEye','Head','false','High','Right','Both',1,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdBig','LeftWing','Torso','false','Middle','Left','Both',30,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdBig','RightWing','Torso','false','Middle','Right','Both',30,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdBig','LeftLeg','Torso','false','Low','Left','Back',40,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdBig','LeftFoot','LeftLeg','false','Low','Left','Back',20,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdBig','RightLeg','Torso','false','Low','Right','Back',40,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdBig','RightFoot','RightLeg','false','Low','Right','Back',20,0); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdBig','Heart','Torso','true','Middle','Center','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdBig','LeftLung','Torso','true','Middle','Left','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('BirdBig','RightLung','Torso','true','Middle','Right','Both',1,1); INSERT INTO "Anatomy_Parts" ("ID","ID2","Parent","IsInside","Height","Side","Facing","HP","IsVital") VALUES ('Dummy','Torso',NULL,'false','Middle','Center','Both',50,1); INSERT INTO "Anatomy" ("ID","Blood","Root","LayerOrder") VALUES ('Humanoid',5000,'Torso','S|M|B'); INSERT INTO "Anatomy" ("ID","Blood","Root","LayerOrder") VALUES ('AnimalSmall',1000,'Torso',NULL); INSERT INTO "Anatomy" ("ID","Blood","Root","LayerOrder") VALUES ('Animal',3000,'Torso',NULL); INSERT INTO "Anatomy" ("ID","Blood","Root","LayerOrder") VALUES ('AnimalBig',6000,'Torso',NULL); INSERT INTO "Anatomy" ("ID","Blood","Root","LayerOrder") VALUES ('BirdSmall',500,'Torso',NULL); INSERT INTO "Anatomy" ("ID","Blood","Root","LayerOrder") VALUES ('Bird',1000,'Torso',NULL); INSERT INTO "Anatomy" ("ID","Blood","Root","LayerOrder") VALUES ('BirdBig',2000,'Torso',NULL); INSERT INTO "Anatomy" ("ID","Blood","Root","LayerOrder") VALUES ('Snake',1000,'Torso',NULL); INSERT INTO "Anatomy" ("ID","Blood","Root","LayerOrder") VALUES ('Spider',1000,'Torso',NULL); INSERT INTO "Anatomy" ("ID","Blood","Root","LayerOrder") VALUES ('Bug',1000,'Torso',NULL); INSERT INTO "Anatomy" ("ID","Blood","Root","LayerOrder") VALUES ('Fish',1000,'Torso',NULL); INSERT INTO "Anatomy" ("ID","Blood","Root","LayerOrder") VALUES ('Zyg',1000,'Torso',NULL); INSERT INTO "Anatomy" ("ID","Blood","Root","LayerOrder") VALUES ('Dummy',1000,'Torso',NULL); INSERT INTO "AI" ("ID","BehaviorTree") VALUES ('Gnome','gnome_standard.xml'); INSERT INTO "AI" ("ID","BehaviorTree") VALUES ('GnomeTrader','gnome_trader.xml'); INSERT INTO "AI" ("ID","BehaviorTree") VALUES ('Animal','animal_standard.xml'); INSERT INTO "AI" ("ID","BehaviorTree") VALUES ('AnimalHunter','animal_hunter.xml'); INSERT INTO "AI" ("ID","BehaviorTree") VALUES ('AnimalNightHunter','animal_nighthunter.xml'); INSERT INTO "AI" ("ID","BehaviorTree") VALUES ('AnimalSmallPasture','animal_small_pasture.xml'); INSERT INTO "AI" ("ID","BehaviorTree") VALUES ('Monster','monster_standard.xml'); INSERT INTO "AI" ("ID","BehaviorTree") VALUES ('AnimalGuardDog','animal_guard_dog.xml'); INSERT INTO "AI" ("ID","BehaviorTree") VALUES ('AutomatonMark1','automaton_mark1.xml'); INSERT INTO "AI" ("ID","BehaviorTree") VALUES ('AutomatonMark2','automaton_mark2.xml'); INSERT INTO "AI" ("ID","BehaviorTree") VALUES ('MantWorker','monster_mant_worker.xml'); INSERT INTO "AI" ("ID","BehaviorTree") VALUES ('MantSoldier','monster_mant_soldier.xml'); INSERT INTO "AI" ("ID","BehaviorTree") VALUES ('MantQueen','monster_mant_queen.xml'); INSERT INTO "AI" ("ID","BehaviorTree") VALUES ('AnimalBig','animal_big.xml'); INSERT INTO "AI" ("ID","BehaviorTree") VALUES ('Egg','egg.xml'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('Mine','0 0 0','MiningJobWall',0,'Floor|MineableWall','Construction|Job|Mechanism'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('DigHole','0 0 0','SolidSelectionFloor',0,'Floor','AnyWall|Mechanism'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('DigHole','0 0 -1','MiningJobWall',0,'Floor|Wall','Construction|Job|Mechanism'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('ExplorativeMine','0 0 0','MiningJobWall',0,'Floor|Wall','Construction|Job|Mechanism'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('RemoveRamp','0 0 0','MiningJobWall',0,'Ramp',NULL); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('RemoveFloor','0 0 0','SolidSelectionFloor',0,'Floor','AnyWall|Mechanism'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('RemovePlant','0 0 0','SelectionWall',0,'Floor|Plant',NULL); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('MineStairsUp','0 0 0','Stairs',0,'Floor|Wall','Job|Construction|Plant|Mechanism'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('MineStairsUp','0 0 1','SelectionFloor',0,'Floor','Construction|Job|Designation|Mechanism|Tree'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('DigStairsDown','0 0 0','SelectionFloor',0,'Floor','Job|Construction|Plant|Tree|Mechanism'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('DigStairsDown','0 0 -1','Stairs',0,'Floor|Wall','Construction|Job|Mechanism'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('DigRampDown','0 0 0','SelectionFloor',0,'Floor','AnyWall|Mechanism'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('DigRampDown','0 0 -1','Ramp',1,'Floor|Wall','Construction|Job|Mechanism'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('CreateRoom','0 0 0','SolidSelectionFloor',0,'Floor|Walkable','RampTop|Plant|Tree|Job|Ramp|Mechanism'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('CreateDorm','0 0 0','SolidSelectionFloor',0,'Floor|Walkable','RampTop|Plant|Tree|Job|Ramp|Mechanism'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('CreateDining','0 0 0','SolidSelectionFloor',0,'Floor|Walkable','RampTop|Plant|Tree|Job|Ramp|Mechanism'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('CreateHospital','0 0 0','SolidSelectionFloor',0,'Floor|Walkable','RampTop|Plant|Tree|Job|Ramp|Mechanism'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('CreateStockpile','0 0 0','SolidSelectionFloor',0,'Floor|Walkable','AnyWall'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('CreateGrove','0 0 0','SolidSelectionFloor',0,'Floor|Soil','Wall|Construction|Designation|Job'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('CreateFarm','0 0 0','SolidSelectionFloor',0,'Floor|Soil|Walkable','Wall|Tree|Construction|Designation|Job'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('CreatePasture','0 0 0','SolidSelectionFloor',0,'Floor|Soil|Walkable','Wall|Tree|Construction|Designation|Job'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('CreateNoPass','0 0 0','SolidSelectionFloor',0,NULL,'Designation|Job|Room'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildWall','0 0 0','SolidSelectionWall',0,'Floor','AnyWall'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('ReplaceWall','0 0 0','SolidSelectionWall',0,'Floor|Wall','Plant|Tree|Designation|Job|Stairs'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildWallFloor','0 0 0','SelectionWall',0,'Floor','AnyWall'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildWallFloor','0 0 1','SelectionFloor',0,NULL,'Floor|Job'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildFancyWall','0 0 0',NULL,0,'Floor','AnyWall'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildFloor','0 0 0',NULL,0,NULL,'AnyWall|Floor|RampTop'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildFloor','0 0 -1','none',0,NULL,'Stairs|Job'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('ReplaceFloor','0 0 0','SolidSelectionFloor',0,'Floor','RampTop|Plant|Tree|Job|Ramp|Mechanism|Wall|Stairs'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('ReplaceFloor','0 0 -1','none',0,NULL,'Stairs|Job|Mechanism'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildFancyFloor','0 0 0',NULL,0,NULL,'AnyWall|Floor|RampTop'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildFancyFloor','0 0 -1','none',0,NULL,'Stairs|Job'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildScaffold','0 0 0','Scaffold',0,NULL,'AnyWall'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildScaffold','0 0 1','none',0,NULL,'Floor|AnyWall'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildFence','0 0 0','WoodFence',0,'Floor','AnyWall|Designation'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildWorkshop','0 0 0',NULL,0,NULL,NULL); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildStairs','0 0 0','Stairs',0,'Floor','AnyWall'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildStairs','0 0 1','none',0,NULL,'Floor|AnyWall'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildRamp','0 0 0',NULL,0,'Floor','AnyWall'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildRamp','-1 0 0',NULL,0,'Wall',NULL); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildRamp','0 0 1',NULL,0,NULL,'Floor|AnyWall'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildRampCorner','0 0 0','ThatchOuterCornerRamp',0,'Floor','AnyWall'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('CutClipping','0 0 0','SelectionWall',0,'Floor|TreeClip','Job'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildItem','0 0 0',NULL,0,'$ItemRequirements','$ItemRequirements'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('PlantTree','0 0 0','Sapling',0,'Floor','AnyWall|TreeInRange'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('FellTree','0 0 0','SelectionWall',0,'Floor|Tree','Job'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('Forage','0 0 0','SelectionWall',0,'PlantWithFruit','Job|Tree'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('HarvestTree','0 0 0','SelectionWall',0,'PlantWithFruit|Tree','Job'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('RemoveDesignation','0 0 0','SolidSelectionFloor',0,'Designation',NULL); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('Deconstruct','0 0 0','SelectionWall',0,'Construction',NULL); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('CancelJob','0 0 0','SolidSelectionWall',0,'Job',NULL); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('RaisePrio','0 0 0','SolidSelectionWall',0,'Job',NULL); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('LowerPrio','0 0 0','SolidSelectionWall',0,'Job',NULL); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('MagicNatureSpeedGrowth','0 0 0','PentagramAnim',0,'Floor','Job|Tree|Wall|Construction'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('MagicGeomancyRevealOre','0 0 0','PentagramAnim',0,'Floor','Job|Tree|Wall|Construction'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildWallPalisade','0 0 0','SolidSelectionWall',0,'Floor','AnyWall'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('BuildWallPalisade','0 0 1','SolidSelectionWall',0,NULL,'AnyWall|Floor'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('ReplaceFancyWall','0 0 0','SolidSelectionWall',0,'Floor|Wall','Plant|Tree|Designation|Job|Stairs'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('ReplaceFancyFloor','0 0 0','SolidSelectionFloor',0,'Floor','RampTop|Plant|Tree|Job|Ramp|Mechanism'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('ReplaceFancyFloor','0 0 -1','none',0,NULL,'Stairs|Job|Mechanism'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('FillHole','0 0 0','SelectionFloor',1,NULL,'Floor|AnyWall'); INSERT INTO "Actions_Tiles" ("ID","Offset","SpriteID","IsFloor","Required","Forbidden") VALUES ('FillHole','0 0 -1','SelectionWall',0,'Floor','AnyWall'); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('Mine','Mine',NULL,0,0,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('DigHole','DigHole',NULL,0,1,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('ExplorativeMine','ExplorativeMine',NULL,0,0,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('RemoveRamp','RemoveRamp',NULL,0,0,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('RemoveFloor','RemoveFloor',NULL,0,0,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('RemovePlant','RemovePlant',NULL,0,0,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('MineStairsUp','MineStairsUp',NULL,0,0,0,0,1); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('DigStairsDown','DigStairsDown',NULL,0,0,0,0,1); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('DigRampDown','DigRampDown',NULL,0,0,1,0,1); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('CreateRoom',NULL,NULL,0,1,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('CreateDorm',NULL,NULL,0,1,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('CreateDining',NULL,NULL,0,1,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('CreateHospital',NULL,NULL,0,1,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('CreateStockpile',NULL,NULL,0,1,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('CreateGrove',NULL,NULL,0,1,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('CreateFarm',NULL,NULL,0,1,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('CreatePasture',NULL,NULL,0,1,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('CreateNoPass',NULL,NULL,0,1,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('BuildWall','BuildWall','Wall',1,0,1,0,1); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('ReplaceWall','BuildWall','Wall',1,0,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('BuildWallFloor','BuildWallFloor','WallFloor',1,0,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('BuildFancyWall','BuildWall','FancyWall',1,0,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('BuildFloor','BuildFloor','Floor',1,1,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('ReplaceFloor','BuildFloor','Floor',1,1,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('BuildFancyFloor','BuildFloor','FancyFloor',1,1,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('BuildScaffold','BuildScaffold','Wall',1,0,1,1,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('BuildFence','BuildFence','Wall',1,0,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('BuildWorkshop','BuildWorkshop','Workshop',1,0,0,0,1); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('BuildStairs','BuildStairs','Stairs',1,0,0,0,1); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('BuildRamp','BuildRamp','Ramp',1,0,1,0,1); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('BuildRampCorner','BuildRampCorner','RampCorner',1,0,1,0,1); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('CutClipping','CutClipping',NULL,0,0,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('BuildItem','BuildItem','Item',0,0,0,0,1); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('PlantTree','PlantTree','Tree',0,0,0,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('FellTree','FellTree',NULL,0,0,1,1,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('Forage','Harvest',NULL,0,0,1,1,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('HarvestTree','HarvestTree',NULL,0,0,1,1,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('RemoveDesignation','none',NULL,0,1,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('Deconstruct','Deconstruct',NULL,0,0,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('CancelJob','CancelJob',NULL,0,0,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('RaisePrio','RaisePrio',NULL,0,0,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('LowerPrio','LowerPrio',NULL,0,0,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('MagicNatureSpeedGrowth','Magic_Nature_SpeedGrowth',NULL,0,1,0,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('MagicGeomancyRevealOre','Magic_Geomancy_RevealOre',NULL,0,1,0,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('ReplaceFancyWall','BuildWall','Wall',1,0,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('ReplaceFancyFloor','BuildFloor','Floor',1,1,1,0,0); INSERT INTO "Actions" ("ID","Job","ConstructionType","ConstructionSelect","IsFloor","Multi","MultiZ","Rotate") VALUES ('FillHole','FillHole','Wall',1,0,1,0,0); INSERT INTO "Sounds" ("ID","Material","SoundFile") VALUES ('ButtonClick',NULL,'wood1.wav'); INSERT INTO "Sounds" ("ID","Material","SoundFile") VALUES ('actionDrink',NULL,'drink1.wav'); INSERT INTO "Sounds" ("ID","Material","SoundFile") VALUES ('actionEat',NULL,'eat1.wav'); INSERT INTO "Sounds" ("ID","Material","SoundFile") VALUES ('DigStairsDown',NULL,'pickaxe1.wav'); INSERT INTO "Sounds" ("ID","Material","SoundFile") VALUES ('BuildFloor',NULL,'hammering3.wav'); INSERT INTO "Sounds" ("ID","Material","SoundFile") VALUES ('BuildItem',NULL,'hammering1.wav'); INSERT INTO "Sounds" ("ID","Material","SoundFile") VALUES ('BuildWorkshop',NULL,'hammering3.wav'); INSERT INTO "Sounds" ("ID","Material","SoundFile") VALUES ('CraftAtWorkshop',NULL,'work1.wav'); INSERT INTO "Sounds" ("ID","Material","SoundFile") VALUES ('CraftAtWorkshop','Plank','saw1.wav'); INSERT INTO "Sounds" ("ID","Material","SoundFile") VALUES ('CraftAtWorkshop','Wine','pour1.wav'); INSERT INTO "Sounds" ("ID","Material","SoundFile") VALUES ('FellTree',NULL,'wood2.wav'); INSERT INTO "Sounds" ("ID","Material","SoundFile") VALUES ('Harvest',NULL,'prassel1.wav'); INSERT INTO "Sounds" ("ID","Material","SoundFile") VALUES ('HarvestHay',NULL,'prassel1.wav'); INSERT INTO "Sounds" ("ID","Material","SoundFile") VALUES ('Mine',NULL,'pickaxe1.wav'); INSERT INTO "Sounds" ("ID","Material","SoundFile") VALUES ('ExplorativeMine',NULL,'pickaxe1.wav'); INSERT INTO "Sounds" ("ID","Material","SoundFile") VALUES ('PlantFarm',NULL,'sand1.wav'); INSERT INTO "Sounds" ("ID","Material","SoundFile") VALUES ('PlantFarm','Plant','sand1.wav'); INSERT INTO "Sounds" ("ID","Material","SoundFile") VALUES ('Till',NULL,'sand2.wav'); COMMIT; ================================================ FILE: content/shaders/axle_f.glsl ================================================ #version 430 core layout(location = 0) noperspective in vec2 vTexCoords; layout(location = 0) out vec4 fColor; uniform int uWorldRotation; uniform int uTickNumber; uniform int uSpriteID; uniform int uRotation; uniform bool uAnim; uniform sampler2DArray uTexture[32]; vec4 getTexel( uint spriteID, uint rot, uint animFrame ) { uint absoluteId = ( spriteID + animFrame ) * 4; uint tex = absoluteId / 2048; uint localBaseId = absoluteId % 2048; uint localID = localBaseId + rot; ivec3 samplePos = ivec3( vTexCoords.x * 32, vTexCoords.y * 64, localID); // Need to unroll each access to texelFetch with a different element from uTexture into a distinct instruction // Otherwise we are triggering a bug on AMD GPUs, where threads start sampling from the wrong texture #define B(X) case X: return texelFetch( uTexture[X], samplePos, 0); #define C(X) B(X) B(X+1) B(X+2) B(X+3) #define D(X) C(X) C(X+4) C(X+8) C(X+12) switch(tex) { D(0) D(16) } #undef D #undef C #undef B } void main() { uint animFrame = 0; if( uAnim ) { animFrame = ( uTickNumber / 10 ) % 4; } int rot = ( uRotation + uWorldRotation ) % 4; vec4 texel = vec4(0.0); texel = getTexel( uSpriteID, rot, animFrame ); // TODO add anim if( length( texel.rgba ) < 0.1 || texel.a < 0.1 ) { discard; } fColor = texel; } ================================================ FILE: content/shaders/axle_v.glsl ================================================ #version 430 core layout(location = 0) in vec3 aPos; layout(location = 0) noperspective out vec2 vTexCoords; uniform uvec3 uWorldSize; uniform mat4 uTransform; uniform int uWorldRotation; uniform uvec3 uRenderMin; uniform uvec3 uRenderMax; uniform uvec3 tile; uvec3 rotate(uvec3 pos) { uvec3 ret = uvec3(0, 0, pos.z); switch ( uWorldRotation ) { default: ret.xy = pos.xy; break; case 1: ret.x = uWorldSize.y - pos.y - 1; ret.y = pos.x; break; case 2: ret.x = uWorldSize.x - pos.x - 1; ret.y = uWorldSize.y - pos.y - 1; break; case 3: ret.x = pos.y; ret.y = uWorldSize.x - pos.x - 1; break; } return ret; } uvec3 rotateOffset(uvec3 offset) { switch ( uWorldRotation ) { default: return offset; case 1: return uvec3( -offset.y, offset.x, offset.z ); case 2: return uvec3( -offset.x, -offset.y, offset.z ); case 3: return uvec3( offset.y, -offset.y, offset.z ); } } vec3 project(uvec3 pos, vec2 offset, bool isWall) { float z = pos.z + pos.x + pos.y; return vec3( offset.x * 32 + 16 * pos.x - 16 * pos.y, offset.y * 64 - ( 8 * pos.y + 8 * pos.x ) - ( uRenderMax.z - pos.z ) * 20 - 12, isWall ? z + 0.5 : z ); } void main() { vTexCoords = vec2( aPos.x, 1.0 - aPos.y ); vec3 worldPos = project( rotate( tile ), aPos.xy, true); gl_Position = uTransform * vec4( worldPos, 1.0 ); } ================================================ FILE: content/shaders/selection_f.glsl ================================================ #version 430 core layout(location = 0) noperspective in vec2 vTexCoords; layout(location = 0) out vec4 fColor; uniform int uWorldRotation; uniform int uSpriteID; uniform int uRotation; uniform bool uValid; uniform sampler2DArray uTexture[32]; vec4 getTexel( uint spriteID, uint rot, uint animFrame ) { uint absoluteId = ( spriteID + animFrame ) * 4; uint tex = absoluteId / 2048; uint localBaseId = absoluteId % 2048; uint localID = localBaseId + rot; ivec3 samplePos = ivec3( vTexCoords.x * 32, vTexCoords.y * 64, localID); // Need to unroll each access to texelFetch with a different element from uTexture into a distinct instruction // Otherwise we are triggering a bug on AMD GPUs, where threads start sampling from the wrong texture #define B(X) case X: return texelFetch( uTexture[X], samplePos, 0); #define C(X) B(X) B(X+1) B(X+2) B(X+3) #define D(X) C(X) C(X+4) C(X+8) C(X+12) switch(tex) { D(0) D(16) } #undef D #undef C #undef B } void main() { int rot = ( uRotation + uWorldRotation ) % 4; vec4 texel = vec4(0.0); texel = getTexel( uSpriteID, rot, 0 ); if( uValid ) { texel.r -= 0.6; //sTexel.g += 0.1; texel.b -= 0.6; } else { //sTexel.r += 0.1; texel.g -= 0.6; texel.b -= 0.6; } texel.a = max( 0.0, texel.a - 0.2 ); if( length( texel.rgba ) < 0.1 || texel.a < 0.1 ) { discard; } fColor = texel; } ================================================ FILE: content/shaders/selection_v.glsl ================================================ #version 430 core layout(location = 0) in vec3 aPos; layout(location = 0) noperspective out vec2 vTexCoords; uniform uvec3 uWorldSize; uniform mat4 uTransform; uniform int uWorldRotation; uniform uvec3 uRenderMin; uniform uvec3 uRenderMax; uniform uvec3 tile; uvec3 rotate(uvec3 pos) { uvec3 ret = uvec3(0, 0, pos.z); switch ( uWorldRotation ) { default: ret.xy = pos.xy; break; case 1: ret.x = uWorldSize.y - pos.y - 1; ret.y = pos.x; break; case 2: ret.x = uWorldSize.x - pos.x - 1; ret.y = uWorldSize.y - pos.y - 1; break; case 3: ret.x = pos.y; ret.y = uWorldSize.x - pos.x - 1; break; } return ret; } uvec3 rotateOffset(uvec3 offset) { switch ( uWorldRotation ) { default: return offset; case 1: return uvec3( -offset.y, offset.x, offset.z ); case 2: return uvec3( -offset.x, -offset.y, offset.z ); case 3: return uvec3( offset.y, -offset.y, offset.z ); } } vec3 project(uvec3 pos, vec2 offset, bool isWall) { float z = pos.z + pos.x + pos.y; return vec3( offset.x * 32 + 16 * pos.x - 16 * pos.y, offset.y * 64 - ( 8 * pos.y + 8 * pos.x ) - ( uRenderMax.z - pos.z ) * 20 - 12, isWall ? z + 0.5 : z ); } void main() { vTexCoords = vec2( aPos.x, 1.0 - aPos.y ); vec3 worldPos = project( rotate( tile ), aPos.xy, true); gl_Position = uTransform * vec4( worldPos, 1.0 ); } ================================================ FILE: content/shaders/thoughtbubble_f.glsl ================================================ #version 430 core layout(location = 0) noperspective in vec2 vTexCoords; layout(location = 0) out vec4 fColor; uniform sampler2DArray uTexture0; uniform int uType; void main() { vec4 texel = texture( uTexture0, vec3( vTexCoords, uType * 4 ) ); if( length( texel.rgba ) < 0.1 || texel.a < 0.1 ) { discard; } fColor = texel; } ================================================ FILE: content/shaders/thoughtbubble_v.glsl ================================================ #version 430 core layout(location = 0) in vec3 aPos; layout(location = 0) noperspective out vec2 vTexCoords; uniform uvec3 uWorldSize; uniform mat4 uTransform; uniform int uWorldRotation; uniform uvec3 uRenderMin; uniform uvec3 uRenderMax; uniform uvec3 tile; uvec3 rotate(uvec3 pos) { uvec3 ret = uvec3(0, 0, pos.z); switch ( uWorldRotation ) { default: ret.xy = pos.xy; break; case 1: ret.x = uWorldSize.y - pos.y - 1; ret.y = pos.x; break; case 2: ret.x = uWorldSize.x - pos.x - 1; ret.y = uWorldSize.y - pos.y - 1; break; case 3: ret.x = pos.y; ret.y = uWorldSize.x - pos.x - 1; break; } return ret; } uvec3 rotateOffset(uvec3 offset) { switch ( uWorldRotation ) { default: return offset; case 1: return uvec3( -offset.y, offset.x, offset.z ); case 2: return uvec3( -offset.x, -offset.y, offset.z ); case 3: return uvec3( offset.y, -offset.y, offset.z ); } } vec3 project(uvec3 pos, vec2 offset, bool isWall) { float z = pos.z + pos.x + pos.y; return vec3( offset.x * 32 + 16 * pos.x - 16 * pos.y, offset.y * 64 - ( 8 * pos.y + 8 * pos.x ) - ( uRenderMax.z - pos.z ) * 20 - 12, isWall ? z + 0.5 : z ); } void main() { vTexCoords = vec2( aPos.x, 1.0 - aPos.y ); vec3 worldPos = project( rotate( tile ), aPos.xy, true); // Offset relative to owning creature worldPos.x += 8; worldPos.y += 16; gl_Position = uTransform * vec4( worldPos, 1.0 ); } ================================================ FILE: content/shaders/world_f.glsl ================================================ #version 430 core #define TF_NONE 0x00000000u #define TF_WALKABLE 0x00000001u #define TF_UNDISCOVERED 0x00000002u #define TF_SUNLIGHT 0x00000004u #define TF_WET 0x00000008u #define TF_GRASS 0x00000010u #define TF_NOPASS 0x00000020u #define TF_BLOCKED 0x00000040u #define TF_DOOR 0x00000080u #define TF_STOCKPILE 0x00000100u #define TF_GROVE 0x00000200u #define TF_FARM 0x00000400u #define TF_TILLED 0x00000800u #define TF_WORKSHOP 0x00001000u #define TF_ROOM 0x00002000u #define TF_LAVA 0x00004000u #define TF_WATER 0x00008000u #define TF_JOB_FLOOR 0x00010000u #define TF_JOB_WALL 0x00020000u #define TF_JOB_BUSY_FLOOR 0x00040000u #define TF_JOB_BUSY_WALL 0x00080000u #define TF_MOUSEOVER 0x00100000u #define TF_WALKABLEANIMALS 0x00200000u #define TF_WALKABLEMONSTERS 0x00400000u #define TF_PASTURE 0x00800000u #define TF_INDIRECT_SUNLIGHT 0x01000000u #define TF_TRANSPARENT 0x40000000u #define TF_OVERSIZE 0x80000000u #define WATER_TOP 0x01u #define WATER_EDGE 0x02u #define WATER_WALL 0x10u #define WATER_FLOOR 0x20u #define WATER_ONFLOOR 0x40u #define CAT(x, y) CAT_(x, y) #define CAT_(x, y) x ## y #define UNPACKSPRITE(alias, src) const uint CAT(alias, ID) = src & 0xffff; const uint CAT(alias, Flags) = src >> 16; layout(location = 0) noperspective in vec2 vTexCoords; layout(location = 1) flat in uvec4 block1; layout(location = 2) flat in uvec4 block2; layout(location = 3) flat in uvec4 block3; layout(location = 0) out vec4 fColor; uniform sampler2DArray uTexture[32]; uniform int uTickNumber; uniform int uUndiscoveredTex; uniform int uWaterTex; uniform int uWorldRotation; uniform bool uOverlay; uniform bool uDebug; uniform bool uWallsLowered; uniform float uDaylight; uniform float uLightMin; uniform bool uPaintFrontToBack; uniform bool uShowJobs; const float waterAlpha = 0.6; const float flSize = ( 1.0 / 32. ); const int rightWallOffset = 4; const int leftWallOffset = 8; const vec3 perceivedBrightness = vec3(0.299, 0.587, 0.114); vec4 getTexel( uint spriteID, uint rot, uint animFrame ) { uint absoluteId = ( spriteID + animFrame ) * 4; uint tex = absoluteId / 2048; uint localBaseId = absoluteId % 2048; uint localID = localBaseId + rot; ivec3 samplePos = ivec3( vTexCoords.x * 32, vTexCoords.y * 64, localID); // Need to unroll each access to texelFetch with a different element from uTexture into a distinct instruction // Otherwise we are triggering a bug on AMD GPUs, where threads start sampling from the wrong texture #define B(X) case X: return texelFetch( uTexture[X], samplePos, 0); #define C(X) B(X) B(X+1) B(X+2) B(X+3) #define D(X) C(X) C(X+4) C(X+8) C(X+12) switch(tex) { D(0) D(16) } #undef D #undef C #undef B } void main() { vec4 texel = vec4( 0, 0, 0, 0 ); uint rot = 0; uint spriteID = 0; uint animFrame = 0; UNPACKSPRITE(floorSprite, block1.x); UNPACKSPRITE(jobFloorSprite, block1.y); UNPACKSPRITE(wallSprite, block1.z); UNPACKSPRITE(jobWallSprite, block1.w); UNPACKSPRITE(itemSprite, block2.x); UNPACKSPRITE(creatureSprite, block2.y); const uint vFluidLevelPacked1 = block2.z; const bool uIsWall = ( block2.w != 0 ); const uint vFlags = block3.x; const uint vFlags2 = block3.y; const uint vLightLevel = block3.z; const uint vVegetationLevel = block3.w; uint vFluidLevel = (vFluidLevelPacked1 >> 0) & 0xff; uint vFluidLevelLeft = (vFluidLevelPacked1 >> 8) & 0xff; uint vFluidLevelRight = (vFluidLevelPacked1 >> 16) & 0xff; uint vFluidFlags = (vFluidLevelPacked1 >> 24) & 0xff; if( !uIsWall ) { if( ( vFlags & TF_UNDISCOVERED ) != 0 && !uDebug ) { if( !uWallsLowered ) { vec4 tmpTexel = getTexel( uUndiscoveredTex / 4 + 2, 0, 0 ); texel.rgb = mix( texel.rgb, tmpTexel.rgb, tmpTexel.a ); texel.a = max(texel.a , tmpTexel.a); } } else { spriteID = floorSpriteID; if( spriteID != 0 ) { rot = floorSpriteFlags & 3; rot = ( rot + uWorldRotation ) % 4; if( ( floorSpriteFlags & 4 ) == 4 ) { animFrame = ( uTickNumber / 10 ) % 4; } vec4 tmpTexel = getTexel( spriteID, rot, animFrame ); if( ( vFlags & TF_GRASS ) != 0 ) { vec4 roughFloor = getTexel( uUndiscoveredTex / 4 + 3, 0, 0 ); float interpol = 1.0 - ( float( vVegetationLevel ) / 100. ); tmpTexel.rgb = mix( tmpTexel.rgb, roughFloor.rgb, interpol * roughFloor.a ); texel.a = max(tmpTexel.a , roughFloor.a); } texel.rgb = mix( texel.rgb, tmpTexel.rgb, tmpTexel.a ); texel.a = max(texel.a , tmpTexel.a); } spriteID = jobFloorSpriteID; animFrame = 0; if( uShowJobs && ( spriteID != 0 ) ) { rot = jobFloorSpriteFlags & 3; rot = ( rot + uWorldRotation ) % 4; vec4 tmpTexel = getTexel( spriteID, rot, animFrame ); if( ( vFlags & TF_JOB_BUSY_FLOOR ) != 0 ) { tmpTexel.r *= 0.3; tmpTexel.g *= 0.7; tmpTexel.b *= 0.3; } else { tmpTexel.r *= 0.7; tmpTexel.g *= 0.7; tmpTexel.b *= 0.3; } texel.rgba = tmpTexel.rgba; } if( uOverlay && 0 != ( vFlags & ( TF_STOCKPILE | TF_FARM | TF_GROVE | TF_PASTURE | TF_WORKSHOP | TF_ROOM | TF_NOPASS ) ) ) { vec3 roomColor = vec3( 0.0 ); if( ( vFlags & TF_STOCKPILE ) != 0 ) //stockpile { roomColor = vec3(1, 1, 0); } else if( ( vFlags & TF_FARM ) != 0 ) //farm { roomColor = vec3(0.5, 0, 1); } else if( ( vFlags & TF_GROVE ) != 0 ) //grove { roomColor = vec3(0, 1, 0.5); } else if( ( vFlags & TF_PASTURE ) != 0 ) { roomColor = vec3(0, 0.9, 0.9); } else if( ( vFlags & TF_WORKSHOP ) != 0 ) //workshop { if( ( vFlags & TF_BLOCKED ) != 0 ) { roomColor = vec3(1, 0, 0); } else { roomColor = vec3(1, 1, 0); } } else if( ( vFlags & TF_ROOM ) != 0 ) //room { roomColor = vec3(0, 0, 1); } else if( ( vFlags & TF_NOPASS ) != 0 ) //room { roomColor = vec3(1, 0, 0); } if( texel.a != 0 ) { float brightness = dot(texel.rgb, perceivedBrightness.xyz); // Preserve perceived brightness of original pixel during tinting, but drop saturation partially texel.rgb = mix( roomColor, mix( texel.rgb, vec3(1,1,1) * brightness, 0.7), 0.7); } } } //////////////////////////////////////////////////////////////////////////////////////////////////// // // water related calculations // //////////////////////////////////////////////////////////////////////////////////////////////////// if( ( vFluidFlags & ( WATER_FLOOR | WATER_EDGE ) ) != 0 ) { const bool renderAboveFloor = ( vFluidFlags & WATER_ONFLOOR ) != 0; const int startLevel = renderAboveFloor ? 2 : int(min(vFluidLevel, 2)); const int referenceLevel = int(vTexCoords.x < 0.5 ? vFluidLevelLeft : vFluidLevelRight); const int offset = vTexCoords.x < 0.5 ? leftWallOffset : rightWallOffset; const float fl = float( startLevel - 2 ) * flSize; vec4 tmpTexel = vec4( 0, 0, 0, 0 ); if( ( vFluidFlags & WATER_FLOOR ) != 0 ) { float y = vTexCoords.y + fl; tmpTexel = texture( uTexture[0], vec3( vec2( vTexCoords.x, y ), uWaterTex ) ); } if( ( vFluidFlags & WATER_EDGE ) != 0 ) { float y = vTexCoords.y + fl; for(int i = startLevel; i > referenceLevel; --i) { y -= flSize; tmpTexel += texture( uTexture[0], vec3( vec2( vTexCoords.x, y ), uWaterTex + offset ) ); } } // Turn into slight tint instead if( renderAboveFloor && vFluidLevel == 1 ) { tmpTexel.a *= 0.5; } texel.rgb = mix( texel.rgb, tmpTexel.rgb, waterAlpha * tmpTexel.a ); texel.a = max(texel.a , tmpTexel.a); } //////////////////////////////////////////////////////////////////////////////////////////////////// // // end water related calculations // //////////////////////////////////////////////////////////////////////////////////////////////////// } else { if( ( vFlags & TF_UNDISCOVERED ) != 0 && !uDebug ) { if( !uWallsLowered ) { vec4 tmpTexel = getTexel( uUndiscoveredTex / 4, 0, 0 ); texel.rgb = mix( texel.rgb, tmpTexel.rgb, tmpTexel.a ); texel.a = max(texel.a , tmpTexel.a); } } else { spriteID = wallSpriteID; if( spriteID != 0 ) { rot = wallSpriteFlags & 3; rot = ( rot + uWorldRotation ) % 4; if( ( wallSpriteFlags & 4 ) == 4 ) { animFrame = ( uTickNumber / 3 ) % 4; } if( uWallsLowered ) { animFrame = 0; if( ( wallSpriteFlags & 8 ) == 8 ) { spriteID = spriteID + 1; } } vec4 tmpTexel = getTexel( spriteID, rot, animFrame ); texel.rgb = mix( texel.rgb, tmpTexel.rgb, tmpTexel.a ); texel.a = max(texel.a , tmpTexel.a); } spriteID = itemSpriteID; animFrame = 0; if( spriteID != 0 ) { rot = itemSpriteID & 3; rot = ( rot + uWorldRotation ) % 4; vec4 tmpTexel = getTexel( spriteID, rot, animFrame ); texel.rgb = mix( texel.rgb, tmpTexel.rgb, tmpTexel.a ); texel.a = max(texel.a , tmpTexel.a); } } spriteID = jobWallSpriteID; animFrame = 0; if( uShowJobs && spriteID != 0 ) { rot = jobWallSpriteFlags & 3; rot = ( rot + uWorldRotation ) % 4; vec4 tmpTexel = getTexel( spriteID, rot, animFrame ); if( ( vFlags & TF_JOB_BUSY_WALL ) != 0 ) { tmpTexel.r *= 0.3; tmpTexel.g *= 0.7; tmpTexel.b *= 0.3; } else { tmpTexel.r *= 0.7; tmpTexel.g *= 0.7; tmpTexel.b *= 0.3; } texel.rgba = tmpTexel.rgba; } spriteID = creatureSpriteID; animFrame = 0; if( spriteID != 0 ) { rot = creatureSpriteFlags & 3; rot = ( rot + uWorldRotation ) % 4; vec4 tmpTexel = getTexel( spriteID, rot, animFrame ); texel.rgb = mix( texel.rgb, tmpTexel.rgb, tmpTexel.a ); texel.a = max(texel.a , tmpTexel.a); } //////////////////////////////////////////////////////////////////////////////////////////////////// // // water related calculations // //////////////////////////////////////////////////////////////////////////////////////////////////// if( ( vFluidFlags & ( WATER_TOP | WATER_WALL ) ) != 0 && vFluidLevel > 2 ) { const int startLevel = int(vFluidLevel - 2); const int referenceLevel = int( vTexCoords.x < 0.5 ? max(2, vFluidLevelLeft) : max(2, vFluidLevelRight) ) - 2; const int offset = vTexCoords.x < 0.5 ? leftWallOffset : rightWallOffset; const float fl = float( startLevel ) * flSize; vec4 tmpTexel = vec4( 0, 0, 0, 0 ); if( ( vFluidFlags & WATER_TOP ) != 0 ) { float y = vTexCoords.y + fl; tmpTexel = texture( uTexture[0], vec3( vec2( vTexCoords.x, y ), uWaterTex ) ); } if( ( vFluidFlags & WATER_WALL ) != 0) { float y = vTexCoords.y + fl; for(int i = startLevel; i > referenceLevel; --i) { y -= flSize; tmpTexel += texture( uTexture[0], vec3( vec2( vTexCoords.x, y ), uWaterTex + offset ) ); } } texel.rgb = mix( texel.rgb, tmpTexel.rgb, waterAlpha * tmpTexel.a ); texel.a = max(texel.a , tmpTexel.a); } //////////////////////////////////////////////////////////////////////////////////////////////////// // // end water related calculations // //////////////////////////////////////////////////////////////////////////////////////////////////// } if( texel.a <= 0 ) { discard; } else if(uPaintFrontToBack) { // Flush to 1 in case of front-to-back rendering texel.a = 1; } if( !uDebug ) { float light = float( vLightLevel ) / 20.; if( ( vFlags & ( TF_SUNLIGHT | TF_INDIRECT_SUNLIGHT ) ) != 0 ) { light = max( light , uDaylight ); } float brightness = dot(texel.rgb, perceivedBrightness.xyz); float lightMult = ( 1 - uLightMin ) * light + uLightMin; const float minSaturation = 0.1; float saturation = ( 1 - minSaturation ) * light + minSaturation; // Desaturate, then darken texel.rgb = mix(brightness * vec3(1,1,1), texel.rgb, saturation) * lightMult; } fColor = texel; } ================================================ FILE: content/shaders/world_v.glsl ================================================ #version 430 core #define TF_NONE 0x00000000u #define TF_WALKABLE 0x00000001u #define TF_UNDISCOVERED 0x00000002u #define TF_SUNLIGHT 0x00000004u #define TF_WET 0x00000008u #define TF_GRASS 0x00000010u #define TF_NOPASS 0x00000020u #define TF_BLOCKED 0x00000040u #define TF_DOOR 0x00000080u #define TF_STOCKPILE 0x00000100u #define TF_GROVE 0x00000200u #define TF_FARM 0x00000400u #define TF_TILLED 0x00000800u #define TF_WORKSHOP 0x00001000u #define TF_ROOM 0x00002000u #define TF_LAVA 0x00004000u #define TF_WATER 0x00008000u #define TF_JOB_FLOOR 0x00010000u #define TF_JOB_WALL 0x00020000u #define TF_JOB_BUSY_FLOOR 0x00040000u #define TF_JOB_BUSY_WALL 0x00080000u #define TF_MOUSEOVER 0x00100000u #define TF_WALKABLEANIMALS 0x00200000u #define TF_WALKABLEMONSTERS 0x00400000u #define TF_PASTURE 0x00800000u #define TF_INDIRECT_SUNLIGHT 0x01000000u #define TF_TRANSPARENT 0x40000000u #define TF_OVERSIZE 0x80000000u #define WATER_TOP 0x01u #define WATER_EDGE 0x02u #define WATER_WALL 0x10u #define WATER_FLOOR 0x20u #define WATER_ONFLOOR 0x40u layout(location = 0) in vec3 aPos; layout(location = 0) noperspective out vec2 vTexCoords; layout(location = 1) flat out uvec4 block1; layout(location = 2) flat out uvec4 block2; layout(location = 3) flat out uvec4 block3; uniform uvec3 uWorldSize; uniform mat4 uTransform; uniform int uWorldRotation; uniform uvec3 uRenderMin; uniform uvec3 uRenderMax; // DO NOT CHANGE, must match game internal layout struct TileData { // TF_ flags 0:32 uint flags; // TF_ flags 32:64 uint flags2; // Sprites are all: // spriteID=0:16, spriteFlags=16:32 uint floorSpriteUID ; uint wallSpriteUID; uint itemSpriteUID; uint creatureSpriteUID; uint jobSpriteFloorUID; uint jobSpriteWallUID; // fluidLevel=0:8, lightLevel=0:8, vegetationLevel=8:16 uint packedLevels; }; layout(std430, binding = 0) readonly restrict buffer tileData1 { TileData data[]; } tileData; uniform bool uWallsLowered; uniform bool uPaintFrontToBack; uvec3 rotate(uvec3 pos) { uvec3 ret = uvec3(0, 0, pos.z); switch ( uWorldRotation % 4 ) { case 0: ret.xy = pos.xy; break; case 1: ret.x = uWorldSize.y - pos.y - 1; ret.y = pos.x; break; case 2: ret.x = uWorldSize.x - pos.x - 1; ret.y = uWorldSize.y - pos.y - 1; break; case 3: ret.x = pos.y; ret.y = uWorldSize.x - pos.x - 1; break; } return ret; } uvec3 rotateOffset(uvec3 offset) { switch ( uWorldRotation % 4 ) { default: return offset; case 1: return uvec3( offset.y, -offset.x, offset.z ); case 2: return uvec3( -offset.x, -offset.y, offset.z ); case 3: return uvec3( -offset.y, offset.x, offset.z ); } } vec3 project(uvec3 pos, vec2 offset, bool isWall) { float z = pos.z + pos.x + pos.y; return vec3( offset.x * 32 + 16 * pos.x - 16 * pos.y, offset.y * 64 - ( 8 * pos.y + 8 * pos.x ) - ( uRenderMax.z - pos.z ) * 20 - 12, isWall ? z + 0.5 : z ); } uint tileID(uvec3 pos) { return pos.x + pos.y * uWorldSize.x + pos.z * uWorldSize.x * uWorldSize.y; } void main() { uint id = gl_InstanceID; const bool uIsWall = aPos.z != 0; // Min and max are inclusive in volume const uvec3 renderVolume = uRenderMax - uRenderMin + uvec3(1, 1, 1); uint pitchZ = renderVolume.x * renderVolume.y; uint pitchY = renderVolume.x; uvec3 localIndex; localIndex.z = id / pitchZ; id = id % pitchZ; localIndex.y = id / pitchY; id = id % pitchY; localIndex.x = id; bool reverseZ = uPaintFrontToBack; bool reverseY = (uWorldRotation == 1 || uWorldRotation == 2) ^^ uPaintFrontToBack; bool reverseX = (uWorldRotation == 2 || uWorldRotation == 3) ^^ uPaintFrontToBack; uvec3 tile; tile.z = reverseZ ? uRenderMax.z - localIndex.z : uRenderMin.z + localIndex.z; tile.y = reverseY ? uRenderMax.y - localIndex.y : uRenderMin.y + localIndex.y; tile.x = reverseX ? uRenderMax.x - localIndex.x: uRenderMin.x + localIndex.x; const uint index = tileID(tile); uint vFlags = tileData.data[index].flags; uint vFlags2 = tileData.data[index].flags2; uint vLightLevel = ( tileData.data[index].packedLevels >> 8 ) & 0xff; uint vVegetationLevel = ( tileData.data[index].packedLevels >> 16 ) & 0xff; uint floorSprite = 0; uint wallSprite = 0; uint itemSprite = 0; uint jobFloorSprite = 0; uint jobWallSprite = 0; uint creatureSprite = 0; // Render in first pass if no transparency effects, and in second pass otherwise bool containsTransparency; if( uIsWall ) { containsTransparency = ( vFlags & TF_TRANSPARENT ) != 0 || ( tileData.data[index].packedLevels & 0xff ) >= 3; } else { containsTransparency = ( vFlags & TF_TRANSPARENT ) != 0 || ( tileData.data[index].packedLevels & 0xff ) != 0; } const bool renderingEnabled = uPaintFrontToBack ^^ containsTransparency; if( renderingEnabled ) { floorSprite = tileData.data[index].floorSpriteUID; wallSprite = tileData.data[index].wallSpriteUID; itemSprite = tileData.data[index].itemSpriteUID; jobFloorSprite = tileData.data[index].jobSpriteFloorUID; jobWallSprite = tileData.data[index].jobSpriteWallUID; creatureSprite = tileData.data[index].creatureSpriteUID; } //////////////////////////////////////////////////////////////////////////////////////////////////// // // water related calculations // //////////////////////////////////////////////////////////////////////////////////////////////////// uint vFluidLevelPacked1 = 0; uint vFluidFlags = 0; if( !uPaintFrontToBack ) { const uvec3 above = uvec3(tile.xy, tile.z + 1); const uvec3 offsetLeft = rotateOffset( uvec3( 0, 1, 0 ) ); const uvec3 offsetRight = rotateOffset( uvec3( 1, 0, 0 ) ); const uint indexAbove = tileID( above ); const uint indexL = tileID( tile + offsetLeft ); const uint indexR = tileID( tile + offsetRight ); const uint vFluidLevel = tileData.data[index].packedLevels & 0xff; const uint vFluidLevelAbove = tileData.data[indexAbove].packedLevels & 0xff; const uint vFluidLevelLeft = tileData.data[indexL].packedLevels & 0xff; const uint vFluidLevelRight = tileData.data[indexR].packedLevels & 0xff; if( vFluidLevel >= 3 ) { if( vFluidLevel < 10 || tile.z == uRenderMax.z || vFluidLevelAbove == 0 ) { vFluidFlags |= WATER_TOP; } if(vFluidLevelLeft < vFluidLevel) { vFluidFlags |= WATER_WALL; } if(vFluidLevelRight < vFluidLevel) { vFluidFlags |= WATER_WALL; } } if( vFluidLevel >= 1 ) { if(vFluidLevel <= 2) { vFluidFlags |= WATER_FLOOR; if(tileData.data[index].floorSpriteUID != 0) { // Edge case when water would render "half height inside floor" vFluidFlags |= WATER_ONFLOOR; } } if(vFluidLevelLeft < 2 && vFluidLevelLeft < vFluidLevel) { vFluidFlags |= WATER_EDGE; } if(vFluidLevelRight < 2 && vFluidLevelRight < vFluidLevel) { vFluidFlags |= WATER_EDGE; } } vFluidLevelPacked1 = (vFluidLevel << 0) | (vFluidLevelLeft << 8) | (vFluidLevelRight << 16) | (vFluidFlags << 24); } // Check if rendering is applicable at all for the current tile and rendering pass... if( ((vFlags & TF_UNDISCOVERED) != 0 && uWallsLowered) || ( !uIsWall && floorSprite == 0 && jobFloorSprite == 0 && (vFluidFlags & ( WATER_FLOOR | WATER_EDGE )) == 0 ) || ( uIsWall && wallSprite == 0 && jobWallSprite == 0 && itemSprite == 0 && creatureSprite == 0 && ( vFluidFlags & ( WATER_TOP | WATER_WALL ) ) == 0 ) ) { // ... if not, then skip projection and cull it const float NaN = 1 / 0; gl_Position = vec4(NaN, NaN, NaN, NaN); } else { vec2 vVertexCoords; if( ( vFlags & TF_OVERSIZE ) != 0 ) { // Round to full sprite extent, for sprites which are not adhering to regular tile bounding boxes vVertexCoords.x = floor(aPos.x + 0.5); vVertexCoords.y = floor(aPos.y + 0.5); } else { vVertexCoords = aPos.xy; } vTexCoords = vec2( vVertexCoords.x, 1.0 - vVertexCoords.y ); block1 = uvec4(floorSprite, jobFloorSprite, wallSprite, jobWallSprite); block2 = uvec4(itemSprite, creatureSprite, vFluidLevelPacked1, uIsWall); block3 = uvec4(vFlags, vFlags2, vLightLevel, vVegetationLevel); vec3 worldPos = project( rotate( tile ), vVertexCoords.xy, uIsWall ); gl_Position = uTransform * vec4( worldPos, 1.0 ); } } ================================================ FILE: content/shaders/worldupdate_c.glsl ================================================ #version 430 core // DO NOT CHANGE, must match game internal layout struct TileData { // TF_ flags 0:32 uint flags; // TF_ flags 32:64 uint flags2; // Sprites are all: // spriteID=0:16, spriteFlags=16:32 uint floorSpriteUID ; uint wallSpriteUID; uint itemSpriteUID; uint creatureSpriteUID; uint jobSpriteFloorUID; uint jobSpriteWallUID; // fluidLevel=0:8, lightLevel=0:8, vegetationLevel=8:16 uint packedLevels; }; struct TileDataUpdate { uint id; TileData tile; }; layout(std430, binding = 0) writeonly restrict buffer tileData1 { TileData data[]; } tileData; layout(std430, binding = 1) readonly restrict buffer tileDataUpdate1 { TileDataUpdate data[]; } tileDataUpdate; uniform int uUpdateSize; layout(local_size_x = 64) in; void main() { uint id = gl_GlobalInvocationID.x; if(id < uUpdateSize) { TileDataUpdate data = tileDataUpdate.data[id]; tileData.data[data.id] = data.tile; } } ================================================ FILE: content/xaml/Agriculture.xaml ================================================ ================================================ FILE: content/xaml/CreatureInfo.xaml ================================================ ================================================ FILE: content/xaml/IngamePage.xaml ================================================  ================================================ FILE: content/xaml/LoadGamePage.xaml ================================================  ================================================ FILE: content/xaml/Neighbors.xaml ================================================ ================================================ FILE: content/xaml/SelectionGui.xaml ================================================ ================================================ FILE: content/xaml/SettingsPage.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.Brushes.DarkAqua.xaml ================================================  #FF10DDDf #FF55EDED #FF2FEBEB #FF0CBFC2 #FF0899A1 ================================================ FILE: content/xaml/Theme/NoesisTheme.Brushes.DarkBlue.xaml ================================================  #FF1098DF #FF56BDEC #FF2EAEEB #FF0B80C1 #FF0864A1 ================================================ FILE: content/xaml/Theme/NoesisTheme.Brushes.DarkCrimson.xaml ================================================  #FFDE1043 #FFED5580 #FFEB2F64 #FFC20C39 #FFA10829 ================================================ FILE: content/xaml/Theme/NoesisTheme.Brushes.DarkEmerald.xaml ================================================  #FF10DE62 #FF55ED8D #FF2FEB74 #FF0CC254 #FF08A14A ================================================ FILE: content/xaml/Theme/NoesisTheme.Brushes.DarkGreen.xaml ================================================  #FF2AA60C #FF5AB541 #FF43B324 #FF218C08 #FF187306 ================================================ FILE: content/xaml/Theme/NoesisTheme.Brushes.DarkLime.xaml ================================================  #FF99DF10 #FFBDED55 #FFAFEB2F #FF85C20C #FF69A108 ================================================ FILE: content/xaml/Theme/NoesisTheme.Brushes.DarkOrange.xaml ================================================  #FFDF9910 #FFECB556 #FFEBA62E #FFC1840B #FFA17608 ================================================ FILE: content/xaml/Theme/NoesisTheme.Brushes.DarkPurple.xaml ================================================  #FF894EED #FFA67FF5 #FF9D71F5 #FF7743D1 #FF6737B0 ================================================ FILE: content/xaml/Theme/NoesisTheme.Brushes.DarkRed.xaml ================================================  #FFDE2B10 #FFED6755 #FFEB452F #FFC2240C #FFA11F08 ================================================ FILE: content/xaml/Theme/NoesisTheme.Brushes.LightAqua.xaml ================================================  #FF10DDDf #FF0899A1 #FF0CBFC2 #FF2FEBEB #FF55EDED ================================================ FILE: content/xaml/Theme/NoesisTheme.Brushes.LightBlue.xaml ================================================  #FF1098DF #FF0864A1 #FF0B80C1 #FF2EAEEB #FF56BDEC ================================================ FILE: content/xaml/Theme/NoesisTheme.Brushes.LightCrimson.xaml ================================================  #FFDE1043 #FFA10829 #FFC20C39 #FFEB2F64 #FFED5580 ================================================ FILE: content/xaml/Theme/NoesisTheme.Brushes.LightEmerald.xaml ================================================  #FF10DE62 #FF08A14A #FF0CC254 #FF2FEB74 #FF55ED8D ================================================ FILE: content/xaml/Theme/NoesisTheme.Brushes.LightGreen.xaml ================================================  #FF2AA60C #FF187306 #FF218C08 #FF43B324 #FF5AB541 ================================================ FILE: content/xaml/Theme/NoesisTheme.Brushes.LightLime.xaml ================================================  #FF99DF10 #FF69A108 #FF85C20C #FFAFEB2F #FFBDED55 ================================================ FILE: content/xaml/Theme/NoesisTheme.Brushes.LightOrange.xaml ================================================  #FFDF9910 #FFA17608 #FFC1840B #FFEBA62E #FFECB556 ================================================ FILE: content/xaml/Theme/NoesisTheme.Brushes.LightPurple.xaml ================================================  #FF894EED #FF6737B0 #FF7743D1 #FF9D71F5 #FFA67FF5 ================================================ FILE: content/xaml/Theme/NoesisTheme.Brushes.LightRed.xaml ================================================  #FFDE2B10 #FFA11F08 #FFC2240C #FFEB452F #FFED6755 ================================================ FILE: content/xaml/Theme/NoesisTheme.Colors.Dark.xaml ================================================  #e4e6e8 #bdc0c4 #9fa3a7 #82878c #6d7378 #595f65 #4b5258 #3e464c #323940 #2c343a #262e35 #20282f ================================================ FILE: content/xaml/Theme/NoesisTheme.Colors.Light.xaml ================================================  #20282f #41484e #5d6469 #7b8085 #93979b #abaeb2 #bbbec1 #cbced0 #dcdee0 #e5e6e8 #edeff0 #f6f7f8 ================================================ FILE: content/xaml/Theme/NoesisTheme.DarkAqua.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.DarkBlue.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.DarkCrimson.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.DarkEmerald.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.DarkGreen.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.DarkLime.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.DarkOrange.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.DarkPurple.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.DarkRed.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.Fonts.xaml ================================================  Fonts/#PT Root UI 17 15 12 ================================================ FILE: content/xaml/Theme/NoesisTheme.LightAqua.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.LightBlue.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.LightCrimson.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.LightEmerald.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.LightGreen.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.LightLime.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.LightOrange.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.LightPurple.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.LightRed.xaml ================================================  ================================================ FILE: content/xaml/Theme/NoesisTheme.Styles.xaml ================================================  17 1 0 1 2 2 -3 -8,-3 1.75 1.75,1.75,0,0 0,0,1.75,1.75 1.75,0,0,1.75 0,1.75,1.75,0 1.25 1.25,1.25,0,0 0,0,1.25,1.25 1.25,0,0,1.25 0,1.25,1.25,0 0.75 0.75,0.75,0,0 0,0,0.75,0.75 0.75,0,0,0.75 0,0.75,0.75,0 0 3 M0,7.5L5.5,12.5 14,2.75 11.75,1 5.5,9 1.5,5.5z M4,0L0,4 4,8 M0,0 L4,4 0,8 M0,4L4,0 8,4 M0,0 L4,4 8,0 M0,0L6,6 0,12 M0,0L6,6 0,12 M2,1 C2,1.5522847 1.5522847,2 1,2 C0.44771525,2 0,1.5522847 0,1 C0,0.44771525 0.44771525,0 1,0 C1.5522847,0 2,0.44771525 2,1 z M6,1 C6,1.5522847 5.5522847,2 5,2 C4.4477153,2 4,1.5522847 4,1 C4,0.44771525 4.4477153,0 5,0 C5.5522847,0 6,0.44771525 6,1 z M2,5 C2,5.5522847 1.5522847,6 1,6 C0.44771525,6 0,5.5522847 0,5 C0,4.4477153 0.44771525,4 1,4 C1.5522847,4 2,4.4477153 2,5 z M6,5 C6,5.5522847 5.5522847,6 5,6 C4.4477153,6 4,5.5522847 4,5 C4,4.4477153 4.4477153,4 5,4 C5.5522847,4 6,4.4477153 6,5 z M2,9 C2,9.5522847 1.5522847,10 1,10 C0.44771525,10 0,9.5522847 0,9 C0,8.4477153 0.44771525,8 1,8 C1.5522847,8 2,8.4477153 2,9 z M6,9 C6,9.5522847 5.5522847,10 5,10 C4.4477153,10 4,9.5522847 4,9 C4,8.4477153 4.4477153,8 5,8 C5.5522847,8 6,8.4477153 6,9 z M2,1 C2,1.5522847 1.5522847,2 1,2 C0.44771525,2 0,1.5522847 0,1 C0,0.44771525 0.44771525,0 1,0 C1.5522847,0 2,0.44771525 2,1 z M8,1 C8,1.5522847 7.5522847,2 7,2 C6.4477153,2 6,1.5522847 6,1 C6,0.44771525 6.4477153,0 7,0 C7.5522847,0 8,0.44771525 8,1 z M14,1 C14,1.5522847 13.552285,2 13,2 C12.447715,2 12,1.5522847 12,1 C12,0.44771525 12.447715,0 13,0 C13.552285,0 14,0.44771525 14,1 z ================================================ FILE: content/xaml/TileInfo.xaml ================================================ ================================================ FILE: content/xaml/WaitPage.xaml ================================================  ================================================ FILE: content/xaml/WorkshopGui.xaml ================================================ ================================================ FILE: content/xaml/localization/_.xaml ================================================ MainPage_ MainPage_Ingnomia MainPage_Continue MainPage_NewGame MainPage_SetUpGame MainPage_LoadGame MainPage_Settings MainPage_Exit MainPage_Hint_MMContinue MainPage_Hint_MMNewGame MainPage_Hint_MMSetupGame MainPage_Hint_MMLoadGame MainPage_Hint_MMSettings MainPage_Hint_MMExit Agriculture_ Agriculture_TilledPlots Agriculture_PlantsPlanted Agriculture_CropsReady Agriculture_Suspend Agriculture_Harvest Agriculture_SelectCrop Agriculture_NumberOfSeeds Agriculture_NumberOfItems Agriculture_NumberOfPlants Agriculture_Manage Agriculture_Animals Agriculture_Male Agriculture_Female Agriculture_TameWildAnimals Agriculture_HarvestAnimals Agriculture_HarvestHay Agriculture_StoredFood Agriculture_Settings Agriculture_Back Agriculture_SelectFoodForTroughs Agriculture_ManageAnimals Agriculture_SelectAnimalType Agriculture_NumberOfAnimals Agriculture_Trees Agriculture_PlantTrees Agriculture_PickFruit Agriculture_FellTrees Agriculture_SelectTreeType CreatureInfo_ CreatureInfo_Happiness CreatureInfo_Sleep CreatureInfo_Thirst CreatureInfo_Hunger CreatureInfo_Cha CreatureInfo_Wis CreatureInfo_Int CreatureInfo_Con CreatureInfo_Dex CreatureInfo_Str CreatureInfo_Inventory CreatureInfo_Equipment DebugPage_ DebugPage_Misc DebugPage_Stuff DebugPage_More DebugPage_DebugFirstPage DebugPage_SpawnGnome DebugPage_SpawnTrader DebugPage_SpawnGoblin DebugPage_DebugSecondPage DebugPage_DebugThirdPage GameGui_ GameGui_KingdomName GameGui_Something1 GameGui_Something2 GameGui_D GameGui_Yes GameGui_Ok GameGui_No GameGui_Build GameGui_Mine GameGui_Agriculture GameGui_Designations GameGui_Job GameGui_Magic GameGui_Kingdom GameGui_Stockpiles GameGui_Military GameGui_Population GameGui_Missions InGamePage_ InGamePage_Ingnomia InGamePage_Resume InGamePage_LoadGame InGamePage_SaveGame InGamePage_Settings InGamePage_QuitGame LoadGamePage_ LoadGamePage_LoadGame LoadGamePage_HereSelectedGameInfo LoadGamePage_Load LoadGamePage_Back MilitaryGui_ MilitaryGui_Squads MilitaryGui_Roles MilitaryGui_More MilitaryGui_MilitarySquads MilitaryGui_MilitaryRoles MilitaryGui_MilitaryPriorities Neighbors_ Neighbors_Neighbors Neighbors_Missions Neighbors_More Neighbors_NeighborsPage Neighbors_MissionsPage Neighbors_NeighborsThirdPage NewGamePage_ NewGamePage_SetUpNewGame NewGamePage_World NewGamePage_KingdomName NewGamePage_Seed NewGamePage_Random NewGamePage_WorldSize NewGamePage_LargerSizePerformance NewGamePage_ZLevels NewGamePage_Ground NewGamePage_Flatness NewGamePage_OceanSize NewGamePage_Rivers NewGamePage_RiverSize NewGamePage_StartArea NewGamePage_StartingItems NewGamePage_Presets NewGamePage_NewPreset NewGamePage_DeletePreset NewGamePage_Gnomes NewGamePage_Items NewGamePage_Animals NewGamePage_Add NewGamePage_Enemies NewGamePage_PeacefulMode NewGamePage_NoEnemyKingdoms NewGamePage_PeacefulAnimalsMayStillAttack NewGamePage_Flora NewGamePage_TreeDensity NewGamePage_PlantDensity NewGamePage_Fauna NewGamePage_NumberMaxWildAnimalsPage NewGamePage_NumberWildAnimals NewGamePage_NumberWildAtStart NewGamePage_NumberMaxAnimalsPage NewGamePage_NumberMaxAnimals NewGamePage_NumberMaxAnimalsIncludesDomesticated NewGamePage_Back NewGamePage_Embark PopulationWindow_ PopulationWindow_Skills PopulationWindow_Schedule PopulationWindow_EditProf PopulationWindow_Name PopulationWindow_Professions PopulationWindow_None PopulationWindow_Eat PopulationWindow_Sleep PopulationWindow_Train PopulationWindow_EditProfessions PopulationWindow_New PopulationWindow_Delete SettingsPage_ SettingsPage_Settings SettingsPage_Game SettingsPage_Video SettingsPage_VideoContent SettingsPage_Audio SettingsPage_AudioContent SettingsPage_Controls SettingsPage_Back SettingsPage_Accept SettingsPage_UiScale SettingsPage_FullScreen SettingsPage_Language SettingsPage_KeyboardSpeed SettingsPage_LightMin SettingsPage_KeybindingsPlaceholder StockpileGui_ StockpileGui_Stockpile StockpileGui_Suspend StockpileGui_StockpileSuspend StockpileGui_StockpilePushable StockpileGui_StockpilePullable StockpileGui_StockpilePullFromHere StockpileGui_StockpilePullFromHigher StockpileGui_PullFromOther StockpileGui_StockpilePullFromOther StockpileGui_StockpilePullFromLower StockpileGui_CopySetup StockpileGui_PasteSetup StockpileGui_Filters StockpileGui_Stock StockpileGui_Limits StockpileGui_LimitsImplementedLater TileInfo_ TileInfo_Stockpile TileInfo_Manage TileInfo_AssignTo TileInfo_Value TileInfo_Enclosed TileInfo_HasRoof TileInfo_Beds TileInfo_SoundAlarm TileInfo_AlarmSoundAlarm TileInfo_AlarmRetreatHere TileInfo_Job TileInfo_WorkedBy TileInfo_JobPriority TileInfo_RequiredSkill TileInfo_RequiredTool TileInfo_RequiredToolAvailable TileInfo_RequiredToolAccessible TileInfo_RequiredItems WaitPage_ WaitPage_CreatingGame WaitPage_PleaseWait WorkshopGui_ WorkshopGui_AllowAcceptGeneratedJobs WorkshopGui_AcceptGeneratedJobs WorkshopGui_AutoGenerateCraftJobs WorkshopGui_AutoCraftMissingComponents WorkshopGui_AllowAutoCraftMissingComponents WorkshopGui_GeneratesCraftingJobsForMissingComponents WorkshopGui_AvailableProducts WorkshopGui_ProductionLine WorkshopGui_ButcherExcessAnimals WorkshopGui_ButcherExcess WorkshopGui_ButcherTameNotOnPasture WorkshopGui_ButcherCorpse WorkshopGui_ButcherAllowCorpse WorkshopGui_ButcherOnlyStockpileCorpse WorkshopGui_ConnectToStockpile WorkshopGui_ConnectStockpile WorkshopGui_Connect3x3Stockpile WorkshopGui_ConnectAdjacentStockpile WorkshopGui_ButcherAnimals WorkshopGui_SuspendWorkshop WorkshopGui_WorkshopSuspendWork WorkshopGui_WorkshopStopWork WorkshopGui_Trade WorkshopGui_Max WorkshopGui_TraderInventory WorkshopGui_TraderValue WorkshopGui_PlayerInventory WorkshopGui_PlayerValue WorkshopGui_TradeAction ================================================ FILE: content/xaml/localization/en_US.xaml ================================================ MainPage_ Ingnomia Continue New Game Set up Game Load Game Settings Exit Continue the last saved game. Start a new game with previous settings. Start a new game with new settings. Load a previously saved game. Configure the settings for the game. Exit the game. Agriculture_ Tilled plots Plants planted Crops ready Suspend Harvest Select crop Number of seeds Number of items Number of plants Manage Animals Male Female Tame wild animals Harvest animals Harvest hay Stored Food Settings Back Select food for troughs Manage Animals Select animal type Number of animals Trees Plant trees Pick fruit Fell trees Select tree type CreatureInfo_ Happiness Sleep Thirst Hunger CHA WIS INT CON Dex STR Inventory Equipment DebugPage_ Misc Stuff More Debug first page Spawn Gnome Spawn Trader Spawn Goblin Debug second page Debug third page GameGui_ Kingdom name something something D Yes OK No Build Mine Agriculture Designations Job Magic Kingdom Stockpiles Military Population Missions InGamePage_ Ingnomia Resume Load Game Save Game Settings Quit game LoadGamePage_ Load Game Here will be info about the selected game. Load Back MilitaryGui_ Squads Roles More Military - Squads Military - Roles Military - Priorities Neighbors_ Neighbors Missions More Neighbors Missions Neighbors third page NewGamePage_ Set up new game World Kingdom name: Seed: Random World size: Larger size will impact performance. Z-Levels: Ground: Flatness: Ocean size: Rivers: River size: Start area: Starting items Presets: New Preset Delete Preset Gnomes: Items Animals Add Enemies Peaceful mode. No enemy kingdoms. Aggressive animals still may attack. Flora Tree Density: Plant Density: Fauna Wild Animals: Maximum number of wild animals at start. Max animals per type: Maximum number animals per type. This also influences domesticated animals. Back Embark PopulationWindow_ Skills Schedule Edit Prof Name Professions None Eat Sleep Train Edit Professions new delete SettingsPage_ Settings Game Video Video Settings Audio There is no audio yet. Master Volume Controls Back Accept UI Scale Full Screen Language Keyboard speed minimum light level This page is a placeholder. Keybindings are not implemented yet. StockpileGui_ Stockpile Suspend Suspend stockpile. Stockpile will stop accepting items. Items can still be taken out of the stockpile. Pull from here Pull from here. Stockpiles with higher priority may pull items from here. Pull from other Pull from other. Stockpile may pull from other stockpiles with lower priority. Copy setup Paste setup Filters Stock Limits Will be implemented later. TileInfo_ Stockpile: Manage Assign to: Value: Enclosed: Has Roof: Beds: Sound the Alarm! Sound the Alarm! Civilian gnomes will retreat here. Job: Worked by: Job priority: Required skill: Required tool: Required tool available: Accessible: Required Items: WaitPage_ Creating Game Please Wait WorkshopGui_ Accept generated jobs Accept generated jobs. Will auto generate craft jobs for items in constructions and other workshops. Auto craft missing components Auto craft missing components. Generates crafting jobs in workshops for missing components. Available products Production line Butcher excess animals Butcher excess. Butcher any tame animal not on a pasture. Butcher corpses Butcher corpses. Corpses must be in stockpiles to be considered. Connect to stockpile Connect stockpile. Connect to a stockpile of maximum size 3x3. That stockpile must be adjacent to the input tile . Butcher Animals Suspend Suspend workshop. Workshop will stop working. Trade max Trader inventory: Trader value: Player inventory: Player value: Trade -raw wood- ================================================ FILE: content/xaml/localization/fr_FR.xaml ================================================ MainPage_ Ingnomia Reprendre Recommencer Nouvelle partie Charger Paramètres Quitter Reprendre la dernière partie sauvegardée. Démarrer une nouvelle partie avec la configuration précédente. Démarrer une nouvelle partie en choisissant la configuration. Charger une sauvegarde. Afficher les options. Quitter le jeu. Agriculture_ Labours Plants Récoltes Jachère Récolte Semis Graines Récoltes Plants Nourriture Bêtes Mâles Femelles Domestiquer les animaux sauvages Entretenir Désherber Fourrages Paramètres Retour Fourrages Gérer Type d'animaux Quantité Arbres Replanter Récolter Abattre Plantation CreatureInfo_ Joie Énergie Eau Nourriture Char Sag Int Cons Dex For Inventaire Équipement DebugPage_ Invocations Équipements Autres Invoquer Gnome Marchand Goblin Équipements Autres GameGui_ Royaume : truc truc D Oui Ok Non Construction Mine Agriculture Zones Tâches Magie Royaumes Réserves Armée Démographie Quêtes InGamePage_ Ingnomia Reprendre Charger Sauvegarder Paramètres Quitter LoadGamePage_ Choisir la partie à charger Informations sur la partie choisie à venir. Charger Annuler MilitaryGui_ Affectations Équipes Autre Affectations Équipes Priorités Neighbors_ Ambassades Requêtes Autre Ambassades Requêtes Autre NewGamePage_ Paramètres de la partie Carte Nom du royaume : Graine : Au hasard Taille de la carte : Une grande taille réduit les performances. Profondeurs : Sol : Dénivelé : Taille de l'océan : Rivières : Largeur : Zone de départ : Objets préparés Préconfigurations : Nouvelle Effacer Gnomes : Objets Animaux Ajouter Ennemis Mode pacifique. Pas de royaumes rivaux. Les animaux sauvages restent agressifs. Flore Arbres : Buissons : Faune Animaux sauvages : Nombre d'animaux sauvages maximum en début de partie. Par race : Nombre d'animaux maximum par types. Inclue les animaux domestiques. Annuler En route ! PopulationWindow_ Compétences Planning Assignations Gnome Assignation Libre Manger Dormir Travailler Modifier les assignations Nouvelle Supprimer SettingsPage_ Paramètres Jeu Vidéo Paramètres vidéo Audio Pas de son pour le moment. Contrôles Annuler Valider Échelle de l'interface Plein écran Langue Défilement au clavier Luminosité minimale Cette page est un espace réservé. Les associations de touches ne sont pas encore implémentées. StockpileGui_ Réserve Arrêter Arrêter le stockage. Cette réserve arrêtera le stockage d'objets. Les objets pourront néanmoins être sortis. Envoyer Envoyer vers d'autres endroits. Les réserves avec une priorité plus élevée se serviront dans celle-ci. Recevoir Prendre d'autres endroits. Cette réserve peut se remplir à partir de réserves à priorité plus faible. Copier Coller Accepter Stock Limites Implémentation à venir. TileInfo_ Réserve : Gérer Assignation : Valeur : Clos : Toiture : Lits : Alarme ! Sonner l'alarme. Point de rassemblement des gnomes civils. Tâche : Travailleur : Priorité : Compétence requise : Outils nécessaires : Outils disponibles : Accessible : Objets requis : WaitPage_ Préparation du jeu Veuillez patienter... WorkshopGui_ Accepte les tâches générées Autorise les tâches générées. Génèrera automatiquement les prérequis pour les ateliers le nécessitant. Auto-craft des objets manquants Préparation automatique des objets manquants. Génèrera automatiquement les prérequis dans les ateliers autorisés. Recettes Production Abattre les animaux en surnombre Abattre le surnombre du troupeau. Abattra tout animal domestique hors pâturage. Préparer les carcasses Préparation de carcasses. Elles doivent être dans une réserve pour être prises en compte. Lier à une réserve Liaison vers une réserve. Liaison vers une zone de 3x3 réserves max. La zone prise en compte entoure la réserve liée. Abattre les animaux Arrêter Arrêter l'atelier. L'atelier va être mis à l'arrêt. Marchander max Vendeur : Demande : Joueur : Offre : Valider ================================================ FILE: content/xaml/localization/pt_BR.xaml ================================================ MainPage_ Ingnomia Continuar Novo Jogo Preparar Jogo Carregar Jogo Configurações Sair Continua o último jogo salvo. Inicia um novo jogo com as configurações anteriores. Inicia um novo jogo com novas configurações. Carrega um jogo salvo anteriormente. Configura as opções do jogo. Sai do jogo. Agriculture_ Lotes arados Plantas plantadas Safra pronta Suspender Colher Selecionar colheita Número de sementes Número de itens Número de plantas Gerenciar Animais Macho Fêmea Domesticar animais Colher animais Colher feno Comida armazenada Opções Voltar Selecionar comida para pensamentos Gerenciar animais Selecione o tipo de animal Número de animais Árvores Plantar árvores Colher frutas Derrubar árvores Selecione o tipo de árvore CreatureInfo_ Felicidade Sono Sede Fome CAR SAB INT CON DES FOR Inventário Equipamentos DebugPage_ Misc Coisas Mais Primeira página de depuração Gerar Gnomo Gerar Vendedor Gerar Goblin Segunda página de depuração Terceira página de depuração GameGui_ Nome do Reino algo algo D Sim OK Não Construir Minerar Agricultura Áreas Tarefas Magia Reino Estoque Militar População Missões InGamePage_ Ingnomia Continuar Carregar Jogo Salvar Jogo Configurações Sair do Jogo LoadGamePage_ Carregar Jogo Aqui vai ter informações sobre o jogo selecionado. Carregar Voltar MilitaryGui_ Esquadrões Papéis Mais Militar - Esquadrões Militar - Papéis Militar - Prioridades Neighbors_ Vizinhos Missões Mais Vizinhos Missões Vizinhos terceira página NewGamePage_ Preparar novo jogo Mundo Nome do reino: Seed: Aleatório Tamanho: Tamanhos maiores terão impacto na performance. Rugosidade: Oceano (tamanho): Rios: Rios (tamanho): Área inicial: Itens iniciais Pré-ajuste: Novo pré-ajuste Remover pré-ajuste Gnomos: Itens Animais Adicionar Inimigos Modo pacífico. Sem reinos inimigos. Animais agressivos ainda podem atacar. Flora Árvores (%): Plantas (%): Fauna Animais selvagens: Número máximo de animais selvagens no início do jogo. Máx por tipo: Número máximo de animais de cada tipo, também influencia os animais domesticados. Voltar Embarcar PopulationWindow_ Proficiências Agenda Edit Prof Nome Profissões Nada Comer Dormir Treinar Editar Profissões Nova Remover SettingsPage_ Configurações Jogo Vídeo Configurações do Vídeo Áudio Ainda não tem áudio. Controles Voltar Aceitar Escala da Interface Tela Cheia Idioma Velocidade do teclado Nível mínimo de luz Esta página é um espaço reservado. As combinações de teclas ainda não foram implementadas. StockpileGui_ Estoque Suspender Suspender estoque. O estoque parará de aceitar itens. Itens ainda podem ser retirados do estoque. Pegar daqui Pegar daqui. Estoques com maior prioridade podem pedir itens daqui. Pedir de outro Pedir de outro. Estoques podem pedir de outros estoques com menor prioridade. Copiar opções Colar opções Filtros Estoque Limites Será implementado mais tarde. TileInfo_ Estoque: Gerenciar Atribuir para: Valor: Fechado: Têm telhado: Camas: Soar o alarme! Soar o alarme! Gnomos civís fugiram para cá. Tarefa: Feito por: Prioridade da tarefa: Proficiência necessária: Ferramenta necessária: Ferramenta necessária disponível: Acessível: Itens necessários: WaitPage_ Criando jogo Por favor aguarde WorkshopGui_ Aceitar tarefas geradas Aceita tarefas geradas. Irá gerar automaticamente as tarefas para fazer os itens de construção e outras oficinas. Auto gerar componentes em falta Irá gerar componentes em falta. Gera tarefas para fazer os componentes em falta nas oficinas. Produtos disponíveis Linha de produção Abater animais excedentes Irá abater os animais que excederem. Abater qualquer animal domesticado que não esteja num pasto. Abater corpos Abater carniças. Carniças devem estar em estoques para serem consideradas. Conectar ao estoque Conecta estoque. Conecta a um estoque de tamanho máximo de 3x3. O estoque precisa estar adjacente ao bloco de entrada. Abater animais Suspender Suspende a oficina. A oficina parará de trabalhar. Comércio max Inventário do Comerciante: Valor do Comerciante: Inventário do Jogador: Valor do jogador: Trocar -madeira pura- ================================================ FILE: content/xaml/styles/colors.xaml ================================================ #0CFFFFFF #7FFFFFFF #BFFFFFFF #F2FFFFFF #0A00E1FF #2600E6FF #B200E6FF #0000F7FF #4C00F7FF #FF00BBFF #CC132A39 #804D6B80 #FFFFFFFF #FF000000 #FF404040 #FF2B333B #FF414E58 #FFA0A0A0 #FFB07256 #FF787878 #FF709BAF #FF87AF96 #FFA569AF #FFAF2C7B #FF86AF69 #FFFF6A00 #FFFF6A #FFA0A0A0 #FFAFAFC8 #FF8C8C8C #FFAD8E70 #FFA0A0A0 #FFB07256 #FFB8B838 #FF709BAF ================================================ FILE: content/xaml/styles/mainmenu/pageswap.xaml ================================================ ================================================ FILE: content/xaml/styles/mainmenu/styles.xaml ================================================