Retrograde

Recipe creation and sharing

Recommended Posts

Hi Everyone

 

As you may know by now the recipe system for WU will allow the creation and addition of custom recipes, the format to create these is in .json and an example can be found here:

Spoiler

  {
    "name":"casserole (herb)",
    "recipeid":"1367",
    "known":true,
    "skill":"hot food cooking",
    "trigger":"heat",
    "cookers":[
      {"id":"oven"},
      {"id":"campfire","difficulty":5},
      {"id":"forge","difficulty":10}
    ],
    "containers":[
      {"id":"pottery bowl"}
    ],
    "ingredients":{
      "oneormore":[
        {
          "list":[
            {"id":"any herb"}
          ]
        },
        {
          "list":[
            {"id":"any fruit","cstate":"raw","difficulty":5},
            {"id":"any cereal","difficulty":5},
            {"id":"any veg","difficulty":5},
            {"id":"any berry","cstate":"raw","difficulty":5},
            {"id":"any nut","difficulty":5},
            {"id":"any mushroom","difficulty":5}
          ]
        }
      ],
      "optional":[
        {"id":"salt","difficulty":5}
      ]
    },
    "result":{
      "id":"casserole",
      "name":"herb casserole",
      "difficulty":11,
      "description":"A tasty casserole with a nice herb smell."
    }
}

 

The full schema can be found here:

Spoiler


{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Recipes",
  "type": "array",
  "items": {
    "title": "Recipe",
    "type": "object",
    "properties": {
      "name": {
        "type":"string"
      },
      "recipeid": {
        "type":"string"
      },
      "known": {
        "type":"boolean"
      },
      "nameable": {
        "type":"boolean"
      },
      "lootable": {
        "type": "object",
        "properties": {
          "creature": {"type": "string"},
          "rarity": {"type": "string"}
        }
      },
      "skill":{
        "type":"string"
      },
      "trigger":{
        "type":"string"
      },
      "cookers": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "id": {"type": "string"},
            "difficulty": {"type": "number"}
          }
        }
      },
      "containers": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "id": {"type": "string"},
            "difficulty": {"type": "number"}
          }
        }
      },
      "active":{
        "type": "object",
        "properties": {
          "id": {"type": "string"},
          "cstate": {"type": "string"},
          "pstate": {"type": "string"},
          "material":{"type":"string"},
          "realtemplate":{"type":"string"},
          "difficulty":{"type":"number"},
          "loss":{"type":"number"},
          "ratio":{"type":"number"}
        },
        "required": ["id"]
      },
      "target":{
        "type": "object",
        "properties": {
          "id": {"type": "string"},
          "cstate": {"type": "string"},
          "pstate": {"type": "string"},
          "material":{"type":"string"},
          "realtemplate":{"type":"string"},
          "difficulty":{"type":"number"},
          "loss":{"type":"number"},
          "ratio":{"type":"number"},
          "creature":{"type":"string"}
        },
        "required": ["id"]
      },
      "ingredients": {
        "type": "object",
        "properties": {
          "mandatory": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {"type": "string"},
                "cstate": {"type": "string"},
                "pstate": {"type": "string"},
                "material":{"type":"string"},
                "realtemplate":{"type":"string"},
                "difficulty":{"type":"number"},
                "ratio":{"type":"number"},
                "loss":{"type":"number"},
                "amount":{"type":"number"}
              },
              "required": ["id"]
            }
          },
          "zeroorone":{
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "list":{
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {"type": "string"},
                      "cstate": {"type": "string"},
                      "pstate": {"type": "string"},
                      "material":{"type":"string"},
                      "realtemplate":{"type":"string"},
                      "difficulty":{"type":"number"},
                      "ratio":{"type":"number"},
                      "loss":{"type":"number"},
                      "amount":{"type":"number"}
                    },
                    "required": ["id"]
                  }
                }
              },
              "required": ["list"]
            }
          },
          "oneof":{
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "list":{
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {"type": "string"},
                      "cstate": {"type": "string"},
                      "pstate": {"type": "string"},
                      "material":{"type":"string"},
                      "realtemplate":{"type":"string"},
                      "difficulty":{"type":"number"},
                      "ratio":{"type":"number"},
                      "loss":{"type":"number"},
                      "amount":{"type":"number"}
                    },
                    "required": ["id"]
                  }
                }
              },
              "required": ["list"]
            }
          },
          "oneormore":{
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "list":{
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {"type": "string"},
                      "cstate": {"type": "string"},
                      "pstate": {"type": "string"},
                      "material":{"type":"string"},
                      "realtemplate":{"type":"string"},
                      "difficulty":{"type":"number"},
                      "ratio":{"type":"number"},
                      "loss":{"type":"number"},
                      "amount":{"type":"number"}
                    },
                    "required": ["id"]
                  }
                }
              },
              "required": ["list"]
            }
          },
          "any":{
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {"type": "string"},
                "cstate": {"type": "string"},
                "pstate": {"type": "string"},
                "material":{"type":"string"},
                "realtemplate":{"type":"string"},
                "difficulty":{"type":"number"},
                "ratio":{"type":"number"},
                "loss":{"type":"number"},
                "amount":{"type":"number"}
              },
              "required": ["id"]
            }
          },
          "optional":{
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {"type": "string"},
                "cstate": {"type": "string"},
                "pstate": {"type": "string"},
                "material":{"type":"string"},
                "realtemplate":{"type":"string"},
                "difficulty":{"type":"number"},
                "ratio":{"type":"number"},
                "loss":{"type":"number"},
                "amount":{"type":"number"}
              },
              "required": ["id"]
            }
          }
        }
      },
      "result":{
        "type": "object",
        "properties": {
          "id": {"type": "string"},
          "name": {"type": "string"},
          "cstate": {"type": "string"},
          "pstate": {"type": "string"},
          "material":{"type":"string"},
          "realtemplate":{"type":"string"},
          "refmaterial": {"type":"string"},
          "refrealtemplate":{"type":"string"},
          "difficulty":{"type":"number"},
          "description":{"type":"string"},
          "achievement":{"type":"string"},
          "usetemplateweight":{"type":"boolean"},
          "icon":{"type":"string"}
        },
        "required": ["id"]
      }
    },
    "required": ["recipeid","result","name"]
  }
}

 

 

