Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Maklak

Pages: [1] 2
1
DF Suggestions / More tokens for ranged weapons.
« on: September 05, 2014, 11:54:17 am »
Toady One recently worked on some ranged weapon issues and since he is doing fixes now, and removed a firing speed bug recently, it might be a good time to give ranged weapons more flexibility.

EDIT: I Edited the post to make it more readable and included some suggestions.

As a minimum, this token would be useful for ranged weapons:
* RELOAD_DELAY:int - how long it takes to reload after firing.
It would be even better if this delay could be specified both in actions and in ticks and completed only once both conditions were satisfied. So RELOAD_DELAY:10:60 would finish after 10 actions or 60 ticks, whichever comes later. That way slow dwarves would reload slowly and there would be a cap on how fast you can reload even with SPEED:0. 

I'd also like these tokens:

For Ammo:
* CARRY_AMMO:int - Dwarves would prefer to carry this much ammo in Quivers rather than the default 25. With a big suprlus they would almost never run out, but the limiting factor here is wight and maximum quiver capacity. I'm not sure if this sgould be ammo or weapon property.
* PROJECTILE_SURVIVES:int(1-100%), because it could be set to 0 to get rid of that pesky unstacked ammo. But that token should be added to ammo, not weapons.

For weapons:
* INTERNAL_CLIP - how much ammo the weapon can store internally. 1 for anything in DF maybe everything except a repeating crossbow, but would be useful for assault rifles in mods.
* CLIP_RELOAD - how long it takes to load that internal clip from Quiver.
* PROJECTILE_MULTIPLIER:int - fire this many projectiles rather than 1. Only consume 1 ammo, but divide kinetic energy among the projectiles. (For modding in shotguns)

Most of those tokens would be mostly of use to modders, especially to mod in modern firearms.

2
Masterwork DF / Adding stonesense support.
« on: November 26, 2013, 07:30:11 am »
I wrote a script to compare RAWs and stonesense config (without buildings and terrain) http://www.bay12forums.com/smf/index.php?topic=133640.0 and here is what it says when comparing stonesense from dfhack 3 and a several month old version of Masterwork. Most notably, there is a very long list of creatures that would need sprites. 



Comparing RAWs and stonesense config:

These items are referenced in xml, but have no RAW counterparts: "ITEM_GLOVES_GAUNTLETS", "ITEM_HELM_SCARF_HEAD", "ITEM_HELM_VEIL_FACE", "ITEM_PANTS_GREAVES", "ITEM_SHOES_BOOTS", "ITEM_WEAPON_SWORD_2H"

These plants are referenced in xml, but have no RAW counterparts: "ACACIA", "ASH", "BABY TOES SUCCULENT", "BAMBOO, ARROW", "BAMBOO, GOLDEN", "BAMBOO, HEDGE", "BENTGRASS", "BIRCH", "BLOOD_THORN", "BLUE SEDGE", "CACAO", "CANDLENUT", "CARPETGRASS", "CATTAIL", "CHESTNUT", "CLOUDBERRY", "COMMON REED", "COTTONGRASS", "DALLISGRASS", "DOG'S TOOTH GRASS", "DROPSEED GRASS", "FESCUE GRASS", "FIELD SEDGE", "FLOOR FUNGI", "GOBLIN_CAP", "GRAMA", "HAIR GRASS", "HIGHWOOD", "KAPOK", "KNOTGRASS", "LARCH", "MAHOGANY", "MANGO", "MARSH THISTLE", "MEADOW-GRASS", "MEADOWSWEET", "MOUNTAIN AVENS", "NEEDLE GRASS", "PEBBLE PLANTS", "PURPLE MOOR GRASS", "REEDGRASS", "RUBBER", "RUSH", "RYEGRASS", "SATINTAIL", "SAWGRASS", "TOWER_CAP", "TUNNEL_TUBE", "VELVET GRASS", "WHITE MOUNTAIN HEATHER", "WORMY TENDRILS", "ZOYSIA"

Trees in RAWs, missing in xml (important): "CADAVERINE_BLIGHT", "FAIRWOOD", "FEATHER2", "FEATHER3", "FIREWOOD", "FUNGIWOOD_REAL", "GLUMPRONG2", "GLUMPRONG3", "NAKEDWOOD", "NETHERWOOD", "PLYWOOD", "POISON", "POISON_CAP", "REFINED_WOOD", "ROUGH", "SCRAPWOOD", "STALK_WOOD_BRANCH"

Bushes in RAWs, missing in xml: "ARMOK_DRINK", "BERRIES_BLOOM", "BERRIES_BOREAL", "BERRIES_FISHER", "BERRIES_PRICKLE", "BERRIES_STRAW_WILD", "BERRY_SUN", "bitterroot", "BLACK_DRAUGHT", "BULB_KOBOLD", "BUSH_BONE_R", "BUSH_QUARRY", "CARMINE", "CORPSETOUNGE_R", "COTTON", "CRYSTAL_TREE", "CURE_ALL", "EVERDREAM", "EVIL_CM", "FIREWATER_DRAUGHT", "FLOWER_ORCHID_SPITTING", "FLOWER_ZOMBIE_R", "FRUIT_PEAR_BOREAL", "FUNGIWOOD_BARK", "FUNGIWOOD_SMALL", "GIANT_STRENGTH_POTION", "GLASS_THORN", "GOAT_MILK", "GRASS_LONGLAND", "GRASS_TAIL_PIG", "GRASS_WHEAT_CAVE", "GREENSKIN_BANE", "HELL_PLANT", "HELL_PLANT_ARMOK", "HELL_TREE", "HELL_TREE_ARMOK", "HERB_MINT_BOREAL", "HERB_VALLEY", "INDIGO_FLOWER", "INSOMNIUM", "IRONWOOD", "IRONWOOD_SMALL", "JUICE_BERRY_BLOOM", "JUICE_BERRY_FISHER", "JUICE_BERRY_PRICKLE", "JUICE_BERRY_STRAW", "JUICE_BERRY_SUN", "JUICE_PLUMP_HELMET", "JUICE_SWEET_POD", "LICHFINGER_R", "MUSHROOM_CUP_DIMPLE", "MUSHROOM_HELMET_PLUMP", "NETHER_CAP_SMALL", "NETHER_CREEPER", "NETHER_HORROR", "NETHER_VINE", "NORRIUM", "OIL", "OIL_MINERAL", "PHILOSOPHER_DRINK", "PHILOSOPHUM", "PINKSKIN_BANE", "POD_SWEET", "PSYCHOACTIVE_TOAD", "REED_ROPE", "ROASTED_SEED", "ROOT_HIDE", "ROOT_MUCK", "SHADE_THORN", "shadowleaf bush", "SILPHIUM", "SKULL_FRONDS_R", "SLIVER_BARB", "STALK_WOOD", "STEELOAK", "STEELOAK_SMALL", "SWAMP_FEVER", "TEA_CAVE_WHEAT", "TEA_LONGLAND_GRASS", "TEA_MUCK_ROOT", "TEA_RAT_WEED", "TEA_WHIP_VINE", "TREE_SMALL", "TRUE_SIGHT_POTION", "TUBER_BLOATED", "VEGETABLE_POTATO_BOREAL", "VINE_WHIP", "VOODOO", "WEED_BLADE", "WEED_RAT"

