Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Author Topic: List of oddities/issues found while modding  (Read 845 times)

Meph

  • Bay Watcher
    • View Profile
    • worldbicyclist
List of oddities/issues found while modding
« on: June 20, 2013, 07:53:17 am »

Hey everyone,
I'm trying to compile a small big list of all things that modders have discovered while working on this or that, which might surprise a vanilla DF user, because they play no purpose in vanilla DF. I mean every oddity, any issue you found, bugs, silly workarounds that otherwise could be fixed easily but are hardcoded, logical errors... anything you want.

To name a few:
  • Pop_Ratio:0 is broken.
  • MAGIC_NATURE has no profession, therefore the profession name cannot be changed.
  • Knapping has no labor/profession in fortress mode.
  • Barrels cant fit 25 units of liquid, although the vanilla still reaction can fill them with 25 or more drinks.
  • PRODUCT:CREATURE:NONE:DWARF:MALE, alongside any other creature creation crashes the game.
  • Item_Tools have a tilenumber, but all other Item_ have none. (weapons, ammo, armor, toys)
  • Grasses and Creatures have a ALT_TILE, but Trees/Plants have none. Neither do Inorganics.
  • Several tokens are restricted to several types. For example Material_template for muscle includes [ROTS][GENERATES_MIASMA][EDIBLE_VERMIN], which works, but Material_template for stone wont accept [ROTS][GENERATES_MIASMA][EDIBLE_VERMIN].
  • Stockpiling issues. Stone weapons are stockpiled, Stone ammo is not. Stone furniture is not stockpiled either.
  • Same for Gems. Gems are stockpiled, Gem crafts are stockpiled, but other gem furniture, armor or weapons is not.
  • CE_ADD_TAG can only add a small selection of tags. Why not all creature tokens? It seems odd to be able to add webbing or firebreathing, but not webimmunity or fireimmunity.
  • REAGENT:A:1:MEAT:NONE:NONE:HEART, and any other organ-token is broken. This reaction would accept any heart, but also any other organ, even meat from muscles.
  • Bone-Stacks (among other stacks) are always entirely used up, instead one by one. 1 bone gives as many products as 100 bones in one stack, disregarding the prodcut amount (always 1)
  • Reactions cannot find reagents that are in bags that are stored inside barrels/pots/bins.
  • Custom reactions cannot find reagents that are stored in another burrow, even if the burrow is not active.

I could go on and on, but in the end the product would look a lot neater. I wanted to collect as much as possible, then sort it into categories, give each an ID, a short description, then send the list to Toady. He said that it is indeed low priority, but always good to have such info.

These are all issues that usually would never pop up in the bug-section, because no vanilla user (not even most mod users) will know about it, its only modders that have stumbled upon one or the other. In the end, even if Toady does not do anything with it besides sticking it in a far away to-do-list, modders will still have a list of issues that they now know about, which they can avoid or improve upon.

Might look like this in the end:

Modding_Issue_0001: Bags in Containers
 - Reactions can't find reagents that are in bags, which are stored inside barrels/pots/bins.
 - The reaction seems to check the stockpile for the reagents, checks the inside of barrels/pots/bins for the reagent, only sees bags, then continues to search. It disregards to content of bags, which is seemingly never looked at.

Modding_Issue_0002: Stone Item Stockpiling
 - Any stone ammo, armor, pants, gloves, shoes, helm and shield item is not stockpiled.
 - Only stone weapons are stockpiled, which seems to have its cause in the vanilla reaction to make a sword from sharp rock.

Modding_Issue_0003: Gem Item Stockpiling
 - Any gem furniture, weapon, ammo, armor, pants, gloves, shoes, helm and shield item is not stockpiled.
Logged
::: ☼Meph Tileset☼☼Map Tileset☼- 32x graphic sets with TWBT :::
::: ☼MASTERWORK DF☼ - A comprehensive mod pack now on Patreon - 250.000+ downloads and counting :::
::: WorldBicyclist.com - Follow my bike tours around the world - 148 countries visited :::

