The [CommandList ...] sections contain commands and parameters that control the characters. These commands are described in the following sections.
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.
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.
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).
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).
The ConductAssembly command makes the headmaster tell the kids they’re in detention.
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 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:
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.
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:
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:
These signals are raised by Mr Wacker.
The DropStinkbomb command is used internally to make a stinkbomb-carrying character (i.e. Eric) drop a stinkbomb.
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).
The EndGame command is used to end the game (when Eric has exceeded the lines limit, for example).
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.
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.
The FallToFloor command is used internally to control Eric’s descent to the floor. It is invoked in the following situations:
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.
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.
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.
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).
The FireCatapult command is used internally to make a catapult-carrying character (i.e. Eric or the tearaway) fire his catapult.
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.
The FireWaterPistol command is used internally to make a water pistol-carrying character (i.e. Eric) fire his water pistol.
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.
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).
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.
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.
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 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.
The GoToRandomLocation command is used in many command lists to make a character go to one of his random locations.
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.
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.
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.
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:
The Hit command is used internally to make a fist-wielding character (i.e. Eric or the bully) throw a punch.
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.
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.
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).
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
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
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.
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).
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.
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 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:
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.
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.
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:
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 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.
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.
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.
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.
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.
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:
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.
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.
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.
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.
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).
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.
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.
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.
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 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).
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.
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).
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.
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.
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.
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.
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).
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).
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.
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.
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.
The Unsignal command is used to lower a signal previously raised. It takes a signal name as its sole argument.
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]).
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.
The WalkAround command makes a character walk up and down about a fixed point (the walkabout origin).
The command takes two arguments:
The WalkAround command is also used internally by the MoveAboutUntil command.
The WalkFast command is used as an argument to SetControllingCommand to make a character walk fast.
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.
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 WipeBoard command is used internally by the ConductClassWithEric and ConductClassWithoutEric commands to make a character wipe a blackboard clean.
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.
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!'
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.