Nine storylines? Okay, I'm going to compare it to the part in Final Fantasy 3 where you basically split up your party and go on separate quests.
-----
We're going to assume the following:
--A "quest selection" area
--A variable to note which quest you're currently on
--------
1) Basically, at the end of a quest, you'd set a switch (something like [xxxx:TerraQuestDone]). The quest selection area would check for this switch, and if it's set to ON, you obviously can't go back into it. Just start the 9th quest right away (which is preferred, because there is absolutely no reason for a selector screen to have only one choice.)
2) The quest selection area would simply check to see if all available quest switches are set to ON. This would require a few nested branches, but it's not difficult.
3) No point in that, you can just set a variable to the "average party level" of whatever quest you're on, and set everyone else's level to that. Say, at the end of Sabin's quest, you'd add up the levels of Sabin, Cyan, and Gau, and divide by 3. If their average is something like 19, you would then store that in a variable, and on the next quest, add the variable to everyone's levels right at the start and subtract 1 (since they start at level 1, adding 19 would make it 20. Adjust this for whatever starting level they would have.) Not too useful to do overall, though - see below.
4) Impossible, unless you do a custom battle system. You CAN have it so you go to the same map with different monsters (based on how tough the party is) or give the monsters stronger attacks based on the party's average level, but other than that you're stuck with what you have. Kinda makes #3 rather useless. It's best to have the quests balanced out as though you start out at level 1 on each - it makes it much easier for all involved.
5) Use a "selector" charset (or use mine):
Then, you would just set up a separate, 20x15 map, and make your hero invisible. Make the selector a parallel process, and do something like the following:
Code:
s 1 2 3 4
5 6 7 8
s = Selector char (above hero)
# = Quest icons/chars |
(below hero)
Now, you want the parallel process to do somethng like this (not going to do the actual coding right now, but you can figure out what's going on. This will "wrap" around at the left/right edges.
Code:
// Pre-loop preparation
<> Move selector Right 3 spaces
<> Set variable [xxxx:CursorLocation] to 1
<> Enter Loop
// Grab keyboard input - Only Left/Up/Right/Down/Enter
<> Get input key, put it in [xxxx:KeyPressed]
// If you pressed down, you go down
// But only on the top 4 quests
<> If KeyPressed = 1 (DOWN)
<> If SelectorLocation < 5
<> Move Selector Down 3
: End
:End
// Left goes left, except at 1 and 5, which are at the
// left-most edges. For these, we "wrap' around to the other side.
<> If KeyPressed = 2 (LEFT)
<> If SelectorLocation = 1
<> Move Selector Right 3, Down 1, Right 3, Down 1, Right 3, Down 1
<> Else
<> If Selector Location = 5
<> Move Selector Right 3, Up 1, Right 3, Up 1, Right 3, Up 1
<> Else
<> Move Selector Left 3
:End
:End
:End
// Pressing Up makes you go up (see a pattern?)
// Only allowed to go up if you're on the bottom 4 quests.
<> If KeyPressed = 1 (UP)
<> If SelectorLocation > 4
<> Move Selector Up 3
: End
:End
// Right goes right. Just like the left subroutine,
// this one "wraps" around at the right-most edges.
<> If KeyPressed = 2 (RIGHT)
<> If SelectorLocation = 4
<> Move Selector Left 3, Down 1, Left 3, Down 1, Left 3, Down 1
<> Else
<> If Selector Location = 8
<> Move Selector Left 3, Up 1, Left 3, Up 1, Left 3, Up 1
<> Else
<> Move Selector Right 3
:End
:End
:End
<> If KeyPressed = 5 (ENTER)
// This part checks to see if you
//already did these quests.
<> If Selector Location = 1
<> If Switch DidQuest1 = OFF then
<> Break Out of Loop
:End
:End
<> If Selector Location = 2
<> If Switch DidQuest2 = OFF then
<> Break Out of Loop
:End
:End
<> If Selector Location = 3
<> If Switch DidQuest3 = OFF then
<> Break Out of Loop
:End
:End
<> If Selector Location = 4
<> If Switch DidQuest4 = OFF then
<> Break Out of Loop
:End
:End
<> If Selector Location = 5
<> If Switch DidQuest5 = OFF then
<> Break Out of Loop
:End
:End
<> If Selector Location = 6
<> If Switch DidQuest6 = OFF then
<> Break Out of Loop
:End
:End
<> If Selector Location = 7
<> If Switch DidQuest7 = OFF then
<> Break Out of Loop
:End
:End
<> If Selector Location = 8
<> If Switch DidQuest8 = OFF then
<> Break Out of Loop
:End
:End
:End
:End Loop
// Here, you would set up everything you
// need to start the quest. Just do another set of
// branches like the ones that broke you out of the loop. |