Boltgun

  • Bay Watcher
  • [UTTERANCES]
    • View Profile
Re: List of oddities/issues found while modding
« Reply #1 on: June 20, 2013, 08:44:51 am »

Edit: As it turns that weird fey mood behaviour is intended, for bowyer moods at least.
Spoiler (click to show/hide)
« Last Edit: June 21, 2013, 02:45:04 am by Boltgun »
Logged

Toxicshadow

  • Bay Watcher
    • View Profile
    • github
Re: List of oddities/issues found while modding
« Reply #2 on: June 20, 2013, 11:29:28 am »

Might edit this later and add more; the oddity I realized most recently is, buildings use labor tokens (ex: MINE), while everything else (reactions) uses skill tokens (ex: MINING).
Logged
Quote
'ere the Chias get hungry...

UberFuber

  • Bay Watcher
    • View Profile
Re: List of oddities/issues found while modding
« Reply #3 on: June 20, 2013, 12:45:46 pm »

Fey mood act weird for custom civs.

A succubus created an artifact crossbow despite not having the weapon in the entity.
I got an artifact long sword afterwards, no military will use it.

For custom crafts it seems okay, I have an artifact zinc guitar. That's cool, I have to check if it may be used in a reaction.
I think that's an expected behavior.
Dwarf in strange mood can create bow and blowgun (despite not being able to use them).
Logged

Halfling

  • Bay Watcher
    • View Profile
Re: List of oddities/issues found while modding
« Reply #4 on: June 20, 2013, 12:59:13 pm »

Welp, I'll just add from my experience making vermin wine in the other thread...

Vermin (and probably creatures) can't ever be targeted as reagents by [REAGENT:A:1:VERMIN:NONE:CREATURE_ID:CASTE], even though [REAGENT:A:1:VERMIN:NONE:NONE:NONE] works fine. It's not even apparently related to bug 4973, even casteless vermin manually spawned with the exact same tokens you specified will not work. Instead you must use e.g. [REAGENT:A:1:VERMIN:NONE:CREATURE_MAT:CREATURE_ID:BONE] no, that let's you use any vermin instead of none - but [REAGENT:A:1:NONE:NONE:CREATURE_MAT:CREATURE_ID:BONE] works for specific vermin. Meanwhile [PRODUCT:100:1:VERMIN:NONE:CREATURE_ID:CASTE] is a well known working reaction component. Very confusing.

Hugo_The_Dwarf

  • Bay Watcher
  • Modding Mentor
    • View Profile
    • Regeneration: Forced Evolution
