The RPG Maker Resource Kit

RMRK RPG Maker Creation => General Tutorials and Eventing => RPG Maker General => Tutorials Database => Topic started by: Raven War on July 11, 2008, 05:33:34 AM

Title: [Event Tutorial]Spell Progession
Post by: Raven War on July 11, 2008, 05:33:34 AM
Raven War's Spell Progression
For RPG Maker VX and XP



Okies, basically, this allows spells that characters learn to 'level up' and become more powerful. My goal when tinkering around with this system was to find a way to eliminate spell lists for characters that look like this:

Code: [Select]
Fire     Blizzard    Thunder
Fira     Blizzara    Thundara
Firaga   Blizzaga    Thundaga

when you only ever use Firaga, Blizzaga, and Thundaga. Also, I created this system with the idea of more powerful spells costing the same amount of MP in mind, as its supposed to give the impression of one character learning how to use a spell batter, such as a healer learning how to heal deeper wounds using the same amount of Mp. It should make skill lists a lot shorter, as well.

There is also a demo attached for visual references.


Features


Preparation

All you really need to know is how to read and a basic way around the database, since I'll be explaining the rest as best as possible. You'll need each party member to have their own set of spells.(Basically, if two characters learn Fire, you'll need two Fire spells, one for each character.) You'll also need one variable for every spell a character learns(so, for the characters in the previous example, you'll need two Fire variables, one for each spell.) You'll also need one Common Event per spell. This may look huge, but most of it is just copy and paste after setting the system up for one character.


Tutorial

Step 1: Step up variables required. In this tutorial, we will only need one, which is 'Colette-Fire', as we are working with only one character, Colette, and only one spell, Fire. Though, if you were to have more spells and more characters, a good variable set-up may look like this, as this is the way I set it up:

Spoiler for Example:
001:====COLETTE====
002:Fire
002:Blizzard
etc
etc
====LLYOD====
010:Fire
011:Blizzard
etc
etc

Step 2: Created a spell for each level. For instance, Colette's Fire spell grows only once, evolving from level 1 to level 2, so I need only to make two spells. But, if I had a second character, Lloyd, I would need four spells, one of each level for both characters. A spell is only required for a character if that character learns that spell.

Step 3: Create a common event for each spell/character combination. For instance, I only have one character, Colette, and only one spell, Fire. Even though there are two Fire spells, a level 1 and level 2, I need only one event to control them. I fI added Llyod, I would need two events for the Fire spell.

Step 4: In the first line of the event, we will set up the EXP gain per cast for the spell. To do this, make a Control Variables and add any positive number to the variable chosen for the spell, in  this case 'Colette-Fire'. I would recomend 1, since it makes since that you would earn 1 EXP per cast, but you can have any amount. If I made a second event for Lloyd, I would use the variables 'Lloyd-Fire' so that Colette doesn't share EXP with Llyod, and I could also set up the variable so that Llyod earns 2 EXP instead of 1, making him level up with that spell faster.

Step 5: Now, set up a conditional branch with NO else case. Make it check if variable 'Colette-Fire' is equal to, say, 100. This means that when Collette's Fire EXP reaches 100, the spell will level up. For Lloyd, we could set it to 500, making him level up in the spell much slower than Colette, even though he earns more EXP per cast.

Step 6: Finally! The easy part! Just set a message to pop up when Colette levels up with the spell. In this example, we'll make it say 'Colette's Fire spell level increased!', or maybe 'Colette became more powerful using Fire!'.

Step 7: Now, make Colette forget the old Fire spell, then learn the new one using two Change Skills options, one for forgetting and one for learning. Make sure they are her spells, don't want to piss Lloyd off!

Step 8: Rinse and repeat. If you wanted Colette to have a third level to her fire spell, just copy and past the conditional branch below itself, and change the EXP requirement, and change the forgetting/learning part so that she forgets the level 2 spell and learns the level 3 spell.

Step 9: To finish off, make the level 1 Fire spell that COLETTE will learn call the common event we just set up. This will make it so that after the spell is cast, it will add EXP and check for level up. DO NOT add the event to level 2, unless there is a level 3. It won't hurt anything, it would just be pointless to have a spell earn EXP if it can't level up any further.

Step 10: An easy way to set this up for other spell/characters is copy and paste. Then, you only really have to do simple edits, rather than make whole new events.

Check the demo for a visual reference, and please post any bugs here. This event was designed in XP, so it will also work for that. I have tested the demo, so it should work perfectly.


Ending Notes
Credit me if used please(Raven War). Also, send me any projects this is used in; I'd really love to see where my system is being used. If used in a commercial game, my only requirement for usage is credit and a free copy of the full version game.

If this tutorial is already posted(I hope it isnt...), just delete this topic.
Title: Re: [Event Tutorial]Spell Progession
Post by: modern algebra on July 11, 2008, 10:53:46 AM
Hmm, this might be a useful system. I'll let it get some feedback here before moving it to the database.
Title: Re: [Event Tutorial]Spell Progession
Post by: Shadow Eye on July 11, 2008, 08:13:08 PM
Pretty interesting system. Only thing I find it lacking is that for a game like maybe Final Fantasy, where there are 30 different spells and 12 characters, it'll be a pain in the arse to set this all up, even with copy&paste. But for a project that has few spells, this could add a bit of originality to it. Good work, my friend.