This plugin is a port of my Crafting System plugin for RPGMaker MV, as such it has many of the same features as the original, updated to work in the new engine.

The demo you see above has the plugin enabled in it, so you can talk to the info dump NPC, or open the system and have a look at how it works. 

Features:

  • Ingredient based recipe system. Players build items from individual ingredient items, rather than select a recipe from a list
  • Developer defined crafting categories split the system into multiple modes, no more cooking at the blacksmith anvil.
  • Variable recipes can contain items that belong to specified categories, not just specific items. 
  • Manage recipes right in the plugin manager, no messing with JSON formatted recipe lists, or node.js apps.
  • Partial recipe support. Player put in too many of one item? Added an extra ingredient? System will still craft something!
  • Unlock recipes via plugin command, or by crafting them. 
  • Bind the scene to the main menu, VS_MainMenuCore, or call it via plugin command
  • Support for multiple individual recipes to craft the same result item. Want four different ways to bake a potato? We can do that.
  • Configure plugin options to your liking. Variable success rate? Failure case item creation? Removing ingredients from the inventory after failing a craft? Got you covered.
  • Robust experience and leveling system, on a per category basis. 
  • Vast and flexible additive traits system extends independent items to allow them to pass on certain traits when they are used to craft an item.
  • Includes a patch to allow independent items to work in RMMZ.

Introduction:

What sets this plugin apart from it's contemporary counterparts is that this plugin is entirely ingredient driven on the player's end. Other crafting systems are rigid,  requiring players to select a known recipe from a list, and have the required ingredients to craft it. This system allows a lot more freedom on the player's side, allowing them to randomly jam ingredients into the UI and (hopefully) make something. If they succeed, the recipe is unlocked, so they'll always know how to make the thing they just made.

This plugin also has support for individual item categories. Let's talk about an example here. You could have an item, Stew, which requires a carrot, a potato and some meat. In traditional systems, you'd make one recipe, with those three items, and call it a day. But what if you have four kinds of meat? Pork, Beef, Chicken and Venison? You'd need to make four different recipes for stew, with each type of meat in it.  That'd also clutter up the recipe list with multiple stews, too. With this plugin, tag all the meats as meat, and the recipe will accept any of them. One Stew recipe, four different kinds of meat.

Please note that I am always updating the plugin and finding issues with it, as it's such a  massive undertaking, it's next to impossible for me to find everything wrong with it by myself. This plugin itself is based on version 1.14 of the RMMV crafting system, so it contains all of the fixes included in that. Even still, feel free to report anything out of the ordinary you find to me directly on this plugin page, or on the RPGMakerweb forums, where I have a support topic dedicated entirely to my plugin suite.

How it Works:

First I'll talk a little bit about how the plugin works, and then I'll share some screenshots to help drive home the point I'm trying to make.

First things first, though. The additive traits system mentioned above, which allows ingredients to pass traits on to the result item requires Yanfly's ItemCore plugin to work. That feature will be entirely disabled if you are not using it. It requires independent items to work, and at present, there are no other plugins available for RMMZ that contain a comparable feature. In order to get this working, you need to import YEP_ItemCore into your RMMZ plugin manager, and then import my compatibility patch below it in the load order. My demo does not contain this file, as I do not have the rights to redistribute Yanfly's plugins.

As mentioned in the little blurb at the top, this crafting plugin is ingredient focused rather than recipe focused. Other plugins that tackle a crafting system rely on a menu in which you pick a recipe from a list, while this one allows the player to input random ingredients into the interface to experiment in finding working combinations of items.


The main crafting UI

As you can see above, this is the main crafting Scene. You have four slots, and can select items to put into each of them. You can also lock the third and fourth slots via plugin parameters, and toggle them via plugin commands. The various text strings on screen can all be customized as well, for each crafting category that exists. As we're looking at the cooking category right now, the Craft button is labeled 'Cook'. You can also see the crafting experience system on display here on the right side of the screen, which is also configurable, and can be turned off entirely if that's not what you're looking for.


A salad

On these shot, we see the same scene again, but there are some ingredients put in already. On the right side, you can see our expected result item, the Salad, as well as the craft success rate of it. Both of these things can be hidden in the plugin parameters as well.


Crafting in progress

So we've chosen to cook this salad, with the ingredients we have in there. When the bar fills up, we'll be shown the result.


Success?

When crafting was completed, we see that we did not get the expected Salad, but a wilted one instead. This is what we call a soft failure, and it happened because the random number check for the success rate did not pass. In this case it was only a 15% chance to fail, so that's pretty unlucky. The result window is showing us our failed salad as if it were successful, though, which is a configurable parameter in the plugin. We also have a helpful window that lets the player know what items were lost in the creation attempt.


Another soft failure

Here's another failed attempt. This one was from blacksmithing. The amount of materials removed on a failed attempt is also configurable, and the window that shows the lost items can be disabled as well, if you don't want the player to get that information.


Let's make a Short Sword

With the short sword recipe unlocked, we can tell that these ingredients are going to make us a short sword. Keep in mind this information will only show when the recipe has been unlocked, though.


Crafting successful!

When the craft is complete, you can see that we gained some craft experience, and are given our Short Sword. Job well done.


Level up

