├── .gitattributes ├── .gitignore ├── changelog.txt ├── config.yaml ├── docs ├── bin │ ├── build.py │ ├── examples.py │ ├── scripts.bat │ ├── scripts.sh │ └── verify.py ├── commandline.md ├── config.md ├── config │ ├── example-config.json │ └── example-config.py ├── examples │ ├── raws.boolfilter.txt │ ├── raws.color.txt │ ├── raws.dir.txt │ ├── raws.helpers.txt │ ├── raws.objects.txt │ ├── raws.queryable.txt │ ├── raws.queryableadd.txt │ ├── raws.queryableaddprop.txt │ ├── raws.queryableprop.txt │ ├── raws.rawfile.txt │ ├── raws.token.txt │ ├── raws.tokenargs.txt │ ├── raws.tokenfilter.txt │ ├── raws.tokenlist.txt │ ├── raws.tokenparse.txt │ ├── scripts.pineapple.txt │ └── scripts.umiman.txt ├── filemap.md ├── index.html ├── introduction.md ├── modding.md ├── pineapple.diff.md └── scripts.md ├── images ├── favicon.png ├── icon.ico ├── logo.png ├── logo.xcf ├── logo_transparent.png └── terminal_example.gif ├── lib └── yaml │ ├── CHANGES │ ├── LICENSE │ ├── PKG-INFO │ ├── README │ ├── __init__.py │ ├── composer.py │ ├── constructor.py │ ├── cyaml.py │ ├── dumper.py │ ├── emitter.py │ ├── error.py │ ├── events.py │ ├── loader.py │ ├── nodes.py │ ├── parser.py │ ├── reader.py │ ├── representer.py │ ├── resolver.py │ ├── scanner.py │ ├── serializer.py │ └── tokens.py ├── license.txt ├── manager.py ├── pydwarf ├── __init__.py ├── config.py ├── helpers.py ├── logger.py ├── quick.py ├── registrar.py ├── response.py ├── session.py ├── urist.py ├── uristdoc.py ├── uristscript.py └── version.py ├── raws ├── __init__.py ├── basefile.py ├── binfile.py ├── color.py ├── contentfile.py ├── copytree.py ├── dir.py ├── filefactory.py ├── filters.py ├── helpers.py ├── objects.py ├── queryable.py ├── queryableadd.py ├── queryableaddprop.py ├── queryableobj.py ├── queryableprop.py ├── queryresult.py ├── rawfile.py ├── reffile.py ├── token.py ├── tokenargs.py ├── tokengenerator.py ├── tokenlist.py └── tokenparse.py ├── readme.md └── scripts ├── __init__.py ├── azerty ├── pydwarf.agriculture.py ├── raw │ └── agriculture │ │ ├── plant_brazilwood_azerty.txt │ │ ├── plant_castorbean_azerty.txt │ │ ├── plant_common_juniper_azerty.txt │ │ ├── plant_henna_tree_azerty.txt │ │ ├── plant_indigo_tree_azerty.txt │ │ ├── plant_madder_azerty.txt │ │ ├── plant_oil_palm_azerty.txt │ │ ├── plant_okra_azerty.txt │ │ ├── plant_opium_poppy_azerty.txt │ │ ├── plant_rapeseed_azerty.txt │ │ ├── plant_reaction_other_azerty.txt │ │ ├── plant_red_safflower_azerty.txt │ │ ├── plant_sesame_azerty.txt │ │ ├── plant_sugarcane_azerty.txt │ │ ├── plant_sunflower_azerty.txt │ │ ├── plant_weld_azerty.txt │ │ ├── plant_white_mustard_azerty.txt │ │ ├── plant_woad_azerty.txt │ │ └── plant_yellow_safflower_azerty.txt └── readme.md ├── dragondeplatino ├── gemset │ ├── data │ │ ├── art │ │ │ ├── 24x24 │ │ │ │ ├── _overrides_constructed.png │ │ │ │ ├── _overrides_feature.png │ │ │ │ ├── _overrides_frozen.png │ │ │ │ ├── _overrides_items.png │ │ │ │ ├── _overrides_lava.png │ │ │ │ ├── _overrides_mineral.png │ │ │ │ ├── _overrides_plants.png │ │ │ │ ├── _overrides_soil_misc.png │ │ │ │ ├── _overrides_stone.png │ │ │ │ ├── _overrides_tree_cap.png │ │ │ │ ├── gemset_curses_1280x600.png │ │ │ │ ├── gemset_map.png │ │ │ │ ├── mouse.png │ │ │ │ └── shadows.png │ │ │ └── 48x48 │ │ │ │ ├── _overrides_constructed.png │ │ │ │ ├── _overrides_feature.png │ │ │ │ ├── _overrides_frozen.png │ │ │ │ ├── _overrides_items.png │ │ │ │ ├── _overrides_lava.png │ │ │ │ ├── _overrides_mineral.png │ │ │ │ ├── _overrides_plants.png │ │ │ │ ├── _overrides_soil_misc.png │ │ │ │ ├── _overrides_stone.png │ │ │ │ ├── _overrides_tree_cap.png │ │ │ │ ├── gemset_curses_2560x1200.png │ │ │ │ ├── gemset_map.png │ │ │ │ ├── mouse.png │ │ │ │ └── shadows.png │ │ └── init │ │ │ ├── colors.txt │ │ │ ├── d_init.txt │ │ │ ├── init.txt │ │ │ └── overrides.txt │ ├── manifest.json │ └── raw │ │ ├── graphics │ │ ├── 24x24 │ │ │ ├── amphibians.png │ │ │ ├── annelids.png │ │ │ ├── birds.png │ │ │ ├── birds_new.png │ │ │ ├── bug_slug_new.png │ │ │ ├── desert_new.png │ │ │ ├── domestic.png │ │ │ ├── dwarves.png │ │ │ ├── elves.png │ │ │ ├── equipment.png │ │ │ ├── fanciful.png │ │ │ ├── goblins.png │ │ │ ├── graphics_amphibians.txt │ │ │ ├── graphics_annelids.txt │ │ │ ├── graphics_birds.txt │ │ │ ├── graphics_birds_new.txt │ │ │ ├── graphics_bug_slug_new.txt │ │ │ ├── graphics_desert_new.txt │ │ │ ├── graphics_domestic.txt │ │ │ ├── graphics_dwarves.txt │ │ │ ├── graphics_elves.txt │ │ │ ├── graphics_equipment.txt │ │ │ ├── graphics_fanciful.txt │ │ │ ├── graphics_goblins.txt │ │ │ ├── graphics_humans.txt │ │ │ ├── graphics_insects.txt │ │ │ ├── graphics_kobolds.txt │ │ │ ├── graphics_large_mountain.txt │ │ │ ├── graphics_large_ocean.txt │ │ │ ├── graphics_large_riverlake.txt │ │ │ ├── graphics_large_temperate.txt │ │ │ ├── graphics_large_tropical.txt │ │ │ ├── graphics_large_tundra.txt │ │ │ ├── graphics_mountain_new.txt │ │ │ ├── graphics_next_underground.txt │ │ │ ├── graphics_ocean_new.txt │ │ │ ├── graphics_other.txt │ │ │ ├── graphics_procedural.txt │ │ │ ├── graphics_reptiles.txt │ │ │ ├── graphics_riverlakepool_new.txt │ │ │ ├── graphics_savage_tropical.txt │ │ │ ├── graphics_small_mammal_new.txt │ │ │ ├── graphics_small_mammals.txt │ │ │ ├── graphics_small_ocean.txt │ │ │ ├── graphics_small_riverlake.txt │ │ │ ├── graphics_standard.txt │ │ │ ├── graphics_subterranean.txt │ │ │ ├── graphics_temperate_new.txt │ │ │ ├── graphics_tropical_new.txt │ │ │ ├── graphics_tundra_taiga_new.txt │ │ │ ├── humans.png │ │ │ ├── insects.png │ │ │ ├── kobolds.png │ │ │ ├── kobolds_alt.png │ │ │ ├── large_mountain.png │ │ │ ├── large_ocean.png │ │ │ ├── large_riverlake.png │ │ │ ├── large_temperate.png │ │ │ ├── large_tropical.png │ │ │ ├── large_tundra.png │ │ │ ├── mountain_new.png │ │ │ ├── next_underground.png │ │ │ ├── ocean_new.png │ │ │ ├── other.png │ │ │ ├── procedural.png │ │ │ ├── reptiles.png │ │ │ ├── riverlakepool_new.png │ │ │ ├── savage_tropical.png │ │ │ ├── small_mammal_new.png │ │ │ ├── small_mammals.png │ │ │ ├── small_ocean.png │ │ │ ├── small_riverlake.png │ │ │ ├── standard.png │ │ │ ├── subterranean.png │ │ │ ├── temperate_new.png │ │ │ ├── tropical_new.png │ │ │ └── tundra_taiga_new.png │ │ └── 48x48 │ │ │ ├── amphibians.png │ │ │ ├── annelids.png │ │ │ ├── birds.png │ │ │ ├── birds_new.png │ │ │ ├── bug_slug_new.png │ │ │ ├── desert_new.png │ │ │ ├── domestic.png │ │ │ ├── dwarves.png │ │ │ ├── elves.png │ │ │ ├── equipment.png │ │ │ ├── fanciful.png │ │ │ ├── goblins.png │ │ │ ├── graphics_amphibians.txt │ │ │ ├── graphics_annelids.txt │ │ │ ├── graphics_birds.txt │ │ │ ├── graphics_birds_new.txt │ │ │ ├── graphics_bug_slug_new.txt │ │ │ ├── graphics_desert_new.txt │ │ │ ├── graphics_domestic.txt │ │ │ ├── graphics_dwarves.txt │ │ │ ├── graphics_elves.txt │ │ │ ├── graphics_equipment.txt │ │ │ ├── graphics_fanciful.txt │ │ │ ├── graphics_goblins.txt │ │ │ ├── graphics_humans.txt │ │ │ ├── graphics_insects.txt │ │ │ ├── graphics_kobolds.txt │ │ │ ├── graphics_large_mountain.txt │ │ │ ├── graphics_large_ocean.txt │ │ │ ├── graphics_large_riverlake.txt │ │ │ ├── graphics_large_temperate.txt │ │ │ ├── graphics_large_tropical.txt │ │ │ ├── graphics_large_tundra.txt │ │ │ ├── graphics_mountain_new.txt │ │ │ ├── graphics_next_underground.txt │ │ │ ├── graphics_ocean_new.txt │ │ │ ├── graphics_other.txt │ │ │ ├── graphics_procedural.txt │ │ │ ├── graphics_reptiles.txt │ │ │ ├── graphics_riverlakepool_new.txt │ │ │ ├── graphics_savage_tropical.txt │ │ │ ├── graphics_small_mammal_new.txt │ │ │ ├── graphics_small_mammals.txt │ │ │ ├── graphics_small_ocean.txt │ │ │ ├── graphics_small_riverlake.txt │ │ │ ├── graphics_standard.txt │ │ │ ├── graphics_subterranean.txt │ │ │ ├── graphics_temperate_new.txt │ │ │ ├── graphics_tropical_new.txt │ │ │ ├── graphics_tundra_taiga_new.txt │ │ │ ├── humans.png │ │ │ ├── insects.png │ │ │ ├── kobolds.png │ │ │ ├── kobolds_alt.png │ │ │ ├── large_mountain.png │ │ │ ├── large_ocean.png │ │ │ ├── large_riverlake.png │ │ │ ├── large_temperate.png │ │ │ ├── large_tropical.png │ │ │ ├── large_tundra.png │ │ │ ├── mountain_new.png │ │ │ ├── next_underground.png │ │ │ ├── ocean_new.png │ │ │ ├── other.png │ │ │ ├── procedural.png │ │ │ ├── reptiles.png │ │ │ ├── riverlakepool_new.png │ │ │ ├── savage_tropical.png │ │ │ ├── small_mammal_new.png │ │ │ ├── small_mammals.png │ │ │ ├── small_ocean.png │ │ │ ├── small_riverlake.png │ │ │ ├── standard.png │ │ │ ├── subterranean.png │ │ │ ├── temperate_new.png │ │ │ ├── tropical_new.png │ │ │ └── tundra_taiga_new.png │ │ ├── objects │ │ ├── creature_amphibians.txt │ │ ├── creature_annelids.txt │ │ ├── creature_birds.txt │ │ ├── creature_birds_new.txt │ │ ├── creature_bug_slug_new.txt │ │ ├── creature_desert_new.txt │ │ ├── creature_domestic.txt │ │ ├── creature_equipment.txt │ │ ├── creature_fanciful.txt │ │ ├── creature_insects.txt │ │ ├── creature_large_mountain.txt │ │ ├── creature_large_ocean.txt │ │ ├── creature_large_riverlake.txt │ │ ├── creature_large_temperate.txt │ │ ├── creature_large_tropical.txt │ │ ├── creature_large_tundra.txt │ │ ├── creature_mountain_new.txt │ │ ├── creature_next_underground.txt │ │ ├── creature_ocean_new.txt │ │ ├── creature_other.txt │ │ ├── creature_reptiles.txt │ │ ├── creature_riverlakepool_new.txt │ │ ├── creature_savage_tropical.txt │ │ ├── creature_small_mammal_new.txt │ │ ├── creature_small_mammals.txt │ │ ├── creature_small_ocean.txt │ │ ├── creature_small_riverlake.txt │ │ ├── creature_standard.txt │ │ ├── creature_subterranean.txt │ │ ├── creature_temperate_new.txt │ │ ├── creature_tropical_new.txt │ │ ├── creature_tundra_taiga_new.txt │ │ ├── inorganic_stone_gem.txt │ │ ├── inorganic_stone_layer.txt │ │ ├── inorganic_stone_mineral.txt │ │ ├── inorganic_stone_soil.txt │ │ └── plant_grasses.txt │ │ └── onLoad.init ├── gemsetproperties.json ├── gemsetproperties.py ├── pydwarf.gemset.py └── readme.md ├── ketsuban └── pydwarf.milkbooze.py ├── omniclasm ├── hack │ └── decay │ │ ├── deteriorateclothes.rb │ │ ├── deterioratecorpses.rb │ │ ├── deterioratefood.rb │ │ └── starvingdead.rb ├── pydwarf.decay.py └── readme.md ├── pineapple ├── pydwarf.adoptsowner.py ├── pydwarf.bauxitetoaluminum.py ├── pydwarf.boneflux.py ├── pydwarf.butcherinorganic.py ├── pydwarf.castanvil.py ├── pydwarf.cavegrass.py ├── pydwarf.deerappear.py ├── pydwarf.diff.py ├── pydwarf.discipline.py ├── pydwarf.easypatch.py ├── pydwarf.flybears.py ├── pydwarf.greensteel.py ├── pydwarf.maxage.py ├── pydwarf.metalitems.py ├── pydwarf.noanimalmen.py ├── pydwarf.noaquifers.py ├── pydwarf.noexotic.py ├── pydwarf.nogiantanimals.py ├── pydwarf.nograzers.py ├── pydwarf.nomaxage.py ├── pydwarf.orientation.py ├── pydwarf.playanimalmen.py ├── pydwarf.playcivs.py ├── pydwarf.skillrust.py ├── pydwarf.subplants.py ├── pydwarf.tools.py ├── pydwarf.useablemats.py ├── pydwarf.utils.py ├── pydwarf.woodmechanisms.py ├── raw │ ├── greensteel │ │ ├── inorganic_green_steel_pineapple.txt │ │ └── reaction_green_steel_pineapple.txt │ └── tools │ │ ├── item_weapon_dagger_pineapple.txt │ │ ├── item_weapon_hatchet_pineapple.txt │ │ ├── item_weapon_mallet_pineapple.txt │ │ └── item_weapon_staff_pineapple.txt └── readme.md ├── pkdawson ├── pydwarf.vegan.py └── readme.md ├── putnam ├── pydwarf.materialsplus.py ├── pydwarf.microreduce.py ├── raw │ ├── materialsplus │ │ ├── entity_default.txt │ │ ├── inorganic_alloys_mat_plus.txt │ │ ├── inorganic_metals_mat_plus.txt │ │ ├── inorganic_other_mat_plus.txt │ │ ├── inorganic_stone_gem.txt │ │ ├── inorganic_stone_layer.txt │ │ ├── inorganic_stone_mineral.txt │ │ ├── inorganic_stone_minerals_mat_plus.txt │ │ ├── item_mat_plus.txt │ │ ├── reaction_alloys_mat_plus.txt │ │ └── reaction_production_mat_plus.txt │ └── microreduce │ │ ├── building_macro_fantastic.txt │ │ ├── entity_default.txt │ │ ├── item_macro_fantastic.txt │ │ └── reaction_macro_fantastic.txt └── readme.md ├── shukaro ├── pydwarf.creationforge.py ├── pydwarf.higherlearning.py ├── raw │ ├── creationforge │ │ ├── building_forge_shukaro.txt │ │ └── reaction_forge_shukaro.txt │ └── higherlearning │ │ ├── building_library_shukaro.txt │ │ ├── item_library_shukaro.txt │ │ └── reaction_library_shukaro.txt └── readme.md ├── smeeprocket ├── pydwarf.transgender.py └── readme.md ├── stal ├── armouryentities.json ├── armouryentities.py ├── misc │ └── readme_armoury.txt ├── pydwarf.armoury.py ├── raw │ └── armoury │ │ ├── creature_standard.txt │ │ ├── entity_default.txt │ │ ├── item_ammo.txt │ │ ├── item_armor.txt │ │ ├── item_body.txt │ │ ├── item_gloves.txt │ │ ├── item_helm.txt │ │ ├── item_pants.txt │ │ ├── item_shield.txt │ │ ├── item_shoes.txt │ │ ├── item_tool.txt │ │ ├── item_weapon.txt │ │ └── reaction_armoury.txt └── readme.md ├── umiman ├── data │ └── smallthings │ │ ├── no_family.txt │ │ └── threat.txt ├── misc │ ├── Engraving_README.txt │ └── dfmod_umiman_smallthings.txt ├── pydwarf.smallthings.py ├── raw │ └── smallthings │ │ ├── creature_amphibians.txt │ │ ├── creature_annelids.txt │ │ ├── creature_birds.txt │ │ ├── creature_domestic.txt │ │ ├── creature_fanciful.txt │ │ ├── creature_insects.txt │ │ ├── creature_large_mountain.txt │ │ ├── creature_large_ocean.txt │ │ ├── creature_large_riverlake.txt │ │ ├── creature_large_temperate.txt │ │ ├── creature_large_tropical.txt │ │ ├── creature_large_tundra.txt │ │ ├── creature_other.txt │ │ ├── creature_reptiles.txt │ │ ├── creature_savage_tropical.txt │ │ ├── creature_small_mammals.txt │ │ ├── creature_small_ocean.txt │ │ ├── creature_small_riverlake.txt │ │ ├── creature_standard.txt │ │ ├── creature_subterranean.txt │ │ └── descriptor_shape_standard.txt └── readme.md └── witty ├── pydwarf.restrictednobles.py └── readme.md /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.DS_Store 2 | *.pyc 3 | *.xcf 4 | *test.py 5 | .sublime-project 6 | .coverage 7 | htmlcov/* 8 | 9 | # Don't worry about my personal config file 10 | config.py 11 | 12 | # Manager logs go here 13 | logs/* 14 | 15 | # Raws go here (for my personal testing and stuff anyway) 16 | df/* 17 | 18 | # Older DF versions go here (for my help figuring version compatibility) 19 | refs/* 20 | 21 | # Stuff that's just not meant to be committed right now 22 | build/* 23 | 24 | # Used in a documentation example but don't include the actual file 25 | scripts/mynamespace/* 26 | -------------------------------------------------------------------------------- /config.yaml: -------------------------------------------------------------------------------- 1 | # Before running the manager you will need to change the 2 | # provided paths to better suit your particular setup. 3 | 4 | # Dwarf Fortress file are read from here, 5 | input: 'E:/Sophie/Desktop/Files/Games/Dwarf Fortress/df_40_24_win_original/' 6 | # Are outputted here, 7 | output: 'E:/Sophie/Desktop/Files/Games/Dwarf Fortress/df_40_24_win/' 8 | # And are backed up to here. 9 | backup: 'E:/Sophie/Desktop/Files/Games/Dwarf Fortress/df_40_24_win_backup/' 10 | 11 | # Tells PyDwarf which files in the DF directory are important. 12 | # Set to auto for automatic detection. 13 | paths: auto 14 | 15 | # Tells PyDwarf the current DF version and DFHack version. 16 | # Set to auto for automatic detection. 17 | version: auto 18 | hackversion: auto 19 | 20 | # Which packages to import. (Mainly to register the scripts indicated below.) Most users shouldn't need to worry about this setting. 21 | packages: 22 | - scripts 23 | 24 | # Which scripts to run, and in what order. 25 | scripts: 26 | # Run a script by full name. 27 | - pineapple.noexotic 28 | - putnam.materialsplus 29 | - dragondeplatino.gemset.full 30 | - smeeprocket.transgender 31 | - witty.restrictednobles 32 | # Run a script with arguments. 33 | - name: pineapple.deerappear 34 | args: {tile: "'d'", color: [6, 0, 1]} 35 | # Run all scripts under the umiman.smallthings namespace. 36 | - umiman.smallthings.* 37 | -------------------------------------------------------------------------------- /docs/bin/examples.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | 4 | 5 | examples_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), '../examples') 6 | 7 | examples = [] 8 | 9 | 10 | 11 | for filename in os.listdir(examples_dir): 12 | if filename.endswith('.txt'): 13 | path = os.path.join(examples_dir, filename) 14 | with open(path, 'rb') as examplefile: 15 | examplebodies = [body.strip() for body in examplefile.read().split('---')] 16 | for index, body in enumerate(examplebodies): 17 | try: 18 | high, low, flags, text = body.split('\n', 3) 19 | examples.append({ 20 | 'high': high.split(' '), 21 | 'low': low.split(' '), 22 | 'flags': flags.split(' '), 23 | 'text': text, 24 | 'name': '%s #%d' % (filename, index+1) 25 | }) 26 | except: 27 | pass 28 | -------------------------------------------------------------------------------- /docs/bin/scripts.bat: -------------------------------------------------------------------------------- 1 | cd ../../ 2 | python manager.py --meta --metaformat "md" --writedoc "docs/scripts.md" 3 | -------------------------------------------------------------------------------- /docs/bin/scripts.sh: -------------------------------------------------------------------------------- 1 | cd ../../ 2 | python manager.py --meta --metaformat "md" --writedoc "docs/scripts.md" 3 | -------------------------------------------------------------------------------- /docs/commandline.md: -------------------------------------------------------------------------------- 1 | # PyDwarf via the command line 2 | 3 | ## Introduction 4 | 5 | Running PyDwarf using settings in `config` files is straightforward: When `python manager.py` is executed, files like `config.yaml` or `config.py` are looked for in PyDwarf's root directory. However, there may be cases when it's desireable to run PyDwarf from the command line with a certain configuration without editing configuration files. Note that this is an advanced feature and the vast majority of users should never have to worry about these command line arguments. These are implemented primarily as a way to make it easier for other applications to call on PyDwarf for some of the heavy lifting. 6 | 7 | ![Example gif of running PyDwarf from the command line](http://www.pineapplemachine.com/pydwarf/terminal_example.gif) 8 | 9 | ## Accepted arguments 10 | 11 | There is a 1:1 mapping of long argument names to the values in configuration files. For a more verbose explanation of the purpose each argument serves it would be best to look [here](config.md). 12 | 13 | * `-i` `--input`: DF input directory. Expects a directory path. 14 | * `-o` `--output`: DF output directory. Expects a directory path. 15 | * `-bak` `--backup`: DF backup directory. Expects a directory path. 16 | * `-p` `--paths`: Important DF paths. Expects one or more paths relative to DF root. 17 | * `-ver` `--version`: Indiciate DF version. Set to `auto` for automatic detection. 18 | * `-hver` `--hackversion`: Indicate DFHack version. Set to `auto` for automatic detection. 19 | * `-l` `-log`: Path to log file output. Expects a file path. 20 | * `-v` `--verbose`: Sets stdout logging level to DEBUG. 21 | * `-s` `--scripts`: One or more names of scripts to run. 22 | * `-js` `--jscripts`: A list of scripts to run given in json format. 23 | * `-pk` `--packages`: A list of Python packages to import. 24 | * `-c` `--config`: Paths to one or more config files to load. Later configs override prior ones. 25 | * `-ls` `--list`: List registered scripts with current configuration. 26 | * `-m` `--meta`: Show documentation for script names given, or all scripts if no name is given. 27 | * `-mf` `--metaformat`: How to format metadata shown by `--meta`. Accepts `txt`, `html`, `md`. 28 | * `-wd` `--writedoc`: Write information outputted by `--meta` or `--list` to a file path. 29 | * `-h` `--help`: Display a summary of each argument's purpose. 30 | -------------------------------------------------------------------------------- /docs/config/example-config.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | "comment": [ 4 | "This is an example file!", 5 | 6 | "Before running the manager you will need to change the", 7 | "provided paths to better suit your particular setup.", 8 | "Please be sure to use forward slashes in these paths", 9 | "rather than backslashes." 10 | ], 11 | 12 | "input": "E:/Sophie/Desktop/Files/Games/Dwarf Fortress/df_40_24_win/", 13 | "output": "E:/Sophie/Desktop/Files/Games/Dwarf Fortress/df_40_24_win/pydwarf_output", 14 | "backup": "E:/Sophie/Desktop/Files/Games/Dwarf Fortress/df_40_24_win/pydwarf_backup", 15 | 16 | "paths": "auto", 17 | 18 | "version": "auto", 19 | "hackversion": "auto", 20 | 21 | "packages": [ 22 | "scripts" 23 | ], 24 | 25 | "scripts": [ 26 | "pineapple.noexotic", 27 | "putnam.materialsplus", 28 | "dragondeplatino.gemset.full", 29 | "smeeprocket.transgender", 30 | "witty.restrictednobles", 31 | 32 | { 33 | "name": "pineapple.deerappear", 34 | "args": {"tile": "'d'", "color": [6, 0, 1]} 35 | } 36 | 37 | "boneflux", 38 | 39 | "umiman.smallthings.*", 40 | ] 41 | } 42 | -------------------------------------------------------------------------------- /docs/config/example-config.py: -------------------------------------------------------------------------------- 1 | import os 2 | import platform 3 | 4 | if platform.system() == 'Windows': 5 | dfdir = 'E:/Sophie/Desktop/Files/Games/Dwarf Fortress/Dwarf Fortress/df_40_24_win' 6 | outdir = 'E:/Sophie/Desktop/pydwarf' 7 | else: 8 | dfdir = '/Users/pineapple/Desktop/stuff/dwarfort/df_osx_40_23' 9 | outdir = '/Users/pineapple/Desktop/pydwarf' 10 | 11 | export = { 12 | 13 | 'input': dfdir, 14 | 'output': os.path.join(outdir, 'output'), 15 | 'backup': os.path.join(outdir, 'backup'), 16 | 17 | 'paths': 'auto', 18 | 19 | 'version': 'auto', 20 | 'hackversion': 'auto', 21 | 22 | 'packages': [ 23 | 'scripts' 24 | ], 25 | 26 | 'scripts': [ 27 | # Run a script by full name. 28 | 'pineapple.noexotic', 29 | 'putnam.materialsplus', 30 | 'dragondeplatino.gemset.full', 31 | 'smeeprocket.transgender', 32 | 'witty.restrictednobles', 33 | # Run a script with arguments. 34 | { 35 | 'name': 'pineapple.deerappear', 36 | 'args': {'tile': "'d'", 'color': [6, 0, 1]} 37 | }, 38 | # Run a script by partial name. (Automatically expands to pineapple.boneflux.) 39 | 'boneflux', 40 | # Run all scripts under the umiman.smallthings namespace. 41 | 'umiman.smallthings.*', 42 | ] 43 | } 44 | -------------------------------------------------------------------------------- /docs/examples/raws.boolfilter.txt: -------------------------------------------------------------------------------- 1 | raws.basefilter.__or__ 2 | raws.tokenfilter.__init__ raws.basefilter.match 3 | 4 | >>> filter = raws.filter(exact_value='example') | raws.filter(exact_arg='token') 5 | >>> print filter.match(raws.token('example:token')) 6 | True 7 | >>> print filter.match(raws.token('example:hello')) 8 | True 9 | >>> print filter.match(raws.token('hello:token')) 10 | True 11 | >>> print filter.match(raws.token('hello:world')) 12 | False -------------------------------------------------------------------------------- /docs/examples/raws.color.txt: -------------------------------------------------------------------------------- 1 | raws.color.record.__str__ raws.color.record.__call__ raws.color.get 2 | 3 | 4 | >>> print raws.color.blue 5 | blue 6 | >>> print raws.color.blue() 7 | 1:0:0 8 | >>> print raws.color.get(1) 9 | blue 10 | 11 | --- 12 | 13 | raws.color.fg raws.color.bg 14 | raws.token.__init__ 15 | 16 | >>> token = raws.token('COLOR:7:0:0') 17 | >>> print raws.color.fg(token) 18 | white 19 | >>> print raws.color.bg(token) 20 | black 21 | 22 | --- 23 | 24 | raws.color.group 25 | raws.color.record.__call__ 26 | 27 | >>> print raws.color.yellow() 28 | 6:0:1 29 | >>> print raws.color.blue() 30 | 1:0:0 31 | >>> print raws.color.group(raws.color.yellow, raws.color.blue) 32 | 6:1:1 33 | >>> print raws.color.group(raws.color.blue, raws.color.yellow) 34 | 1:14:0 35 | 36 | --- 37 | 38 | raws.color.record.fg raws.color.record.bg 39 | 40 | 41 | >>> print raws.color.red.fg() 42 | 4:0:0 43 | >>> print raws.color.red.bg() 44 | 0:4:0 45 | >>> print raws.color.lred.fg() 46 | 4:0:1 47 | >>> print raws.color.lred.bg() 48 | 0:12:0 49 | 50 | --- 51 | 52 | raws.color.get 53 | raws.color.record.__str__ 54 | 55 | >>> print '\n'.join(str(raws.color.get(index)) for index in range(0, 16)) 56 | black 57 | blue 58 | green 59 | cyan 60 | red 61 | magenta 62 | brown 63 | lgray 64 | dgray 65 | lblue 66 | lgreen 67 | lcyan 68 | lred 69 | lmagenta 70 | yellow 71 | white 72 | 73 | --- 74 | 75 | raws.color.record.__int__ raws.color.record.__call__ 76 | 77 | 78 | >>> print raws.color.green() 79 | 2:0:0 80 | >>> print raws.color.lgreen() 81 | 2:0:1 82 | >>> print int(raws.color.green) 83 | 2 84 | >>> print int(raws.color.lgreen) 85 | 10 86 | 87 | --- 88 | 89 | raws.color.record.group raws.color.record.__call__ 90 | raws.color.record.fg raws.color.record.bg 91 | 92 | >>> print raws.color.green.fg() 93 | 2:0:0 94 | >>> print raws.color.blue.bg() 95 | 0:1:0 96 | >>> print raws.color.group(raws.color.green, raws.color.blue) 97 | 2:1:0 98 | >>> print raws.color.green(raws.color.blue) 99 | 2:1:0 100 | >>> print raws.color.blue(raws.color.green) 101 | 1:2:0 102 | -------------------------------------------------------------------------------- /docs/examples/raws.helpers.txt: -------------------------------------------------------------------------------- 1 | raws.helpers.ends 2 | raws.tokenparse.parse raws.tokenlist.add 3 | 4 | >>> tokens = raws.parse('[FIRST][SECOND][THIRD]') 5 | >>> print [str(token) for token in raws.helpers.ends(tokens)] 6 | ['[FIRST]', '[THIRD]'] 7 | >>> fourth = tokens.add('FOURTH') 8 | >>> tokensiter = (token for token in tokens) 9 | >>> print [str(token) for token in raws.helpers.ends(tokensiter)] 10 | ['[FIRST]', '[FOURTH]'] 11 | 12 | --- 13 | 14 | raws.helpers.equal 15 | raws.token.__init__ raws.tokenparse.parsevariable 16 | 17 | >>> print raws.equal(raws.token('[HELLO]'), raws.parse('[HELLO]')) 18 | True 19 | -------------------------------------------------------------------------------- /docs/examples/raws.objects.txt: -------------------------------------------------------------------------------- 1 | raws.objects.headers 2 | 3 | 4 | >>> print raws.objects.headers() 5 | ['BODY', 'INTERACTION', 'MATERIAL_TEMPLATE', 'DESCRIPTOR_SHAPE', 'TISSUE_TEMPLATE', 'BODY_DETAIL_PLAN', 'GRAPHICS', 'ENTITY', 'DESCRIPTOR_COLOR', 'BUILDING', 'REACTION', 'PLANT', 'LANGUAGE', 'ITEM', 'DESCRIPTOR_PATTERN', 'INORGANIC', 'CREATURE', 'CREATURE_VARIATION'] 6 | 7 | --- 8 | 9 | raws.objects.objects 10 | 11 | 12 | >>> print raws.objects.objects() 13 | ['ITEM_FOOD', 'ITEM_SHIELD', 'SYMBOL', 'ITEM_TRAPCOMP', 'ENTITY', 'ITEM_PANTS', 'TISSUE_TEMPLATE', 'CREATURE_GRAPHICS', 'REACTION', 'WORD', 'BUILDING_WORKSHOP', 'COLOR', 'ITEM_SHOES', 'ITEM_ARMOR', 'BUILDING_FURNACE', 'SHAPE', 'ITEM_AMMO', 'ITEM_INSTRUMENT', 'ITEM_GLOVES', 'TRANSLATION', 'TILE_PAGE', 'BODY', 'INTERACTION', 'ITEM_TOOL', 'ITEM_TOY', 'COLOR_PATTERN', 'MATERIAL_TEMPLATE', 'ITEM_HELM', 'BODY_DETAIL_PLAN', 'PLANT', 'ITEM_WEAPON', 'ITEM_SIEGEAMMO', 'INORGANIC', 'CREATURE_VARIATION', 'CREATURE'] 14 | 15 | --- 16 | 17 | raws.objects.objects 18 | 19 | 20 | >>> print '\n'.join(object for object in raws.objects.objects() if object.startswith('ITEM_')) 21 | ITEM_FOOD 22 | ITEM_SHIELD 23 | ITEM_TRAPCOMP 24 | ITEM_PANTS 25 | ITEM_SHOES 26 | ITEM_ARMOR 27 | ITEM_AMMO 28 | ITEM_INSTRUMENT 29 | ITEM_GLOVES 30 | ITEM_TOOL 31 | ITEM_TOY 32 | ITEM_HELM 33 | ITEM_WEAPON 34 | ITEM_SIEGEAMMO 35 | 36 | --- 37 | 38 | raws.objects.headerforobject 39 | 40 | 41 | >>> print raws.objects.headerforobject('ENTITY') 42 | ENTITY 43 | >>> print raws.objects.headerforobject('ITEM_ARMOR') 44 | ITEM 45 | >>> print raws.objects.headerforobject('TILE_PAGE') 46 | GRAPHICS 47 | 48 | --- 49 | 50 | raws.objects.objectsforheader 51 | 52 | 53 | >>> print raws.objects.objectsforheader('INORGANIC') 54 | ['INORGANIC'] 55 | >>> print raws.objects.objectsforheader('ITEM') 56 | ['ITEM_WEAPON', 'ITEM_TOY', 'ITEM_TOOL', 'ITEM_INSTRUMENT', 'ITEM_TRAPCOMP', 'ITEM_ARMOR', 'ITEM_AMMO', 'ITEM_SIEGEAMMO', 'ITEM_GLOVES', 'ITEM_SHOES', 'ITEM_SHIELD', 'ITEM_HELM', 'ITEM_PANTS', 'ITEM_FOOD'] 57 | >>> print raws.objects.objectsforheader('GRAPHICS') 58 | ['TILE_PAGE', 'CREATURE_GRAPHICS'] 59 | -------------------------------------------------------------------------------- /docs/examples/raws.queryableadd.txt: -------------------------------------------------------------------------------- 1 | raws.queryableadd.set 2 | raws.tokenparse.parsevariable 3 | 4 | >>> tokens = raws.parse('[PROPERTY_ONE:HI][PROPERTY_TWO:WORLD]') 5 | >>> settoken = tokens.set('PROPERTY_ONE:HELLO') 6 | >>> print tokens 7 | [PROPERTY_ONE:HELLO][PROPERTY_TWO:WORLD] 8 | >>> print settoken 9 | [PROPERTY_ONE:HELLO] 10 | >>> settoken = tokens.set('PROPERTY_TWO', 'WHIRL') 11 | >>> print tokens 12 | [PROPERTY_ONE:HELLO][PROPERTY_TWO:WHIRL] 13 | >>> settoken = tokens.set('PROPERTY_THREE:HOW DO YOU DO?') 14 | >>> print tokens 15 | [PROPERTY_ONE:HELLO][PROPERTY_TWO:WHIRL][PROPERTY_THREE:HOW DO YOU DO?] 16 | >>> settoken = tokens.set(value='PROPERTY_ONE', args=['HI', 'THERE']) 17 | >>> print tokens 18 | [PROPERTY_ONE:HI:THERE][PROPERTY_TWO:WHIRL][PROPERTY_THREE:HOW DO YOU DO?] 19 | 20 | --- 21 | 22 | raws.queryableadd.setall 23 | raws.tokenparse.parsevariable 24 | 25 | >>> tokens = raws.parse('[X:1][X:2][Y:3][Y:4]') 26 | >>> settokens = tokens.setall('Y', 5) 27 | >>> print tokens 28 | [X:1][X:2][Y:5][Y:5] 29 | >>> print settokens 30 | [Y:5][Y:5] 31 | -------------------------------------------------------------------------------- /docs/examples/raws.queryableaddprop.txt: -------------------------------------------------------------------------------- 1 | raws.queryableaddprop.addprop raws.queryableprop.allprop 2 | raws.queryableobj.getobj raws.queryable.list 3 | reset 4 | >>> stew = df.getobj('ITEM_FOOD:ITEM_FOOD_STEW') 5 | >>> print stew.allprop() 6 | [NAME:stew] 7 | [LEVEL:3] 8 | >>> stew.addprop('EXAMPLE:TOKEN') 9 | >>> print stew.allprop() 10 | [EXAMPLE:TOKEN] 11 | [NAME:stew] 12 | [LEVEL:3] 13 | >>> print stew.file.list() 14 | [OBJECT:ITEM] 15 | [ITEM_FOOD:ITEM_FOOD_BISCUITS] 16 | [NAME:biscuits] 17 | [LEVEL:2] 18 | [ITEM_FOOD:ITEM_FOOD_STEW][EXAMPLE:TOKEN] 19 | [NAME:stew] 20 | [LEVEL:3] 21 | [ITEM_FOOD:ITEM_FOOD_ROAST] 22 | [NAME:roast] 23 | [LEVEL:4] 24 | 25 | --- 26 | 27 | raws.queryableaddprop.setprop 28 | raws.queryableobj.getobj raws.queryableprop.allprop 29 | reset 30 | >>> stew = df.getobj('ITEM_FOOD:ITEM_FOOD_STEW') 31 | >>> print stew.allprop() 32 | [NAME:stew] 33 | [LEVEL:3] 34 | >>> stew.setprop('NAME:superior stew') 35 | >>> print stew.allprop() 36 | [NAME:superior stew] 37 | [LEVEL:3] 38 | >>> stew.setprop('NEW_PROP:example') 39 | >>> print stew.allprop() 40 | [NEW_PROP:example] 41 | [NAME:superior stew] 42 | [LEVEL:3] 43 | -------------------------------------------------------------------------------- /docs/examples/raws.queryableprop.txt: -------------------------------------------------------------------------------- 1 | raws.queryable.get raws.queryableprop.getprop 2 | raws.queryableobj.getobj 3 | 4 | >>> iron = df.getobj('INORGANIC:IRON') 5 | >>> print iron.get(exact_value='USE_MATERIAL_TEMPLATE') 6 | [USE_MATERIAL_TEMPLATE:METAL_TEMPLATE] 7 | >>> print iron.get('WAFERS') # Gets the WAFERS token that's a property of adamantite 8 | [WAFERS] 9 | >>> print iron.getprop('WAFERS') # Stops at the next INORGANIC token, doesn't pick up adamantine's WAFERS token 10 | None 11 | 12 | --- 13 | 14 | raws.queryable.last raws.queryableprop.lastprop 15 | raws.queryableobj.getobj 16 | 17 | >>> iron = df.getobj('INORGANIC:IRON') 18 | >>> print iron.last(re_value='ITEMS_.+') # Gets the property of adamantite, the last ITEMS_ token in the file 19 | [ITEMS_SOFT] 20 | >>> print iron.lastprop(re_value='ITEMS_.+') # Gets the last ITEMS_ token which belongs to iron 21 | [ITEMS_SCALED] 22 | 23 | --- 24 | 25 | raws.queryable.all raws.queryableprop.allprop 26 | raws.queryableobj.getobj raws.tokenlist.__len__ 27 | 28 | >>> hematite = df.getobj('INORGANIC:HEMATITE') 29 | >>> print len(hematite.all('ENVIRONMENT')) # Gets all ENVIRONMENT tokens following hematite 30 | 38 31 | >>> print hematite.allprop('ENVIRONMENT') # Gets only the ENVIRONMENT tokens belonging to hematite 32 | [ENVIRONMENT:SEDIMENTARY:VEIN:100] 33 | [ENVIRONMENT:IGNEOUS_EXTRUSIVE:VEIN:100] 34 | 35 | --- 36 | 37 | raws.queryableprop.allprop 38 | raws.queryableobj.getobj raws.queryable.list 39 | 40 | >>> biscuits = df.getobj('ITEM_FOOD:ITEM_FOOD_BISCUITS') 41 | >>> print biscuits.file.list() 42 | [OBJECT:ITEM] 43 | [ITEM_FOOD:ITEM_FOOD_BISCUITS] 44 | [NAME:biscuits] 45 | [LEVEL:2] 46 | [ITEM_FOOD:ITEM_FOOD_STEW] 47 | [NAME:stew] 48 | [LEVEL:3] 49 | [ITEM_FOOD:ITEM_FOOD_ROAST] 50 | [NAME:roast] 51 | [LEVEL:4] 52 | >>> print biscuits.allprop() 53 | [NAME:biscuits] 54 | [LEVEL:2] 55 | 56 | --- 57 | 58 | raws.queryableprop.removeprop 59 | raws.queryableobj.getobj raws.queryable.list 60 | reset 61 | >>> stew = df.getobj('ITEM_FOOD:ITEM_FOOD_STEW') 62 | >>> removed = stew.removeallprop() 63 | >>> print removed 64 | [NAME:stew] 65 | [LEVEL:3] 66 | >>> print stew.file.list() 67 | [OBJECT:ITEM] 68 | [ITEM_FOOD:ITEM_FOOD_BISCUITS] 69 | [NAME:biscuits] 70 | [LEVEL:2] 71 | [ITEM_FOOD:ITEM_FOOD_STEW] 72 | [ITEM_FOOD:ITEM_FOOD_ROAST] 73 | [NAME:roast] 74 | [LEVEL:4] 75 | -------------------------------------------------------------------------------- /docs/examples/raws.tokenparse.txt: -------------------------------------------------------------------------------- 1 | raws.tokenparse.parsevariable 2 | raws.tokenlist.__getitem__ 3 | 4 | >>> token = raws.parse('[HELLO:THERE]') # Same as raws.tokenparse.parsevariable 5 | >>> print token 6 | [HELLO:THERE] 7 | >>> tokens = raws.parse('[WHAT] a [BEAUTIFUL][DAY]') 8 | >>> print tokens 9 | [WHAT] a [BEAUTIFUL][DAY] 10 | >>> print tokens[0] 11 | [WHAT] 12 | >>> print tokens[1] 13 | [BEAUTIFUL] 14 | 15 | --- 16 | 17 | raws.tokenparse.parsevariable 18 | 19 | 20 | >>> token = raws.parsevariable('[SINGLE:TOKEN]') 21 | >>> tokens = raws.parsevariable('[TWO][TOKENS]') 22 | >>> print type(token) 23 | 24 | >>> print type(tokens) 25 | 26 | 27 | --- 28 | 29 | raws.tokenparse.parseplural raws.tokenparse.parsesingular 30 | 31 | 32 | >>> braces = '[EXAMPLE:TOKEN]' 33 | >>> nobraces = 'EXAMPLE:TOKEN' 34 | >>> multi = '[EXAMPLE:ONE][EXAMPLE:TWO][EXAMPLE:THREE]' 35 | >>> print raws.parseplural(braces) 36 | [EXAMPLE:TOKEN] 37 | >>> print raws.parseplural(multi) 38 | [EXAMPLE:ONE][EXAMPLE:TWO][EXAMPLE:THREE] 39 | >>> print raws.parseplural(nobraces) 40 | Traceback (most recent call last): 41 | File "", line 1, in 42 | File "raws/token.py", line 713, in parse 43 | raise ValueError('Failed to parse data string because it had no braces and because implicit was set to False.') 44 | ValueError: Failed to parse data string because it had no braces and because implicit was set to False. 45 | >>> print raws.parseplural(nobraces, implicit=True) 46 | [EXAMPLE:TOKEN] 47 | >>> print raws.parsesingular(braces) 48 | [EXAMPLE:TOKEN] 49 | >>> print raws.parsesingular(nobraces) 50 | [EXAMPLE:TOKEN] 51 | >>> print raws.parsesingular(multi) 52 | Traceback (most recent call last): 53 | File "", line 1, in 54 | File "raws/token.py", line 755, in parsesingular 55 | if failmulti and data.count('[') > 1: raise ValueError('Failed to parse token because there was more than one open bracket in the data string.') 56 | ValueError: Failed to parse token because there was more than one open bracket in the data string. 57 | >>> print raws.parsesingular(multi, failmulti=False) 58 | [EXAMPLE:ONE] 59 | -------------------------------------------------------------------------------- /docs/filemap.md: -------------------------------------------------------------------------------- 1 | # Map of PyDwarf's file structure 2 | 3 | - **PyDwarf** 4 | This is the root directory and everything else is inside it. 5 | 6 | - **docs** (You are here!) 7 | This directory contains documentation and scripts for automatically building or otherwise fucking around with documentation. 8 | 9 | - **bin** 10 | Contains stuff like a script to make html documentation from PyDwarf's docstrings, a script to generate a markdown file containing descriptions of each script registered with PyDwarf, and a script which actually runs those examples in `docs/examples/` to make sure all of them work like they're supposed to. 11 | 12 | - **config** 13 | Here you can find examples of PyDwarf configuration files in formats other than yaml. 14 | 15 | - **examples** 16 | This is where files containing various code examples and their outputs reside. Someday these examples will be automagically used in generated html documentation. 17 | 18 | - **images** 19 | Here are some images somehow related to PyDwarf, such as logos and a favicon. 20 | 21 | - **lib** 22 | PyDwarf uses some packages that aren't part of Python's standard libary. This is where those packages reside, because installing them on-demand would be hard. 23 | 24 | - **logs** 25 | Where log files will end up when PyDwarf starts generating them. (And it makes a lot of log files! If you're running PyDwarf frequently you might want to go in here and clean things up by deleting old logs every now and then.) 26 | 27 | - **pydwarf** 28 | PyDwarf relies on two packages written specifically for it, and this one is where code for loading configurations and registering scripts and running them and stuff of that nature makes its home. 29 | 30 | - **raws** 31 | This is the other package, and this one is for stuff like loading a Dwarf Fortress directory, parsing the files in it, and making them easily accessible to other scripts. Think of your Dwarf Fortress directory as a line drawing and the raws package as your crayons. 32 | 33 | - **scripts** 34 | Here's where PyDwarf looks for mods by default. Mods take the form of Python scripts with special names and function decorators that help PyDwarf know which files it needs to load and which ones aren't its business. This directory contains loads of subdirectories, each of which represents a different mod author and contains scripts for applying the mods they made. 35 | -------------------------------------------------------------------------------- /images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/images/favicon.png -------------------------------------------------------------------------------- /images/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/images/icon.ico -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/images/logo.png -------------------------------------------------------------------------------- /images/logo.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/images/logo.xcf -------------------------------------------------------------------------------- /images/logo_transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/images/logo_transparent.png -------------------------------------------------------------------------------- /images/terminal_example.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/images/terminal_example.gif -------------------------------------------------------------------------------- /lib/yaml/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2006 Kirill Simonov 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in 5 | the Software without restriction, including without limitation the rights to 6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 7 | of the Software, and to permit persons to whom the Software is furnished to do 8 | so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. 20 | -------------------------------------------------------------------------------- /lib/yaml/PKG-INFO: -------------------------------------------------------------------------------- 1 | Metadata-Version: 1.1 2 | Name: PyYAML 3 | Version: 3.11 4 | Summary: YAML parser and emitter for Python 5 | Home-page: http://pyyaml.org/wiki/PyYAML 6 | Author: Kirill Simonov 7 | Author-email: xi@resolvent.net 8 | License: MIT 9 | Download-URL: http://pyyaml.org/download/pyyaml/PyYAML-3.11.tar.gz 10 | Description: YAML is a data serialization format designed for human readability 11 | and interaction with scripting languages. PyYAML is a YAML parser 12 | and emitter for Python. 13 | 14 | PyYAML features a complete YAML 1.1 parser, Unicode support, pickle 15 | support, capable extension API, and sensible error messages. PyYAML 16 | supports standard YAML tags and provides Python-specific tags that 17 | allow to represent an arbitrary Python object. 18 | 19 | PyYAML is applicable for a broad range of tasks from complex 20 | configuration files to object serialization and persistance. 21 | Platform: Any 22 | Classifier: Development Status :: 5 - Production/Stable 23 | Classifier: Intended Audience :: Developers 24 | Classifier: License :: OSI Approved :: MIT License 25 | Classifier: Operating System :: OS Independent 26 | Classifier: Programming Language :: Python 27 | Classifier: Programming Language :: Python :: 2 28 | Classifier: Programming Language :: Python :: 2.5 29 | Classifier: Programming Language :: Python :: 2.6 30 | Classifier: Programming Language :: Python :: 2.7 31 | Classifier: Programming Language :: Python :: 3 32 | Classifier: Programming Language :: Python :: 3.0 33 | Classifier: Programming Language :: Python :: 3.1 34 | Classifier: Programming Language :: Python :: 3.2 35 | Classifier: Topic :: Software Development :: Libraries :: Python Modules 36 | Classifier: Topic :: Text Processing :: Markup 37 | -------------------------------------------------------------------------------- /lib/yaml/README: -------------------------------------------------------------------------------- 1 | PyYAML - The next generation YAML parser and emitter for Python. 2 | 3 | To install, type 'python setup.py install'. 4 | 5 | By default, the setup.py script checks whether LibYAML is installed 6 | and if so, builds and installs LibYAML bindings. To skip the check 7 | and force installation of LibYAML bindings, use the option '--with-libyaml': 8 | 'python setup.py --with-libyaml install'. To disable the check and 9 | skip building and installing LibYAML bindings, use '--without-libyaml': 10 | 'python setup.py --without-libyaml install'. 11 | 12 | When LibYAML bindings are installed, you may use fast LibYAML-based 13 | parser and emitter as follows: 14 | 15 | >>> yaml.load(stream, Loader=yaml.CLoader) 16 | >>> yaml.dump(data, Dumper=yaml.CDumper) 17 | 18 | PyYAML includes a comprehensive test suite. To run the tests, 19 | type 'python setup.py test'. 20 | 21 | For more information, check the PyYAML homepage: 22 | 'http://pyyaml.org/wiki/PyYAML'. 23 | 24 | For PyYAML tutorial and reference, see: 25 | 'http://pyyaml.org/wiki/PyYAMLDocumentation'. 26 | 27 | Post your questions and opinions to the YAML-Core mailing list: 28 | 'http://lists.sourceforge.net/lists/listinfo/yaml-core'. 29 | 30 | Submit bug reports and feature requests to the PyYAML bug tracker: 31 | 'http://pyyaml.org/newticket?component=pyyaml'. 32 | 33 | PyYAML is written by Kirill Simonov . It is released 34 | under the MIT license. See the file LICENSE for more details. 35 | 36 | -------------------------------------------------------------------------------- /lib/yaml/loader.py: -------------------------------------------------------------------------------- 1 | 2 | __all__ = ['BaseLoader', 'SafeLoader', 'Loader'] 3 | 4 | from reader import * 5 | from scanner import * 6 | from parser import * 7 | from composer import * 8 | from constructor import * 9 | from resolver import * 10 | 11 | class BaseLoader(Reader, Scanner, Parser, Composer, BaseConstructor, BaseResolver): 12 | 13 | def __init__(self, stream): 14 | Reader.__init__(self, stream) 15 | Scanner.__init__(self) 16 | Parser.__init__(self) 17 | Composer.__init__(self) 18 | BaseConstructor.__init__(self) 19 | BaseResolver.__init__(self) 20 | 21 | class SafeLoader(Reader, Scanner, Parser, Composer, SafeConstructor, Resolver): 22 | 23 | def __init__(self, stream): 24 | Reader.__init__(self, stream) 25 | Scanner.__init__(self) 26 | Parser.__init__(self) 27 | Composer.__init__(self) 28 | SafeConstructor.__init__(self) 29 | Resolver.__init__(self) 30 | 31 | class Loader(Reader, Scanner, Parser, Composer, Constructor, Resolver): 32 | 33 | def __init__(self, stream): 34 | Reader.__init__(self, stream) 35 | Scanner.__init__(self) 36 | Parser.__init__(self) 37 | Composer.__init__(self) 38 | Constructor.__init__(self) 39 | Resolver.__init__(self) 40 | 41 | -------------------------------------------------------------------------------- /lib/yaml/nodes.py: -------------------------------------------------------------------------------- 1 | 2 | class Node(object): 3 | def __init__(self, tag, value, start_mark, end_mark): 4 | self.tag = tag 5 | self.value = value 6 | self.start_mark = start_mark 7 | self.end_mark = end_mark 8 | def __repr__(self): 9 | value = self.value 10 | #if isinstance(value, list): 11 | # if len(value) == 0: 12 | # value = '' 13 | # elif len(value) == 1: 14 | # value = '<1 item>' 15 | # else: 16 | # value = '<%d items>' % len(value) 17 | #else: 18 | # if len(value) > 75: 19 | # value = repr(value[:70]+u' ... ') 20 | # else: 21 | # value = repr(value) 22 | value = repr(value) 23 | return '%s(tag=%r, value=%s)' % (self.__class__.__name__, self.tag, value) 24 | 25 | class ScalarNode(Node): 26 | id = 'scalar' 27 | def __init__(self, tag, value, 28 | start_mark=None, end_mark=None, style=None): 29 | self.tag = tag 30 | self.value = value 31 | self.start_mark = start_mark 32 | self.end_mark = end_mark 33 | self.style = style 34 | 35 | class CollectionNode(Node): 36 | def __init__(self, tag, value, 37 | start_mark=None, end_mark=None, flow_style=None): 38 | self.tag = tag 39 | self.value = value 40 | self.start_mark = start_mark 41 | self.end_mark = end_mark 42 | self.flow_style = flow_style 43 | 44 | class SequenceNode(CollectionNode): 45 | id = 'sequence' 46 | 47 | class MappingNode(CollectionNode): 48 | id = 'mapping' 49 | 50 | -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | PyDwarf is distributed under a zlib/libpng license. 2 | 3 | Copyright (c) 2017 Sophie Kirschner (sophiek@pineapplemachine.com) 4 | 5 | This software is provided 'as-is', without any express or implied 6 | warranty. In no event will the authors be held liable for any damages 7 | arising from the use of this software. 8 | 9 | Permission is granted to anyone to use this software for any purpose, 10 | including commercial applications, and to alter it and redistribute it 11 | freely, subject to the following restrictions: 12 | 13 | 1. The origin of this software must not be misrepresented; you must not 14 | claim that you wrote the original software. If you use this software 15 | in a product, an acknowledgement in the product documentation would be 16 | appreciated but is not required. 17 | 2. Altered source versions must be plainly marked as such, and must not be 18 | misrepresented as being the original software. 19 | 3. This notice may not be removed or altered from any source distribution. 20 | -------------------------------------------------------------------------------- /pydwarf/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | __author__ = 'Sophie Kirschner' 5 | __license__ = 'zlib/libpng' 6 | __email__ = 'sophiek@pineapplemachine.com' 7 | __version__ = '1.1.4' 8 | 9 | 10 | 11 | ''' 12 | 13 | The pydwarf package acts as a layer of abstraction over the raws package, providing functionality for mod management and application. 14 | 15 | pydwarf.log: A shared logging object. 16 | pydwarf.version: Utilities pertinent to handling Dwarf Fortress versions. 17 | pydwarf.response: PyDwarf expects plugins to return pydwarf.response objects. 18 | pydwarf.urist: A combined decorator and global repository for PyDwarf plugins. 19 | pydwarf.session: Ideally for use by a mod manager, abstracts the handling and execution of PyDwarf plugins. 20 | pydwarf.config: Provides an object to simplify config loading and application. 21 | pydwarf.helpers: Contains some miscellaneous utility functions. 22 | 23 | ''' 24 | 25 | 26 | 27 | import sys 28 | import os 29 | 30 | # Expose the packaged yaml dependency 31 | basedir = os.path.dirname(os.path.abspath(__file__)) + '/..' 32 | sys.path.append(basedir) 33 | sys.path.append(os.path.join(basedir, 'lib')) 34 | 35 | import logger 36 | import response 37 | import helpers 38 | import quick 39 | import urist 40 | import uristscript 41 | import registrar 42 | import session 43 | import config 44 | from version import * # TODO: do this better 45 | 46 | 47 | 48 | timestamp = logger.timestamp 49 | datetimeformat = logger.datetimeformat 50 | stdouthandler = logger.stdouthandler 51 | logfilehandler = logger.logfilehandler 52 | log = logger.log 53 | 54 | success = response.response.success 55 | failure = response.response.failure 56 | response = response.response 57 | 58 | df = quick.df 59 | quick = quick.quick 60 | 61 | rel = helpers.rel 62 | findfile = helpers.findfile 63 | 64 | urist = urist.urist 65 | uristscript = uristscript.uristscript 66 | registrar = registrar.registrar 67 | session = session.session 68 | config = config.config 69 | 70 | 71 | 72 | script = uristscript 73 | 74 | scripts = urist.registrar 75 | -------------------------------------------------------------------------------- /pydwarf/helpers.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | 5 | 6 | '''Provides helper functions for common tasks.''' 7 | 8 | 9 | 10 | import os 11 | from logger import log 12 | 13 | 14 | 15 | def rel(base, *parts): 16 | '''Get a path relative to the directory containing another.''' 17 | return os.path.join(os.path.dirname(base) if os.path.isfile(base) else base, *parts) 18 | 19 | 20 | 21 | def findfile(name, paths, recursion=6): 22 | '''Find a file given paths the file may be located in or near.''' 23 | log.debug('Looking for file %s.' % name) 24 | for path in paths: 25 | if path is not None: 26 | currentpath = path 27 | for i in xrange(0, recursion): 28 | if os.path.isdir(currentpath): 29 | log.debug('Checking path %s for file %s.' % (currentpath, name)) 30 | if name in os.listdir(currentpath): 31 | return os.path.join(currentpath, name) 32 | else: 33 | currentpath = os.path.dirname(currentpath) 34 | else: 35 | break 36 | return None 37 | -------------------------------------------------------------------------------- /pydwarf/logger.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | ''' 5 | Initialize a shared logger object. 6 | ''' 7 | 8 | import sys 9 | import logging 10 | from datetime import datetime 11 | 12 | log = logging.getLogger() 13 | 14 | log.setLevel(logging.DEBUG) 15 | 16 | datetimeformat = '%Y.%m.%d.%H.%M.%S' 17 | timestamp = datetime.now().strftime(datetimeformat) 18 | 19 | stdouthandler = logging.StreamHandler(sys.stdout) 20 | stdouthandler.setLevel(logging.DEBUG) 21 | stdouthandler.setFormatter(logging.Formatter('%(asctime)s: %(levelname)s: %(message)s', datetimeformat)) 22 | log.addHandler(stdouthandler) 23 | 24 | logfilehandler = logging.FileHandler.__new__(logging.FileHandler) # Constructor won't work without a filepath, so skip it for now 25 | logfilehandler.setLevel(logging.DEBUG) 26 | logfilehandler.setFormatter(logging.Formatter('%(asctime)s: %(filename)s[%(lineno)s]: %(levelname)s: %(message)s', datetimeformat)) 27 | -------------------------------------------------------------------------------- /pydwarf/quick.py: -------------------------------------------------------------------------------- 1 | def quick(raws, root=None, **kwargs): 2 | '''Quickly load a session object. Useful for testing.''' 3 | se = session.session() 4 | if root is not None: kwargs['root'] = root 5 | args = { 6 | 'input': 'df', 7 | 'paths': 'auto', 8 | 'version': 'auto', 9 | 'hackversion': 'auto', 10 | 'output': 'output/', 11 | 'backup': None, 12 | 'packages': 'scripts', 13 | 'verbose': True, 14 | 'log': '', 15 | } 16 | args.update(kwargs) 17 | se.load(raws, args=args) 18 | return se 19 | 20 | def df(*args, **kwargs): 21 | '''Quickly load a Dwarf Fortress directory. Useful for testing.''' 22 | se = quick(*args, **kwargs) 23 | return se.df 24 | 25 | 26 | 27 | import session 28 | -------------------------------------------------------------------------------- /pydwarf/response.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | 5 | 6 | class response(object): 7 | ''' 8 | Response object recognized by sessions as an item to be returned by 9 | registered scripts to report their termination status. 10 | ''' 11 | 12 | def __init__(self, success, status): 13 | '''Initialize a response object.''' 14 | self.success = success 15 | self.status = status 16 | 17 | def __str__(self): 18 | '''Get a string representation.''' 19 | return '%s: %s' % ( 20 | 'SUCCESS' if self.success else 'FAILURE', 21 | self.status if self.status else ( 22 | 'Ran %ssuccessfully.' % ('' if self.success else 'un') 23 | ) 24 | ) 25 | 26 | def __nonzero__(self): 27 | '''Return True if successful, False otherwise.''' 28 | return self.success 29 | 30 | @staticmethod 31 | def success(status=None): 32 | '''Initialize a successful response object.''' 33 | return response(True, status) 34 | 35 | @staticmethod 36 | def failure(status=None): 37 | '''Initialize a failed response object.''' 38 | return response(False, status) 39 | -------------------------------------------------------------------------------- /raws/binfile.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | import os 5 | 6 | import contentfile 7 | 8 | 9 | 10 | class binfile(contentfile.contentfile): 11 | ''' 12 | File class which is represented by a string containing its binary 13 | contents. Good for files which must have their content exposed or be 14 | manipulated but don't have their own specialized class. 15 | ''' 16 | 17 | def __init__(self, path=None, content=None, dir=None, **kwargs): 18 | '''Initialize a binfile object.''' 19 | self.dir = None 20 | self.setpath(path, **kwargs) 21 | self.dir = dir 22 | self.content = content 23 | if self.content is None and self.path is not None and os.path.isfile(self.path): self.read(self.path) 24 | self.kind = 'bin' 25 | 26 | def __len__(self): 27 | '''Get the length in bytes of the file's binary data string.''' 28 | return len(self.content) 29 | 30 | def __iadd__(self, content): 31 | '''Add to the end of the file's content string.''' 32 | self.add(content) 33 | return self 34 | 35 | def ref(self, **kwargs): 36 | raise ValueError('Failed to cast binfile %s to a reffile because it is an invalid conversion.' % self) 37 | def bin(self, **kwargs): 38 | for key, value in kwargs.iteritems(): self.__dict__[key] = value 39 | return self 40 | def raw(self, **kwargs): 41 | self.kind = 'raw' 42 | self.__class__ = rawfile.rawfile 43 | for key, value in kwargs.iteritems(): self.__dict__[key] = value 44 | self.read(content=self.content) 45 | return self 46 | 47 | def copy(self): 48 | '''Create a copy of the file.''' 49 | copy = binfile() 50 | copy.path = self.path 51 | copy.rootpath = self.rootpath 52 | copy.name = self.name 53 | copy.ext = self.ext 54 | copy.loc = self.loc 55 | copy.content = self.content 56 | return copy 57 | 58 | def add(self, content): 59 | '''Add to the end of the file's content string.''' 60 | if self.content is None: 61 | self.content = str(content) 62 | else: 63 | self.content += str(content) 64 | 65 | 66 | 67 | import rawfile 68 | -------------------------------------------------------------------------------- /raws/contentfile.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | import basefile 5 | 6 | 7 | 8 | class contentfile(basefile.basefile): 9 | '''Base class for file classes which can have their contents represented as a string.''' 10 | 11 | def __init__(self): 12 | self.content = None 13 | 14 | def getcontent(self): 15 | '''Get the file's content.''' 16 | return self.content 17 | 18 | def setcontent(self, content): 19 | '''Set the file's content.''' 20 | self.content = content 21 | 22 | def read(self, file=None): 23 | '''Read the file contents given a path or file-like object.''' 24 | if file is None: 25 | path = self.path 26 | elif isinstance(file, basestring): 27 | path = file 28 | else: 29 | self.setcontent(file.read()) 30 | with open(path, 'rb') as contentfile: 31 | self.setcontent(contentfile.read()) 32 | 33 | def write(self, file): 34 | '''Write the file contents to a path or file-like object.''' 35 | if file is None or isinstance(file, basestring): 36 | dest = self.dest(file, makedir=True) 37 | with open(dest, 'wb') as file: 38 | file.write(self.getcontent()) 39 | else: 40 | file.write(self.getcontent()) 41 | 42 | 43 | -------------------------------------------------------------------------------- /raws/copytree.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | import os 5 | import shutil 6 | 7 | # credit belongs to http://stackoverflow.com/a/13814557/3478907 8 | def copytree(src, dst, symlinks=False, ignore=None): 9 | if not os.path.exists(dst): 10 | os.makedirs(dst) 11 | for item in os.listdir(src): 12 | s = os.path.join(src, item) 13 | d = os.path.join(dst, item) 14 | if os.path.isdir(s): 15 | copytree(s, d, symlinks, ignore) 16 | else: 17 | if not os.path.exists(d) or os.stat(src).st_mtime - os.stat(dst).st_mtime > 1: 18 | shutil.copy2(s, d) 19 | -------------------------------------------------------------------------------- /raws/filefactory.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | import os 5 | 6 | import reffile 7 | import binfile 8 | import rawfile 9 | 10 | 11 | 12 | binnames = [ 13 | 'dfhack.init', 14 | 'dfhack.init-example', 15 | ] 16 | 17 | rawnames = [ 18 | 'init.txt', 19 | 'd_init.txt', 20 | 'colors.txt', 21 | 'interface.txt', 22 | 'announcements.txt', 23 | 'world_gen.txt', 24 | 'overrides.txt', 25 | ] 26 | 27 | 28 | 29 | def filefactory(path, log=None, **kwargs): # TODO: move this elsewhere and make it more easily configurable 30 | basename = os.path.basename(path) 31 | try: 32 | if basename.endswith('.txt'): 33 | with open(path, 'rb') as txt: 34 | if txt.readline().strip() == os.path.splitext(basename)[0]: 35 | txt.seek(0) 36 | return rawfile.rawfile(path=path, file=txt, **kwargs) 37 | elif basename in binnames: 38 | return binfile.binfile(path=path, **kwargs) 39 | elif basename in rawnames: 40 | return rawfile.rawfile(path=path, file=txt, **kwargs) 41 | 42 | except Exception as e: 43 | if log: 44 | log.warning('Failed to read file from path %s. Defauling to reading as a reffile, which should (hopefully) work despite.' % path) 45 | log.debug(traceback.format_exc()) 46 | 47 | return reffile.reffile(path=path, **kwargs) 48 | -------------------------------------------------------------------------------- /raws/queryableaddprop.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | import queryableadd 5 | import queryableprop 6 | 7 | 8 | 9 | class queryableaddprop(queryableadd.queryableadd, queryableprop.queryableprop): 10 | 11 | # Inheriting classes must implement a propterminationfilter method and an add method 12 | 13 | # TODO: move this into objects module or something 14 | add_props_before_default = tuple() 15 | add_props_after_default = ('COPY_TAGS_FROM',) 16 | add_props_before_after_default = (add_props_before_default, add_props_after_default) 17 | add_props_before_after = { 18 | 'CREATURE': ( 19 | add_props_before_default + ('CASTE', 'SELECT_CASTE', 'SELECT_MATERIAL', 'SELECT_TISSUE', 'SELECT_TISSUE_LAYER'), 20 | add_props_after_default + ('APPLY_CREATURE_VARIATION', 'APPLY_CURRENT_CREATURE_VARIATION', 'CV_REMOVE_TAG', 'CV_ADD_TAG', 'GO_TO_END', 'GO_TO_START', 'GO_TO_TAG'), 21 | ), 22 | 'INORGANIC': ( 23 | add_props_before_default, 24 | add_props_after_default + ('USE_MATERIAL_TEMPLATE',), 25 | ), 26 | } 27 | 28 | def addprop(self, *args, **kwargs): 29 | beforevalues, aftervalues = ( 30 | queryableaddprop.add_props_before_after.get( 31 | self.value, queryableaddprop.add_props_before_after_default 32 | ) 33 | ) 34 | addafter = self.lastprop(value_in=aftervalues, until_value_in=beforevalues) 35 | if addafter is None: addafter = self 36 | addafter.add(*args, **kwargs) 37 | 38 | def setprop(self, *args, **kwargs): 39 | self.setsingular(self.getprop, self.addprop, *args, **kwargs) 40 | 41 | def setlastprop(self, *args, **kwargs): 42 | self.setsingular(self.lastprop, self.addprop, *args, **kwargs) 43 | 44 | def setallprop(self, *args, **kwargs): 45 | self.setplural(self.allprop, *args, **kwargs) 46 | -------------------------------------------------------------------------------- /raws/queryableprop.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | import queryable 5 | 6 | 7 | 8 | class queryableprop(queryable.queryable): 9 | 10 | # Inheriting classes must implement a propterminationfilter method 11 | 12 | def getprop(self, *args, **kwargs): 13 | '''Get the first matching property belonging to an object.''' 14 | return self.propquery(self.get, *args, **kwargs) 15 | 16 | def lastprop(self, *args, **kwargs): 17 | '''Get the last matching property belonging to an object.''' 18 | return self.propquery(self.last, *args, **kwargs) 19 | 20 | def allprop(self, *args, **kwargs): 21 | '''Get all matching properties belonging to an object.''' 22 | return self.propquery(self.all, *args, **kwargs) 23 | 24 | def propquery(self, method, *args, **kwargs): 25 | '''Internal: Generalized prop query.''' 26 | return method(*args, prefilters=self.propterminationfilter(), **kwargs) 27 | 28 | def removeprop(self, *args, **kwargs): 29 | '''Remove the first property matching some filter.''' 30 | token = self.getprop(*args, **kwargs) 31 | if token is not None: token.remove() 32 | return token 33 | def removelastprop(self, *args, **kwargs): 34 | '''Remove the last property matching some filter.''' 35 | token = self.getlastprop(*args, **kwargs) 36 | if token is not None: token.remove() 37 | return token 38 | def removeallprop(self, *args, **kwargs): 39 | '''Remove all properties matching some filter.''' 40 | tokens = self.allprop(*args, **kwargs) 41 | for token in tokens: token.remove() 42 | return tokens 43 | -------------------------------------------------------------------------------- /raws/queryresult.py: -------------------------------------------------------------------------------- 1 | import queryable 2 | 3 | 4 | 5 | class queryresult(queryable.queryable): 6 | def __init__(self, source, results, resultiter=None): 7 | self.source = source 8 | self.results = results 9 | self.resultiter = results if resultiter is None else resultiter 10 | 11 | def __iter__(self): 12 | for result in self.resultiter: 13 | yield result 14 | 15 | def __getitem__(self, item): 16 | return self.results[item] 17 | 18 | def __len__(self): 19 | return sum(1 for i in self) 20 | 21 | def itokens(self, range=None): 22 | count = 0 23 | for result in self.resultiter: 24 | for token in result: 25 | if range is not None and range <= count: break 26 | yield token 27 | count += 1 28 | 29 | def each(self, *args, **kwargs): 30 | kwargs['output'] = kwargs.get('output', tokenlist.tokenlist) 31 | return queryable.queryable.each(self, *args, **kwargs) 32 | 33 | 34 | 35 | import tokenlist 36 | -------------------------------------------------------------------------------- /raws/reffile.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | import os 5 | import shutil 6 | 7 | import basefile 8 | 9 | 10 | 11 | class reffile(basefile.basefile): 12 | def __init__(self, path=None, dir=None, root=None, **kwargs): 13 | self.dir = dir 14 | self.setpath(path, root, **kwargs) 15 | self.kind = 'ref' 16 | 17 | def copy(self): 18 | copy = reffile() 19 | copy.path = self.path 20 | copy.rootpath = self.rootpath 21 | copy.name = self.name 22 | copy.ext = self.ext 23 | copy.loc = self.loc 24 | return copy 25 | 26 | def ref(self, **kwargs): 27 | for key, value in kwargs.iteritems(): self.__dict__[key] = value 28 | return self 29 | def bin(self, **kwargs): 30 | self.kind = 'bin' 31 | self.__class__ = binfile.binfile 32 | for key, value in kwargs.iteritems(): self.__dict__[key] = value 33 | self.read() 34 | return self 35 | def raw(self, **kwargs): 36 | self.kind = 'raw' 37 | self.__class__ = rawfile.rawfile 38 | for key, value in kwargs.iteritems(): self.__dict__[key] = value 39 | self.read() 40 | return self 41 | 42 | def write(self, path): 43 | dest = self.dest(path, makedir=True) 44 | if self.path != dest: 45 | if os.path.isfile(self.path): 46 | shutil.copy2(self.path, dest) 47 | elif os.path.isdir(self.path): 48 | copytree.copytree(self.path, dest) 49 | else: 50 | raise ValueError('Failed to write file because its path %s refers to neither a file nor a directory.' % self.path) 51 | 52 | 53 | 54 | import copytree 55 | import binfile 56 | import rawfile 57 | -------------------------------------------------------------------------------- /raws/tokengenerator.py: -------------------------------------------------------------------------------- 1 | import itertools 2 | 3 | import queryable 4 | 5 | 6 | 7 | class regenerator(object): 8 | ''' 9 | Wrapper object for generator functions which automatically recalls them 10 | upon repeated iterations. 11 | ''' 12 | 13 | def __init__(self, func, *args, **kwargs): 14 | ''' 15 | Create a new regenerator given a generator function and the 16 | arguments which should be passed to it. 17 | ''' 18 | self.func = func 19 | self.args = args 20 | self.kwargs = kwargs 21 | 22 | def __iter__(self): 23 | '''Create and return a new generator.''' 24 | for token in self.func(*self.args, **self.kwargs): 25 | yield token 26 | 27 | def __len__(self): 28 | '''Get the number of elements in the generator.''' 29 | return sum(1 for i in self) 30 | 31 | 32 | 33 | class tokengenerator(regenerator, queryable.queryable): 34 | ''' 35 | Wraps a generator containing token objects with helpful methods and the 36 | ability to iterate more than just once when desired. 37 | ''' 38 | 39 | def copy(self, shallow=False, *args, **kwargs): 40 | '''Make a copy of this tokengenerator.''' 41 | kwargs['iter'] = kwargs.get('iter', True) 42 | if shallow: 43 | return tokengenerator(self.func, *self.args, **self.kwargs) 44 | else: 45 | return helpers.copytokens(self, *args, **kwargs) 46 | 47 | def tokens(self, *args, **kwargs): 48 | '''Iterate through the generator's tokens.''' 49 | return self.itokens(*args, **kwargs) 50 | 51 | def itokens(self, range=None, until=None, step=None): 52 | '''Iterate through the generator's tokens.''' 53 | for index, token in enumerate(self): 54 | if (range is not None and index >= range) or (until is not None and token is until): 55 | break 56 | elif step is None or index % step == 0: 57 | yield token 58 | 59 | 60 | 61 | import tokenlist 62 | import helpers 63 | -------------------------------------------------------------------------------- /scripts/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | __author__ = 'Sophie Kirschner' 5 | __license__ = 'zlib/libpng' 6 | __email__ = 'sophiek@pineapplemachine.com' 7 | __version__ = '1.0.1' 8 | 9 | 10 | 11 | '''Recursively imports every PyDwarf script in this directory.''' 12 | 13 | 14 | 15 | import os 16 | import imp 17 | import pydwarf 18 | 19 | 20 | 21 | __all__ = [] 22 | 23 | for root, dirs, files in os.walk(os.path.dirname(os.path.realpath(__file__))): 24 | for filename in files: 25 | path = os.path.join(root, filename) 26 | modulename = '.'.join(os.path.basename(filename).split('.')[1:-1]) 27 | if filename.endswith('.py') and filename.startswith('pydwarf.'): 28 | try: 29 | with open(path, 'U') as modulefile: 30 | module = imp.load_module(modulename, modulefile, path, ('.py', 'U', imp.PY_SOURCE)) 31 | globals()[modulename] = module 32 | __all__.append(modulename) 33 | except: 34 | pydwarf.log.exception('Failed to load script from %s' % path) 35 | -------------------------------------------------------------------------------- /scripts/azerty/raw/agriculture/plant_castorbean_azerty.txt: -------------------------------------------------------------------------------- 1 | plant_castorbean_azerty 2 | 3 | [OBJECT:PLANT] 4 | 5 | [PLANT:CASTOR_OIL_PLANT_AZERTY] Ricinus communis (21:32 21/04/2016) I hope being able to 6 | [NAME:castorbean plant][NAME_PLURAL:castorbean plants][ADJ:castorbean plant] 7 | [USE_MATERIAL_TEMPLATE:STRUCTURAL:STRUCTURAL_PLANT_TEMPLATE] 8 | [BASIC_MAT:LOCAL_PLANT_MAT:STRUCTURAL] 9 | [DRY][BIOME:ALL_TROPICAL] 10 | [VALUE:2] 11 | [USE_MATERIAL_TEMPLATE:OIL:PLANT_OIL_TEMPLATE] 12 | [STATE_NAME_ADJ:ALL_SOLID:frozen castor oil] 13 | [STATE_NAME_ADJ:LIQUID:castor oil] 14 | [STATE_NAME_ADJ:GAS:boiling castor oil] 15 | [PREFIX:NONE] 16 | [MATERIAL_VALUE:5] 17 | [EDIBLE_COOKED] 18 | [USE_MATERIAL_TEMPLATE:SOAP:PLANT_SOAP_TEMPLATE] 19 | [STATE_NAME_ADJ:ALL_SOLID:castor oil soap] 20 | [STATE_NAME_ADJ:LIQUID:melted castor oil soap] 21 | [STATE_NAME_ADJ:GAS:n/a] 22 | [PREFIX:NONE] 23 | [MATERIAL_VALUE:5] 24 | [SPRING][SUMMER][AUTUMN][WINTER] 25 | [USE_MATERIAL_TEMPLATE:LEAF:LEAF_TEMPLATE] 26 | [STATE_COLOR:ALL:GREEN] 27 | [DISPLAY_COLOR:2:0:0] 28 | [USE_MATERIAL_TEMPLATE:FLOWER:FLOWER_TEMPLATE] 29 | [STATE_COLOR:ALL_SOLID:RED] 30 | [DISPLAY_COLOR:4:0:0] 31 | [USE_MATERIAL_TEMPLATE:SEED:SEED_TEMPLATE] 32 | [STATE_NAME_ADJ:ALL_SOLID:castor bean] 33 | [STATE_NAME_ADJ:SOLID_PASTE:castor bean paste] 34 | [STATE_NAME_ADJ:SOLID_PRESSED:castor bean press cake] 35 | [MATERIAL_VALUE:1] 36 | [EDIBLE_VERMIN] 37 | [MATERIAL_REACTION_PRODUCT:PRESS_LIQUID_MAT:LOCAL_PLANT_MAT:OIL] 38 | [PREFIX:NONE] 39 | [STOCKPILE_GLOB_PASTE] 40 | [STOCKPILE_GLOB_PRESSED] 41 | [SEED:castor bean:castor beans:0:0:1:LOCAL_PLANT_MAT:SEED] 42 | [FREQUENCY:50] 43 | [CLUSTERSIZE:5] 44 | [PREFSTRING:flowers] 45 | [PREFSTRING:poisonous beans] 46 | [GROWTH:LEAVES] 47 | [GROWTH_NAME:castor plant leaf:castor plant leaves] 48 | [GROWTH_ITEM:PLANT_GROWTH:NONE:LOCAL_PLANT_MAT:LEAF] 49 | [GROWTH_DENSITY:1000] 50 | [GROWTH_PRINT:0:6:2:0:0:ALL:1] 51 | [GROWTH:FLOWERS] 52 | [GROWTH_NAME:flax flower:STP] 53 | [GROWTH_ITEM:PLANT_GROWTH:NONE:LOCAL_PLANT_MAT:FLOWER] 54 | [GROWTH_DENSITY:1000] 55 | [GROWTH_TIMING:60000:119999] 56 | [GROWTH_PRINT:5:5:1:0:1:60000:119999:2] 57 | -------------------------------------------------------------------------------- /scripts/azerty/raw/agriculture/plant_madder_azerty.txt: -------------------------------------------------------------------------------- 1 | plant_madder_azerty 2 | 3 | [OBJECT:PLANT] 4 | 5 | [PLANT:MADDER_AZERTY] rubia tinctorum (18:30 25/04/2016) 6 | [NAME:dyer's madder][NAME_PLURAL:dyer's madders][ADJ:dyer's madder] 7 | [USE_MATERIAL_TEMPLATE:STRUCTURAL:STRUCTURAL_PLANT_TEMPLATE] 8 | [MATERIAL_VALUE:1] 9 | [MATERIAL_REACTION_PRODUCT:SEED_MAT:LOCAL_PLANT_MAT:SEED] 10 | [BASIC_MAT:LOCAL_PLANT_MAT:STRUCTURAL] 11 | [PICKED_TILE:231][PICKED_COLOR:0:0:1] 12 | [DRY][EVIL][BIOME:ANY_TEMPERATE] 13 | [USE_MATERIAL_TEMPLATE:MILL:PLANT_POWDER_TEMPLATE] 14 | [STATE_NAME_ADJ:ALL_SOLID:madder dye] 15 | [STATE_COLOR:ALL_SOLID:RED] 16 | [DISPLAY_COLOR:4:0:1] 17 | [MATERIAL_VALUE:20] 18 | [POWDER_DYE:RED] 19 | [PREFIX:NONE] 20 | [MILL:LOCAL_PLANT_MAT:MILL] 21 | [SPRING][SUMMER][AUTUMN][WINTER] 22 | [FREQUENCY:100] 23 | [CLUSTERSIZE:5] 24 | [PREFSTRING:intense red] 25 | [USE_MATERIAL_TEMPLATE:FLOWER:FLOWER_TEMPLATE] 26 | [STATE_COLOR:ALL:YELLOW] 27 | [DISPLAY_COLOR:6:0:1] 28 | [USE_MATERIAL_TEMPLATE:SEED:SEED_TEMPLATE] 29 | [EDIBLE_VERMIN] 30 | [EDIBLE_COOKED] 31 | [SEED:dyer's madder seed:dyer's madder seeds:4:0:1:LOCAL_PLANT_MAT:SEED] 32 | -------------------------------------------------------------------------------- /scripts/azerty/raw/agriculture/plant_rapeseed_azerty.txt: -------------------------------------------------------------------------------- 1 | plant_rapeseed_azerty 2 | 3 | [OBJECT:PLANT] 4 | 5 | [PLANT:RAPESEED_AZERTY] Brassica napus (19:05 21/04/2016) 6 | [NAME:rapeseed plant][NAME_PLURAL:rapeseed plants][ADJ:rapeseed plant] 7 | [USE_MATERIAL_TEMPLATE:STRUCTURAL:STRUCTURAL_PLANT_TEMPLATE] 8 | [MATERIAL_VALUE:2] 9 | [BASIC_MAT:LOCAL_PLANT_MAT:STRUCTURAL] 10 | [PICKED_TILE:232][PICKED_COLOR:4:0:1] 11 | [GROWDUR:500][VALUE:2] 12 | [USE_MATERIAL_TEMPLATE:FLOWER:FLOWER_TEMPLATE] 13 | [STATE_COLOR:ALL_SOLID:WHITE] 14 | [DISPLAY_COLOR:7:0:1] 15 | [USE_MATERIAL_TEMPLATE:OIL:PLANT_OIL_TEMPLATE] 16 | [STATE_NAME_ADJ:ALL_SOLID:frozen rapeseed oil] 17 | [STATE_NAME_ADJ:LIQUID:rapeseed oil] 18 | [STATE_NAME_ADJ:GAS:boiling rapeseed oil] 19 | [PREFIX:NONE] 20 | [MATERIAL_VALUE:5] 21 | [EDIBLE_COOKED] 22 | [USE_MATERIAL_TEMPLATE:SOAP:PLANT_SOAP_TEMPLATE] 23 | [STATE_NAME_ADJ:ALL_SOLID:rapeseed oil soap] 24 | [STATE_NAME_ADJ:LIQUID:melted rapeseed oil soap] 25 | [STATE_NAME_ADJ:GAS:n/a] 26 | [PREFIX:NONE] 27 | [MATERIAL_VALUE:5] 28 | [USE_MATERIAL_TEMPLATE:SEED:SEED_TEMPLATE] 29 | [STATE_NAME_ADJ:ALL_SOLID:rapeseed seed] 30 | [STATE_NAME_ADJ:SOLID_PASTE:rapeseed seed paste] 31 | [STATE_NAME_ADJ:SOLID_PRESSED:rapeseed seed press cake] 32 | [MATERIAL_VALUE:1] 33 | [EDIBLE_VERMIN] 34 | [MATERIAL_REACTION_PRODUCT:PRESS_LIQUID_MAT:LOCAL_PLANT_MAT:OIL] 35 | [PREFIX:NONE] 36 | [STOCKPILE_GLOB_PASTE] 37 | [STOCKPILE_GLOB_PRESSED] 38 | [SPRING][SUMMER] 39 | [CLUSTERSIZE:5] 40 | [PREFSTRING:yellow flowers] 41 | [WET] 42 | [BIOME:ANY_TEMPERATE] 43 | [GROWTH:SEED] 44 | [GROWTH_ITEM:PLANT_GROWTH:NONE:LOCAL_PLANT_MAT:SEED] 45 | [GROWTH_NAME:rapeseed seed:STP] 46 | [GROWTH:FLOWERS] 47 | [GROWTH_NAME:rapeseed flower:STP] 48 | [GROWTH_DENSITY:1000] 49 | [GROWTH_TIMING:60000:119999] 50 | [GROWTH_PRINT:5:5:6:0:1:60000:119999:2] 51 | [GROWTH:POD] 52 | [GROWTH_NAME:rapeseed pod:STP] 53 | [GROWTH_ITEM:PLANT_GROWTH:NONE:LOCAL_PLANT_MAT:FRUIT] 54 | [GROWTH_DENSITY:1] 55 | [GROWTH_TIMING:100000:200000] 56 | [GROWTH_TRUNK_HEIGHT_PERC:100:-1] 57 | [GROWTH_DROPS_OFF] 58 | [GROWTH_HAS_SEED] 59 | [GROWTH_PRINT:'%':7:6:0:0:100000:200000:3] 60 | -------------------------------------------------------------------------------- /scripts/azerty/raw/agriculture/plant_reaction_other_azerty.txt: -------------------------------------------------------------------------------- 1 | plant_reaction_other_azerty 2 | 3 | [OBJECT:REACTION] 4 | 5 | [REACTION:MILL_PLANT_PART_TO_POWDER] 6 | [NAME:mill plant part to powder] 7 | [BUILDING:QUERN:NONE] 8 | [BUILDING:MILLSTONE:NONE] 9 | [REAGENT:plant_growth:1:PLANT_GROWTH:NONE:NONE:NONE] 10 | [HAS_MATERIAL_REACTION_PRODUCT:MILL_PLANT_PART_POWDER] 11 | [REAGENT:bag:1:BOX:NONE:NONE:NONE] 12 | [EMPTY] 13 | [BAG] 14 | [PRESERVE_REAGENT] 15 | [DOES_NOT_DETERMINE_PRODUCT_AMOUNT] 16 | [PRODUCT:100:1:POWDER_MISC:NONE:GET_MATERIAL_FROM_REAGENT:plant_growth:NONE] 17 | [SKILL:MILLING] 18 | 19 | [REACTION:MILL_WOOD_TO_POWDER] (19:50 05/05/2016) 20 | [NAME:mill wood to powder] 21 | [BUILDING:QUERN:NONE] 22 | [BUILDING:MILLSTONE:NONE] 23 | [REAGENT:wood:1:WOOD:NONE:NONE:NONE] 24 | [HAS_MATERIAL_REACTION_PRODUCT:MILL_PLANT_PART_POWDER] 25 | [REAGENT:bag:1:BOX:NONE:NONE:NONE] 26 | [EMPTY] 27 | [BAG] 28 | [PRESERVE_REAGENT] 29 | [DOES_NOT_DETERMINE_PRODUCT_AMOUNT] 30 | [PRODUCT:100:1:POWDER_MISC:NONE:GET_MATERIAL_FROM_REAGENT:wood:NONE] 31 | [SKILL:MILLING] 32 | -------------------------------------------------------------------------------- /scripts/azerty/raw/agriculture/plant_sesame_azerty.txt: -------------------------------------------------------------------------------- 1 | plant_sesame_azerty 2 | 3 | [OBJECT:PLANT] 4 | 5 | [PLANT:SESAME_AZERTY] sesamum indicum (23:34 21/04/2016) 6 | [NAME:sesame plant][NAME_PLURAL:sesame plants][ADJ:sesame plant] 7 | [USE_MATERIAL_TEMPLATE:STRUCTURAL:STRUCTURAL_PLANT_TEMPLATE] 8 | [BASIC_MAT:LOCAL_PLANT_MAT:STRUCTURAL] 9 | [DRY][BIOME:ANY_TEMPERATE] 10 | [VALUE:2] 11 | [USE_MATERIAL_TEMPLATE:OIL:PLANT_OIL_TEMPLATE] 12 | [STATE_NAME_ADJ:ALL_SOLID:frozen sesame oil] 13 | [STATE_NAME_ADJ:LIQUID:sesame oil] 14 | [STATE_NAME_ADJ:GAS:boiling sesame oil] 15 | [PREFIX:NONE] 16 | [MATERIAL_VALUE:5] 17 | [EDIBLE_COOKED] 18 | [USE_MATERIAL_TEMPLATE:SOAP:PLANT_SOAP_TEMPLATE] 19 | [STATE_NAME_ADJ:ALL_SOLID:sesame oil soap] 20 | [STATE_NAME_ADJ:LIQUID:melted sesame oil soap] 21 | [STATE_NAME_ADJ:GAS:n/a] 22 | [PREFIX:NONE] 23 | [MATERIAL_VALUE:5] 24 | [SPRING][SUMMER][AUTUMN][WINTER] 25 | [USE_MATERIAL_TEMPLATE:LEAF:LEAF_TEMPLATE] 26 | [STATE_COLOR:ALL:GREEN] 27 | [DISPLAY_COLOR:2:0:0] 28 | [USE_MATERIAL_TEMPLATE:FLOWER:FLOWER_TEMPLATE] 29 | [STATE_COLOR:ALL:WHITE] 30 | [DISPLAY_COLOR:7:0:1] 31 | [USE_MATERIAL_TEMPLATE:SEED:SEED_TEMPLATE] 32 | [STATE_NAME_ADJ:ALL_SOLID:sesame seed] 33 | [STATE_NAME_ADJ:SOLID_PASTE:sesame seed paste] 34 | [STATE_NAME_ADJ:SOLID_PRESSED:sesame seed press cake] 35 | [MATERIAL_VALUE:1] 36 | [EDIBLE_VERMIN] 37 | [EDIBLE_RAW] 38 | [EDIBLE_COOKED] 39 | [MATERIAL_REACTION_PRODUCT:PRESS_LIQUID_MAT:LOCAL_PLANT_MAT:OIL] 40 | [PREFIX:NONE] 41 | [STOCKPILE_GLOB_PASTE] 42 | [STOCKPILE_GLOB_PRESSED] 43 | [SEED:sesame seed:sesame seeds:0:0:1:LOCAL_PLANT_MAT:SEED] 44 | [FREQUENCY:50] 45 | [CLUSTERSIZE:5] 46 | [PREFSTRING:leaves] 47 | [GROWTH:LEAVES] 48 | [GROWTH_NAME:sesame leaf:sesame leaves] 49 | [GROWTH_ITEM:PLANT_GROWTH:NONE:LOCAL_PLANT_MAT:LEAF] 50 | [GROWTH_DENSITY:1000] 51 | [GROWTH_PRINT:0:6:2:0:0:ALL:1] 52 | -------------------------------------------------------------------------------- /scripts/azerty/raw/agriculture/plant_sugarcane_azerty.txt: -------------------------------------------------------------------------------- 1 | plant_sugarcane_azerty 2 | 3 | [OBJECT:PLANT] 4 | 5 | [PLANT:SUGARCANE_AZERTY] 6 | [NAME:sugarcane][NAME_PLURAL:sugarcanes][ADJ:sugar cane] Saccharum officinarum 7 | [USE_MATERIAL_TEMPLATE:STRUCTURAL:STRUCTURAL_PLANT_TEMPLATE] 8 | [MATERIAL_VALUE:2] 9 | [BASIC_MAT:LOCAL_PLANT_MAT:STRUCTURAL] 10 | [PICKED_TILE:232][PICKED_COLOR:4:0:1] 11 | [GROWDUR:500][VALUE:2] 12 | [USE_MATERIAL_TEMPLATE:DRINK:PLANT_ALCOHOL_TEMPLATE] 13 | [STATE_NAME_ADJ:ALL_SOLID:frozen rum] 14 | [STATE_NAME_ADJ:LIQUID:rum] 15 | [STATE_NAME_ADJ:GAS:boiling rum] 16 | [MATERIAL_VALUE:2] 17 | [DISPLAY_COLOR:5:0:1] 18 | [EDIBLE_RAW] 19 | [EDIBLE_COOKED] 20 | [PREFIX:NONE] 21 | [DRINK:LOCAL_PLANT_MAT:DRINK] 22 | [USE_MATERIAL_TEMPLATE:MILL:PLANT_POWDER_TEMPLATE] 23 | [STATE_NAME_ADJ:ALL_SOLID:sugarcane sugar] 24 | [STATE_COLOR:ALL_SOLID:WHITE] 25 | [DISPLAY_COLOR:6:0:0] 26 | [MATERIAL_VALUE:20] 27 | [EDIBLE_VERMIN] 28 | [EDIBLE_RAW] 29 | [EDIBLE_COOKED] 30 | [MILL:LOCAL_PLANT_MAT:MILL] 31 | [USE_MATERIAL_TEMPLATE:EXTRACT:PLANT_EXTRACT_TEMPLATE] 32 | [STATE_NAME_ADJ:ALL_SOLID:frozen sugarcane syrup] 33 | [STATE_NAME_ADJ:LIQUID:sugarcane syrup] 34 | [STATE_NAME_ADJ:GAS:boiling sugarcane syrup] 35 | [MATERIAL_VALUE:20] 36 | [DISPLAY_COLOR:6:0:0] 37 | [EDIBLE_RAW] 38 | [EDIBLE_COOKED] 39 | [EXTRACT_STORAGE:BARREL] 40 | [PREFIX:NONE] 41 | [EXTRACT_BARREL:LOCAL_PLANT_MAT:EXTRACT] 42 | [USE_MATERIAL_TEMPLATE:SEED:SEED_TEMPLATE] 43 | [MATERIAL_VALUE:1] 44 | [EDIBLE_VERMIN] 45 | [SEED:sugarcane seed:sugarcane seeds:2:0:1:LOCAL_PLANT_MAT:SEED] 46 | [SPRING][SUMMER] 47 | [CLUSTERSIZE:5] 48 | [PREFSTRING:sugar production] 49 | [PREFSTRING:long form] 50 | [PREFSTRING:sweet taste] 51 | [WET] 52 | [BIOME:ANY_TROPICAL_WETLAND] 53 | [BIOME:ANY_TEMPERATE_WETLAND] 54 | -------------------------------------------------------------------------------- /scripts/azerty/raw/agriculture/plant_weld_azerty.txt: -------------------------------------------------------------------------------- 1 | plant_weld_azerty 2 | 3 | [OBJECT:PLANT] 4 | 5 | [PLANT:WELD_PLANT_AZERTY] reseda luteola (22:15 25/04/2016) 6 | [NAME:dyer's rocket][NAME_PLURAL:dyer's rockets][ADJ:dyer's rocket] 7 | [USE_MATERIAL_TEMPLATE:STRUCTURAL:STRUCTURAL_PLANT_TEMPLATE] 8 | [MATERIAL_REACTION_PRODUCT:SEED_MAT:LOCAL_PLANT_MAT:SEED] 9 | [BASIC_MAT:LOCAL_PLANT_MAT:STRUCTURAL] 10 | [DRY][BIOME:GRASSLAND_TEMPERATE] 11 | [VALUE:2] 12 | [USE_MATERIAL_TEMPLATE:MILL:PLANT_POWDER_TEMPLATE] 13 | [STATE_NAME_ADJ:ALL_SOLID:weld dye] 14 | [STATE_COLOR:ALL_SOLID:YELLOW] 15 | [DISPLAY_COLOR:6:0:1] 16 | [MATERIAL_VALUE:20] 17 | [POWDER_DYE:YELLOW] 18 | [PREFIX:NONE] 19 | [MILL:LOCAL_PLANT_MAT:MILL] 20 | [SPRING][DRY] 21 | [USE_MATERIAL_TEMPLATE:LEAF:LEAF_TEMPLATE] 22 | [STATE_COLOR:ALL:GREEN] 23 | [DISPLAY_COLOR:2:0:0] 24 | [EDIBLE_RAW] 25 | [EDIBLE_COOKED] 26 | [USE_MATERIAL_TEMPLATE:FLOWER:FLOWER_TEMPLATE] 27 | [STATE_COLOR:ALL_SOLID:GREEN] 28 | [DISPLAY_COLOR:2:0:0] 29 | [USE_MATERIAL_TEMPLATE:SEED:SEED_TEMPLATE] 30 | [STATE_NAME_ADJ:ALL_SOLID:dyer's rocket seed] 31 | [MATERIAL_VALUE:1] 32 | [EDIBLE_VERMIN] 33 | [PREFIX:NONE] 34 | [SEED:dyer's rocket seed:dyer's rocket seeds:0:0:1:LOCAL_PLANT_MAT:SEED] 35 | [FREQUENCY:50] 36 | [CLUSTERSIZE:5] 37 | [PREFSTRING:yellow flowers] 38 | [GROWTH:LEAVES] 39 | [GROWTH_NAME:dyer's rocket leaf:dyer's rocket leaves] 40 | [GROWTH_ITEM:PLANT_GROWTH:NONE:LOCAL_PLANT_MAT:LEAF] 41 | [GROWTH_DENSITY:1000] 42 | [GROWTH_PRINT:0:6:2:0:0:ALL:1] 43 | [GROWTH:FLOWERS] 44 | [GROWTH_NAME:dyer's rocket flower:STP] 45 | [GROWTH_ITEM:PLANT_GROWTH:NONE:LOCAL_PLANT_MAT:FLOWER] 46 | [GROWTH_DENSITY:1000] 47 | [GROWTH_TIMING:60000:119999] 48 | [GROWTH_PRINT:5:5:1:0:1:60000:119999:2] 49 | -------------------------------------------------------------------------------- /scripts/azerty/raw/agriculture/plant_woad_azerty.txt: -------------------------------------------------------------------------------- 1 | plant_woad_azerty 2 | 3 | [OBJECT:PLANT] 4 | 5 | [PLANT:WOAD_PLANT_AZERTY] isatis tinctoria (22:15 25/04/2016) 6 | [NAME:dyer's woad][NAME_PLURAL:dyer's woads][ADJ:dyer's woad] 7 | [USE_MATERIAL_TEMPLATE:STRUCTURAL:STRUCTURAL_PLANT_TEMPLATE] 8 | [MATERIAL_REACTION_PRODUCT:SEED_MAT:LOCAL_PLANT_MAT:SEED] 9 | [BASIC_MAT:LOCAL_PLANT_MAT:STRUCTURAL] 10 | [DRY][BIOME:GRASSLAND_TEMPERATE] 11 | [VALUE:2] 12 | [USE_MATERIAL_TEMPLATE:MILL:PLANT_POWDER_TEMPLATE] 13 | [STATE_NAME_ADJ:ALL_SOLID:woad dye] 14 | [STATE_COLOR:ALL_SOLID:PALE_BLUE] 15 | [DISPLAY_COLOR:3:0:0] 16 | [MATERIAL_VALUE:20] 17 | [POWDER_DYE:PALE_BLUE] 18 | [PREFIX:NONE] 19 | [MILL:LOCAL_PLANT_MAT:MILL] 20 | [SPRING][DRY] 21 | [USE_MATERIAL_TEMPLATE:LEAF:LEAF_TEMPLATE] 22 | [STATE_COLOR:ALL:GREEN] 23 | [DISPLAY_COLOR:2:0:0] 24 | [EDIBLE_RAW] 25 | [EDIBLE_COOKED] 26 | [USE_MATERIAL_TEMPLATE:FLOWER:FLOWER_TEMPLATE] 27 | [STATE_COLOR:ALL_SOLID:YELLOW] 28 | [DISPLAY_COLOR:6:0:1] 29 | [USE_MATERIAL_TEMPLATE:SEED:SEED_TEMPLATE] 30 | [STATE_NAME_ADJ:ALL_SOLID:dyer's woad seed] 31 | [MATERIAL_VALUE:1] 32 | [EDIBLE_VERMIN] 33 | [PREFIX:NONE] 34 | [SEED:dyer's woad seed:dyer's woad seeds:0:0:1:LOCAL_PLANT_MAT:SEED] 35 | [FREQUENCY:50] 36 | [CLUSTERSIZE:5] 37 | [PREFSTRING:yellow flowers] 38 | [GROWTH:LEAVES] 39 | [GROWTH_NAME:dyer's woad leaf:dyer's woad leaves] 40 | [GROWTH_ITEM:PLANT_GROWTH:NONE:LOCAL_PLANT_MAT:LEAF] 41 | [GROWTH_DENSITY:1000] 42 | [GROWTH_PRINT:0:6:2:0:0:ALL:1] 43 | [GROWTH:FLOWERS] 44 | [GROWTH_NAME:dyer's woad flower:STP] 45 | [GROWTH_ITEM:PLANT_GROWTH:NONE:LOCAL_PLANT_MAT:FLOWER] 46 | [GROWTH_DENSITY:1000] 47 | [GROWTH_TIMING:60000:119999] 48 | [GROWTH_PRINT:5:5:1:0:1:60000:119999:2] 49 | -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/24x24/_overrides_constructed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/24x24/_overrides_constructed.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/24x24/_overrides_feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/24x24/_overrides_feature.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/24x24/_overrides_frozen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/24x24/_overrides_frozen.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/24x24/_overrides_items.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/24x24/_overrides_items.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/24x24/_overrides_lava.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/24x24/_overrides_lava.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/24x24/_overrides_mineral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/24x24/_overrides_mineral.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/24x24/_overrides_plants.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/24x24/_overrides_plants.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/24x24/_overrides_soil_misc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/24x24/_overrides_soil_misc.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/24x24/_overrides_stone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/24x24/_overrides_stone.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/24x24/_overrides_tree_cap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/24x24/_overrides_tree_cap.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/24x24/gemset_curses_1280x600.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/24x24/gemset_curses_1280x600.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/24x24/gemset_map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/24x24/gemset_map.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/24x24/mouse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/24x24/mouse.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/24x24/shadows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/24x24/shadows.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/48x48/_overrides_constructed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/48x48/_overrides_constructed.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/48x48/_overrides_feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/48x48/_overrides_feature.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/48x48/_overrides_frozen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/48x48/_overrides_frozen.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/48x48/_overrides_items.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/48x48/_overrides_items.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/48x48/_overrides_lava.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/48x48/_overrides_lava.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/48x48/_overrides_mineral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/48x48/_overrides_mineral.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/48x48/_overrides_plants.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/48x48/_overrides_plants.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/48x48/_overrides_soil_misc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/48x48/_overrides_soil_misc.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/48x48/_overrides_stone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/48x48/_overrides_stone.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/48x48/_overrides_tree_cap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/48x48/_overrides_tree_cap.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/48x48/gemset_curses_2560x1200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/48x48/gemset_curses_2560x1200.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/48x48/gemset_map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/48x48/gemset_map.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/48x48/mouse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/48x48/mouse.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/art/48x48/shadows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/data/art/48x48/shadows.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/data/init/colors.txt: -------------------------------------------------------------------------------- 1 | [BLACK_R:0] 2 | [BLACK_G:0] 3 | [BLACK_B:0] 4 | [BLUE_R:0] 5 | [BLUE_G:0] 6 | [BLUE_B:128] 7 | [GREEN_R:0] 8 | [GREEN_G:128] 9 | [GREEN_B:0] 10 | [CYAN_R:0] 11 | [CYAN_G:128] 12 | [CYAN_B:128] 13 | [RED_R:128] 14 | [RED_G:0] 15 | [RED_B:0] 16 | [MAGENTA_R:128] 17 | [MAGENTA_G:0] 18 | [MAGENTA_B:128] 19 | [BROWN_R:128] 20 | [BROWN_G:128] 21 | [BROWN_B:0] 22 | [LGRAY_R:192] 23 | [LGRAY_G:192] 24 | [LGRAY_B:192] 25 | [DGRAY_R:128] 26 | [DGRAY_G:128] 27 | [DGRAY_B:128] 28 | [LBLUE_R:0] 29 | [LBLUE_G:0] 30 | [LBLUE_B:255] 31 | [LGREEN_R:0] 32 | [LGREEN_G:255] 33 | [LGREEN_B:0] 34 | [LCYAN_R:0] 35 | [LCYAN_G:255] 36 | [LCYAN_B:255] 37 | [LRED_R:255] 38 | [LRED_G:0] 39 | [LRED_B:0] 40 | [LMAGENTA_R:255] 41 | [LMAGENTA_G:0] 42 | [LMAGENTA_B:255] 43 | [YELLOW_R:255] 44 | [YELLOW_G:255] 45 | [YELLOW_B:0] 46 | [WHITE_R:255] 47 | [WHITE_G:255] 48 | [WHITE_B:255] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": "DragonDePlatino", 3 | "content_version": "1.32", 4 | "df_min_version": "0.40.24", 5 | "df_max_version": "", 6 | "title": "GemSet 24px", 7 | "tooltip": "Colorful, sharp, and crystal-clear." 8 | } -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/amphibians.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/amphibians.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/annelids.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/annelids.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/birds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/birds.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/birds_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/birds_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/bug_slug_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/bug_slug_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/desert_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/desert_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/domestic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/domestic.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/dwarves.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/dwarves.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/elves.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/elves.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/equipment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/equipment.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/fanciful.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/fanciful.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/goblins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/goblins.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/graphics_amphibians.txt: -------------------------------------------------------------------------------- 1 | graphics_amphibians 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:AMPHIBIANS] 6 | [FILE:amphibians.png] 7 | [TILE_DIM:24:24] 8 | [PAGE_DIM:3:2] 9 | 10 | [CREATURE_GRAPHICS:TOAD] 11 | [DEFAULT:AMPHIBIANS:0:0:AS_IS:DEFAULT] 12 | [CHILD:AMPHIBIANS:1:0:AS_IS:DEFAULT] 13 | [ANIMATED:AMPHIBIANS:2:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:AMPHIBIANS:0:1:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:AMPHIBIANS:1:1:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/graphics_annelids.txt: -------------------------------------------------------------------------------- 1 | graphics_annelids 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:ANNELIDS] 6 | [FILE:annelids.png] 7 | [TILE_DIM:24:24] 8 | [PAGE_DIM:3:2] 9 | 10 | [CREATURE_GRAPHICS:WORM] 11 | [DEFAULT:ANNELIDS:0:0:AS_IS:DEFAULT] 12 | [CHILD:ANNELIDS:1:0:AS_IS:DEFAULT] 13 | [ANIMATED:ANNELIDS:2:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:ANNELIDS:0:1:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:ANNELIDS:1:1:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/graphics_equipment.txt: -------------------------------------------------------------------------------- 1 | graphics_equipment 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:EQUIPMENT] 6 | [FILE:equipment.png] 7 | [TILE_DIM:24:24] 8 | [PAGE_DIM:1:1] 9 | 10 | [CREATURE_GRAPHICS:EQUIPMENT_WAGON] 11 | [DEFAULT:EQUIPMENT:0:0:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/graphics_fanciful.txt: -------------------------------------------------------------------------------- 1 | graphics_fanciful 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:FANCIFUL] 6 | [FILE:fanciful.png] 7 | [TILE_DIM:24:24] 8 | [PAGE_DIM:6:4] 9 | 10 | [CREATURE_GRAPHICS:CHIMERA] 11 | [DEFAULT:FANCIFUL:0:0:AS_IS:DEFAULT] 12 | [CHILD:FANCIFUL:2:0:AS_IS:DEFAULT] 13 | [ANIMATED:FANCIFUL:4:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:FANCIFUL:0:2:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:FANCIFUL:2:2:AS_IS:DEFAULT] 16 | 17 | [CREATURE_GRAPHICS:CENTAUR] 18 | [DEFAULT:FANCIFUL:1:0:AS_IS:DEFAULT] 19 | [CHILD:FANCIFUL:3:0:AS_IS:DEFAULT] 20 | [ANIMATED:FANCIFUL:5:0:AS_IS:DEFAULT] 21 | [TRAINED_WAR:FANCIFUL:1:2:AS_IS:DEFAULT] 22 | [TRAINED_HUNTER:FANCIFUL:3:2:AS_IS:DEFAULT] 23 | 24 | [CREATURE_GRAPHICS:GRIFFON] 25 | [DEFAULT:FANCIFUL:0:1:AS_IS:DEFAULT] 26 | [CHILD:FANCIFUL:2:1:AS_IS:DEFAULT] 27 | [ANIMATED:FANCIFUL:4:1:AS_IS:DEFAULT] 28 | [TRAINED_WAR:FANCIFUL:0:3:AS_IS:DEFAULT] 29 | [TRAINED_HUNTER:FANCIFUL:2:3:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/graphics_large_mountain.txt: -------------------------------------------------------------------------------- 1 | graphics_large_mountain 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:LARGE_MOUNTAIN] 6 | [FILE:large_mountain.png] 7 | [TILE_DIM:24:24] 8 | [PAGE_DIM:6:4] 9 | 10 | [CREATURE_GRAPHICS:GOAT_MOUNTAIN] 11 | [DEFAULT:LARGE_MOUNTAIN:0:0:AS_IS:DEFAULT] 12 | [CHILD:LARGE_MOUNTAIN:2:0:AS_IS:DEFAULT] 13 | [ANIMATED:LARGE_MOUNTAIN:4:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:LARGE_MOUNTAIN:0:2:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:LARGE_MOUNTAIN:2:2:AS_IS:DEFAULT] 16 | 17 | [CREATURE_GRAPHICS:MARMOT_HOARY] 18 | [DEFAULT:LARGE_MOUNTAIN:1:0:AS_IS:DEFAULT] 19 | [CHILD:LARGE_MOUNTAIN:3:0:AS_IS:DEFAULT] 20 | [ANIMATED:LARGE_MOUNTAIN:5:0:AS_IS:DEFAULT] 21 | [TRAINED_WAR:LARGE_MOUNTAIN:1:2:AS_IS:DEFAULT] 22 | [TRAINED_HUNTER:LARGE_MOUNTAIN:3:2:AS_IS:DEFAULT] 23 | 24 | [CREATURE_GRAPHICS:GNOME_MOUNTAIN] 25 | [DEFAULT:LARGE_MOUNTAIN:0:1:AS_IS:DEFAULT] 26 | [CHILD:LARGE_MOUNTAIN:2:1:AS_IS:DEFAULT] 27 | [ANIMATED:LARGE_MOUNTAIN:4:1:AS_IS:DEFAULT] 28 | [TRAINED_WAR:LARGE_MOUNTAIN:0:3:AS_IS:DEFAULT] 29 | [TRAINED_HUNTER:LARGE_MOUNTAIN:2:3:AS_IS:DEFAULT] 30 | 31 | [CREATURE_GRAPHICS:GNOME_DARK] 32 | [DEFAULT:LARGE_MOUNTAIN:1:1:AS_IS:DEFAULT] 33 | [CHILD:LARGE_MOUNTAIN:3:1:AS_IS:DEFAULT] 34 | [ANIMATED:LARGE_MOUNTAIN:5:1:AS_IS:DEFAULT] 35 | [TRAINED_WAR:LARGE_MOUNTAIN:1:3:AS_IS:DEFAULT] 36 | [TRAINED_HUNTER:LARGE_MOUNTAIN:3:3:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/graphics_large_tundra.txt: -------------------------------------------------------------------------------- 1 | graphics_large_tundra 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:LARGE_TUNDRA] 6 | [FILE:large_tundra.png] 7 | [TILE_DIM:24:24] 8 | [PAGE_DIM:6:4] 9 | 10 | [CREATURE_GRAPHICS:MUSKOX] 11 | [DEFAULT:LARGE_TUNDRA:0:0:AS_IS:DEFAULT] 12 | [CHILD:LARGE_TUNDRA:2:0:AS_IS:DEFAULT] 13 | [ANIMATED:LARGE_TUNDRA:4:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:LARGE_TUNDRA:0:2:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:LARGE_TUNDRA:2:2:AS_IS:DEFAULT] 16 | 17 | [CREATURE_GRAPHICS:ELK] 18 | [DEFAULT:LARGE_TUNDRA:1:0:AS_IS:DEFAULT] 19 | [CHILD:LARGE_TUNDRA:3:0:AS_IS:DEFAULT] 20 | [ANIMATED:LARGE_TUNDRA:5:0:AS_IS:DEFAULT] 21 | [TRAINED_WAR:LARGE_TUNDRA:1:2:AS_IS:DEFAULT] 22 | [TRAINED_HUNTER:LARGE_TUNDRA:3:2:AS_IS:DEFAULT] 23 | 24 | [CREATURE_GRAPHICS:BEAR_POLAR] 25 | [DEFAULT:LARGE_TUNDRA:0:1:AS_IS:DEFAULT] 26 | [CHILD:LARGE_TUNDRA:2:1:AS_IS:DEFAULT] 27 | [ANIMATED:LARGE_TUNDRA:4:1:AS_IS:DEFAULT] 28 | [TRAINED_WAR:LARGE_TUNDRA:0:3:AS_IS:DEFAULT] 29 | [TRAINED_HUNTER:LARGE_TUNDRA:2:3:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/graphics_mountain_new.txt: -------------------------------------------------------------------------------- 1 | graphics_mountain_new 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:MOUNTAIN_NEW] 6 | [FILE:mountain_new.png] 7 | [TILE_DIM:24:24] 8 | [PAGE_DIM:9:4] 9 | 10 | [CREATURE_GRAPHICS:WOLVERINE] 11 | [DEFAULT:MOUNTAIN_NEW:0:0:AS_IS:DEFAULT] 12 | [CHILD:MOUNTAIN_NEW:3:0:AS_IS:DEFAULT] 13 | [ANIMATED:MOUNTAIN_NEW:6:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:MOUNTAIN_NEW:0:2:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:MOUNTAIN_NEW:3:2:AS_IS:DEFAULT] 16 | 17 | [CREATURE_GRAPHICS:WOLVERINE_MAN] 18 | [DEFAULT:MOUNTAIN_NEW:1:0:AS_IS:DEFAULT] 19 | [CHILD:MOUNTAIN_NEW:4:0:AS_IS:DEFAULT] 20 | [ANIMATED:MOUNTAIN_NEW:7:0:AS_IS:DEFAULT] 21 | [TRAINED_WAR:MOUNTAIN_NEW:1:2:AS_IS:DEFAULT] 22 | [TRAINED_HUNTER:MOUNTAIN_NEW:4:2:AS_IS:DEFAULT] 23 | 24 | [CREATURE_GRAPHICS:GIANT_WOLVERINE] 25 | [DEFAULT:MOUNTAIN_NEW:2:0:AS_IS:DEFAULT] 26 | [CHILD:MOUNTAIN_NEW:5:0:AS_IS:DEFAULT] 27 | [ANIMATED:MOUNTAIN_NEW:8:0:AS_IS:DEFAULT] 28 | [TRAINED_WAR:MOUNTAIN_NEW:2:2:AS_IS:DEFAULT] 29 | [TRAINED_HUNTER:MOUNTAIN_NEW:5:2:AS_IS:DEFAULT] 30 | 31 | [CREATURE_GRAPHICS:CHINCHILLA] 32 | [DEFAULT:MOUNTAIN_NEW:0:1:AS_IS:DEFAULT] 33 | [CHILD:MOUNTAIN_NEW:3:1:AS_IS:DEFAULT] 34 | [ANIMATED:MOUNTAIN_NEW:6:1:AS_IS:DEFAULT] 35 | [TRAINED_WAR:MOUNTAIN_NEW:0:3:AS_IS:DEFAULT] 36 | [TRAINED_HUNTER:MOUNTAIN_NEW:3:3:AS_IS:DEFAULT] 37 | 38 | [CREATURE_GRAPHICS:CHINCHILLA_MAN] 39 | [DEFAULT:MOUNTAIN_NEW:1:1:AS_IS:DEFAULT] 40 | [CHILD:MOUNTAIN_NEW:4:1:AS_IS:DEFAULT] 41 | [ANIMATED:MOUNTAIN_NEW:7:1:AS_IS:DEFAULT] 42 | [TRAINED_WAR:MOUNTAIN_NEW:1:3:AS_IS:DEFAULT] 43 | [TRAINED_HUNTER:MOUNTAIN_NEW:4:3:AS_IS:DEFAULT] 44 | 45 | [CREATURE_GRAPHICS:GIANT_CHINCHILLA] 46 | [DEFAULT:MOUNTAIN_NEW:2:1:AS_IS:DEFAULT] 47 | [CHILD:MOUNTAIN_NEW:5:1:AS_IS:DEFAULT] 48 | [ANIMATED:MOUNTAIN_NEW:8:1:AS_IS:DEFAULT] 49 | [TRAINED_WAR:MOUNTAIN_NEW:2:3:AS_IS:DEFAULT] 50 | [TRAINED_HUNTER:MOUNTAIN_NEW:5:3:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/graphics_other.txt: -------------------------------------------------------------------------------- 1 | graphics_other 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:OTHER] 6 | [FILE:other.png] 7 | [TILE_DIM:24:24] 8 | [PAGE_DIM:9:6] 9 | 10 | [CREATURE_GRAPHICS:FOXSQUIRREL] 11 | [DEFAULT:OTHER:0:0:AS_IS:DEFAULT] 12 | [CHILD:OTHER:3:0:AS_IS:DEFAULT] 13 | [ANIMATED:OTHER:6:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:OTHER:0:3:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:OTHER:3:3:AS_IS:DEFAULT] 16 | 17 | [CREATURE_GRAPHICS:MOGHOPPER] 18 | [DEFAULT:OTHER:1:0:AS_IS:DEFAULT] 19 | [CHILD:OTHER:4:0:AS_IS:DEFAULT] 20 | [ANIMATED:OTHER:7:0:AS_IS:DEFAULT] 21 | [TRAINED_WAR:OTHER:1:3:AS_IS:DEFAULT] 22 | [TRAINED_HUNTER:OTHER:4:3:AS_IS:DEFAULT] 23 | 24 | [CREATURE_GRAPHICS:RAT_DEMON] 25 | [DEFAULT:OTHER:2:0:AS_IS:DEFAULT] 26 | [CHILD:OTHER:5:0:AS_IS:DEFAULT] 27 | [ANIMATED:OTHER:8:0:AS_IS:DEFAULT] 28 | [TRAINED_WAR:OTHER:2:3:AS_IS:DEFAULT] 29 | [TRAINED_HUNTER:OTHER:5:3:AS_IS:DEFAULT] 30 | 31 | [CREATURE_GRAPHICS:WAMBLER_FLUFFY] 32 | [DEFAULT:OTHER:0:1:AS_IS:DEFAULT] 33 | [CHILD:OTHER:3:1:AS_IS:DEFAULT] 34 | [ANIMATED:OTHER:6:1:AS_IS:DEFAULT] 35 | [TRAINED_WAR:OTHER:0:4:AS_IS:DEFAULT] 36 | [TRAINED_HUNTER:OTHER:3:4:AS_IS:DEFAULT] 37 | 38 | [CREATURE_GRAPHICS:LIZARD_RHINO_TWO_LEGGED] 39 | [DEFAULT:OTHER:1:1:AS_IS:DEFAULT] 40 | [CHILD:OTHER:4:1:AS_IS:DEFAULT] 41 | [ANIMATED:OTHER:7:1:AS_IS:DEFAULT] 42 | [TRAINED_WAR:OTHER:1:4:AS_IS:DEFAULT] 43 | [TRAINED_HUNTER:OTHER:4:4:AS_IS:DEFAULT] 44 | 45 | [CREATURE_GRAPHICS:WORM_KNUCKLE] 46 | [DEFAULT:OTHER:2:1:AS_IS:DEFAULT] 47 | [CHILD:OTHER:5:1:AS_IS:DEFAULT] 48 | [ANIMATED:OTHER:8:1:AS_IS:DEFAULT] 49 | [TRAINED_WAR:OTHER:2:4:AS_IS:DEFAULT] 50 | [TRAINED_HUNTER:OTHER:5:4:AS_IS:DEFAULT] 51 | 52 | [CREATURE_GRAPHICS:SPIDER_PHANTOM] 53 | [DEFAULT:OTHER:0:2:AS_IS:DEFAULT] 54 | [CHILD:OTHER:3:2:AS_IS:DEFAULT] 55 | [ANIMATED:OTHER:6:2:AS_IS:DEFAULT] 56 | [TRAINED_WAR:OTHER:0:5:AS_IS:DEFAULT] 57 | [TRAINED_HUNTER:OTHER:3:5:AS_IS:DEFAULT] 58 | 59 | [CREATURE_GRAPHICS:FLY_ACORN] 60 | [DEFAULT:OTHER:1:2:AS_IS:DEFAULT] 61 | [CHILD:OTHER:4:2:AS_IS:DEFAULT] 62 | [ANIMATED:OTHER:7:2:AS_IS:DEFAULT] 63 | [TRAINED_WAR:OTHER:1:5:AS_IS:DEFAULT] 64 | [TRAINED_HUNTER:OTHER:4:5:AS_IS:DEFAULT] 65 | 66 | [CREATURE_GRAPHICS:GNAT_BLOOD] 67 | [DEFAULT:OTHER:2:2:AS_IS:DEFAULT] 68 | [CHILD:OTHER:5:2:AS_IS:DEFAULT] 69 | [ANIMATED:OTHER:8:2:AS_IS:DEFAULT] 70 | [TRAINED_WAR:OTHER:2:5:AS_IS:DEFAULT] 71 | [TRAINED_HUNTER:OTHER:5:5:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/graphics_reptiles.txt: -------------------------------------------------------------------------------- 1 | graphics_reptiles 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:REPTILES] 6 | [FILE:reptiles.png] 7 | [TILE_DIM:24:24] 8 | [PAGE_DIM:3:2] 9 | 10 | [CREATURE_GRAPHICS:LIZARD] 11 | [DEFAULT:REPTILES:0:0:AS_IS:DEFAULT] 12 | [CHILD:REPTILES:1:0:AS_IS:DEFAULT] 13 | [ANIMATED:REPTILES:2:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:REPTILES:0:1:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:REPTILES:1:1:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/graphics_savage_tropical.txt: -------------------------------------------------------------------------------- 1 | graphics_savage_tropical 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:SAVAGE_TROPICAL] 6 | [FILE:savage_tropical.png] 7 | [TILE_DIM:24:24] 8 | [PAGE_DIM:9:4] 9 | 10 | [CREATURE_GRAPHICS:LION_GIANT] 11 | [DEFAULT:SAVAGE_TROPICAL:0:0:AS_IS:DEFAULT] 12 | [CHILD:SAVAGE_TROPICAL:3:0:AS_IS:DEFAULT] 13 | [ANIMATED:SAVAGE_TROPICAL:6:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:SAVAGE_TROPICAL:0:2:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:SAVAGE_TROPICAL:3:2:AS_IS:DEFAULT] 16 | 17 | [CREATURE_GRAPHICS:LEOPARD_GIANT] 18 | [DEFAULT:SAVAGE_TROPICAL:1:0:AS_IS:DEFAULT] 19 | [CHILD:SAVAGE_TROPICAL:4:0:AS_IS:DEFAULT] 20 | [ANIMATED:SAVAGE_TROPICAL:7:0:AS_IS:DEFAULT] 21 | [TRAINED_WAR:SAVAGE_TROPICAL:1:2:AS_IS:DEFAULT] 22 | [TRAINED_HUNTER:SAVAGE_TROPICAL:4:2:AS_IS:DEFAULT] 23 | 24 | [CREATURE_GRAPHICS:JAGUAR_GIANT] 25 | [DEFAULT:SAVAGE_TROPICAL:2:0:AS_IS:DEFAULT] 26 | [CHILD:SAVAGE_TROPICAL:5:0:AS_IS:DEFAULT] 27 | [ANIMATED:SAVAGE_TROPICAL:8:0:AS_IS:DEFAULT] 28 | [TRAINED_WAR:SAVAGE_TROPICAL:2:2:AS_IS:DEFAULT] 29 | [TRAINED_HUNTER:SAVAGE_TROPICAL:5:2:AS_IS:DEFAULT] 30 | 31 | [CREATURE_GRAPHICS:TIGER_GIANT] 32 | [DEFAULT:SAVAGE_TROPICAL:0:1:AS_IS:DEFAULT] 33 | [CHILD:SAVAGE_TROPICAL:3:1:AS_IS:DEFAULT] 34 | [ANIMATED:SAVAGE_TROPICAL:6:1:AS_IS:DEFAULT] 35 | [TRAINED_WAR:SAVAGE_TROPICAL:0:3:AS_IS:DEFAULT] 36 | [TRAINED_HUNTER:SAVAGE_TROPICAL:3:3:AS_IS:DEFAULT] 37 | 38 | [CREATURE_GRAPHICS:CHEETAH_GIANT] 39 | [DEFAULT:SAVAGE_TROPICAL:1:1:AS_IS:DEFAULT] 40 | [CHILD:SAVAGE_TROPICAL:4:1:AS_IS:DEFAULT] 41 | [ANIMATED:SAVAGE_TROPICAL:7:1:AS_IS:DEFAULT] 42 | [TRAINED_WAR:SAVAGE_TROPICAL:1:3:AS_IS:DEFAULT] 43 | [TRAINED_HUNTER:SAVAGE_TROPICAL:4:3:AS_IS:DEFAULT] 44 | 45 | [CREATURE_GRAPHICS:SCORPION_DESERT_GIANT] 46 | [DEFAULT:SAVAGE_TROPICAL:2:1:AS_IS:DEFAULT] 47 | [CHILD:SAVAGE_TROPICAL:5:1:AS_IS:DEFAULT] 48 | [ANIMATED:SAVAGE_TROPICAL:8:1:AS_IS:DEFAULT] 49 | [TRAINED_WAR:SAVAGE_TROPICAL:2:3:AS_IS:DEFAULT] 50 | [TRAINED_HUNTER:SAVAGE_TROPICAL:5:3:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/graphics_small_mammals.txt: -------------------------------------------------------------------------------- 1 | graphics_small_mammals 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:SMALL_MAMMALS] 6 | [FILE:small_mammals.png] 7 | [TILE_DIM:24:24] 8 | [PAGE_DIM:6:4] 9 | 10 | [CREATURE_GRAPHICS:RAT] 11 | [DEFAULT:SMALL_MAMMALS:0:0:AS_IS:DEFAULT] 12 | [CHILD:SMALL_MAMMALS:2:0:AS_IS:DEFAULT] 13 | [ANIMATED:SMALL_MAMMALS:4:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:SMALL_MAMMALS:0:2:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:SMALL_MAMMALS:2:2:AS_IS:DEFAULT] 16 | 17 | [CREATURE_GRAPHICS:SQUIRREL_GRAY] 18 | [DEFAULT:SMALL_MAMMALS:1:0:AS_IS:DEFAULT] 19 | [CHILD:SMALL_MAMMALS:3:0:AS_IS:DEFAULT] 20 | [ANIMATED:SMALL_MAMMALS:5:0:AS_IS:DEFAULT] 21 | [TRAINED_WAR:SMALL_MAMMALS:1:2:AS_IS:DEFAULT] 22 | [TRAINED_HUNTER:SMALL_MAMMALS:3:2:AS_IS:DEFAULT] 23 | 24 | [CREATURE_GRAPHICS:SQUIRREL_RED] 25 | [DEFAULT:SMALL_MAMMALS:0:1:AS_IS:DEFAULT] 26 | [CHILD:SMALL_MAMMALS:2:1:AS_IS:DEFAULT] 27 | [ANIMATED:SMALL_MAMMALS:4:1:AS_IS:DEFAULT] 28 | [TRAINED_WAR:SMALL_MAMMALS:0:3:AS_IS:DEFAULT] 29 | [TRAINED_HUNTER:SMALL_MAMMALS:2:3:AS_IS:DEFAULT] 30 | 31 | [CREATURE_GRAPHICS:CHIPMUNK] 32 | [DEFAULT:SMALL_MAMMALS:1:1:AS_IS:DEFAULT] 33 | [CHILD:SMALL_MAMMALS:3:1:AS_IS:DEFAULT] 34 | [ANIMATED:SMALL_MAMMALS:5:1:AS_IS:DEFAULT] 35 | [TRAINED_WAR:SMALL_MAMMALS:1:3:AS_IS:DEFAULT] 36 | [TRAINED_HUNTER:SMALL_MAMMALS:3:3:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/graphics_tundra_taiga_new.txt: -------------------------------------------------------------------------------- 1 | graphics_tundra_taiga_new 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:TUNDRA_TAIGA_NEW] 6 | [FILE:tundra_taiga_new.png] 7 | [TILE_DIM:24:24] 8 | [PAGE_DIM:9:4] 9 | 10 | [CREATURE_GRAPHICS:STOAT] 11 | [DEFAULT:TUNDRA_TAIGA_NEW:0:0:AS_IS:DEFAULT] 12 | [CHILD:TUNDRA_TAIGA_NEW:3:0:AS_IS:DEFAULT] 13 | [ANIMATED:TUNDRA_TAIGA_NEW:6:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:TUNDRA_TAIGA_NEW:0:2:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:TUNDRA_TAIGA_NEW:3:2:AS_IS:DEFAULT] 16 | 17 | [CREATURE_GRAPHICS:STOAT_MAN] 18 | [DEFAULT:TUNDRA_TAIGA_NEW:1:0:AS_IS:DEFAULT] 19 | [CHILD:TUNDRA_TAIGA_NEW:4:0:AS_IS:DEFAULT] 20 | [ANIMATED:TUNDRA_TAIGA_NEW:7:0:AS_IS:DEFAULT] 21 | [TRAINED_WAR:TUNDRA_TAIGA_NEW:1:2:AS_IS:DEFAULT] 22 | [TRAINED_HUNTER:TUNDRA_TAIGA_NEW:4:2:AS_IS:DEFAULT] 23 | 24 | [CREATURE_GRAPHICS:GIANT_STOAT] 25 | [DEFAULT:TUNDRA_TAIGA_NEW:2:0:AS_IS:DEFAULT] 26 | [CHILD:TUNDRA_TAIGA_NEW:5:0:AS_IS:DEFAULT] 27 | [ANIMATED:TUNDRA_TAIGA_NEW:8:0:AS_IS:DEFAULT] 28 | [TRAINED_WAR:TUNDRA_TAIGA_NEW:2:2:AS_IS:DEFAULT] 29 | [TRAINED_HUNTER:TUNDRA_TAIGA_NEW:5:2:AS_IS:DEFAULT] 30 | 31 | [CREATURE_GRAPHICS:LYNX] 32 | [DEFAULT:TUNDRA_TAIGA_NEW:0:1:AS_IS:DEFAULT] 33 | [CHILD:TUNDRA_TAIGA_NEW:3:1:AS_IS:DEFAULT] 34 | [ANIMATED:TUNDRA_TAIGA_NEW:6:1:AS_IS:DEFAULT] 35 | [TRAINED_WAR:TUNDRA_TAIGA_NEW:0:3:AS_IS:DEFAULT] 36 | [TRAINED_HUNTER:TUNDRA_TAIGA_NEW:3:3:AS_IS:DEFAULT] 37 | 38 | [CREATURE_GRAPHICS:LYNX_MAN] 39 | [DEFAULT:TUNDRA_TAIGA_NEW:1:1:AS_IS:DEFAULT] 40 | [CHILD:TUNDRA_TAIGA_NEW:4:1:AS_IS:DEFAULT] 41 | [ANIMATED:TUNDRA_TAIGA_NEW:7:1:AS_IS:DEFAULT] 42 | [TRAINED_WAR:TUNDRA_TAIGA_NEW:1:3:AS_IS:DEFAULT] 43 | [TRAINED_HUNTER:TUNDRA_TAIGA_NEW:4:3:AS_IS:DEFAULT] 44 | 45 | [CREATURE_GRAPHICS:GIANT_LYNX] 46 | [DEFAULT:TUNDRA_TAIGA_NEW:2:1:AS_IS:DEFAULT] 47 | [CHILD:TUNDRA_TAIGA_NEW:5:1:AS_IS:DEFAULT] 48 | [ANIMATED:TUNDRA_TAIGA_NEW:8:1:AS_IS:DEFAULT] 49 | [TRAINED_WAR:TUNDRA_TAIGA_NEW:2:3:AS_IS:DEFAULT] 50 | [TRAINED_HUNTER:TUNDRA_TAIGA_NEW:5:3:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/humans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/humans.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/insects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/insects.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/kobolds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/kobolds.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/kobolds_alt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/kobolds_alt.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/large_mountain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/large_mountain.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/large_ocean.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/large_ocean.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/large_riverlake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/large_riverlake.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/large_temperate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/large_temperate.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/large_tropical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/large_tropical.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/large_tundra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/large_tundra.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/mountain_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/mountain_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/next_underground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/next_underground.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/ocean_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/ocean_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/other.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/procedural.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/procedural.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/reptiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/reptiles.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/riverlakepool_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/riverlakepool_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/savage_tropical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/savage_tropical.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/small_mammal_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/small_mammal_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/small_mammals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/small_mammals.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/small_ocean.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/small_ocean.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/small_riverlake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/small_riverlake.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/standard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/standard.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/subterranean.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/subterranean.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/temperate_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/temperate_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/tropical_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/tropical_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/24x24/tundra_taiga_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/24x24/tundra_taiga_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/amphibians.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/amphibians.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/annelids.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/annelids.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/birds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/birds.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/birds_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/birds_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/bug_slug_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/bug_slug_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/desert_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/desert_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/domestic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/domestic.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/dwarves.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/dwarves.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/elves.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/elves.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/equipment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/equipment.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/fanciful.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/fanciful.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/goblins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/goblins.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/graphics_amphibians.txt: -------------------------------------------------------------------------------- 1 | graphics_amphibians 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:AMPHIBIANS] 6 | [FILE:amphibians.png] 7 | [TILE_DIM:48:48] 8 | [PAGE_DIM:3:2] 9 | 10 | [CREATURE_GRAPHICS:TOAD] 11 | [DEFAULT:AMPHIBIANS:0:0:AS_IS:DEFAULT] 12 | [CHILD:AMPHIBIANS:1:0:AS_IS:DEFAULT] 13 | [ANIMATED:AMPHIBIANS:2:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:AMPHIBIANS:0:1:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:AMPHIBIANS:1:1:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/graphics_annelids.txt: -------------------------------------------------------------------------------- 1 | graphics_annelids 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:ANNELIDS] 6 | [FILE:annelids.png] 7 | [TILE_DIM:48:48] 8 | [PAGE_DIM:3:2] 9 | 10 | [CREATURE_GRAPHICS:WORM] 11 | [DEFAULT:ANNELIDS:0:0:AS_IS:DEFAULT] 12 | [CHILD:ANNELIDS:1:0:AS_IS:DEFAULT] 13 | [ANIMATED:ANNELIDS:2:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:ANNELIDS:0:1:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:ANNELIDS:1:1:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/graphics_equipment.txt: -------------------------------------------------------------------------------- 1 | graphics_equipment 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:EQUIPMENT] 6 | [FILE:equipment.png] 7 | [TILE_DIM:48:48] 8 | [PAGE_DIM:1:1] 9 | 10 | [CREATURE_GRAPHICS:EQUIPMENT_WAGON] 11 | [DEFAULT:EQUIPMENT:0:0:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/graphics_fanciful.txt: -------------------------------------------------------------------------------- 1 | graphics_fanciful 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:FANCIFUL] 6 | [FILE:fanciful.png] 7 | [TILE_DIM:48:48] 8 | [PAGE_DIM:6:4] 9 | 10 | [CREATURE_GRAPHICS:CHIMERA] 11 | [DEFAULT:FANCIFUL:0:0:AS_IS:DEFAULT] 12 | [CHILD:FANCIFUL:2:0:AS_IS:DEFAULT] 13 | [ANIMATED:FANCIFUL:4:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:FANCIFUL:0:2:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:FANCIFUL:2:2:AS_IS:DEFAULT] 16 | 17 | [CREATURE_GRAPHICS:CENTAUR] 18 | [DEFAULT:FANCIFUL:1:0:AS_IS:DEFAULT] 19 | [CHILD:FANCIFUL:3:0:AS_IS:DEFAULT] 20 | [ANIMATED:FANCIFUL:5:0:AS_IS:DEFAULT] 21 | [TRAINED_WAR:FANCIFUL:1:2:AS_IS:DEFAULT] 22 | [TRAINED_HUNTER:FANCIFUL:3:2:AS_IS:DEFAULT] 23 | 24 | [CREATURE_GRAPHICS:GRIFFON] 25 | [DEFAULT:FANCIFUL:0:1:AS_IS:DEFAULT] 26 | [CHILD:FANCIFUL:2:1:AS_IS:DEFAULT] 27 | [ANIMATED:FANCIFUL:4:1:AS_IS:DEFAULT] 28 | [TRAINED_WAR:FANCIFUL:0:3:AS_IS:DEFAULT] 29 | [TRAINED_HUNTER:FANCIFUL:2:3:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/graphics_large_mountain.txt: -------------------------------------------------------------------------------- 1 | graphics_large_mountain 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:LARGE_MOUNTAIN] 6 | [FILE:large_mountain.png] 7 | [TILE_DIM:48:48] 8 | [PAGE_DIM:6:4] 9 | 10 | [CREATURE_GRAPHICS:GOAT_MOUNTAIN] 11 | [DEFAULT:LARGE_MOUNTAIN:0:0:AS_IS:DEFAULT] 12 | [CHILD:LARGE_MOUNTAIN:2:0:AS_IS:DEFAULT] 13 | [ANIMATED:LARGE_MOUNTAIN:4:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:LARGE_MOUNTAIN:0:2:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:LARGE_MOUNTAIN:2:2:AS_IS:DEFAULT] 16 | 17 | [CREATURE_GRAPHICS:MARMOT_HOARY] 18 | [DEFAULT:LARGE_MOUNTAIN:1:0:AS_IS:DEFAULT] 19 | [CHILD:LARGE_MOUNTAIN:3:0:AS_IS:DEFAULT] 20 | [ANIMATED:LARGE_MOUNTAIN:5:0:AS_IS:DEFAULT] 21 | [TRAINED_WAR:LARGE_MOUNTAIN:1:2:AS_IS:DEFAULT] 22 | [TRAINED_HUNTER:LARGE_MOUNTAIN:3:2:AS_IS:DEFAULT] 23 | 24 | [CREATURE_GRAPHICS:GNOME_MOUNTAIN] 25 | [DEFAULT:LARGE_MOUNTAIN:0:1:AS_IS:DEFAULT] 26 | [CHILD:LARGE_MOUNTAIN:2:1:AS_IS:DEFAULT] 27 | [ANIMATED:LARGE_MOUNTAIN:4:1:AS_IS:DEFAULT] 28 | [TRAINED_WAR:LARGE_MOUNTAIN:0:3:AS_IS:DEFAULT] 29 | [TRAINED_HUNTER:LARGE_MOUNTAIN:2:3:AS_IS:DEFAULT] 30 | 31 | [CREATURE_GRAPHICS:GNOME_DARK] 32 | [DEFAULT:LARGE_MOUNTAIN:1:1:AS_IS:DEFAULT] 33 | [CHILD:LARGE_MOUNTAIN:3:1:AS_IS:DEFAULT] 34 | [ANIMATED:LARGE_MOUNTAIN:5:1:AS_IS:DEFAULT] 35 | [TRAINED_WAR:LARGE_MOUNTAIN:1:3:AS_IS:DEFAULT] 36 | [TRAINED_HUNTER:LARGE_MOUNTAIN:3:3:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/graphics_large_tundra.txt: -------------------------------------------------------------------------------- 1 | graphics_large_tundra 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:LARGE_TUNDRA] 6 | [FILE:large_tundra.png] 7 | [TILE_DIM:48:48] 8 | [PAGE_DIM:6:4] 9 | 10 | [CREATURE_GRAPHICS:MUSKOX] 11 | [DEFAULT:LARGE_TUNDRA:0:0:AS_IS:DEFAULT] 12 | [CHILD:LARGE_TUNDRA:2:0:AS_IS:DEFAULT] 13 | [ANIMATED:LARGE_TUNDRA:4:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:LARGE_TUNDRA:0:2:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:LARGE_TUNDRA:2:2:AS_IS:DEFAULT] 16 | 17 | [CREATURE_GRAPHICS:ELK] 18 | [DEFAULT:LARGE_TUNDRA:1:0:AS_IS:DEFAULT] 19 | [CHILD:LARGE_TUNDRA:3:0:AS_IS:DEFAULT] 20 | [ANIMATED:LARGE_TUNDRA:5:0:AS_IS:DEFAULT] 21 | [TRAINED_WAR:LARGE_TUNDRA:1:2:AS_IS:DEFAULT] 22 | [TRAINED_HUNTER:LARGE_TUNDRA:3:2:AS_IS:DEFAULT] 23 | 24 | [CREATURE_GRAPHICS:BEAR_POLAR] 25 | [DEFAULT:LARGE_TUNDRA:0:1:AS_IS:DEFAULT] 26 | [CHILD:LARGE_TUNDRA:2:1:AS_IS:DEFAULT] 27 | [ANIMATED:LARGE_TUNDRA:4:1:AS_IS:DEFAULT] 28 | [TRAINED_WAR:LARGE_TUNDRA:0:3:AS_IS:DEFAULT] 29 | [TRAINED_HUNTER:LARGE_TUNDRA:2:3:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/graphics_mountain_new.txt: -------------------------------------------------------------------------------- 1 | graphics_mountain_new 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:MOUNTAIN_NEW] 6 | [FILE:mountain_new.png] 7 | [TILE_DIM:48:48] 8 | [PAGE_DIM:9:4] 9 | 10 | [CREATURE_GRAPHICS:WOLVERINE] 11 | [DEFAULT:MOUNTAIN_NEW:0:0:AS_IS:DEFAULT] 12 | [CHILD:MOUNTAIN_NEW:3:0:AS_IS:DEFAULT] 13 | [ANIMATED:MOUNTAIN_NEW:6:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:MOUNTAIN_NEW:0:2:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:MOUNTAIN_NEW:3:2:AS_IS:DEFAULT] 16 | 17 | [CREATURE_GRAPHICS:WOLVERINE_MAN] 18 | [DEFAULT:MOUNTAIN_NEW:1:0:AS_IS:DEFAULT] 19 | [CHILD:MOUNTAIN_NEW:4:0:AS_IS:DEFAULT] 20 | [ANIMATED:MOUNTAIN_NEW:7:0:AS_IS:DEFAULT] 21 | [TRAINED_WAR:MOUNTAIN_NEW:1:2:AS_IS:DEFAULT] 22 | [TRAINED_HUNTER:MOUNTAIN_NEW:4:2:AS_IS:DEFAULT] 23 | 24 | [CREATURE_GRAPHICS:GIANT_WOLVERINE] 25 | [DEFAULT:MOUNTAIN_NEW:2:0:AS_IS:DEFAULT] 26 | [CHILD:MOUNTAIN_NEW:5:0:AS_IS:DEFAULT] 27 | [ANIMATED:MOUNTAIN_NEW:8:0:AS_IS:DEFAULT] 28 | [TRAINED_WAR:MOUNTAIN_NEW:2:2:AS_IS:DEFAULT] 29 | [TRAINED_HUNTER:MOUNTAIN_NEW:5:2:AS_IS:DEFAULT] 30 | 31 | [CREATURE_GRAPHICS:CHINCHILLA] 32 | [DEFAULT:MOUNTAIN_NEW:0:1:AS_IS:DEFAULT] 33 | [CHILD:MOUNTAIN_NEW:3:1:AS_IS:DEFAULT] 34 | [ANIMATED:MOUNTAIN_NEW:6:1:AS_IS:DEFAULT] 35 | [TRAINED_WAR:MOUNTAIN_NEW:0:3:AS_IS:DEFAULT] 36 | [TRAINED_HUNTER:MOUNTAIN_NEW:3:3:AS_IS:DEFAULT] 37 | 38 | [CREATURE_GRAPHICS:CHINCHILLA_MAN] 39 | [DEFAULT:MOUNTAIN_NEW:1:1:AS_IS:DEFAULT] 40 | [CHILD:MOUNTAIN_NEW:4:1:AS_IS:DEFAULT] 41 | [ANIMATED:MOUNTAIN_NEW:7:1:AS_IS:DEFAULT] 42 | [TRAINED_WAR:MOUNTAIN_NEW:1:3:AS_IS:DEFAULT] 43 | [TRAINED_HUNTER:MOUNTAIN_NEW:4:3:AS_IS:DEFAULT] 44 | 45 | [CREATURE_GRAPHICS:GIANT_CHINCHILLA] 46 | [DEFAULT:MOUNTAIN_NEW:2:1:AS_IS:DEFAULT] 47 | [CHILD:MOUNTAIN_NEW:5:1:AS_IS:DEFAULT] 48 | [ANIMATED:MOUNTAIN_NEW:8:1:AS_IS:DEFAULT] 49 | [TRAINED_WAR:MOUNTAIN_NEW:2:3:AS_IS:DEFAULT] 50 | [TRAINED_HUNTER:MOUNTAIN_NEW:5:3:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/graphics_other.txt: -------------------------------------------------------------------------------- 1 | graphics_other 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:OTHER] 6 | [FILE:other.png] 7 | [TILE_DIM:48:48] 8 | [PAGE_DIM:9:6] 9 | 10 | [CREATURE_GRAPHICS:FOXSQUIRREL] 11 | [DEFAULT:OTHER:0:0:AS_IS:DEFAULT] 12 | [CHILD:OTHER:3:0:AS_IS:DEFAULT] 13 | [ANIMATED:OTHER:6:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:OTHER:0:3:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:OTHER:3:3:AS_IS:DEFAULT] 16 | 17 | [CREATURE_GRAPHICS:MOGHOPPER] 18 | [DEFAULT:OTHER:1:0:AS_IS:DEFAULT] 19 | [CHILD:OTHER:4:0:AS_IS:DEFAULT] 20 | [ANIMATED:OTHER:7:0:AS_IS:DEFAULT] 21 | [TRAINED_WAR:OTHER:1:3:AS_IS:DEFAULT] 22 | [TRAINED_HUNTER:OTHER:4:3:AS_IS:DEFAULT] 23 | 24 | [CREATURE_GRAPHICS:RAT_DEMON] 25 | [DEFAULT:OTHER:2:0:AS_IS:DEFAULT] 26 | [CHILD:OTHER:5:0:AS_IS:DEFAULT] 27 | [ANIMATED:OTHER:8:0:AS_IS:DEFAULT] 28 | [TRAINED_WAR:OTHER:2:3:AS_IS:DEFAULT] 29 | [TRAINED_HUNTER:OTHER:5:3:AS_IS:DEFAULT] 30 | 31 | [CREATURE_GRAPHICS:WAMBLER_FLUFFY] 32 | [DEFAULT:OTHER:0:1:AS_IS:DEFAULT] 33 | [CHILD:OTHER:3:1:AS_IS:DEFAULT] 34 | [ANIMATED:OTHER:6:1:AS_IS:DEFAULT] 35 | [TRAINED_WAR:OTHER:0:4:AS_IS:DEFAULT] 36 | [TRAINED_HUNTER:OTHER:3:4:AS_IS:DEFAULT] 37 | 38 | [CREATURE_GRAPHICS:LIZARD_RHINO_TWO_LEGGED] 39 | [DEFAULT:OTHER:1:1:AS_IS:DEFAULT] 40 | [CHILD:OTHER:4:1:AS_IS:DEFAULT] 41 | [ANIMATED:OTHER:7:1:AS_IS:DEFAULT] 42 | [TRAINED_WAR:OTHER:1:4:AS_IS:DEFAULT] 43 | [TRAINED_HUNTER:OTHER:4:4:AS_IS:DEFAULT] 44 | 45 | [CREATURE_GRAPHICS:WORM_KNUCKLE] 46 | [DEFAULT:OTHER:2:1:AS_IS:DEFAULT] 47 | [CHILD:OTHER:5:1:AS_IS:DEFAULT] 48 | [ANIMATED:OTHER:8:1:AS_IS:DEFAULT] 49 | [TRAINED_WAR:OTHER:2:4:AS_IS:DEFAULT] 50 | [TRAINED_HUNTER:OTHER:5:4:AS_IS:DEFAULT] 51 | 52 | [CREATURE_GRAPHICS:SPIDER_PHANTOM] 53 | [DEFAULT:OTHER:0:2:AS_IS:DEFAULT] 54 | [CHILD:OTHER:3:2:AS_IS:DEFAULT] 55 | [ANIMATED:OTHER:6:2:AS_IS:DEFAULT] 56 | [TRAINED_WAR:OTHER:0:5:AS_IS:DEFAULT] 57 | [TRAINED_HUNTER:OTHER:3:5:AS_IS:DEFAULT] 58 | 59 | [CREATURE_GRAPHICS:FLY_ACORN] 60 | [DEFAULT:OTHER:1:2:AS_IS:DEFAULT] 61 | [CHILD:OTHER:4:2:AS_IS:DEFAULT] 62 | [ANIMATED:OTHER:7:2:AS_IS:DEFAULT] 63 | [TRAINED_WAR:OTHER:1:5:AS_IS:DEFAULT] 64 | [TRAINED_HUNTER:OTHER:4:5:AS_IS:DEFAULT] 65 | 66 | [CREATURE_GRAPHICS:GNAT_BLOOD] 67 | [DEFAULT:OTHER:2:2:AS_IS:DEFAULT] 68 | [CHILD:OTHER:5:2:AS_IS:DEFAULT] 69 | [ANIMATED:OTHER:8:2:AS_IS:DEFAULT] 70 | [TRAINED_WAR:OTHER:2:5:AS_IS:DEFAULT] 71 | [TRAINED_HUNTER:OTHER:5:5:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/graphics_reptiles.txt: -------------------------------------------------------------------------------- 1 | graphics_reptiles 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:REPTILES] 6 | [FILE:reptiles.png] 7 | [TILE_DIM:48:48] 8 | [PAGE_DIM:3:2] 9 | 10 | [CREATURE_GRAPHICS:LIZARD] 11 | [DEFAULT:REPTILES:0:0:AS_IS:DEFAULT] 12 | [CHILD:REPTILES:1:0:AS_IS:DEFAULT] 13 | [ANIMATED:REPTILES:2:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:REPTILES:0:1:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:REPTILES:1:1:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/graphics_savage_tropical.txt: -------------------------------------------------------------------------------- 1 | graphics_savage_tropical 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:SAVAGE_TROPICAL] 6 | [FILE:savage_tropical.png] 7 | [TILE_DIM:48:48] 8 | [PAGE_DIM:9:4] 9 | 10 | [CREATURE_GRAPHICS:LION_GIANT] 11 | [DEFAULT:SAVAGE_TROPICAL:0:0:AS_IS:DEFAULT] 12 | [CHILD:SAVAGE_TROPICAL:3:0:AS_IS:DEFAULT] 13 | [ANIMATED:SAVAGE_TROPICAL:6:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:SAVAGE_TROPICAL:0:2:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:SAVAGE_TROPICAL:3:2:AS_IS:DEFAULT] 16 | 17 | [CREATURE_GRAPHICS:LEOPARD_GIANT] 18 | [DEFAULT:SAVAGE_TROPICAL:1:0:AS_IS:DEFAULT] 19 | [CHILD:SAVAGE_TROPICAL:4:0:AS_IS:DEFAULT] 20 | [ANIMATED:SAVAGE_TROPICAL:7:0:AS_IS:DEFAULT] 21 | [TRAINED_WAR:SAVAGE_TROPICAL:1:2:AS_IS:DEFAULT] 22 | [TRAINED_HUNTER:SAVAGE_TROPICAL:4:2:AS_IS:DEFAULT] 23 | 24 | [CREATURE_GRAPHICS:JAGUAR_GIANT] 25 | [DEFAULT:SAVAGE_TROPICAL:2:0:AS_IS:DEFAULT] 26 | [CHILD:SAVAGE_TROPICAL:5:0:AS_IS:DEFAULT] 27 | [ANIMATED:SAVAGE_TROPICAL:8:0:AS_IS:DEFAULT] 28 | [TRAINED_WAR:SAVAGE_TROPICAL:2:2:AS_IS:DEFAULT] 29 | [TRAINED_HUNTER:SAVAGE_TROPICAL:5:2:AS_IS:DEFAULT] 30 | 31 | [CREATURE_GRAPHICS:TIGER_GIANT] 32 | [DEFAULT:SAVAGE_TROPICAL:0:1:AS_IS:DEFAULT] 33 | [CHILD:SAVAGE_TROPICAL:3:1:AS_IS:DEFAULT] 34 | [ANIMATED:SAVAGE_TROPICAL:6:1:AS_IS:DEFAULT] 35 | [TRAINED_WAR:SAVAGE_TROPICAL:0:3:AS_IS:DEFAULT] 36 | [TRAINED_HUNTER:SAVAGE_TROPICAL:3:3:AS_IS:DEFAULT] 37 | 38 | [CREATURE_GRAPHICS:CHEETAH_GIANT] 39 | [DEFAULT:SAVAGE_TROPICAL:1:1:AS_IS:DEFAULT] 40 | [CHILD:SAVAGE_TROPICAL:4:1:AS_IS:DEFAULT] 41 | [ANIMATED:SAVAGE_TROPICAL:7:1:AS_IS:DEFAULT] 42 | [TRAINED_WAR:SAVAGE_TROPICAL:1:3:AS_IS:DEFAULT] 43 | [TRAINED_HUNTER:SAVAGE_TROPICAL:4:3:AS_IS:DEFAULT] 44 | 45 | [CREATURE_GRAPHICS:SCORPION_DESERT_GIANT] 46 | [DEFAULT:SAVAGE_TROPICAL:2:1:AS_IS:DEFAULT] 47 | [CHILD:SAVAGE_TROPICAL:5:1:AS_IS:DEFAULT] 48 | [ANIMATED:SAVAGE_TROPICAL:8:1:AS_IS:DEFAULT] 49 | [TRAINED_WAR:SAVAGE_TROPICAL:2:3:AS_IS:DEFAULT] 50 | [TRAINED_HUNTER:SAVAGE_TROPICAL:5:3:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/graphics_small_mammals.txt: -------------------------------------------------------------------------------- 1 | graphics_small_mammals 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:SMALL_MAMMALS] 6 | [FILE:small_mammals.png] 7 | [TILE_DIM:48:48] 8 | [PAGE_DIM:6:4] 9 | 10 | [CREATURE_GRAPHICS:RAT] 11 | [DEFAULT:SMALL_MAMMALS:0:0:AS_IS:DEFAULT] 12 | [CHILD:SMALL_MAMMALS:2:0:AS_IS:DEFAULT] 13 | [ANIMATED:SMALL_MAMMALS:4:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:SMALL_MAMMALS:0:2:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:SMALL_MAMMALS:2:2:AS_IS:DEFAULT] 16 | 17 | [CREATURE_GRAPHICS:SQUIRREL_GRAY] 18 | [DEFAULT:SMALL_MAMMALS:1:0:AS_IS:DEFAULT] 19 | [CHILD:SMALL_MAMMALS:3:0:AS_IS:DEFAULT] 20 | [ANIMATED:SMALL_MAMMALS:5:0:AS_IS:DEFAULT] 21 | [TRAINED_WAR:SMALL_MAMMALS:1:2:AS_IS:DEFAULT] 22 | [TRAINED_HUNTER:SMALL_MAMMALS:3:2:AS_IS:DEFAULT] 23 | 24 | [CREATURE_GRAPHICS:SQUIRREL_RED] 25 | [DEFAULT:SMALL_MAMMALS:0:1:AS_IS:DEFAULT] 26 | [CHILD:SMALL_MAMMALS:2:1:AS_IS:DEFAULT] 27 | [ANIMATED:SMALL_MAMMALS:4:1:AS_IS:DEFAULT] 28 | [TRAINED_WAR:SMALL_MAMMALS:0:3:AS_IS:DEFAULT] 29 | [TRAINED_HUNTER:SMALL_MAMMALS:2:3:AS_IS:DEFAULT] 30 | 31 | [CREATURE_GRAPHICS:CHIPMUNK] 32 | [DEFAULT:SMALL_MAMMALS:1:1:AS_IS:DEFAULT] 33 | [CHILD:SMALL_MAMMALS:3:1:AS_IS:DEFAULT] 34 | [ANIMATED:SMALL_MAMMALS:5:1:AS_IS:DEFAULT] 35 | [TRAINED_WAR:SMALL_MAMMALS:1:3:AS_IS:DEFAULT] 36 | [TRAINED_HUNTER:SMALL_MAMMALS:3:3:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/graphics_tundra_taiga_new.txt: -------------------------------------------------------------------------------- 1 | graphics_tundra_taiga_new 2 | 3 | [OBJECT:GRAPHICS] 4 | 5 | [TILE_PAGE:TUNDRA_TAIGA_NEW] 6 | [FILE:tundra_taiga_new.png] 7 | [TILE_DIM:48:48] 8 | [PAGE_DIM:9:4] 9 | 10 | [CREATURE_GRAPHICS:STOAT] 11 | [DEFAULT:TUNDRA_TAIGA_NEW:0:0:AS_IS:DEFAULT] 12 | [CHILD:TUNDRA_TAIGA_NEW:3:0:AS_IS:DEFAULT] 13 | [ANIMATED:TUNDRA_TAIGA_NEW:6:0:AS_IS:DEFAULT] 14 | [TRAINED_WAR:TUNDRA_TAIGA_NEW:0:2:AS_IS:DEFAULT] 15 | [TRAINED_HUNTER:TUNDRA_TAIGA_NEW:3:2:AS_IS:DEFAULT] 16 | 17 | [CREATURE_GRAPHICS:STOAT_MAN] 18 | [DEFAULT:TUNDRA_TAIGA_NEW:1:0:AS_IS:DEFAULT] 19 | [CHILD:TUNDRA_TAIGA_NEW:4:0:AS_IS:DEFAULT] 20 | [ANIMATED:TUNDRA_TAIGA_NEW:7:0:AS_IS:DEFAULT] 21 | [TRAINED_WAR:TUNDRA_TAIGA_NEW:1:2:AS_IS:DEFAULT] 22 | [TRAINED_HUNTER:TUNDRA_TAIGA_NEW:4:2:AS_IS:DEFAULT] 23 | 24 | [CREATURE_GRAPHICS:GIANT_STOAT] 25 | [DEFAULT:TUNDRA_TAIGA_NEW:2:0:AS_IS:DEFAULT] 26 | [CHILD:TUNDRA_TAIGA_NEW:5:0:AS_IS:DEFAULT] 27 | [ANIMATED:TUNDRA_TAIGA_NEW:8:0:AS_IS:DEFAULT] 28 | [TRAINED_WAR:TUNDRA_TAIGA_NEW:2:2:AS_IS:DEFAULT] 29 | [TRAINED_HUNTER:TUNDRA_TAIGA_NEW:5:2:AS_IS:DEFAULT] 30 | 31 | [CREATURE_GRAPHICS:LYNX] 32 | [DEFAULT:TUNDRA_TAIGA_NEW:0:1:AS_IS:DEFAULT] 33 | [CHILD:TUNDRA_TAIGA_NEW:3:1:AS_IS:DEFAULT] 34 | [ANIMATED:TUNDRA_TAIGA_NEW:6:1:AS_IS:DEFAULT] 35 | [TRAINED_WAR:TUNDRA_TAIGA_NEW:0:3:AS_IS:DEFAULT] 36 | [TRAINED_HUNTER:TUNDRA_TAIGA_NEW:3:3:AS_IS:DEFAULT] 37 | 38 | [CREATURE_GRAPHICS:LYNX_MAN] 39 | [DEFAULT:TUNDRA_TAIGA_NEW:1:1:AS_IS:DEFAULT] 40 | [CHILD:TUNDRA_TAIGA_NEW:4:1:AS_IS:DEFAULT] 41 | [ANIMATED:TUNDRA_TAIGA_NEW:7:1:AS_IS:DEFAULT] 42 | [TRAINED_WAR:TUNDRA_TAIGA_NEW:1:3:AS_IS:DEFAULT] 43 | [TRAINED_HUNTER:TUNDRA_TAIGA_NEW:4:3:AS_IS:DEFAULT] 44 | 45 | [CREATURE_GRAPHICS:GIANT_LYNX] 46 | [DEFAULT:TUNDRA_TAIGA_NEW:2:1:AS_IS:DEFAULT] 47 | [CHILD:TUNDRA_TAIGA_NEW:5:1:AS_IS:DEFAULT] 48 | [ANIMATED:TUNDRA_TAIGA_NEW:8:1:AS_IS:DEFAULT] 49 | [TRAINED_WAR:TUNDRA_TAIGA_NEW:2:3:AS_IS:DEFAULT] 50 | [TRAINED_HUNTER:TUNDRA_TAIGA_NEW:5:3:AS_IS:DEFAULT] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/humans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/humans.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/insects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/insects.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/kobolds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/kobolds.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/kobolds_alt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/kobolds_alt.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/large_mountain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/large_mountain.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/large_ocean.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/large_ocean.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/large_riverlake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/large_riverlake.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/large_temperate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/large_temperate.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/large_tropical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/large_tropical.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/large_tundra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/large_tundra.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/mountain_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/mountain_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/next_underground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/next_underground.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/ocean_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/ocean_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/other.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/procedural.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/procedural.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/reptiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/reptiles.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/riverlakepool_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/riverlakepool_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/savage_tropical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/savage_tropical.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/small_mammal_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/small_mammal_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/small_mammals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/small_mammals.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/small_ocean.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/small_ocean.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/small_riverlake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/small_riverlake.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/standard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/standard.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/subterranean.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/subterranean.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/temperate_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/temperate_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/tropical_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/tropical_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/graphics/48x48/tundra_taiga_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/graphics/48x48/tundra_taiga_new.png -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/objects/creature_annelids.txt: -------------------------------------------------------------------------------- 1 | creature_annelids 2 | 3 | [OBJECT:CREATURE] 4 | 5 | [CREATURE:WORM] 6 | [ALTTILE:120] 7 | [DESCRIPTION:A tiny burrowing creature, found in moist soil. It is legless, long and thin.] 8 | [NAME:worm:worms:worm] 9 | [CASTE_NAME:worm:worms:worm] 10 | [CREATURE_TILE:119][COLOR:7:0:0] 11 | [PETVALUE:10] 12 | [VERMIN_SOIL][FREQUENCY:100][VERMIN_HATEABLE] 13 | [SMALL_REMAINS][VERMIN_NOTRAP][NOBONES] 14 | [NATURAL][PET] 15 | [NOT_BUTCHERABLE] 16 | [BIOME:FOREST_TAIGA] 17 | [BIOME:ANY_TEMPERATE] 18 | [BIOME:ANY_TROPICAL] 19 | [POPULATION_NUMBER:250:500] 20 | [PREFSTRING:wriggling] 21 | [BODY:BODY_WITH_HEAD_FLAG:HEART:GUTS:BRAIN:MOUTH] 22 | [BODY_DETAIL_PLAN:STANDARD_MATERIALS] 23 | [REMOVE_MATERIAL:HAIR] 24 | [REMOVE_MATERIAL:BONE] 25 | [BODY_DETAIL_PLAN:STANDARD_TISSUES] 26 | [REMOVE_TISSUE:HAIR] 27 | [REMOVE_TISSUE:BONE] 28 | [BODY_DETAIL_PLAN:EXOSKELETON_TISSUE_LAYERS:SKIN:FAT:MUSCLE] 29 | [HAS_NERVES] 30 | [MUNDANE] 31 | [GAIT:WALK:Crawl:2900:NO_BUILD_UP:0:LAYERS_SLOW:STRENGTH:AGILITY] 32 | [GAIT:CRAWL:Crawl:2900:NO_BUILD_UP:0:LAYERS_SLOW:STRENGTH:AGILITY] 33 | [USE_MATERIAL_TEMPLATE:ICHOR:ICHOR_TEMPLATE] 34 | [BLOOD:LOCAL_CREATURE_MAT:ICHOR:LIQUID] 35 | [CREATURE_CLASS:GENERAL_POISON] 36 | [GETS_WOUND_INFECTIONS] 37 | [GETS_INFECTIONS_FROM_ROT] 38 | [USE_MATERIAL_TEMPLATE:PUS:PUS_TEMPLATE] 39 | [PUS:LOCAL_CREATURE_MAT:PUS:LIQUID] 40 | [BODY_SIZE:0:0:100] 41 | [BODY_APPEARANCE_MODIFIER:LENGTH:90:95:98:100:102:105:110] 42 | [MAXAGE:2:3] 43 | [CANNOT_JUMP] 44 | [ALL_ACTIVE] 45 | [NO_SLEEP] 46 | [NO_DIZZINESS] 47 | [SET_TL_GROUP:BY_CATEGORY:ALL:SKIN] 48 | [TL_COLOR_MODIFIER:GRAY:1] 49 | [TLCM_NOUN:skin:SINGULAR] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/objects/creature_birds_new.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/objects/creature_birds_new.txt -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/objects/creature_equipment.txt: -------------------------------------------------------------------------------- 1 | creature_equipment 2 | 3 | [OBJECT:CREATURE] 4 | 5 | [CREATURE:EQUIPMENT_WAGON] 6 | [DESCRIPTION:A rolling platform for carrying passengers or cargo.] 7 | [NAME:wagon:wagons:wagon] 8 | [CASTE_NAME:wagon:wagons:wagon] 9 | [CREATURE_TILE:8][COLOR:6:0:0] 10 | [EQUIPMENT_WAGON][COMMON_DOMESTIC] 11 | [NOT_BUTCHERABLE] 12 | [BODY:WAGON] 13 | [USE_MATERIAL_TEMPLATE:WOOD:WOOD_TEMPLATE] 14 | 15 | Wagons-as-creatures is most likely going to be replaced once moving siege engines are in, so we'll just use a generic "wood" material here instead of worrying about coding up race glosses again. 16 | 17 | [TISSUE:WOOD] 18 | [TISSUE_NAME:wood:wooden] 19 | [TISSUE_MATERIAL:LOCAL_CREATURE_MAT:WOOD] 20 | [TISSUE_LAYER:BY_CATEGORY:ALL:WOOD] 21 | [ITEMCORPSE:WOOD:NO_SUBTYPE:LOCAL_CREATURE_MAT:WOOD] 22 | [BODY_SIZE:0:0:12000] 23 | [ALL_ACTIVE] 24 | [TRADE_CAPACITY:15000] 25 | [MUNDANE] 26 | [ODOR_LEVEL:0] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/objects/creature_fanciful.txt: -------------------------------------------------------------------------------- 1 | creature_fanciful 2 | 3 | [OBJECT:CREATURE] 4 | 5 | [CREATURE:CHIMERA] 6 | [NAME:chimera:chimeras:chimeric] 7 | [CREATURE_TILE:109][COLOR:2:0:1] 8 | [FANCIFUL] 9 | [DOES_NOT_EXIST] 10 | [PREFSTRING:terrifying features] 11 | [ALL_ACTIVE] 12 | 13 | [CREATURE:CENTAUR] 14 | [NAME:centaur:centaurs:centaur] 15 | [CREATURE_TILE:80][COLOR:6:0:0] 16 | [FANCIFUL] 17 | [DOES_NOT_EXIST] 18 | [PREFSTRING:strength] 19 | [ALL_ACTIVE] 20 | [CASTE:FEMALE] 21 | [CASTE_NAME:centauress:centauresses:centauress] 22 | [FEMALE] 23 | [CASTE:MALE] 24 | [CASTE_NAME:centaur:centaurs:centaur] 25 | [MALE] 26 | 27 | [CREATURE:GRIFFON] 28 | [NAME:griffon:griffons:griffon] 29 | [CREATURE_TILE:78][COLOR:7:0:1] 30 | [FANCIFUL] 31 | [DOES_NOT_EXIST] 32 | [PREFSTRING:strength] 33 | [ALL_ACTIVE] 34 | [CASTE:FEMALE] 35 | [FEMALE] 36 | [CASTE:MALE] 37 | [MALE] -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/objects/creature_large_temperate.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/objects/creature_large_temperate.txt -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/objects/creature_small_mammal_new.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/objects/creature_small_mammal_new.txt -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/objects/creature_small_ocean.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pineapplemachine/PyDwarf/42c2661d696df479d69809dcee3e941e95a3e7ef/scripts/dragondeplatino/gemset/raw/objects/creature_small_ocean.txt -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemset/raw/onLoad.init: -------------------------------------------------------------------------------- 1 | multilevel 3 2 | multilevel shadowcolor 0.6 0.7 0.8 0.4 3 | multilevel fogcolor 0.6 0.8 1 4 | multilevel fogdensity 0.15 0 1 -------------------------------------------------------------------------------- /scripts/dragondeplatino/gemsetproperties.py: -------------------------------------------------------------------------------- 1 | ''' 2 | This script looks for changes to creature tiles and colors and similar information 3 | in files in gemset's raw/objects, then writes a more easily parseable file out 4 | for the PyDwarf gemset script to use. 5 | ''' 6 | 7 | import sys 8 | import os 9 | 10 | sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), '../..')) 11 | 12 | import json 13 | from pprint import pprint 14 | 15 | import raws 16 | 17 | gems = raws.dir('gemset/raw/objects') 18 | outputpath = 'gemsetproperties.json' 19 | 20 | # These are the propeties we care about for each object type 21 | tileproperties = { 22 | 'CREATURE': ( 23 | 'CREATURE_TILE', 24 | 'ALTTILE', 25 | ), 26 | 'INORGANIC': ( 27 | 'DISPLAY_COLOR', 28 | 'TILE', 29 | ), 30 | 'PLANT': ( 31 | 'PICKED_TILE', 32 | 'PICKED_COLOR', 33 | 'DEAD_PICKED_TILE', 34 | 'DEAD_PICKED_COLOR', 35 | 'SHRUB_TILE', 36 | 'SHRUB_COLOR', 37 | 'DEAD_SHRUB_TILE', 38 | 'DEAD_SHRUB_COLOR', 39 | 'TREE_TILE', 40 | 'TREE_COLOR', 41 | 'DEAD_TREE_TILE', 42 | 'DEAD_TREE_COLOR', 43 | 'SAPLING_TILE', 44 | 'SAPLING_COLOR', 45 | 'DEAD_SAPLING_TILE', 46 | 'DEAD_SAPLING_COLOR', 47 | 'GRASS_TILES', 48 | 'GRASS_COLORS', 49 | ), 50 | } 51 | 52 | # Get those properties for each object and do some special handling to get GROWTH_PRINT tokens as well 53 | data = {} 54 | growths = {} 55 | for objecttype, properties in tileproperties.iteritems(): 56 | data[objecttype] = {} 57 | for objecttoken in gems.allobj(objecttype): 58 | data[objecttype][objecttoken.arg()] = { 59 | prop.value: prop.args for prop in objecttoken.allprop(value_in=properties) 60 | } 61 | if objecttype == 'PLANT': 62 | growths[objecttoken.arg()] = { 63 | growth.arg(): growth.get('GROWTH_PRINT').args for growth in objecttoken.allprop('GROWTH') 64 | } 65 | 66 | # All done, output it to a file 67 | jsonout = { 68 | 'properties': data, 69 | 'growths': growths 70 | } 71 | with open(outputpath, 'wb') as jsonfile: 72 | json.dump(jsonout, jsonfile, indent=4) 73 | -------------------------------------------------------------------------------- /scripts/omniclasm/hack/decay/deteriorateclothes.rb: -------------------------------------------------------------------------------- 1 | class DeteriorateClothes 2 | 3 | def initialize 4 | end 5 | 6 | def process 7 | return false unless @running 8 | 9 | items = [df.world.items.other[:GLOVES], 10 | df.world.items.other[:ARMOR], 11 | df.world.items.other[:SHOES], 12 | df.world.items.other[:PANTS], 13 | df.world.items.other[:HELM]] 14 | 15 | items.each { |type| 16 | type.each { |i| 17 | if (i.subtype.armorlevel == 0 and i.flags.on_ground == true and i.wear > 0) 18 | i.wear_timer *= i.wear + 0.5 19 | if (i.wear > 2) 20 | i.flags.garbage_collect = true 21 | end 22 | end 23 | } 24 | } 25 | 26 | 27 | end 28 | 29 | def start 30 | @onupdate = df.onupdate_register('deteriorateclothes', 1200, 1200) { process } 31 | @running = true 32 | 33 | puts "Deterioration of old clothes commencing..." 34 | 35 | end 36 | 37 | def stop 38 | df.onupdate_unregister(@onupdate) 39 | @running = false 40 | end 41 | 42 | def status 43 | @running ? 'Running.' : 'Stopped.' 44 | end 45 | 46 | end 47 | 48 | case $script_args[0] 49 | when 'start' 50 | if ($DeteriorateClothes) 51 | $DeteriorateClothes.stop 52 | end 53 | 54 | $DeteriorateClothes = DeteriorateClothes.new 55 | $DeteriorateClothes.start 56 | 57 | when 'end', 'stop' 58 | $DeteriorateClothes.stop 59 | 60 | else 61 | if $DeteriorateClothes 62 | puts $DeteriorateClothes.status 63 | else 64 | puts 'Not loaded.' 65 | end 66 | end -------------------------------------------------------------------------------- /scripts/omniclasm/hack/decay/deterioratecorpses.rb: -------------------------------------------------------------------------------- 1 | class DeteriorateCorpses 2 | 3 | def initialize 4 | end 5 | 6 | def process 7 | return false unless @running 8 | 9 | df.world.items.other[:ANY_CORPSE].each { |i| 10 | if (i.flags.dead_dwarf == false) 11 | i.wear_timer += 1 12 | if (i.wear_timer > 24 + rand(8)) 13 | i.wear_timer = 0 14 | i.wear += 1 15 | end 16 | if (i.wear > 3) 17 | i.flags.garbage_collect = true 18 | end 19 | 20 | end 21 | 22 | } 23 | 24 | df.world.items.other[:REMAINS].each { |i| 25 | if (i.flags.dead_dwarf == false) 26 | i.wear_timer += 1 27 | if (i.wear_timer > 6) 28 | i.wear_timer = 0 29 | i.wear += 1 30 | end 31 | if (i.wear > 3) 32 | i.flags.garbage_collect = true 33 | end 34 | 35 | end 36 | 37 | } 38 | 39 | end 40 | 41 | def start 42 | @onupdate = df.onupdate_register('deterioratecorpses', 1200, 1200) { process } 43 | @running = true 44 | 45 | puts "Deterioration of body parts commencing..." 46 | 47 | end 48 | 49 | def stop 50 | df.onupdate_unregister(@onupdate) 51 | @running = false 52 | end 53 | 54 | def status 55 | @running ? 'Running.' : 'Stopped.' 56 | end 57 | 58 | end 59 | 60 | case $script_args[0] 61 | when 'start' 62 | if ($DeteriorateCorpses) 63 | $DeteriorateCorpses.stop 64 | end 65 | 66 | $DeteriorateCorpses = DeteriorateCorpses.new 67 | $DeteriorateCorpses.start 68 | 69 | when 'end', 'stop' 70 | $DeteriorateCorpses.stop 71 | 72 | else 73 | if $DeteriorateCorpses 74 | puts $DeteriorateCorpses.status 75 | else 76 | puts 'Not loaded.' 77 | end 78 | end -------------------------------------------------------------------------------- /scripts/omniclasm/hack/decay/deterioratefood.rb: -------------------------------------------------------------------------------- 1 | class DeteriorateFood 2 | 3 | def initialize 4 | end 5 | 6 | def process 7 | return false unless @running 8 | 9 | items = [df.world.items.other[:FISH], 10 | df.world.items.other[:FISH_RAW], 11 | df.world.items.other[:EGG], 12 | df.world.items.other[:CHEESE], 13 | df.world.items.other[:PLANT], 14 | df.world.items.other[:PLANT_GROWTH], 15 | df.world.items.other[:FOOD]] 16 | 17 | items.each { |type| 18 | type.each { |i| 19 | i.wear_timer += 1 20 | if (i.wear_timer > 24 + rand(8)) 21 | i.wear_timer = 0 22 | i.wear += 1 23 | end 24 | if (i.wear > 3) 25 | i.flags.garbage_collect = true 26 | end 27 | } 28 | } 29 | 30 | 31 | end 32 | 33 | def start 34 | @onupdate = df.onupdate_register('deterioratefood', 1200, 1200) { process } 35 | @running = true 36 | 37 | puts "Deterioration of food commencing..." 38 | 39 | end 40 | 41 | def stop 42 | df.onupdate_unregister(@onupdate) 43 | @running = false 44 | end 45 | 46 | def status 47 | @running ? 'Running.' : 'Stopped.' 48 | end 49 | 50 | end 51 | 52 | case $script_args[0] 53 | when 'start' 54 | if ($DeteriorateFood) 55 | $DeteriorateFood.stop 56 | end 57 | 58 | $DeteriorateFood = DeteriorateFood.new 59 | $DeteriorateFood.start 60 | 61 | when 'end', 'stop' 62 | $DeteriorateFood.stop 63 | 64 | else 65 | if $DeteriorateFood 66 | puts $DeteriorateFood.status 67 | else 68 | puts 'Not loaded.' 69 | end 70 | end -------------------------------------------------------------------------------- /scripts/omniclasm/hack/decay/starvingdead.rb: -------------------------------------------------------------------------------- 1 | class StarvingDead 2 | 3 | def initialize 4 | @threshold = 1 5 | @die_threshold = 3 6 | end 7 | 8 | def process 9 | return false unless @running 10 | 11 | month_length = 67200 12 | 13 | if (@undead_count >= 25) 14 | month_length *= 25 / @undead_count 15 | end 16 | 17 | @undead_count = 0 18 | df.world.units.active.each { |u| 19 | if (u.enemy.undead and not u.flags1.dead) 20 | @undead_count += 1 21 | if (u.curse.time_on_site > month_length * @threshold) 22 | u.body.physical_attrs.each { |att| 23 | att.value = att.value - (att.value * 0.02) 24 | } 25 | end 26 | 27 | if (u.curse.time_on_site > month_length * @die_threshold) 28 | u.flags1.dead = true 29 | u.curse.rem_tags2.FIT_FOR_ANIMATION = true 30 | end 31 | 32 | end 33 | 34 | } 35 | 36 | end 37 | 38 | def start 39 | @onupdate = df.onupdate_register('starvingdead', 1200, 1200) { process } 40 | @running = true 41 | @undead_count = 0 42 | 43 | if ($script_args[1] and $script_args[1].gsub(/[^0-9\.]/,'').to_f > 0) 44 | @threshold = $script_args[1].gsub(/[^0-9\.]/,'').to_f 45 | end 46 | 47 | if ($script_args[2] and $script_args[2].gsub(/[^0-9\.]/,'').to_f > 0) 48 | @die_threshold = $script_args[2].gsub(/[^0-9\.]/,'').to_f 49 | end 50 | 51 | puts "Starving Dead starting...weakness starts at #{@threshold} months, true death at #{@die_threshold} months" 52 | end 53 | 54 | def stop 55 | df.onupdate_unregister(@onupdate) 56 | @running = false 57 | end 58 | 59 | def status 60 | @running ? 'Running.' : 'Stopped.' 61 | end 62 | 63 | end 64 | 65 | case $script_args[0] 66 | when 'start' 67 | 68 | if ($StarvingDead) 69 | $StarvingDead.stop 70 | end 71 | 72 | $StarvingDead = StarvingDead.new 73 | $StarvingDead.start 74 | 75 | when 'end', 'stop' 76 | $StarvingDead.stop 77 | 78 | else 79 | if $StarvingDead 80 | puts $StarvingDead.status 81 | else 82 | puts 'Not loaded.' 83 | end 84 | end -------------------------------------------------------------------------------- /scripts/pineapple/pydwarf.adoptsowner.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | 3 | @pydwarf.urist( 4 | name = 'pineapple.adoptsowner', 5 | title = 'Remove ADOPTS_OWNER Tokens', 6 | version = '1.0.0', 7 | author = 'Sophie Kirschner', 8 | description = '''ADOPTS_OWNER tokens are added to or removed from creatures.''', 9 | arguments = { 10 | 'add_to': '''If set to None, no ADOPTS_OWNER tokens are added. If set 11 | to '*', tokens are added to all creatures. If set to an iterable 12 | containing IDs of creatures, ADOPTS_OWNER will be added to each 13 | of those creatures. Defaults to None.''', 14 | 'remove_from': '''If set to None, no ADOPTS_OWNER tokens are removed. 15 | If set to '*', all ADOPTS_OWNER tokens are removed. If set to an 16 | iterable containing IDs of creatures, ADOPTS_OWNER will be 17 | removed from each of those creatures. Defaults to '*'.''' 18 | }, 19 | compatibility = (pydwarf.df_0_2x, pydwarf.df_0_3x, pydwarf.df_0_40) 20 | ) 21 | def adoptsowner(df, add_to=None, remove_from='*'): 22 | return pydwarf.urist.getfn('pineapple.utils.objecttokens')( 23 | df, 24 | object_type = 'CREATURE', 25 | token = 'ADOPTS_OWNER', 26 | add_to = add_to, 27 | remove_from = remove_from 28 | ) 29 | -------------------------------------------------------------------------------- /scripts/pineapple/pydwarf.bauxitetoaluminum.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | 3 | 4 | 5 | default_entities = ['MOUNTAIN'] 6 | 7 | default_file = 'raw/objects/reaction_smelter_bauxtoalum_pineapple.txt' 8 | 9 | 10 | 11 | @pydwarf.urist( 12 | name = 'pineapple.bauxitetoaluminum', 13 | title = 'Smelt Bauxite to Aluminum', 14 | version = '1.0.2', 15 | author = 'Sophie Kirschner', 16 | description = '''Adds a reaction to the smelter to allow the creation of aluminum bars 17 | from bauxite (as ore) and cryolite (as flux). Credit to this forum discussion for the 18 | reaction and general inspiration: 19 | http://www.bay12forums.com/smf/index.php?topic=31523.0''', 20 | arguments = { 21 | 'aluminum_value': '''Multiplies the MATERIAL_VALUE of aluminum by this much. 22 | Defaults to 0.75 to account for the increased availability of aluminum as a 23 | consequence of the new reaction.''', 24 | 'entities': 'Adds the reaction to these entities. Defaults to only MOUNTAIN.', 25 | 'add_to_file': 'Adds the reaction to this file.' 26 | }, 27 | compatibility = (pydwarf.df_0_3x, pydwarf.df_0_40) 28 | ) 29 | def bauxitetoaluminum(df, aluminum_value=0.75, entities=default_entities, add_to_file=default_file): 30 | # Affect value of aluminum 31 | pydwarf.log.debug('Multiplying value of aluminum by %f.' % aluminum_value) 32 | try: 33 | aluminum = df.getobj('INORGANIC:ALUMINUM') 34 | if aluminum is None: return pydwarf.failure('Couldn\'t find aluminum token to affect its value.') 35 | matvaluetoken = aluminum.getprop('MATERIAL_VALUE') 36 | matvaluetoken.args[0] = int( float(matvaluetoken.args[0]) * aluminum_value ) 37 | except: 38 | pydwarf.log.exception('Failed to affect value of aluminum.') 39 | return pydwarf.failure() 40 | 41 | # Add the reaction 42 | return pydwarf.urist.getfn('pineapple.utils.addobject')( 43 | df, 44 | type = 'REACTION', 45 | id = 'SMELT_BAUXITE_ALUMINUM_PINEAPPLE', 46 | tokens = ''' 47 | [NAME:smelt aluminum from bauxite] 48 | [SMELTER] 49 | [REAGENT:1:STONE:NO_SUBTYPE:STONE:BAUXITE] 50 | [REAGENT:1:STONE:NO_SUBTYPE:STONE:CRYOLITE] 51 | [PRODUCT:100:1:BAR:NO_SUBTYPE:METAL:ALUMINUM] 52 | [FUEL] 53 | ''', 54 | add_to_file = add_to_file, 55 | permit_entities = entities 56 | ) 57 | -------------------------------------------------------------------------------- /scripts/pineapple/pydwarf.boneflux.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | 3 | 4 | 5 | default_product_id = 'CALCITE' 6 | 7 | default_reaction_name = 'make calcite from bones' 8 | 9 | default_bone_count = 2 10 | 11 | default_entities = ['MOUNTAIN', 'PLAINS'] 12 | 13 | default_file = 'raw/objects/reaction_kiln_boneflux_pineapple.txt' 14 | 15 | 16 | 17 | @pydwarf.urist( 18 | name = 'pineapple.boneflux', 19 | title = 'Flux From Bones', 20 | version = '1.0.2', 21 | author = 'Sophie Kirschner', 22 | description = '''Adds a reaction to the kiln which consumes bones and produces flux. 23 | Inspired by/stolen from Rubble's Bone Flux mod.''', 24 | arguments = { 25 | 'product_id': 'ID of the boulder to get out of the reaction. Defaults to CALCITE.', 26 | 'reaction_name': 'The name of the reaction to be shown in the kiln.', 27 | 'bone_count': 'The number of bones required in the reaction.', 28 | 'entities': 'Adds the reaction to these entities. Defaults to MOUNTAIN and PLAINS.', 29 | 'add_to_file': 'Adds the reaction to this file.' 30 | }, 31 | compatibility = (pydwarf.df_0_2x, pydwarf.df_0_3x, pydwarf.df_0_40) 32 | ) 33 | def boneflux(df, product_id=default_product_id, reaction_name=default_reaction_name, bone_count=default_bone_count, entities=default_entities, add_to_file=default_file): 34 | return pydwarf.urist.getfn('pineapple.utils.addobject')( 35 | df, 36 | type = 'REACTION', 37 | id = 'BONE_TO_FLUX_PINEAPPLE', 38 | tokens = ''' 39 | [NAME:%(name)s] 40 | [BUILDING:KILN:NONE] 41 | [REAGENT:bone:%(bones)s:NONE:NONE:NONE:NONE] 42 | [USE_BODY_COMPONENT] 43 | [ANY_BONE_MATERIAL] 44 | [PRODUCT:100:1:BOULDER:NONE:INORGANIC:%(product)s] 45 | [FUEL] 46 | [SKILL:SMELT] 47 | ''' % { 48 | 'name': reaction_name, 49 | 'product': product_id, 50 | 'bones': bone_count 51 | }, 52 | add_to_file = add_to_file, 53 | permit_entities = entities 54 | ) 55 | -------------------------------------------------------------------------------- /scripts/pineapple/pydwarf.butcherinorganic.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | import raws 3 | 4 | default_templates = { 5 | 'WOOD_TEMPLATE': 'WOOD', 6 | 'METAL_TEMPLATE': 'BARS', 7 | 'STONE_TEMPLATE': 'BOULDER' 8 | } 9 | 10 | @pydwarf.urist( 11 | name = 'pineapple.butcherinorganic', 12 | title = 'Butcher Inorganic Corpses', 13 | version = '1.0.0', 14 | author = 'Sophie Kirschner', 15 | description = '''Allows butchering of some inorganics, get things like wood 16 | or stone from some corpses. Inspired by/stolen from Igfig's Modest Mod.''', 17 | arguments = { 18 | 'templates': '''Associates material template names as keys with items as 19 | values. Each named template will be given a BUTCHER_SPECIAL:ITEM:NONE 20 | token, where ITEM is the value given. Defaults to adding logs, bars, 21 | and boulders to wood, metal, and stone templates respectively.''' 22 | }, 23 | compatibility = (pydwarf.df_0_3x, pydwarf.df_0_40) 24 | ) 25 | def butcherinorganic(df, templates=default_templates): 26 | added = 0 27 | 28 | # Apply BUTCHER_SPECIAL tokens to material templates 29 | for templatename, butcherspecial in templates.iteritems(): 30 | template = df.getobj(type='MATERIAL_TEMPLATE', exact_id=templatename) 31 | if template: 32 | pydwarf.log.debug('Adding BUTCHER_SPECIAL item %s to material template %s.' % (butcherspecial, templatename)) 33 | template.addprop(raws.token(value='BUTCHER_SPECIAL', args=[butcherspecial, 'NONE'])) 34 | added += 1 35 | else: 36 | pydwarf.log.error('Unable to find template %s, skipping.' % templatename) 37 | 38 | # All done! 39 | if added > 0: 40 | return pydwarf.success('Added BUTCHER_SPECIAL to %d material templates.' % added) 41 | else: 42 | return pydwarf.failure('Added BUTCHER_SPECIAL to no material templates.') 43 | -------------------------------------------------------------------------------- /scripts/pineapple/pydwarf.castanvil.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | 3 | 4 | 5 | default_entities = 'MOUNTAIN' 6 | 7 | default_anvil_cost = 5 # Cost in iron bars 8 | 9 | default_file = 'raw/objects/reaction_smelter_castanvil_pineapple.txt' 10 | 11 | 12 | 13 | @pydwarf.urist( 14 | name = 'pineapple.castanvil', 15 | title = 'Cast Anvil at Smelter', 16 | version = '1.0.1', 17 | author = 'Sophie Kirschner', 18 | description = '''Adds a reaction to the smelter which makes it possible to 19 | create an iron anvil without already having a forge. 20 | Inspired by/stolen from Rubble's Cast Anvil mod.''', 21 | arguments = { 22 | 'anvil_cost': 'The cost in iron bars to create an anvil in this way. Defaults to 5.', 23 | 'entities': 'Adds the reaction to these entities. Defaults to only MOUNTAIN.', 24 | 'add_to_file': 'Adds the reaction to this file.' 25 | }, 26 | compatibility = (pydwarf.df_0_3x, pydwarf.df_0_40) 27 | ) 28 | def castanvil(df, anvil_cost=default_anvil_cost, entities=default_entities, add_to_file=default_file): 29 | # Super easy using pineapple.utils 30 | return pydwarf.urist.getfn('pineapple.utils.addobject')( 31 | df, 32 | type = 'REACTION', 33 | id = 'CAST_IRON_ANVIL_PINEAPPLE', 34 | tokens = ''' 35 | [NAME:cast iron anvil] 36 | [BUILDING:SMELTER:NONE] 37 | [REAGENT:A:%d:BAR:NO_SUBTYPE:METAL:IRON] 38 | [PRODUCT:100:1:ANVIL:NONE:METAL:IRON] 39 | [FUEL] 40 | [SKILL:SMELT] 41 | ''' % (anvil_cost * 150), 42 | add_to_file = add_to_file, 43 | permit_entities = entities 44 | ) 45 | -------------------------------------------------------------------------------- /scripts/pineapple/pydwarf.deerappear.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | 3 | @pydwarf.urist( 4 | name = 'pineapple.deerappear', 5 | title = 'Change Creature Apperance', 6 | version = '1.0.1', 7 | author = 'Sophie Kirschner', 8 | description = 'Changes the appearance of each deer from a brown D to yellow d.', 9 | arguments = { 10 | 'creature': 'Change the creature whose appearance will be modified. (Heresy!)', 11 | 'tile': 'Set the tile that the deer\'s appeance will be set to.', 12 | 'color': 'Set the arguments that the deer\'s color token will be given.' 13 | }, 14 | compatibility = (pydwarf.df_0_40, pydwarf.df_0_3x, pydwarf.df_0_2x) 15 | ) 16 | def deerappear(df, creature='DEER', tile="'d'", color=['6','0','1']): 17 | # Find the first token that looks like [CREATURE:DEER] 18 | deertoken = df.getobj('CREATURE', creature) 19 | if deertoken: 20 | # Find the first token, following [CREATURE:DEER], that looks like [CREATURE_TILE:'D'] 21 | deertile = deertoken.getprop(exact_value='CREATURE_TILE', args_count=1) 22 | # Find the first token, following [CREATURE:DEER], that looks like [COLOR:6:0:0] 23 | deercolor = deertoken.getprop(exact_value='COLOR', args_count=3) 24 | if deertile and deercolor: 25 | # Change the token to look like [CREATURE_TILE:'d'] 26 | deertile.args[0] = tile 27 | # Change the token to look like [COLOR:6:0:1] 28 | deercolor.args = color 29 | return pydwarf.success() 30 | else: 31 | return pydwarf.failure('Didn\'t find CREATURE_TILE and COLOR tokens as expected.') 32 | else: 33 | return pydwarf.failure('I couldn\'t find the deer token.') 34 | -------------------------------------------------------------------------------- /scripts/pineapple/pydwarf.flybears.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | 3 | @pydwarf.urist( 4 | name = 'pineapple.flybears', 5 | title = 'Flybears', 6 | version = '1.0.0', 7 | author = 'Sophie Kirschner', 8 | description = 'Example script which causes all female bears to fly.', 9 | compatibility = (pydwarf.df_0_3x, pydwarf.df_0_40) 10 | ) 11 | def flybears(df): 12 | # Get all bear creature tokens 13 | bears = df.allobj('CREATURE', re_id='BEAR_.+') 14 | 15 | # Add [FLIER] to each of them, immediately after the first CASTE:FEMALE token 16 | for bear in bears: 17 | bear.get('CASTE:FEMALE').add('FLIER') 18 | 19 | # All done! 20 | if len(bears): 21 | return pydwarf.success('Made %d bear species fliers.' % len(bears)) 22 | else: 23 | return pydwarf.failure('Couldn\'t find any bears to make fliers.') 24 | -------------------------------------------------------------------------------- /scripts/pineapple/pydwarf.greensteel.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | import raws 3 | 4 | 5 | 6 | greendir = pydwarf.rel(__file__, 'raw/greensteel') 7 | 8 | default_entities = 'MOUNTAIN' 9 | 10 | 11 | 12 | @pydwarf.urist( 13 | name = 'pineapple.greensteel', 14 | title = 'Green Steel Alloy', 15 | version = '1.0.1', 16 | author = 'Sophie Kirschner', 17 | description = '''Adds an alloy which is lighter and sharper than steel but 18 | not so much as adamantine. It can be made from similar ingredients as 19 | steel with the addition of adamantine bars or a new adamant ore.''', 20 | arguments = { 21 | 'entities': '''The entities which should be permitted this reaction. 22 | Defaults to only MOUNTAIN.''' 23 | }, 24 | compatibility = (pydwarf.df_0_3x, pydwarf.df_0_40) 25 | ) 26 | def greensteel(df, entities=default_entities): 27 | # Add greensteel raws 28 | return pydwarf.urist.getfn('pineapple.easypatch')( 29 | df, 30 | files = greendir, 31 | loc = 'raw/objects', 32 | permit_entities = entities 33 | ) 34 | -------------------------------------------------------------------------------- /scripts/pineapple/pydwarf.metalitems.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | import raws 3 | 4 | 5 | 6 | default_metals = [ 7 | 'IRON', 'GOLD', 'SILVER', 'COPPER', 'NICKEL', 'BRONZE', 'STEEL', 8 | 'PLATINUM', 'ELECTRUM', 'TIN', 'ALUMINUM', 'NICKEL_SILVER', 9 | 'STERLING_SILVER', 'BLACK_BRONZE', 'ROSE_GOLD', 'BISMUTH_BRONZE', 10 | 'ADAMANTINE' 11 | ] 12 | 13 | default_item_tokens = [ 14 | 'ITEMS_WEAPON', 'ITEMS_WEAPON_RANGED', 'ITEMS_ANVIL', 'ITEMS_AMMO', 15 | 'ITEMS_DIGGER', 'ITEMS_ARMOR', 'ITEMS_DELICATE', 'ITEMS_SIEGE_ENGINE', 'ITEMS_QUERN' 16 | ] 17 | 18 | item_tokens_no_anvil = list(default_item_tokens) 19 | item_tokens_no_anvil.remove('ITEMS_ANVIL') 20 | 21 | 22 | 23 | @pydwarf.urist( 24 | name = 'pineapple.metalitems', 25 | title = 'Forge More Metal Items', 26 | version = '1.0.2', 27 | author = 'Sophie Kirschner', 28 | description = 'Allows the forging of every type of metal item from the specified metals.', 29 | arguments = { 30 | 'metals': 'These metals will be made to allow forging of each item specified.', 31 | 'items': 'These are the items that the listed metals will always be allowed for.' 32 | }, 33 | compatibility = (pydwarf.df_0_3x, pydwarf.df_0_40) 34 | ) 35 | def metalitems(df, metals=default_metals, items=default_item_tokens): 36 | # Turn the item names into a list of tokens 37 | itemtokens = [raws.token(value=item) for item in items] 38 | 39 | # Apply to each metal 40 | affected = df.allobj(type='INORGANIC', id_in=metals).each( 41 | lambda token: ( 42 | # Remove existing tokens first to prevent duplicates when adding 43 | token.removeallprop(value_in=items), 44 | # And now add the specified tokens 45 | token.addprop(raws.helpers.copytokens(itemtokens)) 46 | ) 47 | ) 48 | 49 | # All done! 50 | if affected: 51 | return pydwarf.success('Affected %d metals.' % len(affected)) 52 | else: 53 | return pydwarf.failure('Affected no metals.') 54 | -------------------------------------------------------------------------------- /scripts/pineapple/pydwarf.noanimalmen.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | 3 | @pydwarf.urist( 4 | name = 'pineapple.noanimalmen', 5 | title = 'Remove Animal Men', 6 | version = '1.0.1', 7 | author = 'Sophie Kirschner', 8 | description = ''' 9 | Removes all creatures which either have a [APPLY_CREATURE_VARIATION:ANIMAL_PERSON] 10 | token or have an ID ending in '_MAN'. 11 | ''', 12 | arguments = {}, 13 | compatibility = (pydwarf.df_0_3x, pydwarf.df_0_40) 14 | ) 15 | def noanimalmen(df): 16 | # Do the removing 17 | removed = [removedprop for removedprop in df.allobj('CREATURE').each( 18 | lambda token: token.removeselfandprops() if ( 19 | token.arg().endswith('_MAN') or token.arg().endswith(' MAN') or 20 | token.getprop('APPLY_CREATURE_VARIATION:ANIMAL_PERSON') 21 | ) else None 22 | ) if removedprop] 23 | 24 | # All done! 25 | if removed: 26 | return pydwarf.success('Removed %d species of animal men.' % len(removed)) 27 | else: 28 | return pydwarf.failure('Found no animal men to remove.') 29 | -------------------------------------------------------------------------------- /scripts/pineapple/pydwarf.noaquifers.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | 3 | @pydwarf.urist( 4 | name = 'pineapple.noaquifers', 5 | version = '1.0.1', 6 | author = 'Sophie Kirschner', 7 | description = 'Removes all AQUIFER tokens.', 8 | compatibility = (pydwarf.df_0_27, pydwarf.df_0_28, pydwarf.df_0_3x, pydwarf.df_0_40) 9 | ) 10 | def noaquifers(df): 11 | # Do the removing 12 | aquifers = df.removeall('AQUIFER') 13 | # All done! 14 | if len(aquifers): 15 | return pydwarf.success('Removed %d AQUIFER tokens.' % len(aquifers)) 16 | else: 17 | return pydwarf.failure('Found no AQUIFER tokens.') 18 | -------------------------------------------------------------------------------- /scripts/pineapple/pydwarf.noexotic.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | 3 | @pydwarf.urist( 4 | name = 'pineapple.noexotic', 5 | title = 'No Exotic Pets or Mounts', 6 | version = '1.0.1', 7 | author = 'Sophie Kirschner', 8 | description = 'Replaces all [PET_EXOTIC] and [MOUNT_EXOTIC] tags with their non-exotic counterparts.', 9 | compatibility = (pydwarf.df_0_34, pydwarf.df_0_40) 10 | ) 11 | def noexotic(df): 12 | # Do the removing 13 | pets = df.all('PET_EXOTIC').each(lambda token: token.setvalue('PET'), none=True) 14 | mounts = df.all('MOUNT_EXOTIC').each(lambda token: token.setvalue('MOUNT'), none=True) 15 | 16 | # All done! 17 | if len(pets) or len(mounts): 18 | return pydwarf.success('Replaced %d PET_EXOTIC and %d MOUNT_EXOTIC tokens.' % (len(pets), len(mounts))) 19 | else: 20 | return pydwarf.failure('I found no PET_EXOTIC or MOUNT_EXOTIC tokens to replace.') 21 | -------------------------------------------------------------------------------- /scripts/pineapple/pydwarf.nogiantanimals.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | 3 | @pydwarf.urist( 4 | name = 'pineapple.nogiantanimals', 5 | title = 'Remove Giant Creatures', 6 | version = '1.0.0', 7 | author = 'Sophie Kirschner', 8 | description = ''' 9 | Removes all creatures which either have a [APPLY_CREATURE_VARIATION:GIANT] 10 | token or have an ID matching a few patterns which involve the word 'GIANT' or 'GIGANTIC'. 11 | ''', 12 | arguments = {}, 13 | compatibility = (pydwarf.df_0_3x, pydwarf.df_0_40) 14 | ) 15 | def nogiantanimals(df): 16 | # Do the removing 17 | removed = [removedprop for removedprop in df.allobj('CREATURE').each( 18 | lambda token: ( 19 | token.removeselfandprops() if( 20 | token.arg().startswith('GIANT_') or 21 | token.arg().endswith(', GIANT') or 22 | token.arg().endswith('_GIANT') or 23 | token.arg().startswith('GIANT ') or 24 | token.arg().startswith('GIGANTIC ') or 25 | token.getprop('APPLY_CREATURE_VARIATION:GIANT') 26 | ) else None 27 | ) 28 | ) if removedprop] 29 | 30 | # All done! 31 | if removed: 32 | return pydwarf.success('Removed %d species of giant animals.' % len(removed)) 33 | else: 34 | return pydwarf.failure('Found no giant animals to remove.') 35 | -------------------------------------------------------------------------------- /scripts/pineapple/pydwarf.nograzers.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | 3 | @pydwarf.urist( 4 | name = 'pineapple.nograzers', 5 | title = 'Remove Grazing Tokens', 6 | version = '1.0.1', 7 | author = 'Sophie Kirschner', 8 | description = 'Removes all [GRAZER] and [STANDARD_GRAZER] tokens.', 9 | compatibility = (pydwarf.df_0_34, pydwarf.df_0_40) 10 | ) 11 | def nograzers(df): 12 | # Do the removing 13 | grazers = df.removeall('GRAZER') 14 | standardgrazers = df.removeall('STANDARD_GRAZER') 15 | 16 | # All done! 17 | if len(grazers) or len(standardgrazers): 18 | return pydwarf.success('Removed %d GRAZER and %d STANDARD_GRAZER tokens.' % (len(grazers), len(standardgrazers))) 19 | else: 20 | return pydwarf.failure('I found no grazer tokens to remove.') 21 | -------------------------------------------------------------------------------- /scripts/pineapple/pydwarf.playanimalmen.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | 3 | @pydwarf.urist( 4 | name = 'pineapple.playanimalmen', 5 | title = 'Animal Men Playable in Adventure Mode', 6 | version = '1.0.0', 7 | author = 'Sophie Kirschner', 8 | description = '''Makes all animal men playable in adventure mode by adding a 9 | [OUTSIDER_CONTROLLABLE] token to each.''', 10 | ) 11 | def playanimalmen(df): 12 | added = set() 13 | 14 | for animalman in df.allobj('CREATURE', re_id='.+MAN'): 15 | needprops = ('LARGE_ROAMING', 'CAN_LEARN', 'CAN_SPEAK') 16 | if( 17 | animalman.getprop('APPLY_CREATURE_VARIATION:ANIMAL_PERSON') or 18 | all(animalman.getprop(prop) for prop in needprops) 19 | ): 20 | animalman.addprop('OUTSIDER_CONTROLLABLE') 21 | added.add(animalman.args[0]) 22 | 23 | # All done, now let PyDwarf know the script did its job successfully. 24 | return pydwarf.success('Added OUTSIDER_CONTROLLABLE tokens to %d creatures.' % len(added)) 25 | -------------------------------------------------------------------------------- /scripts/pineapple/pydwarf.playcivs.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | 3 | 4 | 5 | @pydwarf.urist( 6 | name = 'pineapple.playcivs.controllable', 7 | title = 'Civilizations Playable in Fortress Mode', 8 | version = '1.0.0', 9 | author = 'Sophie Kirschner', 10 | description = '''Makes civilizations playable in fortress mode by adding 11 | [SITE_CONTROLLABLE] tokens to them. Defaults to making all civilizations 12 | controllable in this way, but the script accepts an entities argument 13 | that can be used to set which entities should receive the token. Any 14 | entities which possess the token at the time of running the script but 15 | aren't in the entities list will have the token removed! 16 | Note that if this isn't used in conjunction with other mods, it may not 17 | be practical to play as non-dwarf civilizations due to missing items, 18 | professions, reactions, etc.''', 19 | arguments = { 20 | 'entities': '''The entities to which [SITE_CONTROLLABLE] tokens should 21 | belong. Defaults to "*", meaning all entities should be controllable.''' 22 | } 23 | ) 24 | def controllable(df, entities='*'): 25 | controllable = set() 26 | 27 | if entities == '*': # Enable all entities 28 | for entity in df.allobj('ENTITY'): 29 | entity.setprop('SITE_CONTROLLABLE') 30 | controllable.add(entity.args[0]) 31 | else: # Enable listed entities and disable others 32 | entities = set([entities]) if isinstance(entities, basestring) else set(entities) 33 | for entity in df.allobj('ENTITY'): 34 | if entity.args[0] in entities: 35 | entity.setprop('SITE_CONTROLLABLE') 36 | controllable.add(entity.args[0]) 37 | entities.remove(entity.args[0]) 38 | else: 39 | entity.removeprop('SITE_CONTROLLABLE') 40 | if entities: 41 | pydwarf.log.error( 42 | 'Nonexistent objects in controllable entities list: %s' % ', '.join(entities) 43 | ) 44 | 45 | if controllable: 46 | return pydwarf.success('Assigned %d controllable entities.' % len(controllable)) 47 | else: 48 | return pydwarf.failure('Assigned no controllable entities.') 49 | -------------------------------------------------------------------------------- /scripts/pineapple/pydwarf.subplants.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | import raws 3 | 4 | seasons = ('SPRING', 'SUMMER', 'AUTUMN', 'WINTER') 5 | 6 | @pydwarf.urist( 7 | name = 'pineapple.subplants', 8 | title = 'Subterranean Plants Grow Year-Round', 9 | version = '1.0.1', 10 | author = 'Sophie Kirschner', 11 | description = 'Makes all subterranean plants grow year-round.', 12 | compatibility = (pydwarf.df_0_34, pydwarf.df_0_40) 13 | ) 14 | def subterraneanplants(df): 15 | # Get subterranean plants 16 | subplants = [] 17 | for plant in df.allobj('PLANT'): 18 | if plant.getprop('BIOME:SUBTERRANEAN_WATER'): 19 | subplants.append(plant) 20 | if not len(subplants): return pydwarf.failure('Found no subterranean plants.') 21 | 22 | # Ensure each has all four seasons 23 | pydwarf.log.info('Found %d subterranean plants. Modifying...' % len(subplants)) 24 | modified = 0 25 | for subplant in subplants: 26 | seasontokens = subplant.allprop(value_in=seasons) 27 | if len(seasontokens) > 0 and len(seasontokens) < len(seasons): 28 | pydwarf.log.debug('Adding season tokens to %s...' % subplant) 29 | # First remove the existing tokens (To avoid making duplicates) 30 | for seasontoken in seasontokens: 31 | seasontoken.remove() 32 | # Then add all four anew 33 | for season in seasons: 34 | subplant.add(raws.token(value=season)) 35 | modified += 1 36 | else: 37 | pydwarf.log.debug('Plant %s either has no seasonal tokens or already has all of them, skipping.' % subplant) 38 | 39 | # All done 40 | if modified > 0: 41 | return pydwarf.success('Made %d subterranean plants grow year-round.' % modified) 42 | else: 43 | return pydwarf.failure('All subterranean plants already grew year-round.') 44 | -------------------------------------------------------------------------------- /scripts/pineapple/pydwarf.woodmechanisms.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | 3 | 4 | 5 | default_log_count = 1 6 | 7 | default_entities = ['MOUNTAIN', 'PLAINS'] 8 | 9 | default_file = 'raw/objects/reaction_woodmechanisms_pineapple.txt' 10 | 11 | 12 | 13 | @pydwarf.urist( 14 | name = 'pineapple.woodmechanisms', 15 | title = 'Craft Wooden Mechanisms', 16 | version = '1.0.1', 17 | author = 'Sophie Kirschner', 18 | description = '''Allows construction of wooden mechanisms at the craftdwarf's workshop. 19 | Inspired by/stolen from Rubble's Wooden Mechanisms mod.''', 20 | arguments = { 21 | 'log_count': 'The number of logs required in the reaction.', 22 | 'entities': 'Adds the reaction to these entities. Defaults to MOUNTAIN and PLAINS.', 23 | 'add_to_file': 'Adds the reaction to this file.' 24 | }, 25 | compatibility = (pydwarf.df_0_2x, pydwarf.df_0_3x, pydwarf.df_0_40) 26 | ) 27 | def woodmechanisms(df, log_count=default_log_count, entities=default_entities, add_to_file=default_file): 28 | return pydwarf.urist.getfn('pineapple.utils.addobject')( 29 | df, 30 | type = 'REACTION', 31 | id = 'WOODEN_MECHANISMS_PINEAPPLE', 32 | tokens = ''' 33 | [NAME:craft wooden mechanisms] 34 | [BUILDING:CRAFTSMAN:NONE] 35 | [REAGENT:A:%d:WOOD:NONE:NONE:NONE] 36 | [PRODUCT:100:1:TRAPPARTS:NONE:GET_MATERIAL_FROM_REAGENT:A:NONE] 37 | [SKILL:MECHANICS] 38 | ''' % log_count, 39 | add_to_file = add_to_file, 40 | permit_entities = entities 41 | ) 42 | -------------------------------------------------------------------------------- /scripts/pineapple/raw/greensteel/reaction_green_steel_pineapple.txt: -------------------------------------------------------------------------------- 1 | reaction_green_steel_pineapple 2 | 3 | [OBJECT:REACTION] 4 | 5 | 2 green steel bars from 1 adamant bar, 1 pig iron bar, 1 flux, and 1 coke. 6 | 7 | [REACTION:GREEN_STEEL_MAKING_ADAMANT_PINEAPPLE] 8 | [NAME:make green steel bars from adamant] 9 | [BUILDING:SMELTER:NONE] 10 | [REAGENT:A:150:BAR:NO_SUBTYPE:METAL:ADAMANT_PINEAPPLE] 11 | [REAGENT:B:150:BAR:NO_SUBTYPE:METAL:PIG_IRON] 12 | [REAGENT:C:1:BOULDER:NO_SUBTYPE:NONE:NONE][REACTION_CLASS:FLUX] 13 | [REAGENT:D:150:BAR:NO_SUBTYPE:COAL:NO_MATGLOSS] 14 | [PRODUCT:100:2:BAR:NO_SUBTYPE:METAL:GREEN_STEEL_PINEAPPLE][PRODUCT_DIMENSION:150] 15 | [FUEL] 16 | [SKILL:SMELT] 17 | 18 | 3 green steel bars from 1 adamantine bar, 2 pig iron bars, 1 flux, and 1 coke. 19 | 20 | [REACTION:GREEN_STEEL_MAKING_ADMANTINE_PINEAPPLE] 21 | [NAME:make green steel bars from adamantine] 22 | [BUILDING:SMELTER:NONE] 23 | [REAGENT:A:150:BAR:NO_SUBTYPE:METAL:ADAMANTINE] 24 | [REAGENT:B:300:BAR:NO_SUBTYPE:METAL:PIG_IRON] 25 | [REAGENT:C:1:BOULDER:NO_SUBTYPE:NONE:NONE][REACTION_CLASS:FLUX] 26 | [REAGENT:D:150:BAR:NO_SUBTYPE:COAL:NO_MATGLOSS] 27 | [PRODUCT:100:3:BAR:NO_SUBTYPE:METAL:GREEN_STEEL_PINEAPPLE][PRODUCT_DIMENSION:150] 28 | [FUEL] 29 | [SKILL:SMELT] 30 | -------------------------------------------------------------------------------- /scripts/pineapple/raw/tools/item_weapon_dagger_pineapple.txt: -------------------------------------------------------------------------------- 1 | item_weapon_dagger_pineapple 2 | 3 | [OBJECT:ITEM] 4 | 5 | [ITEM_TOOL:ITEM_WEAPON_DAGGER_PINEAPPLE] 6 | [NAME:dagger:daggers] 7 | [SIZE:40] 8 | [VALUE:45] 9 | [TILE:'/'] 10 | These tokens cause civilians to also carry daggers 11 | [TOOL_USE:MEAT_SLICING] 12 | [TOOL_USE:MEAT_CARVING] 13 | [TOOL_USE:MEAT_BONING] 14 | [SKILL:DAGGER] 15 | [TWO_HANDED:22000] 16 | [MINIMUM_SIZE:9000] 17 | [MATERIAL_SIZE:1] 18 | [CAN_STONE] 19 | [BONE_MAT] 20 | [CERAMIC_MAT] 21 | [METAL_MAT] 22 | [ATTACK:EDGE:1200:2500:slash:slashes:NO_SUB:1200] 23 | [ATTACK_PREPARE_AND_RECOVER:1:1] 24 | [ATTACK:EDGE:20:2000:stab:stabs:NO_SUB:1000] 25 | [ATTACK_PREPARE_AND_RECOVER:2:2] 26 | [ATTACK:BLUNT:1200:1000:slap:slaps:flat:1200] 27 | [ATTACK_PREPARE_AND_RECOVER:2:3] 28 | [ATTACK:BLUNT:100:100:strike:strikes:pommel:1000] 29 | [ATTACK_PREPARE_AND_RECOVER:3:3] -------------------------------------------------------------------------------- /scripts/pineapple/raw/tools/item_weapon_hatchet_pineapple.txt: -------------------------------------------------------------------------------- 1 | item_weapon_hatchet_pineapple 2 | 3 | [OBJECT:ITEM] 4 | 5 | [ITEM_TOOL:ITEM_WEAPON_HATCHET_PINEAPPLE] 6 | [NAME:hatchet:hatchets] 7 | [SIZE:90] 8 | [VALUE:75] 9 | [TILE:'/'] 10 | [TOOL_USE:MEAT_CLEAVING] 11 | [SKILL:AXE] 12 | [TWO_HANDED:31000] 13 | [MINIMUM_SIZE:16000] 14 | [MATERIAL_SIZE:2] 15 | [CAN_STONE] 16 | [METAL_MAT] 17 | [ATTACK:EDGE:15000:3000:hack:hacks:NO_SUB:1000] 18 | [ATTACK_PREPARE_AND_RECOVER:3:3] 19 | [ATTACK:BLUNT:15000:3000:slap:slaps:flat:1000] 20 | [ATTACK_PREPARE_AND_RECOVER:3:3] 21 | [ATTACK:BLUNT:60:600:strike:strikes:shaft:900] 22 | [ATTACK_PREPARE_AND_RECOVER:3:3] 23 | -------------------------------------------------------------------------------- /scripts/pineapple/raw/tools/item_weapon_mallet_pineapple.txt: -------------------------------------------------------------------------------- 1 | item_weapon_mallet_pineapple 2 | 3 | [OBJECT:ITEM] 4 | 5 | [ITEM_TOOL:ITEM_WEAPON_MALLET_PINEAPPLE] 6 | [NAME:mallet:mallets] 7 | [SIZE:65] 8 | [VALUE:60] 9 | [TILE:'/'] 10 | [TOOL_USE:MEAT_CARVING] 11 | [TOOL_USE:GRIND_POWDER_GRINDER] 12 | [SKILL:HAMMER] 13 | [TWO_HANDED:25000] 14 | [MINIMUM_SIZE:11000] 15 | [MATERIAL_SIZE:2] 16 | [CAN_STONE] 17 | [METAL_MAT] 18 | [WOOD_MAT] 19 | [ATTACK:BLUNT:8:150:bash:bashes:NO_SUB:1500] 20 | [ATTACK_PREPARE_AND_RECOVER:2:3] 21 | -------------------------------------------------------------------------------- /scripts/pineapple/raw/tools/item_weapon_staff_pineapple.txt: -------------------------------------------------------------------------------- 1 | item_weapon_staff_pineapple 2 | 3 | [OBJECT:ITEM] 4 | 5 | [ITEM_TOOL:ITEM_WEAPON_STAFF_PINEAPPLE] 6 | [NAME:staff:staves] 7 | [SIZE:300] 8 | [VALUE:80] 9 | [TILE:'/'] 10 | [TOOL_USE:MEAT_CARVING] Hackish but means civilians will carry staves too 11 | [SKILL:PIKE] 12 | [TWO_HANDED:42000] 13 | [MINIMUM_SIZE:5000] 14 | [MATERIAL_SIZE:3] 15 | [METAL_MAT] 16 | [WOOD_MAT] 17 | [ATTACK:BLUNT:6000:4500:bash:bashes:NO_SUB:1200] 18 | [ATTACK_PREPARE_AND_RECOVER:3:3] 19 | [ATTACK:BLUNT:4000:4000:strike:strikes:shaft:1000] 20 | [ATTACK_PREPARE_AND_RECOVER:2:2] 21 | [ATTACK:BLUNT:50:1200:jab:jabs:NO_SUB:1000] 22 | [ATTACK_PREPARE_AND_RECOVER:3:2] 23 | -------------------------------------------------------------------------------- /scripts/pkdawson/readme.md: -------------------------------------------------------------------------------- 1 | df-vegan 2 | ======== 3 | 4 | Created by Patrick Dawson. (https://github.com/pkdawson) 5 | Rewritten for PyDwarf by Sophie Kirschner. (http://www.pineapplemachine.com) 6 | 7 | A few tweaks are required to make vegan dwarves completely practical in Dwarf Fortress. This mod adds cloth quivers and backpacks, which can be made at a Craftsdwarf's Workshop, using the Clothesmaking skill. 8 | 9 | I'd also recommend turning off artifacts (strange moods), which often demand bone or other animal products. 10 | 11 | To do this challenge properly, you should never use any kind of animal product. That includes no wool, no silk, and no beekeeping. Keeping pets is fine, but training or using war dogs (or other war animals) would be unethical. 12 | 13 | Here's a list of labors that are disabled by default, using a DFHack script: 14 | 15 | - Hunting 16 | - Trapping 17 | - Small Animal Dissection 18 | - Butchery 19 | - Tanning 20 | - Cheese Making 21 | - Milking 22 | - Shearing 23 | - Beekeeping 24 | - Gelding 25 | - Fishing 26 | - Fish Cleaning 27 | - Fish Dissection 28 | - Leatherworking 29 | - Bone Carving 30 | - Wax Working 31 | -------------------------------------------------------------------------------- /scripts/putnam/pydwarf.microreduce.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | 3 | 4 | 5 | reduce_dir = pydwarf.rel(__file__, 'raw/microreduce') 6 | 7 | default_entities = 'MOUNTAIN' 8 | 9 | 10 | 11 | @pydwarf.urist( 12 | name = 'putnam.microreduce', 13 | version = '1.0.1', 14 | author = ('Putnam', 'Sophie Kirschner'), 15 | description = 'A mod to reduce the amount of micromanagement in Dwarf Fortress. One-step soap making and clothesmaking!', 16 | compatibility = pydwarf.df_0_40 17 | ) 18 | def microreduce(df, entities=default_entities): 19 | return pydwarf.urist.getfn('pineapple.easypatch')( 20 | df, 21 | files = reduce_dir, 22 | loc = 'raw/objects', 23 | permit_entities = entities 24 | ) 25 | -------------------------------------------------------------------------------- /scripts/putnam/raw/materialsplus/inorganic_alloys_mat_plus.txt: -------------------------------------------------------------------------------- 1 | inorganic_alloys_mat_plus 2 | 3 | [OBJECT:INORGANIC] 4 | 5 | [INORGANIC:HIGH_SPEED_STEEL_PUTNAM] 6 | [USE_MATERIAL_TEMPLATE:METAL_TEMPLATE] 7 | [STATE_NAME_ADJ:ALL_SOLID:high-speed steel] 8 | [STATE_NAME_ADJ:LIQUID:molten high-speed steel] 9 | [STATE_NAME_ADJ:GAS:boiling high-speed steel] 10 | [DISPLAY_COLOR:0:7:1] 11 | [BUILD_COLOR:0:7:1] 12 | [MATERIAL_VALUE:50] 13 | [SPEC_HEAT:500] used steel 14 | [MELTING_POINT:12718] 15 | [BOILING_POINT:14968] 16 | [SOLID_DENSITY:7850] 17 | [LIQUID_DENSITY:6980] 18 | [MOLAR_MASS:55485] 19 | [ITEMS_WEAPON][ITEMS_WEAPON_RANGED][ITEMS_AMMO][ITEMS_DIGGER][ITEMS_ARMOR] 20 | [ITEMS_HARD] 21 | [ITEMS_METAL] 22 | [ITEMS_BARRED] 23 | [ITEMS_SCALED] 24 | [IMPACT_YIELD:2300000] 25 | [IMPACT_FRACTURE:3300000] 26 | [IMPACT_STRAIN_AT_YIELD:900] 27 | [COMPRESSIVE_YIELD:2300000] 28 | [COMPRESSIVE_FRACTURE:3300000] 29 | [COMPRESSIVE_STRAIN_AT_YIELD:900] bulk modulus 255.5 GPa 30 | [TENSILE_YIELD:500000] 31 | [TENSILE_FRACTURE:900000] 32 | [TENSILE_STRAIN_AT_YIELD:233] young's modulus 215 GPa 33 | [TORSION_YIELD:500000] 34 | [TORSION_FRACTURE:900000] 35 | [TORSION_STRAIN_AT_YIELD:632] 36 | [SHEAR_YIELD:500000] 37 | [SHEAR_FRACTURE:900000] 38 | [SHEAR_STRAIN_AT_YIELD:632] shear modulus 79.1 GPa 39 | [BENDING_YIELD:500000] 40 | [BENDING_FRACTURE:900000] 41 | [BENDING_STRAIN_AT_YIELD:233] 42 | [MAX_EDGE:10000] 43 | [STATE_COLOR:ALL:GRAY] -------------------------------------------------------------------------------- /scripts/putnam/raw/materialsplus/inorganic_other_mat_plus.txt: -------------------------------------------------------------------------------- 1 | inorganic_other_mat_plus 2 | 3 | [OBJECT:INORGANIC] 4 | 5 | [INORGANIC:SULFURIC_ACID_PUTNAM] 6 | [USE_MATERIAL_TEMPLATE:STONE_TEMPLATE] 7 | [STATE_NAME_ADJ:ALL_SOLID:frozen sulfuric acid] 8 | [STATE_NAME_ADJ:LIQUID:sulfuric acid] 9 | [STATE_NAME_ADJ:GAS:boiling sulfuric acid] 10 | [DISPLAY_COLOR:0:7:1] 11 | [MATERIAL_VALUE:5] 12 | [SPEC_HEAT:1416] 13 | [MELTING_POINT:10000] properly 10018, but that makes it solid at underground temperatures 14 | [BOILING_POINT:10502] 15 | [SOLID_DENSITY:1830] 16 | [LIQUID_DENSITY:1830] 17 | [STATE_COLOR:CLEAR] -------------------------------------------------------------------------------- /scripts/putnam/raw/materialsplus/item_mat_plus.txt: -------------------------------------------------------------------------------- 1 | item_mat_plus 2 | 3 | [OBJECT:ITEM] 4 | 5 | [ITEM_TOOL:BERYLLIUM_TOKEN_P] 6 | [NAME:beryllium token:beryllium tokens] 7 | [VALUE:0] 8 | [TILE:66] 9 | [SIZE:1] 10 | [MATERIAL_SIZE:1] 11 | 12 | [ITEM_TOOL:SULFURIC_ACID_TOKEN_P] 13 | [NAME:sulfuric acid token:sulfuric acid tokens] 14 | [VALUE:0] 15 | [TILE:83] 16 | [SIZE:1] 17 | [MATERIAL_SIZE:1] 18 | 19 | [ITEM_TOOL:REDUCER_TOKEN_P] 20 | [NAME:reducer token:reducer tokens] 21 | [VALUE:0] 22 | [TILE:82] 23 | [SIZE:1] 24 | [MATERIAL_SIZE:1] 25 | 26 | [ITEM_TOOL:KROLL_TOKEN_P] 27 | [NAME:kroll token:kroll tokens] 28 | [VALUE:0] 29 | [TILE:75] 30 | [SIZE:1] 31 | [MATERIAL_SIZE:1] 32 | -------------------------------------------------------------------------------- /scripts/putnam/raw/materialsplus/reaction_alloys_mat_plus.txt: -------------------------------------------------------------------------------- 1 | reaction_alloys_mat_plus 2 | 3 | [OBJECT:REACTION] 4 | 5 | [REACTION:MANGANESE_STEEL_MAKING_BARS] 6 | [NAME:make steel bars (manganese) (use bars)] 7 | [BUILDING:SMELTER:NONE] 8 | [REAGENT:iron:450:BAR:NONE:INORGANIC:IRON] 9 | [REAGENT:manganese:150:BAR:NONE:INORGANIC:MANGANESE_PUTNAM] 10 | [PRODUCT:100:4:BAR:NONE:INORGANIC:STEEL][PRODUCT_DIMENSION:150] 11 | [SKILL:SMELT] 12 | 13 | [REACTION:MANGANESE_STEEL_MAKING_ORE] 14 | [NAME:make steel bars (manganese) (use ore)] 15 | [BUILDING:SMELTER:NONE] 16 | [REAGENT:iron ore:1:BOULDER:NONE:NONE:NONE][METAL_ORE:IRON] 17 | [REAGENT:manganese ore:1:BOULDER:NONE:NONE:NONE][METAL_ORE:MANGANESE_PUTNAM] 18 | [PRODUCT:100:4:BAR:NONE:INORGANIC:STEEL][PRODUCT_DIMENSION:150] 19 | [PRODUCT:100:1:BAR:NONE:INORGANIC:IRON][PRODUCT_DIMENSION:150] 20 | [PRODUCT:100:3:BAR:NONE:INORGANIC:MANGANESE_PUTNAM][PRODUCT_DIMENSION:150] 21 | [SKILL:SMELT] 22 | 23 | [REACTION:HIGH_SPEED_STEEL_MAKING] 24 | [NAME:make high speed steel] 1.5% carbon .5% silicon 1% manganese 1% nickel 5% chromium 4.5% molybdenum 6% vanadium 2.5% tungsten 25 | [BUILDING:SMELTER:CUSTOM_H] 26 | [REAGENT:steel:900:BAR:NONE:INORGANIC:STEEL] 27 | [REAGENT:vanadium:150:BAR:NONE:INORGANIC:VANADIUM_PUTNAM] 28 | [REAGENT:chromium:150:BAR:NONE:INORGANIC:CHROMIUM_PUTNAM] 29 | [REAGENT:tungsten:150:BAR:NONE:INORGANIC:TUNGSTEN_PUTNAM] 30 | [REAGENT:molybdenum:150:BAR:NONE:INORGANIC:MOLYBDENUM_PUTNAM] 31 | [PRODUCT:100:10:BAR:NONE:INORGANIC:HIGH_SPEED_STEEL_PUTNAM][PRODUCT_DIMENSION:150] 32 | [SKILL:SMELT] -------------------------------------------------------------------------------- /scripts/putnam/raw/microreduce/item_macro_fantastic.txt: -------------------------------------------------------------------------------- 1 | item_macro_fantastic 2 | 3 | [OBJECT:ITEM] 4 | 5 | [ITEM_TOOL:SOAP_TOKEN_1_P] 6 | [NAME:ash token:ash tokens] 7 | [VALUE:0] 8 | [TILE:233] 9 | [SIZE:1] 10 | [MATERIAL_SIZE:1] 11 | 12 | [ITEM_TOOL:SOAP_TOKEN_2_P] 13 | [NAME:lye token:lye tokens] 14 | [VALUE:0] 15 | [TILE:233] 16 | [SIZE:1] 17 | [MATERIAL_SIZE:1] 18 | 19 | [ITEM_TOOL:SOAP_TOKEN_3_P] 20 | [NAME:soap token:soap tokens] 21 | [VALUE:0] 22 | [TILE:233] 23 | [SIZE:1] 24 | [MATERIAL_SIZE:1] 25 | 26 | [ITEM_TOOL:CLOTHES_TOKEN_P] 27 | [NAME:clothing set token:clothing set token] 28 | [VALUE:0] 29 | [TILE:233] 30 | [SIZE:1] 31 | [MATERIAL_SIZE:1] 32 | -------------------------------------------------------------------------------- /scripts/shukaro/pydwarf.creationforge.py: -------------------------------------------------------------------------------- 1 | import pydwarf 2 | 3 | 4 | 5 | creation_dir = pydwarf.rel(__file__, 'raw/creationforge') 6 | 7 | default_entities = ('MOUNTAIN',) 8 | 9 | 10 | 11 | @pydwarf.urist( 12 | name = 'shukaro.creationforge', 13 | version = '1.0.1', 14 | author = ('Shukaro', 'Sophie Kirschner'), 15 | description = '''This is a simple workshop I modded in to help test custom reactions, 16 | buildings, and creatures. It's used to create various different items so that you 17 | don't have to set up an entire fortress to test some reactions. Hopefully it's a 18 | useful tool to people, even if it's just to look at the raw formatting. ''', 19 | compatibility = (pydwarf.df_0_40, pydwarf.df_0_3x) 20 | ) 21 | def creationforge(df, entities=default_entities): 22 | return pydwarf.urist.getfn('pineapple.easypatch')( 23 | df, 24 | files = creation_dir, 25 | loc = 'raw/objects', 26 | permit_entities = entities 27 | ) 28 | -------------------------------------------------------------------------------- /scripts/shukaro/raw/creationforge/building_forge_shukaro.txt: -------------------------------------------------------------------------------- 1 | building_forge_shukaro 2 | 3 | [OBJECT:BUILDING] 4 | 5 | [BUILDING_WORKSHOP:CREATION_FORGE] 6 | [NAME:Creation Forge] 7 | [NAME_COLOR:7:0:1] 8 | [WORK_LOCATION:2:2] 9 | [BUILD_LABOR:SMELT] 10 | [BUILD_KEY:CUSTOM_SHIFT_C] 11 | [BLOCK:1:0:0:0] 12 | [BLOCK:2:1:0:1] 13 | [BLOCK:3:1:0:0] 14 | [DIM:3:3] 15 | [TILE:0:1:218:32:32] 16 | [TILE:0:2:32:240:8] 17 | [TILE:0:3:176:32:32] 18 | [COLOR:0:1:7:0:0:0:0:0:0:0:0] 19 | [COLOR:0:2:0:0:0:7:0:0:7:0:0] 20 | [COLOR:0:3:7:0:0:0:0:0:0:0:0] 21 | [TILE:1:1:218:32:32] 22 | [TILE:1:2:32:32:8] 23 | [TILE:1:3:176:32:32] 24 | [COLOR:1:1:7:0:0:0:0:0:0:0:0] 25 | [COLOR:1:2:0:0:0:0:0:0:7:3:0] 26 | [COLOR:1:3:7:0:0:0:0:0:0:0:0] 27 | [TILE:2:1:32:32:187] 28 | [TILE:2:2:7:32:8] 29 | [TILE:2:3:176:32:32] 30 | [COLOR:2:1:0:0:0:0:0:0:7:0:0] 31 | [COLOR:2:2:3:7:1:0:0:0:7:3:0] 32 | [COLOR:2:3:7:0:0:0:0:0:0:0:0] 33 | [TILE:3:1:213:205:187] 34 | [TILE:3:2:7:91:8] 35 | [TILE:3:3:176:0:240] 36 | [COLOR:3:1:7:0:0:7:0:0:7:0:0] 37 | [COLOR:3:2:3:7:1:7:0:0:7:3:0] 38 | [COLOR:3:3:7:0:0:3:0:1:7:0:0] 39 | [BUILD_ITEM:1:NONE:NONE:NONE:NONE][BUILDMAT][WORTHLESS_STONE_ONLY][CAN_USE_ARTIFACT] 40 | -------------------------------------------------------------------------------- /scripts/shukaro/raw/higherlearning/item_library_shukaro.txt: -------------------------------------------------------------------------------- 1 | item_library_shukaro 2 | 3 | [OBJECT:ITEM] 4 | 5 | [ITEM_TOY:ITEM_TABLET] 6 | [NAME:tablet:tablets] 7 | [HARD_MAT] 8 | 9 | [ITEM_TOY:ITEM_BOOK] 10 | [NAME:book:books] 11 | [HARD_MAT] 12 | 13 | [ITEM_TOY:ITEM_PAPER] 14 | [NAME:paper:paper] 15 | [HARD_MAT] -------------------------------------------------------------------------------- /scripts/smeeprocket/readme.md: -------------------------------------------------------------------------------- 1 | # Transgender and Intersex 2 | 3 | Created by SmeepRocket. (http://www.bay12forums.com/smf/index.php?topic=146312.0) 4 | Rewritten for PyDwarf by Sophie Kirschner. (http://www.pineapplemachine.com) 5 | 6 | This adds transmales, transfemales, intersex males, and intersex females to the dwarf fortress fortress mode game. This does not add it to adventure mode. 7 | -------------------------------------------------------------------------------- /scripts/stal/armouryentities.py: -------------------------------------------------------------------------------- 1 | # Helper script for building a json file representing which armoury items are allowed for which entities 2 | 3 | import sys 4 | sys.path.append('../../') 5 | 6 | import json 7 | import raws 8 | 9 | print('And so it begins.') 10 | 11 | armouryraws = raws.dir(root='raw/armoury') 12 | 13 | itemtypes = ('AMMO', 'DIGGER', 'TOOL', 'WEAPON', 'ARMOR', 'PANTS', 'GLOVES', 'SHOES', 'HELM', 'SHIELD') 14 | 15 | edict = {} 16 | 17 | for entity in armouryraws.allobj('ENTITY'): 18 | print('Entity: %s' % entity) 19 | edict[entity.args[0]] = {} 20 | entitydict = edict[entity.args[0]] 21 | for item in entity.allprop(value_in=itemtypes): 22 | if item.value not in entitydict: entitydict[item.value] = [] 23 | entitydict[item.value].append(item.args) 24 | 25 | print(edict) 26 | 27 | with open('armouryentities.json', 'wb') as efile: json.dump(edict, efile, indent=4) 28 | 29 | print('All done!') 30 | -------------------------------------------------------------------------------- /scripts/stal/raw/armoury/item_gloves.txt: -------------------------------------------------------------------------------- 1 | item_gloves 2 | 3 | armoury 4 | 5 | [OBJECT:ITEM] 6 | 7 | ***** ARMOUR ***** 8 | 9 | [ITEM_GLOVES:ITEM_GLOVES_GAUNTLETS] 10 | [NAME:gauntlet:gauntlets] 11 | [ARMORLEVEL:3] 12 | [UPSTEP:1] 13 | [SHAPED] 14 | [LAYER:ARMOR] 15 | [COVERAGE:300] 16 | [LAYER_SIZE:10] 17 | [LAYER_PERMIT:6] 18 | [MATERIAL_SIZE:6] 19 | [METAL] 20 | [BARRED] 21 | [SCALED] 22 | 23 | [ITEM_GLOVES:ITEM_GLOVES_GLOVES_CHAIN] 24 | [NAME:mail glove:mail gloves] 25 | [ARMORLEVEL:2] 26 | [CHAIN_METAL_TEXT] 27 | [UPSTEP:1] 28 | [LAYER:ARMOR] 29 | [COVERAGE:200] 30 | [LAYER_SIZE:10] 31 | [LAYER_PERMIT:1] 32 | [MATERIAL_SIZE:3] 33 | [METAL] 34 | [STRUCTURAL_ELASTICITY_CHAIN_ALL] 35 | 36 | [ITEM_GLOVES:ITEM_GLOVES_MITTENS_CHAIN] 37 | [NAME:mail mitten:mail mittens] 38 | [ARMORLEVEL:2] 39 | [CHAIN_METAL_TEXT] 40 | [UPSTEP:1] 41 | [LAYER:ARMOR] 42 | [COVERAGE:200] 43 | [LAYER_SIZE:10] 44 | [LAYER_PERMIT:1] 45 | [MATERIAL_SIZE:3] 46 | [METAL] 47 | [STRUCTURAL_ELASTICITY_CHAIN_ALL] 48 | 49 | ***** CLOTHING ***** 50 | 51 | [ITEM_GLOVES:ITEM_GLOVES_MITTENS] 52 | [NAME:mitten:mittens] 53 | [ARMORLEVEL:0] 54 | [LAYER:OVER] 55 | [UPSTEP:1] 56 | [COVERAGE:100] 57 | [LAYER_SIZE:5] 58 | [LAYER_PERMIT:1] 59 | [MATERIAL_SIZE:3] 60 | [MATERIAL_SIZE:3] 61 | [SOFT] 62 | [LEATHER] 63 | [STRUCTURAL_ELASTICITY_WOVEN_THREAD] 64 | 65 | [ITEM_GLOVES:ITEM_GLOVES_GLOVES] 66 | [NAME:glove:gloves] 67 | [ARMORLEVEL:0] 68 | [LAYER:OVER] 69 | [UPSTEP:1] 70 | [COVERAGE:100] 71 | [LAYER_SIZE:5] 72 | [LAYER_PERMIT:1] 73 | [MATERIAL_SIZE:3] 74 | [SOFT] 75 | [LEATHER] 76 | [STRUCTURAL_ELASTICITY_WOVEN_THREAD] 77 | 78 | [ITEM_GLOVES:ITEM_GLOVES_WRAP] 79 | [NAME:hand wrap:hand wraps] 80 | [ARMORLEVEL:0] 81 | [UPSTEP:1] 82 | [LAYER:UNDER] 83 | [COVERAGE:100] 84 | [LAYER_SIZE:1] 85 | [LAYER_PERMIT:0] 86 | [MATERIAL_SIZE:3] 87 | [SOFT] 88 | [STRUCTURAL_ELASTICITY_WOVEN_THREAD] -------------------------------------------------------------------------------- /scripts/stal/raw/armoury/item_shield.txt: -------------------------------------------------------------------------------- 1 | item_shield 2 | 3 | armoury 4 | 5 | [OBJECT:ITEM] 6 | 7 | [ITEM_SHIELD:ITEM_SHIELD_BUCKLER] 8 | [NAME:buckler:bucklers] 9 | [ARMORLEVEL:3] 10 | [BLOCKCHANCE:25] 11 | [UPSTEP:0] 12 | [MATERIAL_SIZE:1] 13 | 14 | [ITEM_SHIELD:ITEM_SHIELD_SHIELD] 15 | [NAME:round shield:round shields] 16 | [ARMORLEVEL:3] 17 | [BLOCKCHANCE:30] 18 | [UPSTEP:1] 19 | [MATERIAL_SIZE:3] 20 | 21 | [ITEM_SHIELD:ITEM_SHIELD_HEATER] 22 | [NAME:heater shield:heater shields] 23 | [ARMORLEVEL:3] 24 | [BLOCKCHANCE:35] 25 | [UPSTEP:2] 26 | [MATERIAL_SIZE:6] 27 | 28 | [ITEM_SHIELD:ITEM_SHIELD_KITE] 29 | [NAME:kite shield:kite shields] 30 | [ARMORLEVEL:3] 31 | [BLOCKCHANCE:40] 32 | [UPSTEP:3] 33 | [MATERIAL_SIZE:6] 34 | 35 | [ITEM_SHIELD:ITEM_SHIELD_TOWER] 36 | [NAME:tower shield:tower shields] 37 | [ARMORLEVEL:3] 38 | [BLOCKCHANCE:45] 39 | [UPSTEP:4] 40 | [MATERIAL_SIZE:9] -------------------------------------------------------------------------------- /scripts/stal/raw/armoury/item_shoes.txt: -------------------------------------------------------------------------------- 1 | item_shoes 2 | 3 | armoury 4 | 5 | [OBJECT:ITEM] 6 | 7 | ***** ARMOUR ***** 8 | 9 | [ITEM_SHOES:ITEM_SHOES_GREAVES_LOWER] 10 | [NAME:lower greave:lower greaves] 11 | [ARMORLEVEL:3] 12 | [UPSTEP:1] 13 | [LAYER:ARMOR] 14 | [COVERAGE:300] 15 | [LAYER_SIZE:10] 16 | [LAYER_PERMIT:6] 17 | [MATERIAL_SIZE:6] 18 | [METAL] 19 | [BARRED] 20 | [SCALED] 21 | 22 | [ITEM_SHOES:ITEM_SHOES_CHAUSSE_CHAIN] 23 | [NAME:lower chausse:lower chausses] 24 | [ARMORLEVEL:2] 25 | [CHAIN_METAL_TEXT] 26 | [UPSTEP:1] 27 | [LAYER:ARMOR] 28 | [COVERAGE:200] 29 | [LAYER_SIZE:10] 30 | [LAYER_PERMIT:6] 31 | [MATERIAL_SIZE:3] 32 | [METAL] 33 | [STRUCTURAL_ELASTICITY_CHAIN_ALL] 34 | 35 | [ITEM_SHOES:ITEM_SHOES_BOOTS] 36 | [NAME:boot:boots] 37 | [ARMORLEVEL:1] 38 | [UPSTEP:1] 39 | [LAYER:ARMOR] 40 | [COVERAGE:200] 41 | [LAYER_SIZE:5] 42 | [LAYER_PERMIT:1] 43 | [MATERIAL_SIZE:3] 44 | [LEATHER] 45 | 46 | 47 | ***** CLOTHING ***** 48 | 49 | [ITEM_SHOES:ITEM_SHOES_SHOES] 50 | [NAME:turnshoe:turnshoes] 51 | [ARMORLEVEL:0] 52 | [UPSTEP:0] 53 | [LAYER:OVER] 54 | [COVERAGE:100] 55 | [LAYER_SIZE:5] 56 | [LAYER_PERMIT:1] 57 | [MATERIAL_SIZE:3] 58 | [LEATHER] 59 | 60 | [ITEM_SHOES:ITEM_SHOES_CARBATINAE] 61 | [NAME:carbatina:carbatinae] 62 | [ARMORLEVEL:0] 63 | [UPSTEP:0] 64 | [LAYER:OVER] 65 | [COVERAGE:100] 66 | [LAYER_SIZE:5] 67 | [LAYER_PERMIT:1] 68 | [MATERIAL_SIZE:3] 69 | [LEATHER] 70 | 71 | [ITEM_SHOES:ITEM_SHOES_ANKLE] 72 | [NAME:ankle boot:ankle boots] 73 | [ARMORLEVEL:0] 74 | [UPSTEP:0] 75 | [LAYER:OVER] 76 | [COVERAGE:100] 77 | [LAYER_SIZE:5] 78 | [LAYER_PERMIT:1] 79 | [MATERIAL_SIZE:3] 80 | [LEATHER] 81 | 82 | [ITEM_SHOES:ITEM_SHOES_SANDALS] 83 | [NAME:caliga:caligae] 84 | [ARMORLEVEL:0] 85 | [UPSTEP:0] 86 | [LAYER:OVER] 87 | [COVERAGE:100] 88 | [LAYER_SIZE:5] 89 | [LAYER_PERMIT:1] 90 | [MATERIAL_SIZE:3] 91 | [LEATHER] 92 | 93 | [ITEM_SHOES:ITEM_SHOES_SOCKS] 94 | [NAME:leg wrap:leg wraps] 95 | [ARMORLEVEL:0] 96 | [UPSTEP:1] 97 | [LAYER:UNDER] 98 | [COVERAGE:100] 99 | [LAYER_SIZE:1] 100 | [LAYER_PERMIT:0] 101 | [MATERIAL_SIZE:3] 102 | [SOFT] 103 | [STRUCTURAL_ELASTICITY_WOVEN_THREAD] -------------------------------------------------------------------------------- /scripts/umiman/data/smallthings/no_family.txt: -------------------------------------------------------------------------------- 1 | I have no family to speak of 2 | I have no family 3 | I have no children, nor lover or mother or father 4 | I am alone 5 | Family is for the weak 6 | I have no material ties to this world 7 | Where I am from, it is considered rude for a stranger to ask such personal questions 8 | Family is meaningless 9 | I refuse to answer that question 10 | Why do you ask me such things? 11 | Family... would be nice 12 | I could've had a family 13 | That question is painful, don't ask it again 14 | What would it matter to you? 15 | I live alone 16 | I have no family for now, but maybe in the future 17 | I have no family now, but my heart is set on another. Ask me in the future when I succeed 18 | ... 19 | Tell me about YOUR family 20 | Stop asking me these things 21 | I'm afraid I don't remember 22 | Wh-why do you ask me if I have family? O-o-of course I have a family! Ha! Ha! Ha! What kind of silly fool wouldn't have a family? It must be quite silly to not have a family, wouldn't it? Hahahahaha!!! 23 | That question is pointless 24 | Leave me alone already 25 | I don't have a family and I don't care for one either 26 | I don't have a family. Let's just leave it at that 27 | I have always only depended on myself 28 | I only need strength. Love is but an illusion 29 | Why don't you join me for some drinks and we'll discuss this further at my home 30 | My friends are to me what family is to you 31 | Why do you ask? Are you looking for love? 32 | That's a complicated question with a complicated answer. Ask me something else 33 | Stop asking all these senseless questions! 34 | Don't you have something more important to do? 35 | Family only gets in the way, wouldn't you agree? 36 | My family is in a far away land 37 | I came here to forget my past, please don't ask again 38 | By the Gods, you are annoying 39 | Family, huh? Family... family... family... -------------------------------------------------------------------------------- /scripts/umiman/misc/Engraving_README.txt: -------------------------------------------------------------------------------- 1 | ~~~~ UMIMAN'S ENGRAVING MOD V0.1 ~~~~ 2 | 3 | 4 | Installation: 5 | Copy "descriptor_shape_standard" to \raw\objects and replace the file with the one included here 6 | 7 | 8 | ---------- 9 | 10 | Description: 11 | Has this been done before? While I think it's impossible to change any of the inbuilt engraving stuff like, "this is a picture of a dwarf and a tentacle demon. The dwarf is embracing the tentacle demon", it is possible to edit and add to more basic ones such as "this is a picture of a crescent moon". 12 | 13 | Basically, I added maybe 100 or so new engravings you can potentially see on your floors, walls, studded armour, images, and the like. Keep in mind maybe one or two metagame just a tad but it's funny! I swear! 14 | 15 | Hope you like it, if you have any suggestions or comments, email me at umiman_at_gmail.com. 16 | 17 | 18 | ---------- 19 | 20 | My philosophy: 21 | - The mod should be universal. I.E: if someone were to use this mod in conjuction of others, they should not only be compatible, but not break the illusion. 22 | - The mod should be in the vein of the Dwarf Fortress universe and not break the illusion that you are in it (except in rare cases of comedy). 23 | - The mod should be as descriptively neutral as possible and so work for goblins just as it would for elves or dwarves so as to not break the illusion. 24 | - Try to put things Toady would have put in if he had the time. 25 | - Only focus on what the mod is supposed to do. Hence, my engraving mod will not do anything except add engravings. 26 | - Maintain the illusion. -------------------------------------------------------------------------------- /scripts/umiman/raw/smallthings/creature_amphibians.txt: -------------------------------------------------------------------------------- 1 | creature_amphibians 2 | 3 | [OBJECT:CREATURE] 4 | 5 | [CREATURE:TOAD] 6 | [!REPLACE] 7 | [PREFSTRING:princely potential] 8 | [PREFSTRING:beauty] 9 | [PREFSTRING:warty skin] 10 | [PREFSTRING:uncaring philosophy] 11 | [PREFSTRING:bassy croaking] -------------------------------------------------------------------------------- /scripts/umiman/raw/smallthings/creature_annelids.txt: -------------------------------------------------------------------------------- 1 | creature_annelids 2 | 3 | [OBJECT:CREATURE] 4 | 5 | [CREATURE:WORM] 6 | [!REPLACE] 7 | [PREFSTRING:wriggling, elongated, soft-bodies] 8 | [PREFSTRING:mindless digging] 9 | [PREFSTRING:thankless contributions] 10 | [PREFSTRING:adversity towards water] 11 | [PREFSTRING:simplicity] -------------------------------------------------------------------------------- /scripts/umiman/raw/smallthings/creature_birds.txt: -------------------------------------------------------------------------------- 1 | creature_birds 2 | 3 | [OBJECT:CREATURE] 4 | 5 | [CREATURE:BIRD_BLUEJAY] 6 | [!REPLACE] 7 | [PREFSTRING:distinct jayer-jayer call] 8 | [PREFSTRING:crown of feathers] 9 | [PREFSTRING:vocal talent] 10 | [PREFSTRING:gull-like scream] 11 | [PREFSTRING:fanciful colour] 12 | 13 | [CREATURE:BIRD_CARDINAL] 14 | [!REPLACE] 15 | [PREFSTRING:striking red plumage] 16 | [PREFSTRING:pronounced crest] 17 | [PREFSTRING:love of the woodlands] 18 | [PREFSTRING:song-learning ability] 19 | [PREFSTRING:bonding-behaviour] 20 | 21 | [CREATURE:BIRD_GRACKLE] 22 | [!REPLACE] 23 | [PREFSTRING:harsh, raucous calls] 24 | [PREFSTRING:iridescent black plumage] 25 | [PREFSTRING:cacophony] 26 | [PREFSTRING:whistling notes] 27 | [PREFSTRING:gregarious consumption] 28 | 29 | [CREATURE:BIRD_ORIOLE] 30 | [!REPLACE] 31 | [PREFSTRING:risky nesting choices] 32 | [PREFSTRING:seasonal movements] 33 | [PREFSTRING:bright and showy feathers] 34 | [PREFSTRING:mimicry] 35 | [PREFSTRING:arboreal nature] 36 | 37 | [CREATURE:BIRD_RW_BLACKBIRD] 38 | [!REPLACE] 39 | [PREFSTRING:suggestion of dark places] 40 | [PREFSTRING:potential to be baked in pies] 41 | [PREFSTRING:representation of creeping death] 42 | [PREFSTRING:vigilance] 43 | [PREFSTRING:melodious songs] 44 | -------------------------------------------------------------------------------- /scripts/umiman/raw/smallthings/creature_domestic.txt: -------------------------------------------------------------------------------- 1 | creature_domestic 2 | 3 | [OBJECT:CREATURE] 4 | 5 | [CREATURE:DOG] 6 | [!REPLACE] 7 | [PREFSTRING:unwavering loyalty] 8 | [PREFSTRING:wet tongues] 9 | [PREFSTRING:steadfast relationships] 10 | [PREFSTRING:dependability] 11 | [PREFSTRING:intensive search for scents] 12 | 13 | [CREATURE:CAT] 14 | [!REPLACE] 15 | [PREFSTRING:aloof nondesire] 16 | [PREFSTRING:companionship] 17 | [PREFSTRING:playfulness] 18 | [PREFSTRING:vermin-hunting qualities] 19 | [PREFSTRING:purring] 20 | 21 | [CREATURE:MULE] 22 | [!REPLACE] 23 | [PREFSTRING:naturally resistant nature] 24 | [PREFSTRING:stare] 25 | [PREFSTRING:hybrid existence] 26 | [PREFSTRING:patience] 27 | [PREFSTRING:strength] 28 | 29 | [CREATURE:DONKEY] 30 | [!REPLACE] 31 | [PREFSTRING:sure-footed stance] 32 | [PREFSTRING:stubbornness] 33 | [PREFSTRING:distinct brays] 34 | [PREFSTRING:ability to eat even the toughest of vegetation] 35 | [PREFSTRING:survivability] 36 | 37 | [CREATURE:HORSE] 38 | [!REPLACE] 39 | [PREFSTRING:swiftness of physique] 40 | [PREFSTRING:daunting personalities] 41 | [PREFSTRING:powerful kick] 42 | [PREFSTRING:significant endowments] 43 | [PREFSTRING:fight-or-flight instinct] 44 | 45 | [CREATURE:COW] 46 | [!REPLACE] 47 | [PREFSTRING:haunting moos] 48 | [PREFSTRING:milk] 49 | [PREFSTRING:ponderous movements] 50 | [PREFSTRING:thick hides] 51 | [PREFSTRING:motherly appearance] -------------------------------------------------------------------------------- /scripts/umiman/raw/smallthings/creature_fanciful.txt: -------------------------------------------------------------------------------- 1 | creature_fanciful 2 | 3 | [OBJECT:CREATURE] 4 | 5 | [CREATURE:CHIMERA] 6 | [!REPLACE] 7 | [PREFSTRING:immortal make] 8 | [PREFSTRING:embodiments of the forces of nature] 9 | [PREFSTRING:maned heads] 10 | [PREFSTRING:dragon-scaled bodies] 11 | [PREFSTRING:snakish tails] 12 | 13 | [CREATURE:CENTAUR] 14 | [!REPLACE] 15 | [PREFSTRING:liminal state] 16 | [PREFSTRING:untamable nature] 17 | [PREFSTRING:legendary hunting skill] 18 | [PREFSTRING:half-and-half composition] 19 | [PREFSTRING:desire for wide open plains] 20 | 21 | [CREATURE:GRIFFON] 22 | [!REPLACE] 23 | [PREFSTRING:kingly stature] 24 | [PREFSTRING:lordship over both the beasts and the birds] 25 | [PREFSTRING:divine power] 26 | [PREFSTRING:fearsome appearance] 27 | [PREFSTRING:heraldic potential] -------------------------------------------------------------------------------- /scripts/umiman/raw/smallthings/creature_insects.txt: -------------------------------------------------------------------------------- 1 | creature_insects 2 | 3 | [OBJECT:CREATURE] 4 | 5 | [CREATURE:FLY] 6 | [!REPLACE] 7 | [PREFSTRING:ability to annoy] 8 | [PREFSTRING:trash-loving nature] 9 | [PREFSTRING:impressive foresight] 10 | [PREFSTRING:maggoty offspring] 11 | [PREFSTRING:quirky flight] 12 | 13 | [CREATURE:ROACH_LARGE] 14 | [!REPLACE] 15 | [PREFSTRING:ability to disgust] 16 | [PREFSTRING:fast speed] 17 | [PREFSTRING:extinction-proof conduct] 18 | [PREFSTRING:unloved existence] 19 | [PREFSTRING:hardiness] 20 | 21 | [CREATURE:BEETLE] 22 | [!REPLACE] 23 | [PREFSTRING:conviction in an impenetrable defense] 24 | [PREFSTRING:stoicism] 25 | [PREFSTRING:armour plating] 26 | [PREFSTRING:metamorphosis] 27 | [PREFSTRING:variability] 28 | 29 | [CREATURE:ANT] 30 | [!REPLACE] 31 | [PREFSTRING:subservience to a higher order] 32 | [PREFSTRING:penchant for digging] 33 | [PREFSTRING:hive systems] 34 | [PREFSTRING:willingness to sacrifice] 35 | [PREFSTRING:matriarchal order] 36 | 37 | [CREATURE:BUTTERFLY_MONARCH] 38 | [!REPLACE] 39 | [PREFSTRING:incredible migratory behaviour] 40 | [PREFSTRING:orange and black pattern] 41 | [PREFSTRING:large size] 42 | [PREFSTRING:striped caterpillars] 43 | [PREFSTRING:camouflaged chrysalises] 44 | 45 | [CREATURE:FIREFLY] 46 | [!REPLACE] 47 | [PREFSTRING:enchanting glow] 48 | [PREFSTRING:eerie lightshows] 49 | [PREFSTRING:nocturnal lifestyle] 50 | [PREFSTRING:association with the stars] 51 | [PREFSTRING:predatory larvae] 52 | 53 | [CREATURE:DRAGONFLY] 54 | [!REPLACE] 55 | [PREFSTRING:hunter-killer instinct] 56 | [PREFSTRING:hovering flight] 57 | [PREFSTRING:multifaceted eyes] 58 | [PREFSTRING:elongated body] 59 | [PREFSTRING:constant, active lifestyle] -------------------------------------------------------------------------------- /scripts/umiman/raw/smallthings/creature_large_mountain.txt: -------------------------------------------------------------------------------- 1 | creature_large_mountain 2 | 3 | [OBJECT:CREATURE] 4 | 5 | [CREATURE:GOAT_MOUNTAIN] 6 | [!REPLACE] 7 | [PREFSTRING:goatees] 8 | [PREFSTRING:long horns] 9 | [PREFSTRING:surefootedness] 10 | [PREFSTRING:mountain-loving personality] 11 | [PREFSTRING:wooly, white coats] 12 | 13 | [CREATURE:MARMOT_HOARY] 14 | [!REPLACE] 15 | [PREFSTRING:high-pitched whistles] 16 | [PREFSTRING:silver-grey fur] 17 | [PREFSTRING:cute stature] 18 | [PREFSTRING:fearless ways] 19 | [PREFSTRING:burrows] 20 | 21 | [CREATURE:BIRD_EAGLE_GIANT] 22 | [!REPLACE] 23 | [PREFSTRING:fear-inducing talons] 24 | [PREFSTRING:enormous wingspans] 25 | [PREFSTRING:frightful dietary habits] 26 | [PREFSTRING:arrogant nature] 27 | [PREFSTRING:all-encompasing shadows] 28 | 29 | [CREATURE:GNOME_MOUNTAIN] 30 | [!REPLACE] 31 | [PREFSTRING:ability to hold liquor] 32 | [PREFSTRING:stocky legs] 33 | [PREFSTRING:adorable clothing] 34 | [PREFSTRING:intrepidness] 35 | [PREFSTRING:love of the finer things in life] 36 | 37 | [CREATURE:GNOME_DARK] 38 | [!REPLACE] 39 | [PREFSTRING:ability to get their hands on alcohol] 40 | [PREFSTRING:silly walk] 41 | [PREFSTRING:funny skin] 42 | [PREFSTRING:suicidal tendencies] 43 | [PREFSTRING:wide, yellow eyes] -------------------------------------------------------------------------------- /scripts/umiman/raw/smallthings/creature_large_riverlake.txt: -------------------------------------------------------------------------------- 1 | creature_large_riverlake 2 | 3 | [OBJECT:CREATURE] 4 | 5 | [CREATURE:HIPPO] 6 | [!REPLACE] 7 | [PREFSTRING:water-loving nature] 8 | [PREFSTRING:barrel shaped bellies] 9 | [PREFSTRING:tremendous girth] 10 | [PREFSTRING:dangerous and aggresive behaviour] 11 | [PREFSTRING:ivory canine teeth] 12 | 13 | [CREATURE:FISH_GAR_LONGNOSE] 14 | [!REPLACE] 15 | [PREFSTRING:long, narrow beaks] 16 | [PREFSTRING:diamond-shaped scales] 17 | [PREFSTRING:tough, teeth-laden mouths] 18 | [PREFSTRING:hilarious mating behaviour] 19 | [PREFSTRING:extended, cylindrical bodies] 20 | 21 | [CREATURE:FISH_CARP] 22 | [!REPLACE] 23 | [PREFSTRING:terrifying, nightmare-inducing nature] 24 | [PREFSTRING:murderous, psychotic tendencies] 25 | [PREFSTRING:unified hatred of all land-dwelling creatures] 26 | [PREFSTRING:many variations of colour] 27 | [PREFSTRING:googly stare] 28 | 29 | [CREATURE:FISH_TIGERFISH] 30 | [!REPLACE] 31 | [PREFSTRING:dominating appearance] 32 | [PREFSTRING:distinctive protruding teeth] 33 | [PREFSTRING:spirited fishing battles] 34 | [PREFSTRING:dotted colouration] 35 | [PREFSTRING:noteworthy size... for a freshwater fish] 36 | 37 | [CREATURE:FISH_PIKE] 38 | [!REPLACE] 39 | [PREFSTRING:sharply-pointed heads] 40 | [PREFSTRING:mottled grey-green colouration] 41 | [PREFSTRING:love of eating roaches] 42 | [PREFSTRING:genocidal behaviour] 43 | [PREFSTRING:hard-to-fish nature] -------------------------------------------------------------------------------- /scripts/umiman/raw/smallthings/creature_large_tundra.txt: -------------------------------------------------------------------------------- 1 | creature_large_tundra 2 | 3 | [OBJECT:CREATURE] 4 | 5 | [CREATURE:MUSKOX] 6 | [!REPLACE] 7 | [PREFSTRING:... smell] 8 | [PREFSTRING:thick, soft and wooly black coats] 9 | [PREFSTRING:curved, forward-facing horns] 10 | [PREFSTRING:generally shaggy appearance] 11 | [PREFSTRING:wall-like herd defensive formations] 12 | 13 | [CREATURE:ELK] 14 | [!REPLACE] 15 | [PREFSTRING:massive, branching antlers] 16 | [PREFSTRING:ritualized mating behaviours] 17 | [PREFSTRING:bugling. Loud series of screams, that is] 18 | [PREFSTRING:lean, nonfatty meat] 19 | [PREFSTRING:considerable harems] 20 | 21 | [CREATURE:BEAR_POLAR] 22 | [!REPLACE] 23 | [PREFSTRING:snow white pelts] 24 | [PREFSTRING:cute, black facial features] 25 | [PREFSTRING:preference for harsh, indomitable cold] 26 | [PREFSTRING:still-hunting methodology] 27 | [PREFSTRING:habit of washing themselves] -------------------------------------------------------------------------------- /scripts/umiman/raw/smallthings/creature_reptiles.txt: -------------------------------------------------------------------------------- 1 | creature_reptiles 2 | 3 | [OBJECT:CREATURE] 4 | 5 | [CREATURE:LIZARD] 6 | [!REPLACE] 7 | [PREFSTRING:close relationship with the formidable dragon] 8 | [PREFSTRING:subtle colour changes] 9 | [PREFSTRING:short, plated necks] 10 | [PREFSTRING:forked tongues] 11 | [PREFSTRING:coloured dewlaps] 12 | 13 | [CREATURE:TURTLE] 14 | [!REPLACE] 15 | [PREFSTRING:shield-strength shells] 16 | [PREFSTRING:habit of retreating into their shells] 17 | [PREFSTRING:moist and tender flavour] 18 | [PREFSTRING:old age] 19 | [PREFSTRING:stiff movements, as if one were burdened by load] 20 | -------------------------------------------------------------------------------- /scripts/umiman/raw/smallthings/creature_small_mammals.txt: -------------------------------------------------------------------------------- 1 | creature_small_mammals 2 | 3 | [OBJECT:CREATURE] 4 | 5 | [CREATURE:RAT] 6 | [!REPLACE] 7 | [PREFSTRING:scampering] 8 | [PREFSTRING:innocence] 9 | [PREFSTRING:availability as emergency food rations] 10 | [PREFSTRING:ease to consume: just pick one up by the tail and chomp] 11 | [PREFSTRING:cute pink noses] 12 | 13 | [CREATURE:SQUIRREL_GRAY] 14 | [!REPLACE] 15 | [PREFSTRING:frantically shy nature] 16 | [PREFSTRING:counter shading] 17 | [PREFSTRING:lavish tails] 18 | [PREFSTRING:round dreys] 19 | [PREFSTRING:attentive and alert watchfulness] 20 | 21 | [CREATURE:SQUIRREL_RED] 22 | [!REPLACE] 23 | [PREFSTRING:rust-red colouring] 24 | [PREFSTRING:reluctance to share] 25 | [PREFSTRING:bad memory] 26 | [PREFSTRING:adorable eating posture] 27 | [PREFSTRING:curled, bushy tails] 28 | 29 | [CREATURE:CHIPMUNK] 30 | [!REPLACE] 31 | [PREFSTRING:white-striped backs] 32 | [PREFSTRING:habit of collecting and storing] 33 | [PREFSTRING:bulging cheeks] 34 | [PREFSTRING:expansive burrow networks] 35 | [PREFSTRING:small paws] 36 | 37 | [CREATURE:HEDGEHOG] 38 | [!REPLACE] 39 | [PREFSTRING:many, many, many spines] 40 | [PREFSTRING:ability to roll into a tight ball] 41 | [PREFSTRING:protruding, black noses] 42 | [PREFSTRING:playful looks] 43 | [PREFSTRING:powerful performance as pest control] -------------------------------------------------------------------------------- /scripts/witty/readme.md: -------------------------------------------------------------------------------- 1 | # Witty 2 | 3 | ## Restricted Nobles 4 | 5 | Restricted Nobles created by Witty. (http://www.bay12forums.com/smf/index.php?topic=150702.0) 6 | Restricted Nobles ported to PyDwarf by Sophie Kirschner. (http://www.pineapplemachine.com) 7 | 8 | How this works; 9 | 10 | I used the CREATURE_CLASS token to declare an arbitrary distinction (DWARF or GOBLIN, in this case) for the appropriate creature and then used the ALLOWED_CLASS (For Dwarf Only Nobles) or REJECTED_CLASS (Goblin Excluded Nobles) to restrict the allowed nobility. 11 | 12 | All files changes are marked with a WM insignia. If you would like to remove the restriction to one of the noble positions just find the position in the entity_default.txt and remove either the ALLOWED_CLASS or REJECTED_CLASS token for that position. Note all of this must be done before worldgen, and will have no effect if you make any changes during play. 13 | --------------------------------------------------------------------------------