Grasses in RAWs, missing in xml (unimportant): "BLUE FUNGUS", "BLUE MOSS", "BUBBLE BULBS2", "DOWNY GRASS2", "DOWNY GRASS3", "EYEBALL2", "FLOOR", "FLOOR1", "FLOOR2", "GRASS1", "GRASS2", "GRASS3", "WORMY TENDRILS2", "WORMY TENDRILS4"

Checking creatures in xml for errors...
These creatures are defined in xml, but not in the RAWs. Unless some ot them are hardcoded, it should be safe to remove them from stonesense: "ALPACA", "AMPHIBIAN_MAN", "ANT_MAN", "ARMADILLO, GIANT", "BIRD_DUCK", "BIRD_GUINEAFOWL", "BIRD_PEAFOWL_BLUE", "BLOOD_MAN", "CAVE_LOBSTER", "CAVY", "CENTAUR", "DEMON", "DONKEY", "ELK_BIRD", "FORGOTTEN_BEAST", "FROG_DEMON", "GIANT_MOSQUITO", "GOAT", "KIWI_MAN", "LLAMA", "MOLE_DOG_NAKED", "MOSQUITO_MAN", "MULE", "NARWHAL, GIANT", "PIG", "PLATYPUS MAN", "PLUMP_HELMET_MAN", "RABBIT", "RED PANDA, GIANT", "REINDEER", "RODENT MAN", "TENTACLE_DEMON", "TITAN", "WATER_BUFFALO", "WEREWOLF", "YAK"
Done checking creatures in xml.

