L¬L¬L¬L¬L¬L¬Fork Conditions Tutorial (by Ayruliné)L¬L¬L¬L¬L¬L¬ (note: for rm2k version v1.05) i. What is a fork condition? ii. How do fork conditions work? Part 1: The Switch iii. How do fork conditions work? Part 2: The Variable iv. How do fork conditions work? Part 3: The Timer v. How do fork conditions work? Part 4: Money vi. How do fork conditions work? Part 5: The Item vii. How do fork conditions work? Part 6: Hero Options viii. How do fork conditions work? Part 7: Direction ix. How do fork conditions work? Part 8: The Final Three x. Conclusion and other stuff L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬L¬ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ i. What is a fork condition? A fork condition is an event that allows you to make the game take a different turn depending on what your character (the player) has already done. You can make small changes - such as getting a different item, or large changes - such as a character living or dying, if you know how to operate fork conditions. This can be a powerful (and perhaps necessary) tool to avoid linearity in your homemade RPG. In this tutorial, I will try to explain all the ways that a fork condition can be used. In all, there are 10 main options for fork conditions, each of which can be used for a different purpose. How you use them in your game is, obviously, your decision. I can give you the key, but you must open the door. (Don't take that literally... I'm not giving out keys.) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ii. How do fork conditions work? Part 1: The Switch To use a fork condition, you must first decide the 'cause' before determining the 'effect'. The best example is the first option - the switch. Open the fork conditions event, and you will see a list of conditions. On the first page is: O Switch: _______________[...]- ____[v] O Variable: _______________[...]- O Set: _____[v] O Variable: ___________[...] __________[v] O Timer: ____[v] min ____[v] sec ____[v] O Money: ____[v] _______[v] For now, we will concentrate on 'switch'. Click the circle for switch, then press the [...] button beside the first box. You will be taken to a list of your game's switches. Choose one, and press 'OK' (for the tutorial, we will say you chose the first switch on your list, named 'ThisSwitch'). Back on the Conditions page, make sure the other switch box says 'ON', and make sure 'add ELSE case' is also checked, and press ok. Back on the 'Events Commands' box, you will now see: <> FORK Optn:Switch [0001: ThisSwitch] - ON <> :ELSE Case <> :END Case <> Now, you have determined the 'cause'. The second line down, with the '<>', is where you define the 'effects' of what happens if the switch conditions are met (In this case, what happens if Switch: ThisSwitch is ON). For example, lets say, if ThisSwitch is on, you recieve one of the item named 'fenix down'. Go into 'Add Item' and make it happen. Now, it looks like this: <> FORK Optn:Switch [0001: ThisSwitch] - ON <> Add/Remove Item:Fenix Down-> 1 Incr. <> :ELSE Case <> :END Case But what happens if Switch: ThisSwitch is not on? You define that under ':ELSE Case'. Lets say a sound effect plays. You click on the '<>' line under ':ELSE Case', and choose a sound effect. The event should now look like this: <> FORK Optn:Switch [0001: ThisSwitch] - ON <> Add/Remove Item:Fenix Down-> 1 Incr. <> :ELSE Case <> Play SE: Failure1 <> :END Case <> You have now completed a simple fork condition. However, perhaps you wish something to happen after the fork, something that happens no matter whether Switch: ThisSwitch is on. That's where ':END Case' comes in. ':END Case' means that is the end of the fork condition. Anything you plase after that will happen if Switch: ThisSwitch is ON or OFF. For example, you want the hero to jump up and down at the end of the event. Click the '<>' line after ':END Case', and make the appropriate move event. Afterwards, it will look something like this: <> FORK Optn:Switch [0001: ThisSwitch] - ON <> Add/Remove Item:Fenix Down-> 1 Incr. <> :ELSE Case <> Play SE: Failure1 <> :END Case <> Move Event...: Hero, Start Jump, End Jump <> This is a simple example of a 'Switch' fork condition... However, Remember the 'Add ELSE Case' that was checked on the Conditions list? Click on the '<> FORK Optn:Switch [0001: ThisSwitch] - ON' line, and press the space key to edit the event. Now, uncheck the 'Add ELSE Case' button, and press OK. The event will now look like this: <> FORK Optn:Switch [0001: ThisSwitch] - ON <> Add/Remove Item:Fenix Down-> 1 Incr. <> :END Case <> Move Event...: Hero, Start Jump, End Jump <> An event such as this would be useful if something extra happens when the switch is on, but without it, only what comes after (in this case, the move event) will occur. This could also be used as a parallel process event, if you have nothing after ':End CASE'. This way, it will not happen UNTIL the switch is turned on. As always, you will need to turn of the event using a switch or a variable. There is still more that can be done using just the switch option. For example, what would you do if you wanted something to occur if 2 switches are on? Or 3, maybe? The first thing you do is make a fork condition, as before, with 'Add ELSE Case' checked. <> FORK Optn:Switch [0001: ThisSwitch] - ON <> :ELSE Case <> :END Case <> Now, you click the first '<>' line, meaning that you choose what happens if Switch: ThisSwitch is ON. This time, however, make another fork condition, occuring if a second switch is on (In this case, it is the second switch on the list, 'ThatSwitch'). The event will now look like this: <> FORK Optn:Switch [0001: ThisSwitch] - ON <> FORK Optn:Switch [0002: ThatSwitch] - ON <> :ELSE Case <> :END Case <> :ELSE Case <> :END Case <> Here is where it can start to get tricky... listen closely. The first '<>' like is where you decide what happens if both Switch: ThisSwitch and Switch: ThatSwitch are on. The second '<>' line is what happens if only Switch: ThisSwitch is on, and Switch: ThatSwitch is off, because it is after the Fork determining that ThisSwitch is on, but it is in the else case of the fork determining that ThatSwitch is on, therefore meaning in this case, ThatSwitch is off. The third '<>' line is what happens if neither switch is on, and the final '<>' is what will happen after the forks no matter what. ...But what if you want something to occur when ThatSwitch is ON, but ThisSwitch is OFF? You add another Fork Condition in the ':ELSE Case' of the first fork (meaning that it occurs if ThisSwitch is off). It would look like this: <> FORK Optn:Switch [0001: ThisSwitch] - ON <> FORK Optn:Switch [0002: ThatSwitch] - ON <> :ELSE Case <> :END Case <> :ELSE Case <> FORK Optn:Switch [0002: ThatSwitch] - ON <> :ELSE Case <> :END Case <> :END Case <> Following this pattern, you could make an event look for many, many switches, to check which of them are on or off. As you can no doubt see, you can make a game very non-linear with only one option of a fork condition. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ iii. How do fork conditions work? Part 2: The Variable However, there are still many options to explore. Next on the list is the Variable. Return to the Conditions list, and you will see this page again: O Switch: _______________[...]- ____[v] O Variable: _______________[...]- O Set: _____[v] O Variable: ___________[...] __________[v] O Timer: ____[v] min ____[v] sec ____[v] O Money: ____[v] _______[v] This time, click the circle next to the 'Variable' option. As before, Click the [...] button next to the first box to decide which variable you will use. For an example, we'll use the first variable on the list, named 'ExampleVar'. Choose the variable, and press 'OK'. Back on the conditions list, you'll notice three sub-options under Variable. O Set: _____[v] O Variable: ___________[...] __________[v] (The 'Set' box should say 0, and the third box will most likely say 'Same' now that you have the Variable option chosen) The 'Set' box is where you choose a number for it to relate to (how it is compared to the variable is decided by the third box)... for now, we'll make this '2'. On the other hand, you could choose the circle next to the second 'Variable' option. This would mean the number is decided by what that other vairable is at... If you used this, you could quite possibly connect all the variables, and form an endless circle... but for now, we'll stick with the 'Set' option. In the final box, you will see a list of words: "Same, Above, Below, Bigger, Smaller, Others'. These determine how the fork condition relates the state of the variables... Here is what they mean: Same: This means the variable must be an exact match of the number chosen... so in this case, the fork condition is that the Variable: ExampleVar MUST be 2. Above: The Variable must be equal to or greater than the chosen number. In our example, the condition is if ExampleVar is 2 or above. Below: The Variable must be equal to or less than the chosen number. In our example, the condition is if ExampleVar is 2 or below. Bigger: If the 'Bigger' option is used, the Variable must be greater than the chosen number. In this case, the variable would have to be more than 2. Smaller: This means the Variable must be less than the chosen number. In this case, the variable would have to be less than 2. Others: 'Other's means the variable must be anything other than the chosen number, in the example, anything as long as it isn't 2. For now, choose the 'above' option, make sure 'Add ELSE Case' is checked, and click OK. On the Events Conditions box, it should show: <> FORK Optn:Varbl[0001:ExampleVar]-2abov <> :ELSE Case <> :END Case <> This is almost identical to the Fork Condition with the 'Switch' option. The first '<>' line is if the Variable: ExampleVar is 2 or more, the second '<>' line is if it is not, and the third '<>' line is what happens in the end in either case. Variable Forks are used the same way as Switch forks with the addition of the 'Same/Above/Below/Bigger/Smaller/Others' option, so if you need further help on how this works, refer back to the Switch section. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ iv. How do fork conditions work? Part 3: The Timer Return to the Conditions screen, and you'll see this page again: O Switch: _______________[...]- ____[v] O Variable: _______________[...]- O Set: _____[v] O Variable: ___________[...] __________[v] O Timer: ____[v] min ____[v] sec ____[v] O Money: ____[v] _______[v] This time, click the circle next to 'Timer'. In the first box, you determine the number of minutes, and in the second, the number of seconds. In the third box, you choose whether the it should occur when it is 'above' or 'below' the time you determined. For now, make both minutes and seconds set to '0', and the condition 'below' - this will make it so that it will occur when the timer runs out. To make this particular scenario work, uncheck 'Add ELSE Case', and press OK. You will see: <> FORK Optn:Timer 0m.00s.less <> :END Case <> Make it a parallel process event, and whatever you put within the fork option will only occur when the timer runs out. An example of using a timer with an else case is a door that only opens when the timer reaches a certain time. On the first '<>' line, you would put a teleport event, and on the second '<>' line, a sound effect such as Failure1, and perhaps a message saying the door won't budge. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ v. How do fork conditions work? Part 4: Money O Switch: _______________[...]- ____[v] O Variable: _______________[...]- O Set: _____[v] O Variable: ___________[...] __________[v] O Timer: ____[v] min ____[v] sec ____[v] O Money: ____[v] _______[v] By now, you probably know the fork conditions screen well. The final option on the first page of conditions is 'money'. Click the circle next to the 'money' option, and then choose an amount... 100 is fine for an example. On the second box, you choose whether the player needs to have 'above' that amount, or 'below' that amount. When you press OK, the page will look something like this: <> FORK Optn:Money 100abov <> :ELSE Case <> :END Case <> As always, the first '<>' line should contain what happens when you DO have 100 gold or more, and the second '<>' line is what happens if you don't. The third is what happens at the end, regardless of which option is encountered. The money fork condition can be used to make your own shop. You could start with a 'Show Choice' event as a list of items, then have fork options under each choice to make sure the character has enough money to buy the item. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vi. How do fork conditions work? Part 5: The Item Now, we finally reach the second page of conditions. Open the Fok Condition event, and click on the '2' tab at the top. You will now see a new list of options: O Item: ______________[v]- _______[v] O Hero: ______________[v] ___________________________[...] O Event: ______________[v]- ___[v] Face Dir O Vehicle: _______[v] Ride O Started by Decision Key O Play BGM Once We'll start at the top: Click the circle next to the 'Item' option. You will see that the first box is where you choose the item in question. As an example, we'll say you choose 'Fenix Down'. In the second box, you define the condition, by choosing 'Has it', or 'Doesn't have it'... I think these are pretty much self explanatory. Choose, 'Has it', and you'll get this: <> FORK Optn:Fenix Down Item Got <> :ELSE Case <> :END Case <> The first line is what happens if you have a Fenix Down, the second is if you don't, and the third is what happens afterword, as always. This Fork condition is useful in saving yourself from making extra switches or variables when you recieve an item. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vii. How do fork conditions work? Part 6: Hero Options Go back to the second page of conditions, and you're faced with this page again: O Item: ______________[v]- _______[v] O Hero: ______________[v] ___________________________[...] O Event: ______________[v]- ___[v] Face Dir O Vehicle: _______[v] Ride O Started by Decision Key O Play BGM Once This time, you click the 'Hero' circle, and you can choose options regarding one or more of your heroes (to do more than one, use the same trick explained in part ii). To begin, choose the hero you want from the first box. For the second box, click the [...] button, and you will be taken to a list of options: Is in hero party: This one is self explanatory. Name =: This could be used if you change your hero's name... the fork option is if his/her name is what you type, or not. Level: If your hero is at or above the level you determine, the fork option is recognized. HP: If your hero is at or above the HP you determine, the fork option is recognized. Special Skill: You choose from the list of skills, and if the hero chosen knows the skill, what you choose under the fork option will occur. Item: This is a useful option - the only way to check the hero's equipment, rather than the items in the inventory. Condition: You choose from the list of condition, and the fork condition happens if the hero you chose has that condition. After choosing one of the above options, something like this will appear in the 'Events Conditions' box: <> FORK Optn:Alex- Poison is in condition <> :ELSE Case <> :END Case <> The Hero option can be very useful in determining something about your characters... for example, if someone is dead, you don't want them to be able to talk. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ viii. How do fork conditions work? Part 7: Direction Back on the second make of the conditions: O Item: ______________[v]- _______[v] O Hero: ______________[v] ___________________________[...] O Event: ______________[v]- ___[v] Face Dir O Vehicle: _______[v] Ride O Started by Decision Key O Play BGM Once Next is the 'Event' option. From the first box, you can choose any event on the current map, including the hero. In the second are the options Up, Right, Down, Left... with this option, you can make a fork depending on which direction the hero is facing. This can be very useful, especially if you plan to use real-time battles. The fork will look something like this on the event list: <> FORK Optn:Hero- Up Face Direct <> :ELSE Case <> :END Case <> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ix. How do fork conditions work? Part 8: The Final Three O Item: ______________[v]- _______[v] O Hero: ______________[v] ___________________________[...] O Event: ______________[v]- ___[v] Face Dir O Vehicle: _______[v] Ride O Started by Decision Key O Play BGM Once As you can see, there are three final options left for fork conditions: Vehicle, Started by Decision Key, and Play BGM Once. Vehicle is semple enough - you choose one, and the fork condition happens if you are riding that vehicle. There is little use I know of for 'Started by decision key'. For example, in the following event: <> FORK Optn:Start by Decision Key <> Messg: bla bla bla :ELSE Case <> Messg: blee blee blee :END Case <> ...You will only see the message "bla bla bla" if the event is set to 'push key', and "blee blee blee" if it is anything else. As for Play BGM (BackGround Music) Once, well... it happens if the BGM has played one complete round. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ x. Conclusion and other stuff After having read this tutorial, you can probably understand fork conditions well, and be able to apply them in your RPG. I pretty much learned fork conditions on my own, but here are some people that deserved to be thanked anyway: Momheretic/Wishmoo; Illustrious; QHeretic/DingoKing; Lun Calsuri; Don Miguel; DyME; Legynd; all of the other staff at the Overworld; Indiana Jones; Tom, who guards the plastic fish on wednesday nights; Jojo the sideshow hillbilly circus monkey; Bill-Bob the Filbert; Bayou Richard the Third; Milk - it does a body good; The little guy, on... that... show.... he was cool; 'loo' & ';p;'; That other guy who doesn't really exist, although he provided me with hours of entertainment; the guy who was doing what he wasn't doing as he was doing something he could have done in the past if he wasn't not doing the thing he was and was not doing; and most of all..... Ted. This Tutorial is property of the Overworld, if you have seen it elsewhere, or have further questions, e-mail me at Ayruline@hotmail.com