Custom Recipe Tutorial: Part 1 - Single Serving


In this tutorial, I am going to go over how to make your own custom recipes to use with Srsly's Complete Cooking Overhaul custom menus.

What you will need: 

Sims 4 Studio
Blender v2.76

What you will need installed:
(These items will need to be installed in your mods folder. They will also need to be required for anyone to use your recipe, so they will need to download them separately from your recipes.)

Srsly's Complete Crafting Overhaul - Custom's Menus
Andrew's Crafting Enabler

Optional Items:

Notepad++
Fogity's Modding Toolbox - Rewrite by Scumbumbo
XML Compare - by Scumbumbo

So let's get started!


Step 1 


Decide what you want to make. You will want to choose a recipe that already exists in the game that is similar to what you want to make.
(Example - Cake, clone a cake. Soup, clone something in a bowl.)

For this tutorial, I will be making Waffles.

Step 2


Open Sims 4 Studio.
Under "Object" click "Selective Clone".


Next, click "Show Debug Items" in the top right of the screen.
In the "Search" type in: foodplateeatsingle
(This will show you all of the single plate foods you can clone from.)

Since I am making Waffles, I am just going to clone from Pancakes.
Click "Next".
A window will pop up for you to choose what you want to be included in the package.
For tutorial sake, just make sure everything is selected. (As pictured below)
NOTE: Always be sure to use 32-bit instances.


Next, save your creation in your mods folder with a unique name.
You may want to include the word "single" in your package, so you know this is everything for the single serving of the food.
Example: SrslySims_BG_Recipe_Waffles-Single.package

Step 3