Creatures in RAWs, missing in xml (important) (Skipped varieties: Vermin Giants Men ): "ADDER_SINUOUS_ICE", "AIR_FAMILIAR", "ALCAVIAN", "ALCHOHOL_BLOODWINE", "ANCIENT_VAMPIRE", "ANGEL", "ANGISWAERD_FROST", "ANGISWAERD_MARBLED", "ANIMAL", "ANIMAL_BONERATTLE", "ANIMAL_EXOTIC", "ANIMAL_LAMELLAR", "ANIMAL_RARE", "ANIMAL_STUDDED", "ANT_GIANT", "ANTLION_GIANT", "ANTMAN", "ANUBITE", "ARBELOG", "ARCANII_CRATE", "ARCH_LICH_MDF", "ARCTIC_CONDOR", "ARENA_BALOR_DETAILED", "ARENA_DEEP_ONE", "ARENA_GREEN_DEVOURER", "ARENA_GRIMELING", "ARENA_RAPTOR_DRAGON", "ARENA_SCORPION_DESERT_GIANT", "ARENA_UMBER_HULK", "ARMADILLO_GIANT", "ARMORED_BEAR_GRIZZLY", "ARMORED_BEAR_GRIZZLY_IRON", "ARMORED_ELEPHANT", "ARMORED_ELEPHANT_IRON", "ARMORED_HORSE", "ARMORED_HORSE_IRON", "ARMORED_MASTIFF", "ARMORED_MASTIFF_IRON", "ARMORED_RAPTOR", "ARMORED_RAPTOR_IRON", "ARMORMAN", "ARROW_CRATE", "ASP_VIPER_FF", "AUROCHS_STORM", "AUTOMATON", "BALOR_DETAILED", "BALROG", "BANDICOOT_FF", "BANDICOOT_GIANT_FF", "BANDICOOT_MAN_FF", "BARBARIAN", "BARD", "BARD_SOUNDSENSE", "BARGHEST", "BARGHEST_HULKING_BLACK", "BASILISK", "BAT_GIANT_BLIGHT", "BAT_SPEARNOSED", "BEAK_WOLF_FD", "BEAR_CAVE", "BEAR_FROSTWEYR", "BEAST_CINDER", "BEAST_SHADOW", "BEBILITH", "BEETLE_CAVE", "BEETLE_CAVE_ADAM", "BEETLE_GIANT", "BEHEMOTH", "BEHOLDER", "BEISSWURM", "BIRD_BALD_EAGLE_FF", "BIRD_BLACK_EAGLE_FF", "BIRD_COCKATRICE", "BIRD_COMMON_KESTRAL_FF", "BIRD_CRANE_FF", "BIRD_CRANE_HAWK_FF", "BIRD_CRESTED_OWL_FF", "BIRD_CROW_DEEP", "BIRD_DODO_FF", "BIRD_FIREBIRD", "BIRD_GOLDEN_EAGLE_FF", "BIRD_GULL_FF", "BIRD_MASKED_OWL_FF", "BIRD_MOA_FF", "BIRD_ROCK_PIGEON_FF", "BIRD_SCREECH_OWL_FF", "BIRD_SPIRITRAVEN", "BIRD_STEPPE_EAGLE_FF", "BIRD_TAWNY_EAGLE_FF", "BIRD_TERROR_FF", "BIRD_THUNDERBIRD", "BIRD_VULTURE_SUN", "BITER", "BLACK_1_FAMILIAR", "BLACK_2_FAMILIAR", "BLACK_3_FAMILIAR", "BLENDECFD", "BLINK_DOG", "BLOB", "BLOB_GRAND", "BLOB_SMALL", "BLOOD_ELEMENTAL", "BLOOD_GOAT", "BLOOD_STEEL_CRATE", "BLOODBEAST", "BLUEPRINT_AMMO", "BLUEPRINT_AMMO_MAGMA", "BLUEPRINT_ARMORY", "BLUEPRINT_ARMORY_MAGMA", "BLUEPRINT_ARTIFICER", "BLUEPRINT_BIFROST", "BLUEPRINT_COLOSSEUM", "BLUEPRINT_GLASS", "BLUEPRINT_GOLEM", "BLUEPRINT_GREAT_MAGMA", "BLUEPRINT_GROW", "BLUEPRINT_GUN", "BLUEPRINT_GUN_MAGMA", "BLUEPRINT_LEGION", "BLUEPRINT_MACHINE_FACTORY", "BLUEPRINT_NETHERMILL", "BLUEPRINT_REGRASS", "BLUEPRINT_RUNEARMORY", "BLUEPRINT_RUNEARMORY_MAGMA", "BLUEPRINT_RUNESMITH", "BLUEPRINT_RUNESMITH_MAGMA", "BLUEPRINT_TAVERN", "BLUEPRINT_WARPSTONE_LAB", "BLUEPRINT_WEAPONRY", "BLUEPRINT_WEAPONRY_MAGMA", "BLUEPRINT_WEATHER", "BOGGLE", "BOILED_EGG", "BONE_GOLEM", "BONE_IRON_CRATE", "BOOK_CRATE", "BOOK_DROW", "BOOK_DWARF", "BOOK_HUMAN", "BOOK_SUMMON", "BOW_CRATE", "BRAWLER", "BRINGER_OF_MERCY", "BRONTOTHERE", "BRONZE_ARMOR_CRATE", "BRONZE_CRATE", "BROOD", "BULLET1_CRATE", "BULLET2_CRATE", "BULLETSPIKE_CRATE", "BURNING_SKULL", "BURROWER_BROWN", "C_BOMB", "C_BOMB_EVIL", "C_BOMB_UNDEAD", "C_BOMB_VAMPIRE", "C_BOMB_WEREBEAST", "CANNON_BALL_CRATE", "CANNON_CRATE", "CAVE_TURTLE", "CAVE_TURTLE_HORNED_DDD", "CAVERNKEET_BEARDED_DDD", "CENTAUR_FF", "CERBERUS", "CHANGELING", "CHIMERA", "CHIMERA_CENTAUR", "CLERIC", "CLOTHING_CRATE", "COLOSSUS_ARMOK", "COLOSSUS_METAL", "CONCEPT", "CONSTRUCT_EARTHEN", "COPPER_CRATE", "CORAL_SNAKE_FF", "COW_GREAT", "CRAB_BLUECLAW_SAND", "CRAB_GIANT_SALT", "CRAB_SPIDER_HUGE", "CRAG", "CRAGTOOTH_BOAR_DDD", "CROW_GHOUL", "CULTLEADER", "CULTMEMBER", "CURE_ALL_CRATE", "CURSED_BLACKSMITH", "CYCLOPS_GELV", "DARVAGER_ELBA", "DEATH_ADDER_FF", "DECOY_STONE", "DEEP_ONE", "DEMON_DOG", "DESTRUCTION_CRATE", "DEVILKIN", "DEW_BEETLE_DDD", "DIRE_WOLF_FF", "DIRE_WOLF_ORC", "DOG_ARMORED", "DOG_ARMORED_IRON", "DRAGON_BLUE", "DRAGON_CHROMATIC", "DRAGON_ENGINE", "DRAGON_GREEN", "DRAGON_SKY", "DRAGON_WATER", "DRAGONFLY_GIANT", "DRAGONSCALE", "DRAKE", "DROW", "DROW_EVIL", "DROW_PLANT_CRATE", "DRUID_KOBOLD", "DRUNKEN_GNOME", "DRYAD", "DRYAD_BLOOD", "DRYAD_ROTTING_DEADWOOD", "DWARF_EVIL", "EARTH_FAMILIAR", "EEL_GRASS", "EFREET", "ELEMENTMAN_DIAMOND", "ELEMENTMAN_EMERALD", "ELEMENTMAN_OPAL_BLACK", "ELEMENTMAN_RUBY", "ELEMENTMAN_SAPPHIRE", "ELEMENTMAN_TOPAZ", "ELEPHANT_COLOSSAL", "ELEPHANT_GIANT", "ELEPHANTFD", "ELF_EVIL", "ELF_FERRIC_FD", "EMPATH", "ENGINEER_CRATE", "EQUIPMENT_WAGON", "FAEDOG", "FAENRAE", "FAIR_WOOD_CRATE", "FAT_RAT", "FAUN", "FEATHER_CRATE", "FENDRYAD", "FIEND_RETCH", "FIRE_FAMILIAR", "FIRE_VICTIM_CREATURE", "FIRECAT", "FISHER_GREMLIN", "FLAMING_ZOMBIE", "FLINTLOCK_CRATE", "FLOATER_GIANT", "FLOATING_BRAIN", "FLOATING_EYE", "FLY_GIANT", "FOREST_GIANT", "FRILLLIZARD", "FROG_CAVE_RED", "FROG_HEGGARANGI", "FROG_MANFD", "FROGMAN", "FROST_GIANT", "FROST_WRAITH", "FROSTWEAVER", "FROZEN_SKULL", "FUNGI_WOOD_CRATE", "GARGOYLE", "GARGOYLE_BLACK_MARBLE", "GARGOYLE_GIANT", "GARGOYLE_GRANITE", "GARGOYLE_STATUE", "GARGOYLE_WINGED_BLACK_MARBLE", "GELAPOD_CARNIVOROUS", "GENI_FOREST", "GENIE", "GENIE_TAME", "GHAST_ICY_BLUE", "GHOUL", "GLOWFROG", "GNOLL", "GNOME_CIV", "GOAT_BOOZE", "GOLD_CRATE", "GOLEM", "GOLEM_GARGANTUAN_BONE", "GOLEM_TRADE", "GOLEM_TRADE_ACTIVE", "GORGON", "GRAVE_CAT", "GREAT_BADGER_FD", "GREAT_BOW_CRATE", "GREMLIN2", "GRENDEL", "GRIFFON_FF", "GRUB_CORPSE", "GRYPHON_FOREST", "GUARDIAN_ROCK", "GUILD", "HAFWA_SNAER", "HAND_OF_ARMOK", "HARPYFD", "HAWK", "HEALING", "HEALING_CRATE", "HELL_WOOD_CRATE", "HELLHOUND", "HIEROPHANT_SINISTER", "HOLISTIC_SPAWN", "HOLISTIC_SPAWN_CRAZED", "HONEY BADGER MAN", "HONEY BADGER, GIANT", "HORNET_GIANT", "HORROR_ELDRITCH", "HORROR_FORSAKEN", "HORROR_TENDRILLED", "HORROR_TWISTED", "HORSE_NIGHT", "HOUND_SHADOW", "HOUND_WIND", "HUMAN_EVIL", "ILLITHID", "ILLITHID_EMPIRE", "IMP_FIRE_FD", "IMP_FOREST", "INFERNOFIEND", "INFERNOMANCER", "INKHORNE", "INSOMNIUM_CRATE", "INSTAKILL_CREATURE", "IRON_ARMOR_CRATE", "IRON_COUGAR", "IRON_CRATE", "IRON_DIRE_WOLF_FF", "IRON_UNICORN", "IRON_WOLF", "IRONBARK_CRATE", "JACKALOPE", "JOTUNFD", "KILLER_RABBIT", "KOBOLD_CAMP", "LACERATOR", "LACH_LANKY_GREY", "LACHMATE_LARGE", "LANDMINE", "LARVA_GLISTENING_SCYTHEWING", "LASSE", "LEAPER", "LEATHERWING_DDD", "LEPRECHAUN", "LESSER_BONE_GOLEM", "LEUCRO_BLACK", "LEUCRO_RED", "LEUCRO_SILVER", "LIBRARY_CRATE", "LIBRARY_CRATE2", "LICH", "LICHFIEND", "LIGHTNING_SHEEP", "LION_DIRE", "LIONMAN", "LIPOPOD_GLUTINOUS", "LIZARD_SAILFIN", "LOST_ADVENTURER", "MACHINE_SENTIENCE", "MACHINE_SPIRIT", "MAGIC_ADEPT", "MAIDEN_FIRE", "MAMMOTH_BONE", "MANTICORE", "MASTIFF", "MASTIFF_FERAL_BONE", "MASTODON", "MEDICAL_CRATE", "MEPHIT", "MERROWS", "MESSIAHANGEL", "METALWRAITH", "MILITARY", "MINOTAURFD", "MITHRIL_CRATE", "MOLE_DOG", "MOLEWEASEL_DDD", "MONOLITH_2K1", "MOON_ARROW_CRATE", "MOON_MAGE", "MOONSTONE_CRATE", "MOTH_DUSKY_SCYTHEWING", "MOUNTAINKING", "MUMMY", "MUSICIAN", "MUSKET_CRATE", "MUTATE", "MYCONID", "NAGA", "NARWHAL_GIANT", "NECROFIEND", "NECROMANCER", "NETHER_WOOD_CRATE", "NETHERBARK", "NIGHT_ADDER_FF", "NIGHT_MAIDEN", "NIGHTCLOAK", "NIGHTMARE", "NIGHTWINGFD", "NIPOH_OSHU", "NITH", "NORRIUM_CRATE", "NYAD_BLOOD", "NYAD_SICKLY_BLIGHTWATER", "NYMPH", "OBSIDIAN_COLOSSUS", "OGRE_BLIGHT", "OGRE_DUSK", "OGRE_KOBOLD", "OGRE_KOBOLD_ARMORED", "ORC", "ORC_TAIGA", "PALADIN", "PANDASHI_FD", "PEGASUS", "PEKYT", "PEKYT_GIANT", "PHILOSOPHUM_CRATE", "PHOENIX", "PISTOL_CRATE", "PIT_VIPER_FF", "PSYCHOACTIVE_TOAD", "QUIT", "RAKSHASA", "RANCOR_BLADEFOOT", "RANGER", "RAPTOR", "RAPTOR_DRAGON", "RAPTOR_MAN_FD", "RAT_KOBOLD", "RAT_KOBOLD_GIANT", "RAVEN_GHOUL", "RED_PANDA_GIANT", "REINDEER_FLYING", "RHENAYAS_DRIDER", "RHENAYAS_DROW_LIZARD_GIANT", "RHENAYAS_DROW_ROTHE", "RHENAYAS_DROW_SPIDER", "RHENAYAS_DROW_SPIDER_GIANT", "RIFLE_CRATE", "ROACH_GIANT", "ROCKWRAITH", "SANDWORM", "SANDWORM_GIANT", "SAUROPOD", "SAUROPOD_IRON", "SAUROPOD_STEEL", "SCARECROW", "SEORDMAOR_SCALY", "SERPENT_MANFD", "SHADE_CIV", "SHADOWEAVER", "SHAGGY_BADGERDOG_DDD", "SHAGGY_MUMAK", "SHALSWAR", "SHYLVIC_TRANSPARENT", "SILK_CLOTHING_CRATE", "SILPHIUM_CRATE", "SILVERFISH", "SINGING_ARROW_CRATE", "SKAVEN", "SKELETON_GREATER", "SKELETON_LESSER", "SLADE_CRATE", "SLASHER", "SLIME", "SLUAGH", "SMOOTH_WOOD_CRATE", "SNAKE_ASP", "SNAKE_BOA", "SNAKE_COBRA", "SNAKE_MUD", "SNOWBEAST", "SOGGOTH", "SOLDIER_GREY_CLAY", "SOUL_CM", "SPAWN", "SPAWN_BALROG", "SPAWN_COLOSSEUM", "SPAWN_FOUR", "SPAWN_METALWRAITH", "SPAWN_ROCKWRAITH", "SPAWN_SOGGOTH", "SPAWN_TWENTY", "SPELLSWORD_CRATE", "SPHINX", "SPIDER_BLADE_GIANT", "SPIDER_BLADE_GIANT_QUEEN", "SPIDER_FIEND_FD", "SPIDER_FOREST", "SPIDER_GIANT", "SPIDER_KOBOLD", "SPIDER_MOUNTAIN", "SPIDER_SAND", "SPIDER_WOLF_GIANT", "SPIRIT_BEAR", "SPIRIT_BEAR_KOBOLD", "SPIRIT_BUFFALO", "SPIRIT_CAT", "SPIRIT_FOX", "SPIRIT_HORSE", "SPIRIT_TIGER", "SPIRIT_WOLF", "SPIRITHUNTER", "SPIRITWALKING_KOBOLD", "SPITTING_PLANT", "SPITTING_PLANT_SEEDS", "SPRITE_DARK", "SPRITE_FIRE", "SPRITE_RIVER", "SPRITE_SAND", "SPRITE_WATER", "STAR_SHAMBLER", "STATUE_BRONZE", "STEEL_ARMOR_CRATE", "STEEL_COUGAR", "STEEL_CRATE", "STEEL_DIRE_WOLF_FF", "STEEL_UNICORN", "STEEL_WOLF", "STEELOAK_CRATE", "STEPPE_AUROCHS", "STONE_CRAB_DDD", "STRANGLERFD", "SUEDE", "SUMMONERFIEND", "TAIGA_SABRECAT", "THIEF", "TIGERMAN_WHITE_FD", "TOAD_TREEHOPPER", "TOOLKIT", "TRAP_CRATE_COMP", "TRAP_CRATE_SPIKE", "TRAP_CRATE_WIRE", "TREANT_SEEDS", "TREANT_WILD", "TROLL_BROOK", "TROLL_CAVE", "TROLL_ROCK", "TROLL_SCAVENGER", "TROLL_SWAMP", "TROLL_WOOD", "TROLLKIN", "TURRET_OF_ACID", "TURTLE", "TUSKOX_MOUNTAIN_DDD", "UMBER_HULK", "UNDEAD_ZOMBIE", "UNNAMED_ONE", "UNYN_NIGHTREAVER", "UNYN_NIGHTSTALKER", "UNYN_NIGHTWEAVER", "VAMPIRE_LORD_1", "VAMPIRE_LORD_2", "VAMPIRE_LORD_3", "VELVER", "VINE_BLOOD", "VINE_MORAH", "VINE_TRESS", "VINE_WORMWOOD", "VOICE_OF_PEL", "WARD_CULT", "WARKLIN_ARMORED", "WARKLIN_MAULER", "WARLOCK", "WARLOCK_SPY", "WARRIOR_MAGE", "WATER_FAMILIAR", "WELKIN", "WEREBEAR_G", "WEREBEAR_P", "WERELIZARD_C", "WERELIZARD_N", "WEREPANTHER", "WERESCORPION_NV", "WERESCORPION_V", "WEREWOLF_N", "WEREWOLF_R", "WEREWOLF_W", "WEREWOLFFD", "WHITE_1_FAMILIAR", "WHITE_2_FAMILIAR", "WHITE_3_FAMILIAR", "WHITEWIDOW", "WIGHT", "WILL_O_WISP_LFR", "WOLF_BLOOD", "WOLF_BONE", "WOOLLY_GOAT_MOUNTAIN_DDD", "WORM_GRAVE", "WRAITH", "WRAITH_VAPOROUS_BLOOD", "WRAITH_VILE_PLAGUE", "XEN", "ZOMBIE_SPY", "ZOO_BIRD_FLAMINGO", "ZOO_BIRD_HERON", "ZOO_BIRD_ROADRUNNER", "ZOO_BIRD_SWAN", "ZOO_MAMMAL_ANTEATER", "ZOO_MAMMAL_ANTELOPE", "ZOO_MAMMAL_BEAR_KODIAK", "ZOO_MAMMAL_BEAR_SUN", "ZOO_MAMMAL_BISON", "ZOO_MAMMAL_CARACAL", "ZOO_MAMMAL_COUGAR_GIANT", "ZOO_MAMMAL_DOG_PRAIRIE", "ZOO_MAMMAL_LEOPARD_SNOW", "ZOO_MAMMAL_LEOPARD_SNOW_GIANT", "ZOO_MAMMAL_MAMMOTH_WOOLLY", "ZOO_MAMMAL_MUSKRAT", "ZOO_MAMMAL_OKAPI", "ZOO_MAMMAL_OTTER", "ZOO_MAMMAL_PONY", "ZOO_MAMMAL_RAT_POUCHED", "ZOO_MAMMAL_SERVAL", "ZOO_MAMMAL_SMILODON", "ZOO_MAMMAL_TIGER_WHITE_GIANT", "ZOO_MAMMAL_WILDEBEEST", "ZOO_MAMMAL_WOLF_MANED", "ZOO_MAMMAL_ZEBRA", "ZOO_REPTILE_CAIMAN_BLACK", "ZOO_REPTILE_DRAGON_KOMODO", "ZOO_REPTILE_GHARIAL"

