Commands¶
The [CommandList ...] sections contain commands and parameters that control the characters. These commands are described in the following sections.
AddLines¶
The AddLines
command is used to add to Eric’s lines total
after he has been found guilty of misdeeds. The number of lines to be added to
the total is specified by the command’s sole argument.
Catch¶
The Catch
command is used internally to control Eric while
he’s trying to catch a mouse or frog. It makes Eric bend over, checks to see
whether an animal is present (and if it is, adds it to the appropriate
inventory), and then makes Eric stand up.
ChaseEricOut¶
The ChaseEricOut
command controls Miss Take as she chases
Eric, with the intent of making him leave the girls’ skool and return to the
boys’. It is very similar to the ShadowEric command, except that it
makes the headmistress go no further than the skool gate (the x-coordinate of
which is supplied as the command’s sole argument).
CheckIfTouchingEric¶
The CheckIfTouchingEric
command is used by the bully when
he has mumps. It checks whether the bully is touching Eric, and if he is,
raises the signal that is being watched by whoever is on mumps duty (Mr Rockitt
by default).
ConductAssembly¶
The ConductAssembly
command makes the headmaster tell the
kids they’re in detention.
ConductClass¶
The ConductClass
command is used by teachers to make them
conduct lessons. The command controls a teacher from the point where he reaches
the edge of the blackboard. If the teacher is teaching Eric, it makes the
teacher wait until the swot shows up, and then hands over control to the
ConductClassWithEric command. Otherwise it immediately hands over
control to the ConductClassWithoutEric command.
The command takes two optional arguments:
- the name of the signal that indicates that the swot is ready
- the name of the group of questions and answers to use for the lesson (see [QuestionsAndAnswers ...]); if not specified, the questions and answers will be chosen at random
ConductClassWithEric¶
The ConductClassWithEric
command is used internally to
control a teacher who is teaching Eric and the swot. It takes over control from
the ConductClass command as soon as the swot shows up and sits
down. It’s responsible for making the teacher:
- listen to the swot’s tales (if any)
- dish out lines after the swot has told tales
- wipe the blackboard
- walk to the middle of the blackboard
- write on the blackboard (occasionally)
- tell the kids what to do during class, or ask questions and wait for the answers
- hunt down Eric if he’s playing truant
The command takes a single, optional argument: the name of the group of questions and answers to use for the lesson (see [QuestionsAndAnswers ...]); if not specified, the questions and answers will be chosen at random.
ConductClassWithoutEric¶
The ConductClassWithoutEric
command is used internally to
control a teacher who is teaching a class that does not contain Eric and the
swot. It takes over control from the ConductClass command
immediately. It controls a teacher from the point where he reaches the edge of
the blackboard and is responsible for making him:
- wipe the blackboard
- walk to the middle of the blackboard
- write on the blackboard (occasionally)
- tell the kids what to do during class
DoAssemblyDuty¶
The DoAssemblyDuty
command is used to control Mr Withit as
he does assembly duty. It makes Mr Withit do nothing (i.e. stand still) unless
Eric is absent from the assembly hall, in which case it hands over control to
the FetchEric command; when that command exits, the command list is
restarted. The DoAssemblyDuty
command itself exits when assembly is over
(i.e. Mr Wacker has finished speaking).
The command takes two arguments that inform Mr Withit when to start and when to stop assembly duty:
- the signal that indicates when assembly has started
- the signal that indicates when assembly has finished
These signals are raised by Mr Wacker.
DropStinkbomb¶
The DropStinkbomb
command is used internally to make a
stinkbomb-carrying character (i.e. Eric) drop a stinkbomb.
DumpWaterPistol¶
The DumpWaterPistol
command is used internally to make
Eric throw away the water pistol. The water pistol will be relocated in a
random desk, and will contain water (as opposed to sherry).
EndGame¶
The EndGame
command is used to end the game (when Eric has
exceeded the lines limit, for example).
EvadeMouse¶
The EvadeMouse
command is used internally to control a
character who is scared of mice and has spotted one nearby. It makes the
character either jump up and down or stand on a chair.
Fall¶
The Fall
command is used to control the descent of a drop
of water or sherry from a cup, or the descent of a conker from a tree. Until
the object has been knocked out of its resting place, the command does
nothing. Otherwise, it guides the object to the floor, and interacts
appropriately with any character it hits. After the object has hit somebody or
the floor, it is hidden from view.
FallToFloor¶
The FallToFloor
command is used internally to control
Eric’s descent to the floor. It is invoked in the following situations:
- by the RideBike command when Eric falls off a bike that has lost momentum
- when Eric falls off a fully grown plant that has just died
FetchEric¶
The FetchEric
command is used internally by the
ConductClassWithEric command to make a teacher track down the truant
Eric and shepherd him back to the classroom.
FindEric¶
The FindEric
command is used to make a character look for
Eric (to give him a message); it also stops the skool clock (which can be
restarted later on with a SetClock command) to allow Eric to be found
before the bell rings. When Eric has been found, he is frozen so that he has no
choice but to listen to the message.
FindEricIfMissing¶
The FindEricIfMissing
command is used by whichever teacher
is on dinner duty to make him go and look for Eric if he’s not in the dinner
hall.
FindSeat¶
The FindSeat
command is used to make a boy or girl find a
seat in a classroom and sit down; it also makes the character find another seat
if he’s knocked out of one (unless the character is the swot, who must return
to the same seat to avoid having to move his speech bubble during lessons).
The command takes two optional True (1) or False (0) arguments (which are both True by default). When the first argument is True, the character will seek out the back seat in the classroom first. Otherwise, when the second argument is True, the character will go to the next seat in front of him, or to the back seat if there isn’t one (which is what happens when a character is pushed out of his seat). When both arguments are False, the character will sit in the seat he’s standing next to (which is what happens when a character rises after being decked while seated).
FireCatapult¶
The FireCatapult
command is used internally to make a
catapult-carrying character (i.e. Eric or the tearaway) fire his catapult.
FireNowAndThen¶
The FireNowAndThen
command is used as an argument to the
SetControllingCommand command to make the tearaway fire his catapult
occasionally. If the command decides that the time is ripe to send a projectile
whizzing through the air, it passes control to the FireCatapult command.
FireWaterPistol¶
The FireWaterPistol
command is used internally to make a
water pistol-carrying character (i.e. Eric) fire his water pistol.
Flight¶
The Flight
command is used internally to control Eric when
he is either stepping off a fully grown plant through an open window or over
the closed skool gate, or flying over the closed skool gate (after hitting it
while standing on the saddle of the bike - see the RideBike
command). The command guides Eric through his trajectory to the ground, upon
which he may land with his feet, his backside, or his back.
Floored¶
The Floored
command is used internally to control a child
character who has been pushed out of his seat or knocked out cold (by Eric, the
bully, or the tearaway). The command keeps the character on the floor for a
brief period and then makes him stand up; after that, the character will
either resume whatever he was doing before, or look for another seat (see
FindSeat).
Follow¶
The Follow
command is used by little boys 2-11 to sync
their movements with those of the stampede leader, little boy 1. (Internally it
syncs destinations, and hands over control to the GoTo command.) The
command takes a single argument: the unique ID of the character to follow.
Freeze¶
The Freeze
command is used internally by the
FindEric command to freeze Eric once he has been found. It continually
monitors the keyboard to check whether Eric has acknowledged delivery of a
message (by pressing ‘U’). It is then up to the TellEric or
TellEricAndWait command to unfreeze Eric as appropriate.
GoTo¶
The GoTo
command is arguably the most important command
ever in the history of Pyskool. Without it, the characters would stay rooted to
the spot, Pyskool would be boring, and you wouldn’t be reading this. Sad.
Anyway, GoTo
takes a single argument, which must be one of the following:
- a skool location identifier (as found in the [SkoolLocations] section)
- an identifier of the form
Location:characterId
, wherecharacterId
is the unique ID of a character
A Location:characterId
identifier resolves to the current location of the
character with the given ID. To change the recognised prefix of such
identifiers, set the LocationMarker
configuration parameter in the
[GameConfig] section of the ini file.
I leave it to the reader to guess what the GoTo
command does.
GoToRandomLocation¶
The GoToRandomLocation
command is used in many command
lists to make a character go to one of his random locations.
GoTowardsXY¶
The GoTowardsXY
command is used internally to make a
character turn round or take one step in the direction of the destination x
and y
coordinates specified in the two arguments, instead of continuing all
the way to the destination. The command is used primarily by the
FindEric and FetchEric commands, which require tracking of a
moving target (our hero) rather than a fixed destination.
GoToXY¶
The GoToXY
command is used internally to make a character
go to a location specified by an (x, y) pair of coordinates. In fact, the
GoTo command resolves its location ID parameter into an (x, y) pair of
coordinates and then hands over control to GoToXY
. Unsurprisingly,
GoToXY
takes two arguments: x and y, as in:
GoToXY, 23, 17
Although GoToXY
is not used explicitly in any of the stock command lists,
there is nothing to stop you using it in a command list if you wish.
GrassAndAnswerQuestions¶
The GrassAndAnswerQuestions
command is used by the swot to
make him tell tales to the teacher just before class starts, and answer the
teacher’s questions later.
Grow¶
The Grow
command is used to control the growth of a plant
after it has been watered. If the plant is not growing, the command does
nothing. Otherwise, it animates the plant growth, and lifts any characters who
are standing on the plant. When the plant dies, it drops any characters who
were standing on the plant, and hides it from view.
The Grow
command takes three arguments, which specify the delay between the
plant being watered and:
- appearing at half-height
- growing to full height
- dying
Hit¶
The Hit
command is used internally to make a fist-wielding
character (i.e. Eric or the bully) throw a punch.
HitNowAndThen¶
The HitNowAndThen
command is used as an argument to the
SetControllingCommand command to make the bully throw a punch
occasionally. If the command decides that the time is ripe to send a fist
whizzing through the air, it passes control to the Hit command.
Hop¶
The Hop
command is used internally by the MoveFrog
command to control the movements of a frog as it embarks on a long hop or a
short hop, or turns round.
Jump¶
The Jump
command is used internally to control Eric while
he’s jumping. It lifts him into the air, checks to see whether he has reached a
shield, a cup, or the safe, and then lets him drop (unless there is an
unconscious kid or a plant pot below).
JumpIfOpen¶
The JumpIfOpen
command is used to jump back or forward in
the command list if a door is open. The command takes two arguments: the door’s
unique ID (see [Doors]), and the number of commands to jump back or
forward, as in:
JumpIfOpen, SkoolDoor, -5
JumpIfShut¶
The JumpIfShut
command is used to jump back or forward in
the command list if a door is shut. The command takes two arguments: the door’s
unique ID (see [Doors]), and the number of commands to jump back or
forward, as in:
JumpIfShut, SkoolGate, 3
JumpOffSaddle¶
The JumpOffSaddle
command is used internally to control
Eric when he is jumping off the saddle of the bike (see the RideBike
command). It lifts him into the air, checks to see whether he has reached a cup
(into which a frog may be placed), and then lets him drop to the floor.
Kiss¶
The Kiss
command is used internally to control Eric while
he’s kissing (or trying to kiss) Hayley. If Hayley is neither facing Eric nor
in front of him at the time of the attempted kiss, Eric will take a step
forward and then back again, with no kiss scored. If Hayley is in front of Eric
and facing him, one of two things will happen: (a) Eric will score a kiss,
or (b) Hayley will smack Eric in the face (if she feels he’s tried to grab one
kiss too many already). If Eric does land a kiss, his lines total will be
reduced by 1000 (or to zero if he has less than 1000 lines).
KnockedOver¶
The KnockedOver
command is used internally to control an
adult character who has been downed by a catapult pellet or a stampeding boy.
KnockedOver
stuns the character, makes him reveal his safe combination
letter (if appropriate), also makes him give lines to the nearest main child
character (if any), and then helps him up off the floor; after that, the
character will resume whatever he was doing before.
MonitorEric¶
The MonitorEric
command is used as a subcommand (set by
the SetSubcommand command) by Miss Take; it makes her keep an eye out
for Eric in the girls’ skool when it’s not playtime. It takes two arguments:
- the ID of the command list to switch to in order to chase Eric
- the x-coordinate beyond which Eric must be to be regarded as worth chasing
MoveAboutUntil¶
The MoveAboutUntil
command is used to make a character
repeatedly walk a random number of paces away from a fixed point (the walkabout
origin) and back again. The walkabout origin is the point the character reached
before MoveAboutUntil
was invoked.
The command takes two arguments:
- a signal to listen for; when it is raised, the character will proceed to the next command in the command list
- (optional) the minimum and maximum distances to walk away from the walkabout
origin; the default is
(1, 7)
MoveBike¶
The MoveBike
command is used to control the bike when Eric
is not sitting on the saddle. If the bike has not been unchained yet, or is
resting on the ground, the command does nothing. Otherwise, it moves the bike
along until it runs out of momentum, at which point it will fall over.
MoveDeskLid¶
The MoveDeskLid
command is used to control a desk lid when
it has been raised (by Eric). When the desk lid is not raised, the command does
nothing. Otherwise, it transfers the contents of the desk (if any) to Eric’s
pocket. When the desk lid is ready to drop - after the delay specified by the
command’s sole argument - it is hidden from view.
MoveFrog¶
The MoveFrog
command is used to control the movements of a
frog. When a frog decides to move, it chooses from three options: turn round,
short hop, and long hop. Each of these movements is controlled by the
Hop command.
The MoveFrog
command takes three arguments, which specify the probability
that the frog will:
- keep still if Eric is not nearby
- turn round (if he decides to move at all)
- attempt a short hop (instead of a long hop) if not turning round
MoveMouse¶
The MoveMouse
command is used to control the movements of
a mouse: sprint up and down a few times, hide for a brief period, repeat.
The MoveMouse
command takes four arguments:
- the minimum and maximum delays before the mouse comes out of hiding (e.g.
(5, 20)
) - the minimum and maximum number of sprints the mouse will make before hiding
(e.g.
(2, 5)
) - the minimum and maximum distances of a sprint (e.g.
(2, 5)
) - the minimum and maximum number of sprint sessions the mouse will engage in
before dying (if released by Eric; e.g.
(10, 41)
)
MovePellet¶
The MovePellet
command is used to control a catapult
pellet. If the pellet has not been launched, the command does nothing.
Otherwise, it moves the pellet through the air, checking whether any shields or
unfortunate characters lie in its path. When a pellet has finished its flight,
it is hidden from view.
MoveWater¶
The MoveWater
command is used to control a jet of water
fired from a water pistol. If the water has not been fired, the command does
nothing. Otherwise, it moves the water through the air, checking whether any
cups or plant pots lie in its path. When the water has finished its flight, it
is hidden from view.
OpenDoor¶
The OpenDoor
command makes a character open a door. It
takes one argument: the unique ID of the door (see [Doors]) to open. If
the door is already open, the command does nothing.
Pause¶
The Pause
command is used internally by the Kiss
command to occupy Hayley (i.e. prevent her from executing her current command
list) while she is responding to an attempted kiss from Eric. The command exits
(and Hayley will resume her current command list) after the response (a kiss or
slap in the face) has been made.
ReleaseMice¶
The ReleaseMice
command is used internally to control Eric
when he’s releasing mice. It makes Eric bend over, releases up to five mice
(depending on how many Eric has caught) at the spot in front of Eric, and then
makes Eric stand up.
RideBike¶
The RideBike
command is used internally to control Eric
while he’s on the bike. It may hand over control to another command depending
on what happens while Eric is on the bike:
- FallToFloor (if the bike runs out of momentum)
- JumpOffSaddle (if Eric jumps off the saddle)
- Flight (if the bike hits the closed skool gate while Eric is standing on the saddle)
Say¶
The Say
command is used internally to make a character say
something. It takes two arguments: the thing to say, and an optional second
argument specifying whether to notify listeners when done (which defaults to
False, and is set to True only during lessons so that the teacher and the
swot don’t talk over each other). For example:
Say, 'Hello mum!'
would make a character say ‘Hello mum!’.
Although Say
is not used explicitly in any of the stock command lists,
there is nothing to stop you using it in a command list if you wish.
SetClock¶
The SetClock
command restarts the skool clock with a
certain amount of time remaining until the bell rings, specified by the sole
parameter. It is used (for example) to ensure that the bell rings shortly
after Mr Wacker has finished delivering the detention message in assembly.
SetControllingCommand¶
The SetControllingCommand
command is an awkwardly named
command that takes another command - and that command’s parameters - as its
arguments, as in:
SetControllingCommand, OtherCommand, SomeParameter
What happens then is that on every pass through the main loop of the game,
OtherCommand
(the ‘controlling’ command) will be called for the character
so controlled. The idea is that OtherCommand
will make the character do
something continuously (e.g. walk fast) or occasionally (e.g. fire a catapult
or throw a punch).
The ‘controlling’ command remains in effect until the following command in the command list has completed.
SetRestartPoint¶
The SetRestartPoint
command has the effect of discarding
itself and all previous commands in the command list, so that any
Restart or StartLessonIfReady command appearing further down the
command list will bring control back up the list to the command following
SetRestartPoint
instead of the top of the list.
SetSubcommand¶
The SetSubcommand
command places a subcommand in the
character’s current command list. This subcommand is then executed on each pass
through the main loop, before and in addition to the current command in the
character’s command list. The parameters of SetSubcommand
are the
subcommand name and the subcommand’s parameters, as in:
SetSubcommand, SomeSubcommand, SomeParameter1, SomeParameter2
SetSubcommand
is used (for example) by Miss Take to place the
MonitorEric subcommand in her command list, which makes her keep an eye
out for Eric in the girls’ skool when it’s not playtime.
The subcommand persists for the duration of the command list (which is usually until the end of the lesson).
ShadowEric¶
The ShadowEric
command is used by Mr Wacker when he’s been
alerted that Eric is trying to escape (see the WatchForEric
command). The command makes Mr Wacker track down Eric and shadow him until the
bell rings.
ShutDoor¶
The ShutDoor
command makes a character shut a door. It
takes one argument: unique ID of the door (see [Doors]) to shut. If the
door is already shut, the command does nothing.
Signal¶
The Signal
command is used to raise a signal. Signals are
used, for example, by the MoveAboutUntil command to make a character
pace up and down until the time is right to proceed to the next command in the
command list. This scheme allows characters’ movements to be coordinated.
The Signal
command takes a single argument: the name of the signal to
raise.
See also the Unsignal command.
SitForAssembly¶
The SitForAssembly
command makes a character find a spot
to sit down in the assembly hall until the headmaster has finished speaking.
The command takes three arguments:
- the signal to wait for before standing up (see StartAssemblyIfReady)
- the direction to face when sitting down (
-1
for left,1
for right) - (optional) the minimum and maximum distances the character should walk back
to find a spot to sit; the default is
(1, 4)
SitStill¶
The SitStill
command is always found immediately after the
FindSeat
command when it appears in a command list. It makes the character
stay seated (in other words, do nothing).
StalkAndHit¶
It sounds brutal, but there really was a command list in Back to Skool that
contained instructions to make the bully track down Eric’s girlfriend in order
to knock her about. In Pyskool, the equivalent (but more flexible) command is
StalkAndHit
, which takes a single argument: the unique ID
of the character to track down.
StalkAndHit
should be used as an argument to the
SetControllingCommand command, as in:
SetControllingCommand, StalkAndHit, HEROINE
As a controlling command, StalkAndHit
continually updates the character’s
destination to match that of the target, and makes him throw punches now and
then along the way.
StartAssemblyIfReady¶
The StartAssemblyIfReady
command makes Mr Wacker return to
the start of the command list unless it’s time to go down to the stage for
assembly, at which point the signal named by the command’s sole argument will
be raised (so that the kids know when to sit down; see SitForAssembly).
StartDinnerIfReady¶
The StartDinnerIfReady
command is used by teachers on
dinner duty. It restarts the command list unless it’s time to start looking
out for Eric during dinner.
StartLessonIfReady¶
The StartLessonIfReady
command is used by teachers to get
a lesson under way (if enough time has passed since the bell rang). The command
takes a single argument: the name of the signal that indicates which room the
teacher will teach in (which is listened for by the kids in the classroom so
that they know when to sit down). If it’s not time to start the lesson yet, the
command list is restarted.
Stink¶
The Stink
command is used to control a stinkbomb after
it’s been dropped. If the stinkbomb has not been dropped, the command does
nothing. Otherwise, it animates the stinkbomb cloud, checking whether any
characters with a sensitive nose are nearby, and compelling them to open the
nearest window. When the stench has dissipated - after a period specified by
the command’s sole argument - the cloud is hidden from view.
StopEric¶
The StopEric
command is used internally by the
WatchForEric command to make Albert raise his arm and alert Mr Wacker
when he has spotted Eric trying to escape. The command exits when Eric leaves
the ‘danger zone’ near Albert.
TellClassWhatToDo¶
The TellClassWhatToDo
command is used internally by the
ConductClassWithEric and ConductClassWithoutEric commands to make
a teacher tell the class what to do (which usually involves writing an essay,
turning to a certain page in their books, or revising for their exams).
TellEric¶
The TellEric
command is used to make a character deliver
the message specified in the command’s sole argument, and then unfreeze Eric
(if he was frozen, as by the FindEric command).
TellEricAndWait¶
The TellEricAndWait
command is used to make a character
deliver the message specified in the command’s sole argument, and then unfreeze
Eric (if he was frozen, as by the FindEric command) as soon as he has
registered understanding of the message so delivered. If Eric is slow to
respond, the message will be repeated periodically.
TellKidsToSitDown¶
The TellKidsToSitDown
command is used internally by the
StartLessonIfReady command to make a character (a teacher, normally)
tell the kids to sit down when it’s time to start class.
TripPeopleUp¶
The TripPeopleUp
command is used as an argument to the
SetControllingCommand command to make a character trip up anyone in his
path as he proceeds to his destination.
Unsignal¶
The Unsignal
command is used to lower a signal previously
raised. It takes a signal name as its sole argument.
WaitAtDoor¶
The WaitAtDoor
command is used to make Albert wait at the
skool door or the skool gate until all the characters are on the correct side
and it’s therefore safe to shut the door or gate. The character flags B and
G (see [Characters]) are used to determine which skool (and hence which
side of the door) a character belongs to. The WaitAtDoor
command takes a
single argument: the unique ID of the door or gate (see [Doors]).
WaitUntil¶
The WaitUntil
command is used to make a character do
nothing (i.e. stand still) until a signal is raised. The command takes a
single argument: the name of the signal to wait for.
WalkAround¶
The WalkAround
command makes a character walk up and down
about a fixed point (the walkabout origin).
The command takes two arguments:
- the number of walkarounds to do - a “walkaround” being a short trip away from
the walkabout origin (wherever the character was when the
WalkAround
command was invoked) and back again - (optional) the minimum and maximum distances to walk away from the walkabout
origin; the default is
(1, 7)
The WalkAround
command is also used internally by the MoveAboutUntil
command.
WalkFast¶
The WalkFast
command is used as an argument to
SetControllingCommand to make a character walk fast.
WalkUpOrDown¶
The WalkUpOrDown
command is used internally by the
ConductClassWithEric and ConductClassWithoutEric commands to make
a teacher turn round and walk three paces. Called repeatedly, it makes the
teacher walk up and down.
WatchForEric¶
The WatchForEric
command is used as an argument to
SetControllingCommand to make Albert keep his eyes peeled for our hero
jumping out of skool windows. If Albert does spot Eric trying to escape,
control is handed over to the StopEric command.
The WatchForEric
command takes five arguments
- the ID of the character who will be alerted by Albert when he spots Eric trying to escape
- the ID of the command list to use for the character who will be alerted
- the alert message to be screamed by Albert
- the x-coordinate beyond which Eric should be regarded as trying to escape (96 in the stock Pyskool, which is the x-coordinate of the boys’ skool door)
- the minimum and maximum distances to the left of Albert that Eric would have to be between for Albert to raise the alarm
WipeBoard¶
The WipeBoard
command is used internally by the
ConductClassWithEric and ConductClassWithoutEric commands to make
a character wipe a blackboard clean.
Write¶
The Write
command is used internally to control Eric while
he’s writing on a blackboard. It would be of no use in a command list.
WriteOnBoard¶
The WriteOnBoard
command is used internally by the
ConductClassWithEric, ConductClassWithoutEric and
WriteOnBoardUnless commands to make a character write on a blackboard.
The character should (ideally) be standing at the target blackboard before this
command is invoked.
The command takes a single argument, namely the message to be written on the board. So if you wanted to use the command explicitly in a command list, you could put something like:
GoTo, ExamRoomBlackboard:Middle
WriteOnBoard, 'Pyskool rox!'
WriteOnBoardUnless¶
The WriteOnBoardUnless
command is used by the tearaway to
make him write on a blackboard unless the board has already been written on or
the signal named in the command’s sole argument has been raised.