MZ - Skill Shop
A downloadable plugin
Ramza's Skill Shop
Currently only for RPGMaker MZ (MV Version coming soon!)
Overview:
Skill shop is a plugin which does exactly what it says on the tin - allows you to make a shop that sells skills to the player. It has support for multiple shops (basically limitless shops, in fact), each with their own available skills, and stock values for those skills. Each actor has a list of skills that they can buy, and a shop will only show them skills that are on their buyable skills list too.
With multiple shop support, the ability to add or remove skills to the shops list, and the ability to update, or change stock for those skills midgame, you can run the entire system off just one ever updating skill shop, or have different ones with different availability in every town!
Don't like the idea of it being an actual shop? You can also bind it to the menu and ignore a lot of the shop-focused settings. If it's bound to the main menu, you won't be able to set available skills, and stock will always be unlimited, so you can use this to mimic a skill learning system, or a talent point system instead!
Actors:
Actors have a list of skills available to them, set via note tags in their actor note box. You can also set skills available to buy on actor classes as well, and these will automatically be added to actors of that class, or removed from actors who change class away from that class. In addition to actor notes and class notes, there are 'global skills' which will be available to be learned by everyone, but you can also set a special note on an actor that stops them from learning these as well.
You can also add a skill to a specific actors list, or remove a skill from their list mid-game via a plugin command. You can use these feature to unlock more powerful skills after certain in game requirements are met, like killing a certain boss monster, as an example.
Actors can also have their access to learning skills from the skill shops disabled via plugin command. You can use this to prevent the player from wasting resources on an actor who will not stay in the party for very long, or for whom you do not want them to buy skills for just yet.
Shop Overview:
Shops have a set list of skills which they have available to sell. The initial list is set up when you first create the shop via plugin command, much in the same way that you must specify the stock for sale in an item shop.
Unlike an item shop, however, when you create a skill shop, you give it a unique name, or key, which you use to reference in game later on. An NPC that uses the same shop key as another NPC will have the exact same skills available and stock as any other NPC that uses that same key, and the values update between NPCs automatically. You can use this to indicate the same NPC traveling to different areas to sell you skills, or that all shop NPCs use the same 'warehouse' for their wares, or belong to the same company.
Making shops that have different keys makes an entirely new shop, with different skills available, and different stock. You might use different keys to make all skill shop NPCs have their own stock in each town the player visits.
In addition to a list of available skills, a shop can have limited stock for specific skills in their list. You can choose per shop if they have limited stock, and you can also choose which skills they have limited stock of.
You can add or remove skills from a shops list at any time during the game via plugin command, as well as adjust their stock for any skill they have. You can also set a skill to unlimited stock, or change it to limited stock via plugin command as well. Use these options to keep the stock of shops updated throughout your game, particularly if all shops use the same key, and are coming from the same NPC!
Skill Requirements:
Skill requirements prevent a skill from showing up in the list, or from being available to purchase unless their requirements are met. You set these requirements via note tag on each skill, and can choose to have no requirements at all if you like. Generally, requirements are not known to the player, by default, the plugin hides skills whose requirements are not met from the available skill list entirely, thought you can change this option in the plugin parameters. Regardless of whether the player can see a skill that does not meet its requirements, they will be unable to purchase it if those requirements are not met.
Skill requirements can cover a lot of things, from requiring a certain amount of party gold, to having a specific item equipped, to owning a certain key item, switches, variables, states, parameter checks, and having recruited specific party members, among other things. If a skill does not meet one of its requirements, it cannot be bought, and an optional non-descriptive message can be shown to the player telling them this.
Skill Costs:
All skills have a cost associated with buying them, which is set via note tag. Out of the box, you can have skills that cost a specific amount of gold, items, weapons, or armors, in any combination. The cost info window in the plugin will display as many of these costs as it has space to do, but you may run into issues if your skills cost too many different items. Costs are displayed to the player, so they will know if they are missing something.
In addition to the above default costs, this plugin has the ability to make use of special costs. Special costs refers to any cost that isn't one of the above four things. By tagging something as needing a special cost, you tell the plugin to look up a special cost in the plugin parameters, and use that for the costs of the item.
Setting up special costs is an advanced function of this plugin. Using the plugin parameters, you create a custom cost, give it a key, which you reference in the note tag so the plugin knows which custom cost to use, and then tell the plugin how to determine the cost, display the cost to the player, check that the player can pay the cost, and then pay the cost.
The plugin demo contains an example of doing this using a made up cost called JP, but you could do something similar with real costs that you get via another plugin, such as AP or SP from the VisuStella Plugin suite, as long as you can provide this plugin with the functions it needs to work them out.
Default Costs:
There is a plugin parameter that allows you to quickly set a default cost for every skill in the project. It has access to all of the same options as the note tags on the skills. If an individual skill has a cost note tag on it, it will not inherit these default costs, so keep that in mind if you set a default gold cost, for example.
Skill Stocks:
Since each shop can have a limited stock of each skill, it's possible a shop runs out of stock of a skill when the player buys it, or maybe it never had any stock of that skill to begin with? When a skill is out of stock, the player will not be allowed to buy it, and an optional message can also be shown to them to explain why.
Main Menu Bind:
But what if you don't want to use shops, you want your actors to just pay something and learn a skill right now, not having to go back to a town to do it? Well you can bind the whole thing to the main menu, too!
Couple things about doing it this way though:
- The main menu bind does not have a skill list, all skills can be bought (as long as their requirements are met, anyway)
- All skills always have unlimited stock.
- The menu bind does not have the ability to customize the text in the same way that the individual shop keys do - it only uses the default parameters for the messages it shows to the player, and the button names.
The best use for this is to mimic a talent point system, or something similar, where the cost of the skills available are some custom resource, like AP, SP, or talent points. You could also use it to be like a skill learning system, able to be called directly from the main menu, rather than having to go into a skill scene first. Keep in mind though, that you cannot curate the skills available for purchase on the menu bind, so if you intend to use the system as a skill shop as well, the menu bind will not be very useful as an additional system, at least, for now.
About the Demo:
The demo project included has some skills available on the default actors, as well as a couple of different shop npcs, and the associated plugin commands so you can see how to set up a shop, and then open it later.
The demo also includes everyone's favorite mascot!
The default parameters of the plugin file include an extra cost value for using JP as a special cost. This is set up in the Extra Cost List automatically, and will do nothing in your own project by default. The demo project has two options for making use of this JP special cost:
- The demo has a small patch plugin applied called fakeJp.
- This snippet adds two functions to the Game_Actor object, jp() and gainJp(x)
- jp() returns the value held in game variable 10 - change the value in this variable to change the number of Jp you have for this check.
- gainJp(x) changes the value of variable 10 by x.
- Alternatively, the demo also has FOSSIL, and a plugin entry for YEP_JobPoints, though it does not include the JobPoints plugin file.
- Copy + paste a YEP_JobPoints plugin file into the demo project inside the /js folder.
- Enable the YEP_JobPoints plugin from inside the plugin manager
- Disable the fakeJp plugin from the plugin manager.
Using either of these methods, you can get an idea in the demo of how special costs work. The functions added by fakeJp are used in the CheckCost, and PayCost functions in Extra Cost list, to set up JP as a valid resource to use to buy skills.
If you use FOSSIL, together with the YEP JP plugin, it will use these same functions to actually look at an actor's JP, and remove the JP that is paid to buy a skill.
You could do something similar using the AP and SP resources from the VisuStella Skill Learning plugin, if you own that, though you'd need to figure out the names of the functions to call for that on your own.
Help Documentation:
The plugin help documentation contains more information about how to set up and call a skill shop, as well as more in depth information on how to use the various plugin parameters. The plugin demo contains a helpful NPC who will also describe how to use the system from in game. The demo also contains several other NPCs who are set to do some example plugin commands. You can inspect their event commands to see examples on how to use the plugin commands to make, update and call shops.
Terms of Use:
By purchasing this plugin, you agree to the terms of use, outlined below:
- 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.
Note: While I will work to solve any compatibility issues or bugs found with this plugin, I will not be expected to assist in matters involving the following:
- Compatibility issues with a paid plugin that I do not own.
- Compatibility issues for plugins with obfuscated code.
- Troubleshooting what functions to call, or other problems associated with custom costs that are not bug related.
Purchase
In order to download this plugin you must purchase it at or above the minimum price of $5.99 USD. You will get access to the following files:
Development log
- Regarding an MV portNov 09, 2021
Comments
Log in with itch.io to leave a comment.
It's funny how this works with visustella's custom currencies and their own skill shop doesn't.
That actually is pretty funny, all things considered.
I'm sure if their plugin did support it, it'd be a little bit easier to implement than using them in mine, but it's good to know the framework I made for that works so well that it works with their custom currencies without me even trying to do that :)
This is easily the most versatile and feature heavy Skill Shop system I have ever seen for any RPG Maker. Deserves an award. Nice work.
I'm glad to hear you're enjoying it :)
Nice, can't wait for the MV version!