|
|
1.1 root 1: NOUN startrm;
2: NOUN brightroom;
3:
4: NOUN .ME(startrm);
5:
6: VAR Obj; { A global }
7: SEEN = 1; { A property (bit) number }
8:
9: Looker =
10: ($num @Verb)
11: (($ldesc ($loc .ME)) ) { CALL Ldesc of room }
12: ($setg Obj ($cont ($loc .ME))) { start with first obj in room }
13: (WHILE @Obj :
14: (($ldesc @Obj) : { If it has a description, }
15: (($ldesc @Obj)) { then say it. }
16: )
17: ($setg Obj ($link @Obj)) { Continue with sibling }
18: )
19: ;
20:
21:
22: Slook = (($sdesc ($loc .ME))) { CALL Ldesc of room }
23: ($setg Obj ($cont ($loc .ME))) { start with first obj in room }
24: (WHILE @Obj :
25: (($ldesc @Obj) : { If it has a description, }
26: (($ldesc @Obj)) { then say it. }
27: )
28: ($setg Obj ($link @Obj)) { Continue with sibling }
29: )
30: ;
31:
32: Rdesc = { Room description }
33: ($say "\n")
34: (($prop ($loc .ME) SEEN) : { Have I been here? }
35: (Slook) { Yes, be brief. }
36: :{else} (Looker) { Otherwise, do the spiel, }
37: ($setp ($loc .ME) SEEN 1) { but only once. }
38: )
39: ($say "\n> ") { Prompt player }
40: ;
41:
42: VERB look;
43: look(ACTION) = Looker;
44:
45: VERB inventory;
46: inven = inventory;
47:
48: inven(ACTION) = (($not ($cont .ME)): { Null "contents" field }
49: ($say "You are empty-handed.\n")
50: :{else}
51: ($say "You are carrying:\n")
52: ($setg Obj ($cont .ME))
53: (WHILE @Obj :
54: (($sdesc @Obj))
55: ($say "\n")
56: ($setg Obj ($link @Obj))
57: )
58: )
59: ;
60:
61: VERB take;
62: VERB drop;
63: get=take;
64:
65: take(PREACT) = (($ne ($loc .ME) ($loc ($dobj))): { Dobj in same room? }
66: ($say "I don't see ") { No, report the fact }
67: (($sdesc ($dobj)))
68: ($say " here.\n")
69: ($exit 1)); { and end the turn. }
70:
71: drop(PREACT) = (($ne ($loc ($dobj)) .ME) : { Must be carrying the dobj }
72: ($say "You aren't carrying it!\n")
73: ($exit 1));
74:
75: take (ACTION) = ($move ($dobj) .ME)
76: ($say "Taken.\n")
77: ;
78:
79: drop(ACTION) = ($move ($dobj) ($loc .ME))
80: ($say "Dropped.\n")
81: ;
82:
83: DWIMD = (($and ($eq ($verb) take)
84: ($ne ($loc ($dobj)) ($loc .ME))):
85: ($rtrn 0))
86: (($and ($eq ($verb) drop)
87: ($ne ($loc ($dobj)) .ME)):
88: ($rtrn 0))
89: ($rtrn 1);
90:
91: startrm (LDESC) =
92: ($say
93: "You are in a small but comfortable room. You hardly want
94: to leave, but there is a door leading east, if you insist.\n")
95: ;
96: startrm (SDESC) =
97: ($say "Comfortable room.\n");
98:
99:
100: brightroom(LDESC) =
101: ($say
102: "You are in a brightly lit room. The walls sparkle with
103: scintillating lights. There is a darker room to the west.\n");
104:
105: brightroom(SDESC) = ($say "Bright room.\n");
106:
107:
108: ADJECTIVE red, blue;
109: NOUN red pillow(startrm);
110: NOUN blue pillow(startrm);
111: red pillow(LDESC) = ($say "There is a red pillow here.\n");
112: red pillow(SDESC) = ($say "A red pillow");
113: blue pillow(LDESC) = ($say "There is a blue pillow here.\n");
114: blue pillow(SDESC) = ($say "A blue pillow");
115:
116:
117: NOUN platinum(brightroom); bar=platinum;
118: platinum(LDESC) = ($say "There is a bar of platinum here!\n");
119: platinum(SDESC) = ($say "Platinum bar");
120: platinum(ACTION) =
121: (($eq ($verb) drop) :
122: (($eq ($loc .ME) ($loc [red pillow])):
123: ($say
124: "The bar falls onto the red pillow, breaking it! The symbolism
125: impresses itself upon you, and you go back to work instead of
126: playing these silly games!\n")
127: ($spec 3 0 0 0 0)
128: )
129: );
130:
131: VERB north, south, east, west;
132: n=north; s=south; e=east; w=west;
133:
134: cg = ($say "You can't go that way.\n");
135: n(ACTION) = cg;
136: s(ACTION) = cg;
137: e(ACTION) = cg;
138: w(ACTION) = cg;
139:
140: startrm(ACTION) = (($eq ($verb) east) :
141: ($move .ME brightroom)
142: ($exit 1) { bypass default }
143: );
144: brightroom(ACTION) = (($eq ($verb) west) : ($move .ME startrm)($exit 1));
145:
146: START = ($sdem Rdesc);
147:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.