Object RoomThree "Room 3"
has light
with
description
"This is your room. You live a fairly austere life, being a poor
college student. The only notable features are the bed (unmade, of
course) and a small wooden desk. An exit is west.",
w_to AlleyOne, out_to AlleyOne,
;
Object room_three_desk "small wooden desk" RoomThree
has scenery supporter
with
name 'small' 'wooden' 'wood' 'desk' 'desktop',
description [;
print "It's the small desk that comes with all of the rooms in the house.
The desktop is pitifully small; especially considering that you
often need to have several physics texts and tables of integrals
open simultaneously. The desk has a small drawer (";
if (drawer has open) {
print "open). ";
if (children(drawer) > 0) ShowCont(drawer);
}
else print "closed). ";
if (children(self) > 0) ShowCont(self);
new_line; rtrue;
],
before [;
Open: <<Open drawer>>;
Close: <<Close drawer>>;
],
;
Object drawer "drawer" RoomThree
has scenery container ~open openable
with
parse_name [;
switch (NextWord()) {
'small', 'desk': if (NextWord() == 'drawer') return 2;
'drawer': return 1;
}
return 0;
],
before [;
Take: "You can't remove the drawer from the desk.";
],
after [;
Receive:
if (~~ noun ofclass Crawlable) "That's too big to fit in the drawer.";
],
;
Class Crawlable;
Object food_item "food item" drawer
class Crawlable
has edible
with
name 'food' 'item',
description "It's a food item of the type the Food Service
typically prepares.",
;
Object waste_basket "waste basket" RoomThree
has container open
with
name 'waste' 'basket' 'waste-basket' 'waste_basket',
initial "You see a waste basket here.",
before [; Wear: "This isn't a party, and you aren't the life of it."; ],
;
Object bottle "two-liter plastic bottle" waste_basket
has ~open openable container transparent
with
name 'plastic' 'two' 'liter' 'two-liter' '2-liter' 'bottle',
description [;
print "The bottle is ";
if (bottled_ln in self) print "full of liquid nitrogen. ";
else print "empty. ";
print "It's ";
if (self has open) print "open. "; else print "closed. ";
if (funnel in self) print "There's a funnel in the bottle's mouth.";
new_line;
rtrue;
],
invent [;
if (inventory_stage == 2) {
print " (which is ";
if (self has open) print "open";
else print "closed";
print " and ";
if (bottled_ln in self) print "full";
else print "empty";
if (funnel in self) print ", in which is a funnel";
print ")";
rtrue;
}
],
poured_into [;
if (noun == original_ln) {
if (funnel in self) {
if (bottled_ln in self) "The bottle is already full.";
move bottled_ln to self;
"You manage to get some liquid nitrogen into the bottle. ";
}
else {
"The opening of the bottle is too small, and your pouring is not
precise enough.";
}
}
],
before [;
Receive:
if (self hasnt open) "It might help to open the bottle first.";
if (noun == funnel) {
move funnel to self;
"A perfect fit.";
}
else "That won't fit in the bottle.";
Close:
if (funnel in self) "You'll have to take the funnel out first.";
if (IsNotHeldOrTaken(bottlecap))
"You need the bottle cap.";
give bottlecap concealed;
move bottlecap to self;
if (bottled_ln in self) {
StartDaemon(self);
give self ~open;
"It takes some time to close the bottle, since the rapidly
evaporating nitrogen occupies much more volume as a gas than
as a liquid. However, you manage to close it.";
}
Search:
<<Examine self>>;
PourInto:
if (original_ln in self) <<PourInto original_ln second>>;
],
number 7,
daemon [;
self.number--;
if (self has open) {
StopDaemon(self);
self.number=7;
return;
}
switch (self.number) {
3:
if (TestScope(player, self)) {
print "^The bottle is starting to make lots of noise, as though
the plastic were being stretched to its limit.^";
return;
}
0:
if (TestScope(player, self)) {
deadflag=1;
print "^The bottle explodes with a deafening boom and a huge
cloud of water vapor. As with most explosions, standing
in such close proximity was not advisable. It was, in
fact, fatal.";
lloyd.act(bottle);
StopDaemon(self);
return;
}
if (self in bank_safe) {
give bank_safe general open;
remove self;
if (player notin BankVault)
print "^You hear a distant, muffled explosion.^";
else {
print "^There is a terrible explosion from within the safe.
The door blasts open with a clang and a huge cloud of
water vapor.";
if (lloyd in BankVault) lloyd.act(bank_safe);
}
StopDaemon(self);
new_line;
return;
}
else {
print "^You hear a distant explosion.^";
StopDaemon(self);
return;
}
default: return;
}
],
after [;
Open:
give bottlecap ~concealed;
move bottlecap to player;
],
;
Object bottlecap "bottle cap" bottle
class Crawlable
has concealed
with
parse_name [;
switch(NextWord()) {
'bottlecap', 'cap': return 1;
'bottle': if (NextWord() == 'cap') return 2;
default: return 0;
}
],
before [;
Take:
if (self in bottle) <<Open bottle>>;
PutOn:
if (second == bottle) <<Close bottle>>;
Turn:
if (self in bottle) <<Open bottle>>;
else if (~~ IsNotHeldOrTaken(bottle))
<<Close bottle>>;
],
;
Object bed "bed" RoomThree
has enterable supporter scenery
with
name 'bed',
description
"It's a perfectly ordinary bed. It's particularly ordinary (for around
here, anyway) in that it hasn't been made in a very long time.",
before [;
LookUnder,Search:
if (one_dollar has concealed) {
give one_dollar ~concealed;
print "You find a dollar bill! You pocket the bill. ";
if (one_dollar hasnt moved) print "(Okay, so it's an obvious
adventure game puzzle, but I'm sure you would have been
disappointed if nothing had been there.)";
else print "(Fun, huh?)";
move one_dollar to player;
new_line; rtrue;
}
"You don't find anything.";
Make:
"It was a nice thought, but you suddenly realize that you never
learned how.";
GoUnder:
"Hiding won't solve anything.";
JumpInto, JumpOn:
print "The bed isn't as bouncy as you might have hoped. ";
if (player notin self) <<Enter self>>;
else { new_line; rtrue; }
JumpOver:
print "You don't make it all the way over. ";
if (player in self) <<Jump>>;
else <<JumpInto self>>;
],
react_before [;
Jump: if (player in self) <<JumpOn self>>;
],
after [; Enter: "Okay, you're now sitting on the bed."; ],
put_under [;
if (noun == one_dollar) {
give one_dollar concealed;
move one_dollar to location;
"Okay, if you really want to.";
}
"That's not the way to keep your room tidy.";
],
;
Object one_dollar "one-dollar bill" RoomThree
class Crawlable
has concealed
with
name '1//' 'dollar' 'one-dollar' '1-dollar' 'one' 'bill' 'money',
react_before [;
default:
if (self has concealed && self == noun or second) {
print "(", (the) self, " under the bed)^";
give self ~concealed;
rfalse;
}
],
;
Object AlleyOne "Alley One"
has light
with
description [;
print "You are in the eternal twilight of Alley One, one of the twisty
little passages (all different) making up the student house in which
you live. Your room (room 3) is to the east. To the west is a door (";
if (alley_one_door hasnt open) print "closed";
else print "open";
"), affixed to which is a large sign. An exit is south, and the
hallway continues north.";
],
before [;
Enter:
if (noun == alley_one_door) <<Go w_obj>>;
],
w_to [ just_checking;
if (just_checking) return alley_one_door;
if (alley_one_door hasnt open) {
print "The door is closed and locked. ";
if (sign hasnt general) print "You might read the sign on the
door for more information.";
new_line;
rtrue;
}
else return alley_one_door;
],
e_to RoomThree, n_to AlleyOneNorth, s_to Breezeway,
out_to Breezeway,
;
Object alley_one_door "door"
has door scenery openable locked
with
name 'door',
description [;
if (self has open) "It's open.";
if (real_location == AlleyOne)
"The door is closed and locked. There is a slot in the door, and
above that, a large sign is affixed to the door.";
else "It's closed.";
],
before [;
Unlock:
print "There's no keyhole";
if (real_location == AlleyOne)
print ", only that strange slot in the door";
".";
],
door_to [;
if (real_location == AlleyOne) return RoomFour; else return AlleyOne;
],
door_dir [;
if (real_location == AlleyOne) return w_to; else return e_to;
],
found_in AlleyOne RoomFour,
;
Class Treasure
has scored
with
name "treasure" "treasures//p",
list_together "treasures",
;
Object slot "slot" AlleyOne
has scenery container open
with
name 'slot',
number 0,
poured_into "The slot will only accept items on the treasure list.",
before [;
Receive:
if (~~ noun ofclass Treasure)
"The slot will only accept items on the treasure list.";
else {
print (The) noun, " disappears into the slot. ";
self.number++;
remove noun;
score=score+5;
if (self.number == 4) {
give alley_one_door ~locked open;
print "As the treasure disappears into the slot, you hear a
klaxon from the other side of the door. An elaborate
series of clicks and clanks follows, then the door
swings open.";
}
new_line; rtrue;
}
LookUnder:
"You are unable to.";
],
;
Object sign "sign" AlleyOne
has scenery
with
name 'sign',
description
"The sign says:
^^ Welcome to Ditch Day!^^
This stack is a treasure hunt. Gather all the treasures and you
break the stack. To satisfy the requirements of this stack, you must
find the items listed below and deposit them in the slot in the door.
When all items have been put in the slot, the stack will be solved and
the door will open automatically. The items to find are:
^^ The Great Seal of the Omega
^ Mister Happy Gear
^ A Million Random Digits
^ A DarbCard^^
These items are hidden amongst the expanses of the Great
Undergraduate Excavation project. Happy hunting!^^
For first-time participants, please note that this is a ~finesse
stack.~ You are not permitted to attempt to break the stack by brute
force. Instead, you must follow the rules above.",
before [;
Examine:
give self general;
Take:
"The sign is firmly attached to the door.";
LookUnder:
"You are unable to.";
],
;
Object RoomFour "Room 4"
has light
with
description
"This is room 4, where the weird senior across the hall lives. An
exit is to the east, and a strange passage leads down.",
e_to alley_one_door, out_to alley_one_door,
d_to [ just_checking;
if (just_checking) return ShipRoom;
print "The passage takes you down a winding stairway to a previously
unseen entrance to...^";
return ShipRoom;
],
;
Object win_note "note" RoomFour
class Crawlable
with
description
"Congratulations! You've broken the stack! Please take this fine
WarpMaster 2000(tm) warp motivator, with my compliments. I'll see you
in ~Deep Space Drifter~!",
name 'note',
;
Object motivator "warp motivator" RoomFour
with
name 'warp' 'motivator' 'warpmaster',
description
"It's a WarpMaster 2000(tm), the top of the line model.",
before [;
Take:
if (self hasnt moved) score=score+20;
],
;
Object AlleyOneNorth "Alley One North"
has light
with
description
"You are at the north end of Alley One. A small room is to the west.",
s_to AlleyOne, w_to ComputerRoom,
;
Object ComputerRoom "Computer Room"
has light
with
description
"You are in a small computer room. Not surprisingly, the room
contains a personal computer. The exit is east.",
e_to AlleyOneNorth
;
Object computer "personal computer" ComputerRoom
has scenery
with
name 'personal' 'computer' 'pc' 'screen' 'monitor' 'keyboard' 'text'
'game',
description
"The computer is in use by a couple of your fellow undergraduates.
Closer inspection of the screen shows that they seem to be playing a
text adventure. You've never really understood the appeal of those
games yourself, but you quickly surmise that the game is part of one
of the seniors' stacks.",
before [;
Take:
"It's not a portable.";
],
;
Object students "students" ComputerRoom
has animate pluralname
with
name 'couple' 'students' 'pair' 'of' 'undergraduates' 'drifters',
description "The students are busy using the computer.",
describe "^A couple of your fellow undergraduates are here, using the
computer. They seem quite absorbed in what they're doing.",
life [;
Ask: "They're too engrossed to listen to you.";
Answer:
if (noun == 'hi' or 'hello' or 'greetings' or 'salutations')
return self.greet();
Attack: "You are about to attack, but a random morality enforcing code
fragment prevents it.";
Kiss: "You might consider it if they washed.";
Give:
if (noun == one_dollar)
if (self.number >= 3) "They seem much more interested in their
~virtual~ dollar than in the real thing.";
else "They don't seem to want your money.";
Show:
if (noun == one_dollar) "They pretend not to see.";
ThrowAt:
"That's no help.";
],
orders [;
Hello: return self.greet();
NotUnderstood: rfalse;
default: "The students don't seem to want any suggestions from you.";
],
greet [;
"The students ignore you and huddle closer to the computer screen.";
],
react_before [;
SwitchOff:
if (noun == computer) "The students won't let you, since they're
busy using the computer.";
TypeOn:
if (second == computer)
"The computer is already in use. Courtesy demands that you wait
your turn.";
Hello: return self.greet();
],
number 0,
each_turn [;
if (self.number < 32) self.number++;
new_line;
switch(self.number) {
1: "~Where are we going to find the dollar bill?~ one of the
students asks the other. They sit back and stare at the
screen, lost in thought.";
2: "~Hey!~ says one of the students. ~Did you look under the
bed?~^^The other student shakes his head. ~No way, that would
be a stupid puzzle!~";
3: "One of the students using the computer types a long string
of commands, and finally types, ~Look under bed.~^^~Wow! The
dollar bill actually was under the bed! How lame!~";
9: "~What's a liter?~ demands one of the students.";
20: "~This maze sure is hard,~ moans one of the students. ~How
are we supposed to get through it?~^^~I dunno,~ says the other,
scratching his head. ~Let's try going in random directions
until we find the exit.~";
25: "~This maze doesn't make any damn sense!~
a student bemoans.";
27: "~Hey! Check this out! You can type 'w' as an abbreviation for
'enter the west wall'.~^^The other student huddles even
closer to the screen, ~Cool!~";
30: "~What are we supposed to do now?~ asks a perplexed student.
With brow furrowed, the student types ~i~, then taps the enter
key.";
31: "The students stare at the screen as if expecting a
revelation.";
default: "The students continue playing with the computer.";
}
],
;
Object Breezeway "Breezeway"
has light
with
description "You are in a short passage that connects a courtyard,
to the east, to the outside of the building, which lies to the west.
A hallway leads north.",
n_to AlleyOne, e_to Courtyard, w_to OrangeWalk1,
;
Object Courtyard "Courtyard"
has light
with
description "You are in a large outdoor courtyard. An arched passage
is to the west. A passage leads east, and a stairway leads down.",
w_to Breezeway, e_to Lounge, d_to Hall1,
;
Object Lounge "Lounge"
has light
with
description "You are in the lounge. A passage leads west, and a
dining room lies to the north.",
w_to Courtyard, out_to Courtyard, n_to DiningRoom,
;
Object DiningRoom "Dining Room"
has light
with
description "You are in the dining room. There is a wooden table in
the center of the room. The lounge lies to the south, and a passage
to the east leads into the kitchen.",
e_to Kitchen, s_to Lounge,
;
Object wooden_table "wooden table" DiningRoom
has scenery supporter
with
name 'wooden' 'table',
before [; Examine: <<Search self>>; ],
;
Object fish_food "fish protein module" wooden_table
has edible
with
name 'fish' 'protein' 'module',
description "It's a small pyramid-shaped white object, which is widely
considered to consist primarily of fish protein. The food service
typically resorts to such unappetizing fare toward the end of the
year.",
;
Object cup "coffee cup" wooden_table
has container open
with
name 'coffee' 'cup',
description [;
if (toxicola in self) "It's full of a viscous brown fluid.";
else "It's empty.";
],
poured_into [;
if (noun ofclass LiquidNitrogen) {
if (toxicola in self)
"The cup is already full of ToxiCola(tm), and that's bad enough
already without adding any other chemicals to it.";
else "You manage to get a bit of liquid nitrogen into the cup, but
the liquid quickly evaporates.";
}
],
before [;
Receive:
if (noun has pluralname) print "They ";
else print "It ";
"won't fit in the cup.";
EmptyT, PourInto:
if (toxicola in self) <<PourInto toxicola second>>;
],
;
Object Kitchen "Kitchen"
has light
with
description
"You are in the kitchen. A ToxiCola(tm) machine is here. A passage
leads into the dining room to the west.",
w_to DiningRoom, out_to DiningRoom,
;
Object cola_machine "ToxiCola(tm) machine" Kitchen
has container open scenery
with
parse_name [
wd adj_count noun_count;
wd=NextWord();
if (wd == 'toxicola' or 'cola' or 'pop' or
'coke' or 'soda' or 'bubbly' or 'toxicola(tm)') {
adj_count++; wd=NextWord();
}
while (wd == 'machine' or 'compartment') {
noun_count++;
wd=NextWord();
}
if (noun_count > 0) return adj_count + noun_count;
else return 0;
],
description [;
print "The machine dispenses ToxiCola(tm), one of the big losers
in the Cola Wars. But hey, it's cheap, so the food service
installed it. The machine consists of a compartment large enough
for a cup and a button for dispensing ToxiCola(tm) into the cup.";
if (cup in self) print "The compartment contains a cup.";
new_line;
rtrue;
],
before [;
Receive: if (noun ~= cup) "The compartment will fit only cups.";
],
;
Object cola_button "button" Kitchen
has scenery
with
parse_name [
wd adj_count button_wd;
wd=NextWord();
if (wd == 'toxicola' or 'cola' or 'soda' or
'coke' or 'pop' or 'bubbly' or 'toxicola(tm)') {
adj_count++; wd=NextWord();
}
if (wd == 'machine') { adj_count++; wd=NextWord(); }
if (wd == 'button') button_wd++;
if (button_wd) return adj_count + button_wd;
else return 0;
],
before [;
Push:
if (cup in cola_machine) {
if (toxicola in cup) "ToxiCola(tm) spills over the already full cup
and drains away.";
move toxicola to cup;
"The horrible brown viscous fluid you have come to know as
ToxiCola(tm) fills the cup.";
}
"Horrible viscous brown fluid spills into the empty compartment and
drains away.";
],
;
Object toxicola "ToxiCola(tm)"
with
name 'thick' 'flat' 'viscous' 'brown' 'fluid' 'toxicola' 'cola' 'pop'
'soda' 'coke' 'bubbly' 'toxicola(tm)',
article "some",
description "It's a thick brown fluid. It appears to be quite flat.",
before [;
Take:
if (cup notin player && onotheld_mode==0) {
print "(taking ", (the) cup, ")^";
<<Take cup>>;
}
print "You'll have to carry ", (the) self, " in the cup.";
if (onotheld_mode == 1 && action_to_be == ##Give)
print " To give the Toxicola(tm) to someone, try: ~give cup ...~.";
new_line; rtrue;
Drink:
if (IsNotHeldOrTaken(cup)) rtrue;
remove self;
print "You drink the ToxiCola(tm), despite your better judgment. It
initially sparks a sugar and caffeine rush. But it rapidly fades,
and is replaced by a strange dull throbbing.";
player.awake_time=SLEEP_LIMIT+35;
new_line; rtrue;
],
;
Object OrangeWalk1 "Orange Walk"
has light
with
description
"You are on a walkway lined with orange trees. The walkway continues to
the north, and an arched passage leads into a building to the east.",
e_to Breezeway, n_to OrangeWalk2,
;
Object OrangeWalk2 "Orange Walk"
has light
with
description
"You are on a walkway lined with orange trees. The walkway continues to
the south, and leads into a large grassy square to the north.",
n_to Quad, s_to OrangeWalk1,
;
Object orange_trees "orange trees"
has scenery pluralname
with
description "The orange trees are perfectly ordinary.",
name 'orange' 'tree' 'trees',
found_in OrangeWalk1 OrangeWalk2,
before [;
Climb, ClimbUp:
"You climb into one of the orange trees and quickly find
the view from the few feet higher to be highly
uninteresting. You soon climb back down.";
Enter:
<<Climb self>>;
ClimbDown:
"You aren't in the tree.";
],
;
Object Quad "Quad"
has light
with
name 'huge' 'clouds' 'water' 'vapor',
description
"You are on the quad, a large grassy square in the center of campus.
The bookstore lies to the northwest; the health center lies to the
northeast; Buildings and Grounds lies to the north; and walkways lead
west and south.^^Some students dressed in radiation suits are staging
a bogus toxic leak, undoubtedly to fulfill the requirements of one of
the stacks. They are wandering around, looking very busy. Many
reporters are standing at a safe distance, looking terrified. The
supposed clean-up crew is pouring lots of liquid nitrogen onto the
ground, resulting in huge clouds of water vapor.",
s_to OrangeWalk2, nw_to Bookstore, w_to Walkway1,
ne_to HealthCenter, n_to BandG,
;
Class Crowd
has scenery animate
with
article "the",
before [;
Examine: rfalse;
default: print_ret (The) self, " aren't important.";
],
life [;
self.before();
rtrue;
],
orders [;
self.before();
rtrue;
],
;
Object leak_students "students" Quad
class Crowd
with
name 'students' 'student' 'radiation' 'suits' 'badges',
description "The students are making quite a good show of the
simulated nuclear waste spill. They're all wearing white
clean-room suits with official-looking ~Radiation Control
District~ badges. They're scampering about purposefully,
keeping the reporters back at a safe distance.",
;
Object reporters "reporters" Quad
class Crowd
with
name 'reporters' 'reporter',
description "They're not important.",
;
Object flask "flask" Quad
has container open
with
name 'flask' 'vapor' 'clouds' 'cloud',
description
"The flask appears to have lots of liquid nitrogen in it. It's hard to
tell just how much since the opening is perpetually clouded over with
thick plumes of water vapor.",
poured_into [;
if (noun == bottled_ln) {
if (funnel in bottle) "You'll have to take the funnel out first.";
remove bottled_ln;
"You pour the liquid nitrogen back into the flask.";
}
],
before [;
Receive:
"You know from experience that it wouldn't be a good idea to put ",
(the) noun, " into the liquid nitrogen, since the LN2 is
really, really cold.";
Search:
<<Examine self>>;
PourInto:
<<PourInto original_ln second>>;
Empty, EmptyT:
"The flask cannot be emptied. There seems to be an unlimited
supply of liquid nitrogen in it.";
],
;
Class LiquidNitrogen
with
article "some",
name 'liquid' 'nitrogen' 'ln2',
description "You can't see much thanks to the thick clouds of water vapor
that inevitably form over such a cold substance.",
before [
x;
Take:
x=parent(self);
if (x notin player && onotheld_mode==0) {
print "(taking ", (the) x, ")^";
<<Take x>>;
}
"You're safer leaving the liquid nitrogen in ", (the) x, ".";
Insert, Transfer:
print "(pouring ", (the) self, " into ", (the) second, ")^";
<<PourInto self second>>;
Touch, Rub:
"You know enough about liquid nitrogen to know that touching it
is a bad idea.";
],
;
Object original_ln flask
class LiquidNitrogen
with
name 'original',
short_name [;
if (TestScope(self, bottled_ln)) print "original ";
print "liquid nitrogen";
rtrue;
],
;
Object bottled_ln
class LiquidNitrogen
with
name 'bottled',
short_name [;
if (TestScope(self, original_ln)) print "bottled ";
print "liquid nitrogen";
rtrue;
],
;
Object BAndG "B&G"
has light
with
description "You are in the Buildings and Grounds office. The exit is to
the south.",
s_to Quad, out_to Quad,
;
Object b_and_g_memo "scrap of paper" BAndG
with
name 'scrap' 'of' 'paper',
description [;
print "Most of the paper is torn away. The part that remains seems to
have a list of numerical codes of some kind on it:^^";
font off;
print " 293 -- north tunnel lighting
^ 322 -- station 2 lighting
^ 612 -- behavior lab";
font on;
"^^The rest of the paper is missing.";
],
;
Object HealthCenter "Health Center"
has light
with
description "You are in the health center. Like the rest of campus,
this place is deserted because of Ditch Day. The large desk would
normally have a receptionist behind it, but today, no one is in
sight.",
sw_to Quad, out_to Quad,
;
Class SimpleDesk
has scenery supporter
with
short_name "desk",
name 'desk',
before [; Open: "There's no drawer."; ],
;
Object health_desk HealthCenter
class SimpleDesk
with
name 'large',
;
Object healthmemo "health memo" health_desk
class Crawlable
with
name 'health' 'memo',
description [;
font off;
print "From: Director of the Health Center
^To: All Health Center Personnel
^Subject: ToxiCola(tm) toxicity";
font on;
"^^Many students have visited the Health Center recently, complaining
that the ToxiCola(tm) that is served in the student houses has not been
properly caffeinated. The students are complaining of drowsiness,
dizziness, and other symptoms, that are normally associated with an
insufficient intake of caffeine.^^
Upon investigation, we have learned that the ToxiCola(tm) dispensers in
the student houses have become contaminated with a substance that
induces these effects. The substance has not yet been identified, but
the concentration seems to be increasing. All Health Center personnel
are urgently directed to advise students to avoid the ToxiCola(tm) if
at all possible. Students should be informed that their student health
insurance coverage will cover any purchases of other caffeinated
beverages that they need for their studies.";
],
;
Object Walkway1 "Walkway"
has light
with
description "You are on a walkway. A large grassy square lies to the east.
Buildings lie to the north and south. The walkway continues west.",
e_to Quad, n_to BehaviorLab, s_to SecurityOffice, w_to Walkway2,
;
Object Walkway2 "Walkway"
has light
with
description "You are on a walkway, which continues to the east. Buildings are
to the north and south.",
e_to Walkway1, s_to ExplosiveLab, n_to BiologyBuilding,
;
Object BiologyBuilding "Biology Building"
has light
with
description "You are in the biology building. The exit is south.",
s_to Walkway2, out_to Walkway2,
;
Object biology_notebook "notebook" BiologyBuilding
with
name 'notebook' 'book',
description
"The notebook explains various lab techniques used in cloning
organisms. Since the invention of the CloneMaster, which requires only
a sample of genetic material from a subject (such as some blood, or a
bit of skin, or the like) and the basic skills required to operate a
household blender, most of the techniques are obsolete. Some of the
data, however, are interesting. For example, the notebook outlines the
procedure for reversing the sex of a clone. The introduction of
chemicals, identified herein only as Genetic Factor XQ3, Polymerase
Blue, and Compound T99, at the start of the cloning process, apparently
does the trick. Most of the document is a discussion of the
human immune system. The author comes to the conclusion that the human
immune system, though a novel idea, is far too improbable to ever
actually be implemented.",
;
Object ExplosiveLab "Explosive Lab"
has light
with
description
"It's not that the lab itself is explosive (though it has blown up a
couple times in the past). Rather, they study explosives here.
Unfortunately, all the good stuff has been removed by other Ditch Day
participants, who got up earlier than you did. The exit is north.",
n_to Walkway2, out_to Walkway2,
;
Object thesis "thesis" ExplosiveLab
with
name 'thesis',
description
"The thesis is about Thermal Expansion Devices. It explains about a
new class of explosives that are made possible by low-temperature
fluid technology (i.e., liquid nitrogen) and high-tension polymer
containment vessels (i.e., plastic bottles). A great deal of jargon
and complicated theories are presented, presumably to fool the faculty
advisor into thinking the author actually did something useful with
his research funds. After wading through the nonsense, you find that
the paper is merely talking about putting liquid nitrogen into a
plastic soft-drink bottle, then closing the bottle, then letting
nature take its course. Since the nitrogen will tend to evaporate at
room temperature, but will have no place to go, the bottle will
eventually explode.^^On the cover page, you notice this important
warning: ~Kids! Don't try this at home! Liquid nitrogen is extremely
cold and can cause severe injuries. It should only be handled by
trained professionals. Never put liquid nitrogen in a closed
container.~", ;
Object Bookstore "Bookstore"
has light
with
description "You are in the bookstore. The shelves are quite empty;
No doubt everything has been bought up by seniors in attempts to build
their stacks and underclassmen in attempts to break them. The exit is
to the southeast.",
se_to Quad,
;
Object battery "battery" Bookstore
with
name 'battery',
;
Global buy_obj;
Object clerk "clerk" Bookstore
has animate female
with
name 'clerk',
description
"The clerk is a kindly lady, to whom you have paid many hundreds of
dollars for books and other college necessities.",
describe
"^A clerk is near the exit, prepared to ring up any purchases you might
want to make (not that there's much left here to buy).",
react_before [;
Go:
if (noun == se_obj && IndirectlyContains(player, battery) &&
battery hasnt general)
"The clerk saw you pick up the battery. ~That'll be
five dollars,~ she says, waiting patiently.";
PourInto, PourOnto:
if (second == self) {
if (noun ofclass LiquidNitrogen) <<Attack self>>;
if (noun == toxicola) "That would totally ruin her kindly old hair-do.";
}
],
orders [;
NotUnderstood: rfalse;
Give:
if (noun == battery) {
if (battery hasnt general) "~That'll be five dollars please,~ she
says.";
else {
if (IndirectlyContains(player, battery))
"~You have it already,~ she says, smiling to herself.";
else if (InScope(battery)) "~It's right over there,~ she says, not
moving to get it for you.";
else "If you've lost it already I can't help you,~ she says.";
}
}
"~If you work hard enough, I'm sure you'll find one of your own,~ she
advises.";
default:
"She laughs and says, ~I don't have time to do everything for you.~";
],
life [;
Ask, Tell:
if (second == 'battery') {
if (battery hasnt general) "She says, ~Five dollars please.~";
else "~It's your's now,~ she says.";
}
else "The clerk is too busy being old and kindly to discuss it.";
Show:
switch(noun) {
battery:
if (battery hasnt general) "She says, ~Five dollars please.~";
"~It's yours now,~ she says.";
five_dollars:
"~My lands, a fortune!~ she says, in mock
amazement.";
one_dollar:
"She looks at your dollar for a moment, and says, ~I'm sorry
dear, there's nothing left to buy for only a dollar. But
chin up. Perhaps you could find somewhere to invest it.~";
default:
rfalse;
}
Give:
switch (noun) {
five_dollars:
if (buy_obj == self) "~Well I never!~ she exclaims, and
then smacks her lips loudly several times.";
if (buy_obj ~= 0 && buy_obj ~= battery)
"~I'm not selling ", (ThatOrThose) buy_obj, ",~ she explains.";
else if (IndirectlyContains(player, battery) ~= 1 &&
buy_obj ~= battery)
"The clerk looks confused. ~I don't see what you're paying
for,~ she says. She then looks amused, realizing that the
students here sometimes get a little ahead of themselves.";
else if (battery has general)
"The clerk looks confused and says, ~You've already paid!~
She then looks amused, realizing that the students here can
be a bit absent-minded at times.";
else {
give battery general;
remove five_dollars;
"The clerk accepts your money and says, ~Thank you. Have a nice
day.~";
}
one_dollar:
if (buy_obj == battery || (buy_obj == 0 &&
IndirectlyContains(player, battery)))
"The clerk reminds you that the battery costs five dollars. All
you have is one dollar. She looks amused.^^~They can do
calculus in their sleep but they can't add,~ she jokes.";
print "~I'm not selling anything that costs one dollar,~ she ";
if (buy_obj == self) print "primly ";
else print "politely ";
"explains.";
darbcard:
"The clerk shakes her head. ~Sorry,~ she says. ~We only accept
cash.~";
cup:
if (toxicola in cup)
"~I never drink that stuff,~ the clerk says. ~And neither
should you! Do you have any idea what's in there? I probably
don't know half as much chemistry as you, but I know better
than to drink that.";
default:
"She doesn't appear interested.";
}
Kiss:
if (self has general)
"She's still blushing from the last time.";
else {
give self general;
"She blushes, and smiles. ~You're so sweet! I'm lowering
the price of the battery to... five dollars,~ she says, chuckling.";
}
Attack:
"She is just a bit too old, and far too kindly for you to ever be
mad at her.";
ThrowAt:
if (noun == five_dollars or one_dollar) <<Give noun self>>;
<<Attack self>>;
],
;
Object BehaviorLab "Behavior Lab"
has light
with
description
"You are in the behavior lab. The exit is to the south, and a closed
door is to the north. The door is labeled: ~Maze - Experimental
Subjects Only~. In addition, a passage labeled ~Viewing Room~ leads
east.",
before [;
Enter:
if (noun == behavior_door_s) <<Go n_obj>>;
],
s_to Walkway1, out_to Walkway1, e_to MazeView,
n_to behavior_door_s, in_to behavior_door_s,
;
Object behavior_door_s "behavior door" BehaviorLab
has door scenery openable locked
with
parse_name [
wd wd_count;
wd=NextWord();
while ((location == MazeStart && wd == 'exit' or 'maze') ||
wd == 'behavior' or 'door' or 'label' or 'entrance') {
wd_count++; wd=NextWord();
}
return wd_count;
],
description [;
if (MazeStart hasnt visited) "The door is closed and locked, and
labeled: ~Experimental Subjects Only.~";
else "The door is closed and labeled: ~Experimental Subjects Only.~";
],
before [;
Open:
if (MazeStart has visited) "The door doesn't seem to open from this
side.";
else "The door seems to be closed and locked. Besides, do you really
want to become an ~Experimental Subject~?";
Unlock:
"There's no keyhole.";
],
door_dir n_to,
door_to MazeStart,
;
Object MazeView "Maze Viewing Room"
has light
with
description [;
print "The entire north wall of this room is occupied by a window,
overlooking a vast human-sized labyrinth. No experimental subjects
(i.e., students) seem to be wandering through the maze at the
moment, ";
if (MazeStart hasnt visited)
print "but you have the strange feeling that you will have to find
your way through the maze some day. You read, with a sense of
foreboding, the plaque affixed to the wall:^^";
else print "so your attention wanders to the plaque on the wall:^^";
<Examine maze_plaque>;
"^The Psycho-Magnetic Maze, which is visible through the window, has
been constructed to determine how the human directional sense interacts
with strong electromagnetic and nuclear fields. Through careful tuning
of these fields we have found that human subjects often become
completely disoriented in the maze, resulting in hours of random and
desperate wandering and much amusement to those of us in the
observation room.";
],
w_to BehaviorLab,
;
Object maze_window "window" MazeView
has scenery
with
name 'window' 'maze' 'labyrinth' 'behavior' 'lab',
description [;
print "The window looks out onto a vast human-sized labyrinth. The
maze is currently devoid of experimental subjects";
if (MazeStart hasnt visited) {
print ", but you have the strange feeling that you'll have to find
your way through the maze some day.^";
rtrue;
}
".^";
],
put_under [;
<<LookUnder self>>;
],
before [;
Search:
<<Examine self>>;
Take:
"Unfortunately, no.";
LookUnder:
"There's no space under this window.";
Enter:
"You can't get into the maze though the window.";
],
;
Object maze_plaque "plaque" MazeView
has scenery
with
name 'plaque',
description
"*** The Behavioral Biology Laboratory Psycho-Magnetic Maze ***",
before [;
Take, LookUnder:
"The plaque is firmly attached to the wall.";
],
;
Object SecurityOffice "Security Office"
has light
with
description
"You are in the campus security office, the very nerve-center of the
elite CalTech Cops. The officers all appear to be absent; undoubtedly,
they are all scurrying hither and yon trying to deal with the Ditch-Day
festivities. There is a desk in the center of the room. The exit is to
the north.",
n_to Walkway1, out_to Walkway1,
;
Object security_desk SecurityOffice
class SimpleDesk
with
name 'security',
;
Object security_memo "security memo" security_desk
class Crawlable
with
name 'security' 'memo' 'memos',
description [;
font off;
print "From: Director of Security
^To: All Security Personnel
^Subject: Great Underground Excavation";
font on;
"^^It has come to the attention of the CalTech Cops that the student
activity in the steam tunnels, known as the ~Great Undergraduate
Excavation~ project, has escalated vastly in recent years. Due to
objections from city officials about noise from underground and the
fear local residents have expressed that their property will be
undermined, this office has taken action to halt all GUE activity.
Effective immediately, a security officer will be posted at all known
steam tunnel entrances and shall, under no circumstances, allow
students to enter.";
],
;
Object flashlight "flashlight" security_desk
has transparent switchable ~light
with
name 'flashlight' 'flash' 'light' 'torch',
description [;
if (self has on && battery in self)
"It is providing a warm, reassuring beam of light.";
else if (battery notin self) {
print "It seems to be missing a battery";
if (self has on) ", so it is dark.";
else ".";
}
],
react_before [;
Insert, Transfer:
if (second == self) {
if (noun == battery) {
move battery to self;
print "You put the battery in the flashlight.^";
if (self has on) {
give self light;
print "^The flashlight flickers, then shines brightly.^";
}
}
else print "You can't put ", (thatorthose) noun, " into the flashlight.^";
rtrue;
}
Take:
if (noun == battery && battery in self) {
move battery to player;
print "You take the battery out of the flashlight.^";
if (self has on) {
give self ~light;
print "^The flashlight flickers out.^";
}
}
],
before [;
Burn:
if (self hasnt on) {
print "You turn on the flashlight. ";
<<SwitchOn self>>;
}
else {
if (self has light) "The flashlight is already lit.";
else "You can't do that without the battery.";
}
Open, Close:
if (TestScope(battery)) {
"You don't need to ", (address) verb_word, " the flashlight. Just
put the battery in, or take the battery out.";
}
else "There's no reason to ", (address) verb_word, " the flashlight
right now.";
],
after [;
SwitchOn:
if (battery in self) {
give self light;
"The flashlight is now shining brightly.";
}
"The flashlight remains stubbornly dark.";
SwitchOff:
if (battery in self) {
give self ~light;
"The flashlight obediently clicks off.";
}
else "The flashlight doesn't get any darker.";
],
;