borderzone/bystander.zil
2019-04-14 01:02:51 -04:00

2961 lines
86 KiB
Plaintext

"BYSTANDER for
BORDER ZONE
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
<ROOM PLATFORM-1
(LOC ROOMS)
(DESC "Platform, North End")
(SOUTH PER PLATFORM-MOVE-2)
(NORTH SORRY
"The platform ends here at a tall fence, marking the actual border between
Frobnia and Litzenburg.")
(WEST SORRY
"A guard prevents you from boarding the train. \"Nye mneshna pletska bli!\"")
(GLOBAL PLAT-TRAIN PLAT-GUARDS PLAT-PEOPLE PLAT-FENCE)
(FLAGS PLATFORMBIT)
(ACTION PLATFORM-ROOM-F)>
<OBJECT PLAT-FENCE
(LOC LOCAL-GLOBALS)
(DESC "fence")
(SYNONYM FENCE)
(ADJECTIVE BORDER)
(ACTION PLAT-FENCE-F)>
<ROUTINE PLAT-FENCE-F ()
<COND (<VERB? EXAMINE>
<TELL
"The fence is perhaps twenty feet tall, and virtually unscalable. It's
a good thing you have a ticket." CR>)>>
<ROOM PLATFORM-2
(LOC ROOMS)
(DESC "Train Platform")
(NORTH PER PLATFORM-MOVE-1)
(SOUTH PER PLATFORM-MOVE-3)
(WEST SORRY
"A guard prevents you from boarding the train. \"Nye mneshna pletska bli!\"")
(GLOBAL PLAT-TRAIN PLAT-GUARDS PLAT-PEOPLE)
(FLAGS PLATFORMBIT)
(ACTION PLATFORM-ROOM-F)>
<ROOM PLATFORM-3
(LOC ROOMS)
(DESC "Train Platform")
(NORTH PER PLATFORM-MOVE-2)
(SOUTH PER PLATFORM-MOVE-4)
(WEST SORRY
"A guard prevents you from boarding the train. \"Nye mneshna pletska bli!\"")
(GLOBAL PLAT-TRAIN PLAT-GUARDS PLAT-PEOPLE)
(FLAGS PLATFORMBIT)
(ACTION PLATFORM-ROOM-F)>
<ROOM PLATFORM-4
(LOC ROOMS)
(DESC "Platform, South End")
(NORTH PER PLATFORM-MOVE-3)
(SOUTH SORRY
"The platform ends here, and a guard prevents you from going any farther.")
(WEST SORRY
"A guard prevents you from boarding the train. \"Nye mneshna pletska bli!\"")
(GLOBAL PLAT-TRAIN PLAT-GUARDS PLAT-PEOPLE)
(FLAGS PLATFORMBIT)
(ACTION PLATFORM-ROOM-F)>
<ROUTINE PLATFORM-MOVE-1 ()
<PLATFORM-MOVE ,PLATFORM-1>>
<ROUTINE PLATFORM-MOVE-2 ()
<PLATFORM-MOVE ,PLATFORM-2>>
<ROUTINE PLATFORM-MOVE-3 ()
<PLATFORM-MOVE ,PLATFORM-3>>
<ROUTINE PLATFORM-MOVE-4 ()
<PLATFORM-MOVE ,PLATFORM-4>>
<GLOBAL FOLLOW-WARNING <>>
<GLOBAL FOLLOW-SURE <>>
<ROUTINE PLATFORM-MOVE (RM)
<TELL
"You walk slowly through the crowd">
<COND (<NOT <IN? ,CONTACT ,HERE>>
<TELL ", eyes open but totally in the dark
regarding the nature of your contact">)>
<TELL ".">
<COND (<AND <G? ,SUSPICION 0>
<NOT ,FOLLOW-WARNING>>
<SETG FOLLOW-WARNING T>
<TELL " It's probably nothing, but you could swear
that a man you see behind you was also behind you before you started
walking.">)
(<AND ,FOLLOW-WARNING <NOT ,FOLLOW-SURE>>
<COND (<PROB 40>
<SETG FOLLOW-SURE T>
<TELL
" There he is again, ducking behind a group of tourists. It's all but
certain you're being followed!">)
(T
<TELL
" You nonchalantly look around, and are relieved that the man you
saw earlier is no longer around.">)>)>
<COND (<EQUAL? .RM ,PLATFORM-1>
<TELL CR CR
"You've come to the northern end of the platform now, and you can see in the
distance the darkness that is Litzenburg.">)
(<EQUAL? .RM ,PLATFORM-4>
<TELL CR CR
"You've arrived at the platform's southern end, and can look back into
Frobnia, sighting its formidible border defenses: guard towers, searchlights,
patrols, guard dogs - God knows what else. It's a whole lot better to have a
ticket, and you smile, realizing that it's not easy this way either.">)>
<CRLF>
<SETG DONT-DESCRIBE-ROOM T>
.RM>
<ROUTINE PLATFORM-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"The platform itself is
the same size as the trains which cross the border here - four
train-lengths - a hundred yards or so. The train you arrived on is
standing here, each entrance door guarded so as to prevent passengers
from reboarding until the train is ready to leave. Why? Don't ask." CR>
<TELL CR
"There are people everywhere, milling back and forth - men, women, even
a few children. And then there are the guards, the ones you can see, and,
more troublesome, the ones you can't." CR CR>
<COND (<EQUAL? ,HERE ,PLATFORM-1>
<TELL
"Right now, you're standing at the northern end of the platform. Looking
ahead, you can see the darkness that is Litzenburg at night. In just a few
minutes, you hope to be there ... after making your contact." CR>)
(<EQUAL? ,HERE ,PLATFORM-2>
<TELL
"You're now alongside the second car." CR>)
(<EQUAL? ,HERE ,PLATFORM-3>
<TELL
"You're now alongside the third car." CR>)
(T
<TELL
"You're at the southern end of the platform. Looking back into Frobnia,
you can start to make out the border defenses of Frobnia. Incredible.
Guard towers. Searchlights. Patrols. Guard dogs. God knows what else.
Better to have a ticket. You smile, thinking that even then it's not all that
easy!" CR>)>)>>
<OBJECT PLAT-GUARDS
(LOC LOCAL-GLOBALS)
(DESC "guard")
(SYNONYM GUARD GUARDS)
(FLAGS PERSON)
(ACTION PLAT-GUARDS-F)>
<ROUTINE PLAT-GUARDS-F ()
<COND (<VERB? EXAMINE>
<TELL
"There guards here are many and close between, to twist a phrase. They
are all in uniform - well, you think so, in any case. Each is constantly
looking about for whatever happens to be illegal on this particular day." CR>)
(<HURT? ,PLAT-GUARDS>
<TELL
"To what end? The jails are not known for their comfort or amenities." CR>)>>
<OBJECT PLAT-PEOPLE
(LOC LOCAL-GLOBALS)
(DESC "crowd of people")
(SYNONYM PEOPLE MEN WOMEN CHILDREN CROWD THRONG)
(ACTION PLAT-PEOPLE-F)>
<ROUTINE PLAT-PEOPLE-F ()
<COND (<VERB? EXAMINE>
<TELL
"There are quite a large number of people here on the platform - maybe a
few hundred or more - men, women, children - and no idea of who your
contact is to be." CR>)
(<VERB? SEARCH>
<TELL
"You stare at the people in the crowd, but it's no use. You have no idea
who the contact might be." CR>)>>
<OBJECT GLOBAL-CONTACT
(LOC GLOBAL-OBJECTS)
(DESC "contact")
(SYNONYM CONTACT)
(ACTION GLOBAL-CONTACT-F)>
<ROUTINE GLOBAL-CONTACT-F ()
<COND (<NOT <EQUAL? ,SCENARIO 1 3>>
<TELL
"You must be thinking of another scenario." CR>)
(<EQUAL? ,SCENARIO 3>
<COND (<VERB? FIND WHERE>
<TELL
"Your contact is Riznik, the antique dealer. His business card clearly
shows how to find him." CR>)>)
(<IN? ,CONTACT ,HERE>
<COND (<EQUAL? ,PRSO ,GLOBAL-CONTACT>
<PERFORM ,PRSA ,CONTACT ,PRSI>)
(T
<PERFORM ,PRSA ,PRSO ,CONTACT>)>
<RTRUE>)
(<VERB? FIND WHERE>
<TELL
"You have almost nothing to go on, but in any event, the contact was
supposed to find you at the station platform." CR>)
(T
<TELL
"You can't see your contact here, or if you can, you don't know it." CR>)>>
<GLOBAL SMALL-NUMS-TBL
<PLTABLE "one compartment"
"two compartments"
"three compartments"
"four compartments"
"five compartments">>
<OBJECT GLOBAL-COMPARTMENT
(LOC GLOBAL-OBJECTS)
(DESC "compartment")
(SYNONYM COMPARTMENT)
(ADJECTIVE MY)
(SCENARIO 1)
(ACTION GLOBAL-COMPARTMENT-F)>
<ROUTINE GLOBAL-COMPARTMENT-F ()
<COND (<VERB? FIND WALK-TO>
<COND (<EQUAL? ,HERE ,COMP-5 ,PASS-5>
<TELL "Right here." CR>)
(T
<TELL
"It's the southmost compartment along the passageway." CR>)>)
(<VERB? ENTER>
<COND (<EQUAL? ,HERE ,PASS-5>
<DO-WALK ,P?IN>
<RTRUE>)
(<EQUAL? ,HERE ,COMP-5>
<TELL "Right here." CR>)
(<OR <EQUAL? ,HERE ,PASS-2 ,PASS-3 ,PASS-4>
<EQUAL? ,HERE ,PASS-1>>
<DO-WALK ,P?WEST>
<RTRUE>)
(T
<TELL ,GET-THERE-FIRST CR>)>)
(<VERB? LEAVE DISEMBARK>
<COND (<EQUAL? ,HERE ,COMP-5>
<DO-WALK ,P?OUT>
<RTRUE>)
(T
<TELL ,GET-THERE-FIRST CR>
<RTRUE>)>)
(<AND <VERB? LOOK-INSIDE>
<NOT <EQUAL? ,HERE ,COMP-5>>>
<PERFORM ,PRSA ,COMP-N-DOOR>
<RTRUE>)
(<VERB? EXAMINE>
<COND (<EQUAL? ,HERE ,COMP-5>
<PERFORM ,V?LOOK>
<RTRUE>)
(T
<TELL "It's easier from inside." CR>)>)>>
<CONSTANT GET-THERE-FIRST "You'll have to get there first.">
<ROOM COMP-5
(LOC ROOMS)
(DESC "Your Compartment")
(OUT PER COMP-EXIT)
(EAST PER COMP-EXIT)
(WEST SORRY "Your situation is serious, but not desperate.")
(GLOBAL COMP-5-DOOR)
(ACTION COMP-5-F)>
<ROUTINE COMP-5-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is your compartment on the train to Litzenburg. You were lucky enough
to avoid having a roommate on this trip, so the two bench-style seats are
more than enough. The compartment itself is quite simple - the two seats
on either side, the openable window looking out over the nighttime landscape,
the emergency stop cord, the luggage rack. It easily could be worse; this is
the first-class car, after all. What little privacy exists on this train
is in the form of a door to the east which is now ">
<COND (<FSET? ,COMP-5-DOOR ,OPENBIT>
<TELL "open">)
(T
<TELL "closed">)>
<COND (<IN? ,COMP-BLOOD-STAIN ,HERE>
;<NOT <FSET? ,COMP-BLOOD-STAIN ,INVISIBLE>>
<TELL
". A blood stain is noticeable on the floor here, a grim reminder of
the task that lies ahead">)>
<TELL ,PERIOD-CR>)
(<EQUAL? .RARG ,M-ENTER>
<FCLEAR ,COMP-5-DOOR ,OPENBIT>
<RTRUE>)>>
<OBJECT COMP-CORD
(LOC COMP-5)
(DESC "emergency stop cord")
(SYNONYM CORD ROPE HANDLE)
(ADJECTIVE EMERGENCY STOP)
(FLAGS NDESCBIT)
(ACTION COMP-CORD-F)>
<ROUTINE COMP-CORD-F ()
<COND (<VERB? PULL>
<TELL
"You pull the cord, but nothing happens. This doesn't surprise you,
considering the train itself." CR>)
(<VERB? EXAMINE>
<TELL
"It's just a piece of cord with a small wooden handle on the end." CR>)>>
<OBJECT COMP-RACK
(LOC COMP-5)
(DESC "luggage rack")
(SYNONYM RACK)
(ADJECTIVE LUGGAGE)
(FLAGS OPENBIT TRANSBIT SEARCHBIT NDESCBIT CONTBIT SURFACEBIT)
(CAPACITY 100)
(ACTION COMP-RACK-F)>
<ROUTINE COMP-RACK-F ()
<COND (<OR <VERB? OPEN CLOSE>
<AND <VERB? EXAMINE> <NOT <FIRST? ,PRSO>>>>
<TELL
"It's just an open rack at your eye-level." CR>)>>
<OBJECT COMP-SEAT-BACK
(LOC COMP-5)
(DESC "rear-facing seat")
(SYNONYM SEAT BENCH)
(ADJECTIVE BACK-FACING REAR-FACING REAR FACING)
(FLAGS NDESCBIT CONTBIT SURFACEBIT OPENBIT SEARCHBIT)
(CAPACITY 100)
(ACTION COMP-SEAT-F)>
<OBJECT UNDER-SEAT
(LOC COMP-5)
(DESC "space under the rear bench")
(SYNONYM $XY)
(FLAGS NDESCBIT CONTBIT OPENBIT SEARCHBIT TRANSBIT)>
<OBJECT COMP-SEAT-FRONT
(LOC COMP-5)
(DESC "front-facing seat")
(SYNONYM SEAT BENCH)
(ADJECTIVE FRONT-FACING FORWARD-FACING FRONT FORWARD FACING)
(FLAGS NDESCBIT CONTBIT SURFACEBIT SEARCHBIT OPENBIT)
(CAPACITY 100)
(ACTION COMP-SEAT-F)>
<ROUTINE COMP-SEAT-F ()
<COND (<VERB? EXAMINE>
<TELL
"The seats are simple wooden benches, with nothing to soften the ride.
You are told that this is an improvement over second class, but it's
difficult to imagine what this could mean.">
<COND (<EQUAL? ,PRSO ,COMP-SEAT-BACK>
<TELL " Further inspection reveals a narrow
space under the seat.">)>
<COND (<FIRST? ,PRSO>
<TELL " ">
<PERFORM ,V?LOOK-INSIDE ,PRSO>
<RTRUE>)
(T
<CRLF>)>)
(<VERB? CLIMB-ON BOARD>
<TELL
"You've always thought better on your feet, and there's no better time
to be thinking." CR>)
(<AND <VERB? PUT-UNDER> <EQUAL? ,PRSI ,COMP-SEAT-BACK>>
<COND (<EQUAL? ,PRSO ,CAMERA-BAG ,BRIEFCASE ,CAMERA>
<TELL "It's too bulky to fit." CR>
<RTRUE>)>
<MOVE ,PRSO ,UNDER-SEAT>
<TELL
"You slide the " D ,PRSO " under the rear-facing bench." CR>)
(<VERB? LOOK-UNDER>
<COND (<EQUAL? ,PRSO ,COMP-SEAT-FRONT>
<TELL
"The front-facing bench has no space underneath it; however, a quick look
indicates that the rear bench has a narrow space underneath it." CR>)
(T
<PERFORM ,V?LOOK-INSIDE ,UNDER-SEAT>
<RTRUE>)>)
(<VERB? CRAWL-UNDER>
<TELL
"There's not enough room for you under the seat." CR>)
(<AND <VERB? REACH-IN>
<EQUAL? ,PRSO ,COMP-SEAT-BACK>>
<TELL "You reach under the seat">
<COND (<NOT <FIRST? ,UNDER-SEAT>>
<TELL ", but come up empty." CR>)
(T
<TELL
" and pull out the " D <FIRST? ,UNDER-SEAT> "." CR>
<MOVE <FIRST? ,UNDER-SEAT> ,WINNER>)>)>>
<OBJECT COMP-WINDOW
(LOC COMP-5)
(DESC "window")
(SYNONYM WINDOW)
(FLAGS NDESCBIT DOORBIT)
(ACTION COMP-WINDOW-F)>
<ROUTINE COMP-WINDOW-F ()
<COND (<VERB? LOOK-INSIDE CLEAN>
<PERFORM ,PRSA ,PASS-WINDOW>
<RTRUE>)
(<VERB? DISEMBARK LEAP-OFF ENTER EXIT>
<TELL
"Your situation is serious, but not desperate." CR>)
(<AND <VERB? PUT-THROUGH PUT>
<EQUAL? ,PRSI ,COMP-WINDOW>>
<COND (<ULTIMATELY-IN? ,PASSPORT ,PRSO>
<SETG PRSO ,PASSPORT>)
(<ULTIMATELY-IN? ,TICKET ,PRSO>
<SETG PRSO ,TICKET>)>
<COND (<EQUAL? <LOC ,PRSO> ,GLOBAL-OBJECTS ,LOCAL-GLOBALS>
<TELL "Funny." CR>)
(<NOT <ULTIMATELY-IN? ,PRSO ,WINNER>>
<TELL
"You're not holding that." CR>)
(<EQUAL? ,PRSO ,PASSPORT ,TICKET>
<TELL
"Without your " D ,PRSO
", you won't be leaving Frobnia for a good long time." CR>)
(<FSET? ,PRSI ,OPENBIT>
<REMOVE-TO-BOTTOM ,PRSO>
<TELL
"The " D ,PRSO " goes through the window and out of your life." CR>)
(T
<TELL
"The window's closed. Surely you don't mean through the window!" CR>)>)>>
<OBJECT PASS-WINDOW
(LOC LOCAL-GLOBALS)
(DESC "window")
(SYNONYM WINDOW)
(ACTION PASS-WINDOW-F)>
<ROUTINE PASS-WINDOW-F ()
<COND (<VERB? CLEAN>
<TELL
"The windows are clean enough, at least by FNR standards." CR>)
(<VERB? KICK MUNG>
<TELL
"With guards posted at either end of the car, and the level of tension high,
you would only call attention to yourself." CR>)
(<VERB? OPEN CLOSE>
<TELL
"The windows along the passageway aren't openable." CR>)
(<VERB? LOOK-INSIDE>
<COND (<RT-QUEUED? ,I-BAD-BORDER>
<TELL
"The landscape is dark and bleak; this is the area just preceding
the border checkpoint." CR>)
(,BAD-TUNNEL
<TELL
"From the sound of it, you're in a tunnel, and a long one at that.
There is only blackness punctuated by single trouble lights every
ten seconds or so." CR>)
(<RT-QUEUED? ,I-GORMNASH>
<TELL
"The train is sitting at the border station platform, which is
crowded with people." CR>)
(T
<TELL
"The sky is dark now, but you can see the occasional lights of small
villages here and there. You don't know exactly where you are, but
you are getting near the border checkpoint." CR>)>)>>
<OBJECT COMP-5-DOOR
(LOC LOCAL-GLOBALS)
(DESC "compartment door")
(SYNONYM DOOR)
(ADJECTIVE COMPARTMENT)
(FLAGS DOORBIT)>
<GLOBAL GUARD-NOTICE-FLAG <>>
<OBJECT GLOBAL-BAD-SPY
(LOC GLOBAL-OBJECTS)
(DESC "man in the trench coat")
(SYNONYM MAN SPY VIPER)
(ADJECTIVE BAD)
(SCENARIO 1)
(TRANSIENT <PLTABLE PASS-1 PASS-2 PASS-3 PASS-4 PASS-5 PASS-6
COMP-5 LAVATORY>)
(ACTION GLOBAL-BAD-SPY-F)>
<ROUTINE GLOBAL-BAD-SPY-F ()
<COND (<AND <LOC ,BAD-SPY>
<FSET? <LOC ,BAD-SPY> ,HUTBIT>
<FSET? ,HERE ,HUTBIT>
<NOT <EQUAL? ,HERE ,LAVATORY>>>
<COND (<AND <EQUAL? ,PRSI ,GLOBAL-BAD-SPY>
<VERB? SHOW GIVE>>
<COND (<EQUAL? ,PRSO ,DOCUMENT ,SHRED ,SHREDS>
<BAD-SPY-F>
<RTRUE>)
(T
<TELL
"There's nothing to be gained by doing that." CR>)>)
(<VERB? PHOTOGRAPH BRIBE LISTEN EXAMINE>
<PERFORM ,PRSA ,BAD-SPY>
<RTRUE>)
(<VERB? FOLLOW WATCH>
<TELL
"If you just stand around here, you'll be able to watch his movements.
On the other hand, it might look suspicious to him." CR>)>)
(<VERB? FOLLOW>
<TELL
"You don't know where he is at the moment." CR>)
(<VERB? PHOTOGRAPH BRIBE LISTEN>
<PERFORM ,PRSA ,BAD-SPY>
<RTRUE>)
(T
<CANT-SEE ,GLOBAL-BAD-SPY>)>>
<ROUTINE PASS-F (RARG "AUX" BSL)
<SET BSL <LOC ,BAD-SPY>>
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"You are standing in the passageway that runs along the length of the
car. ">
<COND (,AT-STATION
<TELL
"Just north of your compartment, a guard is standing. He is motioning
you out of the train to the south.">)
(T
<TELL
"At either end of the passageway, a guard is standing, machine gun
poised at his side.">)>
<TELL " Right now, you're standing outside ">
<COND (<EQUAL? ,HERE ,PASS-5>
<TELL "your own compartment">)
(T
<TELL "the " <GET ,PASS-TELLS <GETP ,HERE ,P?NS>>>)>
<TELL ".">
<COND (<AND .BSL <FSET? .BSL ,HUTBIT>>
<TELL
" A man, wearing a trench coat, is ">
<COND (<EQUAL? .BSL ,HERE>
<TELL "also standing here">)
(<EQUAL? .BSL ,PASS-5>
<TELL "standing outside of your
compartment, motioning for you to return">)
(T
<TELL "standing outside ">
<TELL "the "
<GET ,PASS-TELLS <GETP .BSL ,P?NS>>>
<TELL ", and talking to its
occupants in rapid-fire Frobnian">)>
<TELL ".">)>
<CRLF>)
(<EQUAL? .RARG ,M-ENTER>
<SETG CURRENT-PASS ,HERE>
<RFALSE>)>>
<ROUTINE HST? ()
<COND (<OR <IN? ,CAMERA ,WINNER>
<IN? ,DOCUMENT ,WINNER>
<IN? ,SHREDS ,WINNER>
<IN? ,COLOR-ROLL ,WINNER>
<IN? ,EXPOSED-ROLL ,WINNER>>
<RTRUE>)>>
<GLOBAL PASS-TELLS
<PLTABLE "northernmost compartment"
"second northernmost compartment"
"middle compartment"
"compartment next to your own"
""
"lavatory">>
<GLOBAL CURRENT-PASS <>>
<ROOM PASS-1
(LOC ROOMS)
(DESC "Outside 1st Compartment")
(IN-DIR P?WEST)
(WEST PER COMP-MOVE)
(NORTH SORRY "A stern-faced guard refuses to let you pass.")
(SOUTH PER PASS-MOVE-2)
(GLOBAL COMP-N-DOOR PASS-WINDOW BY-GUARDS BY-GUN)
(FLAGS HUTBIT)
(NS 1)
(EJECT
"Two newlyweds here are enjoying their privacy, and not enjoying your
presence. The woman, who appears to be the man of the house, escorts
you out of the door.")
(ACTION PASS-F)>
<ROOM PASS-2
(LOC ROOMS)
(DESC "Outside 2nd Compartment")
(IN-DIR P?WEST)
(WEST PER COMP-MOVE)
(NORTH PER PASS-MOVE-1)
(SOUTH PER PASS-MOVE-3)
(GLOBAL COMP-N-DOOR PASS-WINDOW BY-GUARDS BY-GUN)
(FLAGS HUTBIT)
(NS 2)
(EJECT
"A family of five is having what appears to be a rather heated argument.
You are nearly socked in the head before you retreat to the corridor.
The door slams behind you.")
(ACTION PASS-F)>
<ROOM PASS-3
(LOC ROOMS)
(DESC "Outside 3rd Compartment")
(IN-DIR P?WEST)
(WEST PER COMP-MOVE)
(NORTH PER PASS-MOVE-2)
(SOUTH PER PASS-MOVE-4)
(GLOBAL COMP-N-DOOR PASS-WINDOW BY-GUARDS BY-GUN)
(FLAGS HUTBIT)
(NS 3)
(EJECT
"This smoke-filled compartment is filled with a dozen or more men, playing
some sort of card game. They regard you with hostility, and force you
back into the corridor.")
(ACTION PASS-F)>
<ROOM PASS-4
(LOC ROOMS)
(DESC "Outside 4th Compartment")
(IN-DIR P?WEST)
(WEST PER COMP-MOVE)
(NORTH PER PASS-MOVE-3)
(SOUTH PER PASS-MOVE-5)
(GLOBAL COMP-N-DOOR PASS-WINDOW BY-GUARDS BY-GUN)
(FLAGS HUTBIT)
(NS 4)
(EJECT
"Three women are here, busily engaging in what probably amounts to gossip.
They stop abruptly as you enter, and stare at you stonily. After a moment,
you mumble some apologetic word and return to the corridor.")
(ACTION PASS-F)>
<ROUTINE COMP-5-ENTER ()
<COND (<AND <NOT <SLOW-CLOCK-QUEUED? ,I-BAD-WAITS>>
<NOT <SLOW-CLOCK-QUEUED? ,I-BAD-LAV-WAITS>>>
<TELL
"You enter your compartment, closing the door behind you">
<TELL ,PERIOD-CR>)>
<SETG DONT-DESCRIBE-ROOM T>
,COMP-5>
<ROOM PASS-5
(LOC ROOMS)
(DESC "Outside Your Compartment")
(IN-DIR P?WEST)
(WEST PER COMP-5-ENTER)
(NORTH PER PASS-MOVE-4)
(SOUTH PER PASS-MOVE-6)
(GLOBAL COMP-5-DOOR PASS-WINDOW BY-GUARDS BY-GUN)
(FLAGS HUTBIT)
(NS 5)
(ACTION PASS-F)>
<ROOM PASS-6
(LOC ROOMS)
(DESC "Outside Lavatory")
(IN PER LAVATORY-MOVE)
(WEST PER LAVATORY-MOVE)
(SOUTH SORRY "A stern-faced guard refuses to let you pass.")
(NORTH PER PASS-MOVE-5)
(GLOBAL LAVATORY-DOOR PASS-WINDOW BY-GUARDS BY-GUN)
(FLAGS HUTBIT)
(NS 6)
(ACTION PASS-F)>
<ROUTINE COMP-MOVE ()
<COND (<FSET? ,COMP-N-DOOR ,OPENBIT>
,COMP-N)
(<IN? ,BAD-SPY ,HERE>
<TELL
"It would be not only rude, but suspicious, for you to enter now." CR>
<RFALSE>)
(T
<TELL
"The door to that compartment is closed." CR>
<RFALSE>)>>
<ROUTINE LAVATORY-MOVE ()
<COND (<FSET? ,LAVATORY-DOOR ,OPENBIT>
<TELL "You">)
(T
<FSET ,LAVATORY-DOOR ,OPENBIT>
<TELL "You open the door, then">)>
<TELL " enter the lavatory. ">
<LAVATORY-F ,M-LOOK>
<SETG DONT-DESCRIBE-ROOM T>
,LAVATORY>
<ROUTINE PASS-MOVE-1 ()
<PASS-MOVE ,PASS-1>>
<ROUTINE PASS-MOVE-2 ()
<PASS-MOVE ,PASS-2>>
<ROUTINE PASS-MOVE-3 ()
<PASS-MOVE ,PASS-3>>
<ROUTINE PASS-MOVE-4 ()
<PASS-MOVE ,PASS-4>>
<ROUTINE PASS-MOVE-5 ()
<PASS-MOVE ,PASS-5>>
<ROUTINE PASS-MOVE-6 ()
<PASS-MOVE ,PASS-6>>
<ROUTINE PASS-MOVE (WHR "OPTIONAL" (NFP <>) "AUX" BSL)
<SET BSL <LOC ,BAD-SPY>>
<COND (<NOT .NFP>
<TELL "You move along the passageway until you come to ">
<COND (<EQUAL? .WHR ,PASS-5>
<TELL "your own compartment">)
(T
<TELL "the " <GET ,PASS-TELLS <GETP .WHR ,P?NS>>>)>
<TELL ".">)>
<COND (,AT-STATION
<TELL
" Just north of your position, a guard is standing. He is motioning
you out of the train to the south.">)>
<COND (<NOT ,GUARD-NOTICE-FLAG>
<TELL
" You scan the passageway, noting guards at either end, machine guns
poised at their sides. You don't remember them from the beginning of
the trip, so you can only suppose that security has been tightened in the
search for the American agent.">
<SETG GUARD-NOTICE-FLAG T>)>
<COND (<AND .BSL <FSET? .BSL ,HUTBIT>>
<TELL CR CR>
<COND (,BAD-SPY-SEEN
<TELL "The man in the coat">)
(T
<TELL "Another man, wearing a trench coat,">)>
<TELL " is ">
<COND (<EQUAL? ,BAD-SPY-SEEN .BSL>
<TELL "still ">)>
<SETG BAD-SPY-SEEN .BSL>
<COND (<EQUAL? .BSL .WHR>
<TELL "standing here">)
(<EQUAL? .BSL ,PASS-5>
<TELL
"standing outside of your compartment, motioning for you to return">)
(T
<TELL "standing outside ">
<TELL "the "
<GET ,PASS-TELLS <GETP .BSL ,P?NS>>>
<TELL ", and talking to its
occupants in rapid-fire Frobnian">)>
<HST-CHECK .BSL .WHR>
<TELL ".">)>
<DOC-CHECK>
<CRLF>
<SETG DONT-DESCRIBE-ROOM T>
.WHR>
<ROUTINE DOC-CHECK ()
<COND (<AND <IN? ,BAD-SPY ,HERE> <IN? ,DOCUMENT ,WINNER>>
<TELL CR CR>
<REMOVE ,DOCUMENT>
<FSET ,DOCUMENT ,PENBIT>
<TELL
"He looks again, this time directly at the document. \"Ah, thank you very
much for returning this document,\" he says. He takes it from you and
regards you with contempt. \"We may need to talk more about this later.\"
And with this, he returns to his conversation with the other passengers.">
<SETG SUSPICION <+ ,SUSPICION 1>>)>>
<ROUTINE HST-CHECK (BSL WHR "OPTIONAL" (STR <>))
<COND (<NOT .STR>
<SET STR
". He gives you a sidelong glance, and then a subtle double take, and
you fear you have given yourself away">)>
<COND (<AND <HST?>
<NOT ,HST-FLAG>
<L? <ABS <- <GETP .BSL ,P?NS>
<GETP .WHR ,P?NS>>> 3>>
<TELL .STR>
<SETG HST-FLAG T>
<SETG SUSPICION <+ ,SUSPICION 1>>)>>
<GLOBAL BAD-SPY-SEEN <>>
<ROUTINE LAVATORY-EXIT ()
<COMP-EXIT ,LAVATORY-DOOR ,PASS-6>>
<ROUTINE COMP-EXIT ("OPTIONAL" (DOOR ,COMP-5-DOOR) (PASS ,PASS-5))
<COND (<NOT <FSET? .DOOR ,OPENBIT>>
<COND (<EQUAL? .DOOR ,COMP-5-DOOR>
<FSET .DOOR ,OPENBIT>)>
<TELL "You open the door and">)
(T
<TELL "You">)>
<TELL
" walk out into the passageway.">
<PASS-MOVE .PASS T>>
<GLOBAL HST-FLAG <>>
<ROOM COMP-N
(LOC ROOMS)
(DESC "Compartment")
(ACTION COMP-N-F)>
<ROUTINE COMP-N-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<TELL <GETP ,CURRENT-PASS ,P?EJECT> CR>
<FCLEAR ,COMP-N-DOOR ,OPENBIT>
<GOTO ,CURRENT-PASS <>>
<RTRUE>)>>
<OBJECT COMP-N-DOOR
(LOC LOCAL-GLOBALS)
(DESC "compartment door")
(SYNONYM DOOR)
(ADJECTIVE COMPARTMENT)
(FLAGS DOORBIT)
(ACTION COMP-N-DOOR-F)>
<ROUTINE COMP-N-DOOR-F ()
<COND (<AND <VERB? OPEN CLOSE> <IN? ,BAD-SPY ,HERE>>
<TELL
"That would be terribly rude." CR>)
(<VERB? LOOK-INSIDE EXAMINE>
<COND (<IN? ,BAD-SPY ,HERE>
<TELL
"The man in the coat is talking to the passengers inside; you
can't tell much about them from here, and it would be rude to
force yourself into the doorway." CR>)
(<FSET? ,PRSO ,OPENBIT>
<TELL
"You might as well just go in and find out..." CR>)>)>>
<ROOM LAVATORY
(LOC ROOMS)
(DESC "Lavatory")
(OUT PER LAVATORY-EXIT)
(EAST PER LAVATORY-EXIT)
(GLOBAL LAVATORY-DOOR)
(ACTION LAVATORY-F)>
<ROUTINE LAVATORY-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"Like most facilities here, it is rather primitive.
There is a flush toilet, naturally, and a sink with a mirror above it.
Conveniently located alongside the sink is a paper towel dispenser -
inconveniently, there is no place to put the paper towels once used. A small,
grimy window looks out over the darkened landscape." CR>)>>
<OBJECT LAVATORY-DOOR
(LOC LOCAL-GLOBALS)
(DESC "lavatory door")
(SYNONYM DOOR)
(ADJECTIVE LAVATORY)
(FLAGS DOORBIT)>
<OBJECT LAV-TOILET
(LOC LAVATORY)
(DESC "toilet")
(SYNONYM TOILET BOWL HANDLE)
(ADJECTIVE TOILET)
(FLAGS NDESCBIT OPENBIT SEARCHBIT CONTBIT)
(CAPACITY 20)
(ACTION LAV-TOILET-F)>
<ROUTINE LAV-TOILET-F ()
<COND (<VERB? USE>
<PERFORM ,PRSA ,GLOBAL-LAVATORY>
<RTRUE>)
(<VERB? CLIMB-ON BOARD>
<TELL
"You aren't in need of the facilities at the moment." CR>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,LAV-TOILET>
<G? <GETP ,PRSO ,P?SIZE> 5>>
<TELL
"That's not the sort of thing one puts in the toilet." CR>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,LAV-TOILET>
<EQUAL? ,PRSO ,PAPER-TOWEL>>
<TELL
"The paper towel drops into the toilet." CR>
<REMOVE ,PAPER-TOWEL>
<THIS-IS-IT ,WET-PAPER-TOWEL>
<MOVE ,WET-PAPER-TOWEL ,LAV-TOILET>)
(<VERB? OPEN CLOSE>
<TELL
"You can't open and close the toilet; there's no lid, and how very
typical." CR>)
(<AND <VERB? SEARCH LOOK-INSIDE>
<IN? ,SHRED ,LAV-TOILET>
<NOT <NEXT? ,SHRED>>
<NOT <FSET? ,SHRED ,TOUCHBIT>>>
<TELL
"You see a small shred of the document floating in the toilet." CR>)
(<VERB? FLUSH MOVE>
<TELL
"With an all too loud whooshing sound, the toilet flushes.">
<COND (<OR <IN? ,DOCUMENT ,LAV-TOILET>
<IN? ,SHREDS ,LAV-TOILET>>
<RANDOM-QUEUE ,I-SHRED 25>)>
<DOWN-THE-DRAIN ,LAV-TOILET 6>
<CRLF>)>>
<ROUTINE I-SHRED ()
<MOVE ,SHRED ,LAV-TOILET>
<DE-RANDOM-QUEUE>
<RFALSE>>
<GLOBAL DRAIN-TBL <LTABLE 0 0 0 0 0 0 0 0 0 0>>
<ROUTINE DOWN-THE-DRAIN (OBJ "OPTIONAL" (SIZE 2) "AUX" (OFF 0) F N)
<SET F <FIRST? .OBJ>>
<REPEAT ()
<COND (<NOT .F> <RETURN>)
(T
<SET N <NEXT? .F>>
<COND (<AND <L? <GETP .F ,P?SIZE> .SIZE>
<NOT <EQUAL? .F ,TICKET ,PASSPORT>>>
<REMOVE .F>
<SET OFF <+ .OFF 1>>
<PUT ,DRAIN-TBL .OFF .F>)>)>
<SET F .N>>
<COND (<NOT <ZERO? .OFF>>
<TELL " Down the drain, along with the water, goes the ">
<REPEAT ()
<TELL D <GET ,DRAIN-TBL .OFF>>
<COND (<L? <SET OFF <- .OFF 1>> 1>
<RETURN>)
(<EQUAL? .OFF 1>
<TELL ", and ">)
(T
<TELL ", ">)>>
<TELL ".">)>>
<OBJECT GLOBAL-LAVATORY
(LOC GLOBAL-OBJECTS)
(DESC "lavatory")
(SYNONYM LAVATORY WC BATHROOM)
(SCENARIO 1)
(ACTION GLOBAL-LAVATORY-F)>
<ROUTINE GLOBAL-LAVATORY-F ()
<COND (<VERB? ENTER WALK-TO FIND>
<COND (<EQUAL? ,HERE ,PASS-6>
<DO-WALK ,P?IN>
<RTRUE>)
(<EQUAL? ,HERE ,LAVATORY>
<TELL "There is no other..." CR>)
(T
<TELL
"The lavatory, as you recall, is at the south end of the passageway." CR>)>)
(<VERB? USE>
<COND (<EQUAL? ,HERE ,LAVATORY>
<TELL
"You have no need of it now, and a good thing too. Just looking at the
fixtures is likely to cause disease." CR>)
(T
<TELL ,GET-THERE-FIRST CR>)>)
(<VERB? EXAMINE>
<COND (<EQUAL? ,HERE ,LAVATORY>
<PERFORM ,V?LOOK>
<RTRUE>)
(T
<TELL "You should go there first." CR>)>)
(<VERB? LEAVE>
<COND (<EQUAL? ,HERE ,LAVATORY>
<DO-WALK ,P?OUT>
<RTRUE>)
(T
<TELL "You're not there!" CR>)>)>>
<OBJECT BRIEFCASE
(LOC COMP-5)
(DESC "briefcase")
(SYNONYM CASE BRIEFCASE)
(FLAGS TAKEBIT CONTBIT SEARCHBIT TRYTAKEBIT)
(SCENARIO 1)
(CAPACITY 65)
(SIZE 16)
(ACTION BRIEFCASE-F)>
<ROUTINE BRIEFCASE-F ()
<COND (<AND <VERB? TAKE>
<EQUAL? ,PRSO ,BRIEFCASE>
<FSET? ,PRSO ,OPENBIT>>
<TELL "You'd best close the briefcase first." CR>
<RTRUE>)>>
<OBJECT CAMERA-BAG
(LOC COMP-5)
(DESC "camera bag")
(SYNONYM BAG)
(ADJECTIVE CAMERA)
(FLAGS TAKEBIT CONTBIT OPENBIT SEARCHBIT)
(SCENARIO 1)
(CAPACITY 40)
(SIZE 41)>
<OBJECT CAMERA
(LOC CAMERA-BAG)
(DESC "camera")
(SYNONYM CAMERA)
(FLAGS TAKEBIT CONTBIT SEARCHBIT)
(SCENARIO 1)
(SIZE 25)
(ACTION CAMERA-F)>
<ROUTINE CAMERA-F ("AUX" FILM SHOT)
<SET FILM <FIRST? ,CAMERA>>
<COND (<VERB? EXAMINE>
<TELL
"It's a Pentax 35-mm SLR camera; you could have done better, but the
dollar's not been so good, and getting Japanese goods here is difficult
at best. Right now, it's ">
<COND (<ZERO? .FILM>
<TELL "not loaded with any film">)
(<NOT <FSET? .FILM ,FILMBIT>>
<TELL "got a " D .FILM " inside">)
(<ZERO? <SET SHOT <GETP .FILM ,P?SHOT>>>
<TELL "got a " D .FILM
" inside that's ready to be loaded">)
(<L? .SHOT 0>
<TELL "got a rewound " D .FILM " inside">)
(T
<TELL "loaded with a " D .FILM>)>
<TELL ". ">
<COND (<FSET? ,CAMERA ,OPENBIT>
<TELL
"The back of the camera is open.">)
(<AND .FILM
<FSET? .FILM ,FILMBIT>
<EQUAL? <GETP .FILM ,P?SHOT> -1>>
<TELL
"The gizmo on top says that the film inside is rewound.">)
(<AND .FILM <FSET? .FILM ,FILMBIT>>
<TELL
"According to the gizmo on top, you're currently at picture number ">
<TELL N <GETP .FILM ,P?SHOT>>
<TELL " of a roll of 24.">)>
<CRLF>)
(<AND <VERB? PUT> <EQUAL? ,PRSI ,CAMERA>>
<COND (<NOT <FSET? ,CAMERA ,OPENBIT>>
<TELL "The camera's not open." CR>)
(.FILM
<TELL "There's already something there." CR>)
(<G? <GETP ,PRSO ,P?SIZE> 5>
<TELL "That won't fit in the camera." CR>)
(T
<TELL "The " D ,PRSO
" is now resting in the camera." CR>
<MOVE ,PRSO ,PRSI>)>)
(<VERB? OPEN>
<COND (<FSET? ,CAMERA ,OPENBIT>
<TOO-LATE>)
(T
<FSET ,CAMERA ,OPENBIT>
<TELL
"The camera is now opened.">
<COND (<AND .FILM
<FSET? .FILM ,FILMBIT>
<NOT <EQUAL? <GETP .FILM ,P?SHOT>
-1
0>>>
<COND (<EQUAL? .FILM ,COLOR-ROLL>
<SETG FILM-RUINED T>)>
<PUTP .FILM ,P?SHOT -1>
<TELL
" Sadly, the film was not rewound, so some of your photos have probably
been destroyed. It's too late now, but you rewind the roll anyway.">)>
<CRLF>)>)
(<VERB? CLOSE>
<COND (<FSET? ,CAMERA ,OPENBIT>
<FCLEAR ,CAMERA ,OPENBIT>
<TELL
"The camera is now closed." CR>)
(T
<TOO-LATE>)>)
(<VERB? LOAD>
<COND (<NOT .FILM>
<COND (<AND ,PRSI <FSET? ,PRSI ,FILMBIT>>
<PERFORM ,V?PUT
,PRSI
,PRSO>
<COND (<OR <NOT <SET FILM <FIRST? ,CAMERA>>>
<NOT <EQUAL? .FILM ,PRSI>>>
<RTRUE>)>)
(T
<TELL
"In order to properly load the film into the camera's winding mechanism, you
must first put the film in the camera." CR>
<RTRUE>)>)>
<COND (<NOT <FSET? .FILM ,FILMBIT>>
<TELL
"Not likely, with the " D .FILM " sitting in there." CR>)
(<AND ,PRSI <NOT <EQUAL? .FILM ,PRSI>>>
<TELL
"There's another roll already in there." CR>)
(<L? <SET SHOT <GETP .FILM ,P?SHOT>> 0>
<TELL
"The film has been rewound back into the spool; there's no way to load
it onto the winding mechanism now." CR>)
(<G? .FILM 0>
<TELL
"It's already loaded properly." CR>)
(T
;<PUTP .FILM ,P?SHOT 1>
;<TELL
"The camera is loaded and ready for action." CR>)>)
(<VERB? REWIND>
<COND (<OR <NOT .FILM> <NOT <FSET? .FILM ,FILMBIT>>>
<TELL
"There's no film in the camera." CR>)
(<NOT <G? <SET FILM <GETP .FILM ,P?SHOT>> 1>>
<TELL
"The film in the camera isn't loaded." CR>)
;(<FSET? ,CAMERA ,OPENBIT>
<TELL
"The camera is usually closed when film is to be rewound; otherwise,
all of the film will be exposed and ruined." CR>)
(T
<PUTP <FIRST? ,CAMERA> ,P?SHOT -1>
<TELL
"The film in the camera is now rewound." CR>)>)>>
<OBJECT COLOR-ROLL
(LOC CAMERA)
(DESC "roll of color film")
(SYNONYM ROLL FILM)
(ADJECTIVE COLOR)
(FLAGS TAKEBIT FILMBIT)
(SCENARIO 1)
(SIZE 4)
(GENERIC GENERIC-FILM)
(SHOT 23)
(PHOTO <TABLE -1 -1>)
(ACTION COLOR-ROLL-F)>
<ROUTINE COLOR-ROLL-F ()
<COND (<AND <VERB? LOAD> <NOT ,PRSI>>
<PERFORM ,V?LOAD ,CAMERA ,PRSO>
<RTRUE>)
(<VERB? BEND>
<PERFORM ,PRSA ,EXPOSED-ROLL>
<RTRUE>)
(<VERB? OPEN CLOSE>
<TELL "Not a chance." CR>)
(<VERB? REWIND>
<REWIND-FILM>)>>
<OBJECT EXPOSED-ROLL
(LOC CAMERA-BAG)
(DESC "old roll of film")
(SYNONYM ROLL FILM)
(ADJECTIVE EXPOSED OLD)
(FLAGS TAKEBIT FILMBIT CONTBIT OPENBIT VOWELBIT AN)
(SCENARIO 1)
(SIZE 4)
(GENERIC GENERIC-FILM)
(SHOT -1)
(ACTION EXPOSED-ROLL-F)>
<GLOBAL FILM-RUINED <>>
<OBJECT PHONY-FILM
(DESC "film")
(LOC GLOBAL-OBJECTS)
(FLAGS FILMBIT)
(SCENARIO 1)
(ACTION PHONY-FILM-F)>
<ROUTINE PHONY-FILM-F ("AUX" F)
<COND (<AND <VERB? TAKE>
<EQUAL? ,PRSO ,PHONY-FILM>
<EQUAL? ,PRSI ,COLOR-ROLL ,EXPOSED-ROLL>>
<TELL
"You can't remove the film from the roll it's on." CR>)
(<AND <VERB? TAKE>
<EQUAL? ,PRSI ,CAMERA>>
<COND (<NOT <FSET? ,CAMERA ,OPENBIT>>
<TELL
"The camera's closed." CR>)
(<OR <NOT <SET F <FIRST? ,CAMERA>>>
<NOT <FSET? .F ,FILMBIT>>>
<TELL
"There's no film in the camera." CR>)
(T
<PERFORM ,V?TAKE .F>
<RTRUE>)>)
(T
<TELL
"There's no film there." CR>)>>
<ROUTINE GENERIC-FILM ("AUX" F)
<COND (<VERB? REWIND>
,CAMERA)
(<AND <VERB? TAKE> <EQUAL? ,P-NCN 2>>
,PHONY-FILM)>>
<ROUTINE EXPOSED-ROLL-F ()
<COND (<VERB? OPEN CLOSE>
<TELL "Don't be ridiculous." CR>)
(<AND <VERB? LOAD> <NOT ,PRSI>>
<PERFORM ,V?LOAD ,CAMERA ,PRSO>
<RTRUE>)
(<VERB? BEND>
<TELL
"You can't pull the film out of the roll." CR>)
(<VERB? EXAMINE>
<TELL
"The exposed roll has been rewound into the spool. If your memory serves, it
contains pictures of your last family outing at Lake Gurthark. Why you
didn't have it developed months ago is a mystery to you." CR>)
(<VERB? REWIND>
<REWIND-FILM>)>>
<ROUTINE REWIND-FILM ()
<COND (<NOT <IN? ,CAMERA ,WINNER>>
<TELL
"It's a lot easier if you're holding the camera." CR>)
(<NOT <FIRST? ,CAMERA>>
<TELL
"There's no film in the camera." CR>)
(T
<PERFORM ,V?REWIND ,CAMERA>
<RTRUE>)>>
<OBJECT GLOBAL-FILM
(LOC GLOBAL-OBJECTS)
(DESC "film")
(SYNONYM FILM)
(ADJECTIVE COLOR EXPOSED OLD)
(ACTION GLOBAL-FILM-F)>
<ROUTINE GLOBAL-FILM-F ()
<COND (<AND <EQUAL? ,SCENARIO 1>
<VERB? REWIND>>
<REWIND-FILM>
<RTRUE>)
(T
<TELL
"You can't see any such film here." CR>)>>
<OBJECT TOILET-KIT
(LOC BRIEFCASE)
(DESC "toilet kit")
(SYNONYM KIT)
(ADJECTIVE TOILET)
(FLAGS TAKEBIT CONTBIT SEARCHBIT)
(SCENARIO 1)
(SIZE 15)
(CAPACITY 14)>
<OBJECT TOOTHBRUSH
(LOC TOILET-KIT)
(DESC "toothbrush")
(SYNONYM BRUSH TOOTHBRUSH)
(FLAGS TAKEBIT)
(SCENARIO 1)
(SIZE 3)
(ACTION TOOTHBRUSH-F)>
<ROUTINE TOOTHBRUSH-F ()
<COND (<VERB? EXAMINE USE>
<TELL
"You brought the toothbrush along, but you forgot the toothpaste, making
the device utterly worthless." CR>)>>
<OBJECT TEETH
(LOC GLOBAL-OBJECTS)
(DESC "your teeth")
(SYNONYM TEETH)
(ADJECTIVE MY)
(ACTION TEETH-F)>
<ROUTINE TEETH-F ()
<COND (<VERB? CLEAN>
<TELL
"A nice idea, but not very helpful." CR>)>>
<OBJECT BYSTANDER-WATCH
(DESC "wristwatch")
(SYNONYM CLOCK WATCH WRISTWATCH)
(ADJECTIVE WRIST)
(FLAGS WEARBIT WORNBIT READBIT)
(ACTION BYSTANDER-WATCH-F)>
<ROUTINE BYSTANDER-WATCH-F ()
<COND (<VERB? DROP TAKE-OFF>
<TELL
"If you're to make your connections, you shouldn't be without it." CR>)
(<VERB? EXAMINE>
<TELL
"It's a Timex, and not a particularly nice one at that." CR>)
(<VERB? READ>
<TELL
"You can read the time on your status line." CR>)>>
<OBJECT TWEEZERS
(LOC TOILET-KIT)
(DESC "pair of tweezers")
(SYNONYM PAIR TWEEZERS)
(FLAGS TAKEBIT)
(SCENARIO 1)
(SIZE 4)
(ACTION TWEEZERS-F)>
<ROUTINE TWEEZERS-F ()
<COND (<VERB? EXAMINE>
<TELL
"They're your ordinary pair of tweezers. You don't know why you keep
it in your toilet kit, since you never use it." CR>)>>
<OBJECT PICTURE
(LOC GLOBAL-OBJECTS)
(DESC "picture")
(SYNONYM PICTURE PHOTOGRAPH PHOTO)
(ACTION PICTURE-F)>
<ROUTINE PICTURE-F ()
<COND (<VERB? TAKE>
<TELL "You'll have to say what you want to photograph." CR>)>>
<ROUTINE TAKE-A-PICTURE ("AUX" FILM SHOT)
<COND (<FSET? ,CAMERA ,OPENBIT>
<TELL
"But the back of the camera is open!" CR>)
(<NOT <SET FILM <FIRST? ,CAMERA>>>
<TELL
"There's no film in the camera, or hadn't you noticed?" CR>)
(<NOT <FSET? .FILM ,FILMBIT>>
<TELL
"There's something in the camera, but it sure isn't film." CR>)
(<EQUAL? <SET SHOT <GETP .FILM ,P?SHOT>> -1>
<TELL
"The camera's shutter makes a clicking noise, but nothing else happens;
the film is rewound." CR>)
(<EQUAL? .SHOT 0>
<TELL
"The film's in the camera, all right, but it's not loaded." CR>)
(<EQUAL? .SHOT 25>
<TELL
"Nothing happens; it appears you've taken your last shot on this roll." CR>)
;(<NOT <EQUAL? .SHOT 23 24>>
<TELL
"You take the picture of the " D ,PRSO ", but you doubt it will come out
well since you've already used this film before." CR>)
(T
<PUTP .FILM ,P?SHOT <SET SHOT <+ .SHOT 1>>>
<PUT <GETP .FILM ,P?PHOTO>
<- .SHOT 24>
,PRSO>
<TELL
"You take the picture of " THE ,PRSO ". The film is automatically
advanced to frame number " N .SHOT ,PERIOD-CR>)>>
<OBJECT BYSTANDER-CLOTHES
(DESC "your clothes")
(SYNONYM CLOTHES SOCKS SHIRT PANTS CLOTHING CLOTH SUIT)
(FLAGS NARTICLEBIT WORNBIT SEARCHBIT SURFACEBIT OPENBIT CONTBIT
NOTHEBIT NOABIT)
(ACTION BYSTANDER-CLOTHES-F)>
<ROUTINE BYSTANDER-CLOTHES-F ()
<COND (<VERB? TAKE-OFF REMOVE>
<TELL
"This would be highly inappropriate." CR>)
(<VERB? EXAMINE>
<COND (<EQUAL? ,SCENARIO 1>
<TELL
"You are looking rather dapper in your business suit.">)
(T
<TELL
"You're doing your best to look nondescript in your trench coat." CR>)>
<COND (<AND <IN? ,CARNATION ,PRSO>
<EQUAL? ,SCENARIO 1>>
<TELL "
A white carnation adorns your jacket's lapel.">)>
<CRLF>)
(<VERB? LOOK-INSIDE>
<TELL
"There's nothing in your clothes that can help you." CR>)
(<VERB? RIP>
<TELL
"Why on earth should you damage your rather expensive outfit?" CR>)>>
<OBJECT CARNATION
(LOC BYSTANDER-CLOTHES)
(SYNONYM CARNATION FLOWER)
(ADJECTIVE WHITE RUMPLED)
(DESC "rumpled white carnation")
(FLAGS WEARBIT WORNBIT TAKEBIT)
(ACTION CARNATION-F)>
<ROUTINE CARNATION-F ()
<COND (<VERB? EXAMINE>
<TELL
"It's a sad looking carnation, though it is arguably in better shape than
its previous owner." CR>)
(<AND <VERB? TAKE-OFF> <IN? ,PRSO ,BYSTANDER-CLOTHES>>
<MOVE ,PRSO ,WINNER>
<FCLEAR ,PRSO ,WORNBIT>
<TELL
"You take off the carnation. It is a sorry sight." CR>)
(<AND <VERB? WEAR> <NOT <FSET? ,PRSO ,WORNBIT>>>
<MOVE ,PRSO ,BYSTANDER-CLOTHES>
<FSET ,PRSO ,WORNBIT>
<TELL
"You put the rumpled carnation through the hole in your lapel. Except
for the contact, you can only pray that nobody notices." CR>)>>
<OBJECT BAD-SPY
(DESC "man in a trench coat")
(SYNONYM SPY MAN VIPER)
(ADJECTIVE BAD TRENCHCOATED)
(FLAGS NDESCBIT PERSON)
(ACTION BAD-SPY-F)>
<ROUTINE BAD-SPY-F ()
<COND (<VERB? EXAMINE>
<TELL
"He is a rather large man, though unassuming in appearance. He wears an
off-white trench coat and a hat and talks with a beautiful, resonant voice.
In all, he doesn't appear very formidable, but your intuition tells you
that he is a very high-level official - in what agency, you could never
know." CR>)
(<VERB? BRIBE>
<TELL
"It's too risky; you'd probably end up in jail." CR>)
(<AND <VERB? GIVE SHOW>
<EQUAL? ,PRSO ,SHRED ,SHREDS ,DOCUMENT>>
<TELL
"Even in a text-only game, that would be stupid beyond words." CR>)
(<AND <VERB? GIVE> <EQUAL? ,PRSI ,BAD-SPY>>
<TELL "He waves you away with his hand." CR>)
(<VERB? PHOTOGRAPH>
<TELL
"Seeing what you are about to do, he turns to you, and speaks harshly.
\"This is not permitted.\" You decide against taking the picture." CR>
<SETG SUSPICION <+ ,SUSPICION 1>>)
(<VERB? LISTEN>
<TELL
"You know little Frobnian, and he is speaking very quickly." CR>)>>
<GLOBAL BAD-SPY-MOVES <PLTABLE PASS-1 PASS-2 PASS-3 PASS-4 PASS-5 PASS-6>>
<GLOBAL BAD-SPY-COUNT 0>
<ROUTINE I-BAD-SPY ("AUX" SM)
<SETG BAD-SPY-COUNT <+ ,BAD-SPY-COUNT 1>>
<COND (<AND <0? <MOD ,BAD-SPY-COUNT 6>>
<L? <SET SM </ ,BAD-SPY-COUNT 6>> 7>>
<MOVE ,BAD-SPY <SET SM <GET ,BAD-SPY-MOVES .SM>>>
<COND (<FSET? ,HERE ,HUTBIT>
<HLIGHT ,H-BOLD>
<CRLF>
<COND (<EQUAL? .SM ,PASS-1>
<SETG BAD-SPY-SEEN T>
<TELL
"You watch as a man in a trench coat enters your car to the north. He ">
<COND (<NOT <FSET? ,COMP-N-DOOR ,OPENBIT>>
<TELL
"opens the door to the first compartment, and ">)>
<TELL "begins to speak to the
occupants, though you can't make out a word.">)
(<EQUAL? .SM ,PASS-5 ,PASS-6>
<COND (<EQUAL? .SM ,PASS-5>
<TELL
"The man arrives at your compartment and sees that nobody is inside.
After a moment, he looks in your direction">)
(T
<TELL
"The man walks up to you,">)>
<TELL " and speaks to you in a
beautifully deep voice with a heavily Russian accent. \"Please
return now to your compartment.\"">
<SETG BAD-DISTANCE
<ABS <- <GETP <LOC ,BAD-SPY> ,P?NS>
<GETP ,HERE ,P?NS>>>>
<SLOW-CLOCK-QUEUE ,I-BAD-WAITS 20>)
(<EQUAL? ,HERE .SM>
<TELL
"The man politely thanks the people in the next compartment, closes
their door, and moves to where you are standing. He looks you over
briefly, then proceeds to speak to the occupants in what you
realize to be Frobnian; sadly, you don't understand enough to make
sense of his speech.">)
(T
<TELL
"The man in the trench coat tips his hat at the occupants of the
compartment, shuts the door, and moves to the next compartment, where
he opens the door and starts to converse. He's now ">
<TELL <GET ,SMALL-NUMS-TBL
<ABS <- <GETP .SM ,P?NS>
<GETP ,HERE ,P?NS>>>>>
<TELL " away from you.">)>
<HST-CHECK .SM ,HERE
"|
|
The man, seeming to notice you for the first time, turns casually in
your direction. A second later, he seems to do a double take and you fear
you have given yourself away.">
<DOC-CHECK>
<HLIGHT ,H-NORMAL>
<CRLF>)
(<AND <EQUAL? .SM ,PASS-6> <EQUAL? ,HERE ,LAVATORY>>
<SLOW-CLOCK-QUEUE ,I-BAD-LAV-WAITS 20>
<BOLDTELL
"There are two sharp raps on the lavatory door, and a man with a thick
accent speaks. \"Please forgive the intrusion, but I must have a word with
you, outside, in your compartment.\"">)
(<AND <EQUAL? .SM ,PASS-5 ,PASS-6>
<EQUAL? ,HERE ,COMP-5>>
<DE-SLOW-CLOCK-QUEUE>
<BOLDTELL
"There are two sharp raps on your door, and a man wearing a trench coat
enters.">
<BAD-INTERVIEW>
<COND (<NOT ,PRSA> <SETG READ-INTERRUPTED T>)>
<RTRUE>)>)>>
<GLOBAL READ-INTERRUPTED <>>
<GLOBAL BAD-INTERVIEW-FLAG <>>
<ROUTINE BAD-INTERVIEW ("OPTIONAL" (FORCE? <>))
<DE-SLOW-CLOCK-QUEUE>
<SETG BAD-INTERVIEW-FLAG T>
<TELL CR
"He speaks beautiful, correct English, though his accent is rather
thick. \"I am so sorry to ">
<COND (.FORCE? <TELL "well, shall I say 'insist'">)
(T <TELL "intrude">)>
<TELL ", but I was hoping you could be of some
assistance.\" His eyes dart around the room as he speaks, taking in
everything. Then, his gaze settles on you - his searching eyes take
you in from top to bottom">
<COND (<FSET? ,CARNATION ,WORNBIT>
<FSET ,CARNATION ,HUTBIT>
<SETG SUSPICION <+ ,SUSPICION 1>>
<TELL
", and you imagine that he is frowning slightly, as if slightly confused.">)
(T
<TELL ".">)>
<COND (<IN? ,CAMERA ,WINNER>
<TELL " He looks at the camera, and raises an eyebrow. \"You
are taking pictures? I hope you are using fast film.\"">
<SETG SUSPICION <+ ,SUSPICION 1>>)>
<COND (<IN? ,STAINED-PAPER-TOWEL ,WINNER>
<SETG SUSPICION <+ ,SUSPICION 1>>
<TELL " He then stares for a moment at the blood-stained
towel in your hand, then smiles and looks you in the eye.">)>
<CRLF>
<COND (<OR <BAD-SEARCH ,WINNER>
<BAD-SEARCH ,HERE>
<BAD-SEARCH ,COMP-SEAT-FRONT>
<BAD-SEARCH ,COMP-SEAT-BACK>>
<RTRUE>)>
<TELL CR
"He casually takes a cigarette and a book of matches from his pocket
and attempts to light a match, giving up after the fourth try. He
smiles good-naturedly, and says, \"I should be giving these up
anyway.\" He returns them to his pocket and continues.">
<TELL CR CR
"\"I will come to the point. We are looking for ">
<COND (<FSET? ,DOCUMENT ,PENBIT>
<TELL
"the man who gave you the document. Perhaps you have seen where he
has gone?\" He eyes you suspiciously, but you are relieved to be able
to answer him honestly - you have no idea where he's gone.">)
(T
<TELL
"a man - tall, slight, a bit
disheveled - hurt, perhaps. We believe he may have come this way, and
we have need to find him, for his own safety.\" He smiles wanly. \"Have
you seen such a man?\"">)>
<TELL CR CR>
<COND (<FSET? ,DOCUMENT ,PENBIT> T)
(<YES? ,BAD-SPY>
<CRLF>
<COND (<OR <IN? ,COMP-BLOOD-STAIN ,HERE>
<IN? ,STAINED-PAPER-TOWEL ,WINNER>>
<TELL ,BAD-YES-START CR CR>
<SETG SUSPICION <+ ,SUSPICION 1>>)
(T
<TELL ,BAD-YES-START>
<TELL " The man pauses for a moment, then looks
around furtively, but unmistakably, as if he had misplaced something." CR CR>
<SETG SUSPICION <+ ,SUSPICION 2>>)>)
(<OR <IN? ,COMP-BLOOD-STAIN ,HERE>
<IN? ,STAINED-PAPER-TOWEL ,WINNER>>
<CRLF>
<TELL
"You answer negatively with a shake of your head and a curt \"Nobody like
that has been here. Sorry.\"" CR CR>
<TELL "He ">
<COND (<IN? ,COMP-BLOOD-STAIN ,HERE>
<TELL
"lowers his eyes to the floor, as if in thought">)
(T
<TELL "looks at your hands">)>
<TELL ", then looks you straight
in the eye. \"You are certain, then?\" he asks, with a hint of humor - or is
it disbelief? You again reassure him that you would certainly have noticed
someone of that description." CR CR>
<SETG SUSPICION <+ ,SUSPICION 3>>)
(T
<CRLF>
<TELL
"He looks around again briefly, and nods his head a few times as if
agreeing with you." CR CR>)>
<COND (<G? ,SUSPICION 2>
<TELL
"\"Well, thank you anyway. We shall be arriving at the checkpoint in a
few minutes, and then we must conduct our border search - you understand.
Until then, I would appreciate it if you would remain here.\" He leaves with a
tip of his hat. As he leaves, he speaks briefly with one of the guards
stationed in the passageway." CR>
<SETG BAD-CONFINED T>)
(T
<FCLEAR ,COMP-5-DOOR ,OPENBIT>
<TELL
"\"Thank you anyway. We shall be arriving shortly at the border, and I
will see you again at that time.\" He leaves with a tip of his hat,
closing the door behind him." CR>)>
<SETG I-FATAL T>
<SETG BAD-INTERVIEW-FLAG <>>
<REMOVE ,BAD-SPY>>
<GLOBAL BAD-CONFINED <>>
<GLOBAL SUSPICION 0>
<GLOBAL BAD-YES-START
"You reply that indeed a wounded man did wander into the compartment,
apparently looking for someone. A moment later, he was gone. You are
asked whether he gave you anything, a piece of paper perhaps, but you
shake your head in the negative.">
<OBJECT COMP-BLOOD-STAIN
(LOC COMP-5)
(DESC "blood stain")
(SYNONYM BLOOD STAIN)
(ADJECTIVE BLOOD)
(FLAGS NDESCBIT ;INVISIBLE)
(ACTION COMP-BLOOD-STAIN-F)>
<ROUTINE COMP-BLOOD-STAIN-F ()
<COND (<OR <AND <VERB? CLEAN>
<EQUAL? ,PRSI ,WET-PAPER-TOWEL>>
<AND <VERB? CLEAN>
<NOT ,PRSI>
<IN? ,WET-PAPER-TOWEL ,WINNER>>>
<TELL
"You wipe up the drops of blood; it is unlikely anyone would
notice the slight discoloration that remains." CR>
<MOVE ,STAINED-PAPER-TOWEL ,WINNER>
<REMOVE ,WET-PAPER-TOWEL>
<REMOVE ,COMP-BLOOD-STAIN>)
(<OR <AND <VERB? CLEAN>
<EQUAL? ,PRSI ,PAPER-TOWEL>>
<AND <VERB? CLEAN>
<NOT ,PRSI>
<IN? ,PAPER-TOWEL ,WINNER>>>
<FSET ,PRSO ,CROSSBIT>
<TELL
"The dry towel merely smears the blood around, leaving, in all,
a bigger mess than when you started." CR>)
(<VERB? CLEAN>
<TELL
"It's a good idea to cover the agent's tracks, but you don't have
anything suitable for cleaning up the mess." CR>)
(<AND <VERB? PUT PUT-ON> <EQUAL? ,PRSI ,COMP-BLOOD-STAIN>>
<TELL
"You'd only ruin the " D ,PRSO ,PERIOD-CR>)>>
<GLOBAL BAD-DISTANCE 0>
<ROUTINE I-BAD-WAITS ()
<COND (<NOT <LOC ,BAD-SPY>> <RTRUE>)
(<AND <NOT <L? <ABS <- <GETP <LOC ,BAD-SPY> ,P?NS>
<GETP ,HERE ,P?NS>>>
,BAD-DISTANCE>>
<NOT <EQUAL? ,HERE ,COMP-5>>>
<COND (<OR <EQUAL? ,HERE ,LAVATORY>
<G? <SETG BAD-WAIT-COUNT <+ ,BAD-WAIT-COUNT 1>> 4>>
<HLIGHT ,H-BOLD>
<CRLF>
<SETG SUSPICION <+ ,SUSPICION 1>>
<COND (<EQUAL? ,HERE ,LAVATORY>
<TELL
"A guard forces his way into the lavatory and leads">)
(T
<TELL
"The man signals to a guard, who arrives and forcibly takes">)>
<TELL " you to your compartment. \"That is better,\"
the trench coated man says.">
<HLIGHT ,H-NORMAL>
<CRLF>
<GOTO ,COMP-5 <>>
<DE-SLOW-CLOCK-QUEUE>
<BAD-INTERVIEW T>
<RTRUE>)
(<NOT <EQUAL? ,BAD-WAIT-COUNT 1>>
<BOLDTELL <GET ,BAD-WAIT-TBL ,BAD-WAIT-COUNT>>)>)
(<L? <SETG BAD-DISTANCE <- ,BAD-DISTANCE 1>> 1>
<BOLDTELL
"\"Thank you so much for your patience.\" He leads you into your
compartment and shuts the door.">
<GOTO ,COMP-5 <>>
<BAD-INTERVIEW>
<DE-SLOW-CLOCK-QUEUE>
<RTRUE>)>>
<GLOBAL BAD-WAIT-TBL
<PLTABLE
""
"\"I am in a hurry. If you wouldn't mind...\""
"The man looks at you impatiently. \"Please...\" he implores."
"\"I am afraid that you really must come with me.\"">>
<GLOBAL BAD-WAIT-COUNT 0>
<ROUTINE I-BAD-LAV-WAITS ()
<COND (<NOT <LOC ,BAD-SPY>> <RTRUE>)
(<FSET? ,LAVATORY-DOOR ,OPENBIT>
<BOLDTELL
"The man in the trench coat takes you by the arm and walks you back to your
compartment.">
<GOTO ,COMP-5 <>>
<BAD-INTERVIEW>
<DE-SLOW-CLOCK-QUEUE>
<RTRUE>)
(<G? <SETG BAD-WAIT-COUNT <+ ,BAD-WAIT-COUNT 1>> 4>
<BOLDTELL
"Without warning, the door is knocked open by one of the uniformed guards. The
man in the trench coat then takes you by the arm and escorts you back to your
compartment.">
<SETG SUSPICION <+ ,SUSPICION 1>>
<GOTO ,COMP-5 <>>
<BAD-INTERVIEW T>
<DE-SLOW-CLOCK-QUEUE>
<RTRUE>)
(<NOT <EQUAL? ,BAD-WAIT-COUNT 1>>
<BOLDTELL <GET ,BAD-LAV-WAIT-TBL ,BAD-WAIT-COUNT>>)>>
<GLOBAL BAD-LAV-WAIT-TBL
<PLTABLE
""
"There is a knock on the door. \"If you wouldn't mind, I really must speak
to you.\""
"\"I really must insist.\" After a moment, the man speaks loudly in
Frobnian, as if to somebody farther away than yourself."
"\"If you won't come out, we can arrange something else...\" His voice
trails off in a rather sarcastic way.">>
<OBJECT GRAFFITI
(LOC LAVATORY)
(DESC "graffiti")
(SYNONYM GRAFITTI GRAFFITI WORDS WRITING)
(FLAGS NDESCBIT)
(ACTION GRAFFITI-F)>
<ROUTINE GRAFFITI-F ()
<COND (<VERB? READ EXAMINE>
<TELL
"The words don't make a lot of sense, and your Frobnian is poor, but it seems
to say:|
|
BORDER ZONE|
Written by Marc Blank|
Copyright (c) 1987, Infocom, Inc.|
" CR>)>>
<OBJECT TOWEL-DISPENSER
(LOC LAVATORY)
(DESC "towel dispenser")
(SYNONYM DISPENSER MACHINE)
(ADJECTIVE TOWEL)
(FLAGS NDESCBIT CONTBIT SEARCHBIT OPENBIT)
(CAPACITY 5)
(ACTION TOWEL-DISPENSER-F)>
<ROUTINE TOWEL-DISPENSER-F ()
<COND (<VERB? EXAMINE>
<TELL
"It's your ordinary metal towel dispenser. Here, as in the States, people
tend to write grafitti on towel dispensers, and this one is no exception.">
<COND (<IN? ,PAPER-TOWEL ,PRSO>
<TELL
" You are in luck - there's at least one paper towel inside.">)
(T
<TELL
" It seems to be empty, which is somehow not surprising.">)>
<CRLF>)
(<VERB? OPEN>
<TELL
"You can't open it, reminding yourself of how stupid it is that all
towel dispensers seem to be locked." CR>)
(<VERB? CLOSE>
<TELL
"It already is." CR>)
(<AND <VERB? PUT> <EQUAL? ,PRSI ,TOWEL-DISPENSER>>
<COND (<EQUAL? ,PRSO ,DOCUMENT ,SHRED ,SHREDS>
<MOVE ,PRSO ,PRSI>
<TELL
"You carefully place the " D ,PRSO " inside the dispenser." CR>)
(<EQUAL? ,PRSO ,PAPER-TOWEL>
<MOVE ,PRSO ,PRSI>
<TELL
"You replace the paper towel in the dispenser." CR>)
(T
<TELL
"The opening is too small and narrow for that." CR>)>)
(<VERB? UNLOCK MUNG KICK HIT>
<TELL
"Did it occur to you to simply take the towel rather than vandalizing
the machine?" CR>)>>
<OBJECT PAPER-TOWEL
(LOC TOWEL-DISPENSER)
(DESC "paper towel")
(SYNONYM TOWEL)
(ADJECTIVE PAPER)
(FLAGS TAKEBIT)
(SCENARIO 1)
(SIZE 2)
(ACTION PAPER-TOWEL-F)>
<ROUTINE PAPER-TOWEL-F ()
<COND (<VERB? CUT RIP>
<TELL
"That won't serve any purpose." CR>)
(<AND <VERB? PUT PUT-ON>
<EQUAL? ,PRSO ,DOCUMENT>>
<TELL "You'd never get away with it." CR>)
(<AND <VERB? TAKE MOVE>
<EQUAL? ,PRSO ,PAPER-TOWEL>
<IN? ,PRSO ,TOWEL-DISPENSER>>
<TELL
"You pull out the paper towel - it's the last one." CR>
<MOVE ,PRSO ,WINNER>)>>
<OBJECT STAINED-PAPER-TOWEL
(DESC "blood-stained paper towel")
(SYNONYM TOWEL)
(ADJECTIVE WET BLOOD-STAINED STAINED BLOODY PAPER)
(FLAGS TAKEBIT)
(SCENARIO 1)
(SIZE 4)
(ACTION PAPER-TOWEL-F)>
<OBJECT WET-PAPER-TOWEL
(DESC "wet paper towel")
(SYNONYM TOWEL)
(ADJECTIVE WET PAPER)
(FLAGS TAKEBIT)
(SCENARIO 1)
(SIZE 4)
(ACTION PAPER-TOWEL-F)>
<OBJECT LAV-SINK
(LOC LAVATORY)
(DESC "sink")
(SYNONYM SINK)
(FLAGS NDESCBIT CONTBIT OPENBIT TRANSBIT SEARCHBIT)
(CAPACITY 12)
(ACTION LAV-SINK-F)>
<ROUTINE LAV-SINK-F ()
<COND (<VERB? OPEN CLOSE>
<TELL "An odd idea." CR>)
(<VERB? EXAMINE>
<TELL
"The sink is hideously dirty and grimy">
<COND (<FSET? ,LAV-FAUCET ,OPENBIT>
<TELL ", in spite of the running water">)>
<TELL "; you hesitate to even consider
using it.">
<COND (<FIRST? ,LAV-SINK>
<TELL " ">
<FCLEAR ,LAV-SINK ,NDESCBIT>
<V-EXAMINE>
<FSET ,LAV-SINK ,NDESCBIT>)
(T
<CRLF>
)>
<RTRUE>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,LAV-SINK>
<G? <GETP ,PRSO ,P?SIZE> 2>>
<TELL
"That would only clog the drain, which won't help you, though it
would make an interesting sort of statement." CR>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,LAV-SINK>
<FSET? ,LAV-FAUCET ,OPENBIT>>
<PERFORM ,V?PUT-UNDER ,PRSO ,LAV-FAUCET>
<RTRUE>)>>
<OBJECT GLOBAL-TAIL
(LOC GLOBAL-OBJECTS)
(DESC "man following you")
(SYNONYM MAN AGENT TAIL)
(SCENARIO 1)
(TRANSIENT <PLTABLE PLATFORM-1 PLATFORM-2 PLATFORM-3 PLATFORM-4>)
(ACTION GLOBAL-TAIL-F)>
<ROUTINE GLOBAL-TAIL-F ()
<COND (<NOT ,FOLLOW-WARNING>
<TELL
"You don't see any particular man around here, at least none that you
recognize." CR>)
(T
<TELL
"You try to find the man who appears to be tailing you, but he has gone
out of sight." CR>)>>
<OBJECT GLOBAL-WATER
(LOC GLOBAL-OBJECTS)
(DESC "water")
(SYNONYM WATER)
(ADJECTIVE COLD)
(ACTION GLOBAL-WATER-F)>
<ROUTINE GLOBAL-WATER-F ()
<COND (<NOT <EQUAL? ,HERE ,LAVATORY>>
<TELL
"There's no water here." CR>)
(<VERB? DRINK EAT>
<TELL "You ">
<COND (<NOT <FSET? ,LAV-FAUCET ,OPENBIT>>
<TELL "turn on the faucet and ">)>
<TELL "take a nice, refreshing drink, after which you
turn the water back off again." CR>
<FCLEAR ,LAV-FAUCET ,OPENBIT>)
(<VERB? WALK>
<PERFORM ,V?OPEN ,LAV-FAUCET>
<RTRUE>)
(<VERB? ON OFF SET OPEN CLOSE>
<PERFORM ,PRSA ,LAV-FAUCET>
<RTRUE>)
(<AND <VERB? PUT PUT-UNDER> <EQUAL? ,PRSI ,GLOBAL-WATER>>
<COND (<NOT <FSET? ,LAV-FAUCET ,OPENBIT>>
<TELL
"There's no water running, so it'll take some time..." CR>)
(<EQUAL? ,PRSO ,PAPER-TOWEL>
<TELL
"You put the " D ,PRSO " under the running water until it's good
and wet." CR>
<MOVE ,WET-PAPER-TOWEL <LOC ,PAPER-TOWEL>>
<THIS-IS-IT ,WET-PAPER-TOWEL>
<REMOVE ,PAPER-TOWEL>)
(T
<TELL
"There's nothing to be gained by wetting that." CR>)>)>>
<OBJECT LAV-FAUCET
(LOC LAVATORY)
(DESC "faucet")
(SYNONYM FAUCET)
(FLAGS NDESCBIT)
(ACTION LAV-FAUCET-F)>
<ROUTINE LAV-FAUCET-F ()
<COND (<VERB? EXAMINE>
<TELL
"Like much of the rest of Frobnia, you have a choice of cold or cold
running water - thus, only one faucet.">
<COND (<FSET? ,PRSO ,OPENBIT>
<TELL " At the moment, the faucet is
open and water splashes into the sink and down the drain.">)>
<CRLF>)
(<AND <VERB? PUT-UNDER> <EQUAL? ,PRSI ,LAV-FAUCET>>
<PERFORM ,PRSA ,PRSO ,GLOBAL-WATER>
<RTRUE>)
(<OR <VERB? OPEN ON>
<AND <VERB? SET> <NOT <FSET? ,PRSO ,OPENBIT>>>>
<COND (<FSET? ,PRSO ,OPENBIT>
<TELL
"The pressure is low, but the faucet is quite open." CR>)
(T
<FSET ,PRSO ,OPENBIT>
<TELL
"You turn the faucet and the cold water starts to flow into the sink.">
<DOWN-THE-DRAIN ,LAV-SINK 3>
<CRLF>)>)
(<OR <VERB? CLOSE OFF>
<AND <VERB? SET> <FSET? ,PRSO ,OPENBIT>>>
<COND (<NOT <FSET? ,PRSO ,OPENBIT>>
<TELL
"The faucet is already closed." CR>)
(T
<FCLEAR ,PRSO ,OPENBIT>
<TELL
"You turn off the faucet which, after some dripping, finally obliges." CR>)>)
>>
<OBJECT DOCUMENT
(DESC "document")
(SYNONYM PAPER DOCUMENT DRAWING)
(ADJECTIVE TYPED FRONT)
(FLAGS TAKEBIT)
(SIZE 5)
(SCENARIO 1)
(ACTION DOCUMENT-F)>
<ROUTINE DOCUMENT-F ()
<COND (<VERB? FOLD>
<COND (<G? <GETP ,PRSO ,P?SIZE> 4>
<PUTP ,PRSO ,P?SIZE 2>
<TELL
"The document is now folded up." CR>)
(T
<TELL
"It's already folded up as much as it can be." CR>)>)
(<VERB? UNFOLD>
<COND (<L? <GETP ,PRSO ,P?SIZE> 4>
<TELL
"The document is no longer folded up." CR>
<PUTP ,PRSO ,P?SIZE 5>)
(T
<TOO-LATE>)>)
(<VERB? RIP MUNG>
<TELL "You ">
<COND (<VERB? RIP> <TELL "rip">)
(T <TELL "cut">)>
<TELL
" up the document into a number of pieces, leaving you with a handful
of shreds." CR>
<REMOVE ,DOCUMENT>
<THIS-IS-IT ,SHREDS>
<MOVE ,SHREDS ,WINNER>)
(<VERB? EXAMINE READ>
<COND (<L? <GETP ,PRSO ,P?SIZE> 4>
<TELL
"Before you start reading, you first unfold the document." CR CR>
<PUTP ,PRSO ,P?SIZE 5>)>
<TELL
"It's an official document of some kind, though you can't understand a
word of the contents - it's in Frobnian, naturally, so you wouldn't expect
to." CR>)
(<OR <VERB? OPEN CLOSE LOOK-INSIDE>
<AND <VERB? PUT PUT-ON> <EQUAL? ,DOCUMENT ,PRSI>>>
<TELL "That's ridiculous." CR>)>>
<OBJECT SHRED
(DESC "shred of the document")
(SYNONYM SHRED DOCUMENT)
(ADJECTIVE SMALL WET)
(FLAGS TAKEBIT)
(SCENARIO 1)
(SIZE 1)
(ACTION SHRED-F)>
<ROUTINE SHRED-F ()
<COND (<VERB? EXAMINE READ>
<TELL
"You can tell it's from the original document, though it's hard to
make much of anything out of the small, wet shred of paper." CR>)>>
<OBJECT SHREDS
(DESC "handful of shreds")
(SYNONYM SHRED SHREDS HANDFUL PILE PIECES)
(ADJECTIVE PAPER)
(FLAGS TAKEBIT)
(SCENARIO 1)
(SIZE 1)
(ACTION SHREDS-F)>
<ROUTINE SHREDS-F ()
<COND (<VERB? EXAMINE READ>
<TELL
"There about a dozen of them, none small enough to read which, presumably,
was the idea." CR>)
(<VERB? EAT>
<TELL
"Just like in the movies, you eat the shreds; they don't go down easy,
and you hope you won't be seeing them again." CR>
<REMOVE ,SHREDS>)
(<AND <VERB? TAKE> <IN? ,PRSO ,LAV-TOILET>>
<TELL
"The shreds are wet, now. You can't take them." CR>)>>
<OBJECT LAV-MIRROR
(LOC LAVATORY)
(DESC "mirror")
(SYNONYM MIRROR)
(FLAGS NDESCBIT)
(ACTION LAV-MIRROR-F)>
<ROUTINE LAV-MIRROR-F ()
<COND (<AND <VERB? PUT-BEHIND> <EQUAL? ,PRSI ,LAV-MIRROR>>
<TELL "The mirror is flush with the wall." CR>)
(<VERB? LOOK-INSIDE EXAMINE>
<TELL
"You see yourself, of course">
<COND (<IN? ,CARNATION ,BYSTANDER-CLOTHES>
<TELL
", and the mangled carnation on your lapel reminds you of your task">)>
<TELL ,PERIOD-CR>)
(<VERB? MUNG KICK>
<TELL
"There are enough vandals around without your getting into the act." CR>)>>
<OBJECT LAV-WINDOW
(LOC LAVATORY)
(DESC "window")
(SYNONYM WINDOW)
(ADJECTIVE GRIMY)
(FLAGS NDESCBIT)
(ACTION LAV-WINDOW-F)>
<ROUTINE LAV-WINDOW-F ()
<COND (<VERB? LOOK-INSIDE>
<TELL
"You can't make out much; the window is much too grimy." CR>)
(<VERB? OPEN CLOSE>
<TELL
"The window here doesn't open or close, which is a shame considering the not
too pleasant odors contained here. The only ones that ever seem to open are
those in the compartments." CR>)
(<VERB? CLEAN>
<TELL
"It's good that somebody thought of it, but the grime is on the outside
and out of reach." CR>)
(<VERB? MUNG KICK>
<TELL
"That would make lots of noise and bring attention to yourself, so you
reconsider." CR>)>>
<GLOBAL BAD-TUNNEL <>>
<ROUTINE I-BAD-TUNNEL ()
<BOLDTELL
"From the sound of it, the train has just entered a tunnel. If memory
serves, you should be very near the border now.">
<SETG BAD-TUNNEL T>
<RT-QUEUE ,I-BAD-TUNNEL-END 160>
<RTRUE>>
<ROUTINE I-BAD-TUNNEL-END ()
<HLIGHT ,H-BOLD>
<TELL CR
"The train has left the tunnel; these are the final moments
before arriving at the checkpoint." CR>
<SETG BAD-TUNNEL <>>
<COND (<NOT <EQUAL? ,HERE ,LAVATORY>>
<TELL CR
"Out of the corner of your eye, you catch a glimpse of someone
falling from the roof of the train! Though you can't be sure,
you'd swear it was the American agent.">)>
<HLIGHT ,H-NORMAL>
<CRLF>
<RT-QUEUE ,I-BAD-BORDER 100>>
<ROUTINE I-BAD-BORDER ("AUX" ITM TMP)
<HLIGHT ,H-BOLD>
<SETG BAD-CONFINED <>>
;<COND (,DEBUG
<TELL "[Suspicion: " N ,SUSPICION "]" CR>)>
<TELL CR
"The train, without warning, slams on its brakes and comes to a stop at
the border station. After so many trips, you'd think you were used to
this jarring moment, but alas, it's always the same." CR>
<HLIGHT ,H-NORMAL>
<CRLF>
<COND (<NOT <EQUAL? ,HERE ,COMP-5>>
<GOTO ,COMP-5 <>>
<TELL
"A guard comes up to you, speaks some gibberish you take for a lower-class
dialect of Frobnian, and hustles you back to your compartment." CR CR>)>
<TELL
"Within seconds, the man in the trench coat along with two uniformed
guards enter. This border search ritual has become second-nature
to you, although the man in the coat is a new twist." CR CR>
<TELL
"They begin by asking about your trip, your nationality (as if they
didn't know), and a host of inquiries about currency and other possible
contraband.">
<COND (<AND <FSET? ,CARNATION ,WORNBIT>
<NOT <FSET? ,CARNATION ,HUTBIT>>>
<TELL " During the questioning, a guard motions to
the man in the trench coat who then appears to stare straight at your
clothing, frowning slightly.">
<SETG SUSPICION <+ ,SUSPICION 1>>)>
<TELL " Then, as usual, they move on to the possessions." CR>
<COND (<ULTIMATELY-IN? ,BRIEFCASE ,HERE>
<MOVE-ALL ,BRIEFCASE ,COMP-SEAT-FRONT>
<THEY-START-WITH ,BRIEFCASE>
<SET TMP T>
<COND (<BAD-SEARCH ,BRIEFCASE>
<RTRUE>)>)>
<COND (<ULTIMATELY-IN? ,CAMERA-BAG ,HERE>
<MOVE-ALL ,CAMERA-BAG ,COMP-SEAT-FRONT>
<COND (.TMP
<FINDING-NOTHING ,CAMERA-BAG>)
(T
<THEY-START-WITH ,CAMERA-BAG>
<SET TMP T>)>
<COND (<BAD-SEARCH ,CAMERA-BAG>
<RTRUE>)>)>
<COND (<ULTIMATELY-IN? ,CAMERA ,HERE>
<COND (.TMP
<FINDING-NOTHING ,CAMERA>)
(T
<THEY-START-WITH ,CAMERA>
<SET TMP T>)>
<TELL " The guard examines it for a moment, then
passes it to the trench coated man." CR>
<COND (<CAMERA-SEARCH>
<RTRUE>)>
<CRLF>)
(<NOT <ZERO? <LOC ,CAMERA>>>
<TELL CR CR
"Just at this moment, another guard enters the compartment, holding your
camera. He speaks quickly, in Frobnian, then leaves. \"That was very
careless of you, leaving your camera in the " D <LOC ,CAMERA> ".\"" CR>
<COND (<CAMERA-SEARCH>
<RTRUE>)>
<CRLF>)
(<OR <ULTIMATELY-IN? ,COLOR-ROLL ,HERE>
<ULTIMATELY-IN? ,EXPOSED-ROLL ,HERE>>
<TELL CR CR>
<COND (<OR <IN? ,COLOR-ROLL ,COMP-SEAT-FRONT>
<IN? ,EXPOSED-ROLL ,COMP-SEAT-FRONT>>
<TELL
"The man in the trench coat looks down at the front facing seat and
holds up your film, frowning as though puzzled.">)
(T
<TELL
"The guards, who have started looking elsewhere in your compartment, find
your film and hand it to over to the trench coated man.">)>
<TELL " \"Now this I find
peculiar. We find no camera of yours on this train, yet
here you have film.\" He toys with the film for a moment, then exposes
it all, handing it finally to one of the guards standing by. \"Let us
hope that the pictures were not so good anyway.\"">
<COND (<ULTIMATELY-IN? ,COLOR-ROLL ,HERE>
<REMOVE ,COLOR-ROLL>)>
<COND (<ULTIMATELY-IN? ,EXPOSED-ROLL ,HERE>
<REMOVE ,EXPOSED-ROLL>)>
<CRLF>)>
<COND (<AND <L? ,SUSPICION 2>
,SECOND-ROLL
<OR <DONT-CONFISCATE ,BRIEFCASE>
<DONT-CONFISCATE ,COMP-SEAT-BACK>
<DONT-CONFISCATE ,COMP-SEAT-FRONT>
<DONT-CONFISCATE ,COMP-RACK>>> T)
(<AND <G? ,SUSPICION 0>
<NOT ,SECOND-ROLL> ;"No roll in camera"
<CONFISCATE-FILM ,BRIEFCASE>> T)
(<AND <G? ,SUSPICION 1>
,SECOND-ROLL
<OR <CONFISCATE-FILM ,BRIEFCASE>
<CONFISCATE-FILM ,COMP-SEAT-FRONT>
<CONFISCATE-FILM ,COMP-SEAT-BACK>
<CONFISCATE-FILM ,COMP-RACK>>> T)
(<OR <IN? ,COLOR-ROLL ,WINNER>
<IN? ,EXPOSED-ROLL ,WINNER>>
<REMOVE-IF-IN? ,COLOR-ROLL ,WINNER>
<REMOVE-IF-IN? ,EXPOSED-ROLL ,WINNER>
<TELL CR
"He then notices the film you're holding, exposes that, and hands it
over to one of the guards. \"I do not understand why you would be holding
your film. It is night, and the view... well, the view is not so exciting.
We can only hope that the pictures here were not so good, eh?\"" CR>)>
;"Look everywhere else..."
<COND (<OR <BAD-SEARCH ,LAV-TOILET>
<BAD-SEARCH ,LAV-SINK>
<BAD-SEARCH ,LAVATORY>
<BAD-SEARCH ,TOWEL-DISPENSER>
<BAD-SEARCH ,WINNER>
<BAD-SEARCH ,HERE>
<BAD-SEARCH ,TOILET-KIT>
<BAD-SEARCH ,COMP-RACK>
<BAD-SEARCH ,COMP-SEAT-FRONT>
<BAD-SEARCH ,COMP-SEAT-BACK>
<BAD-SEARCH ,UNDER-SEAT>>
<RTRUE>)>
<TELL CR
"\"You have been through worse, I am sure.\" The man smiles that unnerving
smile of his and ">
<COND (<IN? ,CARNATION ,WINNER>
<SETG SUSPICION <+ ,SUSPICION 1>>
<TELL "seems to notice your carnation for the first time">)
(T
<TELL "continues">)>
<TELL ". \"And you have been very patient. Have a pleasant
journey, and feel free to leave the train, if you wish. We shall be stopping
here longer than usual today.\" He exits, along with the other guards.">
<SETG AT-STATION T>
<RT-QUEUE ,I-GORMNASH 850>
<I-CLOCKER 240>
<FCLEAR ,PASS-5 ,TOUCHBIT>
<FCLEAR ,PASS-6 ,TOUCHBIT>
<CRLF>>
<GLOBAL AT-STATION <>>
<ROUTINE DONT-CONFISCATE (OBJ)
<COND (<OR <IN? ,COLOR-ROLL .OBJ>
<IN? ,EXPOSED-ROLL .OBJ>>
<TELL CR
"The man pauses, then moves to " THE .OBJ ", picking up the film that
lies there. He rolls it in his hand, then returns it. \"I was
thinking...\" he starts. He stops for a tense moment, then continues,
\"I was thinking that perhaps we are on the wrong track.\" And with
that, he returns the film to its place." CR>)>>
<ROUTINE CONFISCATE-FILM (OBJ)
<COND (<OR <IN? ,COLOR-ROLL .OBJ>
<IN? ,EXPOSED-ROLL .OBJ>>
<REMOVE-IF-IN? ,COLOR-ROLL .OBJ>
<REMOVE-IF-IN? ,EXPOSED-ROLL .OBJ>
<TELL CR
"The man pauses, then moves to " THE .OBJ ", picking up the film that
is ">
<COND (<FSET? .OBJ ,SURFACEBIT>
<TELL "sitting there">)
(T
<TELL "inside">)>
<TELL ". \"I am afraid that this film will have to be
confiscated. We cannot be too careful with potential enemies
of the state.\"" CR>)>>
<ROUTINE REMOVE-IF-IN? (OBJ CNT)
<COND (<IN? .OBJ .CNT>
<REMOVE .OBJ>
<RTRUE>)>>
<ROUTINE CAMERA-SEARCH ("AUX" OBJ)
<TELL CR
"He smiles at you, but you find it difficult to return the
gesture. \"You like to take pictures,
then...\" He pauses, massaging his upper lip between his thumb and
forefinger, then ">
<COND (<FSET? ,CAMERA ,OPENBIT> <TELL "looks in">)
(T <TELL "opens">)>
<TELL " the back of the camera.">
<COND (<OR <IN? ,SHRED ,CAMERA>
<IN? ,SHREDS ,CAMERA>
<IN? ,DOCUMENT ,CAMERA>>
<TELL CR CR
"He shakes his head for a moment, then pulls the " D <FIRST? ,CAMERA> "
out of the camera. ">
<TELL ,BAD-END CR CR>
<JIGS-UP ,EPILOGUE-ASS>
<RTRUE>)
(<AND <SET OBJ <FIRST? ,CAMERA>>
<FSET? .OBJ ,FILMBIT>>
<COND (<EQUAL? .OBJ ,COLOR-ROLL>
<SETG SECOND-ROLL ,EXPOSED-ROLL>)
(T
<SETG SECOND-ROLL ,COLOR-ROLL>)>
<REMOVE .OBJ>
<TELL
" \"I myself have quite an interest in photography, but as for these
pictures...\" He pulls the film out of the roll, exposing every
frame. \"These pictures...\" he continues, \"...were probably not your
best.\" He hands the exposed film to a guard, who pockets it.">)>
<RFALSE>>
<GLOBAL SECOND-ROLL <>>
<ROUTINE FINDING-NOTHING (OBJ)
<TELL " Seeing nothing of interest there, they continue with the "
D .OBJ ".">>
<ROUTINE THEY-START-WITH (OBJ)
<TELL CR "They start with the " D .OBJ
", looking it over, and finally dumping its
contents onto the front facing seat.">>
<ROUTINE BAD-FOUND (ITM CNT)
<CRLF>
<COND (<EQUAL? .CNT ,WINNER>
<COND (,BAD-INTERVIEW-FLAG
<TELL
"The man notices what you are carrying, and forces it from your hand.">)
(T
<TELL
"At the signal from a the man in the trench coat, a guard searches you,
finding the " D .ITM ". Looking pleased, he hands it">)>)
(<EQUAL? .CNT ,HERE>
<COND (,BAD-INTERVIEW-FLAG
<TELL
"The man sees the " D .ITM " on the floor, and picks it up.">)
(T
<TELL
"One of the guards notices the " D .ITM " sitting on the floor. He
hands it">)>)
(<OR <EQUAL? .CNT ,LAVATORY>
<ULTIMATELY-IN? .CNT ,LAVATORY>>
<TELL
"A guard bursts into the room, holding the " D .ITM ". He hands it">)
(<EQUAL? .CNT ,COMP-RACK ,COMP-SEAT-FRONT ,COMP-SEAT-BACK>
<TELL
"One of the guards, who had been searching the " D .CNT ", finds the "
D .ITM " there and hands it">)
(T
<TELL
"The guard searches for a moment, then finds the " D .ITM " which he
hands">)>
<COND (<AND <EQUAL? .CNT ,WINNER ,HERE> ,BAD-INTERVIEW-FLAG>
<TELL "
He looks it over and shakes his head. \"I am afraid we shall have to
discuss this at length,\" he says. He assigns a guard to watch over
you until the train reaches the station. Once there, you are led into
a holding room, where you undergo a few hours of detailed interrogation.
You are finally released, but not before missing your rendezvous." CR CR>
<JIGS-UP ,EPILOGUE-ASS>)
(T
<TELL " to the man in the coat, who shakes
his head back and forth. ">)>
<COND (<EQUAL? .CNT ,TOWEL-DISPENSER ,LAV-TOILET>
<TELL "\"In the " D .CNT
", how very clever,\" the man begins. ">)>
<TELL ,BAD-END CR CR>
<JIGS-UP ,EPILOGUE-ASS>>
<GLOBAL BAD-END
"\"I am afraid you have not been very honest
with us. We will need to ask some, how to say, more difficult
questions now.\" He motions to the guards, who lead you into a
holding area nearby. After hours of questioning, you are
finally released, but not before missing your rendezvous.">
<GLOBAL EPILOGUE-ASS
"Epilogue|
|
Two days later, in your hotel room in Vienna, you notice the headline
reporting the assassination of the American ambassador to Litzenburg in
the small border town of Ostnitz. The apparent assassin
was a member of a radical Islamic group, although details of the plot
may never be known since the assassin himself was found dead at the
scene of the crime, an apparent suicide.">
<ROUTINE BAD-SEARCH (OBJ "AUX" (FND <>))
<COND (<IN? ,SHREDS .OBJ>
<SET FND ,SHREDS>)
(<IN? ,DOCUMENT .OBJ>
<SET FND ,DOCUMENT>)
(<IN? ,SHRED .OBJ>
<SET FND ,SHRED>)>
<COND (.FND
<BAD-FOUND .FND .OBJ>
<RTRUE>)>>
<ROUTINE REMOVE-TO-BOTTOM (OBJ "AUX" N F)
<SET F <FIRST? .OBJ>>
<REPEAT ()
<COND (<NOT .F> <RETURN>)
(T
<SET N <NEXT? .F>>
<COND (<FIRST? .F>
<REMOVE-TO-BOTTOM .F>)
(T
<REMOVE .F>)>
<SET F .N>)>>
<REMOVE .OBJ>>
<OBJECT BY-GUN
(LOC LOCAL-GLOBALS)
(DESC "gun")
(SYNONYM GUN GUNS)
(ADJECTIVE MACHINE)
(ACTION BY-GUN-F)>
<ROUTINE BY-GUN-F ()
<COND (<VERB? TAKE>
<TELL
"You're likely to get only the bullets." CR>)
(T
<TELL
"There's nothing useful for you to do with the gun." CR>)>>
<OBJECT BY-GUARDS
(LOC LOCAL-GLOBALS)
(DESC "guard")
(SYNONYM GUARD GUARDS)
(FLAGS PERSON)
(ACTION BY-GUARDS-F)>
<ROUTINE BY-GUARDS-F ()
<COND (<VERB? PHOTOGRAPH>
<TELL
"As you raise your camera, the guard raises his weapon. It would be a shame
to waste your last picture on him." CR>)
(<VERB? BRIBE>
<TELL
"It's too risky; you'd probably end up in jail." CR>)
(<HURT? ,PRSO>
<TELL
"Don't be ridiculous! You'd only get thrown in jail, and an iron-curtain
jail at that!" CR>)
(<VERB? EXAMINE>
<COND (,AT-STATION
<TELL
"The guard is standing just north of your position, and he motions for
you to exit the train to the south." CR>)
(T
<TELL
"The guards are in uniform and appear to be heavily armed. There is one
at each end of the passageway; although this train is always heavily guarded,
today's showing is somewhat unnerving." CR>)>)
(<AND <VERB? SHOW GIVE>
<EQUAL? ,PRSO ,DOCUMENT ,SHRED ,SHREDS>>
<PERFORM ,V?GIVE ,PRSO ,BAD-SPY>
<RTRUE>)>>
<OBJECT SAY-IT-IN-FROBNIAN
(LOC BRIEFCASE)
(DESC "tourist guide and phrase book")
(SYNONYM BOOK GUIDE)
(ADJECTIVE TOURIST FROBNIAN PHRASE)
(FLAGS TAKEBIT)
(SIZE 8)
(ACTION SAY-IT-IN-FROBNIAN-F)>
<ROUTINE SAY-IT-IN-FROBNIAN-F ()
<COND (<VERB? EXAMINE READ OPEN>
<CAN-BE-FOUND>)>>
<OBJECT PASSPORT
(LOC BRIEFCASE)
(DESC "passport")
(SYNONYM PASSPORT)
(FLAGS TAKEBIT READBIT)
(SIZE 6)
(ACTION PASSPORT-F)>
<ROUTINE PASSPORT-F ()
<COND (<VERB? EXAMINE READ>
<TELL
"It's yours, all right, and it hasn't changed since you last looked at
it." CR>)>>
<OBJECT TICKET
(LOC BRIEFCASE)
(DESC "train ticket")
(SYNONYM TICKET)
(ADJECTIVE TRAIN)
(FLAGS TAKEBIT)
(ACTION TICKET-F)>
<ROUTINE TICKET-F ()
<COND (<VERB? EXAMINE READ>
<TELL
"It's your ticket out of the country, and is printed in Frobnian." CR>)>>
<OBJECT PLAT-TRAIN
(LOC LOCAL-GLOBALS)
(DESC "train")
(SYNONYM TRAIN)
(ACTION PLAT-TRAIN-F)>
<ROUTINE PLAT-TRAIN-F ()
<COND (<VERB? EXAMINE>
<TELL
"The train is stopped here at the station. There are four cars in
all, and a guard is posted at each entrance to prevent the passengers
from reboarding until the train is ready to get underway again. You've
never understood this procedure, but that's nothing new in Frobnia." CR>)
(<VERB? BOARD ENTER CLIMB-ON>
<TELL
"You are stopped by one of the guards. \"Nye mneshna pletska bli!\"" CR>)>>
<ROUTINE I-GORMNASH ()
<HLIGHT ,H-BOLD>
<TELL CR
"The train's conductor cries \"Gormnash floogle nomnetz!\" indicating
that the train is ready to leave. ">
<COND (<FSET? ,HERE ,PLATFORMBIT>
<TELL "Not wishing to remain here with an
invalid ticket, you return to the train,">)
(T
<TELL "A minute later, the train pulls away from the
station, and you kick yourself for">)>
<TELL " having failed to make contact
with the friendly agent." CR>
<HLIGHT ,H-NORMAL>
<CRLF>
<JIGS-UP ,EPILOGUE-ASS>>
;"Saying it in frobnian..."
<GLOBAL CONTACT <>>
<GLOBAL BUMPER-FLAG <>>
<GLOBAL CONTACT-WAIT <>>
<GLOBAL I-FATAL <>>
<GLOBAL PASSWORD-GIVEN <>>
<ROUTINE I-PLATFORM ()
<COND (,CONTACT-WAIT
<SETG CONTACT-WAIT <>>
<RFALSE>)
(,BUMPER-FLAG
<SETG I-FATAL T>
<HLIGHT ,H-BOLD>
<CRLF>
<COND (<EQUAL? ,BUMPER-FLAG ,CONTACT>
<COND (<AND <IN? ,COLOR-ROLL <LOC ,BUMPER-FLAG>>
,PASSWORD-GIVEN>
<COND (<L? ,SUSPICION 2>
<SCENE-1-FINISH ,COLOR-ROLL>)
(T
<TELL
"The " D ,BUMPER-FLAG " bends down to pick up the roll of film when
two men approach, guns raised.">
<SCENE-1-ARREST>)>
<RTRUE>)
(T
<TELL
"Your contact looks around nervously, then darts off and out of sight." CR>)>
<CRLF>
<TELL
"Having lost sight of your contact, you have failed in your mission, and
you return to your train dejectedly." CR CR>
<JIGS-UP ,EPILOGUE-ASS>)
(<NOT <IN? ,BUMPER-FLAG ,HERE>>
<TELL
"You have walked away from the " D ,BUMPER-FLAG ", who barely seems to
have noticed.">)
(T
<TELL
"The " D ,BUMPER-FLAG " walks off and is lost in the crowd.">)>
<REMOVE ,BUMPER-FLAG>
<SETG BUMPER-FLAG <>>
<HLIGHT ,H-NORMAL>
<CRLF>
<RTRUE>)
(<AND <IN? ,CARNATION ,BYSTANDER-CLOTHES>
;"** Increase this with time"
<PROB ,CONTACT-PROB>>
<SETG I-FATAL T>
<HLIGHT ,H-BOLD>
<TELL CR
<GETP ,CONTACT ,P?BUMPER>
" \""
<GET <GETP ,CONTACT ,P?FROBNIAN> 0>
"\"">
<HLIGHT ,H-NORMAL>
<CRLF>
<SETG BUMPER-FLAG ,CONTACT>
<MOVE ,BUMPER-FLAG ,HERE>)
(<PROB 50>
<SETG CONTACT-PROB <+ ,CONTACT-PROB 10>>
<SETG I-FATAL T>
<SETG BUMPER-FLAG <PICK-WRONG-BUMPER>>
<FSET ,BUMPER-FLAG ,TOUCHBIT>
<HLIGHT ,H-BOLD>
<TELL CR
<GETP ,BUMPER-FLAG ,P?BUMPER>
" \""
<GET <GETP ,BUMPER-FLAG ,P?FROBNIAN> 0>
"\"">
<HLIGHT ,H-NORMAL>
<CRLF>
<MOVE ,BUMPER-FLAG ,HERE>)
(T
<SETG CONTACT-PROB <+ ,CONTACT-PROB 10>>
<RFALSE>)>>
<GLOBAL CONTACT-PROB 25>
<ROUTINE PICK-WRONG-BUMPER ("AUX" TMP)
<REPEAT ()
<COND (<NOT <EQUAL? <SET TMP <PICK-ONE ,BUMPERS>> ,CONTACT>>
<RETURN .TMP>)>>>
<GLOBAL BUMPERS <LTABLE 0
OLD-MAN
YOUNG-BOY
RUSSIAN-GUARD
SMALLISH-WOMAN
YOUNG-GIRL>>
<OBJECT YOUNG-GIRL
(DESC "young girl")
(SYNONYM GIRL)
(ADJECTIVE YOUNG)
(BDESC
"The young girl is holding the hand of her mother, tugging gently.
She seems distracted, as young girls will be.")
(BUMPER
"A young girl, holding her mother's hand, walks into you and stumbles.
She says, meekly,")
(FROBNIAN <PTABLE "Pripsa dazi, vaz!"
"Pardon me, sir.">)
(ACTION BUMPER-F)>
<OBJECT OLD-MAN
(DESC "old man")
(SYNONYM MAN)
(ADJECTIVE OLD)
(BDESC
"The man is old and infirm. He apparently can't see too well, for he is
constantly squinting. He also appears to be mumbling to himself.")
(BUMPER
"An old man seems to walk right into you. He adjusts his glasses and
says")
(FROBNIAN <PTABLE "Pripsa dazi!"
"Pardon me.">)
(ACTION BUMPER-F)>
<OBJECT YOUNG-BOY
(DESC "young boy")
(SYNONYM BOY)
(ADJECTIVE YOUNG)
(BDESC
"The boy is looking rather ashamed at having bumped into you. He
clearly recognizes you as a stranger, and starts to look away.")
(BUMPER
"A young boy, perhaps twelve years old, backs into you. He bows,
saying")
(FROBNIAN <PTABLE "Hartzi dazi!"
"Forgive me.">)
(ACTION BUMPER-F)>
<OBJECT RUSSIAN-GUARD
(DESC "Russian soldier")
(SYNONYM SOLDIER)
(ADJECTIVE RUSSIAN)
(BDESC
"He stares you down as you look clearly at him, but his face reveals
nothing more than his words.")
(BUMPER
"A stern-faced Russian soldier brushes into you. He leers at you, spits,
and says")
(FROBNIAN <PTABLE "Vinchim dorn!"
"You are in my way!">)
(ACTION BUMPER-F)>
<OBJECT SMALLISH-WOMAN
(DESC "smallish woman")
(SYNONYM WOMAN)
(ADJECTIVE SMALLISH)
(BDESC
"She averts her gaze as you attempt to get a better look at her. You
can tell she's fairly young and quite beautiful.")
(BUMPER
"A smallish woman, in peasant dress, bumps into you. She looks at you
fiercely and says")
(FROBNIAN <PTABLE "Oopzi dazi. Izi slep!"
"Excuse me. I am sorry.">)
(ACTION BUMPER-F)>
<ROUTINE SCENE-1-ARREST ()
<TELL "
\"Nye yensk. Ouzna gotcha!\" he says. You don't recognize the
first sentence, but the second is practically the national motto.
A moment later, the man in the trench coat arrives. \"You have
been quite clever,\" he begins, \"but I'm afraid you have given
yourself away.\" He smiles, as the two of you are hustled off
to an interrogation room.">
<TELL CR CR
"You are charged with espionage, but after a few months
and with the intervention of the American consulate, you are finally
released." CR CR>
<FINISH>>
<ROUTINE BUMPER-F ()
<COND (<AND <VERB? FOLLOW> <NOT <IN? ,PRSO ,HERE>>>
<COND (<FSET? ,PRSO ,TOUCHBIT>
<TELL
"It's no good; you've lost sight of the " D ,PRSO "." CR>)
(T
<TELL
"You haven't seen that person, at least not yet." CR>)>)
(<AND <VERB? GIVE SHOW> <GETP ,PRSI ,P?BUMPER>>
<COND (<G? ,SUSPICION 0>
<TELL
"You start to hand the " D ,PRSO " to the " D ,PRSI ", when a
man steps up behind you and places a gun in the small of your back.">
<SCENE-1-ARREST>)
(<AND <EQUAL? ,BUMPER-FLAG ,CONTACT> ,PASSWORD-GIVEN>
<COND (<L? <WEIGHT ,PRSO> 20>
<SCENE-1-FINISH>)
(T
<TELL
"The " D ,BUMPER-FLAG " looks horrified at the size of your delivery,
waving you off and moving away; so near to your goal, but you have
failed!" CR CR>
<JIGS-UP ,EPILOGUE-ASS>)>
<RTRUE>)
(T
<TELL
"The " D ,BUMPER-FLAG " looks at you suspiciously, and fends you
off with a wave of the hand and the words \"Nyep. Prep tipna.\"" CR>
<BAD-ARREST?>
<RTRUE>)>)
(<AND <VERB? EXAMINE> <GETP ,PRSO ,P?BDESC>>
<TELL <GETP ,PRSO ,P?BDESC> CR>)>>
<ROUTINE SCENE-1-FINISH ("OPTIONAL" (OBJ <>) "AUX" PHOTO)
<COND (<NOT .OBJ> <SET OBJ ,PRSO>)>
<TELL
"The " D ,CONTACT " surreptitiously takes the " D .OBJ " and hides
it under some clothes. A moment later, your contact is gone, lost in
the crowd." CR>
<COND (<AND <OR <EQUAL? .OBJ ,COLOR-ROLL>
<IN? ,COLOR-ROLL .OBJ>>
<OR <EQUAL? <GET <SET PHOTO <GETP ,COLOR-ROLL ,P?PHOTO>>
0>
,DOCUMENT>
<EQUAL? <GET .PHOTO 1>
,DOCUMENT>>
<NOT ,FILM-RUINED>>
<TELL CR
"You congratulate yourself on your good work, and happily reboard the
train for Vienna, wondering what it was all about and what, if any,
fruits your efforts have borne." CR CR>
<JIGS-UP
"|
Epilogue|
|
Two days later, in your hotel room in Vienna, you notice a headline
referring to an attempted assassination of a high-ranking American
diplomat in the small border town of Ostnitz, Litzenburg. Accounts
were sketchy, but it appears as if local police were tipped off about
the impending attack in time to prevent it.|
|
Congratulations! You get no medals, but you've successfully finished
the first chapter of Border Zone. The story continues with Chapter 2:
The Border. To start, type CONTINUE at the next prompt.
|
" 2>)
(T
<JIGS-UP ,EPILOGUE-ASS>
<RTRUE>)>>
<BUZZ OOPZI DAZI IZI SLEP POPKA IZIM HARTZI PRIPSA
BESNAP BELBOZ BRZNI>
<GLOBAL FROBNIAN
<PLTABLE <PTABLE <PLTABLE W?HARTZI W?DAZI> FZ-EXCUSES>
<PTABLE <PLTABLE W?OOPZI W?DAZI> FZ-EXCUSES>
<PTABLE <PLTABLE W?PRIPSA W?DAZI> FZ-EXCUSES>
<PTABLE <PLTABLE W?POPKA W?IZIM> FZ-MY-FAULT>>>
<GLOBAL BUMPER-ACTIONS 0>
<ROUTINE BAD-ARREST? ()
<SETG BUMPER-ACTIONS <+ ,BUMPER-ACTIONS 1>>
<COND (<AND <G? ,SUSPICION 1>
<G? ,BUMPER-ACTIONS <- 4 ,SUSPICION>>>
<TELL CR
"A man walks up behind you, shoves a gun into the small of your back,
and asks you to walk with him. You can hardly refuse, and you are led
to a small back room at the station where you are greeted by the man
in the trench coat. \"We meet again,\" he says, \"and it appears that
you have been ">
<COND (<AND ,BAD-SPEAKING <PROB 50>>
<TELL "conversing">)
(<PROB 60>
<TELL "consorting">)
(T
<TELL "molesting">)>
<TELL " with Frobnian nationals. This is not allowed,
as you must know.\"" CR>
<TELL CR
"You are questioned continuously just until your train is ready to depart,
and as an added security measure, you are escorted back to your compartment.
You realize that you must have done something to have raised the Frobnians'
suspicion of you, but it is too late now. You have missed your
rendezvous!" CR CR>
<FINISH>)>>
<ROUTINE FZ-EXCUSES ()
<COND (,BUMPER-FLAG
<TELL
"The " D ,BUMPER-FLAG " seems to understand your apology and nods in
acknowledgement." CR>
<BAD-ARREST?>
<SETG BAD-SPEAKING T>
<RTRUE>)
(T
<TELL ,NO-FROBNIAN CR>)>>
<GLOBAL BAD-SPEAKING <>>
<ROUTINE FZ-MY-FAULT ()
<COND (<IN? ,CONTACT ,HERE>
<SETG CONTACT-WAIT T>
<SETG PASSWORD-GIVEN T>
<TELL
"The " D ,CONTACT " makes eye contact, then looks away, nervously.
You are evidently not what was expected." CR>
<BAD-ARREST?>)
(T
<FZ-EXCUSES>)>>
<GLOBAL NO-FROBNIAN
"Nobody responds. Maybe it is your accent, or maybe you should reread
your phrase book, or just maybe nobody's interested.">
<ROUTINE SIIF ("AUX" PTR (LEN 0) FLEN (FOFF 0) FEXP TMP FWRD FWLEN)
<SET PTR <GET ,OOPS-TABLE ,O-CONT>>
<SET TMP <GET ,OOPS-TABLE ,O-LEN>>
<REPEAT ()
<COND (<OR <EQUAL? <GET ,P-LEXV .PTR> ,W?QUOTE>
<L? <SET TMP <- .TMP 1>> 0>>
<RETURN>)
(T
<SET LEN <+ .LEN 1>>
<SET PTR <+ .PTR 2>>)>>
<SET FLEN <GET ,FROBNIAN 0>>
<REPEAT ()
<COND (<G? <SET FOFF <+ .FOFF 1>> .FLEN>
<COND (,BUMPER-FLAG
<TELL
"The " D ,BUMPER-FLAG " looks confused. It doesn't appear that your
Frobnian has made a big impression." CR>
<SETG BAD-SPEAKING T>
<BAD-ARREST?>)
(T
<TELL ,NO-FROBNIAN CR>)>
<RTRUE>)
(T
<SET FEXP <GET ,FROBNIAN .FOFF>>
<COND (<EQUAL? <SET FWLEN
<GET <SET FWRD <GET .FEXP 0>>
0>>
.LEN>
;"Right length"
<SET TMP 0>
<SET PTR <GET ,OOPS-TABLE ,O-CONT>>
<REPEAT ()
<COND (<G? <SET TMP <+ .TMP 1>> .FWLEN>
<SET TMP -1>
<RETURN>)
(<EQUAL? <GET .FWRD .TMP>
<GET ,P-LEXV .PTR>>
<SET PTR <+ .PTR 2>>)
(T
<RETURN>)>>
<COND (<L? .TMP 0>
<SET FOFF -1>)>)>)>
<COND (<L? .FOFF 0>
<APPLY <GET .FEXP 1>>
<RTRUE>)>>>