3
When I was helping to write stonsesense config for MLF mod, I was frustrated by not knowing which creatures were missing or what body parts could be used to colour sprites or what plants were missing from stonesense. So I wrote a perl script to answer questions like these. You might find it useful if you intend to write stonesense config for a mod, otherwise don't bother. Currently I can check for missing / non-existent plants (sorted by type: tree, crop, grass) as well as creatures with body parts and castes and finally non-existent equipment.

Download: https://dl.dropboxusercontent.com/u/71287918/Scripts/chkstns.pl

This script runs in command line (no GUI) and you need perl to use it. It will write to standard output, but you can redirect it to a file. Supported output types are "txt", "html", "bbcode" (what this forum uses) and "wiki" (but html works for wikis too). You can type
$ perl -w stnschk.pl -h
for help, but here is a run-down of some useful options:

Write output to a html file to view it in a web browser.
$ perl -w chkstns.pl -i=<stonesense_dir> -r=<RAW_dir> --html >out.html

Get information about a specific creature.
$ perl -w chkstns.pl -i=<stonesense_dir> -r=<RAW_dir> --det=2 | grep "DWARF"

Be more verbose.
$ perl -w chkstns.pl -i=<stonesense_dir> -r=<RAW_dir> --det=1 -list -wr >out.txt

