CleverRaven / Cataclysm-DDA

Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.
http://cataclysmdda.org
Other
10.66k stars 4.18k forks source link

invalid recipe id "meal_bone_mill... #76334

Closed IdleSol closed 1 day ago

IdleSol commented 2 months ago

Describe the bug

Examine the tiny canine skull

 DEBUG    : invalid recipe id "meal_bone_mill_2_1"

 FUNCTION : const T& string_id<T>::obj() const [with T = recipe]
 FILE     : src/recipe_dictionary.cpp
 LINE     : 66
 VERSION  : cdda-experimental-2024-09-10-0339 c73e4c6

Examine the small canine skull

 DEBUG    : invalid recipe id "meal_bone_mill_1_1"

 FUNCTION : const T& string_id<T>::obj() const [with T = recipe]
 FILE     : src/recipe_dictionary.cpp
 LINE     : 66
 VERSION  : cdda-experimental-2024-09-10-0339 c73e4c6

Attach save file

n/a

Steps to reproduce

Kill and butcher a dachshund (small) and a dachshund puppy (tiny). Check the skull

Expected behavior

n/a

Screenshots

No response

Versions and configuration

Additional context

Skull spawning causes the game to crash

Karol1223 commented 2 months ago

Looks like I made a bad assumption about how milling recipes are added when adding those. Would have expected it to throw errors on load, though...

EDIT: Or not? It seems there are no manually written milling recipes anywhere in the JSON to things I didn't touch either. Weird.

HadeanLake commented 2 months ago

no manually written milling recipe

check
https://github.com/CleverRaven/Cataclysm-DDA/blob/98be1d4185bb06b07b18929057fef378eefd2f9e/data/json/recipes/food/milling.json#L562-L580 It looks like if there is meal_bone_mill_1_4 - there should be "result": "meal_bone" with "id_suffix": "mill_1_4",

Like this. This seems to fix 2_1 and 1_1 skulls from bone.json:

[
  {
    "id": "skull_small",
    "type": "requirement",
    "//": "Small skulls",
    "components": [ [ [ "skull_feline_small", 1 ], [ "skull_canis_small", 1 ], [ "skull_opossum", 1 ], [ "skull_skunk", 1 ] ] ]
  },
  {
    "id": "skull_medium",
    "type": "requirement",
    "//": "Medium skulls",
    "components": [ [ [ "skull_feline_medium", 1 ], [ "skull_canis_medium", 1 ], [ "skull_raccoon", 1 ], [ "skull_rabbit", 1 ] ] ]
  },
  {
    "//": "For use by mills, so the only entries used are the charges and components.",
    "//1": "Note that there should only be a single component with no extras such as lubricants, etc.",
    "result": "meal_bone",
    "type": "recipe",
    "activity_level": "NO_EXERCISE",
    "id_suffix": "mill_2_1",
    "category": "CC_FOOD",
    "subcategory": "CSC_FOOD_OTHER",
    "skill_used": "cooking",
    "difficulty": 2,
    "charges": 1,
    "time": "0 s",
    "autolearn": false,
    "flags": [ "SECRET" ],
    "tools": [  ],
    "components": [ [ [ "skull_small", 2, "LIST" ] ] ]
  },
  {
    "//": "For use by mills, so the only entries used are the charges and components.",
    "//1": "Note that there should only be a single component with no extras such as lubricants, etc.",
    "result": "meal_bone",
    "type": "recipe",
    "activity_level": "NO_EXERCISE",
    "id_suffix": "mill_1_1",
    "category": "CC_FOOD",
    "subcategory": "CSC_FOOD_OTHER",
    "skill_used": "cooking",
    "difficulty": 2,
    "charges": 1,
    "time": "0 s",
    "autolearn": false,
    "flags": [ "SECRET" ],
    "tools": [  ],
    "components": [ [ [ "skull_medium", 1, "LIST" ] ] ]
  }
]
Karol1223 commented 2 months ago

check

Ah I was searching for the full ID, didn't expect an ID suffix. That explains it. I can fix that up when PRs can be merged again, currently the Basic Build seems to be failing on everything.

PatrikLundell commented 2 months ago

Yes, the fact that the milling recipe are made from a base and a suffix has the unfortunate effect of them not being found via a normal search.