With enough successful crafts, we go up a level. Increasing in level increases the success chance of crafting recipes. Recipes can be set as higher level to cause them to be harder to craft at lower levels, too. Once again, these features can all be turned off as well, if you don't want them. Also note that all of the strings on screen can be customized as well, on a per category basis.

Deeper Information:

Now, with the basics out of the way, lets talk about a couple of things that can't easily be seen via screenshots. First up, lets talk about partial matches. When a player puts a bunch of items into the crafting interface, unless they already know the recipe, the odds of them exactly matching the exact items and quantities needed are pretty low. As such, the system can make what is called a partial recipe match. If the ingredients or quantities provided don't exactly match a recipe, the system tries to find any recipe that the ingredients provided can match. If the player provides and extra ingredient, it is ignored, or if they provide too many of one item, it is also ignored. You can also configure what happens to those extra items when the partial recipe is crafted.


A total failure

If a partial match cannot be found with the ingredients provided, a total failure happens instead. When the ingredients provided cannot make any recipe, a different message is shown than when a valid recipe fails. You can also configure what happens to the ingredients when a total failure occurs, which is separate from what happens during a partial failure. 

There are many different settings you can use to determine what happens to the ingredients used during both a partial and total failure case. The demo project has it set to take one of each ingredient on a partial failure, but not take any ingredients on total failure. Settings exist for taking all, some, or none of all, some, or none of the ingredients provided, and also a random variance chance as well.

If a partial match or full match is found, a crafting attempt is made. As you can see above, there is a success chance, and if it fails, we get a soft failure, which removes used ingredients, and can optionally provide a failure item to the player. It can also be configured to present the failure item to the player as if it were a successful craft.

If the random success roll passes, the craft is successful, and consumable items are removed from the inventory, and replaced with the result item. Once a recipe has been crafted once, it becomes 'unlocked' and can be seen in the preview window if the player provides the correct ingredients to craft it.

Wildcard ingredients:

Not all recipes have every single one of their ingredients defined by the developer. Recipes can have ingredients be set to a 'Category' item instead of a specific item. A recipe with one of these ingredient categories set, will accept any ingredient that is tagged to belong to that category in that slot. Using this feature, you can make one recipe that can use several different kinds of that category item. 

Our example sword above is one such recipe. The Short Sword doesn't specify it needs an Iron Ingot, and in fact, works with anything tagged as an ingot.


A Short Sword made from Silver!?

You can combine this with additive ingredients to make it even more flexible, a category ingredient such as silver could provide different bonuses to the sword than a plain old iron ingot.

Note tags:

There are several note tags to use on ingredients in the database. 

<CraftCat: categoryname>

Ingredients can only belong to one CraftCat. This tag denotes an ingredient as belonging to an ingredient category. In the example above, the iron ingot and the silver ingot both belong to the ingot category, so they can be used interchangeably in recipes that are looking for any ingot, such as the Short Sword recipe.

<ValidCats: x, y, z>

This tag is required for an ingredient to show up in the item list inside the crafting scene. Tag an item with the crafting categories you want it to be available in, such as cooking, or alchemy. An individual ingredient can belong to as many crafting categories as you want, so you can use items like herbs as both a spice in cooking, and a reagent in alchemy, if you want.

<UNCONSUMABLE: fail>
<UNCONSUMABLE: success>
<UNCONSUMABLE: fail, success>

Ingredients with this tag will not be removed from the inventory when a craft is complete. If they have the <fail> tag, a failure will not remove them, and likewise, the <success> tag will mean they will not be removed if the craft is successful. Items tagged with both, like the third example will never be removed from the inventory. You can use these tags to make special tools that are not consumed on use, but are required in recipes, or you can prevent rare materials from being wasted in a failed crafting attempt.

Adding Your Own Crafting Categories:

This plugin comes with three built in categories; blacksmithing, cooking and alchemy. The recipe list in the demo contains recipes for cooking and blacksmithing, but no alchemy. You can add your own crafting categories as well, and they function the same way as the default ones, with craft exp, levels, and their own custom strings too.

To add a crafting category, simply create a new result item in the plugin parameters, and type the name of the category you want it to belong to into the box, rather than selecting blacksmithing, cooking, or alchemy.


Here I have typed in Goldsmithing

Once one or more result items exist for a crafting category, it will show up in the category select window, just like blacksmithing and cooking do already. Categories that don't have any recipes will never show up on this window, which is why you never see Alchemy, even though it exists. once a category exists in this way, items can be tagged with <ValidCats: goldsmithing> to enable them to show up in that category, just like the default ones.

Menu Integration:

Default menu with the crafting scene bound to it.

The default crafting scene can be added to the default menu via the plugin parameters of this plugin. The name can also be customized. You can have it hidden by default, and show it later via plugin command, or have it disabled and re-enable it later via plugin command as well, like you can with most menu commands.

You can also bind individual crafting categories to the menu as well, via plugin parameter. If you do this, that category will no longer show up on the category selection window when you go into the main crafting scene.

If there is only one category to choose from on the category selection window, the crafting scene will skip selecting it and go straight into the main craft scene, as shown in the first image on this page.

This plugin can also be bound to the VisuStella MainMenuCore plugin as well. The instructions for doing so are in the help documentation.