I have no idea how to add checking building and terrain, so please tell me if you know. Comments, bug reports and feature requests are also welcome.

If you liked this, you might want to check some of my other scripts: http://www.bay12forums.com/smf/index.php?topic=126953.0

EDIT: Version 1.01 is out, with more readable html output.
EDIT: Version 1.02 is out. It is less verbose by default.
EDIT: Version 1.03 is out. It checks for misspelled professions (but not for those not allowed in entity.txt)

Here is some sample output (slightly outdated now):

WARNING: Redefinition of BIRD_CHICKEN in "stonesense/creatures/caravan_animals.xml" :3. Previously defined in "stonesense/creatures/large_128/domestic.xml" :85.
WARNING: Redefinition of BIRD_DUCK in "stonesense/creatures/caravan_animals.xml" :54. Previously defined in "stonesense/creatures/large_128/domestic.xml" :102.
WARNING: Redefinition of SHEEP in "stonesense/creatures/caravan_animals.xml" :103. Previously defined in "stonesense/creatures/large_128/domestic.xml" :43.
WARNING: Redefinition of GOAT_MOUNTAIN in "stonesense/creatures/wild_animals.xml" :54. Previously defined in "stonesense/creatures/large_128/wild.xml" :4.
WARNING: Redefinition of CAT in "stonesense/creatures/Wildlife.xml" :4. Previously defined in "stonesense/creatures/beefmo_domestics.xml" :206.
[...]



Listing files and read objects:

Stonesense files:
stonesense/buildings/AnimalTrap.xml
stonesense/buildings/ArmorStand.xml
stonesense/buildings/Ashery.xml
stonesense/buildings/Bed.xml
stonesense/buildings/Blueprint.xml
stonesense/buildings/Bowyers.xml
stonesense/buildings/Bridge.xml
stonesense/buildings/Butchers.xml
stonesense/buildings/Cabinet.xml
stonesense/buildings/Cage.xml
stonesense/buildings/CageTrap.xml
stonesense/buildings/caravan_1.png
stonesense/buildings/caravan_1.xml
stonesense/buildings/Carpenter.xml
stonesense/buildings/Chair.xml
stonesense/buildings/Chest.xml
stonesense/buildings/Clothiers.xml
stonesense/buildings/Coffin.xml
stonesense/buildings/Craftsdwarfs.xml
stonesense/buildings/Door.xml
stonesense/buildings/DoorsAndFloodgates.png
stonesense/buildings/Dyers.xml
stonesense/buildings/Farm.xml
stonesense/buildings/FarmersWorkshop.xml
stonesense/buildings/Fishery.xml
[...]

Files in Stonesense that appear to be unused. Some of theym can be required anyway, others (especially in subdirectories) may be deleted to reduce size. Make a backup before deleting anything.
stonesense/buildings/bgibs.png
stonesense/buildings/doorsAndWindows.png
stonesense/buildings/INFO generic.txt
stonesense/buildings/Table.xml~
stonesense/buildings/Workshop.txt
stonesense/colors/Colors_Grass_vherid.xml
stonesense/creatures.png
stonesense/creatures/clothed_Dwarves.xml
stonesense/creatures/color_dwarves.png
stonesense/creatures/color_Dwarves.xml
stonesense/creatures/color_poni.png
stonesense/creatures/color_poni.xml
stonesense/creatures/color_poni2.png
stonesense/creatures/color_poni_caste.xml
stonesense/creatures/color_ponibig.png
stonesense/creatures/color_ponibig_2.png
stonesense/creatures/dwarves.png
stonesense/creatures/Dwarves.xml
stonesense/creatures/elfs.png
stonesense/creatures/elfs.xml
stonesense/creatures/elves.png
stonesense/creatures/Elves.xml
stonesense/creatures/elves_hair.png
stonesense/creatures/elves_skin.png
stonesense/creatures/gobbos.png
[...]



Comparing RAWs and stonesense config:

Trees in RAWs, missing in xml (important): ACACIA