For custom recipes please use an ID of 1500+

Recipe files must be named "recipe XXXX.json" where xxxx is the ID

 

This functionality will allow you to create your own recipes with your own ingredients, so what better thing to do than to then share that!

You could share the code and allow players to save it as a json file, or simply share links to json files or zips of multiple json files.

 

Use this thread to share your created recipes, and get ready to cook!

Share this post


Link to post
Share on other sites

Does this mean I need to find the code to be able to add reciepts on my server?

I assume the above applies to server owners and not players, right?

Share this post


Link to post
Share on other sites

Yes, it's a server owner thing.

 

It would be fairly straight forward for someone to create a tool that can generate these recipes based off input options, rather than having to wrestle with the system yourself though.

 

 

Share this post


Link to post
Share on other sites

Are we seeing this here now simply because its taken far too long for us to get the update and now you folks have decided that recipe spoilers are now ok to be posted from Wurm Online players ?

 

Or

 

Does this mean that you folks are about to release the update finally for Wurm Unlimited ?

 

Valiance and Kaylie.

 

Share this post


Link to post
Share on other sites

Can I  dump all the WO recipes here in that json format (well as close as I can get them anyway).

Share this post


Link to post
Share on other sites

I think retro means we can post them in some other topic I forgot what one, and in spoilers, one reciept per spoiler.

Not sure if he wrote that in valrei International or in the reciept topic.

 

Here is for own created reciepts for WU.

Edited by Cecci

Share this post


Link to post
Share on other sites
Just now, Cecci said:

I think retro means we can post them in some other topic I forgot what one, and in spoilers, one reciept per spoiler.

Not sure if he wrote that in valrei International or in the reciept topic.

 

Here is for own created reciepts for WU.

 

okay, so can I post reicpes, useing the json format, intended to be used in WU which coincidentally happen to be almost identical to WO recipes?

 

Further, this will let WU players quickly import recipes that just happen to be very similar, if not identical, to the WO ones.

 

Edited by joedobo

Share this post


Link to post
Share on other sites

The way I understand it, json recipes for WU should be posted here, no need for spoilers.  WO recipes should be posted to the other forum thread, one recipe per spoiler.  I don't think it matters if the WU json was derived from WO or not.  The json should be posted in this thread.