You can choose not to bind the crafting scene to a menu, and can instead call it via plugin command. You can call a specific category via command, or the default system, so you can use this to make crafting stations that only allow a specific type of crafting at them. If you call a crafting category directly, either via command or from the menu, backing out of the ingredient slot window will close the scene, rather than bring you back to the category selection window.

Plugin Commands:

You can use plugin commands to cause a variety of effects on the system.

Call Crafting CATEGORYNAME

Calls the crafting scene. if a category name isn't specified, the default category selection window will come up and ask the player which category to craft from.

Unlock Recipe

Unlocks a recipe in the interface, as if you had crafted it. Keep in mind that even if a recipe is locked, it can still be crafted, it just does not show up in the preview window.

Toggle Locked Slot

You can lock or unlock ingredient slots 3 and 4 using this command. If the slot is locked it will be unlocked, and vice versa. If you unlock slot 4 while slot 3 remains locked, the player will still be unable to put anything into slot 4, because there needs to be an item in slot 3 in order to put something in slot 4.

Locked slots in the Cooking scene
Change Craft Enable

This command enables or disables the main craft command bound to the menu. If it is disabled, the command still appears but is greyed out and cannot be selected.

Change Craft Show

Hides or unhides the main craft command bound to the main menu. 

Change Category Enable

Enables or disables a specific crafting category. If it is bound to the main menu, it will still appear on that menu, but will be greyed out. If it isn't bound to the main menu, it will appear in the category selection list from the main craft scene, but will be greyed out and unselectable.

Change Category Show

Hides or unhides a specific craft category. As above, if it is disabled, it will disappear from whatever menu it is bound to, whether it be the main menu or the category selection window in the craft scene.

The demo project:

The demo at the top of the page here is an interactive tutorial, our friend Corby will explain everything there is to know about how the system works, with a bunch of visual aids too. The demo project included in the downloads here contains the plugin, as well as plugin settings for YEP_ItemCore, and my compatibility patch for ItemCore. To use the downloadable plugin demo, copy your own copy of the ItemCore into the js folder of the demo, and enable ItemCore and my Independent Items patch from the plugin manager.

The plugin parameters in the demo project match those in the screenshots above, you can use it as a good starting point for creating your own recipes and ingredient items.

Additive Ingredients:

Additive ingredients are special ingredients which have bonus traits on them. When an item is crafted with one of these ingredients, the valid traits for that result item are passed to it. You can use this system to make crafted items more powerful than store-bought counterparts, by adding additive traits to the ingredients used to make them.

There are two different methods of having the traits applied, selected by plugin parameter; All traits, or Skyrim style. In all traits mode, any valid additive trait is added to the result item, in skyrim mode, only traits that exist on at least two of the ingredient items are passed along, like how alchemy works in skyrim.

In order for traits to passed to an item, it needs to be an independent item. This was a feature in RMMV provided by Yanfly's ItemCore plugin. I won't get into too much detail here as to why this is needed, but since a similar feature has not been brought to RMMZ yet, I had to make a compatibility patch to get ItemCore to work properly in RMMZ in order to bring this feature over. Without independent items, a trait added to one sword, would cause all swords in the game to gain that trait, ones you have, ones equipped, ones in shops, and ones that haven't even dropped yet. With that being said, if you don't use the YEP_ItemCore plugin, and my compatibility patch, this feature will not work for you.

Additive ingredients are tagged in the plugin parameters for this plugin. If they aren't tagged, the additive trait note tags on them are ignored.

Trait Chaining:

Additive traits can also be chained together. An ingredient with a trait will also pass that trait on to the result item. If that result item is also an additive ingredient, and is used in a recipe, the trait from the previous ingredient will carry forward onto the new result item. This can allow the player to make stronger items by crafting the individual ingredient items first. It gives them the option to simply buy the ingredients, or have stronger end results by investing the time needed to craft those ingredients.

Traits:

The traits themselves are added to ingredients via note tags. There are a lot of them. Far too many to post on here, for sure. But here are some examples of things you can do with them:

  • Add a prefix or suffix to the item name
  • Add an hp/mp recovery effect to an item
  • Add an inflict state to an item
  • Add an attack state to a weapon
  • Add state immunity to equipment
  • Add a skilltype to equipment
  • Lock/seal skills on equipment
  • Learn/unlearn skills from an item
  • Change the parameters of equipment
  • Add buffs/debuffs to items
  • Add passive parameter buffs to equipment
  • Cure a state from an item
  • Change an attack animation
  • Change the animation of an item
  • And so many more

These traits are dormant on the ingredient item and only apply to the result item when they are used to craft it. Some traits require the result item to be equipment, others require it to be an item. All traits given can also be reset, allowing for ingredients to have both positive and negative traits, and the ability for ingredients to counteract such effects on each other when applying additive traits to the result item.

Plugin Dependencies:

This plugin is compatible with the VisuStella Plugin Suite, but does not require it to run.

The Additive ingredients feature of this plugin requires YEP_ItemCore to function, and as such also requires my compatibility patch to get that working correctly in RMMZ. This plugin should be loaded after those two. For maximum compatibility, load the ItemCore plugin near the top of your load order, after the VS_CoreEngine plugin if you are using it, and then load my compatibility patch directly after it in the load order. 

This plugin requires the Crafting System Core plugin to function.


Extensions:

The following extensions are available for this plugin:


Terms of Use:

  • This plugin may be used in commercial or non-commercial projects. With credit to me, Ramza.
  • Purchase of this plugin allows you to use it in as many projects as you want.
  • You may modify this plugin directly, for personal use only.
  • Sharing this plugin, direct edits to it, or any demo projects that come with it is prohibited. 
  • You may share edits to this plugin as extensions to this one. Extensions require the base plugin to function.
    • You can choose to sell extensions to this plugin for profit, crowdfunding, donations, etc, as long as the extension requires this base plugin to function. 
  • Do not modify the header of the plugin file, and do not claim ownership of the plugin in your own projects.


StatusReleased
CategoryTool
PlatformsHTML5
Rating
Rated 5.0 out of 5 stars
(1 total ratings)
AuthorRamza
Made withPixiJS
TagsCrafting, RPG Maker, RPG Maker MZ, synthesis, visustella

Purchase

Buy Now$18.99 USD or more

In order to download this MZ Plugin you must purchase it at or above the minimum price of $18.99 USD. You will get access to the following files:

Plugin Download 143 kB
Demo Project 95 MB

Development log

View all posts

Comments

Log in with itch.io to leave a comment.

(+1)

Hi

I just bought the plugin. I really appreciate the complexity and the features and I am planning to use it for a future project.

Nice job!

Thank you for saying. Let me know if you have any issues :)

Hi! I'm planning to add a "Recipe Shop" in the game. Is there a way to check if the player has a recipe enabled/learned already or not? Maybe with some script command? Thanks

Hi Ramza, I hope all is well!

This plugin has solved so many of my blacksmithing issues, but I was wondering: is it possible to use currency (gold, money, etc.) as an ingredient? I have this set up to run as a Blacksmith, and I'd like for them to be able to charge for their services. Worst case scenario: I can just add an extra iron ingot or something to all of the recipes, but I'm hoping that this is an option. Thank you in advance!

Good day.

There isn't currently a way to do this, as gold cannot be used as an ingredient. It would be possible to add a cost to the crafting run once function, and then re-enable the function for the recipe to have a recurring cost, but there'd be no way to indicate to the player that there was a cost, or that it was paid, and there'd be no way to stop the craft from succeeding if the player didn't have enough gold.

On the other hand, an extension to add gold costs (and actually show them in the crafting confirm window) is on my roadmap for this. I can't say when you could expect it to happen, but it's being worked on.

~Ramza

That extension would be awesome, but no rush (obviously). For now I can just add another ingot as "payment". Thank you for the quick response!

(1 edit)

Hello, if I don't I create categories "Cooking, Blacksmithing, Alchemy" in the menu command. When I call scene for blacksmithing and alchemy, they just all go to Cooking scene! But if I create categories in menu. They will show in menu command which I doesn't want to. I just want to call the scene in the map. How can I make those three menu commands disappear? Thanks.

I try to change the code line 2656-2663, but its not working.

Hi there.

I'm not sure I understand exactly what the issue is here.

You can disable the menu binds entirely by changing the plugin parameter in the plugin settings, 'Show in Menu' set it to false, and there will be no menu access to the plugin. The command that would show if this parameter is enabled is a catch all 'Crafting' command, which opens to a menu to select a category to craft in. It will only show categories that you have made recipes for already, and if there's only one category available, it skips past this window to go straight into whatever that was (cooking in your case).

If you only want to call a crafting scene from the map, set the 'Show in Menu' parameter to false, and ensure that you don't have any categories listed in the 'Category Menu Commands' parameter. There is no need to edit the plugin file itself for this.

If you want some categories to be accessible from the menu, and others to not, you can bind them individually using the 'Category Menu Commands' parameter, so you could bind cooking to the menu, and allow access to blacksmithing or alchemy only through an event on the map scene.

To call crafting from an event, use the plugin command, and set the category to the one you want to call. If you want it to call the category select menu instead, leave that parameter blank in the plugin command.

Let me know if you have any other issues.

~Ramza

(2 edits)

Hello, pls help.

In the crafting window, I cannot change the quantity of an ingredient more than one... How? I am using the mouse(computer) and probably deploy on android, so the right arrow key cannot be used.

I might be able to get the scroll wheel to work for that, but I don't think I can get the MZ mouse quantities thing to work there.


I'll see what I can do.

Is there a way of making Failed crafting give you some other result instead?

For example:

Making Bread will result in Burnt Bread instead of Bread when crafting fails.

(1 edit)

All recipes have a failure item, and a soft failure will give the failure item out. It's one of the parameters on the recipe when you make them in the plugin.

There's also an option to hand out the failure item as if it were the successful craft .

(Congrats! You made <Burnt Toast>)

Edit:

The failure item stuff is at the end of the ingredients object, where you'd put in the four ingredients.

Deleted 331 days ago
(1 edit)

Sorry I think I'm going to request a refund for this as it is not working with my particular setup. Level up messages result in a crash.

Sorry to hear that and I wish you luck.

If you wouldn't mind posting the error so I can have a look at it to fix it?

~Ramza

(2 edits)

From Recipe:

From normal craft ui:

Oh and I noticed 2 features that could greatly improve the feeling of the crafting UI.
1: Being able to remove ingredient from a slot when there is no clear button present
2: Use last ingredients button which would fill the slots with appropriate ingredients, so bulk crafting is much more manageable.

