Sie sind auf Seite 1von 4

Complete Materia System

Written by madriel222 on 10/27/2006.

This is an ongoing project of mine that will bring the Final Fantasy VII Materia System to an rm2k3 game
near you. If you seriously need to take a look at the coding, take a look at the demo of The Song of Elegin
for now, but I will create a project specifically for this tutorial in the very near future.

Method 1: Using Skill Scrolls and Conditions

Ok, first, you'll need a few things.


1 status condition (Leave everything blank, save for the name) for each Materia item.
1 Materia item skill scroll for each spell family (Thunder, Thundera, Thundaga.) Make this item infinite. (as
in how many times it can be used.)
1 Switch for each Character X Materia Items (We'll use Cloud as an example, I.E: CloudIce, CloudFire,
CloudThunder)
1 Variable For Each Character X Materia Items (CloudIceValue, CloudFireValue, etc.)
1 Skill to evoke the status condition stated above for each materia item
1 Variable to show how many Materias the party has.
1 Variable to see how many are equipped.
1 Variable per character to show how much materia they can
use. (Your discretion)
1 Variable per character to show how much Materia they're packing.

So say I had Cloud, Aeris, and Tifa. I, being extremely tired at the moment, make only four Materia Types,
Ice, Fire, Thunder, and Cure. That means I'd need, according to this system

STATUSES:
ICE
FIRE
CURE
THUNDER

Skill Scrolls (Materia)


Ice Materia
Fire Materia
Cure Materia
Thunder Materia

VARIABLES
CloudIceValue
CloudFireValue
CloudCureValue
CloudThunderValue
...(repeat for Aeris and Tifa.)
FireMateriaHave
IceMateriaHave
CureMateriaHave
ThunderMateriaHave
FireEquipped
IceEquipped
ThunderEquipped
CureEquipped
CloudMateriaLimit
AerisMateriaLimit
TifaMateriaLimit
CloudMateriaHave
AerisMateriaHave
TifaMateriaHave

SWITCHES
CloudFireON
CloudIceON
CloudCureON
CloudThunderON
...(Again repeat for Aeris and Tifa.)

Less then you thought it would be, huh? Now, at the begining of the game Set all Character Materia values
(These will determine the spells they learn) to 1.
We'll finish up here later

Now, we need to make a common event that is always on.


For the sake of pragmaticism, we'll make all the "MateriaLimit" variables a "limit" of 2 for now.

COMMON EVENT: MATERIA


[CODE]If Cloud Is in Fire Condition
:If CloudFIreON is On
Then
Cloud is already imbued with fire's magic.
Remove fire materia from cloud?
Show Choices: Yes/No
YES CASE
SWITCH CloudFireON OFF
Cloud gave up fire's magic.
Variable Fire Equipped -1
END
Else Case:
If VarFireEquipped is greater than or equal to FireMateria Have
Then
There's no Firemateria left to equip!
Else
IF variable CloudMateriaHave is equal to CloudMateriaLimit
THEN
Cloud can't equip anymore materia!
ELSE
SWITCH: CloudFireON
Cloud was imbued with Fire's Magic!
VARIABLE: FireEquipped + 1
VARIABLE: CloudMateriaHave +1
END[/CODE]

Repeat this for each of Cloud Materia's, then Aeris and Tifa.
At the end, have it cancel all Materia-related status. (The ones I told you to create.)

Now, the next common event...

MateriaLearning

[CODE]If CloudFireON is ON
Then
Memorize Skill Fire
IF CloudFireValue is greater than/equal to 2
Memorize Fira
IF CloudFireValue is greater than/equal to 3
Memorize Firaga
ELSE
Forget Fire
Forget Fira
Forget Firaga[/CODE]
(Repeat this for the rest of Cloud Materia and then Aeris, Tifa, and whoever else.)

Method 2: Using Common Items and Switches (COMING SOON!)

