An in-depth tutorial on how to use Ramza's Crafting System Plugin, straight from Ramza himself!
This article is written by Ramza.
Hey there. In this guide I will be going over the usage of my Crafting System plugin for RPGMaker MZ. You will find all kinds of useful information, from stuff you might want to know before you purchase it, to the basic usage, and most advanced features of the plugin itself. Keep in mind also, that a lot of the most basic features are highlighted quite well on the plugins itch.io page. Additionally, if you feel there is something not covered by this guide, or isn’t described particularly well on the store page, you can always feel free to leave a comment on there, DM me on the RPGMakerWeb forums, or contact me directly on discord (Ramza#3215). I also have a plugin support topic on the RPGMakerWeb forums, where you can report bugs/issues, ask for help, or whatever else you want concerning all of my plugins, not just this one!
One other thing, before we get started, while this guide is specifically for the MZ version of this plugin, there is also a version of it for RPGMaker MV as well, and the vast majority of the info in here will work with it too.
With that out of the way, let’s get started.
At the most core level, this plugin adds in a crafting/item synthesis system, which has three predefined categories built into it; alchemy, blacksmithing, and cooking. Individual categories can be bound to the menu, or called via plugin command, or the crafting system as a whole can be bound to the menu, or called via plugin command as well. Individual categories can also be hidden from the main crafting system bind, allowing you to have access to some crafting categories, but lock access to others to only being called via plugin command later.
In addition to those three default categories, the plugin is capable of making any number of extra ones you want. Additionally, categories that don’t have any recipes in them will never be shown on the above window, so if your project doesn’t use alchemy at all, it will never be shown.
There are a number of advanced features in this plugin that I will explain in further detail when it is more relevant, but for now, the main reason I’d suggest using this one over another crafting plugin is because this plugin is ingredient driven. What does that mean? Most (possibly all?) synthesis plugins for MZ follow a very simple formula: An item, or command unlocks a recipe, the player selects that recipe from a list, the player party exchanges the ingredient items for the result item(s) of that recipe. These systems are what I would call recipe driven, or list based systems. The player knows what he is creating because he is selecting it from a list of stuff he can make.
This plugin presents the player with an interface in which they can stick up to four unique items in various quantities, and hopefully make something. The player doesn’t know what the end result item will be until it is created, which unlocks it, and allows it to show in the preview window when the correct ingredients are presented.
Once an item has been successfully created one time, or is unlocked via plugin command, or by default in the plugin parameters, the player can see the expected result in the preview window on the right side, as well as the success rate of the current recipe (on the right above), but only when the correct ingredients are provided.
Each crafting category tracks an experience value, and levels up when enough experience is gained through crafting. The level of a category can be used to determine the success rate of certain recipes, or to lock certain recipes entirely until a certain level is reached. There is also a parameter to allow a common event and/or code to run when a category gains a level. You can use this to provide bonuses to the player, turn on switches, or track quest progress.
Because the player doesn’t always know the exact ingredients required to make an item, and experimentation is a key component of figuring out a new recipe, it’s likely that at some point, the player will provide a number of ingredients that do not exactly match a recipe, but do contain the ingredients for a different recipe.With the above example, the player could provide 3x Lettuce instead of 2, which is not a valid recipe, but the system will determine that the player did provide 2x Lettuce, so it can partial match the shown recipe for a salad.
Recipes can have a success chance set, where even if the correct ingredients are given, there is still a possibility of failure. Different messages can be configured to be shown to the player in the event of a failure like this, making it more easy to tell that the cause wasn’t simply incompatible ingredients.
Recipes can also be configured to give out a ‘bad item’ when the success chance above is not passed. This can also be optionally presented to the player as if it was a successful craft. This feature mimics the way that item creation worked in some of the older Star Ocean games, if you’re familiar with that.
Ingredients can be tagged to not be consumed when used in recipes. This can be set so that they are not consumed when the craft attempt succeeds, fails, or both. You can use these tags to prevent expensive or rare ingredients from being lost by failures, or to make recipes that require a tool which is not consumed on use.
Some recipes can be set to require a ‘type’ of ingredient, rather than a specific item. The most obvious example of this would be in cooking, where a recipe such as stew could call for any kind of meat. The recipe can be set up to allow any item tagged as belonging to the meat category, rather than having to create several recipes, one for each kind of meat.
This effect is even more useful when combined with some advanced usage techniques I will go over later.
So, you’re ready to bite the bullet and start crafting? Great, let’s begin. First of all you’re going to need the plugin itself. The plugin comes with a demo project as well, which is often a pretty good starting point for making your own recipes, but we’re going to start fresh with the latest version of the plugin, so you can see exactly how to get up and running in your own project.
It is important to note that this plugin will not function properly if you load an old save game that was made before it was imported into your plugin manager. Additionally, you will likely need to start a new save game again if you decide to add new crafting categories mid-way through. Keep that in mind for updating already released projects.
This plugin has no dependencies. You can import it into your plugin managed wherever.
For now, we will use the default plugin parameters for setup, since that is the easiest to make sure everyone is on the same page.
The only thing in this list that isn’t default is the Recipe List on the last screenshot, you’ll find if you leave that entirely blank as it is, it will crash on load. It’s fine with the  in there now, though, and that isn’t really a problem with the plugin, since you’ll be making some recipes to put in there anyway, right?
So the first step is going to be to decide what it is we want to make. Let’s start simple and make some food via cooking. Go into your database, and create a new item to make, like below, take note of the item ID you gave it, since the plugin parameters can’t show you a list, you’ll have to remember it for now.
This Salad item will be our result item, that is, the item that will be created. We will also need to make a couple of ingredient items, which we use to make this one, right? A basic salad probably has some lettuce and some other stuff in it, and maybe some dressing too.
Our ingredients are complete. Take particular note of the notebox on all three of them:
This is a special note tag for ingredients that makes it so that they can show up in a certain crafting category. Without this tag, these ingredients won’t be usable when we’re cooking.
The next step is to make the recipe for this item. Go into your plugin parameters, and all the way at the bottom, there is the recipe list. Open that up, and we get a blank list. Double click the first blank in the list to start making a recipe.
The first blank is the name, this doesn’t actually do anything, but it is the first thing shown on the list, so it makes it easier for you to read your result item lists later. I usually just give it the same name as the item I’m creating, to keep it simple.
Next we have CraftType. Since we’ve already decided that this was a cooking recipe, you can select cooking from the list here. If you want to make a recipe that doesn’t belong to one of the three default categories, you can type it in here instead.
Third is the ResultType. This specifies if the item you’re making is an item, weapon or armor. Since our salad is an item, let’s select that.
Next is the ResultID. This is the database id of the item we’re making. In this case, the salad is ID 35 on the list, so let’s type that in there. Like I said, the plugin manager has no way to know what you selected for the ResultType, so I can’t use that to let you select the result item from a list of items, so you’ll have to remember that ID.
Next, we have the ingredient list. Clicking this opens a new window where we can set up a recipe for our salad. One result item can have multiple recipes associated with it too, so keep that in mind for later.
When you click on a blank there, you are presented with the above list of parameters.
The category parameters are used for setting up wildcard recipes, which we’re not doing just yet, so we’ll leave those blank.
For the second type, we also choose item. The second ID is 33, as our tomato is ID 33 in the database. The third ingredient is also an item, and the ID for the dressing is 34.
Once that’s all set, we go back out to finalize the result item. We’ll leave unlocked by default set to false, as we don’t want the player to know this recipe when the game starts. We’ll also leave the required crafting level as 1. By default this will only lower the success rate if the recipe requires a higher level than the player has. We’ll also leave the run once on completion box blank. You can use that functionality to turn on switches, or do other advanced things, such as track quest objectives, or interact with other plugins.
So here is our first recipe. Let’s give those ingredients to the player somehow, and test what we’ve made!
The first thing you’ll notice is that when you enter the crafting menu from the main menu, it goes right to the interface. This is because we only have one valid crafting category, so it automatically selects cooking.
Once in the interface, you can begin putting the ingredients into the interface. The order of the ingredients doesn’t matter, either, I just put them in the same order we defined them in for ease of use.
Once you have at least two items in there, the craft button activates, which is labeled ‘Cook’ by default. With our ingredients selected, we can go ahead and make the salad!
Uh oh, looks like we failed. As you can see, since we failed, some of our items were taken from us, since we wasted them. The default parameters are set to take one of everything provided, so that’s what it did. Let’s try that again.
Hey, it worked this time! Now, from here, you see the success screen, which shows the item we made. You can also see that we’ve gained some crafting experience on the right side there too. Another thing that happens when you craft an item successfully is that it becomes ‘unlocked’. That means that if the player puts in the exact ingredients needed to make it again, they can see it on the preview window on the side, and also see the success rate:
If an item has been unlocked, either by making it, via plugin command, or by default in the plugin parameters, the player will see the above preview for all valid recipes for that item. That means if we make a second recipe that uses double the ingredients, but grants twice as many salads, the player will also be able to see that result in the preview!
Congrats, we’ve made our first recipe, and successfully crafted it in game. But that’s just scratching the surface here. Let’s move on to some more intermediate use cases.
So we made a salad, pretty neat, eh? Well let’s stick with food for now and move on to wildcard ingredients. Let’s say we want to make a stew, that’s easy enough, right? Make a couple of ingredients, a meat item, some broth, maybe a potato, you got some stew, right? Well what if your project also has some kind of farming minigame, where you can raise your own animals for meat? Or grow one of several different kinds of vegetables, not just potatoes? Well if you want your stew to include several different recipes for each kind of meat, and each kind of root vegetable, you can, but that’d quickly cause your recipe list to bloat out of control.
That’s where wildcard ingredients come in. You can tag ingredient items as belonging to a category, like meat, or root vegetable, and then use the ‘category’ option when setting the ingredient type in the recipe to accept anything from that wildcard category. That means you’ll have only one recipe in your plugin manager, but it could have any number of different ingredients!
Ingredients belong to a wildcard category when you tag them with the <CraftCat: x> tag in their note box. An ingredient can only belong to one category, so don’t try to use this tag multiple times because it won’t work. So for this example, we’ll make several ingredients, and give them the necessary <CraftCat: x> tag, then build our new recipe using categories.
First, I’ve made a beef item, and a mutton item, both are basically identical except for their names and descriptions:
Next, we make the root vegetables. I used a potato and a turnip, they’re things you find in stew, right?
Once again, the two items are basically identical except for their names and descriptions. We also need something for broth. I went pretty unoriginal and made an item called water, which has nothing special on it except for the tag that allows it to be an ingredient in cooking:
And lastly, we also need our stew item that we’re going to be crafting.
Finally, we need to make the recipe in the plugin manager for this item. This will be basically the same as when we made the salad, except instead of setting specific ingredients, we’re going to use the categories we set on the meat and vegetables:
Finally, I also set the parameter to have this recipe unlocked by default, to make it easier to see what would happen in the interface when we craft it.
With this recipe set the way it is, the player can put in any combination of beef, mutton, potato, turnip and water, as long as it contains at least one meat item, one root vegetable, and one water, the result will be a stew:
One more thing about using wildcard ingredients in your recipes - if you make a recipe like above, and then make a different item that uses specific ingredients from the categories given, the plugin will always default to the wildcard recipe.
So if you used the stew recipe we made above, and then also made a different item that required raw beef x1 and turnip x1 and water x1, the plugin will never craft this item, it will always craft stew. This is a quirk in how the plugin detects recipes, to mitigate this problem, if you absolutely need to make a recipe like this, place it before the wildcard result item in the recipe list. This will ensure that the plugin finds it first, so it will match it before it gets to the point where it finds the wildcard recipe.
Additionally, if you create a recipe that has two wildcard ingredients of the same category (ie: two meats) in different quantities (ie: 2x meat and 1x meat), ensure that you put the higher quantity closer to the top of the list in the recipe list (BaseItemQuantity = 2, SecondItemQuantity = 1), otherwise the plugin might mess up and not match a valid craft.
New Craft categories can be created simply by typing their names in on the first recipe list screen in the plugin parameters, when making a new recipe. Anything at all can be typed into this box. Once a category has a recipe in it, it will show in the craft menu, as any of the default categories already do.
There is a plugin parameter to hide categories by default, simply type in the names of any categories you want hidden by default, separated by a single space. You can hide categories by default and then unhide them later via plugin command. Specific categories can also be locked or unlocked via plugin command. If a category is locked, it will not be selectable from the category list, but will still show there.
The craft experience system can be turned off in the plugin parameters. If disabled, the experience gauge does not show on the preview window at all, and successfully crafting a recipe will not grant experience. Required levels will be ignored on individual recipes as well. The default success chance formula also checks the current craft level of the category being used as well, so unless you remove it from there, the plugin will cause a crash when it tries to calculate the success chance of a recipe.
The chance of a valid recipe failing can also be disabled. Doing this means that if the player puts in a correct combination of ingredients, they will always succeed in making that item. As a result, failure items cannot be given out, as failure is only possible if the ingredients were invalid.
The item preview can also be disabled. If turned off, an unlocked recipe will never show the expected result in the preview window. Also, even if the recipe is unlocked, the player will never see the estimated success chance either. Use this to ensure that the player never really knows what they’re going to make.
The item category window can also be disabled. When set this way, all valid ingredients are going to be grouped in the same ingredient list window, with the items first, then weapons, then armors. If this is turned off, the only way to remove an item from the interface is to press the left arrow key to reduce the quantity to 0, because the ‘Clear’ command is located on the item category window. Disabling this gives a bit more space for the item list window below on lower resolution projects.
When a craft fails, a loss window comes up to show what items were lost. This can be disabled as well.
All of the text on screen can be customized, with a lot of it also being able to be customized even further by what the current craft category is. The default parameters for this plugin have custom strings set for the craft button for the cooking category, for example, but string can also be customized for custom categories added by the user as well. There are also plugin parameters to change the sound effects when crafting per category.
Partial matching is a feature where if the player puts in ingredients that do not exactly match those required for any recipes, the plugin will scan all other recipes to see if the player provided enough ingredients to match any other recipe. First it checks against recipes with the same number of ingredients, to see if the problem was a quantity mismatch (the player provided too many of an ingredient), then, if it doesn’t find a match that way, it will scan recipes that contain one fewer ingredient item than was provided. If that fails, it will then check recipes with two fewer ingredients. The item preview window will not show a partial match - the player won’t know what they’re making until it is made, even if the item is already unlocked. If you turn this parameter off, the player must always put in exact ingredients and quantities to create an item.
In the case of a partial match, you can decide what happens to the extra ingredients. If the player provided an extra quantity of valid ingredients, they can be kept or destroyed. You can also choose what happens to any extra ingredient items. Items will only be returned on a partial match, so if that parameter is false, these ones have no effect.
There are two kinds of item creation failures: soft failure and complete failure. Soft failure is what happens when the ingredients provided match a recipe, but the success rate check fails. Total failure occurs when the ingredients given do not match a recipe at all. You can decide what happens to provided ingredients in either failure case. There are a large number of choices to be made here, and the result can be different depending on if it was a soft or total failure. Options here range from taking nothing, to taking every ingredient provided, as well as some random choices as well. The default function is to take one of each provided ingredient, on a soft failure, and every provided ingredient on a total failure.
By default, the crafting scene is bound to the main menu, but there are also options to bind individual crafting categories to the menu instead. If an individual category is bound, it will not show in the category selection list when the main crafting scene is accessed. If you access a specific category, either by menu command, or via plugin call, the player will be unable to access other crafting categories from the scene, preventing them from accessing cooking recipes from the blacksmithing category.
Each result item has a codebox that is called the first time the item is successfully crafted. This codebox is not used for anything at all by default, but more advanced developers can use it to turn on switches, change variables, or call functions from other plugins to integrate crafting into other game systems, such as tracking successful crafts for achievements, or for quest tracking purposes.
Each category can have a common event that runs when it gains a crafting experience level. Developers can use this to hand out rewards, track quest progress, or do anything else that a common event could normally do. Note that the common event is reserved, but they cannot play from the menu scene, so they will not actually run until the player closes the menu. Also note that it’s possible to trigger multiple common events in this way, but only one can be reserved by default, so you’d need another plugin to queue multiple common events in that case.
There is also a setting in the plugin parameters to enable DQ11 crafting mode. This mode is slightly different than the default mode that has been discussed previously, with the following differences:
As the name implies, this emulates the crafting system present in some Dragon Quest games.
Additive ingredients are special ingredients which store special traits - granted by note tags on the item. The traits don’t do anything on the ingredient item itself, but when that ingredient is used to craft something, they are passed on to that item and become active.
These traits can range from being flat parameter boosts on equipment, to adding/removing states, teaching skills, increasing recovery items potency, and a large number of other things. I won’t bother to list them all here, as they are all easily viewable in the plugin documentation. The majority of the options available in the effects box for usable items, and the effects box for equipment can be added as an additive trait.
The main use of this feature is to upgrade items that have been crafted compared to their store-bought counterpart, but you can also use it to differentiate the same item made by different ingredients.
Our wildcard recipe item is the perfect candidate for this feature. If the player makes a stew, it doesn’t matter which meat or vegetable they use, it always makes the same stew. Well using additive traits, we can set it so that stew made with beef grants more hp recovery, and stew made with turnip cures poison. Better yet, both of these traits can be passed on to the stew when it is made, so if you use beef and turnip to make the stew, you get both effects.
One of the most common additive traits is to add a prefix or suffix to the result items name. You could make it so that the stew item gains the ‘Beef’ prefix if made with beef, or the ‘Mutton’ prefix if made with mutton. This allows the player to easily see which stew is which, if he’s made multiple different stews with different ingredients. The best part about this feature, is that while we have tons of different kinds of stews, all made with different ingredients, and having different bonuses, we only actually used one stew recipe to make them all.
We haven’t made any non cooking recipes yet, but additive ingredients is the perfect time to introduce blacksmithing. Using wildcard ingredients, you can make a weapon recipe that requires a metal ingot of some kind, and something leather scraps. Without additive ingredients, no matter what kind of metal you use, the result will always be the same weapon, every time. This might be fine if all you want is the player to jam some metal in a mold and call it a day, but using additive traits, you can make weapons made with certain metals have different effects too. Most commonly you’d add a prefix to turn that ‘Sword’ into an ‘Iron Sword’, or a ‘Copper Sword’, but you can also add params to weapons made with certain metals, add attack states, or change attack elements, and really make weapons unique!
Unfortunately, additive ingredients were designed with a certain feature from a certain plugin for RPGMaker MV in mind, namely, Independent Items from Yanfly’s Item Core Plugin. This functionality hasn’t made it over to RMMZ in any meaningful capacity yet, so many of the yanfly plugins that relied on it to work have not been ported.
I have created a patch, which allows you to get independent items from ItemCore to work in MZ. It does not enable any of the other features of ItemCore, and it appears to be fully compatible with the current VisuStella plugin suite.
Enabling independent items like this will cause the player to be unable to buy more than one item at a time from a shop. Additionally, independent items will not stack in the player inventory screen. The crafting system lists every independent ingredient item separately as well, but disables an item if one of the ingredient slots already contains the same item.
Once we have the required plugins installed, you need to specify which items will be additive ingredients. This is set via the bottom three parameters on the crafting system plugin. These parameters are an array of items, weapons, or armors, that are considered additive ingredient items. Being on this list means that they are checked for the special note tags to grant traits to them. In order to be an additive ingredient, an ingredient also has to be an independent item. If you set the ItemCore parameters as above, that should be the case for all items, weapons, and armors.
Once an item is listed as an additive ingredient, you can put note tags on the item to set traits it will pass to the result item. For this example I will make it so that our Raw Beef item will change the prefix of the result item to ‘Beef’.
With this change, we can craft the same stew we’d been making before, and get an entirely new item: Beef Stew.
The player can easily tell the difference between a stew made with beef, and a stew made with mutton, since the mutton stew is just called stew. Additionally, stew bought in a shop will never have this prefix on it, because it has not been crafted. We can go one step further on this and increase the hp recovery of our beef stew, to make it better still than mutton stew.
We’ve added an hp recovery tag to the beef item. Now when we make a beef stew, it will give 73% hp + 12, instead of just 70% hp.
It’s hard to see a change like this without use of another plugin, so the screenshots below are using VisuStella ItemsEquipsCore, as it shows item effects in the item menu.
Once again, those are the same base items, made with different ingredients, all from the same recipe. Pretty neat, right?
An even more advanced use of these traits is called trait chaining. Additive ingredient traits become active on an item crafted with them, but if that result item is also an additive ingredient, it will inherit the traits of all of its ingredients as well. That means if you made a type of food that used a stew as one of its ingredients, and the stew was also an additive ingredient, the bonus hp recovery from the beef, and the beef prefix will pass on to that new item.
This rewards players who craft all of the individual parts of their items, as their base stats could be substantially higher than if they’d bought those ingredients from a shop.
There are two ways that additive ingredient traits can be passed on to a result item. In the first mode (called default) all additive ingredients have all traits pass on to the result item. Some traits don’t stack, like the name prefix for example, so only the first one of these traits found will pass on. The second mode is called ‘skyrim-like’, and in that mode, only traits that are present on at least two ingredients will be passed on to the result item. This mimics how alchemy works in skyrim. The traits mode is set via plugin parameters, and cannot be changed mid-game.
As mentioned, if you have any further questions, that aren’t covered in this guide, or in the plugin documentation, you can reach out to me in a number of ways:
I am working on an extension for this plugin, which will allow the player to see additive traits on ingredients without having to create an item with them. While work on this extension isn’t going very fast, it is still chugging along. The plan is to either have some sort of a ‘librarium’ sort of command which simply lists all known ingredients and their effects, or some sort of popup help window sort of thing that can show additive traits on ingredients when a hotkey is pressed with one of them currently selected. It’s most likely that the extension will contain both options in some form. I’m currently working on a good way to display that information, since there are so many tags, and items can have any or all of them on them at the same time.
Additionally, there are already two extensions for the MV version of this plugin, the first one displays the party’s current crafting level and experience on a window in the main menu, and the second one adds the option to list all known recipes and craft them from that menu. I will eventually port both of these to the MZ version at some point, but they are a low priority right now due to the low user base. Higher priority is being given to the newer extension, as I expect that will be in a lot more demand.
Thanks for reading this guide, and thanks for checking out my crafting plugin. I look forward to seeing what you can make with it.