You should automatically be on the "Studio Tab" of S4S.
Under the "Catalog" tab, give your recipe a "Name" and "Description".
(Don't worry about the price, unless you want to buy the item for a price in the build/buy catalog.)


Next, go to the "Textures" tab.
This is where you will export/import the texture you want for your new food and/or plate.



Next, go to the "Meshes" tab.
Select "LOD 0 (High)" in the dropdown, then "Export Mesh".
(This will be the 'Whole' version of your food.)

Example: Pancakes_Whole.Blend
(Save this to your desktop or special folder where you can find it easily.)

Now we need to get the partial version of the mesh exported.
On the same "Meshes" tab, under "Geometry States" select the one for "Partial" serving.
(This will change the visual in the window to the food half-eaten.)
Then click "Export Mesh" again.

Example: Pancakes_Partial.Blend


Step 4


Create your new textures for the new food.
Create your meshes for your "Whole" and "Partial" servings.
(I will not be going over this in this tutorial.)

Under the "Meshes" tab, import all of your Whole and Patrial meshes for all LOD's & Shadow's.


Step 5


Now that we have everything done in our "Studio" tab we need to do the tuning.

Go to the "Warehouse" tab, on the top left of S4S.

First thing I like to do is clean get some of the Strings out of the way.
(We can add these back later.)

Using Left Click + Shift, select all of the String Tables for languages other than the one you want to use. (So for me, I will leave English and delete the rest.)

Then click the red "Delete" button on the bottom on S4S.


Step 6 


Next, We are going to change our Specular and Shadows "DST Image".
These files are the "Shine and Shadow Detail" shown on an object.
(I personally am way to lazy to make my own, so I use blank ones for everything.)

You can click on each of these, and in the far right-hand window you will see the image and underneath that, you can find the"Export" and "Import" buttons to change these.

If you would like to use the blank maps I use:
Download them Here

Step 7


Now it is time for the fun part. Find your "Object Definition" and select it.
Scroll down on the left until you see "Tuning" and "Tuning ID".
Copy the "Tuning Name".

Next, go to  "Tools" > "Extract Tuning". In the search bar on the top of the box that appears paste your tuning name.
Then, select the one in the list and "Add to current package".


Step 8 


While we have the "Export Tuning" window opened, we need to grab our recipe.
Since I am cloning from pancakes. I am going to use the recipe tuning for pancakes

In the "Search Bar" on the export tuning window type in the word: Pancake

Scroll down until you find: recipe/recipe_food_homestyle_pancakes-Single
Select it, then click "Add to current package."

So now, you should have 3 new files in your "Warehouse"

  • Object Tuning 
  • Recipe Tuning
  • Sim Data (For Recipe)



Step 9


Click on your "Object Tuning"
Mine is named: object_Food_Pancake

We need to give this file a new name, so it does not override the EA Object Tuning for pancakes.

In the window on the left, click the "Data" tab. 

Where it says "Name", give your object tuning a new name.
I changed mine to: SrslySims:Object_Food_Waffles

Copy your new "Name" for your object tuning, then go to your "Object Definition" and where it says "Tuning" paste your new name.

Once your new name is there, click anywhere blank on the screen to automatically change the tuning number.


Now your object is referencing its own tuning instead of EA's.

Step 10 


Now we need to change the name of our "Recipe Tuning" and "Sim Data" for the recipe.

First, click your "Recipe Tuning", then go to the "Data" tab. Give your recipe a new name.

Mine Was: recipe_Food_Homestyle_Pancakes-Single
Is now: SrslySims:recipe_Food_Homestyle_Waffles-Single

Click a blank area of the S4S window until the "TuningID" changes.

Copy your new name.

Go to the "Sim Data" for the recipe tuning. Instead of "Data" tab click the "XML" tab.

On the top left window, you will see: <I name="xxx"
Inside the parenthesis, change the old name to your new recipe name.
(The name will match your "Recipe Tuning")


Go back to your "Recipe Tuning", under the "Data" tab and copy the "Instance" number.

Go back to your "Sim Data", under the "Data" tab and replace the instance with the one from your new recipe tuning.

So now your recipe name and instance ID's are the same for the "Recipe Tuning" and "Sim Data".


Step 11


Click on your "Recipe Tuning" and go to the "XML" tab.

Scroll down until you find "_retail_price"
(or click in the text field and used CTRL+F to "Find" the name.)
This is where you would change the price of the item when sold in retail businesses.

As an example, my price is §7


Right under that, you will see a section for "Crafting Cost" t="flat_fee"
This is where you give your recipe a crafting cost.

(This is the cost of the item with all ingredients included.
For example. All of my homestyle food single servings have a crafting cost of §1.
So when cooking, it will cost you a minimum or §1 to make the dish.)

Underneath the crafting cost, you will find: "delta_ingredient_price"
This is where you give your recipes an ingredient price.
(So if a sim cooks this recipe, and does not have all the ingredients it will cost the Delta Price + Crafting Cost to make the dish.)

Here is mine:


  • Crafting Cost: §1
  • Delta Ingredient: §10

--- Total Cost without Ingredients for Dish: §11


Step 12


Next, we need to continue scrolling (ctrl+f) to find: "definition".
This will always be found above the "loot_list".


This is where we tell the recipe what object is assigned to the recipe.
So we need to change this from giving us pancakes, to our new waffles.

Open up Fogitys Modding Toolbox or in S4S go to: Tools > Hash Generator

(This is going to open up our hash box, we will be using this for the rest of the tutorial so don't close it.)

Next, go to your "Object Definition" under the "Data" tab.
Copy the "Instance" number for your object.

Paste this number where all the zeros are in the "Hexadecimal" on the top of the "Hash Generator".
Once you paste the number, another number will generate in the "Decimal" line.
Copy the "Decimal" number.



Go back to your "Recipe Tuning" and find "Definition" again.
Replace the black number with the one you just copied.
(If you want, you can also change the name in the green text to know you changed it.)


While we have our "Decimal" number for our new object. We need to change it in a few more places.
Scroll down (or Ctrl_F) "restaurant_menu_definition", paste your decimal instead of the one shown.

While you are here, you can also give your recipe a "restaurant_base_price".
This will be the cost of your single plate serving in a restaurant.


Next, go to the "Sim Data" and replace the "restaurant_menu_icon_definition" again.


So now our single-serving recipe will 100% reference our new mesh.

Step 13


Now we need to make our recipe have the correct name.
So we need the hash ID for the name we put for our recipe in Step 1.
There are two ways you can do this.

1. Click your "String Table", under the "Data Tab" click the "Edit Items..." button on the "Entries" line.
The "Key" is your ID for your "String".



2. Click your "Object Catalog" and look for "NameHash".
This is your ID for your "String".


Copy this number for the "NameHash".

Go to your "Recipe Tuning" and scroll (CTRL+F) until you find "phase_interaction_name".

Where you see: <T n="name">XXX

Paste your new ID. (Example: 0x280C1651)
(DO NOT delete the 0x from the front.)


If we change the name here, we have to change it in the Sim Data.
Go to your "Sim Data", paste your new "name" ID. (Once again, do not delete 0x from the front.)


Now our recipe will actually show the correct name in-game.

Step 14


Now we need to change the recipes phase name. This is what shows in the interaction queue on the left of your screen in-game.

Go back to your "Recipe Tuning" and find (Ctrl+F) "phase_interaction_name".

We do not have a new one, so we need to make a custom one.
We can do this two different ways.

1. Use the Object Description. In a recipe, this isn't really used for anything. So I use it instead of creating a new hash string key value.
To do this go to "Object Catalog" and copy the ID for the "Description Hash".


Go to the "Studio" > "Catalog" tab and change the description to what you want the phase to be called. As example mine is "Make Breakfast".

2. Make a new one. Open up your "Hash Generator".
Under the "Hash Text" section in the "Text" field type what you want it to say.


**ALWAYS include your creator name at the front. This will prevent you from having the same hash as someone else.

**OPTIONAL include what this hash is for like this one is strings. So I add strings. If it was an image it would say DSTImage instead of strings. This way if you need the same value for another project you know what is what. :)

Then, go to your "String Table" > "Entries" > Edit Items...
Click "Add" on the bottom of the window, paste in your new "Key" FNV32 ID and then type what you want it to say. As example mine is "Make Breakfast".


Then click "Save" and close the "Editing Entries..." window.


Go back to your "Recipe Tuning" and find (CTRL+F): "phase_interaction_name"
Paste your new hash for your interaction here, rename the green text to what you changed it so you know that you changed it.


(Once again, do not delete the 0x before the string.)

Step 15


(OPTIONAL) **Change Skill Requirement**

If you want this recipe to require a different skill, like gourmet/baking/homestyle you go into your "Recipe Tuning" and find "statistic_Skill".

There will be 3 of these in all recipes. You will need to change each of these.



To get the ID's for other skills go to "Tools" > "Extract Tuning" and search for "statistic_skill" then "Add to current package".

Go to the "Data" tab of the skill you want, and copy the "Tuning ID".
Once you are done DELETE the skill you just extracted. We only needed it temporarily.

Step 16


(OPTIONAL) **Ingredient Additions/Changes**

Open your "Recipe Tuning" and scroll to the very bottom.
You will see "use_ingredients".

Here you can add, remove, change the ingredients in a recipe.
(You can have up to 4 ingredients per recipe.)

NOTE: I have saved you the time of going to get all of these ID's for ingredients. You can find a compiled list of EVERY EA Ingredient in the game, as well as the ID's for custom harvestables by various creators.

*** Check Out My Spreadsheet ***
*** For SCCO Specific Ingredient ID's Go Here ***

Here is the code to have the ingredient be "Any" of an item:
(You can find the other tags by looking in other recipes, or exporting the module/tag tuning.)

      <V t="ingredient_by_tag">  
      <U n="ingredient_by_tag">  
       <E n="ingredient_tag">Func_Ingredient_Fruit</E>  
      </U>  
     </V>  

Here is the code to have a specific Ingredient:

      <V t="ingredient_by_definition">  
      <U n="ingredient_by_definition">  
       <T n="ingredient_ref">45299</T>  
      </U>  
     </V>  

NOTE: You can also use a combination of the above codes. Just as long as you have no more than 4 types of ingredients. (As Pictured Below)


If you want to change the amount of the ingredient add this code above "ingrdient_ref/tag":

 <T n="count">3</T>  

(change the 3 to however many of that specific ingredient you want.)

Step 17


Now that we are done with the Single Serving Recipe we need to add it to a menu so it can be found in-game.

Instead of going over how to make your own menus, I am going to show you how to inject your recipe into an existing menu.

First, download and install "Andrew's Crafting Enablr".
Your recipe will require this mod to work properly, so anyone using your recipes will need it.
DO NOT include this mod in your download, all users must go to Andrew's post to install.

Second, download "Srsly's Crafting Enabler XML".
This is a .package for you to use to make sure your injector snippet code is correct.
I have done all the work, so you will just need to change the information.

Next, decide what menu you want your recipe to show under.

You can inject into "EA Menu's" like cook/bake/gourmet/etc.
(Almost all of the EA Menus's tuning will have the word "StartCrafting" in it.)
or 
You can inject into "SCCO Custom Menus", you can find a list of all the ID's needed HERE.
(NOTE: If you use SCCO's menus, your mod will require SCCO to be installed.)


Get the "Tuning ID" for the menu you want.
Open "Srsly's Crafting Enablr XML.package" file in Sims4Studio.


Line 5: 
This is the menu your recipe will show up under.
In this package, I use SCCO's "Cook" Homestyle menu as an example.

Line 8:
This is where you list your recipe.
Open your "Recipe Tuning" and copy the "ID" and "Name".
Replace this file with your information.

Next, go under the "Data" tab. 
Change the "name" to something unique to you, including your creator name!

Then once everything is to your liking click "Batch Export".
WITHOUT renaming it, save it to your desktop.

Open your Single serving recipe .package file again, click "Batch Import".
Import the "Snippet" XML you just exported from my example package.

You should now see it in your package with your single-serving food.

Step 18


Now that we are done, we need to add the other language "String Tables" back into our package.
(If you forget this step, anyone using another language will have blank text.)

Go to Tools > Modding > Copy String Tables to All Languages
This will add all of the other language strings to your package.



Click "Save", and you're done!

Time to go in-game and test out your Single Serving Custom Food!