Okay, I found the cause of this in MZ.

For some reason, the functions for the level up common event, the immediate code box, and the function that gets the level up string text was not working. Those functions are in the Core plugin, and the MV version of the plugin has no issue calling them, but the MZ version had an issue where those functions we simply not available to the scene.

This can be corrected in your copy of the plugin by adding the following lines to the bottom:

Scene_Crafting.prototype.getLevelUpString = function(){
if (Ramza.CSParams.showLevelUpMessage){
for (i = 0; i < Ramza.CSParams.CategorySpecificLevelMessages.length; i++){
if (Ramza.CSParams.CategorySpecificLevelMessages[i].CategoryName != this._category) continue
var spec = i
}
var text = (spec != undefined) ? Ramza.CSParams.CategorySpecificLevelMessages[spec].LevelUpText : Ramza.CSParams.defaultLevelUpMessage
spec = undefined
var output = text.replace('%n', this._category)
var catLevel = eval("$gameParty._craftLevels." + this._category)
var output = output.replace('%l', catLevel)
var output = output.charAt(0).toUpperCase() + output.slice(1)
return output
}
};
Scene_Crafting.prototype.getLevelUpCommonEvent = function(){
for (i = 0; i < Ramza.CSParams.CommonEvents.length; i++){
if (Ramza.CSParams.CommonEvents[i].CategoryName.toLowerCase() != this._category) continue
return Ramza.CSParams.CommonEvents[i].CommonEventId
}
};
Scene_Crafting.prototype.getLevelUpEvalCode = function(){
for (i = 0; i < Ramza.CSParams.CommonEvents.length; i++){
if (Ramza.CSParams.CommonEvents[i].CategoryName.toLowerCase() != this._category) continue
return Ramza.CSParams.CommonEvents[i].ImmediateCode
}
};

Probably by the time you read this, I'll have also uploaded the fixed version to the main page again.

(3 edits)

I noticed it as well, but I also tested it and I think it's because MZ uses newer nw.js which also works on newer chromium and probably newer ES standard, and the Crafting System plugin is overwriting the Scene_Crafting class from the core plugin.
That is also a lot of redundant code. Scene_Crafting is almost exactly the same between the two.
I literally removed whole Scene_Crafting class from the core and the plugin is working fine. Reverse (Moving Scene_Crafting class to the core and removing it from this plugin) also works.

Yeah, Scene_Crafting in the core plugin is more or less copy-pasted from the MV version of the plugin. Originally there were separate versions of the plugin for MV and MZ, and I merged them together to create the abomination we have now, a Core plugin, which mostly provides the framework for the MV and MZ plugins, and the MV and MZ plugins, which provide the plugin commands, plugin parameters, and window drawings for the scenes, since that was the major difference between the two engines.

That's also likely why your description text is in a weird place in the recipe list scene. MZ had a bunch of different ways that the scene could've been drawn (help window on top, help window on bottom, touch buttons on top, button input window on top, etc) depending on which Visustella Settings you had enabled, or whether or not you were using those plugins. I probably missed a specific set of those choices when I was ensuring the plugin worked with MZ, and prior to the CS_Core split, that plugin didn't work at all in MZ.

Hello! I am getting an error "TypeError – Cannot read property 'result' of undefined" when I try to craft something using an ingredient with the  <UNCONSUMABLE: success> tag. Without the tag everything works fine.

This is the error log:

Interesting.

I'll look into the error in a bit and get back to you. In the mean time, what happens if you enable the plugin function to have soft failures? Does it still error if you use the same recipe? That line specifically is for when soft failure is disabled, while a similar thing happens when it's enabled, it's possible the error is only happening on that one function.

~Ramza

Thanks for the quick reply! I've tried it out on a fresh test project with all the options on default, and it's still happening.


Hello.

I've tried to reproduce this and I can't seem to cause it to cause this error on my test project. In all cases, I tested recipes which only used 'items' as ingredients, no weapons, or armors. I tried where the first ingredient in the recipe was unconsumable, and also where the second was unconsumable. I also tried with the independent items patch and ItemCore turned on and off. In all cases, the expected items remain in the inventory, and the other items are taken as normal, with no errors thrown or crashes.

Any more insight you can provide to help me track this down more?

I tested a bit more, and it looks like this only happens when *all* items in a recipe are marked as unconsumable. As long as at least one item is consumed, everything works fine.

(For context, I am using the system for an investigation-type scenario where you get the different clues as items, and then you can combine them to create new clues. So I've been marking all the "ingredients" as unconsumable, because you'd still have them after "analyzing" them.)

Alright, I can work with that. The function that removes the items from the inventory after a successful craft works from a list of the ingredients, and the list is only populated with the ingredients that were actually consumed, so if the list was empty, instead of just moving on, it tries to read an object that doesn't exist and fails instead.

I should be able to get that sorted out fairly soon.

I found the issue and have it corrected in the latest version. Please give that a download and make sure everything is working as it should be.

Hello there. I would really like to buy your plugin BUT isnt it possible at all to cook only when you know a specific receipe? You mentioned its not like other plugins, you can smash ingredients together and hope for the best. I want a specific story based receipe which wouldnt be good when the player can just do it randomly. Hope you understand what i mean. Thanks in advance ^^

Greetings.

