30 December 2008

Final Fantasy Mystic Quest Battlefield System Tutorial

FFMQ Battlefield Demo
Notice: As of 12 November 2009, this entry has been modified for use with RM2K3 (v1.08). It should be easy to adapt for earlier versions or RM2K. A demo is also available (as requested by Drake) from the panel on the right.

This tutorial teaches how to set up a multi battle system similar to the one used in Final Fantasy Mystic Quest, where you can clear out certain areas (represented by crossed swords in the game). It's a simple method that can easily be adapted for your game.

Knowledge Base

  • Common Events
  • Switches
  • Variables

Variables

Set up 3 Variables: Randomize, Num Battles and Battles Left. In this example, the variables are set to 1, 2 and 3 respectively.

Common Events

We will only need one Common Event for this (set up in the Database). Let's call it "Battle Check" and set its "Trigger" to "Call".

In the "Events Conditions":
  • Create a Conditional Branch (with an Else Handler) to check if the variable "Battles Left" is set to zero.
  • Under the Conditional Branch, create a message stating that the monsters have been cleared out.
  • Change the Switch "Cleared Out 1" to ON.
  • Then, under the Else Handler, create another message to display how many battles are remaining. We do this by adding the variable switch, \V[x], where x is the number of the "Battles Left" variable (in this case set to 3).
<>Branch if Var [0003:Battles Left] is 0
  <>Message:Monsters cleared out!
  <>Switch Operation:[0001:Cleared Out 1] ON
  <>
: Else Handler
  <>Message:Only \V[3] more battles left.
  <>
:End
<>

The Map

On the map (where you'd like the multi battles) to take place, we'll need to create several events. For this tutorial we'll only use one battlefield event, but you can modify it for more than one battlefield event.

Events


Inn Event
The first is called "Inn" for this tutorial. This is so that you can save or restore HP in between battles. Set the "Trigger Condition" to "Action Key" and the "Event Layer" to "Below".

  • Create a message saying, "What would you like to do?" or something similar.
  • Show Choices, with the options set as "Restore", "Save" and "Exit".
  • Under the "Rest Handler", set the screen tone to all zeroes with a wait time of 0.3s, Complete Healing, create a message that all HP and MP have been restored, and set the screen tone back to normal with a wait time of 0.3s.
  • Under the "Save Handler", open the Save Menu.
  • For the "Exit Handler", just leave blank.
<>Message:What would you like to do?
<>Show Choices: Rest/Save/Exit
: [Rest] Handler
  <>Tint Screen:[R000,G000,B000,S000],0.3 Sec (Wait)
  <>Full Heal: Entire Party
  <>Message:HP and MP Restored.
  <>Tint Screen[R100,G100,B100,S100],0.3 Sec(Wait)
  <>
:[Save] Handler
  <>Open Save Menu
  <>
:[Exit] Case
  <>
:END Case
<>

Battle Event
The next event is "Battle 1" (or something else to your liking), which is where the battles will take place until the monsters are cleared out. Set the "Trigger Condition" to "Touched By Hero" and the "Event Layer" to "Below Hero".

  • Change the variable "Randomize" to a random number between 1 and 3.
  • Next we will create 3 Condition Branch, each with a different number from 1 through 3. This is to make random monster parties. For this tutorial, we'll use the default Monster Groups: Plains 1, Forest 1 and Desert 1.
  • In the first Conditional Branch, which is based on the variable "Randomize" being set to the "same" as 1, start a combat with Plains 1 being set, with the "Defeat Handler" set to "Execute Custom Handler".
  • Under the "Victory" condition, set the variable "Battles Left" to subtract 1, then call "Battle Check".
  • Under the "Defeat" condition, set a message to display the final score, using the \V commands for the values stored in the "Battles Fought" and "Battles Left" variables. Also create a "Game Over" command here.
  • Finally, create a new page and make the &quout;Event Conditions" so that the Switch &quout;Cleared Out 1" is ON. This way, once all the monsters have been defeated there won't be any more.

Do the same thing with the other two Conditional Branches, changing the monster party and increasing the value of Randomize each time. The full code should look something like this:
<>Variable Oper: [0001:Randomize] Set, Rnd [1-3]
<>Branch if Var [0001:Randomize] is 1
  <>Enemy Encounter: Normal, Plains 1
    : Victory Handler
      <>Variable Oper:[0003:Battles Left] - , 1
      <>Call Event: Battle Check
      <>
    : Defeat Handler
      <>Message: Final Score
      :       \V[3] left out of \V[2]
      <>Game Over
      <>
    :END Case
    <>
  : ELSE Case
    <>Branch if Var [0001:Randomize] is 2
      <>Enemy Encounter: Normal, Forest 1
      : Victory Handler
        <>Variable Oper:[0003:Battles Left] - , 1
        <>Call Event: Battle Check
        <>
      : Defeat Handler
        <>Message: Final Score
        :       \V[3] left out of \V[2]
        <>Game Over
        <>
      :END Case
      <>
    : ELSE Case
      <>Branch if Var [0001:Randomize] is 3
        <>Enemy Encounter: Normal, Desert 1
        : Victory Handler
        <>Variable Ch:[xxxx:Battles Left] - , 1
        <>Call Event: Battle Check
        <>
      : DEFEAT
        <>Messg:Final Score
        :  :\V[3] left out of \V[2]
        <>Game Over
        <>
      :END Case
      <>
    :END Case
    <>
  :END Case
  <>
:END Case
<>

Set the "Event Graphics" to whatever you want for the Inn and Battlefield.


Pre-Define Event
The final event is to pre-define the starting variables.

Make a blank event in one corner with 2 pages. Set the "Trigger Condition" to "Auto-Start".

Page 1
In the "Event Commands":
  • Change the "Num Battles" variable to "Other" then the number of battles.
  • Change the "Battles Left" variable set to 5 (although you can increase or decrease this amount according to your preference).
  • Change the Switch "Battle Setup" to ON.

Page 2
Change the Switch (under "Preconditions") to "Battle Setup" and make sure the "Trigger Condition" is set to "Action Key". That way it won't keep repeating the event.


Modifications

Since this is only a one multi-battle event, you could easily add more by adding more variables (Battle 2, Battle 3, etc.) and changing the command preferences for each.

Rather than having an autostarting event that predefines the variables, you could make it a "Call Event" instead. That way, you can call it after a victory rather than having to rely on a switch to toggle it on/off.

You could also add a reward after all the monsters have been defeated, such as gold or a "special" item.
Related Posts with Thumbnails
Template Design "Perfect World" by SkinCorner