Bushes in RAWs, missing in xml: APPLESAUCE BERRY_SUN CELERY CHOCOLATE CHOCOLATEM COCOA COCOA_BEAN COTTON DANDELION FLAX GOLDENROD_FLOWERS JUTE PONY_APPLE PONY_APPLE_BASKET PONY_APPLE_QUALITY PONY_GRASS_WHEAT PONY_PROCESSED_WHEAT PONY_STRAW POTATO RADISH ROOT_CARROT SILK_ROSE SLIVER_BARB STRAWBERRY SUGAR_BEETS SUGAR_CANE SUNFLOWER SWEET_CHOCOLATE TURNIPS WATER WINTER LETTUCE

Grasses in RAWs, missing in xml (unimportant): BABY TOES SUCCULENT BAMBOO, ARROW BAMBOO, GOLDEN BAMBOO, HEDGE BENTGRASS BLUE SEDGE BUBBLE BULBS CARPETGRASS CATTAIL CAVE MOSS CLOUDBERRY COMMON REED COTTONGRASS DALLISGRASS DOG'S TOOTH GRASS DOWNY GRASS DROPSEED GRASS EYEBALL FESCUE GRASS FIELD SEDGE FLOOR FUNGI GRAMA HAIR GRASS KNOTGRASS MARSH THISTLE MEADOW-GRASS MEADOWSWEET MOUNTAIN AVENS NEEDLE GRASS PEBBLE PLANTS PURPLE MOOR GRASS REEDGRASS RUSH RYEGRASS SATINTAIL SAWGRASS VELVET GRASS WHITE MOUNTAIN HEATHER WORMY TENDRILS ZOYSIA

Checking creatures in xml for errors...
These creatures are defined in xml, but not in the RAWs. Unless some ot them are hardcoded, it should be safe to remove them from stonesense: "BIRD_EAGLE_GIANT", "CAVE_LOBSTER", "DEMON", "DWARF", "ELF", "FORGOTTEN_BEAST", "FROG_DEMON", "GOBLIN", "HORSE", "HUMAN", "KIWI_MAN", "KOBOLD", "LEECHMAN", "SLUGMAN", "SNAILMAN", "SPIRIT_OF_FIRE", "TENTACLE_DEMON", "TITAN", "TREANT", "WEREWOLF", "WHALE", "WIZARD"
Done checking creatures in xml.

Creatures in RAWs, missing in xml (important) (Skipped varieties: Vermin Giants Men ): "CHIMERA", "EQUIPMENT_WAGON"

4
General Discussion / Russian forge at work - Convection Schmonvection
« on: November 09, 2013, 02:50:30 am »
I thought something like a magma forge would be impossible, because the convection should kill anything standing next to magma or molten metal. Then I saw a russian going inside a furnace.

http://www.youtube.com/watch?feature=player_embedded&v=81n0XYvMY98

5
DF Suggestions / Take from links first
« on: November 06, 2013, 07:11:56 am »
Currently the stockpiles and workshops have two settings "Take from anywhere" and "Take from links only". OK, stockpiles have those settings and workshops will either take from anywhere or only from linked stockpiles if there are any, but apart form the option being hidden, it works the same.

One problem with it is that for custom items and reactions, you need stockpiles for schematics and other auxiliary items, such as barrels / pots and not just for the most obvious reagents. This could be improved by having a setting for workshops and stockpiles "take from links first". Like the name says, it would first check the linked stockpiles and only take from anywhere else if it can't find what it needs. One downside I see is that with something set on repeat and an empty stockpile, random items would be used for that reaction, which is basically the same as before having links. Anyway, you could have a linked stockpile with exactly the type of item you want to process and not have to worry about containers, tools, schematics and the like.

Or maybe have a mason shop with a small stone stockpile with wheelbarrows, so that the mason will only take long walks to collect stones when the stockpile is exhausted and no jobs will be cancelled.

6
DF Suggestions / Reach attacks, not weapons.
« on: August 13, 2013, 05:34:20 pm »
I think in one of Future of The fortress talks Toady One mentioned reach weapons (such as spears) and that he isn't sure what to do about them. Or something like that.

I think, I figured out a sane way to make it work. Don't make reach weapons, make reach attacks instead. That way a halberd or spear could have it's most effective attack(s) have reach, but also have an attack (pole bash?) for close combat. So [ATTACK:...] token would get one optional extra component REACH. It could also be applied to some creatures natural attacks, such as dragon tail swipe or whatever.

In combat, it could work like this. (dx, dy - distance to the enemy in tiles)

Code: [Select]
if ((abs(dx) == 2 && abs(dy) <= 2) || (abs(dx) <= 2 && abs(dy) == 2))
{ // REACH attack range.
  if (weapon has reach attack)
  { // use reach attack
  } else if (ranged weapon)
  { // fire if ammo, else step towards the target
  } else
  { // step towards the target
  }
} else if (abs(dx) <= 1 && abs (dy) <= 1)
{ // Normal weapon range. If weapon has a reach attack, consider stepping away from the target
  // instead of attacking (assume reach attacks are better on weapons that have them).
  // Or just use one of the non-reach attacks, especially when the enemy is faster. Or maybe see if
  // another enemy is in REACH range and attack that one instead.
} else
{ // Out of range. Fire ranged weapon if ammo, else step towards the target.
}

As to which attack is used, normal rules could apply, but with an added twist that reach and close attacks are never applicable at the same time.

What do you think?

7
Not long ago Masterwork mod got its own sub-forum in the modding section and recently Deon got one too. I propose that we also get a "Tools and Utilities" sub-forum for dfhack, Dwarf Therapist and any other tools people are working on. For now all these tools have their threads in the modding section, but IMO they would be better off in a subforum of their own.

8
I wrote a script that reads plant RAWs and prints:
* Lists of plant IDs for getplants dfhack command for easy designating of trees to be cut and plants to be gathered.
* Tables with crops, their values, drinks, etc.
And another script that reads and prints tables of creatures. Then another for weapons.