Version 1.10 of this plugin added the ability to disable and enable specific recipes. This was different than locking or unlocking them.

  • By default, all recipes are locked, and enabled.
  • When a recipe is crafted the first time, it is unlocked.
    • This allows it to show on the preview window if it is enabled, and allows the player to craft it directly from the recipe list menu if you have that.
  • There was already a plugin command to unlock a recipe, which you could use in a common event, or something, to allow the player to preview some items, or see them in the recipe list by default. You could also use this to teach the player recipes via an event.
  • Version 1.10 added a command to 'lock' recipes again. This was technically possible to do already by messing with some script calls, but the plugin command allows you to 'hide' an unlocked recipe again. Why you'd want that, I'm not sure, but there it is.
  • Disabling a recipe prevents the player from making it at all. It will not show up on the preview window, and crafting it, even if the correct ingredients are given will result in a hard failure (as if the recipe doesn't exist).
    • There is no way to have a recipe start as disabled, but you can run the plugin command from a common event at the beginning of the game to disable recipes you don't want the player to be able to make right away.
  • Enabling a recipe simply un-disables it, allowing the player to make it again.

Basically you'd make the recipe like normal, and then in the game, before unlocking the crafting system, you'd run a plugin command to disable that recipe, preventing the player from making it. Then when you want them to be able to make it again, you can enable it using the plugin command.

You could also do something like requiring a 'recipe' item as part of the craft, which the player wouldn't acquire until they should know about it, and making that recipe not consumed on failure, so if the player jams it randomly into a craft it doesn't disappear forever.

Hope this clears it up for you.

~Ramza

Hello. I just bought your plugin. And I was wondering if it's possible to combine items from different catagories? (Example: Item x Weapon)

Hello there.

Recipes can contain up to four ingredients. Those ingredients can be either items, armors or weapons. The recipe doesn't have to contain only ingredients of the same type.

In order for those ingredients to be usable together, though, they do have to be tagged to be usable in the current crafting category with the validCats note tag.

(1 edit)

Ok. I'll try that. Thx

(+1)

Hey. Just tried what you said, and wanted to say it's working now. Thank you again.

Sorry, I'm asking again. I set various settings and added two new ones in the Recipe ListCraftTypes But when testing, it prompts Invalid left-hand side in assignment

Hello.

I believe the issue here is that your craft category has a '/' in it. I might also think it could be the non-latin alphabet, but I was able to reproduce the problem just by creating a recipe that used a category with a '/' in the name.

The problem comes from the function which takes the string and turns it into a property of the $gameParty._craftLevels object. Unfortunately, properties like that cannot have a '/' in their name, so it causes the crash.

Originally I thought this might have been because of the way I was defining them, but I tried it the 'correct' way, and it still caused the same crash. Unfortunately, there is no way to correct this without redefining how those properties are created and called back later. 

The best thing I can suggest is to use a category name that doesn't have a '/' in it.

~Ramza

Hi, I purchased your plugin and then I read your plugin description. Probably because of my bad English, I still don't know how to add new CraftTypes. Can you give me a detailed example?

The craftType window is a combo box.


That means from that dropdown, you can select one of the pre-existing craft types (alchemy, blacksmithing, cooking), or you can type a new one in the box. By typing a new one, the recipe now belongs to that craft type.



So just type the name of the new crafting type in there. To make any more recipes for the new type, make sure the name is exactly the same for each one, same capitalizations and everything. Also make sure to use the correct craft type name when setting ingredients via note tags.

~Ramza

Hello. I recently bought this script. Do you know why I am getting an error $Datas is not defined. I followed the tutorial and it seemed to only happen when I am putting in the base ingredients. I have it on the items DB etc.

Hello there.

Without seeing the full error message, I can't be sure what's causing it. $Datas by itself is not something my plugin (or any other) is likely to be calling.

When you get the error, open the console (f12) and click on the console tab at the top, and then take a screenshot of what you see in that window, and paste it in a comment here. Also, I'll need to know what you're doing when the error comes up. Is this happening when you click test play? When you load a save file? When you open the menu? When you try to go into the crafting menu scene? What you call a plugin command? These are all important things I need to know to try to track down the problem.

My initial thought was that maybe you weren't running the CraftingCore plugin, but I realize now that if that were the case it would give a very specific crash message before loading at all.

Also, if you could post a screenshot of your plugin manager (or multiple if you have too many plugins to show in one screenshot), just so I can confirm load order and look for some possible incompatibilities, that would help as well.

~Ramza

Thanks for the reply. It was my error last night. The error only occurred when one base ingredient is placed.I don't know why I was only using one ingredient lol. But  I got it working now with two ingredients instead of one. Here are the error codes though. It was a fresh project. The plugins were just your Core and the crafting system.

Ah, yeah, that'd do it.

The scrip expects at least two ingredients, so it doesn't have a failsafe check for when there's only one in a recipe. For the first two ingredients in a recipe, it checks each item to see if they are an item, weapon, or armor, and then checks $dataItems, $dataWeapons, or $dataArmors depending on what the item was. This is where it adds the actual ingredient item to an array, so it checks the database for that.

The third and fourth ingredients have a check where if they don't exist, it skips that part and doesn't load anything. But since recipes require at least two ingredients, the second ingredient isn't checked in that way.

~Ramza

hi Ramza I am new to RPG maker just bought your app followed your loadout - any others I added I may be doing something stupid so please tell me but it will not work I get two different errors I will attach an image if I can to show you if I use your loadout I get a stack error and game won't launch but if I turn off your cs core it will launch but when I click on the crafting menu it crashes I have spent about 5 hours trying to figure this out and has stalled any progress on making my game so if you could help that would me great!

Hello there.

For these errors, can I get you to open the console and provide the text it shows there?

Press f12 after the crash happens, and click on the console tab. It should should show more important info about where the error is happening. 

Without that extra info, it will be very difficult for me to pin down the cause of the error, as both messages aren't very descriptive on their own. One thing you could try would be to disable the independent item patch and ItemCore and see if that clears the error. The info on the patch does state to make sure itemcore is configured in a very specific way, and if you haven't done that, there would be issues, possibly the stack error.

The crash when you disable CS Core and try to enter the command on the menu is because without the CS Core plugin, that command doesn't know what to do, and the functions it calls don't exist. 

~Ramza

Ok here it is thank you for the fast response and I hope you had a good Christmas


Okay, so.

You've got a couple of things going on here. First of all, the stack size error is causing the crash, but you're getting tons of errors from other MZ plugins in your project before that, which will cause you a bunch of problems later.

Taking a better look at your first screenshot, combined with these messages, it appears your project started in MV and was moved to MZ, but wasn't migrated over properly. That first error message about the registering plugin commands is telling us that function doesn't exist - that's a problem because that function is an MZ only function, and lots of plugins use it to allow you to use their plugin commands in the engine. All features of the game engine come from the core plugins for MZ/MV, and if you're missing a core function like registering a plugin command, your core plugin files are missing this function, and the only way I could figure that this could happen was if you had originally started this project in MV and moved it over to MZ.

If your migration had been complete, those first bunch of error messages wouldn't show for the VisuStella plugins, or for my own. To fix this, you need to make a fresh new project in MZ, then go to the folder it is saved in, then copy the files from the js folder into your old project, and overwrite all of the old ones. Additionally, you probably also need to copy the libs folder from inside the js folder into your own project's folder as well, to make sure that effekseer and nwjs and a few other things the project uses are using the MZ versions.

I caught this not only because of the errors, but your original post contained a screenshot of your game menu screen in the background, which looks like the MV menu, and the game windows in the original screenshot both have the MV project icon in the top corner, not the MZ one.

Update your core files in the way I have explained, and it should stop those errors. If your project isn't very far along yet, you could also start a brand new project in MZ and go from there, if it seems like it would be less work.

The stack call error is happening because you're using version 1.00 of the Ramza_CraftingSystem_MZ plugin. I presume you took this file out of the plugin demo, as it shouldn't be available for download anywhere else. When I released version 1.10, I split the plugin into two parts: the core, which you have, and the platform plugin. The platform plugin you're using is from before the split, so line 1910 in the core plugin is calling the same function from the platform plugin, which is calling the core plugin, and repeating forever until it crashes. I haven't updated the plugin demo project since the initial release though, so the demo itself still works, but trying to use the plugin from the demo in your own project would fail.

Technically disabling the core plugin would stop the stack error, but it causes a different error when going into the scene from the menu because of a bug in the version 1.00 plugin that I fixed in a later release. 

Download the latest version of the plugin from your library here on itch, and put it in the folder instead of the 1.00 version you currently have. And that error should stop as well.

Note: if you don't update your core files as outlined above, you will find that most MZ plugins will not work at all. Most won't load at all, and some will outright crash the project when you try to start it. 

~Ramza

ok remade game from scratch i can open menus now still got one error but game is playable so I will call that a win thank you for all your help

Greetings Ramza. I have the crafting system plugins for MV, but I've been considering porting my project over to MZ. I am wondering if I'll need to purchase the MZ version separately from the MV.

Greetings.

You will, unfortunately, need to purchase the MZ version separately. Despite the fact that they both use the same core plugin, and extensions, the actual plugin for each version is different. Unfortunately, because of the way I made the MZ version on here, making one version free when you already owned the other wasn't doable at the time, given the work put into porting it over, and changing it after unifying the plugins to use the same core would be doing a disservice to people who have already bought both versions.

Right now though, it is heavily discounted, and keep in mind that buying any of my plugins allows you a perpetual license to keep using them in whatever project you want.

Also, I haven't tested this at all myself, but it's also likely that the FOSSIL plugin might allow you to use the MV version in MZ as well. The majority of the differences between the two plugins were menu and window based, and FOSSIL tends to handle those kind of changes pretty well without a specific patch being needed, so maybe you could also look into that as well if you're hesitant to buy the MZ version. Additionally, if you did this, you could also use FOSSIL to make use of ItemCore to use a hopefully more robust implementation of independent items in your MZ project, because my little patch does what it needs to, but it cuts out a lot of the other stuff ItemCore provided

~Ramza

(+2)

Hey Ramza! No bugs or anything, I just wanted to send you a heartfelt thank you for making this. This plugin, specifically along with your unique item patch, is making it possible to make *exactly* the game I wanted. Will be following and supporting your work in the future. :)

