Skills Research System Tutorial Find it illogical how suddenly, as soon as a character reaches a certain level, they are suddenly struck by the realisation that they have learned a new skill? Dislike forcing players to shell out massive amounts of their hard-earned gold pieces/credits/whatever the hell you use for currency? Well, rejoice, now there's an alternative. This system allows (or rather, forces) the player to expend MP in order to cause their character to actively muck around with the forces of mana, nature, the non-denominational supreme being, and other fun things in order to learn how to produce a spell effect. Alright, I'll warn you now, this takes a LOT of work, and you have to understand variables, fork conditions, switches, and a few other things. Still here? Good. Let's begin. We'll start with this basic example: Character 1 has one type of skill, five skills in that type, one of which can only be accessed when the character is above level 7. We'll say the type will be Fire, the spells will be named in SNES Final Fantasy fashion (Fire1, Fire2, and so on), and the hero's name will be Alex, the lovable default character everyone deletes from their game database before starting their game. First of all, we will give Alex a switch skill called "Research Fire". This skill will cost 0 MP. The switch it will activate will be called "AlexResearchFire". Now, in your Common Events, create one called "Research", "Learn", something like that. In that common event, create a fork condition saying, "If switch AlexResearchFire is on, do the following:" Now, within that, set it to: Change a variable to Alex's maximum MP; Change another variable to Alex's current HP; Divide the first variable by two; Compare the two variables. Now, set another fork condition within the first to, "If variable 2 is equal to or more than variable 1, set Alex's MP to decrease by variable 1, otherwise display the message 'Not enough MP to research' and deactivate switch AlexResearchFire" At this point, your common event should read something like this: <>If Switch(0001:AlexResearchFire) is ON <>Change Var: Var[0001:Max MP] (Set)-Alex's Max MP <>Change Var: Var[0002:Cur MP] (Set)-Alex's MP <>Change Var: Var[0001:Max MP] (/)- 2 <>If Var(0002:Cur MP) V[0001](>=) <>Change MP: Alex's MP V[0001] (Rem) <> :Else Case <>Message:Not enough MP to research. <>Change Switch: Var[0001:AlexResearchFire] Switch OFF <> :End Case <> :End Case <> Okay, this means Alex must be at half MP or higher to research, and it costs him half his MP to research something. Now, we must add in the chance of the research succeeding. To do this, we have a variable set randomly from one to three. (You can change the range later) Then, have a fork condition saying, If variable 3 is 1, continue; Otherwise, show message "Research failed" and deactivate switch AlexResearchFire. Now comes the research itself. This is fairly easy. Set six fork conditions, one within the other. Each will have an else case. The conditions should be, in order: Alex knows Fire1; Alex knows Fire2; Alex knows Fire3; Alex knows Fire4; Alex is level 7; Alex knows Fire5. In the else case of each that checks for a known skill, have it teach that skill and deactivate switch AlexResearchFire. In the else case or the one that checks Alex's level, set the else case to display the message "Alex's level is too low to learn additional Fire spells." and deactivate switch AlexResearchFire. For the match case of the Alex knows Fire5 fork condition, have it display the message "Alex has achieved full mastery of the element of Fire.", increase Alex's current MP by variable 1 (after all, he'd know if he can't learn any more and not waste his energy trying), and deactivate switch AlexResearchFire. Now, your code should look like this: <>If Switch(0001:AlexResearchFire) is ON <>Change Var: Var[0001:Max MP] (Set)-Alex's Max MP <>Change Var: Var[0002:Cur MP] (Set)-Alex's MP <>Change Var: Var[0001:Max MP] (/)- 2 <>If Var(0002:Cur MP) V[0001](>=) <>Change MP: Alex's MP v[0001] (Rem) <>Change Var: Var[0003:Chance] (Set)-Random(1 to 3) <>If Var(0003:Var3) 1(>=) <>If Alex==>Fire1 has Learned <>If Alex==>Fire2 has Learned <>If Alex==>Fire3 has Learned <>If Alex==>Fire4 has Learned <>If Alex's Level 7(>=) <>If Alex==>Fire5 had Learned <>Message:Alex has reached full mastery of the element of : :Fire <>Change MP: Alex's MP V[0001] (Add) <>Change Switch: Var[0001:AlexResearchFire] Switch OFF <> :Else Case <>Change Skill: (Alex==>Fire5) Learn <>Change Switch: Var[0001:AlexResearchFire] Switch OFF <> :End Case <> :Else Case <>Message:Alex's level is too low to learn additional Fire : :spells. <>Change Switch: Var[0001:AlexResearchFire] Switch OFF <> :End Case <> :Else Case <>Change Skill: (Alex==>Fire4) Learn <>Change Switch: Var[0001:AlexResearchFire] Switch OFF <> :End Case <> :Else Case <>Change Skill: (Alex==>Fire3) Learn <>Change Switch: Var[0001:AlexResearchFire] Switch OFF <> :End Case <> :Else Case <>Change Skill: (Alex==>Fire2) Learn <>Change Switch: Var[0001:AlexResearchFire] Switch OFF <> :End Case <> :Else Case <>Change Skill: (Alex==>Fire1) Learn <>Change Switch: Var[0001:AlexResearchFire] Switch OFF <> :End Case <> :Else Case <>Message:Not enough MP to research. <>Change Switch: Var[0001:AlexResearchFire] Switch OFF <> :End Case <> :End Case <> To change this to affect another character, just replace anywhere where it says Alex with the new character, and use another switch. To add more skills, simple insert a new fork condition within that of Fire5, and more the Fire Mastery message to within the deepest fork condition. This may seem like an incredible amount of programming for such a small effect, but hey, that just shows you care ;)