Developing the Scripts
You control all The Tower’s
game content, such as dialogue, through the use of scripts.
The Mad Lib Script system is in use here. A single action template, Game.mla,
contains a number of actions that will be useful in your project. More than 200
lines
in length, the game’s action template is a little too long to list here, so I
highly suggest
that you open the action template while reading through this section.
The action template is split
into the following six groups of actions:
■ Script flow. Much like a
standard program, scripts execute actions starting at
the beginning of the script. The script flow continues until the end of the
script. Scripts also use conditional if...then checking (checking the status of
internal flags and variables) to change the flow of the script’s execution.
■ Character control. This
includes adding, removing, moving, and setting the
character’s AI settings.
■ Item controls. These check
whether items exist and add and remove items
in a character’s inventory.
■ Barriers and triggers. This
group of actions enable you to add, enable, and
remove map triggers.
■ Sound and music. You can play
various sound effects and songs using this
group of actions.
■ Miscellaneous. A group of
actions that doesn’t fit into the previously listed
groups.
You use the preceding actions
to construct the game’s scripts. Once you construct
the scripts, you can use them to control the flow of the game. You trigger the
scripts used by the game in six ways—the player talking to another character,
the
player touching a map trigger, and a character reaching the last route point in
an
assigned route, entering a level, starting combat, or ending combat.
You name the scripts that are
called when the player talks to another character
according to the character’s identification number, which you append to the word
char. For example, character #2 has a script file named char2.mls that is
executed
any time the player clicks that character with the mouse.
You place map triggers in each
level by using the script actions. Whenever a trigger
is touched, a script executes. You name the map triggers by using the word trig
followed
by the trigger’s identification number—such as trigger #4 using the script
filename of trig4.mls.
When entering a level, use the
word scene followed by the map level’s
assigned number. For example, when the character enters map #4, the
script file scene4.mls is executed.
The final three methods of
executing a script use a three-letter script filename
that is appended with the
associated character’s identification number or map level number. For
end-of-route
scripts, you use eor followed by the character’s identification number. For
example, when character #2
reaches the last point on a route, the script named eor2.mls is executed.
For the start of combat, use
soc followed by the map level number for the filename
of the script. The same applies to the end-of-combat method, except you use eoc—
for example, eoc3.mls, which is executed when combat ends in map level #3.
With the six script file-naming
methods in mind, check out the following list of
scripts used in The Tower:
■ Char1.mls, Char2.mls,
Char3.mls, Char6.mls, and Char7.mls. These are the
scripts that are executed whenever the player clicks a character with the
mouse. Characters 1, 2, and 3 are villagers, whereas characters 6 and 7 are
Granite and the Evil Lord, respectively.
■ SOC1.mls, SOC2.mls, SOC3.mls, SOC4.mls, and SOC5.mls. These are the
start-of-combat scripts for each level. These play only the third assigned song
in the game.
■ EOC1.mls, EOC2.mls, EOC3.mls, EOC4.mls, and EOC5.mls. The end-ofcombat
scripts typically restore the music to the level’s original song.
■ EOR0.mls, EOR4.mls, and EOR5.mls. Only three characters in the game
walk along routes—the player during the first level of the game, the demon
that is attacking the player in the village at the start of the game, and the
guard that runs to warn his Evil Lord.
■ Scene1.mls, Scene2.mls, Scene3.mls, Scene4.mls, and Scene5.mls. Each scene
starts by playing music and setting up all characters that belong in that level.
■ Trig1.mls, Trig2.mls, Trig3.mls, Trig4.mls, Trig5.mls, Trig6.mls, Trig7.mls,
and Trig8.mls. You use the map triggers solely to move the player from one
level to another whenever the player tries to leave a particular level.
The majority of the scripts are
basic. For example, check out the trig2.mls script:
Set character
id=(*0*) direction to (*0.000000*)
Teleport character id=(*0*) to map (*1*) at (*100.000000*) (*0.000000*)
(*-170.000000*)
The purpose of the trig2.mls,
which is placed in the second scene (the bridge), is
to teleport the character to the first map (the village) and to change the
player’s
direction. To see a more advanced script, check out scene4.mls, which is
executed
when the player enters the fourth level:
// (*Store
scene #*) //
Set variable (*1*) to (*4*)
————————————-
// (*Play scene music *) //
Play music (*1*)
————————————-
// (*Add teleporter triggers *) //
Add triangle trigger id=(*6*) at
(*-177.00000*) (*200.000000*) (*-144.000000)
Add triangle trigger id=(*7*) at
(*177.00000*) (*200.000000*) (*210.000000)
————————————-
// (*Add Granite is not killed already *) //
if flag (*8*) equals (*FALSE*) then
Add character id=(*6*) definition=(*3*) type=(*NPC*) at XPos=(*170.000000*) YPos=(*0.000000*)
ZPos=(*-60.000000*)
direction=(*3.925000*)
Set character id=(*6*) AI to (*Stand*)
EndIf
Although it’s certainly much
longer than the other scripts in the game, the
scene4.mls script is fairly simple. The script starts much like the other scene
scripts
do—by storing the scene’s map number in variable #1 and playing the level’s
associated
song. From there, two triggers are placed in the scene that teleport the
player back down to the ground level of the tower or to the Evil Lord’s chamber.
Finishing up the script, flag
#8 is checked, and if set to FALSE, a character is added
to the level. This character, Granite, is character #3 in the master character
list. In
the game engine, Granite is assigned the character identification number 6. At
first, Granite begins as an NPC (non-player character), merely standing still
and
waiting for the player to speak to him.
When he is spoken to, Granite’s
script is processed—some words are exchanged
between Granite and the player, and then Granite’s type is changed to Monster.
When the player dispatches Granite, the end of combat script sets flag #8 to
TRUE,
thereby skipping the portion of the scene4.mls script that adds Granite to the
map
when the player reenters scene #4. Ingenious, isn’t it?
In the section “Processing
Scripts,” later in this chapter, you find out how the
scripts in The Tower are processed. As for now, move on to defining how the
player
interacts with the game.