Edited by Ricowan

Share this post


Link to post
Share on other sites

I'd honestly suggest using spoiler tags regardless, json spam won't be pretty.

 

If you're recreating WO recipes I'd advise using spoiler tags out of respect for other users.

Share this post


Link to post
Share on other sites
Just now, Retrograde said:

I'd honestly suggest using spoiler tags regardless, json spam won't be pretty.

 

If you're recreating WO recipes I'd advise using spoiler tags out of respect for other users.

 

 

Will it be against the rules to post recipes, in json format, intended to be used for WU, that look very similr if not identical to WO recipes.

 

my intent is to make it easy for folks to import the recipes that  Wurm incorrectly decided to exclude from WU.

Share this post


Link to post
Share on other sites

You can make any recipes you like, I'm just saying to avoid it looking like a mess use the spoiler tags.

 

and I've already clarified its not against the rules to share recipes in spoiler tags as well.

Share this post


Link to post
Share on other sites

This is my public apology to retrograde, i will also send him a personal one :)  

 

 

On 12/31/2016 at 5:21 PM, Brash_Endeavors said:

Posted December 31, 2016  

 

I am pretty sure once the update comes to WU, you still won't be allowed to share in the forums because they do not want WU players to have potential top secret access to "privileged WO content". and will claim this is all to preserve the happiness and good of loyal WO players. My understanding is that as a result of further marginalizing/penalizing  people who play WU,  WU will get only about 15% of the recipes in WO precisely so they can't tell "game secrets" to WO people. We might get "butter" and "fish stew" and "herb casserole" and "meat and vegetable meal" and maybe a handful of other lowend generic ones , WU players supposedly are then free to mod their own cooking recipes back in, but only IF they can think up and invent their own unique 500+ recipes and add them in one at a time using cryptic JSON templates (yes easy enough for anyone familiar with very simple coding concepts, but that rules out about 90% of most players). Good luck if you run a singleplayer or small family server and already struggled just to get your server running by forwarding ports and adding firewall exceptions and changing network internet protocol addresses. The other possible outcome is if WU community modders input recipes from WO. This "threat" by modders to "steal" recipes they learn from WO just to get the basic cooling update, has now infuriated certain devs and agitated them that allowing ANY dissemination of recipes from WO -> WU is practically an open act of treason, so I anticipate the gag order on recipes to continue for MANY months to come.

 

So much for Rolf telling people that WU would get the same content upgrades as WU. Certain  devs now claim that the precedent was first set by not charging WU players a subscription fee making the two different from the start -- which is nothing short of weasel words since payment options and anti-cheating code are clearly not a "content update".

 

IF I am wrong (so far I have not seemed to be but I keep wishing I am wrong!!!), IF retrograde holds true to his word (he always has that I know of), and IF WO players are allowed to discuss recipes in the forums once (whenever) the update comes to WU, I will send Retro a personal note of apology (plus a public one here) for ever casting any doubt on him giving his word and sticking to it. As far as I know, retro is a great guy and I have never had any  issues with him, so I am thinking it probably was never his decision to make.  

 

We will see, depends on how many weeks it takes for the update to actually be passed to WU -- usually it is 10-20 days but I think we are nearing 40+ days now and i would not be surprised if they decide to drag it out to 60 or 90 days as a further "punishment". 

 

** as a note, we actually ARE nearing 90 days, but really who cares any more. 

 

(I still think it was idiotic decision making to ever strip the recipes out of the WU version in the first place, then require players to script it all back in again)

 

 

Edited by Brash_Endeavors

Share this post


Link to post
Share on other sites

Awesome, maybe I won't have to directly invoke the Recipe.class now. Looking good.

Share this post


Link to post
Share on other sites
On 2/6/2017 at 5:12 AM, Retrograde said:

Yes, it's a server owner thing.

 

It would be fairly straight forward for someone to create a tool that can generate these recipes based off input options, rather than having to wrestle with the system yourself though.

 

 

 

Why doesn't a Dev make one? Ya'll wrote the system. Can't ya'll support it?

Share this post


Link to post
Share on other sites
On 20.2.2017 at 6:00 AM, Audrel said:

Why doesn't a Dev make one? Ya'll wrote the system. Can't ya'll support it?

because you can make recipes with a json script, the example and schema is above

 

Eject

Share this post


