#INCLUDE "char.paw" PROCESS examine; PROCESS help; PROCESS crunch; PROCESS yourcroft_status; PROCESS yourcroft_parse; PROCESS say_help; FLAG crunchvol; FLAG yourcroftstate; FLAG say_help; DEFAULTS { CHARSET: 1; INK: 9; PAPER: 0; FLASH: 0; BRIGHT: 0; INVERSE: 0; OVER: 0; BORDER: 0; } LOCATION start 0 { "Linux Matters:^ The Video Game"; } LOCATION mug 1 { "In the mug"; } LOCATION intro { "This is a text adventure for the ZX Spectrum in the classic style of {19}{1}The Hobbit{19}{0} or {19}{1}Zork{19}{0}. You play as {16}{6}Wimpy{16}{7}, host of the Linux Matters podcast with friends {16}{5}Popey{16}{7} and {16}{4}Mark{16}{7}.^^ In common with the classic adventures, you can control Wimpy by entering simple words and sentences in English. A simple example may be {0}GET CAKE{1} whereas a more complex one such as {0}SAY TO MARK \"GO NORTH AND QUICKLY RUB THE DEPRESSING FERRET ON THE BALLOON THEN RELEASE IT\"{1} may also be possible. Depending on how well I've programmed the game, either the ferret or the balloon will be free.^^ Perhaps the first command to enter might be {0}HELP{1}, but it pays to be curious so make sure you always {0}EXAMINE{1} everything you can."; } LOCATION scene { "Placeholder text which will describe Wimpy's abduction and imprisonment"; } LOCATION trap { "Wimpy is trapped in a room with no obvious exits. He is rather perplexed.^Oh, bother!^(This is placeholder text)^"; } VOCABULARY { NOUN 2: "S", "SOUTH"; PREPOSITION 2: "TO"; CONJUNCTION 2: "AND", "THEN"; PRONOUN 2: "IT", "THEM"; NOUN 3: "E", "EAST"; PREPOSITION 3: "FROM"; NOUN 4: "W", "WEST"; PREPOSITION 4: "IN"; NOUN 5: "N", "NORTH"; PREPOSITION 5: "OUT"; NOUN 6: "NW"; PREPOSITION 6: "THROU"; NOUN 7: "SE"; PREPOSITION 7: "OVER"; NOUN 8: "SW"; PREPOSITION 8: "UNDER"; NOUN 9: "NE"; PREPOSITION 9: "BY"; VERB 10: "DESCE"; NOUN 10: "D", "DOWN"; PREPOSITION 10: "ON"; VERB 11: "ASCEN"; NOUN 11: "U", "UP"; PREPOSITION 11: "OFF"; PREPOSITION 12: "AT"; PREPOSITION 13: "EXCEP"; NOUN 14: "I", "INVEN"; PREPOSITION 14: "NORMA"; VERB 20: "GET", "TAKE"; NOUN 20: "ALL", "LOT", "EVERY"; VERB 21: "PUT", "DROP"; VERB 22: "REMOV"; VERB 23: "WEAR"; VERB 24: "R", "REDES"; VERB 25: "QUIT", "STOP"; VERB 26: "SAVE"; VERB 27: "LOAD"; VERB 30: "LOOK"; VERB 31: "SAY", "ASK", "TALK", "SPEAK"; VERB 32: "EXAMI", "EXAM", "X"; ADJECTIVE 130: "SMALL"; ADJECTIVE 131: "BIG", "LARGE"; ADJECTIVE 132: "OLD"; ADJECTIVE 133: "NEW"; ADJECTIVE 134: "HARD"; ADJECTIVE 135: "SOFT"; ADJECTIVE 136: "SHORT"; ADJECTIVE 137: "LONG"; ADVERB 140: "QUICK"; ADVERB 141: "SLOWL"; ADVERB 142: "QUIET"; ADVERB 143: "LOUDL"; ADVERB 144: "CAREF", "SOFTL", "GENTL"; NOUN 15: "MARK"; NOUN 16: "POPEY", "ALAN"; NOUN 17: "GRAHA", "DEGVI"; NOUN: "PASSW", "1234", "HUNTER", "12345", "BEANS"; NOUN: "BISCU", "PACKE"; NOUN: "MUG", "CUP"; NOUN: "USBDR", "DRIVE"; ADJECTIVE: "USB"; NOUN: "PORT"; NOUN 18: "YOURC", "LADYC", "COMPU", "ASSIS", "CYLIN", "DEVIC"; NOUN: "FLAP"; NOUN: "DOOR"; VERB: "HELP"; VERB: "EAT", "CONSU", "BITE", "CRUNC", "CHOMP", "MUNCH"; VERB: "WAIT"; VERB: "OPEN"; VERB: "CLOSE"; } OBJECT notused 0 { "null"; INITIALLYAT NOTCREATED; WORDS _ _; WEIGHT 1; } OBJECT mug 1 { "A large, chipped mug"; INITIALLYAT NOTCREATED; WORDS MUG _; WEIGHT 1; PROPERTY CONTAINER; } PROCESS examine { _ MUG: PRESENT mug MESSAGE "A few chips and cracks, but robust and clean. It contains:" LISTAT mug DONE; } OBJECT biscuits { "An inexhaustible supply of delicious biscuits"; INITIALLYAT NOTCREATED; WORDS BISCU _; WEIGHT 1; } PROCESS examine { _ BISCU: PRESENT biscuits MESSAGE "Crunchy and tasty; beloved of all Linux podcasters." DONE; } OBJECT usbdrive { "A USB Drive"; INITIALLYAT CARRIED; WORDS DRIVE USB; WEIGHT 1; } PROCESS examine { _ DRIVE: PRESENT usbdrive MESSAGE "A 16GB 'SpamDisk' USB-A Drive with a handwritten label saying 'Wimpy's leet hacking boot drive'." DONE; } MESSAGES { 0: "Default message"; } SYSMESSAGES { 0: "Wimpy can't see in the dark.^"; 1: "He can also see: "; 2: "^What now?^"; 3: "^What next?^"; 4: "^What should Wimpy do now?^"; 5: "^What should Wimpy do next?^"; 6: "Wimpy looks confused by that.^"; 7: "He can't go in that direction.^"; 8: "He can't do that.^"; 9: "Wimpy has: "; 10: " (worn)"; 11: "nowt.^"; 12: "Are you sure?^"; 13: "Would you like another go?^"; 14: "Cheerio...^"; 15: "OK.^"; 16: "^ {20}{1}Press any key to continue.{20}{0}"; 17: "You have taken "; 18: " turn"; 19: "s"; 20: ".^"; 21: "You have scored "; 22: "%^"; 23: "He's not wearing one of those.^"; 24: "He can't as he's wearing the _.^"; 25: "Wimpy already has the _.^"; 26: "There isn't one of those here.^"; 27: "Wimpy's hands are full.^"; 28: "He doesn't have one of those.^"; 29: "He's already wearing the _.^"; 30: "Y"; 31: "N"; 32: "^More..."; 33: "{16}{6}wimpy@nix:~{16}{7}$ "; 34: "{16}{7}{18}{1} {18}{0}"; 35: "^Time passes...^"; 36: "Wimpy now has the _.^"; 37: "Wimpy looks natty in the _.^"; 38: "He's removed the _.^"; 39: "He's dropped the _.^"; 40: "Wimpy can't wear the _.^"; 41: "Wimpy can't remove the _.^"; 42: "He can't remove the _ as his hands are full.^"; 43: "Wimpy is too feeble to carry the _ as well.^"; 44: "The _ is in the "; 45: "The _ isn't in the "; 46: ", "; 47: " and "; 48: ".^"; 49: "He doesn't have the _.^"; 50: "He's not wearing the _.^"; 51: ".^"; 52: "There isn't one of those in the "; 53: "nothing.^"; 54: "Type in name of file:^"; } RESPONSE { I _: INVEN; GET I: INVEN; GET ALL: DOALL 255; GET _: AUTOG DONE; PUT ALL: DOALL 254; PUT _: AUTOD DONE; REMOV ALL: DOALL 253; REMOV _: AUTOR DONE; WEAR ALL: DOALL 254; WEAR _: AUTOW DONE; R _: DESC; QUIT _: QUIT TURNS END; SAVE _: RAMSAVE MESSAGE "Game saved to RAM."; LOAD _: RAMLOAD 255 DESC; LOOK _: PREP AT PROCESS examine DONE; LOOK _: PLUS 29 128 DESC; X _: PROCESS examine DONE; HELP _: PROCESS help DONE; EAT BISCU: ABSENT biscuits NOTDONE; EAT BISCU: PRESENT biscuits MESSAGE "Wimpy munches loudly on a delicious and nutritious biscuity treat." PLUS crunchvol 1 ADVERB LOUDL MESSAGE "He tries to crunch louder, to no avail. Maybe many mouths make loud work?"; EAT BISCU: PRESENT biscuits ADVERB QUIET MESSAGE "He tries to be quiet but they're just too tasty."; WAIT _: MESSAGE "Wimpy waits for a moment." DONE; SAY _: AT trap PROCESS yourcroft_parse DONE; } PROCESS say_help { _ _: ZERO say_help SET say_help MESSAGE "(Remember to enclose anything you want Wimpy to say in double quotes, like {0}SAY \"HELLO\"{1}. On a Spectrum, hold {0}SYMBOL-SHIFT{1} and press {0}P{1}. On an emulator, you'll probably need to hold {0}Ctrl{1} and press {0}P{1}.)"; } PROCESS 1 { * *: AT start MODE 0 1 ANYKEY GOTO intro DESC; * *: AT intro ANYKEY GOTO scene DESC; * *: AT scene ANYKEY GOTO trap DESC; * YOURC: AT trap PROCESS yourcroft_status; * _: NEWLINE ZERO 0 ABSENT 0 LISTOBJ; * _: PRESENT 0 LISTOBJ; } PROCESS 2 { _ BISCU: NOTZERO crunchvol PROCESS crunch; } PROCESS examine { _ _: MESSAGE "Wimpy isn't sure what he is supposed to look at." DONE; } PROCESS help { _ _: MESSAGE "Just placeholder text for now." DONE; } PROCESS crunch { _ _: EQ crunchvol 1 MESSAGE "The loud crunching causes the walls to shake a little."; _ _: EQ crunchvol 2 MESSAGE "The walls and floor shift due to the enormous crunching noise."; _ _: EQ crunchvol 3 MESSAGE "The whole room buckles under the crunching boom."; _ _: CLEAR crunchvol; } PROCESS yourcroft_status { _ _: ZERO yourcroftstate MESSAGE "A bodged-together cheap-looking plastic cylinder device is perched on the floor." DONE; _ _: EQ yourcroftstate 1 MESSAGE "Yourcroft surveys Wimpy with its tacky, green, blinking LED eye and barks 'I'm watching you, mister!'."; _ _: EQ yourcroftstate 2 MESSAGE "Yourcroft's eye flashes indignantly and burns with shame at its open flap and exposed port."; _ _: EQ yourcroftstate 3 MESSAGE "Yourcroft's LED eye keeps flicking with rage between Wimpy's face and its new USB appendage."; _ _: EQ yourcroftstate 4 MESSAGE "The smouldering remains of Yourcroft sparks and fizzles."; } PROCESS examine { _ CYLIN: ZERO yourcroftstate MESSAGE "'What you looking at, buddy?', barks the device. 'I'm a Yourcroft(TM) mark 1 cylindrical assistant, and I've been charged with keeping this door closed.'^^'Don't get any bright ideas for escape or I'll zap you!'^^Its voice sounds like a strangely robotic-yet-feminine version of popey's dulcet tones. A cheap LED array is lit to form a green, blinking eye which follows Wimpy's every movement. Below is a flap with a label saying 'USB', which is closed and obscuring any port.^'By the way, please fund our Kickstarter for version 2.0!'" PLUS yourcroftstate 1 DONE; _ YOURC: EQ yourcroftstate 1 MESSAGE "'Don't go poking around - I'm password protected you know!'" DONE; _ YOURC: EQ yourcroftstate 2 MESSAGE "Yourcroft is clearly annoyed that its USB port and control touch screen are showing." DONE; } PROCESS yourcroft_parse { * *: PARSE MESSAGE "'Keep it simple, buddy - I ain't ChattyJeeps.'" PROCESS say_help DONE; _ PASSW: LT yourcroftstate 2 MESSAGE "'Hey - that's the right password! You some kind of genius hacker? You can't stop me guarding this door, buddy...'.^^The flap drops open, revealing a USB socket and a small touch screen.^^'Do you mind?', admonishes Yourcroft, 'you're exposing my circuits!'." LET yourcroftstate 2 DONE; _ _: MESSAGE "'You ain't the boss of me!'" DONE; }