402 lines
9.4 KiB
Plaintext
402 lines
9.4 KiB
Plaintext
#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;
|
|
}
|