EDIT: There are some similar tools.
* If you're only interested in taking a look at sortable tables of items from Vanilla or Masterwork and don't want to install perl or run any scripts, this is for you: http://www.bay12forums.com/smf/index.php?topic=131301
* If you are interested in editing RAWs in a spreadsheet, while importing and exporting them in Python, this has partial support. http://www.bay12forums.com/smf/index.php?topic=130140
* If you know of any other tools (wiki doesn't count) with partially overlapping functionality, let me know in a comment.

They should be useful for modders as part of their manuals for crops as well as spotting some anomalies in their plant RAWs. These scripts are RAW crawlers and not a part of dfhack. They also have no ability to edit anything, just display data. They shouldn't damage anything, unless you  redirect the output to overwrite some important file or do something stupid like that. Anyway, what these scripts are meant to do is to perform the bulk of the boring work when making crop tables for mods or just looking at the animals in one table. The output should normally be corrected by a human before posting, but if you see a way to make something saner, please let me know.

Download link for plants: https://dl.dropboxusercontent.com/u/71287918/Scripts/plants.pl
Download link for creatures: https://dl.dropboxusercontent.com/u/71287918/Scripts/creatures.pl
Download link for weapons: https://dl.dropboxusercontent.com/u/71287918/Scripts/weapons.pl
Download link for armour: https://dl.dropboxusercontent.com/u/71287918/Scripts/armour.pl

The scripts were written with FoE mod in mind, but also work quite well for Masterwork and other mods. The output can be set to txt/csv, bbcode (for forum), wiki or html. It requires perl to run. There are no CPAN modules necessary and it works equally well with perl 5.6 and 5.14. Except the creature script has an --eval parameter for custom filters for advanced users, which doesn't work in 5.6. Instructions to run scripts are displayed by:
$ perl -w plants.pl --help
$perl -w creatures.pl --help


This program reads Dwarf Fortress plant RAWs and prints commands for dfhack
    getplants commands for easy designating of trees and bushes to be cut.
  More importantly, it also prints formatted tables with crops. This is useful
  for DF mods and was originally developed for FoE mod. Usage:

$ perl -w plants.pl <options> files

Options:
-o=<arg>  --o=<arg>  --<arg>       where <arg> is txt|csv|bbcode|html|wiki.
       Sets output to that file format. The default is txt/csv.
         Bay12 forum uses bbcode.
-h  --help     Print this help and exit.
-d  --debug    Print much more information.
--nodebug      Dont print debug information.
--nogetplants  Wont print getplants commands for dfhack.
--nocrops      Wont print crop tables
--yesdye       Include dye-only plants in getplants macros.
--yield        Print yield per year. (There are 12 months, 28 days each.)
--freq         Print frequencies of crops for plant gathering.
--align        Print alignment of plants (Good / Evil / Savage / All)
             Since this is "All" for almost all plants, it is off by default.
--             End options. Everything else is treated as a RAW file.

There is no option to set output file, so redirect the output stream instead.

Examples:
$ perl -w ../../../Scripts/plants.pl --bbcode *plant*.* >../../../Scripts/out.txt
Will process all files in the current directory matching *plant*.*
  and write an output file suitable to paste on the forum.

$ perl -w ../../../../Scripts/plants.pl -o=html *.txt  >../../../../Scripts/out.html
Process all *.txt files in the current directory (raw/objects) and write
  the output to a html file.


This is what crops.pl prints for vanilla DF. These tables were printed with default options, but some additional columns, for example with yield per year or frequency for plant gathering can be selected as well.


Read 91 plants.

Dfhack # getplants commands for easy designating tree cutting and plant gathering:

Aboveground bushes: (only edible, cookable or brewable)
# getplants ROOT_MUCK TUBER_BLOATED BERRIES_PRICKLE BERRIES_STRAW_WILD GRASS_LONGLAND HERB_VALLEY WEED_RAT BERRIES_FISHER REED_ROPE SLIVER_BARB BERRY_SUN VINE_WHIP

Aboveground trees:
# getplants MANGROVE SAGUARO PINE CEDAR OAK MAHOGANY ACACIA KAPOK MAPLE WILLOW GLUMPRONG FEATHER HIGHWOOD LARCH CHESTNUT ALDER BIRCH ASH CANDLENUT MANGO RUBBER CACAO PALM

Underground bushes: (only edible, cookable or brewable)
# getplants MUSHROOM_HELMET_PLUMP GRASS_TAIL_PIG GRASS_WHEAT_CAVE POD_SWEET BUSH_QUARRY

Underground trees:
# getplants TOWER_CAP BLACK_CAP NETHER_CAP GOBLIN_CAP FUNGIWOOD TUNNEL_TUBE SPORE_TREE BLOOD_THORN



Aboveground crop table:
 
Name
 ID
ValueGrowsSeasonsEatCookBrew (Value) (Cook)Products (Value)Hints
muck root
 ROOT_MUCK
125N/A? All yearYesYesswamp whiskey (1) (Y)N/A--
bloated tuber
 TUBER_BLOATED
125N/A? All yearYesYestuber beer (2) (Y)N/ABrew
kobold bulb
 BULB_KOBOLD
125N/A? All yearNoNoN/AEXTRACT(Flask): gnomeblight (100)
 
--
prickle berry
 BERRIES_PRICKLE
125All yearYesYesprickle berry wine (1) (Y)N/A--
wild strawberry
 BERRIES_STRAW_WILD
225All yearYesYesstrawberry wine (2) (Y)N/ABrew
Longland grass
 GRASS_LONGLAND
225All yearNoPr.Longland beer (2) (Y)FLOUR: Longland flour (20)
 
Brew
valley herb
 HERB_VALLEY
525N/A? Spring NoYesN/AEXTRACT(Flask): golden salve (100)
 
Cook
rat weed
 WEED_RAT
125All yearYesYessewer brew (1) (Y)N/A--
fisher berry
 BERRIES_FISHER
225All yearYesYesfisher berry wine (2) (Y)N/ABrew
rope reed
 REED_ROPE
225All yearNoNoriver spirits (2) (Y)THREAD: rope reed thread (2)
 
Thread Brew
blade weed
 WEED_BLADE
225All yearNoNoN/ADYE: emerald dye (20)
 
Useless Dye
hide root
 ROOT_HIDE
125All yearNoNoN/ADYE: redroot dye (10)
 
Useless Dye
sliver barb
 SLIVER_BARB
125All yearNoNogutter cruor (1) (Y)DYE: sliver dye (20)
 
--
sun berry
 BERRY_SUN
325All yearYesYessunshine (5) (Y)N/ABrew
whip vine
 VINE_WHIP
125All yearNoPr.whip wine (3) (Y)FLOUR: whip vine flour (25)
 
Brew Mill


Subterranean crop table:
 
Name
 ID
ValueGrowsSeasonsEatCookBrew (Value) (Cook)Products (Value)Hints
plump helmet
 MUSHROOM_HELMET_PLUMP
225All yearYesYesdwarven wine (2) (Y)N/ABrew Embark
pig tail
 GRASS_TAIL_PIG
225Summer Autumn NoNodwarven ale (2) (Y)THREAD: pig tail thread (2)
 
Thread
cave wheat
 GRASS_WHEAT_CAVE
241Summer Autumn NoPr.dwarven beer (2) (Y)FLOUR: dwarven wheat flour (20)
 
--
sweet pod
 POD_SWEET
241Spring Summer NoPr.dwarven rum (2) (Y)SUGAR: dwarven sugar (20)
 EXTRACT(Barrel): dwarven syrup (20)
 
Brew
quarry bush
 BUSH_QUARRY
241Spring Summer Autumn NoPr.N/ALEAF: quarry bush leaves (5)
 
OIL: rock nut oil (5)
 SOAP: rock nut soap (5)
 PRESSED: rock nut press cake (1)
 
Leaves Embark
dimple cup
 MUSHROOM_CUP_DIMPLE
241All yearNoNoN/ADYE: dimple dye (20)
 
Useless Dye


Fake plant table:
 
Name
 ID
ValueGrowsSeasonsEatCookBrew (Value) (Cook)Products (Value)Hints





EDIT: Release v1.03 of plant script that fixed even more problems.

EDIT: Released v1.00 of creature script.

TODO: Make the first post prettier.

9
While demonstrations are great to bring recruits up to speed, they are a massive waste of time when done by the wrong Dwarf for the wrong skill. This is especially a problem when instructors gain a bit of striking, kicking and wrestling from sparring, then go ahead and try to teach that while still dabbling in it themselves.

My proposed fix is that there should be no demonstration unless the instructor is at or above a certain skill level, say competent.
I think the right way to do this is more complex, taking into account both the skill of teacher and student, so that there won't be demonstration if they are too close, but I even just a minimum skill level for demonstration should stop squads from wasting so much time.

10
Currently once a citizen learns to do an interaction, that citizen can do it as many times as the cooldowns and it's lifespan will allow. For some mods it would be useful to have interactions that run out after a certain number of uses. Otherwise things like permanent combat drugs can be rather overpowered.
EDIT:
For limiting the use of interactions we have the [CDI:WAIT_PERIOD:50], but there is no real way to make an interaction be only usable say 5 times, other than making the syndrome add it 5 times with ridiculously long durations and wait periods. I propose that we get [CDI:MAX_USES:5] so that the interaction can be used exactly 5 times before it expires and the syndrome that allows it is removed from the creature, saving some RAM and CPU.
This would be useful for mods for one-time interactions as well as things like burst weapons with limited number of ammunition, magic items granting a limited number of spells with a reaction at a workshop and similar things and shouldn't be hard to implement.

A screen listing all the interactions (barring those tagged invisible) currently known by a citizen would also be useful to keep track of things such as spells and other upgrades.
EDIT: There is a dfhack script that does this.

Some kind of way for a workshop to give a syndrome / interaction to the creature performing a reaction with 100% efficiency would also be great for this. The current methods are evaporating boulders, which aren't 100% effective or food / drink with a syndrome, but this requires a lot of micro-management.
EDIT: This also seems to work with dfhack now.

11
DF Dwarf Mode Discussion / How do attributes influence skills?
« on: January 11, 2013, 01:14:27 pm »
Can anyone point me to some research and formulas on how stats influence:
* The XP gained per job.
* The speed a job is performed
* The quality of an item
* Skill gains by military?

The consensus seems to be that stats matter, but other than for walking and fighting speed I haven't seen anything concrete on the subject.

12
DF Suggestions / Reactions that interact with those who perform them.
« on: December 17, 2012, 09:14:58 am »
This isn't that important for vanilla, but some mods have reactions that either produce "upgrade potions" for dwarves or boulders that evaporate and cause syndromes. The first method requires a lot of micro-management, including locking the dwarf in the room with the potion. The second method often fails. A good example of what this is used for, is learning magic spells.

This system would be much less cumbersome if there was a tag for a reaction that allows it to interact with the creature performing it, or a creature that was brought to it (say for equipping dogs with armour).
It would also help if such a reaction could be set to [ONCE] so that once successful, it won't ever become active again for that creature.

13
DF Dwarf Mode Discussion / Research: Crossbow with axe and shield.
« on: June 23, 2012, 08:31:14 am »
I use DF 31.25 with MLP mod 1.71. Basically you play as a race of intelligent horses, with unicorns having 2 grips: mouth and horn (telekinesis). Mouth is roughly equivalent to right hand and horn to left hand.

Glossary:
When you go to m->e->squad->dwarf, you have equipment list.
When you do v->i on a dwarf, you see inventory list.

I've run into an issue, where a unicorn equipped with a crossbow, axe and shield didn't fire his crossbow, despite having quiver and bolts, so I decided to do some research.

I did a lot of tests and finally figured out backup weapons, I think. The unicorn keeps weapons in the mouth and shield with horn. He has a very strong preference for the first weapon in his inventory. Therefore the correct order for equipment list is:
1) Unforbid all weapons currently in inventory.
2) Go to squads -> equipment and remove weapons and shield. Wait until dwarf empties them from inventory, and carries then all to stockpiles (about a minute).
3) Assign: Shield, Crossbow, Battle Axe in this exact order. 
The result is that he will use his crossbow and spray bolts at the enemy (Which gives him the advantage of range). Once out of ammo, or engaged, he will switch to close combat. He will use his shield, but unfortunately he will hit with his crossbow 95% of the time. The remaining 5% is what gives him an advantage over pure crossbow user.

