>> Okay, here it is; the guts of the game. In commenting this file, I'll try to >> explain what a block of C0MMANDs is for, and why it does what it does. The >> actual "how" it does what it does should be obvious. If you are serious >> about figuring out how this game works, behind the scenes, I suggest you >> print out at least the COMMENT.THF file, which contains several lists of >> important items. >> Comments for a particular C0MMAND or group always precede it. Groups of >> C0MMANDs extend until the next comment begins. >> The following two allow the walls, floor and ceiling to appear on the >> menu-input list. The problem with just moving the walls into a room on the >> first move in that room is that IF the player is using the menu-input, and >> they try to do something to a wall etc. it does not appear on the menu-input >> list until AFTER the first move. This group uses RoomFlags and the actual >> wall NOUNs in combination. Before the real walls are moved into a room, the >> RoomFlags for the "fake" walls are turned on. When an input is entered that >> references the walls, floor, or ceiling, the appropriate object is moved >> into the room, and the RoomFlag for it turned off. On the next move, the >> real wall is removed, and the "fake wall" is restored ie. appropriate >> RoomFlag is ON. >> This part deals with removing the walls after use. >> The second part of this group, dealing with moving walls into a room when >> referenced, is located further into the file. COMMAND ANY Present 295 Or Present 296 Or Present 298 Or Present 299 TurnRoomFlagOn 25 TurnRoomFlagOn 26 TurnRoomFlagOn 28 TurnRoomFlagOn 29 Destroy 295 Destroy 296 Destroy 298 Destroy 299 END_COMMAND COMMAND ANY Present 294 Or Present 297 TurnRoomFlagOn 24 TurnRoomFlagOn 27 Destroy 294 Destroy 297 END_COMMAND >> This group is used in combination with the later READ CATALOGUE. RoomFlags >> are defined for each of the items listed on the catalogue, so that the >> player can select them if they are playing with the menu-input system. When >> the player reads a page, the RoomFlags for the items on that page are turned >> on. Then this group of C0MMANDs turn them off again next turn. This means >> that the player has one move to order the items on that page before they are >> removed. This stops the menu-input list from getting too cluttered with >> numbers. COMMAND ANY RoomFlagOn 1 ToggleRoomFlag 1 ToggleRoomFlag 2 ToggleRoomFlag 3 ToggleRoomFlag 4 END_COMMAND COMMAND ANY RoomFlagOn 5 ToggleRoomFlag 5 ToggleRoomFlag 6 ToggleRoomFlag 7 ToggleRoomFlag 8 END_COMMAND COMMAND ANY RoomFlagOn 9 ToggleRoomFlag 9 ToggleRoomFlag 10 ToggleRoomFlag 11 ToggleRoomFlag 12 END_COMMAND COMMAND ANY RoomFlagOn 13 ToggleRoomFlag 13 ToggleRoomFlag 14 ToggleRoomFlag 15 ToggleRoomFlag 16 ToggleRoomFlag 17 END_COMMAND COMMAND ANY RoomFlagOn 18 ToggleRoomFlag 18 ToggleRoomFlag 19 ToggleRoomFlag 20 ToggleRoomFlag 21 END_COMMAND COMMAND ANY RoomFlagOn 22 ToggleRoomFlag 22 ToggleRoomFlag 23 END_COMMAND >> This group is for three "random" events that occur at various times during >> the game. In order they are: Humpty Dumpty, The Tiny Red Imps, The Seven >> Dwarves. Each group has a different effect. Humpty Dumpty is just a message. >> The Tiny Red Imps take all the objects you are carrying at the time, except >> for the portable hole and those you are wearing. These objects are moved to >> the H Sibbur chest in Hell. The Seven Dwarves simply drop a diamond in the >> room, which is of no importance in the game. COMMAND ANY TurnFlagOff 1 Not VerbIsDirection Not AtLocation 6 Not AtLocation 13 Not AtLocation 15 Not AtLocation 17 Not AtLocation 28 AtLocationLT 31 TurnFlagOn 1 FlagOff 10 TurnsGT 65 PrintMessage 247 TurnFlagOn 10 DoneWithTurn END_COMMAND COMMAND ANY FlagOn 1 FlagOff 12 TurnsGT 128 IsCarryingTreasure 2 Not Present 292 PrintMessage 248 SendTreasuresToRoom 251 2 TurnFlagOn 12 DoneWithTurn END_COMMAND COMMAND ANY FlagOn 1 FlagOff 13 TurnsGT 267 PrintMessage 249 PutInCurrentRoom 287 TurnFlagOn 13 DoneWithTurn END_COMMAND >> This group is for swapping those NOUNs which have been throw out the Wicked >> Witch's window with their counterparts in the CREATURE list, as well as >> killing the player. When the player jumps out the window, the NOUNs s/he has >> throw are swapped for CREATUREs which have more appropriate one-line >> descriptions. The first C0MMAND deals with the possibility that the player >> is wearing the Second Chance Ring just before they are killed. COMMAND ANY AtLocation 89 IsWearing 289 FlagOff 9 PrintMessage 239 END_COMMAND COMMAND ANY AtLocation 89 SwapLocations 267 367 SwapLocations 268 368 SwapLocations 269 369 SwapLocations 270 370 SwapLocations 271 371 SwapLocations 272 372 SwapLocations 273 373 SwapLocations 274 374 SwapLocations 275 375 SwapLocations 278 378 SwapLocations 279 379 SwapLocations 280 380 SwapLocations 281 381 SwapLocations 282 382 SwapLocations 283 383 SwapLocations 284 384 SwapLocations 285 385 SwapLocations 286 386 SwapLocations 287 387 SwapLocations 288 388 SwapLocations 289 389 SwapLocations 291 391 GoToRoom 90 DoneWithTurn END_COMMAND COMMAND ANY AtLocation 90 PrintMessage 240 EndGame DoneWithTurn END_COMMAND >> The player has only a few moves when in the same room with the containment >> cube, but the count can be reset by leaving the room. Also, the player must >> push the button in the Treasure Room and then leave immediately. This >> C0MMAND clears the count of the former, and enforces the latter. COMMAND ANY Not AtLocation 5 SetVariableTo 4 0 Not VerbIsDirection TurnFlagOff 4 END_COMMAND >> This C0MMAND destroys the portable hole when it has been left hanging in >> Hell too long, ie. it melts. It swaps in another NOUN, a black puddle, and >> also destroys the portable hole NOUN on the floor in the room above. COMMAND ANY CounterEquals 5 27 PrintMessage 151 SwapLocations 248 249 Destroy 266 DoneWithTurn END_COMMAND >> This C0MMAND increments a counter for every move in the Aquarium, and prints >> a message about the fish when it reaches 7. COMMAND ANY AtLocation 18 AddToVariable 13 1 VariableEquals 13 7 PrintMessage 147 DoneWithTurn END_COMMAND >> The following group increments a counter for every move in the Plant Room, >> and kills the player when it reaches the appropriate number. It also covers >> the possibility that the player is wearing the Second Chance Ring. COMMAND ANY AtLocation 28 AddToVariable 14 1 VariableEquals 14 3 PrintMessage 148 END_COMMAND COMMAND ANY AtLocation 28 FlagOff 9 IsWearing 289 VariableGT 14 5 PrintMessage 149 GoToRoom 23 TurnFlagOn 9 DoneWithTurn END_COMMAND COMMAND ANY AtLocation 28 VariableGT 14 5 PrintMessage 150 GoToRoom 101 EndGame DoneWithTurn END_COMMAND >> These are for throwing water on the Witch. They allow the Wicked Witch to be >> killed by any combination of the words "water" and "Witch". This means that >> the Witch could be killed by typing JUMP WATER INTO WITCH, but I considered >> that kind of thing pretty unlikely. This means that killing the Witch is >> covered in two C0MMANDs instead of four. The first is for the first trip to >> the Castle, and the second C0MMAND is for the second trip. The messages >> differ slightly in each case. COMMAND ANY Present 286 Present 300 CounterGT 6 14 FlagOn 254 Or NounIsNumber 286 ObjectIsNumber 300 Or NounIsNumber 300 ObjectIsNumber 286 PrintMessage 139 SwapLocations 300 259 PutInCurrentRoom 260 Destroy 286 TurnCounterOff 6 DoneWithTurn END_COMMAND COMMAND ANY Present 286 Present 300 FlagOn 254 Or NounIsNumber 286 ObjectIsNumber 300 Or NounIsNumber 300 ObjectIsNumber 286 PrintMessage 138 SwapLocations 300 259 PutInCurrentRoom 260 Destroy 286 TurnCounterOff 6 DoneWithTurn END_COMMAND >> These are for the second trip to the Castle, where the Witch kills the >> player immediately (if they don't kill her first). The player has two moves; >> on the second move, if the input is not suitable to kill the Witch, the >> player dies. The only exception is if the player is wearing the Second >> Chance ring, in which case they are returned to the Small Room, and can have >> another attempt at killing the Witch later. COMMAND ANY AtLocation 88 CounterGT 6 14 FlagOff 17 PrintMessage 144 TurnFlagOn 17 DoneWithTurn END_COMMAND COMMAND ANY AtLocation 88 CounterGT 6 14 Flagon 17 FlagOff 9 IsWearing 289 PrintMessage 145 TurnFlagOn 9 GoToRoom 2 DoneWithTurn END_COMMAND COMMAND ANY AtLocation 88 Flagon 17 CounterGT 6 14 PrintMessage 146 EndGame DoneWithTurn END_COMMAND >> If the player is standing on the stool and they try to move, a message is >> given that they get off the stool before moving. The standing-on-stool is >> swapped with the ordinary stool. COMMAND ANY VerbIsDirection Present 292 PrintMessage 132 BlankLine SwapLocations 291 292 END_COMMAND >> If they player moves while carrying the lightsabre, and it is turned on, >> a message is printed. COMMAND ANY VerbIsDirection IsCarrying 275 PrintMessage 114 END_COMMAND >> These next four C0MMANDs print messages at various intervals. When the >> player is in the Witch's Castle, the Scarecrow, the Tinman, and the Lion are >> all "killed",. The final message is for when the Witch gets bored, and sends >> the player back to the Plain Room. It also swaps paintings, so that a >> picture of a destroyed Kansas replaces the earlier one. COMMAND ANY CounterEquals 6 3 PrintMessage 118 DoneWithTurn END_COMMAND COMMAND ANY CounterEquals 6 6 PrintMessage 119 Destroy 256 Destroy 257 DoneWithTurn END_COMMAND COMMAND ANY CounterEquals 6 9 PrintMessage 120 DoneWithTurn END_COMMAND COMMAND ANY CounterEquals 6 13 PrintMessage 121 SwapLocations 203 204 GoToRoom 19 DoneWithTurn END_COMMAND >> These two send the player from Kansas onto the Yellow Brick Road, when a >> certain number of turns has elapsed in Kansas. They also move all the items >> from one version of Kansas to another (first C0MMAND), and move all the >> items from one version of the YBR to another (second C0MMAND). The first >> C0MMAND also moves the forest painting to the Rubble Heap In Kansas. COMMAND ANY CounterEquals 3 9 PrintMessage 91 GoToRoom 79 SendToRoom 255 74 RelocateAll 69 75 RelocateAll 70 76 RelocateAll 71 77 RelocateAll 72 78 DoneWithTurn END_COMMAND COMMAND ANY CounterEquals 4 5 PrintMessage 92 RelocateAll 79 83 RelocateAll 80 84 RelocateAll 81 85 RelocateAll 82 86 GoToRoom 83 DoneWithTurn END_COMMAND >> This group deals with the player putting all three coloured gems into the >> white sphere. If they are in the Void, the Void is destroyed, along with the >> gems, and they are freed (sent to Inside The Containment Cube). A point is >> added to the true score for this action. If they are outside the Void and >> wearing the Second Chance ring, they are saved from blinding. If they are >> not wearing the ring, they are permanently blinded and the game finishes. COMMAND ANY IsLocated 279 276 IsLocated 281 276 IsLocated 284 276 AtLocation 31 PrintMessage 81 Destroy 279 Destroy 281 Destroy 284 AddToVariable 1 1 GoToRoom 32 DoneWithTurn END_COMMAND COMMAND ANY FlagOff 9 IsWearing 289 IsLocated 279 276 IsLocated 281 276 IsLocated 284 276 PrintMessage 84 Destroy 279 Destroy 281 Destroy 284 TurnFlagOn 9 DoneWithTurn END_COMMAND COMMAND ANY IsLocated 279 276 IsLocated 281 276 IsLocated 284 276 PrintMessage 82 GoToRoom 101 EndGame DoneWithTurn END_COMMAND >> This sucks the player into the Void if they stay in the Mosaic Room too long >> at one time. If they leave the room, the variable counting the number of >> moves in the room is reset, and they can safely re-enter. The second part of >> this C0MMAND can only be executed once, due to Flag 8 being used as a gate. >> This means that if the player escapes the Void, they won't be trapped again. COMMAND ANY FlagOff 8 AtLocation 5 AddToVariable 4 1 VariableEquals 4 5 PrintMessage 83 GoToRoom 31 TurnFlagOn 8 DoneWithTurn END_COMMAND >> These two C0MMANDs deal with the suffocation of the player if they stay in >> the Sealed Room too long. The first is for the case if they are wearing the >> Second Chance ring; they are warned that their air is running out. The >> next C0MMAND kills them when the air runs out. A variable is used as a >> cumulative counter of the number of moves in the room. COMMAND ANY AtLocation 17 AddToVariable 16 1 VariableEquals 16 8 FlagOff 9 IsWearing 289 PrintMessage 85 TurnFlagOn 9 DoneWithTurn END_COMMAND COMMAND ANY AtLocation 17 VariableGT 16 10 PrintMessage 80 GoToRoom 101 EndGame DoneWithTurn END_COMMAND >> This adds a point to the true score once, just for getting to Heaven. COMMAND ANY AtLocation 63 FlagOff 7 AddToVariable 1 1 TurnFlagOn 7 END_COMMAND >> These next two C0MMANDs kill the player if they push the LEVER up, when in >> the laboratory. Even pushing the LEVER down again does not help. The first >> deals with the case that the player may be wearing the Second Chance ring, >> and saves them if they are. The second C0MMAND kills they player. Note, in >> the second C0MMAND, that the player is sent to ROOM 101, which has a blank >> (empty) ROOM_DESCRiption. This is in case the player enters a direction, >> eg. NORTH, as the last input before they die. If they were to enter a >> direction without being sent to a "blank" room, the room description would >> be redisplayed as well as the death message. COMMAND ANY FlagOn 5 FlagOff 9 IsWearing 289 PrintMessage 86 TurnFlagOn 9 TurnFlagOff 5 DoneWithTurn END_COMMAND COMMAND ANY FlagOn 5 PrintMessage 71 GoToRoom 101 EndGame DoneWithTurn END_COMMAND >> This group is the mechanism behind the "giant" objects in the Inch Tall >> rooms. When the player shrinks, they are moved to the Inch Tall Laboratory. >> Then, all the objects that could possibly be seen by the player while s/he >> is tiny are swapped for their "giant" counterparts. Then, all the things in >> the "Ordinary" set of rooms (ie. the "giant" objects) are relocated to the >> Inch Tall counterpart. When the player enlarges (determined by counter), the >> process is reversed. >> When the player is reduced, everything they are wearing and carrying (with >> the exception of your fingers) is dropped on the floor, and then swapped. COMMAND ANY CounterEquals 2 11 MakeVarRoomNum 2 SubtractFromVariable 2 32 PrintMessage 73 GoToVariableRoom 2 END_COMMAND COMMAND ANY FlagOn 6 PrintMessage 72 TurnCounterOn 2 DropEverything RemoveEverything WearIt 293 Destroy 222 Destroy 223 Destroy 224 GoToRoom 47 RelocateAll 2 34 RelocateAll 3 35 RelocateAll 4 36 RelocateAll 5 37 RelocateAll 6 38 RelocateAll 7 39 RelocateAll 8 40 RelocateAll 9 41 RelocateAll 10 42 RelocateAll 11 43 RelocateAll 12 44 RelocateAll 14 46 RelocateAll 15 47 RelocateAll 16 48 RelocateAll 18 50 RelocateAll 19 51 RelocateAll 20 52 RelocateAll 21 53 RelocateAll 22 54 RelocateAll 23 55 RelocateAll 24 56 RelocateAll 25 57 RelocateAll 26 58 RelocateAll 27 59 RelocateAll 28 60 RelocateAll 29 61 RelocateAll 30 62 END_COMMAND COMMAND ANY FlagOn 6 Or CounterEquals 2 11 SwapLocations 200 306 SwapLocations 201 307 SwapLocations 214 308 SwapLocations 221 309 SwapLocations 242 310 SwapLocations 261 311 SwapLocations 262 312 SwapLocations 263 313 SwapLocations 264 314 SwapLocations 265 315 SwapLocations 266 316 SwapLocations 267 317 SwapLocations 268 318 SwapLocations 269 319 SwapLocations 270 320 SwapLocations 271 321 SwapLocations 272 322 SwapLocations 273 323 SwapLocations 274 324 SwapLocations 275 325 SwapLocations 276 326 SwapLocations 279 329 SwapLocations 280 330 SwapLocations 281 331 SwapLocations 282 332 SwapLocations 283 333 SwapLocations 284 334 SwapLocations 285 335 SwapLocations 277 327 SwapLocations 278 328 SwapLocations 287 337 SwapLocations 288 338 SwapLocations 289 339 SwapLocations 290 340 SwapLocations 291 341 END_COMMAND COMMAND ANY FlagOn 6 TurnFlagOff 6 DoneWithTurn END_COMMAND COMMAND ANY CounterEquals 2 11 RelocateAll 34 2 RelocateAll 35 3 RelocateAll 36 4 RelocateAll 37 5 RelocateAll 38 6 RelocateAll 39 7 RelocateAll 40 8 RelocateAll 41 9 RelocateAll 42 10 RelocateAll 43 11 RelocateAll 44 12 RelocateAll 46 14 RelocateAll 47 15 RelocateAll 48 16 RelocateAll 50 18 RelocateAll 51 19 RelocateAll 52 20 RelocateAll 53 21 RelocateAll 54 22 RelocateAll 55 23 RelocateAll 56 24 RelocateAll 57 25 RelocateAll 58 26 RelocateAll 59 27 RelocateAll 60 28 RelocateAll 61 29 RelocateAll 62 30 DoneWithTurn END_COMMAND >> This C0MMAND gives a random message to the player when they are an inch >> tall, only if they enter inputs of more the one word, ie. when the player >> is an inch tall, they are allowed only one word inputs. COMMAND ANY Not VerbIsDirection Not NounIsNumber 0 AtLocationGT 33 AtLocationLT 63 RandomMessage 74 79 DoneWithTurn END_COMMAND >> This gives a message if player enters an input that references the VOID, >> when the player is in the Void. COMMAND ANY AtLocation 31 NounIsNumber 344 DescribeThing 344 DoneWithTurn END_COMMAND >> This gives a general message about the GROUND, if it is present. This is >> used in Oz. The GROUND is a CREATURE, which is defined as a GROUPMEMBER. >> This means that the ground follows the player while s/he is in Oz, thus only >> one CREATURE is necessary to have a ground in all of the rooms of Oz. COMMAND ANY NounPresent NounIsNumber 345 DescribeThing 345 DoneWithTurn END_COMMAND >> Gives a general message that the player should be more specific about which >> chest they would like to VERB. This allows the word CHEST to be recognized >> without having to have three different chests for each different name. COMMAND ANY AtLocation 67 NounIsNumber 355 Or ObjectIsNumber 335 PrintMessage 68 DoneWithTurn END_COMMAND >> This is the second half of the earlier group involved with moving walls >> around and turning RoomFlags on and off appropriately. When a particular >> wall is used in an input eg. EXAMINE NORTH WALL, this set moves the correct >> wall into the room, only if the RoomFlag corresponding to it is defined as >> On. This means that the wall will not be sent into rooms with no RoomFlag >> defined, ie. in the case of locations with no walls; in the forest, in Oz, >> in Hell etc. See the ROOM definitions in the THIEF.DAT file COMMAND ANY RoomFlagOn 24 NounIsNumber 294 Or ObjectIsNumber 294 PutInCurrentRoom 294 ToggleRoomFlag 24 END_COMMAND COMMAND ANY RoomFlagOn 25 NounIsNumber 295 Or ObjectIsNumber 295 PutInCurrentRoom 295 ToggleRoomFlag 25 END_COMMAND COMMAND ANY RoomFlagOn 26 NounIsNumber 296 Or ObjectIsNumber 296 PutInCurrentRoom 296 ToggleRoomFlag 26 END_COMMAND COMMAND ANY RoomFlagOn 27 NounIsNumber 297 Or ObjectIsNumber 297 PutInCurrentRoom 297 ToggleRoomFlag 27 END_COMMAND COMMAND ANY RoomFlagOn 28 NounIsNumber 298 Or ObjectIsNumber 298 PutInCurrentRoom 298 ToggleRoomFlag 28 END_COMMAND COMMAND ANY RoomFlagOn 29 NounIsNumber 299 Or ObjectIsNumber 299 PutInCurrentRoom 299 ToggleRoomFlag 29 END_COMMAND >> Fairly simple. This C0MMAND prints a different version message. The˙CREATURE >> is used because I ran out of messages, and had to use the CREATURE_DESCR to >> make everything fit. COMMAND VERSION DescribeThing 306 DoneWithTurn END_COMMAND >> This group is all the PUT C0MMANDs. >> This one deals with the player trying to get rid of their fingers by putting >> them someplace. It won't work. COMMAND PUT FINGERS ON ANY Not ObjectIsNumber 0 DescribeThing 307 DoneWithTurn END_COMMAND >> This one tells the player that, while they are standing on the stool, they >> cannot reach the object that they wish to put the item on. The only >> exception is PUT HOLE ON ROOF (NOUNs 290 and 298 respectively), as the >> player needs to be standing on the stool to be able to stick the portable >> hole on the roof. COMMAND PUT ANY Present 292 Not NounIsNumber 290 Not ObjectIsNumber 298 NounIsCarrying ObjectPresent PrintMessage 137 DoneWithTurn END_COMMAND >> This group is specifically for putting the portable hole various places. >> This one is for if the player is not in the same room with the hole. Since >> the portable hole stuck on the wall is NOT the NOUN 290, this also covers >> instances when the hole is in the room, but is stuck onto the wall. >> Therefore, the player must be carrying the unattached portable hole (or it >> is lying on the ground) in all of the C0MMANDs following this one. By >> testing this condition right at the start, it is possible to eliminate >> repetitive testing in each individual C0MMAND. COMMAND PUT HOLE Not Present 290 PrintMessage 107 DoneWithTurn END_COMMAND >> This C0MMAND is for sticking the portable hole on the arched door in the >> Small Room and in the Large Room, ie. from both sides. It isn't possible. COMMAND PUT HOLE ON DOOR ObjectPresent ObjectIsNumber 200 Or ObjectIsNumber 241 PrintMessage 93 DoneWithTurn END_COMMAND >> This checks that the player is trying to stick the hole onto a wall, which >> are numbered between 294 and 299. If they are trying to attach it to any >> other kind of object, a "that won't work" kind of message is displayed. COMMAND PUT HOLE ON ANY MakeVarObjectNum 2 VariableLT 2 294 Or VariableGT 2 299 PrintMessage 106 DoneWithTurn END_COMMAND >> This is for the final stages of the game. If the open GOLDEN DOOR is >> present, the hole can be stuck onto the north wall of that room. A flag is >> set to indicate that this has happened, so that if the player removes their >> glasses (the only thing that allows them to see the GOLDEN DOOR) and then >> replaces them, the DOOR and the portable hole can be removed from the room, >> and then replaced correctly COMMAND PUT HOLE ON NORTH WALL Present 223 PrintMessage 94 Destroy 290 SendToRoom 224 12 SetVariableTo 5 91 TurnFlagOn 3 DoneWithTurn END_COMMAND >> The following (very long) group works like this: at any given location, it >> may be possible to stick the hole onto any given wall. If it is possible, >> then a message is displayed and the unattached portable hole is destroyed >> (sent to 0). The correct version of the attached hole is then sent to the >> room, and the corresponding attached hole for the OTHER side of the wall is >> sent to the appropriate room. Then the variables that hold the values of the >> adjacent room are set with the right values. >> For example, in the first C0MMAND below, >> 1) the unattached hole is destroyed >> 2) a message is displayed >> 3) the "on north wall" hole is sent to room 3 >> 4) the "on south wall" hole is put in room 4, which is north of room 3. >> 5) the variable 5, which holds the value of the room to the north of the >> hole-point, is set to 4 >> 6) the variable 6, which holds the value of the room to the south of the >> hole-point is set to 3 >> If it is not possible to attach the hole to the specified wall, a random >> message is printed. If there is already a door there, a message is printed. COMMAND PUT HOLE ON NORTH WALL AtLocation 3 RandomMessage 95 97 Destroy 290 SendToRoom 261 3 SendToRoom 262 4 SetVariableTo 5 4 SetVariableTo 6 3 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON NORTH WALL AtLocation 4 RandomMessage 95 97 Destroy 290 SendToRoom 261 4 SendToRoom 262 25 SetVariableTo 5 25 SetVariableTo 6 4 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON NORTH WALL AtLocation 5 RandomMessage 95 97 Destroy 290 SendToRoom 261 5 SendToRoom 262 7 SetVariableTo 5 7 SetVariableTo 6 5 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON NORTH WALL AtLocation 15 RandomMessage 95 97 Destroy 290 SendToRoom 261 15 SendToRoom 262 29 SetVariableTo 5 29 SetVariableTo 6 15 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON NORTH WALL AtLocation 18 RandomMessage 95 97 Destroy 290 SendToRoom 261 18 SendToRoom 262 30 SetVariableTo 5 30 SetVariableTo 6 18 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON NORTH WALL AtLocation 21 RandomMessage 95 97 Destroy 290 SendToRoom 261 21 SendToRoom 262 9 SetVariableTo 5 9 SetVariableTo 6 21 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON NORTH WALL AtLocation 23 RandomMessage 95 97 Destroy 290 SendToRoom 261 23 SendToRoom 262 11 SetVariableTo 5 11 SetVariableTo 6 23 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON NORTH WALL AtLocation 24 RandomMessage 95 97 Destroy 290 SendToRoom 261 24 SendToRoom 262 26 SetVariableTo 5 26 SetVariableTo 6 24 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON NORTH WALL AtLocation 30 RandomMessage 95 97 Destroy 290 SendToRoom 261 30 SendToRoom 262 28 SetVariableTo 5 28 SetVariableTo 6 30 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON NORTH WALL Not AtLocation 7 AtLocationGT 5 AtLocationLT 10 Or AtLocation 10 Not Present 221 Or AtLocationGT 10 AtLocationLT 14 Or AtLocation 17 RandomMessage 98 100 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON NORTH WALL Not AtLocation 22 AtLocationLT 31 PrintMessage 101 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON SOUTH WALL AtLocation 4 RandomMessage 95 97 Destroy 290 SendToRoom 261 3 SendToRoom 262 4 SetVariableTo 5 4 SetVariableTo 6 3 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON SOUTH WALL AtLocation 7 RandomMessage 95 97 Destroy 290 SendToRoom 261 5 SendToRoom 262 7 SetVariableTo 5 7 SetVariableTo 6 5 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON SOUTH WALL AtLocation 9 RandomMessage 95 97 Destroy 290 SendToRoom 261 21 SendToRoom 262 9 SetVariableTo 5 9 SetVariableTo 6 21 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON SOUTH WALL AtLocation 11 RandomMessage 95 97 Destroy 290 SendToRoom 261 23 SendToRoom 262 11 SetVariableTo 5 11 SetVariableTo 6 23 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON SOUTH WALL AtLocation 25 RandomMessage 95 97 Destroy 290 SendToRoom 261 4 SendToRoom 262 25 SetVariableTo 5 25 SetVariableTo 6 4 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON SOUTH WALL AtLocation 26 RandomMessage 95 97 Destroy 290 SendToRoom 261 24 SendToRoom 262 26 SetVariableTo 5 26 SetVariableTo 6 24 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON SOUTH WALL AtLocation 28 RandomMessage 95 97 Destroy 290 SendToRoom 261 30 SendToRoom 262 28 SetVariableTo 5 28 SetVariableTo 6 30 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON SOUTH WALL AtLocation 29 RandomMessage 95 97 Destroy 290 SendToRoom 261 15 SendToRoom 262 29 SetVariableTo 5 29 SetVariableTo 6 15 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON SOUTH WALL AtLocation 30 RandomMessage 95 97 Destroy 290 SendToRoom 261 18 SendToRoom 262 30 SetVariableTo 5 30 SetVariableTo 6 18 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON SOUTH WALL AtLocation 3 Or AtLocation 6 Or AtLocation 13 Or AtLocationGT 15 AtLocationLT 21 RandomMessage 98 100 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON SOUTH WALL Not AtLocation 22 AtLocationLT 31 PrintMessage 101 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON EAST WALL AtLocation 5 RandomMessage 95 97 Destroy 290 SendToRoom 263 5 SendToRoom 264 21 SetVariableTo 7 21 SetVariableTo 8 5 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON EAST WALL AtLocation 10 RandomMessage 95 97 Destroy 290 SendToRoom 263 10 SendToRoom 264 11 SetVariableTo 7 11 SetVariableTo 8 10 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON EAST WALL AtLocation 18 RandomMessage 95 97 Destroy 290 SendToRoom 263 18 SendToRoom 264 16 SetVariableTo 7 16 SetVariableTo 8 18 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON EAST WALL AtLocation 23 RandomMessage 95 97 Destroy 290 SendToRoom 263 23 SendToRoom 264 14 SetVariableTo 7 14 SetVariableTo 8 23 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON EAST WALL AtLocation 24 RandomMessage 95 97 Destroy 290 SendToRoom 263 24 SendToRoom 264 2 SetVariableTo 7 2 SetVariableTo 8 24 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON EAST WALL AtLocation 29 RandomMessage 95 97 Destroy 290 SendToRoom 263 29 SendToRoom 264 13 SetVariableTo 7 13 SetVariableTo 8 29 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON EAST WALL AtLocation 8 Or AtLocationGT 11 AtLocationLT 18 RandomMessage 98 100 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON EAST WALL Not AtLocation 22 AtLocationLT 31 PrintMessage 101 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON WEST WALL AtLocation 4 PrintMessage 138 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON WEST WALL AtLocation 2 RandomMessage 95 97 Destroy 290 SendToRoom 263 24 SendToRoom 264 2 SetVariableTo 7 2 SetVariableTo 8 24 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON WEST WALL AtLocation 11 RandomMessage 95 97 Destroy 290 SendToRoom 263 10 SendToRoom 264 11 SetVariableTo 7 11 SetVariableTo 8 10 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON WEST WALL AtLocation 13 RandomMessage 95 97 Destroy 290 SendToRoom 263 29 SendToRoom 264 13 SetVariableTo 7 13 SetVariableTo 8 29 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON WEST WALL AtLocation 14 RandomMessage 95 97 Destroy 290 SendToRoom 263 23 SendToRoom 264 14 SetVariableTo 7 14 SetVariableTo 8 23 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON WEST WALL AtLocation 16 RandomMessage 95 97 Destroy 290 SendToRoom 263 18 SendToRoom 264 16 SetVariableTo 7 16 SetVariableTo 8 18 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON WEST WALL AtLocation 21 RandomMessage 95 97 Destroy 290 SendToRoom 263 5 SendToRoom 264 21 SetVariableTo 7 21 SetVariableTo 8 5 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON WEST WALL AtLocationLT 9 Or AtLocation 17 RandomMessage 98 100 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON WEST WALL Not AtLocation 22 AtLocationLT 31 PrintMessage 101 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON ROOF Present 292 AtLocationLT 5 Or AtLocationGT 14 AtLocationLT 21 Or AtLocation 24 Or AtLocation 30 PrintMessage 102 Destroy 290 PutInCurrentRoom 265 SetVariableTo 9 63 MakeVarRoomNum 10 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON ROOF Present 292 Present 298 PrintMessage 103 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON ROOF Present 298 PrintMessage 104 DoneWithTurn END_COMMAND COMMAND PUT HOLE ON FLOOR Present 299 PrintMessage 105 Destroy 290 PutInCurrentRoom 266 MakeVarRoomNum 9 SetVariableTo 10 64 TurnCounterOn 5 DoneWithTurn END_COMMAND >> This one is for putting the coin in the slot. For some strange reason, this >> C0MMAND wouldn't recognise the word SLOT in the C0MMAND, probably because I >> have another slot defined elsewhere. As a result, I have just checked the >> number of the object to see whether it is the correct slot or not. >> If everything is as it should be, the player is let through the turnstile, >> and moved to room 4, the Railway Station. The coin is lost forever. COMMAND PUT COIN IN ANY ObjectIsNumber 238 Present 280 AtLocation 24 PrintMessage 110 Destroy 280 GoToRoom 4 DoneWithTurn END_COMMAND >> In this C0MMAND, when the Golden Door is visible AND closed, and the player >> has the amulet, the open GOLDEN DOOR is swapped for the closed GOLDEN DOOR, >> and the amulet is taken away. A flag is turned on to indicate that the >> DOOR is open, so that if the player removes the glasses, and then puts them >> on again, the open GOLDEN DOOR can be removed from the room and then >> restored correctly. the player scores a point on their true score for this >> action. COMMAND PUT AMULET IN INDENTATION Present 222 Present 268 PrintMessage 111 SwapLocations 222 223 Destroy 268 TurnFlagOn 2 AddToVariable 1 1 DoneWithTurn END_COMMAND >> These two C0MMANDs deal with the two cases of cranking the arched door; when >> it closed, and when it is open. In each case the result is that the >> door is opposite to what it was before. The crank always winds up on the >> floor, regardless of whether the player was carrying it or not. >> Note that this C0MMAND swaps doors and arches on both sides of the wall. COMMAND PUT CRANK IN SLOT Present 267 Present 200 PrintMessage 108 SwapLocations 200 201 SwapLocations 241 242 DropIt 267 DoneWithTurn END_COMMAND COMMAND PUT CRANK IN SLOT Present 267 Present 201 PrintMessage 109 SwapLocations 200 201 SwapLocations 241 242 DropIt 267 DoneWithTurn END_COMMAND >> The next five C0MMANDs deal with clicking. >> 1) clicking heels without wearing the slippers. This just produces a >> "that won't work" message. >> 2) clicking heels, after having killed the witch, in the Witch's Castle. A >> variable is used to count the number of clicks. When it reaches three, an >> expanded message is displayed, and the player is moved to the repaired >> version of Kansas (which is not exactly identical to the original). >> Paintings are destroyed; both the original "Kansas" picture, and the >> "Post-Tornado Kansas" picture. Then the painting of the "Night Sky" is >> moved to the Gallery, effectively cutting off access to Kansas and Oz >> after that point. Also, the picture of the forest is moved into the >> repaired Kansas, so that the player can get back to the "Ordinary" rooms. >> 3) This one covers clicking the heels when the Witch is still alive in the >> Castle, or the player is not in the Castle at all. Either way, the basic >> "Nothing happens" message is all they get for their efforts. It isn't >> possible to leave the Witch's Castle via the Ruby Slippers unless the >> Witch is dead. >> 4) Clicking your fingers gets a "Click" message. This C0MMAND also covers >> the cases when the player clicks their heels and they have not yet >> clicked them three times, ie. the C0MMAND in (2) above will be invalid >> for the first two times that the player clicks their heels. This C0MMAND >> prints the "Click message for those two times. >> 5) This is a general catch-all for clicking unclickable objects. COMMAND CLICK HEELS Not IsWearing 270 PrintMessage 58 DoneWithTurn END_COMMAND COMMAND CLICK HEELS AtLocation 88 Present 259 AddToVariable 12 1 VariableEquals 12 3 PrintMessage 140 Destroy 203 Destroy 204 SendToRoom 205 3 SendToRoom 255 77 GoToRoom 75 AddToVariable 1 1 DoneWithTurn END_COMMAND COMMAND CLICK HEELS Present 300 Or Not AtLocation 88 PrintMessage 141 DoneWithTurn END_COMMAND COMMAND CLICK ANY NounIsNumber 270 Or NounIsNumber 293 PrintMessage 142 DoneWithTurn END_COMMAND COMMAND CLICK ANY PrintMessage 143 DoneWithTurn END_COMMAND >> This next group of C0MMANDs is for quitting. By defining the conditions for >> quitting myself, it was possible to insert a ranking before the moves/score >> display. Also, if QUIT remains a standard function, it can sometimes >> override an ANY C0MMAND. Since timing was critical in some of the sections >> of this game, I opted not have any interference. Testing with PromptForNo in >> the first C0MMAND, means that all C0MMANDs after it has been answered YES. COMMAND QUIT PromptForNo PrintMessage 37 DoneWithTurn END_COMMAND COMMAND QUIT PrintMessage 36 VariableEquals 1 0 PrintMessage 30 EndGame DoneWithTurn END_COMMAND COMMAND QUIT VariableEquals 1 1 Or VariableEquals 1 2 PrintMessage 31 EndGame DoneWithTurn END_COMMAND COMMAND QUIT VariableEquals 1 3 Or VariableEquals 1 4 PrintMessage 32 EndGame DoneWithTurn END_COMMAND COMMAND QUIT VariableEquals 1 5 Or VariableEquals 1 6 PrintMessage 33 EndGame DoneWithTurn END_COMMAND COMMAND QUIT VariableEquals 1 7 Or VariableEquals 1 8 PrintMessage 34 EndGame DoneWithTurn END_COMMAND COMMAND QUIT VariableEquals 1 9 PrintMessage 35 EndGame DoneWithTurn END_COMMAND >> These give a ranking message based on variable 1 (the true score). COMMAND RANK VariableEquals 1 0 PrintMessage 30 DoneWithTurn END_COMMAND COMMAND RANK VariableEquals 1 1 Or VariableEquals 1 2 PrintMessage 31 DoneWithTurn END_COMMAND COMMAND RANK VariableEquals 1 3 Or VariableEquals 1 4 PrintMessage 32 DoneWithTurn END_COMMAND COMMAND RANK VariableEquals 1 5 Or VariableEquals 1 6 PrintMessage 33 DoneWithTurn END_COMMAND COMMAND RANK VariableEquals 1 7 Or VariableEquals 1 8 PrintMessage 34 DoneWithTurn END_COMMAND COMMAND RANK VariableEquals 1 9 PrintMessage 35 DoneWithTurn END_COMMAND >> This was "taken over" from the standard AGT functions simply so that it >> wouldn't interfere with ANY C0MMANDs. See QUIT (above). COMMAND SCORE ShowScore DoneWithTurn END_COMMAND >> This performs the same as MOVE CLOTHES and a couple of other variants; it >> just reveals the pot of cream to the player. It tests first that it has not >> already been revealed, with the IsNowhere 283. COMMAND LOOK UNDER CLOTHES Present 260 IsNowhere 283 PrintMessage 62 PutInCurrentRoom 283 DoneWithTurn END_COMMAND >> Taken over to avoid interference; see QUIT (above). COMMAND LOOK NounIsNumber 0 LookAtRoom DoneWithTurn END_COMMAND >> This redirects sentences such as LOOK THROUGH HOLE, LOOK UNDER BED etc, >> which had previously caused a redisplay of the room description. COMMAND LOOK ANY RedirectTo EXAMINE $NOUN$ END_COMMAND >> This C0MMAND prints a message about swimming in the ocean only. COMMAND SWIM AtLocation 7 PrintMessage 243 DoneWithTurn END_COMMAND >> This C0MMAND sends the player to In The Waterfall, first removing everything >> the player is wearing and carrying (with the exception of your finger). >> Since the player could be wearing the glasses at this point, this C0MMAND >> also destroys the GOLDEN DOOR (both open and closed) and the portable hole >> which might be stuck on the wall there. If the player is not wearing the >> glasses, this will have no effect. If the player IS wearing them, then these >> items should be removed from the North Hall. When the player gets out of > the Waterfall, and puts the glasses on again, flags 2 and 3 are used to >> determine the state of the door and hole, and replace them in the room as >> necessary. COMMAND SWIM AtLocation 13 DropEverything RemoveEverything WearIt 293 Destroy 222 Destroy 223 Destroy 224 PrintMessage 244 GoToRoom 33 DoneWithTurn END_COMMAND >> This merely gives a general message, so that the ever-popular "You can't do >> that" default message is not used yet again. COMMAND DESTROY Not NounIsNumber 0 PrintMessage 245 DoneWithTurn END_COMMAND >> These next three C0MMANDs deal with the player opening a chest in A Clearing >> In Hell that is the wrong one, ie. S Lived and N O'Mead. The first gives the >> player a second chance if they are wearing the opal ring. The others kill >> the player if they open the chest. The messages are different for each >> chest, hence the separate C0MMANDs. COMMAND OPEN AtLocation 67 FlagOff 9 IsWearing 289 NounIsNumber 252 Or NounIsNumber 253 PrintMessage 236 TurnFlagOn 9 DoneWithTurn END_COMMAND COMMAND OPEN AtLocation 67 NounIsNumber 253 PrintMessage 234 EndGame DoneWithTurn END_COMMAND COMMAND OPEN AtLocation 67 NounIsNumber 252 PrintMessage 235 EndGame DoneWithTurn END_COMMAND >> These two have the same effect as the earlier PUT CRANK IN SLOT. COMMAND OPEN DOOR WITH CRANK Present 267 Present 200 PrintMessage 108 SwapLocations 200 201 SwapLocations 241 242 DropIt 267 DoneWithTurn END_COMMAND COMMAND CLOSE DOOR WITH CRANK Present 267 Present 201 PrintMessage 109 SwapLocations 200 201 SwapLocations 241 242 DropIt 267 DoneWithTurn END_COMMAND >> This pair is for displaying a message when the player selects brief or >> verbose. Previously, there was no message to indicate what had happened. COMMAND BRIEF PrintMessage 65 FlagOff 15 PrintMessage 67 TurnFlagOn 15 END_COMMAND COMMAND VERBOSE PrintMessage 66 END_COMMAND >> When the player orders something, the catalogue must be present. COMMAND ORDER Not Present 288 PrintMessage 223 DoneWithTurn END_COMMAND >> This C0MMAND checks whether the ordered item is one of those that it is >> possible to order, ie. whether the item is listed in the catalogue. COMMAND ORDER MakeVarNounNum 2 VariableLT 2 267 Or VariableGT 2 274 VariableLT 2 351 Or VariableGT 2 354 PrintMessage 224 DoneWithTurn END_COMMAND >> At this point, all following C0MMANDs have as implicit conditions that the >> catalogue is present, and that the item ordered is legal. This C0MMAND asks >> for the account number; if it is not correct, and is not 0 (which cancels), >> the catalogue is taken away from the player. COMMAND ORDER PrintMessage 225 GetNumberInput Not NumberEquals 55748761 Not NumberEquals 0 PrintMessage 226 Destroy 288 DoneWithTurn END_COMMAND >> If the entered number is 0, the order is cancelled. COMMAND ORDER NumberEquals 0 PrintMessage 227 DoneWithTurn END_COMMAND >> This group of three is for those items in the catalogue which are legal to >> order, but which the player will not be able to receive for some reason, >> eg. can't afford them, not available, etc. COMMAND ORDER NounIsNumber 351 PrintMessage 228 DoneWithTurn END_COMMAND COMMAND ORDER NounIsNumber 352 PrintMessage 229 DoneWithTurn END_COMMAND COMMAND ORDER NounIsNumber 353 Or NounIsNumber 354 RandomMessage 230 231 DoneWithTurn END_COMMAND >> Now we're on to the group of items which can be ordered through the >> catalogue, and which the player can receive. This C0MMAND removes the >> hanging amulet from the Treasure Room, so that there is no doubling up if >> the player orders the amulet through the catalogue. COMMAND ORDER 9984 Destroy 214 END_COMMAND >> This is the C0MMAND that actually gives the player the ordered item. Since >> the numbers listed in the catalogue are defined as synonyms for the >> corresponding NOUNs, it is only necessary to send the NOUN to the room. >> The catalogue is taken away from the player. A point is added to the true >> score for this action. COMMAND ORDER PrintMessage 232 PutNounInCurrentRoom Destroy 288 AddToVariable 1 1 DoneWithTurn END_COMMAND >> First check if the catalogue is present... COMMAND READ CATALOGUE Not Present 288 QuitAllCmds END_COMMAND >> ...then ask for the number of the page to read. >> Each of these C0MMANDs turn on the RoomFlags corresponding to the items >> listed on the page. This allows the player to order the items if they are >> using the menu-input system. COMMAND READ CATALOGUE PrintMessage 215 GetNumberInput NumberEquals 1 PrintMessage 216 TurnRoomFlagOn 1 TurnRoomFlagOn 2 TurnRoomFlagOn 3 TurnRoomFlagOn 4 DoneWithTurn END_COMMAND COMMAND READ CATALOGUE NumberEquals 2 PrintMessage 217 TurnRoomFlagOn 5 TurnRoomFlagOn 6 TurnRoomFlagOn 7 TurnRoomFlagOn 8 DoneWithTurn END_COMMAND COMMAND READ CATALOGUE NumberEquals 3 PrintMessage 218 TurnRoomFlagOn 9 TurnRoomFlagOn 10 TurnRoomFlagOn 11 TurnRoomFlagOn 12 DoneWithTurn END_COMMAND COMMAND READ CATALOGUE NumberEquals 4 PrintMessage 219 TurnRoomFlagOn 13 TurnRoomFlagOn 14 TurnRoomFlagOn 15 TurnRoomFlagOn 16 TurnRoomFlagOn 17 DoneWithTurn END_COMMAND COMMAND READ CATALOGUE NumberEquals 5 PrintMessage 220 TurnRoomFlagOn 18 TurnRoomFlagOn 19 TurnRoomFlagOn 20 TurnRoomFlagOn 21 DoneWithTurn END_COMMAND COMMAND READ CATALOGUE NumberEquals 6 PrintMessage 221 TurnRoomFlagOn 22 TurnRoomFlagOn 23 DoneWithTurn END_COMMAND >> This C0MMAND is for if the player enters a page number that does not exist. COMMAND READ CATALOGUE PrintMessage 222 DoneWithTurn END_COMMAND >> This one tells the player that they already have a pail full of water, since >> NOUN 286 is the PAIL OF WATER. COMMAND FILL PAIL WITH ANY Present 286 ObjectIsNumber 215 Or ObjectIsNumber 225 Or ObjectIsNumber 233 Or ObjectIsNumber 286 PrintMessage 204 DoneWithTurn END_COMMAND >> If the player tries to fill the pail in the ocean, it is taken away. (The >> pail, I mean, not the ocean.) COMMAND FILL PAIL WITH WATER Present 215 Present 285 PrintMessage 205 Destroy 285 DoneWithTurn END_COMMAND >> This is the "success" C0MMAND for filling the pail with water. The PAIL OF >> WATER is placed inside the pail itself. This makes it easy to remove the >> water later on, in a variety of circumstances including throwing it, >> without having to swap things around. The defaults deal with such things. COMMAND FILL PAIL WITH ANY ObjectIsNumber 225 Present 225 Present 285 PrintMessage 206 SendToRoom 286 285 DoneWithTurn END_COMMAND >> This gives a message if the player tries to fill the pail from the sealed >> aquarium. It isn't possible. COMMAND FILL PAIL WITH WATER Present 233 Present 285 PrintMessage 207 DoneWithTurn END_COMMAND >> The pail can't be filled with anything but water, and this C0MMAND enforces >> that, checking first that the OBJECT is present. COMMAND FILL PAIL WITH ANY Present 285 ObjectPresent PrintMessage 208 DoneWithTurn END_COMMAND >> Nothing else but the pail can be filled. Both the NOUN and the OBJECT must >> be present, as the default will take care of other cases. COMMAND FILL ANY WITH ANY NounPresent ObjectPresent PrintMessage 213 DoneWithTurn END_COMMAND >> The message from this one tells the player to specify what to put into the >> OBJECT they have chosen to fill. COMMAND FILL ANY NounPresent ObjectIsNumber 0 PrintMessage 209 DoneWithTurn END_COMMAND >> The next group is for emptying things. The first is for the pail that is >> full of water; the water is removed. The second is for a pail that has no >> water in it to begin with. The C0MMAND EMPTY ANY covers the player trying to >> empty any other objects, which is not possible. COMMAND EMPTY PAIL Present 286 ObjectIsNumber 0 PrintMessage 210 Destroy 286 DoneWithTurn END_COMMAND COMMAND EMPTY PAIL Present 285 ObjectIsNumber 0 PrintMessage 211 DoneWithTurn END_COMMAND COMMAND EMPTY ANY NounPresent ObjectIsNumber 0 PrintMessage 212 DoneWithTurn END_COMMAND >> This saves C0MMANDs in doubling up, by redirecting all KILL WITH SWORDs to >> CUT WITH SWORD, which is effectively the same. COMMAND KILL ANY WITH LIGHTSABRE RedirectTo CUT $NOUN$ WITH LIGHTSABRE END_COMMAND >> Message that the thing to be killed is not present. The Not NounIsNumber 0 >> is to check that the input is KILL SOMETHING, and not just KILL by itself. >> There is a different response for KILL by itself. COMMAND KILL Not NounIsNumber 0 Not NounPresent PrintMessage 203 DoneWithTurn END_COMMAND >> Simple message display; nothing happens when you attack the GUARDSMAN >> without the lightsabre. COMMAND KILL GUARDSMAN PrintMessage 199 DoneWithTurn END_COMMAND >> The next two C0MMANDs cover trying to kill the plant, which is usually >> fatal. The first gives the player a second chance if they are wearing the >> Second Chance ring, and sends them to the Statue Room. The second C0MMAND >> simply kills them. COMMAND KILL PLANT IsWearing 289 FlagOff 9 PrintMessage 189 GoToRoom 23 TurnFlagOn 9 DoneWithTurn END_COMMAND COMMAND KILL PLANT PrintMessage 200 EndGame DoneWithTurn END_COMMAND >> Tyring to attack the Witch without a valid weapon is futile. COMMAND KILL WITCH PrintMessage 201 DoneWithTurn END_COMMAND >> This is the message for an input of KILL by itself. COMMAND KILL NounIsNumber 0 PrintMessage 202 DoneWithTurn END_COMMAND >> Cutting things is impossible when the lightsabre is off (NOUN 274). COMMAND CUT ANY WITH LIGHTSABRE IsCarrying 274 PrintMessage 185 DoneWithTurn END_COMMAND >> Cutting things is also impossible if the player does not have the lightsabre >> in his/her possession. COMMAND CUT ANY WITH LIGHTSABRE Not IsCarrying 275 PrintMessage 186 DoneWithTurn END_COMMAND >> The previous two C0MMANDs have tested that the player is armed with an (on) >> lightsabre. The next one checks that the player is in the Sealed Room (since >> this is the only place the string (232) can possibly be). It then destroys >> the string and gives the player the mobile white sphere in place of the >> immobile one. A point is added to the true score for this action. COMMAND CUT STRING WITH LIGHTSABRE Present 232 PrintMessage 187 Destroy 232 SwapLocations 231 276 AddToVariable 1 1 DoneWithTurn END_COMMAND >> Cut/killing the Guardsman is simply a message event. Nothing else happens. COMMAND CUT GUARDSMAN WITH LIGHTSABRE Present 239 PrintMessage 188 DoneWithTurn END_COMMAND >> Again there are two conditions for killing the plant. In the first, the >> player is saved by the Second Chance ring and sent to the Statue Room. The >> variable that counts the number of moves in the Plant Room is set to its >> maximum; this means that the player will be killed immediately if s/he >> returns. In the second, the player is killed. COMMAND CUT PLANT WITH LIGHTSABRE Present 243 IsWearing 289 FlagOff 9 PrintMessage 189 GoToRoom 23 SetVariableTo 14 6 TurnFlagOn 9 DoneWithTurn END_COMMAND COMMAND CUT PLANT WITH LIGHTSABRE Present 243 PrintMessage 190 EndGame DoneWithTurn END_COMMAND >> Killing the Witch with the lightsabre is a futile effort. The Witch simply >> turns the lightsabre off (SwapLocations 274 275). COMMAND CUT WITCH WITH LIGHTSABRE Present 300 PrintMessage 191 SwapLocations 274 275 DoneWithTurn END_COMMAND >> These next three cover trying to cut up other things. The first is for those >> things which are parts of the scenery and cannot be destroyed by cutting. >> The second is for those that can be destroyed; they are. >> The third covers trying to cut anything without specifying an implement to >> use for the job. COMMAND CUT ANY WITH LIGHTSABRE NounPresent NounWEIGHTGT 100 Or Not NounIsMovable RandomMessage 192 194 DoneWithTurn END_COMMAND COMMAND CUT ANY WITH LIGHTSABRE NounPresent RandomMessage 195 197 DestroyNoun DoneWithTurn END_COMMAND COMMAND CUT Not NounIsNumber 0 NounPresent PrintMessage 198 DoneWithTurn END_COMMAND >> The following (long) group is for rubbing things with the vanishing cream. >> The first C0MMAND tests that the player has the pot of cream. The next one >> is for the case when there is no cream left in the pot. The third is for >> when the player rubs the cream on an object when it is immovable and >> therefore cannot be made to vanish. After that, the C0MMANDs are for making >> things vanish in each individual room, by sending them to a nearby room and >> displaying the appropriate message. The counter of the amount of cream left >> is incremented by one. COMMAND RUB ANY WITH CREAM Not IsCarrying 283 PrintMessage 183 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM VariableEquals 15 9 NounPresent PrintMessage 182 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent Not NounIsMovable Or NounWeightGT 100 PrintMessage 181 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 2 PrintMessage 180 SendNounToRoom 24 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 3 PrintMessage 177 SendNounToRoom 4 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 4 PrintMessage 177 SendNounToRoom 25 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 5 PrintMessage 178 SendNounToRoom 21 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 7 PrintMessage 179 SendNounToRoom 5 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 8 PrintMessage 179 SendNounToRoom 10 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 9 PrintMessage 179 SendNounToRoom 21 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 10 PrintMessage 178 SendNounToRoom 11 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 11 PrintMessage 179 SendNounToRoom 23 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 12 PrintMessage 179 SendNounToRoom 14 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 13 PrintMessage 180 SendNounToRoom 29 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 14 PrintMessage 180 SendNounToRoom 23 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 15 PrintMessage 177 SendNounToRoom 29 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 16 PrintMessage 180 SendNounToRoom 18 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 17 PrintMessage 177 SendNounToRoom 19 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 18 PrintMessage 177 SendNounToRoom 30 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 19 PrintMessage 179 SendNounToRoom 17 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 20 PrintMessage 177 SendNounToRoom 24 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 21 PrintMessage 180 SendNounToRoom 5 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 22 PrintMessage 179 SendNounToRoom 27 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 23 PrintMessage 177 SendNounToRoom 11 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 24 PrintMessage 178 SendNounToRoom 2 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 25 PrintMessage 179 SendNounToRoom 4 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 26 PrintMessage 179 SendNounToRoom 24 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 27 PrintMessage 178 SendNounToRoom 28 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 28 PrintMessage 179 SendNounToRoom 30 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 29 PrintMessage 179 SendNounToRoom 15 AddToVariable 15 1 DoneWithTurn END_COMMAND COMMAND RUB ANY WITH CREAM NounPresent AtLocation 30 PrintMessage 177 SendNounToRoom 28 AddToVariable 15 1 DoneWithTurn END_COMMAND >> This message is for errors in syntax; since it is not possible to send the >> OBJECT of a given sentence to a room, I was forced to limit the sentence to >> one with the item to be moved in the NOUN spot, eg. RUB˙STOOL˙WITH˙CREAM, >> where STOOL is the noun, instead of RUB˙CREAM˙ON˙STOOL, where STOOL is the >> object. COMMAND RUB CREAM ON ANY Present 283 ObjectPresent PrintMessage 176 DoneWithTurn END_COMMAND >> This is a general message for rubbing things, which does not involve the >> cream being used. COMMAND RUB ANY NounPresent PrintMessage 184 DoneWithTurn END_COMMAND >> For use in the Void, to give a special message there. COMMAND LIST EXITS AtLocation 31 PrintMessage 174 DoneWithTurn END_COMMAND >> If the player notices something about the North wall of the Hall in the room >> description, they may try to examine it. This C0MMAND covers that case, >> testing that the GOLDEN DOOR is not in the room, since the message given >> here does not fit with the GOLDEN DOOR being visible. COMMAND EXAMINE NORTH WALL AtLocation 12 Not Present 222 Not Present 223 PrintMessage 161 DoneWithTurn END_COMMAND >> These two are for giving the description of the pot of vanishing cream, >> based on the amount of cream left in the pot (variable 15). COMMAND EXAMINE SMALL POT Present 283 VariableLT 15 3 PrintMessage 162 DoneWithTurn END_COMMAND COMMAND EXAMINE SMALL POT Present 273 VariableLT 15 8 PrintMessage 163 DoneWithTurn END_COMMAND >> For turning the lightsabre on, covering both cases, ie. the sword is off => >> turns it on; the sword is already on => simple message. >> The third C0MMAND is for when the player does not have the lightsabre at >> all. The message is deliberately non-informative, in case the player is just >> trying the (on) input to see what it does. COMMAND ON Present 274 PrintMessage 156 SwapLocations 274 275 DoneWithTurn END_COMMAND COMMAND ON Present 275 PrintMessage 157 DoneWithTurn END_COMMAND COMMAND ON PrintMessage 160 DoneWithTurn END_COMMAND >> These three are the same as the above (on) C0MMANDs, except that they deal >> with turning the lightsabre off. COMMAND OFF Present 275 PrintMessage 158 SwapLocations 274 275 DoneWithTurn END_COMMAND COMMAND OFF Present 274 PrintMessage 159 DoneWithTurn END_COMMAND COMMAND OFF PrintMessage 160 DoneWithTurn END_COMMAND >> This redirects as it says. The listed numbers are all the creatures that it >> is appropriate to try to kill by throwing things at. COMMAND KILL ANY WITH ANY NounIsNumber 239 Or NounIsNumber 243 Or NounIsNumber 300 Or NounIsNumber 305 RedirectTo THROW $OBJECT$ AT $NOUN$ END_MESSAGE >> The player must remove anything they wish to throw. This is to stop them >> throwing the eyeglasses, which are important, since they affect the position >> of a number of other objects. This also stops the player from getting rid of >> their fingers by throwing them. COMMAND THROW ANY NounIsWearing PrintMessage 48 DoneWithTurn END_COMMAND >> This is an error message; the player can't throw anything they aren't >> carrying. COMMAND THROW ANY Not NounIsNumber 0 Not NounIsCarrying PrintMessage 172 DoneWithTurn END_COMMAND >> If the player tries to throw anything while they are in the void, the item >> is taken from them, and sent to In The Containment Cube, where they can >> later reclaim it, if they escape the void. Since DROP and THROW are synonyms >> in the Void, this C0MMAND also covers the input DROP SOMETHING. COMMAND THROW ANY Not NounIsNumber 0 AtLocation 31 PrintMessage 154 SendNounToRoom 32 DoneWithTurn END_COMMAND >> General response for throwing things. COMMAND THROW ANY Not NounIsNumber 0 ObjectIsNumber 0 PrintMessage 173 DropNoun DoneWithTurn END_COMMAND >> If the player throws anything out the window when at the Witch's Castle, the >> item is sent to 6th Floor And Falling. Later, if the player jumps out the >> window, the items are all swapped for corresponding CREATUREs which have >> descriptions appropriate to having been thrown 12 storeys. COMMAND THROW ANY THROUGH WINDOW Not NounIsNumber 0 AtLocation 88 PrintMessage 171 SendNounToRoom 90 DoneWithTurn END_COMMAND >> The same thing happens as above, when the player throws anything at the >> Witch. She deflects it out the window. COMMAND THROW ANY AT WITCH Not NounIsNumber 0 Present 300 PrintMessage 155 SendNounToRoom 90 DoneWithTurn END_COMMAND >> This is just a general message C0MMAND. It results in nothing more than the >> item finishing up on the ground. COMMAND THROW ANY AT GUARDSMAN Not NounIsNumber 0 Present 239 PrintMessage 153 DropNoun DoneWithTurn END_COMMAND >> The reason behind the use of this is very complicated. If you really have to >> know, send me a postcard, and I'll try to explain. COMMAND MAGIC_WORD Present 201 Or Present 307 MakeVarRoomNum 2 AddToVariable 2 25 GoToVariableRoom 2 DoneWithTurn END_COMMAND COMMAND MAGIC_WORD Present 242 GoToRoom 2 DoneWithTurn END_COMMAND >> This allows the player to exit the Treasure Room, if they have pushed the >> button, indicated by Flag 4 being on. COMMAND EAST AtLocation 6 FlagOn 4 PrintMessage 123 QuitAllCmds END_COMMAND >> This C0MMAND on the other hand, gives the player a second chance if they try >> to walk out without having pushed the button, as long as they are wearing >> the Second Chance ring. The player is sent to the Small Room. COMMAND EAST AtLocation 6 FlagOff 9 IsWearing 289 PrintMessage 124 TurnFlagOn 9 GoToRoom 2 DoneWithTurn END_COMMAND >> This C0MMAND, finally, simply kills the player if they try to walk >> out, without the ring, and without pushing the button. COMMAND EAST AtLocation 6 PrintMessage 125 EndGame DoneWithTurn END_COMMAND >> The next two C0MMANDs are for the case where the player tries to walk onto >> the railroad tracks. If they are wearing the Second Chance ring, they are >> spared from death, and are sent out into the turnstile room. If they are not >> wearing the ring, they are simply killed, and the game stops. COMMAND WEST AtLocation 4 FlagOff 9 IsWearing 289 PrintMessage 126 TurnFlagOn 9 GoToRoom 24 DoneWithTurn END_COMMAND COMMAND WEST AtLocation 4 PrintMessage 127 GoToRoom 101 EndGame DoneWithTurn END_COMMAND >> This one sends the player to the Kitchen if they try to walk west, past the >> Guardsman, when they are not an Inch Tall. COMMAND WEST AtLocation 25 PrintMessage 128 GoToRoom 26 DoneWithTurn END_COMMAND >> A simple message-display C0MMAND. COMMAND STEP THROUGH MIRROR AtLocation 5 PrintMessage 164 DoneWithTurn END_COMMAND >> The player is sent to 12th Floor And Falling, when they step through the >> window in the Witch's Castle. From there, in another C0MMAND, they are moved >> to 6th Floor And Falling, and then are killed. COMMAND STEP THROUGH WINDOW AtLocation 88 PrintMessage 165 GoToRoom 89 DoneWithTurn END_COMMAND >> If the player tries to stand on the stool, first it is checked whether the >> stool is on the floor. If it is, then the "standing on stool" is swapped >> into the room, which displays one line in the room description. COMMAND STEP ONTO STOOL IsCarrying 291 PrintMessage 136 DoneWithTurn END_COMMAND COMMAND STEP ONTO STOOL InRoom 291 PrintMessage 135 SwapLocations 291 292 DoneWithTurn END_COMMAND >> These copy the effect of the previous two C0MMANDs, with different wording. >> For only two C0MMANDs, there is no point using a redirection. COMMAND STAND ON STOOL IsCarrying 291 PrintMessage 136 DoneWithTurn END_COMMAND COMMAND STAND ON STOOL InRoom 291 PrintMessage 135 SwapLocations 291 292 DoneWithTurn END_COMMAND >> The next two are the general stand message. The first is used if the item >> specified is present; the second is used if the input is only STAND, >> ie. meaning STAND UP. COMMAND STAND ON ANY NounPresent PrintMessage 237 DoneWithTurn END_COMMAND COMMAND STAND NounIsNumber 0 PrintMessage 238 DoneWithTurn END_COMMAND COMMAND GET UP RedirectTo STAND END_COMMAND >> Simple message-display. COMMAND SIT PrintMessage 69 DoneWithTurn END_COMMAND >> An obvious redirection. The flag is used to determine whether the player has >> used the abbreviation HOLE instead of CLIMB THROUGH HOLE. If the player has >> not used the abbreviation, a message is displayed reminding them about it. >> If they use the HOLE short-cut, the flag is turned on, and this message is >> never displayed COMMAND HOLE TurnFlagOn 18 RedirectTo STEP THROUGH HOLE END_COMMAND >> This checks whether it is appropriate to redirect the UP input, by checking >> whether the portable hole for the up direction is present or not. If it is, >> UP is redirected to STEP THROUGH HOLE. COMMAND UP Present 248 Or Present 265 Present 292 RedirectTo STEP THROUGH HOLE END_COMMAND >> This one checks if the player means STAND ON THE STOOL, by testing if the >> stool is present and not being carried, and takes action appropriately. COMMAND UP InRoom 291 PrintMessage 135 SwapLocations 291 292 DoneWithTurn END_COMMAND >> A simple message-display. Note that this C0MMAND comes after the redirection >> for going through the hole, and climbing onto the stool. This is so that >> this C0MMAND doesn't interfere with other valid uses of UP. COMMAND UP AtLocation 20 PrintMessage 129 DoneWithTurn END_COMMAND >> Since UP has been redefined in the THIEF.DAT, it no longer registers as a >> valid direction. This makes it necessary to use the following C0MMAND to >> cover the up direction when in the Void. COMMAND UP AtLocation 31 LookAtRoom DoneWithTurn END_COMMAND >> This C0MMAND covers the rooms where there is a roof, displaying a message. >> The C0MMAND after that covers the case where there is no roof, or it is high >> enough not to matter. COMMAND UP AtLocationLT 31 Or AtLocation 32 Or AtLocationGT 69 AtLocationLT 73 Or AtLocationGT 75 AtLocationLT 79 Or AtLocation 88 PrintMessage 130 DoneWithTurn END_COMMAND COMMAND UP Not AtLocation 63 PrintMessage 131 DoneWithTurn END_COMMAND >> These reverse the previous C0MMANDs, taking the player down from the stool. >> The "standing on stool" is swapped out of the room in preference to the >> ordinary stool. COMMAND STEP OFF STOOL Present 292 SwapLocations 291 292 PrintMessage 132 DoneWithTurn END_COMMAND COMMAND STEP DOWN Present 292 SwapLocations 291 292 PrintMessage 132 DoneWithTurn END_COMMAND COMMAND GET DOWN Present 292 SwapLocations 291 292 PrintMessage 132 DoneWithTurn END_COMMAND COMMAND DOWN Present 292 SwapLocations 291 292 PrintMessage 132 DoneWithTurn END_COMMAND >> This redirects the input DOWN to STEP THROUGH HOLE, if it is appropriate, >> ie. if the hole leading down is present in the room. COMMAND DOWN Not Present 292 Present 247 Or Present 266 RedirectTo STEP THROUGH HOLE END_COMMAND >> This is here for the same reason as the previous UP C0MMAND. DOWN is no >> longer recognized by AGT as a standard direction, so I needed to include the >> DOWN response for the Void. COMMAND DOWN AtLocation 31 LookAtRoom DoneWithTurn END_COMMAND >> This gives a specialised DOWN message, when the player is in Hell. COMMAND DOWN AtLocationGT 63 AtLocationLT 69 PrintMessage 133 DoneWithTurn END_MESSAGE >> The default message for DOWN. COMMAND DOWN PrintMessage 134 DoneWithTurn END_COMMAND >> Again, as for the above UP and DOWN C0MMANDs, I needed to include a response >> for the four directions no longer defined as actual directions. This gives >> an appropriate message for the Void. The following C0MMAND gives the default >> SOUTHEAST, SOUTHWEST, NORTHEAST, and NORTHWEST inputs, since these are all >> defined as synonyms. COMMAND SOUTHEAST AtLocation 31 LookAtRoom DoneWithTurn END_COMMAND COMMAND SOUTHEAST PrintMessage 122 DoneWithTurn END_COMMAND >> Synonymous with EXIT, these are used in Oz, to follow the Yellow Brick Road. COMMAND FOLLOW AtLocation 80 PrintMessage 115 END_COMMAND COMMAND FOLLOW AtLocation 81 PrintMessage 116 END_COMMAND >> This destroys the Scarecrow, since he is defined as a GROUPMEMBER, and he >> should no longer follow the player. The SendToRoom token is used to send the >> ground (another groupmember) to the starting room of the next set of Oz >> rooms, where it will be needed later. The counter is turned on to measure >> the number of moves in the room, for the first visit, and is left turned on >> to indicate later that the first visit has occurred. COMMAND FOLLOW AtLocation 82 PrintMessage 117 Destroy 302 SendToRoom 345 83 TurnCounterOn 6 END_COMMAND >> Again, the ground is sent back to where it may be later needed. COMMAND FOLLOW AtLocation 87 PrintMessage 246 SendToRoom 345 83 END_COMMAND >> Simple redirections. COMMAND ENTER ANY RedirectTo STEP THROUGH $NOUN$ END_COMMAND COMMAND JUMP THROUGH ANY Not NounIsNumber RedirectTo STEP THROUGH $NOUN$ END_COMMAND >> Prevents the player from taking the stool while standing on it. COMMAND TAKE STOOL Present 292 PrintMessage 21 DoneWithTurn END_COMMAND >> This stops the player from taking anything that is in the room while they >> are standing on the stool, except for the portable hole on the roof, which >> it must be possible to take. COMMAND TAKE ANY Not NounIsNumber 265 NounInRoom Present 292 PrintMessage 38 DoneWithTurn END_COMMAND >> The following TAKE ALL C0MMANDs allow the player to take everything out of >> one of the three valid items. Thus if there is 15 things in the chest, say, >> the player can get them all in one move. COMMAND TAKE ALL FROM H SIBBUR Present 251 IsOpen 251 PrintMessage 18 RelocateAll 251 1 DoneWithTurn END_COMMAND COMMAND TAKE ALL FROM SPHERE Present 276 PrintMessage 17 RelocateAll 276 1 DoneWithTurn END_COMMAND COMMAND TAKE ALL FROM SHELVES Present 230 PrintMessage 17 RelocateAll 230 1 DoneWithTurn END_COMMAND >> Other items cannot be cleared in this manner, however. COMMAND TAKE ALL FROM ANY ObjectPresent PrintMessage 214 DoneWithTurn END_COMMAND >> All of these TAKE ALL C0MMANDs simply print a message. This is in addition >> allowing the default AGT to take any other objects that are in the room, >> ie. items that can be taken are taken, and a message is printed by these >> C0MMANDS about other items that can't be taken. COMMAND TAKE ALL Present 224 Or Present 247 Or Present 248 PrintMessage 14 END_COMMAND COMMAND TAKE ALL Present 261 Or Present 262 Or Present 263 Or Present 264 Or Present 265 Or Present 266 PrintMessage 14 END_COMMAND COMMAND TAKE ALL Present 214 SwapLocations 214 268 AddToVariable 1 1 END_COMMAND COMMAND TAKE ALL AtLocation 3 PrintMessage 22 END_COMMAND COMMAND TAKE ALL AtLocation 4 PrintMessage 23 END_COMMAND COMMAND TAKE ALL AtLocation 7 PrintMessage 24 END_COMMAND COMMAND TAKE ALL Present 222 Or Present 223 PrintMessage 25 END_COMMAND COMMAND TAKE ALL Present 231 PrintMessage 26 END_COMMAND COMMAND TAKE ALL AtLocation 22 PrintMessage 27 END_COMMAND COMMAND TAKE ALL AtLocation 25 PrintMessage 28 END_COMMAND >> This stops the player taking anything when they are standing on the stool. COMMAND TAKE ALL Present 292 PrintMessage 29 DoneWithTurn END_COMMAND >> If the player tries to take the water, by itself, then they lose it. It >> dribbles away. COMMAND TAKE ANY Present 286 NounIsNumber 286 PrintMessage 233 Destroy 286 DoneWithTurn END_COMMAND >> This removes the hole form the wall, regardless of which wall it is attached >> to. Since a condition of climbing through the hole is that it is stuck to >> a wall, there is no need to reset the appropriate variables. Also, since >> only one hole can exist at any one time, there is no harm in destroying all >> of the holes, just to make sure that the correct one is destroyed. Flag 3 is >> turned off, to cover the case when the hole is the one that is attached to >> the north wall, inside the GOLDEN DOOR. COMMAND TAKE HOLE Present 224 Or Present 261 Or Present 262 Or Present 263 Or Present 264 RandomMessage 39 42 Destroy 224 Destroy 261 Destroy 262 Destroy 263 Destroy 264 TurnFlagOff 3 GetIt 290 DoneWithTurn END_COMMAND >> This allows the player to take the hole on the roof, only when the player is >> standing on the stool. The second C0MMAND covers the case where the player >> tries to take the hole, and they are not standing on the stool. COMMAND TAKE HOLE Present 265 Present 292 PrintMessage 43 Destroy 265 GetIt 290 DoneWithTurn END_COMMAND COMMAND TAKE HOLE Present 265 PrintMessage 44 DoneWithTurn END_COMMAND >> When the player takes the hole that is on the floor, the counter of moves >> in Hell is turned off. This counter is used to determine when the portable >> hole will melt, if it is left hanging for too long in Hell. COMMAND TAKE HOLE Present 266 PrintMessage 45 Destroy 266 GetIt 290 TurnCounterOff 5 DoneWithTurn END_COMMAND >> The player cannot remove the portable hole when it is attached to a cloud >> in Heaven. COMMAND TAKE HOLE Present 247 PrintMessage 46 DoneWithTurn END_COMMAND >> If the player tries to take the hole while it is hanging in mid-air in Hell, >> the hole is destroyed, and the counter of the number of moves in Hell is >> turned off. COMMAND TAKE HOLE Present 248 PrintMessage 47 SwapLocations 248 249 TurnCounterOff 5 DoneWithTurn END_COMMAND >> Simply sends the player to Waterfall Room, from In The Waterfall. A CREATURE >> called OUT is defined to allow AGT to recognise the sentence GET OUT. COMMAND GET OUT AtLocation 33 PrintMessage 16 GoToRoom 13 DoneWithTurn END_COMMAND >> It isn't possible to take the sphere, even when the player is standing on >> the stool in the Sealed Room. COMMAND TAKE SPHERE Present 231 Present 292 PrintMessage 20 DoneWithTurn END_COMMAND >> In fact, it isn't possible to take the sphere. It must be cut down first. COMMAND TAKE SPHERE Present 231 PrintMessage 19 DoneWithTurn END_COMMAND >> This C0MMAND swaps the hanging amulet for the ordinary, carryable amulet. >> The player gets a point added to the true score for this action. COMMAND TAKE AMULET Present 214 PrintMessage 13 Destroy 214 GetIt 268 AddToVariable 1 1 DoneWithTurn END_COMMAND >> A simple message-display COMMAND TAKE FISH Present 234 PrintMessage 15 DoneWithTurn END_COMMAND >> Another simple message-display. COMMAND TAKE FINGERS PrintMessage 175 DoneWithTurn END_COMMAND >> This one allows the default AGT process for taking an item that is not >> present to be executed, thus saving a test in every following C0MMAND. COMMAND TAKE ANY Not NounPresent QuitAllCmds END_COMMAND >> The default "take" C0MMANd. COMMAND TAKE ANY Not NounIsCarrying NounWeightLT 101 NounIsMovable PrintMessage 13 GetNoun DoneWithTurn END_COMMAND >> In the following C0MMANDs, the weight of the noun is used to put the noun >> into a group, to display an individual message for each weight-group. This >> way, there is some variety in the "take failure" messages. COMMAND TAKE ANY NounWeightEquals 101 PrintMessage 152 DoneWithTurn END_COMMAND COMMAND TAKE ANY NounWeightEquals 102 PrintMessage 1 DoneWithTurn END_COMMAND COMMAND TAKE ANY NounWeightEquals 103 PrintMessage 2 DoneWithTurn END_COMMAND COMMAND TAKE ANY NounWeightEquals 104 PrintMessage 3 DoneWithTurn END_COMMAND COMMAND TAKE ANY NounWeightEquals 105 PrintMessage 4 DoneWithTurn END_COMMAND COMMAND TAKE ANY NounWeightEquals 106 PrintMessage 5 DoneWithTurn END_COMMAND COMMAND TAKE ANY NounWeightEquals 107 PrintMessage 6 DoneWithTurn END_COMMAND COMMAND TAKE ANY NounWeightEquals 108 PrintMessage 7 DoneWithTurn END_COMMAND COMMAND TAKE ANY NounWeightEquals 109 PrintMessage 8 DoneWithTurn END_COMMAND COMMAND TAKE ANY NounWeightEquals 110 PrintMessage 9 DoneWithTurn END_COMMAND COMMAND TAKE ANY NounWeightEquals 111 PrintMessage 10 DoneWithTurn END_COMMAND COMMAND TAKE ANY NounWeightEquals 112 PrintMessage 11 DoneWithTurn END_COMMAND COMMAND TAKE ANY NounWeightEquals 113 PrintMessage 12 DoneWithTurn END_COMMAND >> Whatever the player is wearing must be removed before it can be dropped. COMMAND DROP ANY NounIsWearing PrintMessage 48 DoneWithTurn END_COMMAND >> This redirects DROP WATER to EMPTY PAIL. The indirect method was used >> because there are a number of NOUNs that are synonymous with water. COMMAND DROP ANY IsCarrying 286 NounIsNumber 286 RedirectTo EMPTY PAIL END_COMMAND >> Default "drop" response. COMMAND DROP ANY NounIsCarrying PrintMessage 49 DropNoun DoneWithTurn END_COMMAND >> Simple message-display. COMMAND WEAR ALL PrintMessage 50 DoneWithTurn END_COMMAND >> When the player wears the glasses, they can then see the GOLDEN DOOR. Which >> GOLDEN DOOR depends on whether they have previously opened the door, and the >> portable hole may also be made to appear if the player has applied it to the >> wall. The first C0MMAND covers the case: door closed. The second one will >> cover: door open. The third C0MMAND is for the case: portable hole applied. >> The fourth C0MMAND is a catcher, since the first three C0MMANDs are >> open-ended. COMMAND WEAR GLASSES Present 277 Not IsWearing 277 PrintMessage 51 FlagOff 2 SendToRoom 222 12 AtLocation 12 PrintMessage 52 END_COMMAND COMMAND WEAR GLASSES Present 277 FlagOn 2 SendToRoom 223 12 AtLocation 12 PrintMessage 54 END_COMMAND COMMAND WEAR GLASSES Present 277 Not IsWearing 277 FlagOn 3 SendToRoom 224 12 AtLocation 12 PrintMessage 55 END_COMMAND COMMAND WEAR GLASSES Present 277 Not IsWearing 277 WearIt 277 DoneWithTurn END_COMMAND >> Basic message-display. COMMAND REMOVE ALL IsWearingSomething PrintMessage 50 DoneWithTurn END_COMMAND >> This C0MMAND acts as the opposite to the previous group of "wear glasses". >> The flags for each condition are set (golden door open/closed = flag 2, hole >> applied = flag 3) so it safe to destroy each of these when removing the >> glasses. If those items did not actually exist, destroying them has no >> adverse effects. COMMAND REMOVE GLASSES IsWearing 277 Destroy 222 Destroy 223 Destroy 224 PrintMessage 53 GetIt 277 DoneWithTurn END_COMMAND >> This makes taking off your fingers impossible. COMMAND REMOVE FINGERS PrintMessage 57 DoneWithTurn END_COMMAND >> Removing an object does not drop it in the room; it moves it from "wearing" >> to "carrying". COMMAND REMOVE ANY NounIsWearing PrintMessage 56 GetNoun DoneWithTurn END_COMMAND >> The player cannot remove something they are not wearing. COMMAND REMOVE ANY Not NounIsWearing PrintMessage 58 DoneWithTurn END_COMMAND >> Nothing can be pushed while on the stool. COMMAND PUSH ANY NounInRoom Not NounIsNumber 265 Present 292 PrintMessage 38 DoneWithTurn END_COMMAND >> All of the following C0MMANDs implement the mystery object function. When >> the player is in the "Ordinary" rooms, and they push the switch on the >> object, they are sent to the corresponding room. The corresponding room is: >> the player is flipped around the horizontal mid-line of the map. If they >> were in the top right corner, they would be sent to the lower right corner. >> If they were in the lower left corner, they would be sent to the top left >> corner, and vice versa. If they were in the top middle, they would be >> sent to the bottom middle. If they were in the middle middle they would >> remain there. Play around with the object, if you don't understand. This >> flipping is only from top to bottom and bottom to top, it is not from side >> to side. The object has only five charges, measured with variable 3. All >> items the player is carrying (with the exception of the object itself, and >> your fingers) are dropped, before the player is moved, including what the >> player is wearing. This happens even when the player is sent to the same >> room they started in. An effect of the object is to leave everything behind >> when being transported, no matter what the distance. >> The object doesn't work outside the "Ordinary" rooms. COMMAND PUSH SWITCH Not Present 269 QuitAllCmds END_COMMAND COMMAND PUSH SWITCH AddToVariable 3 1 VariableGT 3 5 PrintMessage 59 DoneWithTurn END_COMMAND COMMAND PUSH SWITCH AtLocationGT 30 PrintMessage 60 DoneWithTurn END_COMMAND COMMAND PUSH SWITCH Present 269 DropEverything RemoveEverything GetIt 269 WearIt 293 Destroy 222 Destroy 223 Destroy 224 MakeVarRoomNum 2 Present 292 SwapLocations 291 292 END_COMMAND COMMAND PUSH SWITCH AtLocation 6 Or AtLocation 13 Or AtLocationGT 24 AtLocationLT 30 PrintMessage 242 DoneWithTurn END_COMMAND COMMAND PUSH SWITCH AtLocation 4 Or AtLocation 14 AddToVariable 2 1 END_COMMAND COMMAND PUSH SWITCH AtLocation 3 Or AtLocation 12 AddToVariable 2 3 END_COMMAND COMMAND PUSH SWITCH AtLocation 8 Or AtLocation 10 AddToVariable 2 9 END_COMMAND COMMAND PUSH SWITCH AtLocation 11 Or AtLocation 23 AddToVariable 2 7 END_COMMAND COMMAND PUSH SWITCH AtLocation 9 AddToVariable 2 11 END_COMMAND COMMAND PUSH SWITCH AtLocation 21 AddToVariable 2 3 END_COMMAND COMMAND PUSH SWITCH AtLocation 2 AddToVariable 2 20 END_COMMAND COMMAND PUSH SWITCH AtLocation 5 Or AtLocation 11 SubtractFromVariable 2 1 END_COMMAND COMMAND PUSH SWITCH AtLocation 7 Or AtLocation 16 SubtractFromVariable 2 4 END_COMMAND COMMAND PUSH SWITCH AtLocation 18 Or AtLocation 30 SubtractFromVariable 2 7 END_COMMAND COMMAND PUSH SWITCH AtLocation 17 Or AtLocation 19 SubtractFromVariable 2 9 END_COMMAND COMMAND PUSH SWITCH AtLocation 24 SubtractFromVariable 2 3 END_COMMAND COMMAND PUSH SWITCH AtLocation 20 SubtractFromVariable 2 11 END_COMMAND COMMAND PUSH SWITCH AtLocation 22 SubtractFromVariable 2 20 END_COMMAND COMMAND PUSH SWITCH PrintMessage 241 GoToVariableRoom 2 DoneWithTurn END_COMMAND >> When the player pushes the seat, and they have not previously pushed it, the >> OPENING is sent to the room, and the passageway is opened. Then the player >> is sent to the corresponding Inch Tall room, and a passage way is opened >> there too. The player scores a point on the true score for this action. COMMAND PUSH SEAT AtLocation 10 Not Present 221 PrintMessage 61 PutInCurrentRoom 221 ChangePassageWay 1 8 GoToRoom 42 ChangePassageWay 1 40 GoToRoom 10 AddToVariable 1 1 DoneWithTurn END_COMMAND >> As mentioned elsewhere, this simply reveals the pot of cream to the player, >> by sending it to the Witch's Castle. COMMAND PUSH CLOTHES Present 260 IsNowhere 283 PrintMessage 62 PutInCurrentRoom 283 DoneWithTurn END_COMMAND >> This one sets the flag that allows the player to walk out of the Treasure >> Room without being hassled by the Silver Guardsman. COMMAND PUSH BUTTON AtLocation 6 TurnFlagOn 4 END_COMMAND >> When the player pushes the lever either way, a flag is set to indicate the >> direction. Then, on the next move, an ANY C0MMAND acts on the flag that has >> just been set, either killing the player, or shrinking them, depending. The >> sentences "push lever up" and "push lever down" are allowed by defining >> CREATUREs with those names. COMMAND PUSH LEVER UP AtLocation 15 PrintMessage 63 TurnFlagOn 5 DoneWithTurn END_COMMAND COMMAND PUSH LEVER DOWN AtLocation 15 PrintMessage 64 TurnFlagOn 6 DoneWithTurn END_COMMAND COMMAND PULL LEVER UP AtLocation 15 PrintMessage 63 TurnFlagOn 5 DoneWithTurn END_COMMAND COMMAND PULL LEVER DOWN AtLocation 15 PrintMessage 64 TurnFlagOn 6 DoneWithTurn END_COMMAND >> Nothing can be pushed while the player is on the stool, except for the hole >> that may or may not be on the ceiling. Similarly for turning, pulling, >> playing and knocking. COMMAND PULL ANY NounInRoom Not NounIsNumber 265 Present 292 PrintMessage 38 DoneWithTurn END_COMMAND COMMAND TURN ANY NounInRoom Not NounIsNumber 265 Present 292 PrintMessage 38 DoneWithTurn END_COMMAND COMMAND PLAY ANY NounInRoom Not NounIsNumber 265 Present 292 PrintMessage 38 DoneWithTurn END_COMMAND COMMAND KNOCK ANY NounInRoom Not NounIsNumber 265 Present 292 PrintMessage 38 DoneWithTurn END_COMMAND >> Simple message display. COMMAND KNOCK ANY Not NounIsNumber 0 PrintMessage 70 DoneWithTurn END_COMMAND >> This next C0MMAND allows the player to move through the hole while they are >> on the stool. If the hole is not the hole on the roof, the player is >> automatically "climbed down" from the stool before going through the hole. COMMAND STEP THROUGH HOLE Present 292 Not Present 265 PrintMessage 132 BlankLine SwapLocations 291 292 END_COMMAND >> This C0MMAND prevents the player from carrying the stool through the hole, >> since the stool is larger than the hole. COMMAND STEP THROUGH HOLE IsCarrying 291 Present 224 Or Present 261 Or Present 262 Or Present 263 Or Present 264 Or Present 265 Or Present 266 PrintMessage 112 DoneWithTurn END_COMMAND >> This gives the player a 50% chance of being cut to bits if they climb >> through the hole while they are carrying the (on) lightsabre. They are >> killed if their number comes up. COMMAND STEP THROUGH HOLE IsCarrying 275 Present 261 Or Present 262 Or Present 263 Or Present 264 Or Present 265 Or Present 266 PrintMessage 114 Chance 50 PrintMessage 113 EndGame DoneWithTurn END_COMMAND >> The following is one C0MMAND each for the " flat" directions, ie. not up and >> down. This C0MMAND is for sending the player to the appropriate room, >> depending on what hole is present in the room at the time. For the UP case >> there is more than one C0MMAND. COMMAND STEP THROUGH HOLE Present 224 Or Present 261 Or Present 262 Or Present 263 Or Present 264 Or Present 265 Or Present 266 DescribeThing 308 FlagOff 18 PrintMessage 250 TurnFlagOn 18 END_COMMAND COMMAND STEP THROUGH HOLE Present 224 Or Present 261 GoToVariableRoom 5 DoneWithTurn END_COMMAND COMMAND STEP THROUGH HOLE Present 262 GoToVariableRoom 6 DoneWithTurn END_COMMAND COMMAND STEP THROUGH HOLE Present 263 GoToVariableRoom 7 DoneWithTurn END_COMMAND COMMAND STEP THROUGH HOLE Present 264 GoToVariableRoom 8 DoneWithTurn END_COMMAND >> If the stool is not present, then the player cannot reach the hole. COMMAND STEP THROUGH HOLE Present 265 Not Present 292 PrintMessage 44 DoneWithTurn END_COMMAND >> Having tested for the absence of the stool, it is safe to let the player go >> into the room above with this C0MMAND. COMMAND STEP THROUGH HOLE Present 248 Or Present 265 GoToVariableRoom 9 DoneWithTurn END_COMMAND >> This one is for going down. COMMAND STEP THROUGH HOLE Present 247 Or Present 266 GoToVariableRoom 10 DoneWithTurn END_COMMAND >> Stepping through the painting, in general, sends the player to Kansas, and >> turns on a counter, so that the player will be whisked away by the tornado, >> eventually. This first one prevents the player from entering any painting >> while carrying the portable hole. This prevents complication that may arise >> from having the hole outside the "Ordinary" rooms. COMMAND STEP INTO PAINTING AtLocation 3 IsCarrying 290 PrintMessage 87 DoneWithTurn END_COMMAND >> This one sends the player to the first Kansas, activates the counter, and >> gives the player a point on their true score. COMMAND STEP INTO PAINTING Present 203 PrintMessage 88 TurnCounterOn 3 GoToRoom 69 AddToVariable 1 1 DoneWithTurn END_COMMAND >> This one is for stepping into the forest painting. It turns off the tornado >> counters, and sends the player to the forest. COMMAND STEP INTO PAINTING Present 255 PrintMessage 88 TurnCounterOff 3 TurnCounterOff 4 GoToRoom 22 DoneWithTurn END_COMMAND >> This C0MMAND moves the player to the second Kansas and turns on the second >> (shorter) tornado counter COMMAND STEP INTO PAINTING Present 204 PrintMessage 88 TurnCounterOn 4 GoToRoom 73 DoneWithTurn END_COMMAND >> The next two C0MMANDs are for when the player steps through the Night Sky >> Painting. The first one saves them from death if they are wearing the Second >> Chance ring. The second kills them. COMMAND STEP INTO PAINTING Present 205 IsWearing 289 FlagOff 9 PrintMessage 90 TurnFlagOn 9 DoneWithTurn END_COMMAND COMMAND STEP INTO PAINTING Present 205 PrintMessage 89 EndGame DoneWithTurn END_COMMAND >> Simple message display. COMMAND JUMP NounIsNumber 0 RandomMessage 168 170 DoneWithTurn END_COMMAND >> Simple message display. COMMAND GIVE PrintMessage 166 DoneWithTurn END_COMMAND >> Simple message display. COMMAND CLIMB TREES PrintMessage 167 DoneWithTurn END_COMMAND