Recent Improvements:
---------------------------
-I didn't have this in here before, but I'll add it now. Each materia CAN gain its own EXP. You have to have
a battle event with a conditional branch that checks if each materia is worn. If it is, EXP is added to a
variable that tracks the materia's EXP. Of course, you would then need a common event that tracks the
EXP, levels up the materia accordingly, and changes the skills accordingly. An example of how this is done
(though not EXACTLY) can be found in my demo of The Song of Elegin, just look at the events labled
"Essences."

-"All" Materia:
This one can be a bit tricky, but is still possible. The trick is to make a copy of every skill in the database
that can be applied to "All." The only difference with these skills is that it damages all enemies (or heals all
allies) instead of the usual single target. At the beginning of every battle, set a variable called "All Value"
equal to the level of the "All" Materia. This step will have to be repeated for each "All" Materia equipped,
so make sure to make distincitions between each of them (whether by switch or variable, just track where
your "All Materia are). Because they are tracked, you know which of your "All" skills to add. This sounds
like a hastle, but only needs to be done once. You'll want to remove those skills that are affected and replace
them with the "All" versions (I believe this requires a common event). Now (assuming you are using the
DBS, the process is actually simpler in a CBS), make a new page in your battle events with the trigger of
the hero (a page for each hero) using the battle command that corresponds to the equipped materia type.
The only code you need here is to subtract 1 from the variable "All Value" and then a conditional branch
that checks if "All Value" is less than or equal to 0. If it is, replace all of your "All" skills with the regular
ones. I realize this is a pain, and I will try my hardest to make an easier way. I know this is bug free,
however, and I'd rather be that than short.

-Individualized Weapon/Armor Limits on Materia Equipped:


This requires just one more page in your menu initialization event (so yes, it will be called). You have a
variable that tracks which character the menu is on, correct? If not, you may want to make that up now. The
page will look like this, really not hard.

[CODE]
Variable Operation [0001:HeroA WepMat] Set 0
*Repeat above step for other pieces of equipment and the other *heroes . This variable keeps track of how
many materia that *weapon can hold
Branch if Hero1 has Longsword equipped
Variable Operation [0001:HeroA WepMat] +X
*Where X is equal to the number of slots you want that piece of *equipment to have. Repeat this for each
weapon. Long, yes, but *not difficult
[/CODE]

After giving each of the weapons a value, all that's left is to show pictures accordingly and to restrict cursor
movement accordingly, each of which are basic CMS principles
-Materia Mastery
So what happens when that Fire materia gets to level 5 and is ready to spawn a lesser Fire materia? Pretty
easily actually! Just for reference, we'll be using level 5 as the level in which this particular materia is
mastered. So, the materia is gathering experience points and is about ready to hit level 5. BUT BEFORE IT
DOES, WE HAVE TO MAKE SOME PREPARATIONS! Before advancing the materia to level 5, display
a message stating that the materia has been mastered (or any other sort of indication that the mastery has
been completed). Then, add the new, blank materia (lvl. 1, so make sure to assign it a variable). Only after
this may we advance to level 5. Easy enough right? Here's the modification to the code:

[CODE]
Branch if Var[Fire1Xp] is equal to X [where X equals the experience to level 5]
Message: Fire Materia was mastered!
Change Items: Fire Materia 1 Add
Variable Oper [Fire2 Lvl] Set 1
Variable Oper [Fire1 Lvl] Set 5
[/CODE]

Easy enough, right? Anyway, it is highly advisable that you set a limit to the number of materia of each
type that the party can carry. Otherwise you will bury yourself in variable goo.

And that should do it. If you're about ready to take my head off for a small error, please know this was done
VERY LATE, so bear with me if there were small mistakes. As I said, I will continue to update this thread
as I get deeper and deeper into the system. I apologize for its incompleteness at the moment (I altered it for
my own game and so abandoned the methodology for the original materia system).

If you haven't realized it already, you pretty much are required to make a CMS for this system. Although I
can show you how to do that, this is meant to be an advanced tutorial and will assume that you know how
to make it already. If you are struggling with it, contact me and we'll get you started.

If you have any questions regarding it, either throw up a post here or feel free to get in contact with me via
PM or any of the messenger services found in my profile.

Until next time, this is madriel222, signing off

Das könnte Ihnen auch gefallen