One of the staple aspects of the countless RPG Maker games that have populated the servers of the community is the experience system. With the built-in method of gaining levels from combat, and thusly gaining skills from level-ups, there has been little desire to deviate; this is quite a surprise considering the efforts game makers go to to create their own, often redundant custom battle and menu systems. Initiative is often lost in this community and simple alterations to the formulae that make an RPG can truly individualize the effort. Level-based progression is a pet-peeve of mine, particularly in MMORPGs - it has become a mandatory inclusion in the genre, despite it being flawed, tedious and over-used. Whilst in this tutorial I won't be dispensing with the level system, skills will be achieved independently from physical statistical progression. The model for this is the Final Fantasy IX AP system.
For those that are not familiar with the skill system in FFIX, ability points (AP) are gained after the battle much like experience points (XP), but are independent of each other. Some enemies reward high AP, but low XP, and naturally other enemies do the opposite. However, unlike the traditional XP used to gain levels, the player has some control over where his AP points are spent. It is the hero's equipment that determines this; weapons and armour are imbued with spells that are learnt when enough AP points are earned. There are two steps to the tutorial - collecting the AP points, then applying them to the equipment.
|
|
The first step is straight forward. We need to identify when a battle has been won and add to the hero's AP tally. Enter Alex, our intrepid adventurer. He's back in his latest outing, AP Treasure Hunter. With random battles, though, it's not always easy to know whether Alex has been in combat. There are a number of methods to do this, but the most practical is to do continuous XP checks. For this we need a common event with a parallel process trigger. The following is the appropriate code to identify whether Alex has gained XP.
The code works by setting a two variables to be Alex's XP at different times. If the two are different then Alex has gained experience, and so the AP code should be initialized. We will still need to define how much AP each battle is worth, which is best achieved on the Monster Group pane, in the battle events box. All that is needed is a variable, which we'll call Alex AP gained, set to the amount we think the battle is worth, with the Trigger being Turns Elapsed 100x. This repeats the code every 100th turn, starting at the 0th turn - most adequate for us.
Now we need to apply these AP points to the equipment. Let's say that Alex is carrying a Dragon Sword, a weapon forged with dragon's breath. This sword has the unique property that it grants the user the spell "Fire" once he has earned 20 AP points. The amount of AP required for earning spells is best set up when the game begins. We'll add a new common event, triggered by call, that prepares the spells before the game. In this case we're only dealing with Fire, but a few others have been added to illustrate the usage, so the common event will only read
Ensure that this event is called at the beginning of the game.
Next we'll need a third common event, again initialized only by calling it. This will calculate whether Alex has learnt a new spell from his experiences. First it checks what items he's carrying, then calculates whether he has earned enough AP to master the skill and finally grants him the ability, if he's met the requirements. This is the Alex Spells event called in the first part.
That's all there is to it. The methods in this tutorial are the most straight-forward, and consequentially it does require a spiced up front end instead of these ugly messages displaying when skills are learned.