Hey thanks for the positive feedback :)

You have no idea how much anxiety I just felt, waking up to an email that someone made a post, and then logging in to see it was the same guy who just bought something the previous day. I was like "Oh.... oh no, what did he find that everyone else missed so far?" XD A real weight off my shoulders to see this instead of yet another bug report :)

A look forward to seeing what you can do with the system, my dude!

~Ramza

(1 edit)

Hey Ramza, I...have no idea what happened, I'm hoping you can help. I was testing some new crafting recipes and on the crafting screen, the ingredient select screen is...gone.


I've tried deleting and re-installing your plugins, and turning off everything except your plugins to test for conflicts with any of my others (the visustella suite), and this happens no matter what I try. But the potentially weirder part is that it exists somewhere, because you can still select the items, see?

and otherwise it works great! Because of this I thought it might be related to screen resolution, but I get this result even when I set it back to the default settings. Any ideas? I'd be happy to provide any other info you might need.

Edit: It's a conflict with Visustella's Core Engine (Which for some reason I didn't think to turn off in my testing) Probably one of the UI layout settings that's messing things up. I'll update again if I can figure out which setting needs tweaking.
(+1)

That window should be drawn in a way where it starts at the bottom of the category window. I might've messed something up when I was 'fixing' the window in a previous update though.

Try disabling the category window from the plugin parameters to see if the window magically comes back. I'm not looking at it just this minute, but I recall having to mess with some of the window positioning for various iterations of the Visustella Menu layout, and I may have missed the specific layout you're using. Give that a try and see what happens.

-Ramza

Hey, sorry friend. I disabled the category window, and that just removed the item/weapon/armor/clear bar (as I suspect it's supposed to) but nothing came back. All my futzing in the visu core plugin (version 1.41) has only made things worse - I deleted the title menu entirely a few times, and then found an option that removes everything except the result menu from your crafting screen (disabling overlays).
It's obviously not an emergency, I can work on plenty of other things for awhile but I'm out of my depth. If you would give it a look the next time you have some time, I would be forever grateful. And thank you for your quick responses!

(+1)

See, the interesting thing about this is that your screenshots seem to show a layout style that I was unable to reproduce. I have an idea what's going on here though, so I'll take a look in the next couple of days and see if I can fix it.

Your layout is different than what would normally show with the Visustella defaults enabled, namely, the key info window should show up at the top of the scene, but since it appears you have the little touch button thing disabled, it put it at the bottom instead. I wanna say that the reason that one window is not showing up is because it's actually being drawn off the bottom of the screen because it's Y position probably based on the bottom of that key input window. Although since this display code was mostly unchanged between the MV and MZ versions of the plugin, and that window doesn't exist on MZ, that actually seems kind of unlikely.

It could also be that it's being drawn underneath the item slots and preview windows instead, but the VS plugins make it so that windows drawn on top of each other can be seen through the semi transparent windows, which doesn't appear to be the case in your screenshots.

In any case, once I can reproduce the problem, fixing it should be pretty simple, I think.

~Ramza

Hey Ramza! Sorry to bug you again, but I have another problem.  Got it to show up in game without crashing (new game was the trick!), got ingredients to show up in the crafting window (yay!), but when I actually craft something it crashes.  Is there a note tag required to make a successful item?  I am not seeing one in the tutorial.

(1 edit)

Hey there. 

I'd need to see the error message/stack to know what's causing the crash. Generally if it gets that far, the only way I'd think it would crash is if the item you set the recipe to give you doesn't exist at all, or maybe a failure item. It could also be that your failure % chance formula is returning something weird, so it can't do the math to see if you succeeded or not, and crashes because of that.

Double check your recipe to make sure that it has a valid result item type and id. and disable the failure chance plugin parameter to see if that's causing it. If it works then, you can look at your success rate formula in the plugin params as well. 

Note that if you turned off crafting exp, the default formula used the current crafting level in it, so if you left the default formula that's probably where your crash is coming from.

Edit:

If you happen to be using the very latest version of the plugin (at least as of the time of your posting this), the issue could've also been that the success rate text was trying to change color using a function that no longer exists in RMMZ. I corrected that in an update I just uploaded a short while ago, so give that a try too.

Hey Ramza! I love the look of this plugin, but I'm getting an error whenever I try to call the crafting system.  What am I doing wrong?  I think I am misunderstanding something.  

(1 edit)

Hello there.

I'm sorry you're having this issue. It looks like the crash on line 5765 is checking $gameParty._lockedSlots to see if an ingredient slot is locked or not, but that object is not defined (yet?) in your project.

The reason is likely that you are loading an old savegame from before you imported this plugin, as that object is defined when the plugin is loaded, but the older savegames won't have it stored in them.

You can get around the crash by loading the save, then opening the console (f12) and typing $gameParty._lockedSlots = [false, false, false, false]. It is likely, however that you will continue to have problems with the scene beyond this if you continue to use the old save game.


Edit: Also worth noting is that calling the crafting scene from a plugin command apparently has an issue where the category window stays up in the middle of the screen. I fixed this in the MV version, but haven't had a chance to port the changes over to the MZ version. I'm working on trying to merge to code of both plugins so that I don't have to update each one individually. I'm not sure how that'll look, or when it can be expected, but it's coming.

Ok.  I will start a new game then to test.  Thank you for the great and fast reply!  I can't wait to get this working in my game as it looks so awesome.  Keep up the good work, bro