Link to post
Share on other sites
3 minutes ago, Eject said:

because you can make recipes with a json script, the example and schema is above

 

Eject

 

I'm talking about an external program. The schema is greek to anyone who doesn't code. I have no idea what goes in it and I have no desire to learn it to make recipes for a game I paid money for.

Share this post


Link to post
Share on other sites

its´s the same with mods, you have the posibility to expand your server you can do it but you do not have to.

it is not the task of the WO Devs to learn us json or java.

 

Please dont missunderstand me

 

Eject

Share this post


Link to post
Share on other sites

I believe the main objective here was when it was thought that WO developers were going to exclude the vast majority of recipes from WU. It didn't turn out like that (thank goodness). We have plenty of recipes included as a defulat so there is little reason to try and make your own.

 

Although, I'm working on this one, "Min-Maxer" (a recipe that has lots of combinations so I can easily find every affinity. It also can make a food that has a large item and stage count which greatly helps affinity timer):

 

Spoiler

{
  "name": "Min-Maxer",
  "recipeid": "1501",
  "known": true,
  "skill": "hot food cooking",
  "trigger": "heat",
  "cookers": [
    {
      "id": "oven",
      "difficulty": 0.0
    },
    {
      "id": "forge",
      "difficulty": 10.0
    },
    {
      "id": "campfire",
      "difficulty": 20.0
    }
  ],
  "containers": [
    {
      "id": "cauldron",
      "difficulty": 0.0
    },
    {
      "id": "pottery bowl",
      "difficulty": 5.0
    },
    {
      "id": "sauce pan",
      "difficulty": 10.0
    },
    {
      "id": "frying pan",
      "difficulty": 15.0
    }
  ],
  "ingredients": {
    "mandatory": [
      {
        "id": "any fish",
        "difficulty": 0.0
      }
    ],
    "oneormore": [
      {
        "list": [
          {
            "id": "any veg",
            "difficulty": 0.0
          },
          {
            "id": "any herb",
            "difficulty": 0.0
          },
          {
            "id": "any spice",
            "difficulty": 0.0
          },
          {
            "id": "any berry",
            "difficulty": 0.0
          },
          {
            "id": "any nut",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "any cheese",
            "difficulty": 0.0
          },
          {
            "id": "any mushroom",
            "difficulty": 0.0
          },
          {
            "id": "any milk",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "any flower",
            "difficulty": 0.0
          },
          {
            "id": "slice of bread",
            "difficulty": 0.0
          },
          
          {
            "id": "sausage",
            "difficulty": 0.0
          },
          {
            "id": "biscuit",
            "difficulty": 0.0
          },
          {
            "id": "pasta",
            "difficulty": 0.0
          },
          {
            "id": "pastry",
            "difficulty": 0.0
          },
          {
            "id": "croutons",
            "difficulty": 0.0
          },
          {
            "id": "haggis",
            "difficulty": 0.0
          },
          {
            "id": "kielbasa",
            "difficulty": 0.0
          },
          {
            "id": "crisps",
            "difficulty": 0.0
          },
          {
            "id": "jelly",
            "difficulty": 0.0
          },
          {
            "id": "scone",
            "difficulty": 0.0
          },
          {
            "id": "toast",
            "difficulty": 0.0
          },
          {
            "id": "pineapple",
            "difficulty": 0.0
          },
          {
            "id": "breadcrumbs",
            "difficulty": 0.0
          },
          {
            "id": "coconut",
            "difficulty": 0.0
          },
          {
            "id": "dough",
            "difficulty": 0.0
          },
          {
            "id": "bread",
            "difficulty": 0.0
          },
          {
            "id": "jam",
            "difficulty": 0.0
          },
          {
            "id": "cooked rice",
            "difficulty": 0.0
          },
          {
            "id": "kelp",
            "difficulty": 0.0
          },
          {
            "id": "gelatine",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "passata",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "broth",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "gravy",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "stock",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "white sauce",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "honey",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "tea",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "maple syrup",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "fruit juice",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "any oil",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "red wine",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "white wine",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "rice wine",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "mead",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "cider",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "beer",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "whisky",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "vodka",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "brandy",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "moonshine",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "gin",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "vinegar",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          },
          {
            "id": "rum",
            "difficulty": 0.0,
            "ratio": 10.0,
            "loss": 0.0
          }
        ]
      }
    ]
  },
  "result": {
    "id": "salad",
    "name": "Min-Maxer",
    "difficulty": 5.0,
    "description": "Everything but the kitchen sink!"
  }
}

 