Re: List of oddities/issues found while modding
« Reply #5 on: June 20, 2013, 05:00:05 pm »

  • [POP_RATIO:0] - Broken
    COMMENTS:is the wrong term for it more of [POP_RATIO:0] is the same as leaving it off (exempt) thus since DF needs a number for the ratio magic that sets what caste is created it automatically sets it to a default value
    WORK AROUND: [POP_RATIO:1] and settting other castes that are surpose to be common to a range of 10000-500000

  • Barrels can't fit 25 stack/units of liquid, altho vanilla reactions (hardcoded) can fill them 25+
    COMMENTS: I'll have to add I found I couldn't place 20 units of WATER inside a barrel so 25 might not be the actual cap.

  • Several tokens are restricted to several types. For example Material_template for muscle includes [ROTS][GENERATES_MIASMA][EDIBLE_VERMIN], which works, but Material_template for stone wont accept [ROTS][GENERATES_MIASMA][EDIBLE_VERMIN].
    Extra Comments: I'd say stone will accept those tokens however only food related and corpse items will actually use these (MEAT,CORPSEPIECE,CORPSE,??PLANT??,??DRINK??) since BOULDER or BAR, etc are not food they don't rot or be eaten (tested with rotting metal, metal MEAT rotted but metal ammo did not).

  • Stockpiling issues. Stone weapons are stockpiled, Stone ammo is not. Stone furniture is not stockpiled either.
    COMMENTS: Pretty sure you can stockpile stone furniture, ammo can't you correct and weapons yes (obsidian swords or any sword made from a sharp stone)

  • CE_ADD_TAG can only add a small selection of tags. Why not all creature tokens? It seems odd to be able to add webbing or firebreathing, but not webimmunity or fireimmunity.
    THEORY: I'm assuming that only certain tags can be added/removed because those tags are targets for interactions (altho i'm sure webimmune and fireimmune would make sense (can't target fire breath on a fire immune creature))
    COMMENTS: Webbing and Fire breathing are not given through CE_ADD_TAG, it's the CE_CAN_DO_INTERACTION + CDI_INTERACTION.

  • REAGENT:A:1:MEAT:NONE:NONE:HEART, and any other organ-token is broken. This reaction would accept any heart, but also any other organ, even meat from muscles.
    WORKAROUND: goto the material templates for the organs and add REACTION_CLASS:<organ_name>] and use: [REAGENT:organ:1:MEAT:NONE:NONE:NONE][REACTION_CLASS:<organ_name>]

Also I think for categories there should at least be:

STOCKPILE - issues of that could be fixed by having an "other" category in stockpiles (takes Items that don't fit the material filters)
PROFESSION - Jobs, skills, and other things that are done, but don't have a profession tied to them MAGIC_NATURE, KNAPPING
JOBS - barrows confusing custom reactions
REACTION - stacks are consumed completely instead of just x amount defined in custom reactions

this one isn't really needed as there is a suggestion board/thread.
SUGGESTION - add CLEAN to the designation menu (and can be used like digging/tree felling, targets contaminates (floor and wall))


I'll slap some categories on current issues:

Code: [Select]
Pop_Ratio:0 is broken.

PROFESSION-MAGIC_NATURE has no profession, therefore the profession name cannot be changed.
PROFESSION-Knapping has no labor/profession in fortress mode.
REACTION-Barrels cant fit 25 units of liquid, although the vanilla still reaction can fill them with 25 or more drinks.

PRODUCT:CREATURE:NONE:DWARF:MALE, alongside any other creature creation crashes the game.
Item_Tools have a tilenumber, but all other Item_ have none. (weapons, ammo, armor, toys)
Grasses and Creatures have a ALT_TILE, but Trees/Plants have none. Neither do Inorganics.
Several tokens are restricted to several types. For example Material_template for muscle includes [ROTS][GENERATES_MIASMA][EDIBLE_VERMIN], which works, but Material_template for stone wont accept [ROTS][GENERATES_MIASMA][EDIBLE_VERMIN].

STOCKPILE -Stockpiling issues. Stone weapons are stockpiled, Stone ammo is not. Stone furniture is not stockpiled either.
STOCKPILE -Same for Gems. Gems are stockpiled, Gem crafts are stockpiled, but other gem furniture, armor or weapons is not.

CE_ADD_TAG can only add a small selection of tags. Why not all creature tokens? It seems odd to be able to add webbing or firebreathing, but not webimmunity or fireimmunity.

REACTION -REAGENT:A:1:MEAT:NONE:NONE:HEART, and any other organ-token is broken. This reaction would accept any heart, but also any other organ, even meat from muscles.
REACTION -Bone-Stacks (among other stacks) are always entirely used up, instead one by one. 1 bone gives as many products as 100 bones in one stack, disregarding the prodcut amount (always 1)
JOBS/REACTION -Reactions cannot find reagents that are in bags that are stored inside barrels/pots/bins.
JOBS/REACTION -Custom reactions cannot find reagents that are stored in another burrow, even if the burrow is not active.

Stuff to Contribute:
ODDITY-Fingers, facial features, toes, ears, etc. Are not protected by armor, a workaround would be adding LIMB to them but that will allow them to be useable to wrestle with (facial features not 100% sure since they are attached to a HEAD not an UPPERBODY) exclude toes since they connect to a LOWERBODY

BUGS-CRAZED causes loyalty cascades, when it might be better to make it breach the ETHIC attack entity member and be considered a crime. Or at least have the actions done under the guise of "I wasn't in control of myself" like OPPOSED_TO_LIFE (I think that prevents loyalty cascade)

ODDITY/?BUG?-IMMOBILE prevents the creature from breeding due to not being able to "path" to a mate thus breaking the current reproduction code (only noted in fortress mode)

BUGS-A custom reaction that uses a DRINK as a reagent will crash the game if another dwarf wishes to drink from said container for that reagent (Job conflict)

ODDITY-trying to use BP_RELATION to wrap a body part around an external one (arms, legs, chest, etc) doesn't work (however internal or embedded and such body parts can have another part wrapped around it)

STOCKPILE-items made from Tallow (or any organic material) will not be stockpiled correctly, WORKAROUND create an inorganic or a cloth-like material in a creature that doesn't exsist (or all creatures) that has similar properties/values to tallow which should allow it to be stockpiled (INORGANIC with IS_STONE works well for tools)

ODDITY/BUG-Fireimmune and FireimmuneSuper don't grant fire immunity anymore (due to material/tissue crossover) quite possibly only effects the AI (will ignore hot locations instead of avoid them, ignore meaning they will walk through it)

ODDITY- too much drowsiness can make a creature go insane (stark, berserk, melancholy), code that makes merchants go nuts

ODDITY/BUG- CE_PARALYSIS says it accepts a target in the wiki, but still effects the entire creature (unless an issue with too high of a SEV in my tests)

ODDITY- all WEATHER_xxxx material emissions are REGION interaction only

ODDITY- can only have two seperate hostile civs (they hate each other) with languages using ITEM_THIEF and BABYSNATCHER in the entities (one tag in one, the other in the second)
WORKAROUND: all creatures lacking CAN_SPEAK will be hostile no matter what (no allies) but will lack names, UTTERANCES can be added to allow for names but will be hostile like a civ lacking CAN_SPEAK.






Logged

Deon

  • Bay Watcher
  • 💀 💀 💀 💀 💀
    • View Profile
Re: List of oddities/issues found while modding
« Reply #6 on: June 21, 2013, 01:55:11 am »

Quote
ODDITY/BUG-Fireimmune and FireimmuneSuper don't grant fire immunity anymore (due to material/tissue crossover) quite possibly only effects the AI (will ignore hot locations instead of avoid them, ignore meaning they will walk through it)
Also without those tokens you cannot normally move through dense smoke; tested in adv. mode (Alt movement should still work I think).
It also removes your ability to act normally when on fire.

With these tokens you will still burn but you will be able to move/act normally when on fire.
Logged
▬(ஜ۩۞۩ஜ)▬
✫ DF Wanderer ✫ - the adventure mode crafting and tweaks
✫ Cartographer's Lounge ✫ - a custom worldgen repository

WillowLuman

  • Bay Watcher
  • They/Them Life is weird
    • View Profile
Re: List of oddities/issues found while modding
« Reply #7 on: June 21, 2013, 02:07:03 am »

There is no way to subselect symbols for the naming conventions of people. You can specify naming conventions for bridges, towns, wars, battles, nations, etc, but the only way to influence people names is with NAME as the category, which not only affects people but supersedes the naming conventions for sites and entities.
Logged
Dwarf Souls: Prepare to Mine
Keep Me Safe - A Girl and Her Computer (Illustrated Game)
Darkest Garden - Illustrated game. - What mysteries lie in the abandoned dark?

Quietust

  • Bay Watcher
  • Does not suffer fools gladly
    • View Profile
    • QMT Productions
Re: List of oddities/issues found while modding
« Reply #8 on: June 21, 2013, 09:35:17 pm »

PRODUCT:CREATURE:NONE:DWARF:MALE, alongside any other creature creation crashes the game.
What exactly is that syntax supposed to do, create a unit as a reaction product? CREATURE isn't a valid item type, so all bets are off if you try to actually use it. If you look in your error log, you'll probably also see a message about "Invalid item token: CREATURE". Now, if you were trying to create a VERMIN or PET, that would certainly be the correct syntax, but there's another bug which prevents it from reading the caste.

Grasses and Creatures have a ALT_TILE, but Trees/Plants have none. Neither do Inorganics.
In other words, you're complaining that trees, plants, and inorganics can't be animated. I would argue that that's a good thing - evil grass induces enough epilepsy, so I'd rather not have to put up with minerals doing the same thing (not to mention the extra lag it would cause)...

CE_ADD_TAG can only add a small selection of tags. Why not all creature tokens? It seems odd to be able to add webbing or firebreathing, but not webimmunity or fireimmunity.
That's because it doesn't actually alter the creature tags but instead modifies a special list of "added/removed flags" within the unit itself, and that list only supports a very limited number of properties (which were relevant to vampires, werecreatures, and necromancers). Toady will probably add additional ones as interactions get expanded, but I wouldn't expect it to allow every possible creature token because some of them wouldn't even make sense to add/remove on the fly.

REAGENT:A:1:MEAT:NONE:NONE:HEART, and any other organ-token is broken. This reaction would accept any heart, but also any other organ, even meat from muscles.
That's because it's not valid syntax - just like you can't specify an item subtype without an item type, you can't specify a material subtype without specifying a material type, since otherwise it won't be able to tell whether HEART is an inorganic material, a plant material, or a creature material. Additionally, plant and creature materials aren't actually referenced internally by name, but by numbers, and the actual numbers effectively decode as "Xth material belonging to creature/plant type Y", so it would be impossible to store just X and have the value still make any sense. As Hugo_The_Dwarf pointed out above, you need to use a REACTION_CLASS in order to get something like that to work.

Bone-Stacks (among other stacks) are always entirely used up, instead one by one. 1 bone gives as many products as 100 bones in one stack, disregarding the prodcut amount (always 1)
That's probably a legitimate bug, and it's caused by the fact that bone "stacks" aren't actually real stacks of items - it's just a single CORPSEPIECE item with a stack size of 1, and the code that prints the item name just "fakes" the stack size onto the end of it. Toady added special logic to specific jobs in order to use this "fake" stack size when necessary, and the various jobs which incorrectly use up the entire stack are just ones that don't have that special logic. Back in version 0.28.181.40d and earlier, bones were their own special item type and used the normal "stack size" field, which is why things worked more or less properly with them.

I think that's an expected behavior.
Dwarf in strange mood can create bow and blowgun (despite not being able to use them).
That's actually an oddity due to the way the strange mood code works - the item creation code used in strange moods (and in lots of other places) doesn't have a way to filter item subtypes by properties (e.g. "any weapon but make sure it's ranged", "any armor but make sure it's metal", or "any number but make sure it's Fahrenheit"), so the relevant mood types (Bowyer, Armorer, Leather, Cloth, Bone, and Shell) include each valid item type but neglect to check whether or not your entity has access to it. By comparison, Weaponsmith moods just tell it to produce "any weapon" (i.e. WEAPON:NONE), and the random subtype selection logic takes entity restrictions into account.
« Last Edit: June 21, 2013, 09:52:30 pm by Quietust »
Logged
P.S. If you don't get this note, let me know and I'll write you another.
It's amazing how dwarves can make a stack of bones completely waterproof and magmaproof.
It's amazing how they can make an entire floodgate out of the bones of 2 cats.