Weapons are held in mouth and a shield is held by horn. Contrary to what some people say (maybe they talk about 0.34?) you don't need a free grip to fire a crossbow. That's why Pegasai (who only have mouth and no horn) can do it. Therefore having a shield is not a problem. The problem is that a dwarf uses the first weapon on inventory list about 95% of the time. Therefore if the dwarf equips a crossbow and an axe, what happens depends on their order. If axe is first on the inventory list, the dwarf won't fire his crossbow, and just charge into melee and use the Axe. If crossbow is first, the dwarf will fire it until he empties the quiver, then charge and use the crossbow as melee weapon. After a few pages of hitting the enemy with it, Axe will occasionally be used. Another problem with this setup is upgrading quality: A dwarf who picked up a -crossbow- and an =Axe=, then upgraded the +crossbow+, puts it at the end of his inventory list. This results in going melee with the axe.

I also found out that firing 25 wooden bolts from -crossbow- by a newb misses most of the time, barely softens the enemy up and generates 30*25 EXP for both crossbow and archer skills. With a masterwork crossbow, my test subject was able to hit much more often, despite being a newb. Silver crossbow may help a bit, but I got pages of 'Pony hits Animal with -steel crossbow-, damaging the skull, so I doubt silver will help much. Emptying a quiver at an archery target granted only 150 EXP to those skills, 5 times less.

In one 31.25 fort, I tried dual-wielding two weapons and two shields, but it resulted in weird bugs with dwarves having problems equipping terminator armour.

TL;DR: The weapon higher on the inventory list is almost always used, unless forbidden. When a dwarf upgrades equipment, the new item is at the bottom of their inventory list. You don't need a free grip to fire a crossbow. The equipment list is important in determining which items are obtained first and are therefore lower on the inventory list.

Can anyone confirm or correct my findings?

14
I want to use Pump Operation for corss-training attributes. Does it make sense to keep it enabled when it hits legendary+5? Do attribute gains keep going / accelerate / slow down after that?

15
Currently when a dwarf is mining a tile, he will try to stand to the west from it. I propose a quick check if the tile to be mined (or woodcutted, or plant gathered, or construction removed) is on the same z-level, and directly adjacent to the dwarf (ie: dz==0 && max{|dx|, |dy|} ==1). If yes, then the Dwarf mines that tile from where he is standing. This will cut a bit on pathfinding, and dwarfs won't have to waste so much time pointlessly walking around, so it will speed up the game a bit, and is really simple to implement.

A more advanced version of this would be to not assign another dwarf to mining a tile with some active miner within 2 tiles, and miners mining all directly adjacent tiles designated for mining before moving. It would really help to scale up the efficiency of mining with the number of miners.

This suggestion is my proposed partial fix for "Improved designation execution", currently on ESV.

EDIT: 0.34.11 does something pretty close to this and it works good, so this suggestion is much less important now.

Pages: [1] 2