Share this post


Link to post
Share on other sites

thanks for this recipe =)

 

maybe mine doesnt work because i started with the recipe id 1500 instead of 1501....i have to test it now ^^

 

Eject

 

add: @Audreli like your hamster ;)

Edited by Eject

Share this post


Link to post
Share on other sites

hard tea

The goal if this beverages is to add a recipe where it's possible to have numerous affinity combinations (enough that it's guaranteed to find all skills) and long affinity timers. Realism plays no part in this recipe.

Spoiler

{
  "name": "hard tea",
  "recipeid": "1502",
  "known": true,
  "skill": "beverages",
  "trigger": "heat",
  "cookers": [
    {
      "id": "oven",
      "difficulty": 0.0
    },
    {
      "id": "campfire",
      "difficulty": 20.0
    },
    {
      "id": "forge",
      "difficulty": 10.0
    }
  ],
  "containers": [
    {
      "id": "cauldron",
      "difficulty": 0.0
    },
    {
      "id": "pottery bowl",
      "difficulty": 0.0
    },
    {
      "id": "sauce pan",
      "difficulty": 5.0
    },
    {
      "id": "pottery jar",
      "difficulty": 10.0
    },
    {
      "id": "open helm",
      "difficulty": 20.0
    }
  ],
  "ingredients": {
    "mandatory": [
      {
        "id": "water",
        "ratio": 800.0,
        "loss": 0.0
      },
      {
        "id": "moonshine",
        "pstate": "none",
        "ratio": 0.0,
        "loss": 0.0
      }
    ],
    "oneormore": [
      {
        "list": [
          {
            "id": "any spice"
          },
          {
            "id": "any herb"
          }
        ]
      }
    ],
    "optional": [
      {
        "id": "sugar"
      },
      {
        "id": "maple syrup",
        "ratio": 0.0,
        "loss": 0.0
      },
      {
        "id": "honey",
        "ratio": 0.0,
        "loss": 0.0
      },
      {
        "id": "honey water",
        "ratio": 0.0,
        "loss": 0.0
      },
      {
        "id": "fruit juice",
        "ratio": 0.0,
        "loss": 0.0
      },
      {
        "id": "any milk",
        "ratio": 0.0,
        "loss": 0.0
      },
      {
        "id": "cream",
        "ratio": 0.0,
        "loss": 0.0
      }
    ]
  },
  "result": {
    "id": "tea",
    "name": "hard tea",
    "difficulty": 5.0,
    "description": "Tea with moonshine."
  }
}

 

Here is a GM examine text from a tea I made from: water, moonshine, chopped basil, maple syrup, pineapple juice, and cow clotted cream.

[16:51:34] Tea with moonshine. It can not be improved. This has a very low nutrition value. Created on day of the Wurm, week 2 of the White Shark starfall, 980. (testers only: Calories:324.4, Carbs:0.0, Fats:324.4, Proteins:0.0, Bonus:125, Nutrition:10%, Recipe:hard tea (1502), Stages:22, Ingredients:45.)

About 100g is needed for 1h affinity. Ignore the ccfp value as I modded that.

 

Share this post


Link to post
Share on other sites

Heya. I've also been working on a tool to help creating recipes and made a few recipes while testing stuff out. Individual files can be found here or all of them in a zip can be found here. Mainly focused on creating 'realistic' stuff and filling gaps in the default recipes. Available recipes are:

 

Spoiler

1900 - baked beans
1901 - minted meat
1902 - spiced meat
1903 - fruity meat
1904 - beans on toast (requires 1900)
1905 - chocolate covered fruit
1906 - candied nut
1907 - boiled veg
1908 - steamed veg
1909 - baked veg
1910 - grilled meat
1911 - meat and potato pie
1912 - white pudding
1913 - black pudding
1914 - big breakfast (requires 1900, 1912, 1913)
1915 - pigs in blankets
1916 - tea and biscuits

 

Probably worth browsing them to see if they are suitable for you before using them (my meat and potato pie might not be your meat and potato pie :P)

Edited by McSporren
Formatting

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now