3627 lines
118 KiB
Plaintext
3627 lines
118 KiB
Plaintext
|
|
"BAD for
|
|
BORDER ZONE
|
|
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
|
|
|
|
;"The BAD scenario..."
|
|
|
|
<GLOBAL CLOCK-TBL-3 <TABLE I-TOWER 32767
|
|
I-FUSE 32767
|
|
I-ASSASSINATION 1080
|
|
I-FESTIVITIES 60
|
|
I-TOPAZ 32767
|
|
I-ELEVATOR-ARRIVES 32767>>
|
|
<CONSTANT CLOCK-INTS-3 6>
|
|
|
|
<CONSTANT I-ASSASSINATION-OFF 5>
|
|
<CONSTANT I-TOPAZ-OFF 9>
|
|
<CONSTANT I-ELEVATOR-OFF 11>
|
|
|
|
<ROUTINE TOPAZ-THOUGHT ("OPTIONAL" (CR <>))
|
|
<COND (,TOPAZ-THOUGHT-STR
|
|
<COND (<EQUAL? .CR 1> <CRLF>)
|
|
(<NOT .CR> <TELL " ">)>
|
|
<TELL ,TOPAZ-THOUGHT-STR>
|
|
<SETG TOPAZ-THOUGHT-STR <>>
|
|
<RTRUE>)>>
|
|
|
|
;<ROUTINE BACKTRACKING? (OLD-HERE "AUX" (L <LOC ,TOPAZ>))
|
|
<REPEAT ()
|
|
<COND (<EQUAL? .L ,HERE> <RTRUE>)
|
|
(<EQUAL? .L .OLD-HERE 0> <RFALSE>)>
|
|
<SET L <GETP .L ,P?PATH>>>>
|
|
|
|
<GLOBAL TOPAZ-THOUGHT-STR
|
|
"You consider telling Topaz who and what you are, but it is too
|
|
dangerous; your own men are probably swarming the area, and any
|
|
contact with Topaz would blow your cover wide open.">
|
|
|
|
<OBJECT BAD-GUN
|
|
(DESC "Gurthark Mark VI revolver")
|
|
(SYNONYM PISTOL GUN REVOLVER GURTHARK)
|
|
(ADJECTIVE GURTHARK AUTOMATIC MARK VI)
|
|
(FLAGS TAKEBIT)
|
|
(ACTION BAD-GUN-F)>
|
|
|
|
<ROUTINE BAD-GUN-F ()
|
|
<COND (<VERB? POINT>
|
|
<GUN-POINT>)
|
|
(<VERB? DROP THROW PUT>
|
|
<TELL
|
|
"You might need it later. Better keep it around." CR>)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
"It's your Russian-made Gurthark Mark VI 45-caliber revolver. Not
|
|
exactly standard issue, but clearly a Soviet product." CR>)>>
|
|
|
|
<OBJECT BAD-WATCH
|
|
(DESC "wristwatch")
|
|
(SYNONYM CLOCK WATCH WRISTWATCH)
|
|
(ADJECTIVE WRIST)
|
|
(FLAGS WEARBIT WORNBIT READBIT)
|
|
(ACTION BAD-WATCH-F)>
|
|
|
|
<ROUTINE BAD-WATCH-F ()
|
|
<COND (<VERB? DROP TAKE-OFF>
|
|
<TELL
|
|
"Time is critical - it would be foolish to be without your watch." CR>)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
"It's a Frotzni, a brand almost as popular in Frobnia as the Urbak." CR>)
|
|
(<VERB? READ>
|
|
<TELL
|
|
"You can read the time on your status line." CR>)>>
|
|
|
|
<ROUTINE I-ASSASSINATION ()
|
|
<HLIGHT ,H-BOLD>
|
|
<CRLF>
|
|
<COND (<EQUAL? ,HERE ,SNIPER-ROOM>
|
|
<JIGS-UP
|
|
"The sniper squeezes the trigger twice, and the sound echoes through
|
|
the room. Your agents have chosen well - Huttinger is dead, and you have
|
|
failed in your mission.">)
|
|
(<SQUARE-VIEW?>
|
|
<JIGS-UP
|
|
"A shot rings out, then another. The sound echoes through the square,
|
|
followed by a different one, the sound of screams, then sirens. Police
|
|
run onto the dais, as the body of the American ambassador is carried off
|
|
on a stretcher. By instinct, you know he is already dead.">)
|
|
(T
|
|
<JIGS-UP
|
|
"In the direction of the square, you hear the sound of shots being
|
|
fired. You needn't be told what has happened - your agents are quite
|
|
thorough - the ambassador is dead.">)>>
|
|
|
|
<ROUTINE I-FESTIVITIES ("AUX" STR FC)
|
|
<SET FC <+ </ ,CLOCK-TIME 60> 1>>
|
|
<COND (,FIGHT-IN-PROGRESS
|
|
<SET STR <GET ,FESTIVITIES-F .FC>>)
|
|
(<OR <SQUARE-VIEW?>
|
|
<EQUAL? <SET STR <GET ,FESTIVITIES .FC>> -1>>
|
|
<SET STR <GET ,FESTIVITIES-SQ .FC>>)>
|
|
<COND (.STR <BOLDTELL .STR>)>>
|
|
|
|
<GLOBAL FESTIVITIES-SQ <PLTABLE
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
"The town's fifteenth century clock strikes the hour, indicating that the
|
|
ceremonies are shortly to commence."
|
|
"You watch as the mayor of Ostnitz comes to the podium at the front of the
|
|
dais. He motions for the crowd to be silent for the playing of the national
|
|
anthem."
|
|
"The anthem finished, the mayor calls upon the head of the church of
|
|
Litzenburg to give a benediction."
|
|
"The priest departs, and the mayor announces the \"kickoff\" speaker,
|
|
William Henry Huttinger, the American ambassador. Amidst
|
|
the roaring approval of the crowd, Huttinger approaches the rostrum.|
|
|
|
|
|
It may seem strange for an unaligned country to show such feeling for a
|
|
former member of the American military, but it was Huttinger
|
|
who led the Allied forces during the liberation of Litzenburg in 1945,
|
|
and the people have not forgotten.|
|
|
|
|
|
How ironic that the Kremlin chose this time, this place for the death
|
|
of one of Litzenburg's only heroes. Even more ironic is that the irony is
|
|
almost certainly lost on them."
|
|
"Having calmed down the crowd, Huttinger begins to speak. The words seem
|
|
to careen through your head but make little impact - there are only
|
|
moments now in which to act."
|
|
"">>
|
|
|
|
<GLOBAL FESTIVITIES-F <PLTABLE
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
"The town's fifteenth century clock strikes the hour."
|
|
"You notice that the crowd has become quiet. After a moment, the national
|
|
anthem begins to play."
|
|
"The anthem is now finished, and after a few moments, a benediction is
|
|
read."
|
|
"The mayor announces the \"kickoff\" speaker, William Henry Huttinger, the
|
|
American ambassador. The crowd roars its approval; you've got only moments
|
|
before it will be too late to save him!"
|
|
"Huttinger begins to speak. The words seem to careen through your head but
|
|
make little impact - you have only moments in which to act."
|
|
"Huttinger continues to speak, and the crowd responds with enthusiasm,
|
|
interrupting him frequently.">>
|
|
|
|
<GLOBAL FESTIVITIES <PLTABLE
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
<>
|
|
-1
|
|
"The crowd noise subsides and the national anthem is begun."
|
|
-1
|
|
-1
|
|
-1
|
|
-1>>
|
|
|
|
<ROUTINE SQUARE-VIEW? ()
|
|
<INTBL? ,HERE <REST ,SQUARE-VIEWS 2> <GET ,SQUARE-VIEWS 0>>>
|
|
|
|
<GLOBAL SQUARE-VIEWS
|
|
<PLTABLE BLDG-6 BLDG-5 SQUARE-NW BLDG-1 ALLEY-1 BLDG-2
|
|
SQUARE-SW BLDG-3 BLDG-4 TOWN-SQUARE>>
|
|
|
|
<OBJECT MATCHES
|
|
(DESC "matchbook")
|
|
(SYNONYM MATCH MATCHES MATCHBOOK BOOK)
|
|
(FLAGS TAKEBIT)
|
|
(SIZE 2)
|
|
(ACTION MATCHES-F)>
|
|
|
|
<ROUTINE MATCHES-F ()
|
|
<COND (<VERB? ON KILL REMOVE>
|
|
<TELL
|
|
"You've tried this before on the train - the matches don't work; perhaps
|
|
that's why they're given out for free. The mystery is why you're still
|
|
holding on to them." CR>)
|
|
(<VERB? OPEN CLOSE>
|
|
<TELL
|
|
"The matchbook has no cover; anyone concerned about safety wouldn't be
|
|
riding the Frobnian National Railroad anyway." CR>)
|
|
(<VERB? READ EXAMINE>
|
|
<TELL
|
|
"The matchbook bears the logo of the Frobnian National Railway with
|
|
its motto, \"You will ride with us.\"" CR>)>>
|
|
|
|
<OBJECT CIGARETTE
|
|
(DESC "cigarette")
|
|
(SYNONYM CIGARETTE)
|
|
(FLAGS TAKEBIT)
|
|
(SIZE 2)
|
|
(ACTION CIGARETTE-F)>
|
|
|
|
<ROUTINE CIGARETTE-F ()
|
|
<COND (<VERB? ON>
|
|
<TELL
|
|
"You haven't a lighter and the matches you're carrying have proven themselves
|
|
useless; there'll be more time for a smoke after
|
|
you finish your mission." CR>)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
"This cigarette is your last; you haven't had enough time to buy another
|
|
pack since the fiasco on the train." CR>)>>
|
|
|
|
|
|
<ROOM EDGE-NW
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Street Corner")
|
|
(FDESC "the corner or Brzni and Fremzi")
|
|
(LDESC
|
|
"You are at the corner of Brzni, running east-west, and Besnap, running
|
|
north and south. The town square can be reached east along Brzni.")
|
|
(NORTH SORRY
|
|
"You would be getting rather far from the action, and you've no time to
|
|
spare getting sidetracked.")
|
|
(WEST SORRY
|
|
"You would be getting rather far from the action, and you've no time to
|
|
spare getting sidetracked.")
|
|
(SOUTH PER BB1-MOVE)
|
|
(EAST TO BLDG-7 IF FALSE-FLAG ELSE
|
|
"You continue along Brzni Street, arriving in front of a closed hardware
|
|
store. The street continues east.")>
|
|
|
|
<ROOM BEHIND-BLDG-1
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Behind Apartments")
|
|
(FDESC "back side of the apartment building")
|
|
(LDESC
|
|
"You are behind the apartment building; there is no access to the inside from
|
|
this street. Fremzi continues north and south here; a vacant lot lies to the
|
|
west.")
|
|
(NORTH TO EDGE-NW IF FALSE-FLAG ELSE
|
|
"You continue down Fremzi Street, coming to the intersection with Brzni
|
|
Street, which runs east toward the square.")
|
|
(SOUTH TO EDGE-W IF FALSE-FLAG ELSE
|
|
"You are now moving down Fremzi Street, just between Brzni Street to the
|
|
north and Besnap Street to the south. The apartment building and office
|
|
building lie to your northeast and southeast respectively, but there is
|
|
no access here to either. A vacant lot lies to the west.")
|
|
(WEST SORRY
|
|
"You would be getting rather far from the action, and you've no time to
|
|
spare getting sidetracked.")
|
|
(EAST SORRY
|
|
"There's no way into the apartment building from here.")>
|
|
|
|
<ROUTINE BB2-MOVE ()
|
|
<BB1-MOVE ,BEHIND-BLDG-2>>
|
|
|
|
<ROUTINE BB1-MOVE ("OPTIONAL" (RM ,BEHIND-BLDG-1))
|
|
<TELL
|
|
"You continue down Fremzi street, stopping behind the ">
|
|
<COND (<EQUAL? .RM ,BEHIND-BLDG-1>
|
|
<TELL "apartment">)
|
|
(T
|
|
<TELL "office">)>
|
|
<TELL " building
|
|
whose entrance would be on Ostnitz Street. There is no entrance here. Across
|
|
the street, to the west, lies a vacant lot." CR>
|
|
<SETG DONT-DESCRIBE-ROOM T>
|
|
.RM>
|
|
|
|
<ROOM EDGE-W
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Near Empty Lot")
|
|
(FDESC "spot directly across from the vacant lot")
|
|
(LDESC
|
|
"You are on Fremzi Stret, halfway between Brzni to the north and Besnap
|
|
to the south. A vacant lot sits to the west; two buildings rise to the
|
|
northeast and southeast, but access to the inside is on Ostnitz Street.")
|
|
(NORTH PER BB1-MOVE)
|
|
(SOUTH PER BB2-MOVE)
|
|
(WEST SORRY
|
|
"You would be getting rather far from the action, and you've no time to
|
|
spare getting sidetracked.")
|
|
(NE SORRY "You can't enter the apartment building from here.")
|
|
(SE SORRY "You can't enter the office building from here.")
|
|
(EAST SORRY
|
|
"There's just a wall there, papered with various uninteresting posters.")>
|
|
|
|
<ROOM BEHIND-BLDG-2
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Behind Offices")
|
|
(FDESC "back side of the office building")
|
|
(LDESC
|
|
"You are behind the office building; there is no access to the inside from
|
|
this street. Fremzi continues north and south here; a vacant lot lies to the
|
|
west.")
|
|
(NORTH TO EDGE-W IF FALSE-FLAG ELSE
|
|
"You are now moving down Fremzi Street, just between Brzni Street to the
|
|
north and Besnap Street to the south. The apartment building and office
|
|
building lie to your northeast and southeast respectively, but there is
|
|
no access here to either. A vacant lot lies to the west.")
|
|
(SOUTH TO EDGE-SW IF FALSE-FLAG ELSE
|
|
"You continue along the street to the corner of Besnap and Fremzi;
|
|
crowds of people are now heading east through this intersection on
|
|
their way to the square.")
|
|
(EAST SORRY
|
|
"There's no way into the office building from here.")
|
|
(WEST SORRY
|
|
"You would be getting rather far from the action, and you've no time to
|
|
spare getting sidetracked.")>
|
|
|
|
<ROOM EDGE-SW
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Street Corner")
|
|
(FDESC "corner of Besnap and Fremzi")
|
|
(LDESC
|
|
"You stand at the corner of Besnap and Fremzi, away from the throngs that
|
|
have gathered in Ostnitz Square to the east. Fremzi can be followed to the
|
|
north and, for a short ways, to the south, while Besnap is cordoned
|
|
off to the west. A large vacant lot lies to the northwest.")
|
|
(NORTH PER BB2-MOVE)
|
|
(SOUTH TO ANTIQUE-SIDE IF FALSE-FLAG ELSE
|
|
"You move down Fremzi Street, stopping just short of a police barricade.
|
|
Some uniformed police watch you casually; these are probably crowd control
|
|
officers, restricting access to the site of the festivities. A closed
|
|
metal door lies to the east.")
|
|
(WEST SORRY
|
|
"You would be getting rather far from the action, and you've no time to
|
|
spare getting sidetracked.")
|
|
(EAST TO BLDG-8 IF FALSE-FLAG ELSE
|
|
"You continue along Besnap Street until you come to the front of an
|
|
antique shop. The sign outside says:|
|
|
|
|
|
Riznik's Antiques|
|
|
Rare Books and Curios|
|
|
|
|
|
The gathering crowd which surrounds you continues its relentless push toward
|
|
Ostnitz Square to the east.")
|
|
(GLOBAL BARRICADE POLICE)>
|
|
|
|
<ROOM BLDG-8
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Outside Antique Shop")
|
|
(FDESC "antique shop")
|
|
(LDESC
|
|
"You're standing on Besnap Street, just outside the entrance to Riznik's
|
|
Antique Shop. The crowd here continues to push eastward toward Ostnitz
|
|
Square, but you can continue westward to a less congested spot.")
|
|
(NORTH SORRY
|
|
"You would be getting rather far from the action, and you've no time to
|
|
spare getting sidetracked.")
|
|
(IN-DIR P?SOUTH)
|
|
(SOUTH PER ANTIQUE-ENTER)
|
|
(EAST TO SQUARE-SW IF FALSE-FLAG ELSE
|
|
"You continue along the street, jostled every few moments by the surging
|
|
crowd, and stop at the intersection of Besnap Street (going east-west) and
|
|
Ostnitz Street (going north-south), at the southwest corner of Ostnitz
|
|
Square. The Square itself is packed with people awaiting the start of
|
|
the Constitution Day festivities.")
|
|
(WEST TO EDGE-SW IF FALSE-FLAG ELSE
|
|
"You continue along the street to the corner of Besnap and Fremzi;
|
|
crowds of people are now heading east through this intersection on
|
|
their way to the square.")>
|
|
|
|
<OBJECT BUILDING
|
|
(LOC GLOBAL-OBJECTS)
|
|
(DESC "building")
|
|
(SYNONYM BUILDING SHOP STORE STOREFRONT BOOKSTORE)
|
|
(ADJECTIVE APARTMENT OFFICE CHEMIST\'S BOOK TAILOR\'S
|
|
HARDWARE ANTIQUE)
|
|
(ACTION BUILDING-F)>
|
|
|
|
<ROUTINE BUILDING-F ()
|
|
<COND (<VERB? ENTER>
|
|
<COND (<EQUAL? ,HERE ,BLDG-8 ,BLDG-3 ,BLDG-4>
|
|
<DO-WALK ,P?SOUTH>)
|
|
(<EQUAL? ,HERE ,BLDG-7 ,BLDG-6 ,BLDG-5>
|
|
<DO-WALK ,P?NORTH>)
|
|
(<EQUAL? ,HERE ,BLDG-1 ,BLDG-2>
|
|
<DO-WALK ,P?WEST>)
|
|
(<EQUAL? ,HERE ,BEHIND-BLDG-1 ,BEHIND-BLDG-2>
|
|
<DO-WALK ,P?EAST>)
|
|
(<FSET? ,HERE ,PENBIT>
|
|
<DO-WALK ,P?IN>)
|
|
(<EQUAL? ,HERE ,HALL-2 ,HALL-3 ,HALL-4>
|
|
<TELL
|
|
"There are apartments to the east and west; which one do you want to
|
|
enter?" CR>)
|
|
(T
|
|
<TELL "There's no ">
|
|
<COND (<NOT <EQUAL? ,HERE ,HALL-1>>
|
|
<TELL "building">)
|
|
(T
|
|
<TELL "apartment">)>
|
|
<TELL " to enter here." CR>)>)
|
|
(<VERB? LOOK-INSIDE>
|
|
<COND (<EQUAL? ,HERE ,BLDG-8>
|
|
<TELL
|
|
"It's hard to tell much from here, though it appears that ">
|
|
<COND (,ANTIQUE-FLAG
|
|
<TELL "the shop is closed">)
|
|
(T
|
|
<TELL "Riznik is inside">
|
|
<COND (<IN? ,CUSTOMER ,ANTIQUE-SHOP>
|
|
<TELL ", talking to a customer">)>)>
|
|
<TELL ,PERIOD-CR>)
|
|
(T
|
|
<TELL
|
|
"You'll have to get closer, and perhaps even enter the building for
|
|
that." CR>)>)
|
|
(<AND <VERB? EXAMINE>
|
|
<EQUAL? <GET ,P-ADJW 0> ,W?APARTMENT>>
|
|
<TELL
|
|
"You'd get the best view of the apartment building from the town
|
|
square." CR>)>>
|
|
|
|
<OBJECT ANTIQUE-SIGN
|
|
(LOC BLDG-8)
|
|
(DESC "sign")
|
|
(SYNONYM SIGN)
|
|
(FLAGS READBIT NDESCBIT)
|
|
(ACTION ANTIQUE-SIGN-F)>
|
|
|
|
<ROUTINE ANTIQUE-SIGN-F ()
|
|
<COND (<VERB? READ EXAMINE>
|
|
<TELL
|
|
"|
|
|
Riznik's Antiques|
|
|
Rare Books and Curios" CR>)>>
|
|
|
|
<ROOM ANTIQUE-SHOP
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Antique Shop")
|
|
(FDESC "inside of the antique shop")
|
|
(OUT-DIR P?NORTH)
|
|
(NORTH TO BLDG-8 IF FALSE-FLAG ELSE
|
|
"You leave the shop, and reenter the gathering crowd which surrounds you
|
|
in its relentless push toward Ostnitz Square to the east.")
|
|
(IN-DIR P?SOUTH)
|
|
(SOUTH PER COUNTER-ENTER)
|
|
(GLOBAL CURIOS RARE-BOOKS)
|
|
(ACTION ANTIQUE-SHOP-F)>
|
|
|
|
<ROUTINE ANTIQUE-SHOP-F (RARG)
|
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
|
<TELL
|
|
"The shop appears disorganized, with assorted antiques and bric-a-brac
|
|
seemingly strewn haphazardly around the floor. What better cover for
|
|
Riznik, one of the most meticulous and methodical agents it has been
|
|
your pleasure to know. He stands at the counter now, ">
|
|
<COND (<IN? ,CUSTOMER ,HERE>
|
|
<TELL "talking to a customer whose back
|
|
is to you; he averts his gaze - something's wrong!">)
|
|
(T
|
|
<TELL
|
|
"waving you toward him with a benevolent smile.">)>
|
|
<CRLF>)>>
|
|
|
|
<OBJECT CROWD
|
|
(LOC GLOBAL-OBJECTS)
|
|
(DESC "crowd of people")
|
|
(SYNONYM PEOPLE CROWD MASSES SPECTATORS TOURIST TOURISTS)
|
|
(SCENARIO 3)
|
|
(ACTION CROWD-F)>
|
|
|
|
<ROUTINE CROWD-F ()
|
|
<COND (<VERB? EXAMINE>
|
|
<COND (<EQUAL? ,HERE ,SNIPER-ROOM>
|
|
<TELL
|
|
"You look down at the square and nearby streets, which are practically
|
|
overflowing with people pressed up against the barricades." CR>)
|
|
(<NOT <IN-PUBLIC?>>
|
|
<TELL
|
|
"You can't see the crowd from here." CR>)
|
|
(T
|
|
<TELL
|
|
"The people are everywhere - tourists, businessmen, families - all
|
|
turned out to witness the days' festivities." CR>)>)>>
|
|
|
|
<ROOM ANTIQUE-STORAGE
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Storage Room")
|
|
(FDESC "storage room")
|
|
(WEST TO ANTIQUE-SIDE IF FALSE-FLAG ELSE
|
|
"You leave quietly through the side door, which closes behind you.
|
|
You're now on a
|
|
north-south street just around the corner from the store's entrance.
|
|
Just south of you stands a guarded police barricade.")
|
|
(OUT-DIR P?WEST)
|
|
(IN-DIR P?NORTH)
|
|
(NORTH SORRY "You would only be detained by the police.")
|
|
(GLOBAL CURIOS RARE-BOOKS)
|
|
(ACTION ANTIQUE-STORAGE-F)>
|
|
|
|
<ROUTINE ANTIQUE-STORAGE-F (RARG)
|
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
|
<TELL
|
|
"The room is small, dark, and cluttered. The door to the counter area is
|
|
slightly ajar, and through it you can hear the police questioning your
|
|
friend. He's doing his best, but they are persistent. A side door to the
|
|
street lies to the west." CR>)>>
|
|
|
|
<OBJECT CURIOS
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "curio")
|
|
(SYNONYM CURIO CURIOS ANTIQUES ANTIQUE)
|
|
(ADJECTIVE RARE)
|
|
(ACTION CURIOS-F)>
|
|
|
|
<ROUTINE CURIOS-F ("OPTIONAL" (FOO <>))
|
|
<COND (<VERB? EXAMINE>
|
|
<TELL
|
|
"You don't know much about ">
|
|
<COND (<NOT .FOO>
|
|
<TELL "antiques">)
|
|
(T
|
|
<TELL "rare books">)>
|
|
<TELL ", but some of the pieces look quite rare and
|
|
valuable. Someday, you will have to come here under more pleasant
|
|
circumstances." CR>)>>
|
|
|
|
<OBJECT RARE-BOOKS
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "rare book")
|
|
(SYNONYM BOOK BOOKS MANUSCRIPT FOLIO FOLIOS)
|
|
(ADJECTIVE RARE OLD)
|
|
(ACTION RARE-BOOKS-F)>
|
|
|
|
<ROUTINE RARE-BOOKS-F ()
|
|
<CURIOS-F T>>
|
|
|
|
<OBJECT ANTIQUE-SIDE-DOOR
|
|
(LOC ANTIQUE-STORAGE)
|
|
(DESC "side door")
|
|
(SYNONYM DOOR)
|
|
(ADJECTIVE SIDE)
|
|
(FLAGS DOORBIT NDESCBIT)>
|
|
|
|
<OBJECT ANTIQUE-COUNTER-DOOR
|
|
(LOC ANTIQUE-STORAGE)
|
|
(DESC "counter door")
|
|
(SYNONYM DOOR)
|
|
(ADJECTIVE COUNTER)
|
|
(FLAGS DOORBIT NDESCBIT)
|
|
(ACTION ANTIQUE-COUNTER-DOOR-F)>
|
|
|
|
<ROUTINE ANTIQUE-COUNTER-DOOR-F ()
|
|
<COND (<VERB? OPEN CLOSE>
|
|
<TELL
|
|
"The sound of the door ">
|
|
<COND (<VERB? OPEN> <TELL "open">)
|
|
(T <TELL "clos">)>
|
|
<TELL "ing alerts the police, who storm into
|
|
the back room and take you into custody." CR>
|
|
<JIGS-UP ,EPILOGUE-BAD-FAILS>)>>
|
|
|
|
<OBJECT ANTIQUE-CONVERSATION
|
|
(LOC ANTIQUE-STORAGE)
|
|
(DESC "conversation")
|
|
(SYNONYM CONVERSATION)
|
|
(FLAGS NDESCBIT)
|
|
(ACTION ANTIQUE-CONVERSATION-F)>
|
|
|
|
<ROUTINE ANTIQUE-CONVERSATION-F ()
|
|
<COND (<VERB? LISTEN FOLLOW EXAMINE>
|
|
<TELL
|
|
"You can't make out every word, but the police are questioning your friend
|
|
about certain acquaintences, affiliations, and the like." CR>)
|
|
(T
|
|
<TELL "Bizarre." CR>)>>
|
|
|
|
<ROOM ANTIQUE-SIDE
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Side Entrance")
|
|
(LDESC
|
|
"This is as far as you can go on Fremzi Stret, before running into the
|
|
police cordons. A metal door, closed and locked, lies to the east.
|
|
On it, a sign reads \"Riznik's Antiques - Deliveries Only\"")
|
|
(FDESC "side entrance of the antique store")
|
|
(IN-DIR P?EAST)
|
|
(EAST SORRY "The door is locked from the inside.")
|
|
(SOUTH SORRY
|
|
"You would be getting rather far from the action, and you've no time to
|
|
spare getting sidetracked.")
|
|
(NORTH TO EDGE-SW IF FALSE-FLAG ELSE
|
|
"You continue along the street to the corner of Besnap and Fremzi;
|
|
crowds of people are now heading east through this intersection on
|
|
their way to the square.")
|
|
(GLOBAL POLICE BARRICADE)>
|
|
|
|
<OBJECT POLICE
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "police")
|
|
(SYNONYM POLICE POLICEMAN)
|
|
(ACTION POLICE-F)>
|
|
|
|
<ROUTINE POLICE-F ()
|
|
<COND (<VERB? EXAMINE>
|
|
<TELL
|
|
"They are ordinary policemen, here to provide extra security for the
|
|
day's events." CR>)
|
|
(<VERB? TELL CALL YELL HELLO>
|
|
<TELL
|
|
"There is no reason to call attention to yourself; you're famous enough
|
|
that they might recognize you and take you in for questioning." CR>
|
|
<COND (<VERB? TELL> <STOP>)>
|
|
<RTRUE>)>>
|
|
|
|
<OBJECT BARRICADE
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "barricade")
|
|
(SYNONYM BARRICADE CORDON)>
|
|
|
|
<OBJECT ANTIQUE-STREET-DOOR
|
|
(LOC ANTIQUE-SIDE)
|
|
(DESC "metal door")
|
|
(SYNONYM DOOR)
|
|
(ADJECTIVE METAL)
|
|
(FLAGS DOORBIT NDESCBIT)
|
|
(ACTION ANTIQUE-STREET-DOOR-F)>
|
|
|
|
<ROUTINE ANTIQUE-STREET-DOOR-F ()
|
|
<COND (<VERB? UNLOCK OPEN>
|
|
<TELL
|
|
"You can't unlock or open the door from this side." CR>)
|
|
(<VERB? KNOCK>
|
|
<TELL
|
|
"You bang on the door for a while and get no response; it occurs to
|
|
you that Riznik, the antique dealer, and your contact, is hard of
|
|
hearing." CR>)>>
|
|
|
|
<ROUTINE I-CUSTOMER-LEAVES ()
|
|
<DE-RT-QUEUE>
|
|
<COND (<EQUAL? ,HERE ,ANTIQUE-SHOP>
|
|
<CRLF>
|
|
<HLIGHT ,H-BOLD>
|
|
<SETG P-WALK-DIR <>>
|
|
<PERFORM ,V?TELL ,CUSTOMER>
|
|
<RTRUE>)
|
|
(<EQUAL? ,HERE ,BLDG-8>
|
|
<BOLDTELL
|
|
"You watch as a man walks out of the antique shop. A moment later,
|
|
still in motion, he takes a walkie-talkie out of his pocket and
|
|
starts speaking into it. Within seconds, he is lost in the crowd. You
|
|
try to think, but you're certain you've never seen him before.">)>
|
|
<REMOVE ,CUSTOMER>>
|
|
|
|
<ROUTINE COUNTER-ENTER ()
|
|
<TELL
|
|
"You approach the counter ">
|
|
<COND (<IN? ,CUSTOMER ,ANTIQUE-SHOP>
|
|
<TELL "and the proprietor turns away anxiously." CR>
|
|
<SETG P-WALK-DIR <>>
|
|
<PERFORM ,V?TELL ,CUSTOMER>
|
|
<RFALSE>)
|
|
(T
|
|
<SETG ANTIQUE-FLAG T>
|
|
<TELL "and the proprietor comes out from behind it
|
|
to greet you. \"Welcome, my friend! How may I assist you? A clock,
|
|
perhaps? A music box?\" He smiles warmly, but, sensing your urgency,
|
|
stops abruptly. \"You are right to look worried. I am being watched. We
|
|
must be very careful now.\" You talk
|
|
quickly, giving him a condensed version of what has happened, and
|
|
why you are in need of information. He nods grimly, and
|
|
draws closer. \"Then the businessman on the train must have smuggled
|
|
the document across the border. You've seen the extra security, no doubt - the
|
|
authorities must know about our plan! The 'event' is at noon, as the
|
|
ambassador is speaking to the
|
|
crowd. If you're going to get near our sniper, you'll need the password - \"">
|
|
<TELL <GET ,SNIPER-PASSWORD-TBL ,SNIPER-CODE>>
|
|
<TELL "\"; he is positioned in a window
|
|
on the...|
|
|
|
|
|
At just this moment, two uniformed policemen enter. \"You must go. Through
|
|
the back!\" He shoves you forcibly through the door to the back room as
|
|
the men approach.|
|
|
|
|
|
The back room itself is small, dark, and cluttered. It's hard to tell the
|
|
difference, in fact, between what lies out front and what lies in here. The
|
|
door to the counter area is slightly ajar, and through it you can hear the
|
|
police questioning your friend. He's doing his best, but they are persistent.
|
|
It is not safe here any longer; the door to the street lies to the west.">)>
|
|
<RT-QUEUE ,I-POLICE-ENTER 95>
|
|
<CRLF>
|
|
<SETG DONT-DESCRIBE-ROOM T>
|
|
<COND (,CHASE-FLAG
|
|
<TELL CR
|
|
"A moment later, Topaz bursts into the shop and alerts the police
|
|
to your presence. Despite the protests of Riznik, they enter and take you
|
|
into custody." CR>
|
|
<JIGS-UP ,EPILOGUE-BAD-FAILS>)>
|
|
,ANTIQUE-STORAGE>
|
|
|
|
<ROUTINE I-POLICE-ENTER ()
|
|
<DE-RT-QUEUE>
|
|
<COND (<EQUAL? ,HERE ,ANTIQUE-STORAGE>
|
|
<HLIGHT ,H-BOLD>
|
|
<TELL CR
|
|
"The proprietor, unable to hold off the policemen any longer, reluctantly
|
|
lets them past the counter and into your hiding place. Finding you there,
|
|
they take you into custody." CR>
|
|
<JIGS-UP ,EPILOGUE-BAD-FAILS>)>>
|
|
|
|
<GLOBAL ANTIQUE-FLAG <>>
|
|
|
|
<ROOM ANTIQUE-COUNTER
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Antique Shop, Counter")
|
|
(OUT-DIR P?NORTH)
|
|
(NORTH TO ANTIQUE-SHOP)>
|
|
|
|
<OBJECT PROPRIETOR
|
|
(LOC ANTIQUE-SHOP)
|
|
(DESC "proprietor")
|
|
(SYNONYM PROPRIETOR AGENT CONTACT SPY MAN RIZNIK)
|
|
(ADJECTIVE OLD)
|
|
(FLAGS PERSON NDESCBIT)
|
|
(ACTION PROPRIETOR-F)>
|
|
|
|
<OBJECT COUNTER
|
|
(LOC ANTIQUE-SHOP)
|
|
(DESC "counter")
|
|
(SYNONYM COUNTER)
|
|
(FLAGS NDESCBIT)
|
|
(ACTION COUNTER-F)>
|
|
|
|
<ROUTINE COUNTER-F ()
|
|
<COND (<VERB? WALK-TO>
|
|
<DO-WALK ,P?SOUTH>
|
|
<RTRUE>)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
"The counter is clear of the odds-and-ends which are scattered around
|
|
the shop; the proprietor, your contact, is standing behind it." CR>)>>
|
|
|
|
<ROUTINE PROPRIETOR-F ()
|
|
<COND (<VERB? WALK-TO>
|
|
<DO-WALK ,P?SOUTH>
|
|
<RTRUE>)
|
|
(<VERB? TELL HELLO>
|
|
<COND (<IN? ,CUSTOMER ,HERE>
|
|
<PERFORM ,V?TELL ,CUSTOMER>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL
|
|
"It would be best to approach the man before talking." CR>
|
|
<STOP>)>)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
"The proprietor is well-known to you; he has been the KGB's local contact
|
|
here for over a dozen years. On the surface a warm, though bookish man, he
|
|
is in fact hard as nails." CR>)>>
|
|
|
|
<OBJECT CUSTOMER
|
|
(LOC ANTIQUE-SHOP)
|
|
(DESC "customer")
|
|
(SYNONYM CUSTOMER MAN)
|
|
(FLAGS PERSON NDESCBIT)
|
|
(ACTION CUSTOMER-F)>
|
|
|
|
<ROUTINE CUSTOMER-F ()
|
|
<COND (<VERB? WALK-TO>
|
|
<DO-WALK ,P?SOUTH>
|
|
<RTRUE>)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
"From here, it's difficult to tell much. Medium height, medium build,
|
|
nothing special. Could be anyone." CR>)
|
|
(<VERB? TELL TELL-ABOUT HELLO>
|
|
<TELL
|
|
"The customer turns around - his face doesn't register, but yours
|
|
apparently does. He reaches under his coat and pulls out a revolver.
|
|
\"You will come with me quietly,\" he begins. \"We do not wish any
|
|
trouble here today.\" With his free hand, he takes out his identification -
|
|
local police. Could they have been tipped off? Could Topaz have gotten
|
|
word across the border?" CR>
|
|
<JIGS-UP ,EPILOGUE-BAD-FAILS>)>>
|
|
|
|
<GLOBAL EPILOGUE-BAD-FAILS
|
|
"|
|
|
Epilogue|
|
|
|
|
|
You are taken to police headquarters, and it is there that you learn of
|
|
the successful assassination of the American ambassador. Back home, you are
|
|
commended for your work - drawing attention away from the assassins and
|
|
thereby helping assure the success of the mission. Sadly, you have failed
|
|
in your real mission, but perhaps there was really nothing you could have
|
|
done.|
|
|
">
|
|
|
|
<ROUTINE ANTIQUE-ENTER ()
|
|
<COND (,ANTIQUE-FLAG
|
|
<TELL
|
|
"The shop has been closed up; Riznik must have gotten out in a hurry." CR>
|
|
<RFALSE>)>
|
|
<TELL
|
|
"A jingling of bells announces your presence in the antique shop. You
|
|
close the door behind you, and find yourself in the midst of untold
|
|
thousands of antiques, curios, and just plain junk. Just south of your
|
|
position is the sales counter, behind which the proprietor is standing.
|
|
You recognize him at once; Riznik, your local contact in Ostnitz -
|
|
KGB through and through. He looks up at you">
|
|
<COND (<IN? ,CUSTOMER ,ANTIQUE-SHOP>
|
|
<TELL " nervously, and then starts talking again with
|
|
a customer whose back is toward you">)
|
|
(T
|
|
<TELL ", your face registering at once, and waves you
|
|
toward him with a smile">)>
|
|
<TELL ,PERIOD-CR>
|
|
<SETG DONT-DESCRIBE-ROOM T>
|
|
,ANTIQUE-SHOP>
|
|
|
|
<ROOM SQUARE-SW
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Ostnitz Square, SW")
|
|
(FDESC "southwest corner of Ostnitz square")
|
|
(LDESC
|
|
"Here, at the southwest corner of Ostnitz Square, you can walk down either
|
|
Besnap Street to the east and west, or Ostnitz Street to the north and
|
|
south. In the Square, thousands of people have gathered for the
|
|
festivities which are to begin at noon.")
|
|
(NORTH TO BLDG-2 IF FALSE-FLAG ELSE
|
|
"You continue through the crowds as you head down Ostnitz Street, stopping
|
|
finally in front of a sidewalk cafe. Waiters here in traditional red robes
|
|
cater to the mixed crowd of tourists and locals eager to watch the
|
|
festivities while sipping on a drink in the shade. Behind the cafe to
|
|
the west is the entrance to the building itself, which appears to be used as
|
|
office space. A pair of policemen guard the door - added security for the
|
|
occasion.")
|
|
(SOUTH SORRY
|
|
"You would be getting rather far from the action, and you've no time to
|
|
spare getting sidetracked.")
|
|
(EAST TO BLDG-3 IF FALSE-FLAG ELSE
|
|
"You continue along Besnap Street until you come to the front of a closed
|
|
bookstore. The street continues east; the town square is just to the north.")
|
|
(NE TO TOWN-SQUARE IF FALSE-FLAG ELSE
|
|
"You push your way through the crowd, reaching a spot near the middle of
|
|
the square where a graceful column stands, dedicated to the Litzenburgers
|
|
who died in the War of Independence which is celebrated here today.
|
|
Surrounding the square on all sides are stately buildings dating from the 18th
|
|
century, most of which now have storefronts on ground level.|
|
|
|
|
|
Stretching from northeast through southeast, a series of barricades has been
|
|
erected to separate the crowd from the dignitaries attending the ceremonies.
|
|
Hundreds of uniformed police guard the barricades, and scores of plainclothes
|
|
police are milling around nearby, heads cocked toward their earphones to
|
|
enable them to hear over the ever louder crowd. The dais is raised about
|
|
ten feet, and the dignitaries are just starting to take their positions.")
|
|
(WEST TO BLDG-8 IF FALSE-FLAG ELSE
|
|
"You continue along Besnap Street until you come to the front of an
|
|
antique shop. The sign outside says:|
|
|
|
|
|
Riznik's Antiques|
|
|
Rare Books and Curios|
|
|
|
|
|
The gathering crowd which surrounds you continues its relentless push toward
|
|
Ostnitz Square to the east.")>
|
|
|
|
<ROOM BLDG-3
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Bookstore")
|
|
(FDESC "bookstore")
|
|
(LDESC
|
|
"You are on Besnap Street in front of a closed bookstore. The street
|
|
continues east and west here; the town square lies to the north.")
|
|
(NORTH TO TOWN-SQUARE IF FALSE-FLAG ELSE
|
|
"You push your way through the crowd, reaching a spot near the middle of
|
|
the square where a graceful column stands, dedicated to the Litzenburgers
|
|
who died in the War of Independence which is celebrated here today.
|
|
Surrounding the square on all sides are stately buildings dating from the 18th
|
|
century, most of which now have storefronts on ground level.|
|
|
|
|
|
Stretching from northeast through southeast, a series of barricades has been
|
|
erected to separate the crowd from the dignitaries attending the ceremonies.
|
|
Hundreds of uniformed police guard the barricades, and scores of plainclothes
|
|
police are milling around nearby, heads cocked toward their earphones to
|
|
enable them to hear over the ever louder crowd. The dais is raised about
|
|
ten feet, and the dignitaries are just starting to take their positions.")
|
|
(SOUTH SORRY
|
|
"The shop is closed and locked, presumably due to the holiday. With all
|
|
of the security in the area, it is unlikely you could force your way in
|
|
without being detected.")
|
|
(IN-DIR P?SOUTH)
|
|
(EAST TO BLDG-4 IF FALSE-FLAG ELSE
|
|
"You continue along Besnap Street until you come to the front of a closed
|
|
tailor's shop. Police barricades block the street to the east; the town
|
|
square is just to the north.")
|
|
(WEST TO SQUARE-SW IF FALSE-FLAG ELSE
|
|
"You continue along the street, jostled every few moments by the surging
|
|
crowd, and stop at the intersection of Besnap Street (going east-west) and
|
|
Ostnitz Street (going north-south), at the southwest corner of Ostnitz
|
|
Square. The Square itself is packed with people awaiting the start of
|
|
the Constitution Day festivities.")>
|
|
|
|
<ROOM BLDG-4
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Tailor's Shop")
|
|
(FDESC "tailor's shop")
|
|
(LDESC
|
|
"You are on Besnap Street in front of a closed tailor's shop. Police
|
|
barricades block the street to the east, but you can continue west
|
|
easily enough. The square lies to the north.")
|
|
(NORTH TO TOWN-SQUARE IF FALSE-FLAG ELSE
|
|
"You push your way through the crowd, reaching a spot near the middle of
|
|
the square where a graceful column stands, dedicated to the Litzenburgers
|
|
who died in the War of Independence which is celebrated here today.
|
|
Surrounding the square on all sides are stately buildings dating from the 18th
|
|
century, most of which now have storefronts on ground level.|
|
|
|
|
|
Stretching from northeast through southeast, a series of barricades has been
|
|
erected to separate the crowd from the dignitaries attending the ceremonies.
|
|
Hundreds of uniformed police guard the barricades, and scores of plainclothes
|
|
police are milling around nearby, heads cocked toward their earphones to
|
|
enable them to hear over the ever louder crowd. The dais is raised about
|
|
ten feet, and the dignitaries are just starting to take their positions.")
|
|
(NW TO TOWN-SQUARE IF FALSE-FLAG ELSE
|
|
"You push your way through the crowd, reaching a spot near the middle of
|
|
the square where a graceful column stands, dedicated to the Litzenburgers
|
|
who died in the War of Independence which is celebrated here today.
|
|
Surrounding the square on all sides are stately buildings dating from the 18th
|
|
century, most of which now have storefronts on ground level.|
|
|
|
|
|
Stretching from northeast through southeast, a series of barricades has been
|
|
erected to separate the crowd from the dignitaries attending the ceremonies.
|
|
Hundreds of uniformed police guard the barricades, and scores of plainclothes
|
|
police are milling around nearby, heads cocked toward their earphones to
|
|
enable them to hear over the ever louder crowd. The dais is raised about
|
|
ten feet, and the dignitaries are just starting to take their positions.")
|
|
(SOUTH SORRY
|
|
"The shop is closed and locked, presumably due to the holiday. With all
|
|
of the security in the area, it is unlikely you could force your way in
|
|
without being detected.")
|
|
(IN-DIR P?SOUTH)
|
|
(EAST SORRY
|
|
"You move toward the barricade, then think twice as you see the line
|
|
of policemen blocking your way.")
|
|
(WEST TO BLDG-3 IF FALSE-FLAG ELSE
|
|
"You continue along Besnap Street until you come to the front of a closed
|
|
bookstore. The street continues west; the town square is just to the north.")
|
|
(GLOBAL BARRICADE POLICE)>
|
|
|
|
<OBJECT GLOBAL-BLDGS
|
|
(LOC GLOBAL-OBJECTS)
|
|
(DESC "building")
|
|
(SYNONYM BUILDINGS WINDOWS)
|
|
(SCENARIO 3)
|
|
(ACTION GLOBAL-BLDGS-F)>
|
|
|
|
<OBJECT GLOBAL-WINDOW
|
|
(LOC GLOBAL-OBJECTS)
|
|
(DESC "window")
|
|
(SCENARIO 3)
|
|
(ACTION GLOBAL-WINDOW-F)>
|
|
|
|
<ROUTINE GLOBAL-WINDOW-F ()
|
|
<COND (<VERB? EXAMINE LOOK-INSIDE>
|
|
<COND (<OR <EQUAL? ,HERE ,BLDG-8 ,BLDG-7 ,BLDG-6>
|
|
<EQUAL? ,HERE ,BLDG-5 ,BLDG-4 ,BLDG-3>
|
|
<EQUAL? ,HERE ,BLDG-2 ,BLDG-1>>
|
|
<PERFORM ,V?LOOK-INSIDE ,BUILDING>
|
|
<RTRUE>)
|
|
(T
|
|
<PERFORM ,V?EXAMINE ,GLOBAL-BLDGS>
|
|
<RTRUE>)>)>>
|
|
|
|
<ROUTINE GLOBAL-BLDGS-F ()
|
|
<COND (<VERB? EXAMINE LOOK-INSIDE>
|
|
<COND (<IN-PUBLIC?>
|
|
<TELL
|
|
"You look around at the various buildings and windows, and see nothing
|
|
of interest. Perhaps the best spot to survey the entire area would be
|
|
from the town square." CR>)
|
|
(T
|
|
<TELL
|
|
"You can't see much from where you're standing." CR>)>)>>
|
|
|
|
<OBJECT SQUARE-BUILDINGS
|
|
(LOC TOWN-SQUARE)
|
|
(DESC "building")
|
|
(SYNONYM BUILDING BUILDINGS WINDOW WINDOWS APARTMENT)
|
|
(ADJECTIVE APARTMENT)
|
|
(FLAGS NDESCBIT)
|
|
(ACTION SQUARE-BUILDINGS-F)>
|
|
|
|
<ROUTINE SQUARE-BUILDINGS-F ()
|
|
<COND (<VERB? EXAMINE WATCH LOOK-UP>
|
|
<TELL
|
|
"You scan the buildings, looking for something, anything, that might help
|
|
you locate the assassin. The only remarkable observation you can make is
|
|
that, despite the winter weather, the apartment building has three open
|
|
windows: ">
|
|
<PRINT-OPEN-WINDOWS>
|
|
<TELL ". It could be nothing - people watching the
|
|
ceremonies from their room, health fanatics in need of fresh air, or just
|
|
maybe a sniper lying in wait..." CR>)>>
|
|
|
|
<GLOBAL SNIPER-FLOOR 0>
|
|
|
|
<ROOM TOWN-SQUARE
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Ostnitz Square")
|
|
(FDESC "middle of Ostnitz Square")
|
|
(LDESC
|
|
"You are amidst a huge crowd which has poured into the square to better
|
|
see and hear the afternoon's events. From here, you can move in any
|
|
direction, albeit slowly, except toward the barricades to the east.
|
|
Behind the barricades, a raised dais has been constructed, and the
|
|
dignitaries are already in place. A tall column here commemorates
|
|
those who died in the Litzenburger war for independence.")
|
|
(EAST SORRY
|
|
"You move toward the barricade, then think twice as you see the line
|
|
of policemen blocking your way.")
|
|
(NE TO BLDG-6 IF FALSE-FLAG ELSE
|
|
"You leave the square, arriving at Brzni Street in front of a chemist's
|
|
shop. The street is blocked by barricades to the east, but it does continue
|
|
to the west.")
|
|
(NORTH TO BLDG-5 IF FALSE-FLAG ELSE
|
|
"You leave the square, arriving at Brzni Street in front of a vacant
|
|
storefront. The street continues east and west.")
|
|
(NW TO SQUARE-NW IF FALSE-FLAG ELSE
|
|
"You press through the crowd to the corner of Ostnitz and Brzni Streets.
|
|
A police barricade to the north effectively closes off Ostnitz Street
|
|
in that direction, but movement in other directions is simple enough,
|
|
if slow due to the crowd congestion.")
|
|
(WEST TO ALLEY-1 IF FALSE-FLAG ELSE
|
|
"You press through the crowd until you reach Ostnitz Street at a point
|
|
where a street vendor is busily peddling his wares - soda, pretzels,
|
|
and hot dogs. His cart is practically overflowing with food, but it's
|
|
a safe bet that it will all be gone before the afternoon is over. Behind
|
|
the cart, to the west, is a blind alley sandwiched between the apartment
|
|
building to your north and the office building to your south.")
|
|
(SW TO SQUARE-SW IF FALSE-FLAG ELSE
|
|
"You move through the crowd and finally leave the Square at its southwest
|
|
corner, at the intersection of Besnap Street (going east-west) and
|
|
Ostnitz Street (going north-south).")
|
|
(SOUTH TO BLDG-3 IF FALSE-FLAG ELSE
|
|
"You leave the square, arriving at Besnap Street in front of a closed
|
|
bookstore. The street continues east and west.")
|
|
(SE TO BLDG-4 IF FALSE-FLAG ELSE
|
|
"You leave the square, arriving at Besnap Street in front of a closed
|
|
tailor's shop. Police barricades block the street to the east.")
|
|
(GLOBAL BARRICADE POLICE)>
|
|
|
|
<OBJECT COLUMN
|
|
(LOC TOWN-SQUARE)
|
|
(DESC "tall column")
|
|
(SYNONYM COLUMN)
|
|
(ADJECTIVE TALL MEMORIAL)
|
|
(FLAGS NDESCBIT)
|
|
(ACTION COLUMN-F)>
|
|
|
|
<ROUTINE COLUMN-F ()
|
|
<COND (<VERB? EXAMINE>
|
|
<TELL
|
|
"The column is tall and graceful, rising seventy feet into the air.
|
|
It stands here to commemorate the War of Independence in which tens of
|
|
thousands of Litzenburgers gave their lives in the cause of freedom." CR>)>>
|
|
|
|
<OBJECT DAIS
|
|
(LOC TOWN-SQUARE)
|
|
(DESC "dais")
|
|
(SYNONYM DAIS PODIUM)
|
|
(FLAGS NDESCBIT)
|
|
(ACTION DAIS-F)>
|
|
|
|
<ROUTINE DAIS-F ()
|
|
<COND (<VERB? ENTER BOARD CLIMB-ON>
|
|
<TELL
|
|
"With the barricades and the police, you can't get near enough." CR>)>>
|
|
|
|
<OBJECT HUTTINGER
|
|
(LOC TOWN-SQUARE)
|
|
(DESC "Huttinger")
|
|
(SYNONYM HUTTINGER AMBASSADOR)
|
|
(ADJECTIVE AMBASSADOR)
|
|
(FLAGS NDESCBIT PERSON NOABIT NOTHEBIT)
|
|
(ACTION HUTTINGER-F)>
|
|
|
|
<ROUTINE HUTTINGER-F ()
|
|
<COND (<VERB? EXAMINE>
|
|
<TELL
|
|
"Huttinger is an imposing figure, tall and broad-shouldered, his white
|
|
mustache glistening in the sun. Everyone here reveres the man, and his
|
|
appearance, despite his advancing years, is as grand as his reputation." CR>)
|
|
(T
|
|
<DIGNITARIES-F>)>>
|
|
|
|
<OBJECT MAYOR
|
|
(LOC TOWN-SQUARE)
|
|
(DESC "mayor")
|
|
(SYNONYM MAYOR)
|
|
(FLAGS NDESCBIT PERSON)
|
|
(ACTION MAYOR-F)>
|
|
|
|
<ROUTINE MAYOR-F ()
|
|
<COND (<VERB? EXAMINE>
|
|
<TELL
|
|
"You don't recognize the mayor of Ostnitz, though he is obvious from his
|
|
ceremonial uniform." CR>)
|
|
(T
|
|
<DIGNITARIES-F>)>>
|
|
|
|
<OBJECT DIGNITARIES
|
|
(LOC TOWN-SQUARE)
|
|
(DESC "dignitary")
|
|
(SYNONYM DIGNITARIES DIGNITARY)
|
|
(FLAGS NDESCBIT PERSON)
|
|
(ACTION DIGNITARIES-F)>
|
|
|
|
<ROUTINE DIGNITARIES-F ()
|
|
<COND (<VERB? EXAMINE>
|
|
<TELL
|
|
"You don't recognize them, but many are in uniform, representing the
|
|
armed forces of Litzenburg. Others, no doubt, are foreigners who,
|
|
like Ambassador Huttinger, are taking part in the events of the day." CR>)
|
|
(<VERB? KILL HIT MUNG TELL HELLO>
|
|
<TELL
|
|
"You'd never get close enough for that." CR>
|
|
<COND (<VERB? TELL> <STOP>)>
|
|
<RTRUE>)>>
|
|
|
|
<ROOM BLDG-6
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Chemist's Shop")
|
|
(FDESC "chemist's shop")
|
|
(LDESC
|
|
"You are on Brzni Street, in front of a closed chemist's shop. Police
|
|
barricades block the street to the east, though it is easy, but slow,
|
|
going to the west. The town square lies to the south.")
|
|
(NORTH SORRY
|
|
"The shop is closed and locked, presumably due to the holiday. With all
|
|
of the security in the area, it is unlikely you could force your way in
|
|
without being detected.")
|
|
(IN-DIR P?NORTH)
|
|
(SOUTH TO TOWN-SQUARE IF FALSE-FLAG ELSE
|
|
"You push your way through the crowd, reaching a spot near the middle of
|
|
the square where a graceful column stands, dedicated to the Litzenburgers
|
|
who died in the War of Independence which is celebrated here today.
|
|
Surrounding the square on all sides are stately buildings dating from the 18th
|
|
century, most of which now have storefronts on ground level.|
|
|
|
|
|
Stretching from northeast through southeast, a series of barricades has been
|
|
erected to separate the crowd from the dignitaries attending the ceremonies.
|
|
Hundreds of uniformed police guard the barricades, and scores of plainclothes
|
|
police are milling around nearby, heads cocked toward their earphones to
|
|
enable them to hear over the ever louder crowd. The dais is raised about
|
|
ten feet, and the dignitaries are just starting to take their positions.")
|
|
(EAST SORRY
|
|
"You move toward the barricade, then think twice as you see the line
|
|
of policemen blocking your way.")
|
|
(WEST TO BLDG-5 IF FALSE-FLAG ELSE
|
|
"You continue down Brzni Street, arriving in front of a vacant
|
|
storefront. The street continues west.")
|
|
(SW TO TOWN-SQUARE IF FALSE-FLAG ELSE
|
|
"You push your way through the crowd, reaching a spot near the middle of
|
|
the square where a graceful column stands, dedicated to the Litzenburgers
|
|
who died in the War of Independence which is celebrated here today.
|
|
Surrounding the square on all sides are stately buildings dating from the 18th
|
|
century, most of which now have storefronts on ground level.|
|
|
|
|
|
Stretching from northeast through southeast, a series of barricades has been
|
|
erected to separate the crowd from the dignitaries attending the ceremonies.
|
|
Hundreds of uniformed police guard the barricades, and scores of plainclothes
|
|
police are milling around nearby, heads cocked toward their earphones to
|
|
enable them to hear over the ever louder crowd. The dais is raised about
|
|
ten feet, and the dignitaries are just starting to take their positions.")
|
|
(GLOBAL BARRICADE POLICE)>
|
|
|
|
<ROOM BLDG-5
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Empty Storefront")
|
|
(FDESC "empty storefront")
|
|
(LDESC
|
|
"You are on Brzni Street, in front of a vacant storefront. The street
|
|
continues east and west here; the town square lies to the south.")
|
|
(NORTH SORRY
|
|
"The shop is closed and locked, presumably due to the holiday. With all
|
|
of the security in the area, it is unlikely you could force your way in
|
|
without being detected.")
|
|
(IN-DIR P?NORTH)
|
|
(SOUTH TO TOWN-SQUARE IF FALSE-FLAG ELSE
|
|
"You push your way through the crowd, reaching a spot near the middle of
|
|
the square where a graceful column stands, dedicated to the Litzenburgers
|
|
who died in the War of Independence which is celebrated here today.
|
|
Surrounding the square on all sides are stately buildings dating from the 18th
|
|
century, most of which now have storefronts on ground level.|
|
|
|
|
|
Stretching from northeast through southeast, a series of barricades has been
|
|
erected to separate the crowd from the dignitaries attending the ceremonies.
|
|
Hundreds of uniformed police guard the barricades, and scores of plainclothes
|
|
police are milling around nearby, heads cocked toward their earphones to
|
|
enable them to hear over the ever louder crowd. The dais is raised about
|
|
ten feet, and the dignitaries are just starting to take their positions.")
|
|
(EAST TO BLDG-6 IF FALSE-FLAG ELSE
|
|
"You continue along Brzni until you reach the front of a closed chemist's
|
|
shop. Barricades block the way to the east; the town square lies to the
|
|
south.")
|
|
(WEST TO SQUARE-NW IF FALSE-FLAG ELSE
|
|
"You press through the crowd to the corner of Ostnitz and Brzni Streets.
|
|
A police barricade to the north effectively closes off Ostnitz Street
|
|
in that direction, but movement in other directions is simple enough,
|
|
if slow due to the crowd congestion.")>
|
|
|
|
<ROOM SQUARE-NW
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Ostnitz Square, NW")
|
|
(FDESC "northwest corner of Ostnitz Square")
|
|
(LDESC
|
|
"This is the corner of Brzni Street, running east and west, and Ostnitz
|
|
Street, running north and south along the western edge of Ostnitz Square.
|
|
Though congested, your way is clear in all directions, except to the
|
|
north, where police barricades block the street.")
|
|
(NORTH SORRY
|
|
"You would be getting rather far from the action, and you've no time to
|
|
spare getting sidetracked.")
|
|
(SOUTH TO BLDG-1 IF FALSE-FLAG ELSE
|
|
"You move down Ostnitz Street until you come to the entrance to an apartment
|
|
building. When you have seen this building before, it has been protected
|
|
by doormen; today, they have been replaced by police. Something is definitely
|
|
up here - even an occasion such as this would not normally require so much
|
|
extra security. Your mind races - could the plot have been uncovered?")
|
|
(EAST TO BLDG-5 IF FALSE-FLAG ELSE
|
|
"You continue down Brzni Street, arriving in front of a vacant
|
|
storefront. The street continues east.")
|
|
(WEST TO BLDG-7 IF FALSE-FLAG ELSE
|
|
"You continue along Brzni Street, arriving in front of a closed hardware
|
|
store. The street continues west.")
|
|
(SE TO TOWN-SQUARE IF FALSE-FLAG ELSE
|
|
"You push your way through the crowd, reaching a spot near the middle of
|
|
the square where a graceful column stands, dedicated to those
|
|
who died in the War of Independence. Atop the column, a fifteenth century
|
|
clock tolls the hours. Surrounding the square on all sides are stately
|
|
buildings dating from the time of the War, most of which now have storefronts
|
|
at ground level.|
|
|
|
|
|
Stretching from northeast through southeast, a series of barricades has been
|
|
erected to separate the crowd from the dignitaries attending the ceremonies.
|
|
Hundreds of uniformed police guard the barricades, and scores of plainclothes
|
|
police are milling around nearby, heads cocked toward their earphones to
|
|
enable them to hear over the ever louder crowd. The dais is raised about
|
|
ten feet, and the dignitaries are just starting to take their positions.")>
|
|
|
|
<ROOM BLDG-7
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Hardware Store")
|
|
(FDESC "hardware store")
|
|
(LDESC
|
|
"You are on Brzni Street, in front of a closed hardware store. The street
|
|
runs east-west here.")
|
|
(NORTH SORRY
|
|
"The shop is closed and locked, presumably due to the holiday. With all
|
|
of the security in the area, it is unlikely you could force your way in
|
|
without being detected.")
|
|
(IN-DIR P?NORTH)
|
|
(WEST TO EDGE-NW IF FALSE-FLAG ELSE
|
|
"You continue down Brzni Street, coming to the intersection with Fremzi
|
|
Street, which runs south alongside a vacant lot to the west.")
|
|
(EAST TO SQUARE-NW IF FALSE-FLAG ELSE
|
|
"You press through the crowd to the corner of Ostnitz and Brzni Streets.
|
|
A police barricade to the north effectively closes off Ostnitz Street
|
|
in that direction, but movement in other directions is simple enough,
|
|
if slow due to the crowd congestion.")>
|
|
|
|
<ROOM BLDG-1
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Apartment Building")
|
|
(FDESC "apartment building")
|
|
(LDESC
|
|
"You're standing outside of a prestigious apartment building. Two
|
|
policemen guard the entrance as added security for the afternoon's
|
|
events. The street here continues north and south, and the square lies
|
|
directly to your east.")
|
|
(NORTH TO SQUARE-NW IF FALSE-FLAG ELSE
|
|
"You press through the crowd to the corner of Ostnitz and Brzni Streets.
|
|
A police barricade to the north effectively closes off Ostnitz Street
|
|
in that direction, but movement in other directions is simple enough,
|
|
if slow due to the crowd congestion.")
|
|
(SOUTH TO ALLEY-1 IF FALSE-FLAG ELSE
|
|
"You press through the crowd until you reach Ostnitz Street at a point
|
|
where a street vendor is busily peddling his wares - soda, pretzels,
|
|
and hot dogs. His cart is practically overflowing with food, but it's
|
|
a safe bet that it will all be gone before the afternoon is over. Behind
|
|
the cart, to the west, is a blind alley sandwiched between the apartment
|
|
building to your north and the office building to your south.")
|
|
(EAST TO TOWN-SQUARE IF FALSE-FLAG ELSE
|
|
"You push your way through the crowd, reaching a spot near the middle of
|
|
the square where a graceful column stands, dedicated to the Litzenburgers
|
|
who died in the War of Independence which is celebrated here today.
|
|
Surrounding the square on all sides are stately buildings dating from the 18th
|
|
century, most of which now have storefronts on ground level.|
|
|
|
|
|
Stretching from northeast through southeast, a series of barricades has been
|
|
erected to separate the crowd from the dignitaries attending the ceremonies.
|
|
Hundreds of uniformed police guard the barricades, and scores of plainclothes
|
|
police are milling around nearby, heads cocked toward their earphones to
|
|
enable them to hear over the ever louder crowd. The dais is raised about
|
|
ten feet, and the dignitaries are just starting to take their positions.")
|
|
(WEST TO APARTMENT-LOBBY IF FALSE-FLAG ELSE
|
|
"You walk nonchalantly past the guards, nodding at them politely, and find
|
|
yourself in the lobby. An elevator lies to the north; its door is open and
|
|
the operator, an older woman, is standing inside. A directory, listing the
|
|
building's occupants, is standing here as well. You can leave the building
|
|
to the east.")
|
|
(IN-DIR P?WEST)
|
|
(SE TO TOWN-SQUARE IF FALSE-FLAG ELSE
|
|
"You push your way through the crowd, reaching a spot near the middle of
|
|
the square where a graceful column stands, dedicated to the Litzenburgers
|
|
who died in the War of Independence which is celebrated here today.
|
|
Surrounding the square on all sides are stately buildings dating from the 18th
|
|
century, most of which now have storefronts on ground level.|
|
|
|
|
|
Stretching from northeast through southeast, a series of barricades has been
|
|
erected to separate the crowd from the dignitaries attending the ceremonies.
|
|
Hundreds of uniformed police guard the barricades, and scores of plainclothes
|
|
police are milling around nearby, heads cocked toward their earphones to
|
|
enable them to hear over the ever louder crowd. The dais is raised about
|
|
ten feet, and the dignitaries are just starting to take their positions.")>
|
|
|
|
<OBJECT APARTMENT-GUARDS
|
|
(LOC BLDG-1)
|
|
(DESC "guard")
|
|
(SYNONYM GUARD GUARDS POLICE POLICEMAN)
|
|
(FLAGS PERSON NDESCBIT)
|
|
(ACTION APARTMENT-GUARDS-F)>
|
|
|
|
<ROUTINE APARTMENT-GUARDS-F ()
|
|
<COND (<VERB? EXAMINE>
|
|
<TELL
|
|
"They are evidently part of the beefed-up security that the police
|
|
have put in place for today's events." CR>)
|
|
(<VERB? CALL WAVE-AT YELL>
|
|
<TELL
|
|
"No sense calling attention to yourself." CR>)>>
|
|
|
|
<OBJECT DIRECTORY
|
|
(LOC APARTMENT-LOBBY)
|
|
(DESC "directory")
|
|
(SYNONYM DIRECTORY LIST LISTING)
|
|
(ADJECTIVE BUILDING APARTMENT)
|
|
(FLAGS NDESCBIT READBIT)
|
|
(ACTION DIRECTORY-F)>
|
|
|
|
<ROUTINE DIRECTORY-F ()
|
|
<COND (<VERB? EXAMINE READ>
|
|
<PRINT-APT-DIR>)>>
|
|
|
|
<ROOM APARTMENT-LOBBY
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Apartment Lobby")
|
|
(SDESC "lobby of the apartment building")
|
|
(LDESC
|
|
"This is the lobby of the apartment building; there is little of note here,
|
|
except for the elevator, whose door stands open to the north. In front of
|
|
you, a directory lists the occupants of the building. You can
|
|
exit the building to the east.")
|
|
(NORTH TO ELEVATOR-ROOM)
|
|
(IN-DIR P?NORTH)
|
|
(EAST TO BLDG-1 IF FALSE-FLAG ELSE
|
|
"You leave the apartment building, and return to Ostnitz Street, where
|
|
the crowd is packed in even tighter than before, especially east, in
|
|
the direction of the town square.")
|
|
(OUT-DIR P?EAST)
|
|
(GLOBAL ELEVATOR-DOOR ELEVATOR-OPERATOR ELEVATOR-BUTTON ELEVATOR POLICE)
|
|
(ACTION APARTMENT-LOBBY-F)>
|
|
|
|
<ROUTINE APARTMENT-LOBBY-F (RARG)
|
|
<COND (<EQUAL? .RARG ,M-ENTER>
|
|
<SETG HALL-FLOOR 1>)>>
|
|
|
|
<OBJECT ELEVATOR
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "elevator")
|
|
(SYNONYM ELEVATOR LIFT)
|
|
(ACTION ELEVATOR-F)>
|
|
|
|
<ROUTINE ELEVATOR-F ()
|
|
<COND (<VERB? CALL>
|
|
<COND (<FSET? ,ELEVATOR-DOOR ,OPENBIT>
|
|
<TOO-LATE>)
|
|
(<EQUAL? ,HERE ,HALL-1 ,HALL-2 ,HALL-3>
|
|
<TELL
|
|
"You'll have to do that from the end of the hallway." CR>)
|
|
(T
|
|
<PERFORM ,V?PUSH ,ELEVATOR-BUTTON>
|
|
<RTRUE>)>)
|
|
(<VERB? ENTER WALK-TO BOARD>
|
|
<DO-WALK ,P?NORTH>
|
|
<RTRUE>)
|
|
(<VERB? EXAMINE LOOK-INSIDE>
|
|
<COND (<OR <FSET? ,ELEVATOR-DOOR ,OPENBIT>
|
|
<EQUAL? ,HERE ,APARTMENT-LOBBY>>
|
|
<TELL
|
|
"The elevator door is open; an older woman, the operator, is standing
|
|
inside." CR>)
|
|
(T
|
|
<TELL
|
|
"The elevator isn't here now; you might try calling it." CR>)>)>>
|
|
|
|
<OBJECT ELEVATOR-OPERATOR
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "older woman")
|
|
(SYNONYM WOMAN OPERATOR)
|
|
(ADJECTIVE OLD OLDER)
|
|
(FLAGS PERSON)
|
|
(ACTION ELEVATOR-OPERATOR-F)>
|
|
|
|
<ROUTINE ELEVATOR-OPERATOR-F ()
|
|
<COND (<NOT <OR <EQUAL? ,HERE ,APARTMENT-LOBBY>
|
|
<FSET? ,ELEVATOR-DOOR ,OPENBIT>>>
|
|
<TELL
|
|
"You can't see the elevator operator here. Perhaps if you called
|
|
the elevator you'd have better luck." CR>)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
"She is an elderly woman, seventy years or more, wearing simple
|
|
clothes. She looks at you expectantly, waiting for you to enter." CR>)
|
|
(T
|
|
<TELL
|
|
"No use doing that." CR>)>>
|
|
|
|
<ROOM BLDG-2
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Sidewalk Cafe")
|
|
(FDESC "sidewalk in front of the cafe")
|
|
(NORTH TO ALLEY-1 IF FALSE-FLAG ELSE
|
|
"You press through the crowd until you reach Ostnitz Street at a point
|
|
where a street vendor is busily peddling his wares - soda, pretzels,
|
|
and hot dogs. His cart is practically overflowing with food, but it's
|
|
a safe bet that it will all be gone before the afternoon is over. Behind
|
|
the cart, to the west, is a blind alley sandwiched between the apartment
|
|
building to your north and the office building to your south.")
|
|
(SOUTH TO SQUARE-SW IF FALSE-FLAG ELSE
|
|
"You continue along the street, jostled every few moments by the surging
|
|
crowd, and stop at the intersection of Besnap Street (going east-west) and
|
|
Ostnitz Street (going north-south), at the southwest corner of Ostnitz
|
|
Square. The Square itself is packed with people awaiting the start of
|
|
the Constitution Day festivities.")
|
|
(WEST SORRY
|
|
"You consider trying to force your way into the building, but decide against
|
|
it, realizing that anything that calls attention to yourself will jeopardize
|
|
either your plan or your cover.")
|
|
(IN-DIR P?WEST)
|
|
(EAST TO TOWN-SQUARE IF FALSE-FLAG ELSE
|
|
"You push your way through the crowd, reaching a spot near the middle of
|
|
the square where a graceful column stands, dedicated to the Litzenburgers
|
|
who died in the War of Independence which is celebrated here today.
|
|
Surrounding the square on all sides are stately buildings dating from the 18th
|
|
century, most of which now have storefronts on ground level.|
|
|
|
|
|
Stretching from northeast through southeast, a series of barricades has been
|
|
erected to separate the crowd from the dignitaries attending the ceremonies.
|
|
Hundreds of uniformed police guard the barricades, and scores of plainclothes
|
|
police are milling around nearby, heads cocked toward their earphones to
|
|
enable them to hear over the ever louder crowd. The dais is raised about
|
|
ten feet, and the dignitaries are just starting to take their positions.")
|
|
(NE TO TOWN-SQUARE IF FALSE-FLAG ELSE
|
|
"You push your way through the crowd, reaching a spot near the middle of
|
|
the square where a graceful column stands, dedicated to the Litzenburgers
|
|
who died in the War of Independence which is celebrated here today.
|
|
Surrounding the square on all sides are stately buildings dating from the 18th
|
|
century, most of which now have storefronts on ground level.|
|
|
|
|
|
Stretching from northeast through southeast, a series of barricades has been
|
|
erected to separate the crowd from the dignitaries attending the ceremonies.
|
|
Hundreds of uniformed police guard the barricades, and scores of plainclothes
|
|
police are milling around nearby, heads cocked toward their earphones to
|
|
enable them to hear over the ever louder crowd. The dais is raised about
|
|
ten feet, and the dignitaries are just starting to take their positions.")
|
|
(ACTION BLDG-2-F)>
|
|
|
|
<OBJECT WAITERS
|
|
(LOC BLDG-2)
|
|
(DESC "waiter")
|
|
(SYNONYM WAITER WAITRESS)
|
|
(FLAGS NDESCBIT PERSON)
|
|
(ACTION WAITER-F)>
|
|
|
|
<ROUTINE WAITER-F ()
|
|
<COND (<VERB? CALL TELL HELLO>
|
|
<TELL
|
|
"The help is very busy here and there is a long line for service;
|
|
it would take a while to get their attention." CR>
|
|
<COND (<VERB? TELL> <STOP>)>
|
|
<RTRUE>)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
"The waiters, in ceremonial dress for the occasion, are quite busy and
|
|
are rushing to and fro trying to keep up with the customers." CR>)>>
|
|
|
|
<OBJECT CAFE-FOOD
|
|
(LOC BLDG-2)
|
|
(DESC "food")
|
|
(SYNONYM FOOD LUNCH MEAL EATS)
|
|
(FLAGS NDESCBIT)
|
|
(ACTION CAFE-FOOD-F)>
|
|
|
|
<ROUTINE CAFE-FOOD-F ()
|
|
<COND (<VERB? TAKE EAT BUY>
|
|
<TELL
|
|
"There is a long line for tables; it would take quite a while to
|
|
get a meal here." CR>)>>
|
|
|
|
<OBJECT CAFE-TABLE
|
|
(LOC BLDG-2)
|
|
(DESC "table")
|
|
(SYNONYM TABLE CHAIR SEAT)
|
|
(FLAGS NDESCBIT)
|
|
(ACTION CAFE-TABLE-F)>
|
|
|
|
<ROUTINE CAFE-TABLE-F ()
|
|
<COND (<VERB? SIT CLIMB-ON>
|
|
<TELL
|
|
"The tables are all full and there appears to be quite a wait." CR>)>>
|
|
|
|
<ROUTINE BLDG-2-F (RARG)
|
|
<COND (<AND <EQUAL? .RARG ,M-ENTER-DESC>
|
|
<NOT ,TOPAZ-FIGHT>
|
|
<IN? ,TOPAZ ,HERE>>
|
|
<RT-QUEUE ,I-TOPAZ-SPOTS 5 ,I-TOPAZ-OFF>
|
|
<COND (<NOT <FSET? ,TOPAZ ,TOUCHBIT>>
|
|
<FSET ,TOPAZ ,TOUCHBIT>
|
|
<TELL CR
|
|
"As you scan the cafe scene, you are taken aback by the sight of Topaz,
|
|
sitting at a table not thirty feet from you, sipping on a tall drink and
|
|
carefully watching the crowd. His left arm is in a sling, but he appears
|
|
completely alert and, perhaps, dangerous. It seems he hasn't seen you
|
|
yet." CR>)
|
|
(T
|
|
<TELL CR
|
|
"You look around, noticing that Topaz is still watchfully waiting at his
|
|
table at the cafe." CR>)>)
|
|
(<EQUAL? .RARG ,M-LOOK>
|
|
<TELL
|
|
"A sidewalk cafe sits here on Ostnitz Street facing the square to the east.
|
|
Behind it, on office building is guarded by two policemen. Ostnitz Street
|
|
continues north and south along the western edge of the square. Waiters
|
|
scurry around, hopelessly trying to keep pace with the crowd that has
|
|
gathered here looking for a drink and some shade." CR>
|
|
<COND (<AND <IN? ,TOPAZ ,HERE>
|
|
<FSET? ,TOPAZ ,NDESCBIT>>
|
|
<TELL CR
|
|
"Sitting at a table, not thirty feet away, is Topaz. His eyes take in the
|
|
crowd, but he hasn't spotted you yet." CR>)>
|
|
)>>
|
|
|
|
<ROUTINE I-TOPAZ-SPOTS ()
|
|
<COND (<OR ,TOPAZ-FIGHT ,CHASE-FLAG>
|
|
<RFALSE>)
|
|
(<G? <SETG TOPAZ-SPOT-COUNT <+ ,TOPAZ-SPOT-COUNT 1>> 6>
|
|
<BOLDTELL
|
|
"Topaz has spotted you! He's started to move away from his table and
|
|
rushes in your direction.">
|
|
<SETG I-FATAL T>
|
|
<START-CHASE>
|
|
<RTRUE>)
|
|
(T
|
|
<RT-QUEUE ,I-TOPAZ-SPOTS 5 ,I-TOPAZ-OFF>)>>
|
|
|
|
<ROOM ALLEY-1
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Street Vendor")
|
|
(FDESC "vendor's cart")
|
|
(NORTH TO BLDG-1 IF FALSE-FLAG ELSE
|
|
"You move down Ostnitz Street until you come to the entrance to an apartment
|
|
building. When you have seen this building before, it has been protected
|
|
by doormen; today, they have been replaced by police. Something is definitely
|
|
up here - even an occasion such as this would not normally have so much in
|
|
the way of security. You wonder if perhaps the plot has been uncovered.")
|
|
(SOUTH TO BLDG-2 IF FALSE-FLAG ELSE
|
|
"You continue through the crowds as you head down Ostnitz Street, stopping
|
|
finally in front of a sidewalk cafe. Waiters here in traditional red robes
|
|
cater to the mixed crowd of tourists and locals eager to watch the
|
|
festivities while sipping on a drink in the shade. Behind the cafe to
|
|
the west is the entrance to the building itself, which appears to be used as
|
|
office space. A pair of policemen guard the door - added security for the
|
|
occasion.")
|
|
(EAST TO TOWN-SQUARE IF FALSE-FLAG ELSE
|
|
"You push your way through the crowd, reaching a spot near the middle of
|
|
the square where a graceful column stands, dedicated to the Litzenburgers
|
|
who died in the War of Independence which is celebrated here today.
|
|
Surrounding the square on all sides are stately buildings dating from the 18th
|
|
century, most of which now have storefronts on ground level.|
|
|
|
|
|
Stretching from northeast through southeast, a series of barricades has been
|
|
erected to separate the crowd from the dignitaries attending the ceremonies.
|
|
Hundreds of uniformed police guard the barricades, and scores of plainclothes
|
|
police are milling around nearby, heads cocked toward their earphones to
|
|
enable them to hear over the ever louder crowd. The dais is raised about
|
|
ten feet, and the dignitaries are just starting to take their positions.")
|
|
(WEST PER ALLEY-MOVE)
|
|
(NE TO TOWN-SQUARE IF FALSE-FLAG ELSE
|
|
"You push your way through the crowd, reaching a spot near the middle of
|
|
the square where a graceful column stands, dedicated to the Litzenburgers
|
|
who died in the War of Independence which is celebrated here today.
|
|
Surrounding the square on all sides are stately buildings dating from the 18th
|
|
century, most of which now have storefronts on ground level.|
|
|
|
|
|
Stretching from northeast through southeast, a series of barricades has been
|
|
erected to separate the crowd from the dignitaries attending the ceremonies.
|
|
Hundreds of uniformed police guard the barricades, and scores of plainclothes
|
|
police are milling around nearby, heads cocked toward their earphones to
|
|
enable them to hear over the ever louder crowd. The dais is raised about
|
|
ten feet, and the dignitaries are just starting to take their positions.")
|
|
(SE TO TOWN-SQUARE IF FALSE-FLAG ELSE
|
|
"You push your way through the crowd, reaching a spot near the middle of
|
|
the square where a graceful column stands, dedicated to the Litzenburgers
|
|
who died in the War of Independence which is celebrated here today.
|
|
Surrounding the square on all sides are stately buildings dating from the 18th
|
|
century, most of which now have storefronts on ground level.|
|
|
|
|
|
Stretching from northeast through southeast, a series of barricades has been
|
|
erected to separate the crowd from the dignitaries attending the ceremonies.
|
|
Hundreds of uniformed police guard the barricades, and scores of plainclothes
|
|
police are milling around nearby, heads cocked toward their earphones to
|
|
enable them to hear over the ever louder crowd. The dais is raised about
|
|
ten feet, and the dignitaries are just starting to take their positions.")
|
|
(ACTION ALLEY-1-F)
|
|
(GLOBAL ALLEY SODA-CANS PRETZELS VENDOR-CART HOT-DOGS VENDOR)>
|
|
|
|
<ROUTINE ALLEY-MOVE ()
|
|
<TELL
|
|
"You move around the vendor's cart and enter the alley." CR CR>
|
|
,ALLEY-2>
|
|
|
|
<ROUTINE ALLEY-1-F (RARG)
|
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
|
<COND (,CART-TOPPLED?
|
|
<TELL
|
|
"The vendor's cart lies on its side here; soda cans and pretzels lie
|
|
all over the ground. The street runs north-south here, with the square
|
|
directly to the east.">)
|
|
(T
|
|
<TELL
|
|
"A street vendor's cart stands here, piled high with his wares -
|
|
soda cans, mostly, but also hot dogs and pretzels. The street runs
|
|
from north to south here, and the town square lies directly to your
|
|
east. People are everywhere, pushing up toward the square and the dais
|
|
from which the speakers will deliver their addresses.">)>
|
|
<CRLF>)>>
|
|
|
|
<OBJECT BUSINESS-CARD
|
|
(DESC "business card")
|
|
(SYNONYM CARD)
|
|
(ADJECTIVE BUSINESS)
|
|
(SIZE 2)
|
|
(FLAGS READBIT TAKEBIT)
|
|
(ACTION BUSINESS-CARD-F)>
|
|
|
|
<ROUTINE BUSINESS-CARD-F ()
|
|
<COND (<VERB? EXAMINE READ>
|
|
<CAN-BE-FOUND>)>>
|
|
|
|
<ROUTINE CAN-BE-FOUND ()
|
|
<TELL "The " D ,PRSO
|
|
" can be found in your BORDER ZONE package." CR>>
|
|
|
|
<OBJECT BAD-CLOTHES
|
|
(DESC "your clothes")
|
|
(SYNONYM CLOTHES SOCKS SHIRT PANTS CLOTHING CLOTH COAT)
|
|
(ADJECTIVE TRENCH)
|
|
(FLAGS NARTICLEBIT WORNBIT SEARCHBIT SURFACEBIT OPENBIT CONTBIT
|
|
NOTHEBIT NOABIT)
|
|
(ACTION BYSTANDER-CLOTHES-F)>
|
|
|
|
<ROUTINE START-CHASE ()
|
|
<SETG CHASE-FLAG T>
|
|
<SETG TOPPLE-CHASE ,CART-TOPPLED?>
|
|
<MOVE ,TOPAZ ,TOPAZ-ROOM>
|
|
<RT-QUEUE ,I-TOPAZ 30 ,I-TOPAZ-OFF>>
|
|
|
|
<ROOM TOPAZ-ROOM
|
|
(LOC ROOMS)
|
|
(DESC "Topaz Start Point")
|
|
(FDESC "table he was seated at")
|
|
(PATH BLDG-2)
|
|
(PATH-TIME 15)>
|
|
|
|
<ROUTINE I-TOPAZ-END ()
|
|
<HLIGHT ,H-BOLD>
|
|
<TELL CR
|
|
"Topaz, sensing your presence, swings around, and ">
|
|
<TOPAZ-KILLS>
|
|
<JIGS-UP " ">>
|
|
|
|
<ROUTINE TOPAZ-KILLS ()
|
|
<TELL
|
|
"fires twice, hitting you in the chest with both rounds. You fall backward
|
|
onto the floor, and Topaz approaches. \"That wasn't so awfully smart, you
|
|
know, leaving this " D <HALL-OBJECT? ,SNIPER-HALL> " for me to find.\" He chuckles.
|
|
He puts his gun to your head. \"For old times sake,\" he says, shrugging, and
|
|
fires.">>
|
|
|
|
<ROUTINE I-TOPAZ ("AUX" (L <LOC ,TOPAZ>) TIM NL)
|
|
<COND (<ZERO? .L> <RFALSE>)>
|
|
<MOVE ,TOPAZ <SET L <GETP .L ,P?PATH>>>
|
|
<COND (<AND <EQUAL? .L ,SNIPER-ROOM>
|
|
<HALL-OBJECT? ,SNIPER-HALL>>
|
|
<HLIGHT ,H-BOLD>
|
|
<TELL CR
|
|
"Without warning, Topaz bursts through the door, pistol raised, and
|
|
fires three rounds at the sniper, who slumps to the floor in a pool of
|
|
blood. ">
|
|
<SETG I-FATAL T>
|
|
<RT-QUEUE ,I-TOPAZ-END 20>
|
|
<COND (,HIDING-BEHIND-DOOR
|
|
<TELL "He pauses, body tensed, and takes a
|
|
hesitant step toward the window. He stops again; he's not three
|
|
feet in front of you.">
|
|
<REMOVE ,SNIPER>
|
|
<MOVE ,SNIPER-CORPSE ,HERE>
|
|
<DE-QUEUE ,I-ASSASSINATION-OFF>
|
|
<HLIGHT ,H-NORMAL>
|
|
<CRLF>)
|
|
(T
|
|
<TELL "In the same motion, he turns and ">
|
|
<TOPAZ-KILLS>
|
|
<JIGS-UP " ">)>)
|
|
(<EQUAL? .L ,SNIPER-ROOM>
|
|
<REMOVE ,TOPAZ>
|
|
<SETG TOPAZ-IN-HALL T>
|
|
<DE-QUEUE ,I-TOPAZ-OFF>
|
|
<DE-RT-QUEUE>
|
|
<DE-SLOW-CLOCK-QUEUE>
|
|
<BOLDTELL
|
|
"You try, but can hear nothing at all coming from the hallway. Topaz must
|
|
be close, but how close you can't determine.">)
|
|
(<EQUAL? .L ,HERE>
|
|
<HLIGHT ,H-BOLD>
|
|
<TELL CR "Topaz grabs hold of you ">
|
|
<COND (,ON-THE-CAN
|
|
<SETG ON-THE-CAN <>>
|
|
<TELL "by the pants and pulls you down off
|
|
the trash can.">)
|
|
(T
|
|
<TELL "and spins you around.">)>
|
|
<COND (<IN? ,CUSTOMER ,HERE>
|
|
<TELL CR
|
|
"The customer, appearing to recognize Topaz, pulls out a gun and
|
|
comes to his aid. Within moments, you are subdued." CR>
|
|
<JIGS-UP ,EPILOGUE-BAD-FAILS>)>
|
|
<TELL CR CR "Before you can react, he lands a quick
|
|
blow to your ribs, knocking you breathless. He's good, you think, though
|
|
he lacks experience. You smile fleetingly, knowing yourself to be a damn
|
|
good teacher.">
|
|
<HLIGHT ,H-NORMAL>
|
|
<CRLF>
|
|
<DE-RT-QUEUE>
|
|
<DE-QUEUE ,I-TOPAZ-OFF>
|
|
<SETG TOPAZ-FIGHT T>
|
|
<FSET ,TOPAZ ,OPENBIT>
|
|
<SETG CHASE-FLAG <>>
|
|
<REMOVE ,CUSTOMER>
|
|
<FCLEAR ,TOPAZ ,NDESCBIT>
|
|
;"No more chase..."
|
|
<SETG FIGHT-IN-PROGRESS T>
|
|
<I-CLOCKER 60>
|
|
<BOLDTELL
|
|
"The next blow is yours, and the next, but Topaz manages a few good shots
|
|
of his own. Time, time. Not much time, you think.">
|
|
<I-CLOCKER 60>
|
|
<HLIGHT ,H-BOLD>
|
|
<TELL CR
|
|
"You swing around, knocking Topaz to the ">
|
|
<COND (<OR <FSET? ,HERE ,PENBIT> <FSET? ,HERE ,HUTBIT>>
|
|
<TELL "floor">)
|
|
(T
|
|
<TELL "ground">)>
|
|
<TELL ", and then, a quick kick
|
|
to the head and he's out.">
|
|
<SETG FIGHT-IN-PROGRESS <>>
|
|
<COND (<IN-PUBLIC?>
|
|
<TELL
|
|
" You turn to leave, but a small crowd has formed around you. \"It's
|
|
alright. He tried to run off with my wallet, and I'm afraid I just got carried
|
|
away. Excuse me.\" You straighten yourself up and move away from the
|
|
onlookers.">)>
|
|
<HLIGHT ,H-NORMAL>
|
|
<CRLF>
|
|
<STATUS-LINE>
|
|
<I-CLOCKER 30>)
|
|
(T
|
|
<SET NL <GETP .L ,P?PATH>>
|
|
<SET TIM <GETP .L ,P?PATH-TIME>>
|
|
<COND (<AND <EQUAL? .NL ,HALL-1>
|
|
<EQUAL? ,HERE ,SNIPER-ROOM>>
|
|
<SETG I-FATAL T>
|
|
<HLIGHT ,H-BOLD>
|
|
<TELL CR
|
|
"You can hear Topaz's footsteps racing down the hall.">
|
|
<COND (<NOT <HALL-OBJECT? ,SNIPER-HALL>>
|
|
<TELL " His footsteps slow down, then
|
|
stop. He is being careful now, not knowing where to find his prey.">)>
|
|
<HLIGHT ,H-NORMAL>
|
|
<CRLF>)
|
|
(<AND <FSET? .L ,HUTBIT>
|
|
<EQUAL? ,HERE ,SNIPER-ROOM>
|
|
<HALL-OBJECT? .L>
|
|
<NOT <EQUAL? .L ,SNIPER-HALL>>>
|
|
<REMOVE ,TOPAZ>
|
|
<DE-QUEUE ,I-TOPAZ-OFF>
|
|
<DE-RT-QUEUE>
|
|
<DE-SLOW-CLOCK-QUEUE>
|
|
<BOLDTELL
|
|
"From somewhere in the hallway, you can hear a muffled, cracking noise.
|
|
Perhaps Topaz has mistakenly broken into one of the apartments nearby,
|
|
hoping to find you inside. A few moments later, you hear feet racing
|
|
down the hall, then silence.">)
|
|
(<AND <EQUAL? .L ,ALLEY-1>
|
|
<EQUAL? .NL ,ALLEY-2>
|
|
,CART-TOPPLED?
|
|
<NOT ,TOPPLE-CHASE>>
|
|
;"** Critical timing"
|
|
<SETG I-FATAL T>
|
|
<BOLDTELL
|
|
"You look behind you and spot Topaz, down on the ground, having been
|
|
knocked over in the near-melee at the vendor's cart. It'll be a little
|
|
while before he catches up to you.">
|
|
<SET TIM 80>)
|
|
(<AND <EQUAL? .L ,ALLEY-3>
|
|
<EQUAL? .NL ,FIRE-1>>
|
|
;"** Critical timing"
|
|
<COND (<TOPAZ-VISIBLE?>
|
|
<SETG I-FATAL T>
|
|
<BOLDTELL
|
|
"You look down; Topaz is on the ground below you, moving the trash
|
|
can into position under the ladder.">)>
|
|
<SET TIM 45>)
|
|
(<TOPAZ-VISIBLE?>
|
|
<SETG I-FATAL T>
|
|
<HLIGHT ,H-BOLD>
|
|
<CRLF>
|
|
<TELL
|
|
"You look behind you; Topaz has just reached the ">
|
|
<TELL <GETP .L ,P?FDESC> ".">
|
|
<HLIGHT ,H-NORMAL>
|
|
<CRLF>)>
|
|
<RT-QUEUE ,I-TOPAZ .TIM ,I-TOPAZ-OFF>
|
|
;<COND (,DEBUG
|
|
<TELL CR "[Topaz will arrive at " D .NL
|
|
" at " N .TIM "]" CR>)>
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE REAL-HALL (RM)
|
|
<GETP .RM <GET ,FLOOR-PROPS ,SNIPER-FLOOR>>>
|
|
|
|
<ROUTINE HALL-OBJECT? (RM)
|
|
<FIRST? <REAL-HALL .RM>>>
|
|
|
|
<GLOBAL FIGHT-IN-PROGRESS <>>
|
|
|
|
<GLOBAL TOPPLE-CHASE 0>
|
|
|
|
<GLOBAL TOPPLED-CART-TRANSIENT <PLTABLE ALLEY-1 ALLEY-2>>
|
|
|
|
<ROUTINE IN-PUBLIC? ("OPTIONAL" OBJ "AUX" L)
|
|
<COND (<ZERO? .OBJ> <SET OBJ ,WINNER>)>
|
|
<SET L <LOC .OBJ>>
|
|
<AND <NOT <FSET? .L ,PENBIT>>
|
|
<NOT <FSET? .L ,HUTBIT>>
|
|
<NOT <EQUAL? .L ,ALLEY-2 ,ALLEY-3>>
|
|
<NOT <EQUAL? .L ,ANTIQUE-SHOP ,ANTIQUE-STORAGE>>>>
|
|
|
|
;<ROUTINE IN-BUILDING? ("OPTIONAL" OBJ "AUX" L)
|
|
<COND (<ZERO? .OBJ> <SET OBJ ,WINNER>)>
|
|
<SET L <LOC .OBJ>>
|
|
<OR <EQUAL? .L ,ANTIQUE-SHOP>
|
|
<FSET? .L ,HUTBIT>>>
|
|
|
|
<OBJECT VENDOR
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "vendor")
|
|
(SYNONYM PEDDLER VENDOR SALESMAN MAN)
|
|
(ADJECTIVE STREET SODA PRETZEL ICE-CREAM)
|
|
(FLAGS PERSON)
|
|
(ACTION VENDOR-F)>
|
|
|
|
<OBJECT SODA
|
|
(LOC TOPAZ-ROOM)
|
|
(DESC "can of soda")
|
|
(SYNONYM CAN SODA)
|
|
(ADJECTIVE SODA)
|
|
(FLAGS TAKEBIT)
|
|
(ACTION FOOD-F)>
|
|
|
|
<ROUTINE FOOD-F ()
|
|
<COND (<VERB? BUY>
|
|
<TELL "You already have one!" CR>)
|
|
(<AND <VERB? EXAMINE READ>
|
|
<EQUAL? ,PRSO ,SODA>>
|
|
<PERFORM ,V?EXAMINE ,SODA-CANS>
|
|
<RTRUE>)
|
|
(<VERB? TAKE>
|
|
<COND (<AND <NOT <IN? ,PRSO ,TOPAZ-ROOM>>
|
|
<NOT <IN? ,PRSO ,HERE>>>
|
|
<TELL
|
|
"You've taken one of those already; you've got more important things
|
|
on your mind." CR>)
|
|
(T
|
|
<MOVE ,PRSO ,WINNER>
|
|
<TELL
|
|
"You take the " D ,PRSO ". The vendor, in his confusion, will never be
|
|
the wiser." CR>)>)
|
|
(<VERB? OPEN>
|
|
<TELL
|
|
"If you want to drink the soda, and waste precious time, just say so." CR>)
|
|
(<VERB? EAT DRINK>
|
|
<MOVE ,PRSO ,TOPAZ-ROOM>
|
|
<SETG CLOCK-MOVE 45>
|
|
<TELL
|
|
"You take a moment to finish the " D ,PRSO>
|
|
<COND (<EQUAL? ,PRSO ,SODA>
|
|
<TELL ", and you throw the can away">)>
|
|
<TELL ,PERIOD-CR>)>>
|
|
|
|
<OBJECT SODA-CANS
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "bunch of soda cans")
|
|
(SYNONYM CANS BUNCH CAN DRINK SODA)
|
|
(ADJECTIVE SODA SOFT)
|
|
(ACROSS SODA)
|
|
(ACTION VENDOR-STUFF-F)>
|
|
|
|
<ROUTINE VENDOR-STUFF-F ()
|
|
<COND (<VERB? TAKE>
|
|
<COND (<NOT ,CART-TOPPLED?>
|
|
<TELL
|
|
"The vendor wouldn't be very happy about that. You'll just have to wait your
|
|
turn." CR>)
|
|
(<EQUAL? ,PRSO ,HOT-DOGS>
|
|
<TELL
|
|
"They were inside the cart, so there aren't any lying around." CR>)
|
|
(<NOT <LOC <GETP ,PRSO ,P?ACROSS>>>
|
|
<TELL
|
|
"Enough with the " D ,PRSO "! You've got more important things to do." CR>)
|
|
(T
|
|
<PERFORM ,V?TAKE <GETP ,PRSO ,P?ACROSS>>)>)
|
|
(<AND <VERB? EXAMINE>
|
|
<EQUAL? ,PRSO ,SODA-CANS>>
|
|
<TELL
|
|
"It's a can of IC Cola; you frown, remembering the businessman on the train
|
|
and the role he has played in this affair." CR>)
|
|
(<VERB? BUY>
|
|
<TELL
|
|
"There's quite a wait and you haven't much time." CR>)>>
|
|
|
|
<OBJECT PRETZELS
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "bunch of pretzels")
|
|
(SYNONYM BUNCH PRETZELS PRETZEL FOOD)
|
|
(ACROSS PRETZEL)
|
|
(ACTION VENDOR-STUFF-F)>
|
|
|
|
<OBJECT PRETZEL
|
|
(LOC TOPAZ-ROOM)
|
|
(DESC "pretzel")
|
|
(SYNONYM PRETZEL)
|
|
(FLAGS TAKEBIT)
|
|
(ACTION FOOD-F)>
|
|
|
|
<OBJECT HOT-DOGS
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "hot dog")
|
|
(SYNONYM DOG HOT-DOG HOTDOG FOOD)
|
|
(ADJECTIVE HOT)
|
|
(FLAGS TAKEBIT)
|
|
(ACTION VENDOR-STUFF-F)>
|
|
|
|
<ROUTINE VENDOR-F ()
|
|
<COND (<VERB? HELLO TELL>
|
|
<STOP>
|
|
<TELL
|
|
"The vendor is quite busy, though he acknowledges you with a brief shake
|
|
of his ">
|
|
<COND (,CART-TOPPLED?
|
|
<TELL "fist">)
|
|
(T
|
|
<TELL "head">)>
|
|
<TELL ,PERIOD-CR>)
|
|
(<VERB? GIVE SHOW>
|
|
<TELL
|
|
"He's very busy at the moment, which is apparently more than can be said
|
|
about you." CR>)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
"He's your typical European street vendor, specializing in pretzels,
|
|
soda, and hot dogs. He's got his hands full ">
|
|
<COND (,CART-TOPPLED?
|
|
<TELL "dealing with the mess of soda cans and
|
|
pretzels from his toppled cart">)
|
|
(T
|
|
<TELL "with customers">)>
|
|
<TELL ,PERIOD-CR>)>>
|
|
|
|
<OBJECT VENDOR-CART
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "vendor's cart")
|
|
(SYNONYM CART STAND)
|
|
(ADJECTIVE VENDOR\'S)
|
|
(FLAGS NDESCBIT)
|
|
(ACTION VENDOR-CART-F)>
|
|
|
|
<GLOBAL TOPAZ-FIGHT <>>
|
|
|
|
<ROUTINE VENDOR-CART-F ()
|
|
<COND (<VERB? EXAMINE>
|
|
<COND (,CART-TOPPLED?
|
|
<TELL
|
|
"The cart is on its side, and its contents are strewn all along the
|
|
sidewalk, blocking the entrance to the alley." CR>)
|
|
(T
|
|
<TELL
|
|
"The cart is quite large and piled high with cans of soft drinks and
|
|
boxes of pretzels. Inside the cart, the vendor keeps his supply of
|
|
hot dogs." CR>)>)
|
|
(<VERB? OPEN CLOSE>
|
|
<TELL
|
|
"That's the vendor's job, presumably." CR>)
|
|
(<VERB? TOPPLE PUSH MOVE>
|
|
<COND (,CART-TOPPLED?
|
|
<TOO-LATE>
|
|
<RTRUE>)>
|
|
<PUTP ,CART-DEBRIS ,P?TRANSIENT ,TOPPLED-CART-TRANSIENT>
|
|
<DYNAMIC-DESC ,BLDG-1 ,P?SOUTH ,ALLEY-OOPS>
|
|
<DYNAMIC-DESC ,BLDG-2 ,P?NORTH ,ALLEY-OOPS>
|
|
<DYNAMIC-DESC ,TOWN-SQUARE ,P?WEST ,ALLEY-OOPS>
|
|
<DYNAMIC-DESC ,ALLEY-1 ,P?WEST
|
|
"You dodge not only the vendor's cart, but its strewn contents, and
|
|
finally manage to get through to the other side.">
|
|
<DYNAMIC-DESC ,ALLEY-2 ,P?EAST
|
|
"You dodge not only the vendor's cart, but its strewn contents, and
|
|
finally manage to get through to the other side.">
|
|
<TELL
|
|
"With a hefty push, you manage to topple the entire cart, sending hundreds
|
|
of cans of soda and dozens of pretzels flying. In the confusion, a few
|
|
people are knocked to the ground, causing a sort of chain reaction in
|
|
which dozens fall or are knocked down">
|
|
<COND (<EQUAL? ,HERE ,ALLEY-2>
|
|
<COND (<IN? ,TOPAZ ,ALLEY-1>
|
|
<TELL ", including Topaz, who is struggling
|
|
to regain his footing">
|
|
<PUT ,CLOCK-TBL
|
|
,I-TOPAZ-OFF
|
|
<+ <GET ,CLOCK-TBL ,I-TOPAZ-OFF>
|
|
30 ;"** CRITICAL TIMING">>)>
|
|
<TELL ,PERIOD-CR>)
|
|
(T
|
|
<TELL ". You manage to sidestep this
|
|
impending melee and ">
|
|
<COND (,CHASE-FLAG
|
|
<TELL "hurry">)
|
|
(T
|
|
<TELL "move">)>
|
|
<TELL " off into the safety of the alley." CR CR>
|
|
<GOTO ,ALLEY-2 <>>
|
|
<TELL
|
|
"You're running down the alley now, just a few steps beyond the
|
|
vendor's cart. The scene is somewhat comical, with dozens of people
|
|
trying to regain their footing on a carpet of soda cans, which are
|
|
acting like ball bearings." CR>)>
|
|
<SETG CART-TOPPLED? T>
|
|
<RTRUE>)
|
|
(<AND <VERB? CLEAN> ,CART-TOPPLED?>
|
|
<TELL
|
|
"An amusing thought, though the vendor would probably kill you if
|
|
you approached again." CR>)>>
|
|
|
|
<GLOBAL ALLEY-OOPS
|
|
"You press through the crowd until you reach Ostnitz Street at a point
|
|
where a street vendor is busily cleaning up his overturned cart. Soda
|
|
cans and pretzels lie everywhere, making the congestion even worse than
|
|
it was before. Behind the cart, to the west, is a blind alley sandwiched
|
|
between the apartment building to your north and the office building to
|
|
your south. It might take a while to get there, though, with all the mess
|
|
in the way.">
|
|
|
|
<ROUTINE DYNAMIC-DESC (RM DIR STR)
|
|
<PUT <GETPT .RM .DIR> ,SEXITSTR .STR>>
|
|
|
|
<OBJECT CART-DEBRIS
|
|
(LOC GLOBAL-OBJECTS)
|
|
(DESC "debris")
|
|
(SYNONYM DEBRIS)
|
|
(SCENARIO 3)
|
|
(TRANSIENT <LTABLE>)>
|
|
|
|
<ROOM ALLEY-2
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Behind the Cart")
|
|
(FDESC "alley just behind the vendor's cart")
|
|
(EAST TO ALLEY-1 IF FALSE-FLAG ELSE
|
|
"You leave the alley at Ostnitz Street; the street vendor is still
|
|
here, though his stock is somewhat depleted. The square is before you,
|
|
still practically bursting with humanity. The street continues to the
|
|
north and south.")
|
|
(WEST PER ALLEY-23)
|
|
(GLOBAL ALLEY SODA-CANS PRETZELS HOT-DOGS VENDOR-CART VENDOR)
|
|
(ACTION ALLEY-2-F)>
|
|
|
|
<ROUTINE ALLEY-23 ()
|
|
<COND (,CHASE-FLAG
|
|
<TELL
|
|
"You run down the alley to the far end. Above you, out of reach, a
|
|
fire-escape ladder rises to the four stories of apartment building
|
|
above." CR>
|
|
<SETG DONT-DESCRIBE-ROOM T>)
|
|
(T
|
|
<TELL
|
|
"You move down the alley until you reach the end - a high concrete
|
|
wall." CR CR>)>
|
|
,ALLEY-3>
|
|
|
|
<GLOBAL CART-TOPPLED? <>>
|
|
|
|
<ROUTINE ALLEY-2-F (RARG)
|
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
|
<TELL
|
|
"The alley is narrow and thus somewhat darkened; to the east, people
|
|
are walking along Ostnitz Street past the street vendor who">
|
|
<COND (,CART-TOPPLED?
|
|
<TELL "se toppled cart and scattered wares
|
|
almost completely block">)
|
|
(T
|
|
<TELL" partially blocks">)>
|
|
<TELL " the alley's entrance. The alley is bounded on the
|
|
north and south by buildings; the one to the south is an office building of
|
|
five stories; to the north lies an apartment building of the same
|
|
height." CR>)>>
|
|
|
|
<ROOM ALLEY-3
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "End of Blind Alley")
|
|
(FDESC "end of the alley")
|
|
(WEST SORRY
|
|
"The wall climbs perhaps twenty feet; there's no way you could get over it.")
|
|
(EAST TO ALLEY-2 IF FALSE-FLAG ELSE
|
|
"You head back toward Ostnitz street, stopping just behind the vendor's
|
|
cart.")
|
|
(UP PER FIRE-LADDER-REACH)
|
|
(ACTION ALLEY-3-F)
|
|
(GLOBAL FIRE-LADDER FIRE-WINDOW ALLEY)>
|
|
|
|
<ROUTINE ALLEY-3-F (RARG)
|
|
<COND (<AND <EQUAL? .RARG ,M-BEG>
|
|
<VERB? LEAP>>
|
|
<COND (<EQUAL? <GET ,P-ITBL ,P-PREP1N> ,W?DOWN>
|
|
<COND (,ON-THE-CAN
|
|
<PERFORM ,V?DISEMBARK ,TRASH-CAN>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "That's nonsense." CR>
|
|
<RTRUE>)>)
|
|
(<NOT ,ON-THE-CAN>
|
|
<TELL
|
|
"Your best jump leaves you a few feet short of the ladder." CR>)
|
|
(T
|
|
<DO-WALK ,P?UP>
|
|
<RTRUE> )>)
|
|
(<EQUAL? .RARG ,M-LOOK>
|
|
<TELL
|
|
"Here, at the end, the buildings on either side of you rise five stories
|
|
into the air; the one to the south is an office building, to the north
|
|
an apartment building. On the side of the apartment building, a fire-escape
|
|
ladder hangs about a dozen feet above the ground, climbing to windows on all
|
|
four above ground levels. There is no access at all here to the office
|
|
building." CR>)>>
|
|
|
|
<OBJECT TRASH-CAN
|
|
(LOC ALLEY-3)
|
|
(DESC "trash can")
|
|
(SYNONYM CAN)
|
|
(ADJECTIVE TRASH)
|
|
(FDESC
|
|
"Leaning up against the office building, a foul-smelling trash can is
|
|
standing.")
|
|
(LDESC
|
|
"An empty trash can is standing here.")
|
|
(FLAGS TAKEBIT CONTBIT OPENBIT TRYTAKEBIT)
|
|
(CAPACITY 40)
|
|
(ACTION TRASH-CAN-F)>
|
|
|
|
<OBJECT BOXES
|
|
(LOC ALLEY-3)
|
|
(DESC "box")
|
|
(SYNONYM BOXES BOX)
|
|
(ADJECTIVE BROKEN)
|
|
(LDESC
|
|
"A few dozen discarded boxes are strewn on the ground here.")
|
|
(ACTION BOXES-F)>
|
|
|
|
<ROUTINE BOXES-F ()
|
|
<COND (<VERB? STACK>
|
|
<TELL
|
|
"They're too flimsy to be stacked." CR>)
|
|
(<VERB? EXAMINE LOOK-INSIDE>
|
|
<TELL
|
|
"They're typical discarded boxes of different sizes." CR>)
|
|
(<VERB? MOVE PUT>
|
|
<TELL
|
|
"They're so flimsy, they'd probably fall apart if you moved them." CR>)
|
|
(<VERB? BOARD STAND-ON CLIMB-ON>
|
|
<TELL
|
|
"They're only cardboard; you might try something sturdier." CR>)>>
|
|
|
|
<GLOBAL ON-THE-CAN <>>
|
|
|
|
<ROUTINE TRASH-CAN-F ()
|
|
<COND (<VERB? TAKE-OFF DISEMBARK LEAVE LEAP LEAP-OFF>
|
|
<COND (,ON-THE-CAN
|
|
<SETG ON-THE-CAN <>>
|
|
<TELL
|
|
"You step off the can." CR>)
|
|
(T
|
|
<TOO-LATE>)>)
|
|
(<VERB? CLIMB-ON BOARD STAND-ON CLIMB-UP>
|
|
<COND (,ON-THE-CAN <TOO-LATE>)
|
|
(<AND <VERB? BOARD>
|
|
<EQUAL? <GET ,P-ITBL ,P-PREP1N> ,W?IN ,W?INTO>>
|
|
<TELL
|
|
"Getting inside the trash can, while amusing, is not helpful." CR>)
|
|
(T
|
|
<SETG ON-THE-CAN T>
|
|
<TELL
|
|
"You're now standing on top of the trash can">
|
|
<FSET ,TRASH-CAN ,TOUCHBIT>
|
|
<COND (,CAN-UNDER-LADDER
|
|
<TELL
|
|
". From here, you can reach the bottom rungs of the ladder which
|
|
hangs above your head">)
|
|
(<EQUAL? ,HERE ,ALLEY-3>
|
|
<TELL
|
|
". You can't reach the ladder from here; you're high enough, but the
|
|
can is positioned too far away laterally">)>
|
|
<TELL ,PERIOD-CR>)>)
|
|
(,ON-THE-CAN
|
|
<TELL "You're standing on it!" CR>)
|
|
(<AND <VERB? PUT>
|
|
<EQUAL? ,PRSI ,TRASH-CAN>>
|
|
<TELL
|
|
"No time for that now." CR>)
|
|
(<VERB? OPEN CLOSE>
|
|
<TELL
|
|
"The can seems to be missing its lid." CR>)
|
|
(<VERB? TAKE>
|
|
<SETG CAN-UNDER-LADDER <>>
|
|
<RFALSE>)>>
|
|
|
|
<GLOBAL FIRE-WINDOW-TBL <LTABLE 0 0 0 0 0>>
|
|
|
|
<OBJECT FIRE-WINDOW
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "window")
|
|
(SYNONYM WINDOW)
|
|
(ACTION FIRE-WINDOW-F)>
|
|
|
|
<GLOBAL CAN-UNDER-LADDER <>>
|
|
|
|
<ROUTINE FIRE-WINDOW-F ("AUX" FL)
|
|
<SET FL <GETP ,HERE ,P?SIZE>>
|
|
<COND (<EQUAL? ,HERE ,ALLEY-3>
|
|
<TELL
|
|
"The windows are all above you." CR>)
|
|
(<VERB? ENTER BOARD>
|
|
<DO-WALK ,P?IN>
|
|
<RTRUE>)
|
|
(<VERB? OPEN RAISE>
|
|
<COND (<ZERO? <GET ,FIRE-WINDOW-TBL .FL>>
|
|
<PUT ,FIRE-WINDOW-TBL .FL 1>
|
|
<TELL
|
|
"You raise the window just enough to get through." CR>)
|
|
(T
|
|
<TOO-LATE>)>)
|
|
(<VERB? CLOSE LOWER>
|
|
<COND (<ZERO? <GET ,FIRE-WINDOW-TBL .FL>>
|
|
<TOO-LATE>)
|
|
(T
|
|
<PUT ,FIRE-WINDOW-TBL .FL 0>
|
|
<TELL
|
|
"You lower the window to the closed position." CR>)>)>>
|
|
|
|
<OBJECT ALLEY
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "alley")
|
|
(SYNONYM ALLEY)
|
|
(ADJECTIVE BLIND)
|
|
(FLAGS VOWELBIT)
|
|
(ACTION ALLEY-F)>
|
|
|
|
<ROUTINE ALLEY-F ()
|
|
<COND (<VERB? EXAMINE>
|
|
<TELL
|
|
"The alley runs east-west between the apartment building to the
|
|
north and the office building to the south. It is rather narrow and
|
|
somewhat dark. It ends at a concrete wall to the west and at the
|
|
street end it is ">
|
|
<COND (,CART-TOPPLED?
|
|
<TELL "completely blocked by an overturned">)
|
|
(T
|
|
<TELL "partially blocked by a">)>
|
|
<TELL " street vendor's cart." CR>
|
|
<TOPAZ-DESC>
|
|
<RTRUE>)>>
|
|
|
|
<OBJECT FIRE-LADDER
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "ladder")
|
|
(SYNONYM RUNG RUNGS LADDER FIRE-ESCAPE ESCAPE)
|
|
(ADJECTIVE FIRE-ESCAPE FIRE)
|
|
(ACTION FIRE-LADDER-F)>
|
|
|
|
<ROUTINE FIRE-LADDER-F ()
|
|
<COND (<AND <VERB? PUT-UNDER> <EQUAL? ,PRSO ,TRASH-CAN>>
|
|
<COND (,CAN-UNDER-LADDER <TOO-LATE>)
|
|
(T
|
|
<SETG CAN-UNDER-LADDER T>
|
|
<TELL "You ">
|
|
<COND (<IN? ,TRASH-CAN ,WINNER>
|
|
<TELL "put down the can and position it">)
|
|
(T
|
|
<TELL "move the can until it's positioned">)>
|
|
<MOVE ,TRASH-CAN ,HERE>
|
|
<TELL " just underneath the fire-escape
|
|
ladder." CR>)>)
|
|
(<VERB? CLIMB CLIMB-UP>
|
|
<DO-WALK ,P?UP>
|
|
<RTRUE>)
|
|
(<VERB? CLIMB-DOWN>
|
|
<DO-WALK ,P?DOWN>
|
|
<RTRUE>)
|
|
(<AND <VERB? TOUCH CLIMB-ON TAKE> <EQUAL? ,HERE ,ALLEY-3>>
|
|
<DO-WALK ,P?UP>
|
|
<RTRUE>)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
"The ladder is made of iron, and it has rusted pretty badly. It runs
|
|
along the outside of the apartment building, leading to windows on the
|
|
second through fifth floors.">
|
|
<COND (<EQUAL? ,HERE ,ALLEY-3>
|
|
<TELL
|
|
" The bottom rungs are about twelve feet above ground level, making it all but
|
|
impossible to reach">
|
|
<COND (,ON-THE-CAN
|
|
<TELL
|
|
" unless, of course, you're standing on the trash can (which you are)">)>
|
|
<TELL ".">)>
|
|
<CRLF>)>>
|
|
|
|
<ROUTINE FIRE-LADDER-REACH ()
|
|
<COND (<AND ,CAN-UNDER-LADDER ,ON-THE-CAN>
|
|
<SETG ON-THE-CAN <>>
|
|
<SETG CAN-UNDER-LADDER <>>
|
|
<TELL
|
|
"You grab hold of the bottom rungs of the ladder and pull yourself
|
|
onto the ladder, knocking the can over in the process." CR CR>
|
|
,FIRE-1)
|
|
(,ON-THE-CAN
|
|
<TELL
|
|
"You're high enough, but the can is positioned too far away from
|
|
the ladder." CR>
|
|
<RFALSE>)
|
|
(T
|
|
<TELL
|
|
"You try jumping, but even then you can't reach the bottom rungs of
|
|
the ladder." CR>
|
|
<RFALSE>)>>
|
|
|
|
<ROOM FIRE-1
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Fire Escape, 1st Floor")
|
|
(FDESC "bottom of the fire escape")
|
|
(LDESC
|
|
"You are at the bottom of the fire-escape ladder, about ten feet above
|
|
the ground. The ladder rises to each of the upper four levels and it's
|
|
just a short drop to the ground. A toppled trash can lies in the alley
|
|
beneath your feet.")
|
|
(DOWN TO ALLEY-3 IF TRUE-FLAG ELSE
|
|
"You drop the last four feet to the ground.")
|
|
(UP PER FIRE-2-MOVE)
|
|
(SIZE 1)
|
|
(FLAGS PENBIT)
|
|
(GLOBAL FIRE-LADDER ALLEY)>
|
|
|
|
<ROOM FIRE-2
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Fire Escape, 2nd Floor")
|
|
(FDESC "fire escape at the second floor")
|
|
(DOWN PER FIRE-1-MOVE)
|
|
(UP PER FIRE-3-MOVE)
|
|
(NORTH TO HALL-1 IF FALSE-FLAG ELSE
|
|
"You pull yourself through the window, and find yourself staring at a long
|
|
hallway leading north.")
|
|
(IN-DIR P?NORTH)
|
|
(GLOBAL FIRE-LADDER ALLEY FIRE-WINDOW)
|
|
(SIZE 2)
|
|
(FLAGS PENBIT)
|
|
(ACTION FIRE-ROOM-F)>
|
|
|
|
<ROOM FIRE-3
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Fire Escape, 3rd Floor")
|
|
(FDESC "fire escape at the third floor")
|
|
(DOWN PER FIRE-2-MOVE)
|
|
(UP PER FIRE-4-MOVE)
|
|
(NORTH TO HALL-1 IF FALSE-FLAG ELSE
|
|
"You pull yourself through the window, and find yourself staring at a long
|
|
hallway leading north.")
|
|
(IN-DIR P?NORTH)
|
|
(GLOBAL FIRE-LADDER ALLEY FIRE-WINDOW)
|
|
(SIZE 3)
|
|
(FLAGS PENBIT)
|
|
(ACTION FIRE-ROOM-F)>
|
|
|
|
<ROOM FIRE-4
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Fire Escape, 4th Floor")
|
|
(FDESC "fire escape at the fourth floor")
|
|
(DOWN PER FIRE-3-MOVE)
|
|
(UP PER FIRE-5-MOVE)
|
|
(NORTH TO HALL-1 IF FALSE-FLAG ELSE
|
|
"You pull yourself through the window, and find yourself staring at a long
|
|
hallway leading north.")
|
|
(IN-DIR P?NORTH)
|
|
(GLOBAL FIRE-LADDER ALLEY FIRE-WINDOW)
|
|
(SIZE 4)
|
|
(FLAGS PENBIT)
|
|
(ACTION FIRE-ROOM-F)>
|
|
|
|
<ROOM FIRE-5
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Fire Escape, 5th Floor")
|
|
(FDESC "fire escape at the fifth floor")
|
|
(DOWN PER FIRE-4-MOVE)
|
|
(UP SORRY "The ladder ends here; there is no access to the roof.")
|
|
(NORTH TO HALL-1 IF FALSE-FLAG ELSE
|
|
"You pull yourself through the window, and find yourself staring at a long
|
|
hallway leading north.")
|
|
(IN-DIR P?NORTH)
|
|
(GLOBAL FIRE-LADDER ALLEY FIRE-WINDOW)
|
|
(SIZE 5)
|
|
(FLAGS PENBIT)
|
|
(ACTION FIRE-ROOM-F)>
|
|
|
|
<GLOBAL FIRE-TBL <PLTABLE FIRE-1 FIRE-2 FIRE-3 FIRE-4 FIRE-5>>
|
|
|
|
<ROUTINE FIRE-1-MOVE ()
|
|
<FIRE-MOVE ,FIRE-1 "level just above the ground">>
|
|
|
|
<ROUTINE FIRE-2-MOVE ()
|
|
<FIRE-MOVE ,FIRE-2 "second">>
|
|
|
|
<ROUTINE FIRE-3-MOVE ()
|
|
<FIRE-MOVE ,FIRE-3 "third">>
|
|
|
|
<ROUTINE FIRE-4-MOVE ()
|
|
<FIRE-MOVE ,FIRE-4 "fourth">>
|
|
|
|
<ROUTINE FIRE-5-MOVE ()
|
|
<FIRE-MOVE ,FIRE-5 "fifth">>
|
|
|
|
<ROUTINE FIRE-MOVE (RM STR)
|
|
<TELL "You ">
|
|
<COND (,CHASE-FLAG
|
|
<TELL "scramble">)
|
|
(T
|
|
<TELL "move">)>
|
|
<TELL " ">
|
|
<COND (<EQUAL? ,PRSO ,P?UP>
|
|
<TELL "up">)
|
|
(T
|
|
<TELL "down">)>
|
|
<TELL " the fire-escape ladder until reaching the landing
|
|
at the ">
|
|
<TELL .STR>
|
|
<TELL " floor.">
|
|
<COND (<EQUAL? .RM ,FIRE-5>
|
|
<TELL
|
|
" The ladder ends here; there is no access to the roof.">)>
|
|
<COND (<NOT <EQUAL? .RM ,FIRE-1>>
|
|
<TELL
|
|
" A window here leads to a hallway along which apartments are
|
|
arranged on either side.">)>
|
|
<CRLF>
|
|
<SETG DONT-DESCRIBE-ROOM T>
|
|
.RM>
|
|
|
|
<GLOBAL HALL-FLOOR 0>
|
|
|
|
<ROOM HALL-1
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Hallway, Fire Escape")
|
|
(FDESC "hallway near the fire escape")
|
|
(LDESC
|
|
"You're at the end of a north-south hallway. There are no doors right here;
|
|
they are farther down the hall. The window leading to the fire-escape is
|
|
open.")
|
|
(NORTH TO HALL-2 IF FALSE-FLAG ELSE
|
|
"You continue down the hall to the next set of doorways, one to the east
|
|
and one to the west. You're now about a third of the way toward the end
|
|
of the hall.")
|
|
(SOUTH PER LEAVE-HALL)
|
|
(OUT-DIR P?SOUTH)
|
|
(EAST SORRY "There is no door to the east.")
|
|
(WEST SORRY "There is no door to the west.")
|
|
(SIZE 4)
|
|
(FLAGS HUTBIT)
|
|
(2ND-FLOOR HALL-21)
|
|
(3RD-FLOOR HALL-31)
|
|
(4TH-FLOOR HALL-41)
|
|
(5TH-FLOOR HALL-51)
|
|
(GLOBAL FIRE-WINDOW ELEVATOR ELEVATOR-OPERATOR)>
|
|
|
|
<ROUTINE LEAVE-HALL ()
|
|
<TELL
|
|
"You crawl through the window and to the fire-escape ladder." CR CR>
|
|
<GET ,HALL-EXIT-TBL ,HALL-FLOOR>>
|
|
|
|
<GLOBAL HALL-EXIT-TBL <LTABLE 0 FIRE-2 FIRE-3 FIRE-4 FIRE-5>>
|
|
|
|
<ROOM HALL-2
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Hallway, South")
|
|
(FDESC "southern part of the hallway")
|
|
(LDESC
|
|
"You are about one-third of the way betwween the southern and northern
|
|
ends of the hallway. Doors are on both sides of you, east and west.")
|
|
(NORTH TO HALL-3 IF FALSE-FLAG ELSE
|
|
"You continue down the hall to the next set of doorways, one to the east
|
|
and one to the west. You're now about halfway down the hall.")
|
|
(SOUTH TO HALL-1 IF FALSE-FLAG ELSE
|
|
"You continue to the end of hall, where a window leads to a fire-escape
|
|
ladder connecting the various floors of the building.")
|
|
(EAST SORRY "The door is locked.")
|
|
(WEST SORRY "The door is locked.")
|
|
(FLAGS HUTBIT)
|
|
(2ND-FLOOR HALL-22)
|
|
(3RD-FLOOR HALL-32)
|
|
(4TH-FLOOR HALL-42)
|
|
(5TH-FLOOR HALL-52)
|
|
(SIZE 3)
|
|
(GLOBAL HALL-DOOR-E HALL-DOOR-W ELEVATOR ELEVATOR-OPERATOR)>
|
|
|
|
<ROOM HALL-3
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Hallway, Middle")
|
|
(FDESC "middle of the hallway")
|
|
(LDESC
|
|
"You are halfway between the northern and southern ends of the hallway; closed
|
|
doors lie on either side of you.")
|
|
(NORTH TO HALL-4 IF FALSE-FLAG ELSE
|
|
"You continue down the hall to the last set of doorways, one to the east
|
|
and one to the west. Before you, to the north is an elevator with a white
|
|
call button.")
|
|
(SOUTH TO HALL-2 IF FALSE-FLAG ELSE
|
|
"You continue down the hall to the next set of doorways, one to the east
|
|
and one to the west. You're now about two-thirds of the way toward the end
|
|
of the hall.")
|
|
(EAST SORRY "The door is locked.")
|
|
(WEST SORRY "The door is locked.")
|
|
(FLAGS HUTBIT)
|
|
(2ND-FLOOR HALL-23)
|
|
(3RD-FLOOR HALL-33)
|
|
(4TH-FLOOR HALL-43)
|
|
(5TH-FLOOR HALL-53)
|
|
(SIZE 2)
|
|
(GLOBAL HALL-DOOR-E HALL-DOOR-W ELEVATOR ELEVATOR-OPERATOR)>
|
|
|
|
<ROOM HALL-4
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Hallway, North End")
|
|
(FDESC "north end of the hallway")
|
|
(LDESC
|
|
"You are at the northern end of the hallway; closed doors lie on either side
|
|
of you, east and west. In front of you, to the north, is an elevator,
|
|
beside which is a white call button.")
|
|
(NORTH TO ELEVATOR-ROOM IF ELEVATOR-DOOR IS OPEN)
|
|
(IN-DIR P?NORTH)
|
|
(SOUTH TO HALL-3 IF FALSE-FLAG ELSE
|
|
"You continue down the hall to the next set of doorways, one to the east
|
|
and one to the west. You're now about a third of the way toward the end
|
|
of the hall.")
|
|
(EAST SORRY "The door is locked.")
|
|
(WEST SORRY "The door is locked.")
|
|
(FLAGS HUTBIT)
|
|
(2ND-FLOOR HALL-24)
|
|
(3RD-FLOOR HALL-34)
|
|
(4TH-FLOOR HALL-44)
|
|
(5TH-FLOOR HALL-54)
|
|
(SIZE 1)
|
|
(GLOBAL HALL-DOOR-E HALL-DOOR-W ELEVATOR-BUTTON ELEVATOR-DOOR ELEVATOR-OPERATOR ELEVATOR)>
|
|
|
|
<ROOM ELEVATOR-ROOM
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "In the Elevator")
|
|
(FDESC "elevator")
|
|
(LDESC
|
|
"You're standing in the elevator of the apartment building...")
|
|
(OUT-DIR P?SOUTH)
|
|
(SOUTH TO HALL-4)
|
|
(GLOBAL ELEVATOR-DOOR ELEVATOR-OPERATOR)
|
|
(ACTION ELEVATOR-ROOM-F)>
|
|
|
|
<ROUTINE ELEVATOR-ROOM-F (RARG)
|
|
<COND (<EQUAL? .RARG ,M-ENTER>
|
|
<STATUS-LINE>
|
|
<DE-QUEUE ,I-ELEVATOR-OFF>
|
|
<TELL
|
|
"The elevator operator says, \"Which floor, please?\"" CR CR>
|
|
<COND (,CHASE-FLAG
|
|
<COND (<G? ,HALL-FLOOR 1>
|
|
<COND (<FSET? <LOC ,TOPAZ> ,PENBIT>
|
|
<TELL
|
|
"At this moment, Topaz pulls himself through the window at the far end of the
|
|
hall. Fearful that you are about to give him the slip, he">)
|
|
(T
|
|
<TELL
|
|
"Topaz, still down the hall and fearful that you are about to give him the
|
|
slip,">)>
|
|
<TELL
|
|
" pulls out his revolver and fires twice, hitting you in the shoulder
|
|
and leg. Wounded, but not seriously, you are taken to police
|
|
headquarters, where you are treated and questioned." CR>)
|
|
(T
|
|
<TELL
|
|
"At this moment, Topaz bursts into the lobby, and motions to the police
|
|
guards, who respond by grabbing you. Clearly, they are well aware of Topaz's
|
|
identity. After a brief discussion between them, you are hustled off for
|
|
questioning." CR>)>
|
|
<JIGS-UP ,EPILOGUE-BAD-FAILS>)>
|
|
<COND (<ELEVATOR-SEQUENCE>
|
|
<TELL
|
|
"The operator closes the door, and the elevator slowly ">
|
|
<COND (<G? ,P-NUMBER ,HALL-FLOOR>
|
|
<TELL "climb">)
|
|
(T
|
|
<TELL "descend">)>
|
|
<TELL "s to the ">
|
|
<TELL <GET ,CARDINALS ,P-NUMBER>>
|
|
<TELL " floor; having arrived, the operator
|
|
opens the door and hustles you out the door.">
|
|
<COND (<NOT <EQUAL? ,P-NUMBER 1>>
|
|
<TELL
|
|
" The elevator departs, presumably for the ground floor.">)>
|
|
<TELL CR CR>
|
|
<SETG CLOCK-MOVE
|
|
<+ 15 <* <ABS <- ,P-NUMBER ,HALL-FLOOR>> 5>>>
|
|
<SETG HALL-FLOOR ,P-NUMBER>
|
|
<COND (<EQUAL? ,P-NUMBER 1>
|
|
<GOTO ,APARTMENT-LOBBY>
|
|
<FSET ,ELEVATOR-DOOR ,OPENBIT>)
|
|
(T
|
|
<FCLEAR ,ELEVATOR-DOOR ,OPENBIT>
|
|
<GOTO ,HALL-4>)>)>)>>
|
|
|
|
<ROUTINE ELEVATOR-SEQUENCE ("AUX" PTR)
|
|
<PRINTI ">>">
|
|
<PUTB ,P-INBUF 1 0>
|
|
<READ ,P-INBUF ,P-LEXV>
|
|
<SET PTR 1>
|
|
<COND (<AND <NUMBER? .PTR>
|
|
<G? ,P-NUMBER 0>
|
|
<L? ,P-NUMBER 6>>
|
|
<COND (<EQUAL? ,HALL-FLOOR ,P-NUMBER>
|
|
<TELL
|
|
"\"We are already there, sir.\" She escorts you off the elevator." CR>
|
|
<COND (<EQUAL? ,HALL-FLOOR 1>
|
|
<GOTO ,APARTMENT-LOBBY <>>)
|
|
(T
|
|
<GOTO ,HALL-4 <>>)>
|
|
<RFALSE>)
|
|
(T
|
|
<RTRUE>)>)
|
|
(T
|
|
<TELL
|
|
"\"Please tell me the floor you wish to go to, from 1 to 5.\"">
|
|
<CRLF>
|
|
<CRLF>
|
|
<AGAIN>)>>
|
|
|
|
<ROUTINE I-ELEVATOR-LEAVES ()
|
|
<COND (<FSET? ,HERE ,HUTBIT>
|
|
<FCLEAR ,ELEVATOR-DOOR ,OPENBIT>
|
|
<BOLDTELL
|
|
"The elevator door closes; presumably the elevator will return to the ground
|
|
floor.">)>>
|
|
|
|
<OBJECT ELEVATOR-DOOR
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "elevator door")
|
|
(SYNONYM DOOR)
|
|
(ADJECTIVE ELEVATOR)
|
|
(FLAGS DOORBIT)
|
|
(ACTION ELEVATOR-DOOR-F)>
|
|
|
|
<ROUTINE ELEVATOR-DOOR-F ()
|
|
<COND (<AND <VERB? OPEN> <NOT <FSET? ,PRSO ,OPENBIT>>>
|
|
<TELL
|
|
"You might try pushing the call button." CR>)>>
|
|
|
|
<OBJECT ELEVATOR-BUTTON
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "call button")
|
|
(SYNONYM BUTTON)
|
|
(ADJECTIVE WHITE CALL)
|
|
(ACTION ELEVATOR-BUTTON-F)>
|
|
|
|
<ROUTINE ELEVATOR-BUTTON-F ()
|
|
<COND (<VERB? PUSH>
|
|
<COND (<FSET? ,ELEVATOR-DOOR ,OPENBIT>
|
|
<TOO-LATE>
|
|
<RTRUE>)>
|
|
<TELL
|
|
"Click. You hear the sound of the elevator approaching slowly." CR>
|
|
<RT-QUEUE ,I-ELEVATOR-ARRIVES 45 ,I-ELEVATOR-OFF>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE I-ELEVATOR-ARRIVES ()
|
|
<COND (<EQUAL? ,HERE ,HALL-4>
|
|
<BOLDTELL
|
|
"The elevator arrives; the operator, a woman, waits for you to enter.">)
|
|
(<FSET? ,HERE ,HUTBIT>
|
|
<BOLDTELL
|
|
"The elevator door opens down the hall to the north.">)>
|
|
<FSET ,ELEVATOR-DOOR ,OPENBIT>
|
|
<RT-QUEUE ,I-ELEVATOR-LEAVES 80 ,I-ELEVATOR-OFF>
|
|
<RTRUE>>
|
|
|
|
<OBJECT HALL-DOOR-E
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "eastern door")
|
|
(SYNONYM DOOR)
|
|
(ADJECTIVE EAST EASTERN E)
|
|
(FLAGS DOORBIT)
|
|
(ACTION HALL-DOOR-F)>
|
|
|
|
<OBJECT HALL-DOOR-W
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "western door")
|
|
(SYNONYM DOOR)
|
|
(ADJECTIVE WEST WESTERN W)
|
|
(FLAGS DOORBIT)
|
|
(ACTION HALL-DOOR-F)>
|
|
|
|
<ROUTINE HALL-DOOR-F ()
|
|
<COND (<VERB? SHOOT>
|
|
<TELL
|
|
"Risky at best; suicidal at worst." CR>)
|
|
(<OR <EQUAL? ,PRSO ,HALL-DOOR-W>
|
|
<NOT <EQUAL? ,HALL-FLOOR ,SNIPER-FLOOR>>
|
|
<NOT <EQUAL? ,HERE ,SNIPER-HALL ,SNIPER-ROOM>>
|
|
<AND <NOT <EQUAL? ,HERE ,SNIPER-ROOM>>
|
|
<G? ,CLOCK-TIME 1000>>>
|
|
;"The wrong door, in fact, or too late..."
|
|
<COND (<VERB? KNOCK>
|
|
<TELL
|
|
"You wait for a few seconds, but there is no answer." CR>
|
|
<SETG CLOCK-MOVE 20>)
|
|
(<VERB? LISTEN>
|
|
<TELL
|
|
"You can't hear anything from inside the apartment; if the sniper were a
|
|
pro, you probably wouldn't hear him anyway." CR>)
|
|
(<VERB? OPEN UNLOCK KICK>
|
|
<TELL
|
|
"Rather unsubtle, don't you think. Surely you can think of something less
|
|
likely to get you embarrassed or killed." CR>)
|
|
(<VERB? EXAMINE>
|
|
<TELL-ROOM-NUMBER>)>)
|
|
(<EQUAL? ,HERE ,SNIPER-ROOM>
|
|
;"On the inside"
|
|
<COND (<VERB? EXAMINE>
|
|
<TELL
|
|
"The door is closed and locked from the inside." CR>)
|
|
(<AND <VERB? OPEN UNLOCK>
|
|
<IN? ,SNIPER ,HERE>>
|
|
<TELL
|
|
"You move slowly toward the door, but the sniper's senses are sharper
|
|
than your own. \"Please stay away from the door. There are enemy agents
|
|
all around us; we must be on our guard!\" Backing away from the door,
|
|
you find yourself thinking that your choices are few and unpleasant." CR>)
|
|
(<VERB? HIDE-BEHIND>
|
|
<COND (,HIDING-BEHIND-DOOR
|
|
<TOO-LATE>)
|
|
(T
|
|
<SETG HIDING-BEHIND-DOOR T>
|
|
<TELL
|
|
"You move back toward the door a few feet; not enough to alarm the sniper,
|
|
but enough to be out of the line of fire, should it come to that." CR>)>)
|
|
(<VERB? LISTEN>
|
|
<TELL
|
|
"You can't hear anything from the hallway." CR>)
|
|
(<VERB? KNOCK>
|
|
<TELL
|
|
"You think twice; the sniper would probably kill you first." CR>)>)
|
|
(<VERB? EXAMINE>
|
|
<TELL-ROOM-NUMBER>)
|
|
(<VERB? KICK>
|
|
<TELL
|
|
"This would no doubt alert the sniper, with dangerous results." CR>)
|
|
(<VERB? LISTEN>
|
|
<TELL
|
|
"You can't hear anything from inside the apartment; if the sniper were a
|
|
pro, you probably wouldn't hear him anyway." CR>)
|
|
(<VERB? OPEN>
|
|
<TELL
|
|
"You try the knob - the door is locked." CR>)
|
|
(<AND <VERB? KNOCK> <NOT ,AWAITING-PASSWORD>>
|
|
<SETG AWAITING-PASSWORD ,CLOCK-TIME>
|
|
<TELL
|
|
"There is a brief pause, then a heavily accented voice answers. There
|
|
is a distinct tension in his voice as he says \"Say the word,
|
|
please. Quickly!\"" CR>)
|
|
(<VERB? KNOCK>
|
|
<TELL
|
|
"There is no answer. Your delay in answering the sniper puts you
|
|
in a very dangerous position." CR>)>>
|
|
|
|
<GLOBAL AWAITING-PASSWORD <>>
|
|
|
|
<GLOBAL HIDING-BEHIND-DOOR <>>
|
|
|
|
<ROUTINE CHECK-PASSWORD ()
|
|
<COND (<AND ,AWAITING-PASSWORD
|
|
<L? <- ,CLOCK-TIME ,AWAITING-PASSWORD> 100>>
|
|
<COND (<EQUAL? <GET ,P-LEXV <GET ,OOPS-TABLE ,O-CONT>>
|
|
<GET ,SNIPER-PASSWORD-VOC ,SNIPER-CODE>>
|
|
<TELL
|
|
"The door opens slightly, and a small, dark man answers. He waves a
|
|
pistol in your direction, and glances both ways down the hall. ">
|
|
<COND (<FSET? <LOC ,TOPAZ> ,HUTBIT>
|
|
;"He's in the hallway"
|
|
<JIGS-UP
|
|
"Seeing that you have been followed, he screams with rage, \"You have
|
|
betrayed us!\" Without a moment's hesitation, he pulls the trigger, ending
|
|
your life.">)
|
|
(T
|
|
;"Not in sight..."
|
|
<TELL
|
|
"Satisfied that you were not followed, he motions you into the room.
|
|
Again, reassuring himself that you weren't followed, he ">
|
|
<COND (<SNIPER-SPOTS?>
|
|
<TELL "picks up the items on
|
|
the ground, moves them into his room, ">)>
|
|
<TELL "closes and
|
|
locks the door, then walks back to the window. \"There is not much time,\"
|
|
he says, blankly.">
|
|
<TELL CR CR
|
|
"The apartment is bare of all furniture. Kneeling in the window, perfectly
|
|
motionless, the sniper eyes his target through the sights of his high-powered
|
|
rifle." CR>
|
|
<GOTO ,SNIPER-ROOM <>>
|
|
<RTRUE>)>)
|
|
(T
|
|
<TELL
|
|
"There is no reply, though you can hear a faint shuffling of feet
|
|
through the door." CR>)>)
|
|
(,AWAITING-PASSWORD
|
|
<TELL
|
|
"There is only silence coming from within the room." CR>)
|
|
(T
|
|
<TELL
|
|
"Nobody here seems interested in your words." CR>)>>
|
|
|
|
<ROUTINE SNIPER-SPOTS? ("AUX" OBJ (OFF 0) F N (FLG <>))
|
|
<SET F <FIRST? ,SNIPER-HALL>>
|
|
<REPEAT ()
|
|
<COND (<NOT .F> <RETURN>)
|
|
(T
|
|
<SET N <NEXT? .F>>
|
|
<COND (<AND <G? <GETP .F ,P?SIZE> 2>
|
|
<NOT <EQUAL? .F ,PROTAGONIST>>>
|
|
<SET FLG T>
|
|
<RETURN>)>)>
|
|
<SET F .N>>
|
|
<COND (.FLG
|
|
<MOVE-ALL ,SNIPER-HALL ,SNIPER-ROOM>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE MOVE-ALL (FROM TO "AUX" F N)
|
|
<SET F <FIRST? .FROM>>
|
|
<REPEAT ()
|
|
<COND (<NOT .F> <RTRUE>)
|
|
(T
|
|
<SET N <NEXT? .F>>
|
|
<MOVE .F .TO>)>
|
|
<SET F .N>>>
|
|
|
|
<OBJECT SNIPER-WINDOW
|
|
(LOC SNIPER-ROOM)
|
|
(DESC "window")
|
|
(SYNONYM WINDOW)
|
|
(FLAGS NDESCBIT)
|
|
(ACTION SNIPER-WINDOW-F)>
|
|
|
|
<ROUTINE SNIPER-WINDOW-F ()
|
|
<COND (<VERB? LOOK-INSIDE EXAMINE>
|
|
<TELL
|
|
"From here, you have a panoramic view of the town square and the ceremonies
|
|
which will be going on throughout the afternoon." CR>)
|
|
(<VERB? OPEN CLOSE>
|
|
<TELL
|
|
"The sniper would kill you first." CR>)>>
|
|
|
|
<OBJECT SNIPER
|
|
(LOC SNIPER-ROOM)
|
|
(DESC "sniper")
|
|
(SYNONYM SNIPER MAN IRANIAN ASSASSIN)
|
|
(ADJECTIVE DARK)
|
|
(FLAGS NDESCBIT PERSON)
|
|
(ACTION SNIPER-F)>
|
|
|
|
<OBJECT SNIPER-CORPSE
|
|
(DESC "sniper's corpse")
|
|
(SYNONYM SNIPER CORPSE SNIPER\'S IRANIAN)
|
|
(FLAGS NDESCBIT)>
|
|
|
|
<ROUTINE SNIPER-F ("AUX" WEAPON)
|
|
<COND (<OR <VERB? KILL SHOOT>
|
|
<AND <VERB? POINT>
|
|
<EQUAL? ,PRSO ,BAD-GUN ,REMINGTON>>>
|
|
<SET WEAPON ,BAD-GUN>
|
|
<COND (<VERB? POINT>
|
|
<SET WEAPON ,PRSO>)
|
|
(,PRSI
|
|
<SET WEAPON ,PRSI>)
|
|
(<AND <NOT ,PRSI>
|
|
<IN? ,REMINGTON ,WINNER>>
|
|
<SET WEAPON ,REMINGTON>
|
|
<TELL
|
|
"[Assuming you're using the Remington.]" CR CR>)>
|
|
<COND (<NOT <EQUAL? .WEAPON ,REMINGTON ,BAD-GUN>>
|
|
<TELL "Some weapon..." CR>
|
|
<RTRUE>)>
|
|
<TELL
|
|
"You pull out ">
|
|
<COND (<EQUAL? .WEAPON ,REMINGTON>
|
|
<TELL "Topaz's">)
|
|
(T
|
|
<TELL "your">)>
|
|
<TELL " gun and fire at the sniper, who collapses
|
|
to the floor in a bloody heap. The shots will most likely draw some
|
|
attention, especially in light of the heightened security, so you make
|
|
a hasty retreat from the room.|
|
|
|
|
|
">
|
|
<COND (<OR ,TOPAZ-IN-HALL
|
|
<AND <NOT ,TOPAZ-FIGHT>
|
|
<FSET? <LOC ,TOPAZ> ,HUTBIT>>>
|
|
<JIGS-UP
|
|
"But Topaz is there, and taking no chances, fires three shots at you,
|
|
killing you almost instantly.">)
|
|
(T
|
|
<TELL
|
|
"Epilogue|
|
|
|
|
|
You return to the Soviet Union to file your report, but news of the
|
|
incident has already reached the Kremlin, via additional local KGB agents
|
|
who were on the scene and were friendly with the local police. Between the
|
|
death of the Iranian by shots fired">
|
|
<COND (<EQUAL? .WEAPON ,REMINGTON>
|
|
<TELL
|
|
", as it was painstakingly pieced together, by a gun which was stolen
|
|
from an American agent,">)
|
|
(T
|
|
<TELL " from a Russian-made revolver">)>
|
|
<TELL
|
|
" and the strange happenings on the train ending in
|
|
the loss of a coded cable ">
|
|
<COND (<EQUAL? .WEAPON ,REMINGTON>
|
|
<TELL "to that SAME agent,
|
|
a cable that had been entrusted to you">)
|
|
(T
|
|
<TELL "that was entrusted to you">)>
|
|
<JIGS-UP ", a pall of suspicion
|
|
hangs over you. A short time later, you are reassigned away from sensitive
|
|
materials, effectively ending your usefulness as an American double-agent.
|
|
A small price to pay, perhaps, for the life of the Ambassador, but you
|
|
cannot help but feel that things might have worked out much better.">)>)
|
|
(<OR <VERB? STRANGLE PUT-THROUGH KICK BITE HIT>
|
|
<AND <VERB? THROW> <EQUAL? ,PRSI ,SNIPER>>>
|
|
<JIGS-UP
|
|
"The sniper, who has been watching you carefully, spins around and fires
|
|
at you, killing you instantly.">)
|
|
(<VERB? WALK-TO>
|
|
<TELL
|
|
"The sniper notices you approach, and warns you back with his rifle. He's
|
|
too watchful for you to approach him successfully." CR>)
|
|
(<VERB? CALL TELL HELLO>
|
|
<TELL
|
|
"The sniper motions for you to be quiet. \"I mind little the annoyance
|
|
of being watched, but stay quiet or I cannot do the work.\" He regards
|
|
you with suspicion and a barely concealed contempt." CR>
|
|
<COND (<VERB? TELL> <STOP>)>
|
|
<RTRUE>)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
"He is crouching in the window, alternately staring through the sights of
|
|
his high-powered rifle and at you. He would appear to be of
|
|
Middle Eastern origin, though his nationality isn't entirely clear." CR>)>>
|
|
|
|
<OBJECT SNIPER-RIFLE
|
|
(LOC SNIPER-ROOM)
|
|
(DESC "high-powered rifle")
|
|
(SYNONYM RIFLE)
|
|
(ADJECTIVE HIGH-POWERED)
|
|
(FLAGS NDESCBIT)
|
|
(ACTION SNIPER-RIFLE-F)>
|
|
|
|
<ROUTINE SNIPER-RIFLE-F ()
|
|
<COND (<VERB? EXAMINE>
|
|
<TELL
|
|
"It appears to be an East German made weapon; very professional. There
|
|
should be no problem hitting Huttinger from this distance." CR>)
|
|
(<VERB? TAKE WALK-TO KICK>
|
|
<TELL
|
|
"The sniper, already suspicious of your presence, fends you off as you
|
|
approach." CR>)>>
|
|
|
|
<GLOBAL SNIPER-CODE <>>
|
|
|
|
<GLOBAL SNIPER-PASSWORD-TBL <PLTABLE "Besnap" "Riznik" "Belboz" "Brzni">>
|
|
|
|
<GLOBAL SNIPER-PASSWORD-VOC <PLTABLE W?BESNAP W?RIZNIK W?BELBOZ W?BRZNI>>
|
|
|
|
<ROOM SNIPER-ROOM
|
|
(LOC ROOMS)
|
|
(PATH 0)
|
|
(PATH-TIME 0)
|
|
(DESC "Sniper's Room")
|
|
(FDESC "sniper's room")
|
|
(WEST TO HALL-1 IF HALL-DOOR-E IS OPEN)
|
|
(OUT-DIR P?WEST)
|
|
(GLOBAL HALL-DOOR-E)
|
|
(ACTION SNIPER-ROOM-F)>
|
|
|
|
<ROUTINE SNIPER-ROOM-F (RARG)
|
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
|
<TELL
|
|
"The room is bare of furniture; an open window looks out over the square. ">
|
|
<COND (<IN? ,SNIPER ,HERE>
|
|
<TELL
|
|
"The sniper is perched in that window; he seems to spend his time alternately
|
|
looking through the sights and looking with suspicion at you, seemingly
|
|
as ready to fire in your direction as in Huttinger's, and with as little
|
|
concern for the outcome.">)
|
|
(T
|
|
<TELL
|
|
"The motionless body of the sniper is lying in a heap near the window.">)>
|
|
<TELL " The door to the hallway lies to the west." CR>)
|
|
(<AND <EQUAL? .RARG ,M-BEG> <IN? ,SNIPER ,HERE>>
|
|
<COND (<VERB? SAY TELL>
|
|
<TELL
|
|
"The sniper motions you to keep silent." CR>
|
|
<STOP>)
|
|
(<VERB? YELL CALL>
|
|
<TELL
|
|
"The sniper would shoot you in an instant if you tried that." CR>)>)>>
|
|
|
|
<GLOBAL APT-LETTERS <PTABLE "A" "B" "C" "D" "E" "F">>
|
|
|
|
<ROUTINE TELL-ROOM-NUMBER ("AUX" TMP)
|
|
<TELL "The door is solid oak; the number ">
|
|
<TELL N ,HALL-FLOOR>
|
|
<SET TMP <* <- <GETP ,HERE ,P?SIZE> 1> 2>>
|
|
<COND (<EQUAL? ,PRSO ,HALL-DOOR-E>
|
|
<SET TMP <+ .TMP 1>>)>
|
|
<TELL <GET ,APT-LETTERS .TMP>>
|
|
<TELL " is affixed on it in brass." CR>>
|
|
|
|
<GLOBAL CARDINALS <PLTABLE "first" "second" "third" "fourth" "fifth">>
|
|
|
|
<ROUTINE FIRE-ROOM-F (RARG "AUX" FL)
|
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
|
<TELL
|
|
"You're standing on the fire-escape ladder at the ">
|
|
<TELL <GET ,CARDINALS <SET FL <GETP ,HERE ,P?SIZE>>>>
|
|
<TELL " floor. Through the ">
|
|
;<TELL <GET ,OPEN-CLOSED-TBL <GET ,FIRE-WINDOW-TBL .FL>>>
|
|
<TELL "window in front of you, you can see a long
|
|
corridor stretching out to the north." CR>)>>
|
|
|
|
<GLOBAL CHASE-FLAG <>>
|
|
|
|
<OBJECT GLOBAL-TOPAZ
|
|
(LOC GLOBAL-OBJECTS)
|
|
(SCENARIO 3)
|
|
(DESC "Topaz")
|
|
(SYNONYM TOPAZ AGENT)
|
|
(ADJECTIVE AGENT)
|
|
(FLAGS NOABIT NOTHEBIT)
|
|
(ACTION GLOBAL-TOPAZ-F)>
|
|
|
|
<ROUTINE GLOBAL-TOPAZ-F ()
|
|
<COND (<VERB? HELLO TELL>
|
|
<TELL
|
|
"He's pretty far from you, and couldn't hear you well in this crowd noise."
|
|
CR>
|
|
<COND (<VERB? TELL> <STOP>)>
|
|
<RTRUE>)
|
|
(<AND <VERB? THROW> <EQUAL? ,PRSI ,GLOBAL-TOPAZ>>
|
|
<REMOVE ,PRSO>
|
|
<COND (<EQUAL? ,PRSO ,SODA>
|
|
<COND (<FSET? <LOC ,TOPAZ> ,PENBIT>
|
|
<TELL
|
|
"The can hits Topaz, causing him to lose his balance on the ladder.
|
|
It will take him a little while to recover his footing." CR>
|
|
<PUT ,CLOCK-TBL
|
|
,I-TOPAZ-OFF
|
|
<+ <GET ,CLOCK-TBL ,I-TOPAZ-OFF> 15>>
|
|
<SETG CLOCK-MOVE 3>)
|
|
(T
|
|
<TELL
|
|
"Topaz fends off the soda can; it must have hurt, but you haven't
|
|
gained any time." CR>
|
|
<SETG CLOCK-MOVE 2>
|
|
<RTRUE>)>)
|
|
(T
|
|
<TELL
|
|
"Topaz dodges the " D ,PRSO ". It wouldn't have done much damage,
|
|
anyhow." CR>)>)
|
|
(<VERB? CALL HELLO>
|
|
<TELL
|
|
"There's no time for conversation now; he'd kill you if he got close
|
|
enough." CR>)
|
|
(<VERB? SHOOT KILL HIT POINT>
|
|
<COND (<OR <FSET? ,HERE ,PENBIT>
|
|
<FSET? ,HERE ,HUTBIT>
|
|
<EQUAL? ,HERE ,SNIPER-ROOM>>
|
|
<TELL "You consider it, but">)
|
|
(T
|
|
<TELL
|
|
"At this distance, you'd probably take out a few innocent bystanders as
|
|
well, and">)>
|
|
<TELL
|
|
" after all ... he's on your side. Killing him would be a poor
|
|
outcome indeed, though it might improve your stature with various elements
|
|
of the KGB." CR>)
|
|
(<VERB? SEARCH>
|
|
<TELL
|
|
"You wouldn't want to get that close." CR>)
|
|
(<VERB? EXAMINE>
|
|
<COND (<TOPAZ-VISIBLE?>
|
|
<SETG CLOCK-MOVE 3>
|
|
<TELL-TOPAZ-MOVEMENT>
|
|
<RTRUE>)
|
|
(,CHASE-FLAG
|
|
<TELL
|
|
"You can't see him, but he's surely following
|
|
you, just a few seconds behind." CR>)
|
|
(T
|
|
<TELL
|
|
"You can't see Topaz now." CR>)>)
|
|
(T
|
|
<TELL
|
|
"You aren't close enough." CR>)>>
|
|
|
|
<OBJECT TOPAZ
|
|
(LOC BLDG-2)
|
|
(DESC "Topaz")
|
|
(LDESC
|
|
"Topaz is lying unconscious on the ground.")
|
|
(SYNONYM TOPAZ AGENT MAN)
|
|
(ADJECTIVE AGENT)
|
|
(FLAGS NDESCBIT NOABIT NOTHEBIT CONTBIT SURFACEBIT PERSON)
|
|
(CAPACITY 100)
|
|
(ACTION TOPAZ-F)>
|
|
|
|
<ROUTINE TOPAZ-F ()
|
|
<COND (<AND <VERB? KILL HIT SHOOT> ,HIDING-BEHIND-DOOR>
|
|
<COND (<VERB? KILL SHOOT>
|
|
<TELL "Rather than killing him, y">)
|
|
(T
|
|
<TELL "Y">)>
|
|
<TELL
|
|
"ou hit Topaz on the back of his skull">
|
|
<COND (<IN? ,BAD-GUN ,WINNER>
|
|
<TELL " with your pistol">)>
|
|
<TELL ", knocking
|
|
him out cold. You smile, thinking how neatly everything has worked out.
|
|
Assassination thwarted. Topaz makes the kill. Viper barely escapes
|
|
with his life. No bad publicity for the KGB.|
|
|
|
|
|
Sure there'll be some forms to fill out, and there'll be some
|
|
questioning, but you'll survive. You smile, and look over the scene -
|
|
one corpse, one agent with a lot of potential, but a little rough
|
|
around the edges. His story would be worth hearing someday, but
|
|
it will have to wait. You walk through the door, tipping your
|
|
hat to your unconscious counterpart. \"Until we meet again.\"|
|
|
|
|
|
|
|
|
Congratulations. You have successfully completed the final chapter
|
|
of Border Zone. If you have enjoyed this game, or if you have comments,
|
|
good or bad, please send them along to:|
|
|
|
|
|
Infocom, Inc.|
|
|
125 CambridgePark Drive|
|
|
Cambridge, MA 02140|
|
|
Attn: Topaz|
|
|
|
|
|
">
|
|
<FINISH>)
|
|
(<EQUAL? ,HERE ,SNIPER-ROOM>
|
|
<COND (<VERB? CALL YELL TELL SAY>
|
|
<STOP>
|
|
<TELL
|
|
"Unwise; he'd probably turn and shoot you." CR>)>)
|
|
(,TOPAZ-FIGHT
|
|
;"Down for the count"
|
|
<COND (<VERB? EXAMINE>
|
|
<TELL
|
|
"Topaz is sleeping blissfully at your feet; he should stay that way for
|
|
quite a while.">
|
|
<COND (<FIRST? ,TOPAZ>
|
|
<TELL " ">
|
|
<V-LOOK-INSIDE>)
|
|
(T
|
|
<CRLF>)>)
|
|
(<VERB? CLIMB-ON BOARD ENTER>
|
|
<TELL
|
|
"In this conservative country, that sort of behavior is frowned upon." CR>)
|
|
(<VERB? TELL CALL YELL ALARM>
|
|
<TELL "Too late for all that now." CR>
|
|
<COND (<VERB? TELL> <STOP>)>
|
|
<RTRUE>)
|
|
(<VERB? OPEN CLOSE>
|
|
<TELL "A surgeon, you're not." CR>)
|
|
(<VERB? MOVE PUSH>
|
|
<TELL "He's OK as he is." CR>)
|
|
(<VERB? SHOOT>
|
|
<TELL
|
|
"He's already unconscious; no need to kill him." CR>)
|
|
(<VERB? SEARCH>
|
|
<COND (<NOT <LOC ,REMINGTON>>
|
|
<MOVE ,REMINGTON ,WINNER>
|
|
<TELL
|
|
"You search Topaz, taking his gun, a Remington 38-caliber revolver.
|
|
He didn't have a scrap of ID on him." CR>)
|
|
(T
|
|
<TELL
|
|
"You don't find anything else of interest on Topaz." CR>)>)>)
|
|
(<EQUAL? ,HERE ,BLDG-2>
|
|
<COND (<VERB? HELLO TELL>
|
|
<STOP>
|
|
<TELL
|
|
"There's no time for talking to Topaz now, and what could you say now
|
|
that would make any difference to him." CR>)
|
|
(<VERB? WALK-TO>
|
|
<COND (<TOPAZ-THOUGHT 2>)
|
|
(T
|
|
<TELL
|
|
"You've already given up that idea.">)>
|
|
<CRLF>)
|
|
(<AND <VERB? THROW> <EQUAL? ,PRSI ,TOPAZ>>
|
|
<REMOVE ,PRSO>
|
|
<TELL
|
|
"The " D ,PRSO " misses Topaz, but it comes close enough to grab his
|
|
attention. He rises from his table, and starts toward you." CR>
|
|
<START-CHASE>
|
|
<RTRUE>)
|
|
(<VERB? SHOOT>
|
|
<TELL
|
|
"Out here, in public, you'd never get away; and why would you want
|
|
to shoot Topaz anyway?" CR>)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
"He is sitting at the cafe, nursing a tall drink and his wounded left arm,
|
|
and watching the crowd. He hasn't seen you yet." CR>)
|
|
(<VERB? CALL YELL WAVE-AT>
|
|
<TELL
|
|
"You call out for Topaz, who turns in your direction. He gets up and
|
|
starts to come after you." CR>
|
|
<START-CHASE>
|
|
<RTRUE>)
|
|
(<VERB? POINT>
|
|
<TELL
|
|
"He won't see you pointing the gun at him." CR>)
|
|
(T
|
|
<TELL
|
|
"You're not close enough for that." CR>)>)>>
|
|
|
|
<OBJECT REMINGTON
|
|
(DESC "Remington")
|
|
(SYNONYM GUN REVOLVER PISTOL REMINGTON)
|
|
(ADJECTIVE REMINGTON)
|
|
(FLAGS TAKEBIT)
|
|
(ACTION REMINGTON-F)>
|
|
|
|
<ROUTINE REMINGTON-F ()
|
|
<COND (<VERB? POINT>
|
|
<GUN-POINT>)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
"It is a standard-issue American weapon." CR>)>>
|
|
|
|
<ROUTINE GUN-POINT ()
|
|
<TELL "Don't bother pointing it; just shoot it at something." CR>>
|
|
|
|
<ROUTINE TOPAZ-VISIBLE? ("AUX" (TL <LOC ,TOPAZ>))
|
|
<COND (<EQUAL? ,HERE ,SNIPER-ROOM>
|
|
<RFALSE>)
|
|
(<AND <OR <EQUAL? ,HERE ,ALLEY-1 ,ALLEY-2 ,ALLEY-3>
|
|
<FSET? ,HERE ,PENBIT>>
|
|
<OR <FSET? .TL ,PENBIT>
|
|
<EQUAL? .TL ,ALLEY-1 ,ALLEY-2 ,ALLEY-3>>>
|
|
<RTRUE>)
|
|
(<AND <FSET? ,HERE ,HUTBIT>
|
|
<OR <FSET? .TL ,HUTBIT>
|
|
<EQUAL? .TL <GET ,FIRE-TBL ,HALL-FLOOR>>>>
|
|
<RTRUE>)
|
|
(<EQUAL? <GETP .TL ,P?PATH> ,HERE>
|
|
<RTRUE>)
|
|
(<AND <EQUAL? .TL ,TOPAZ-ROOM>
|
|
<EQUAL? ,HERE ,BLDG-1 ,ALLEY-1>>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE TELL-TOPAZ-MOVEMENT ("AUX" (TL <LOC ,TOPAZ>)
|
|
(NTL <GETP .TL ,P?PATH>))
|
|
<COND (<NOT <TOPAZ-DESC <>>>
|
|
<COND (,TOPAZ-FIGHT
|
|
<TELL
|
|
"Presumably, he's on the ground where you left him." CR>)
|
|
(T
|
|
<TELL
|
|
"Topaz is still following you; he's now between ">
|
|
<TELL <GETP .TL ,P?FDESC>>
|
|
<TELL " and ">
|
|
<TELL <GETP .NTL ,P?FDESC>>
|
|
<TELL ,PERIOD-CR>)>)>>
|
|
|
|
<ROUTINE TOPAZ-DESC ("OPTIONAL" (BOLD T)
|
|
"AUX" (L <LOC ,TOPAZ>) (NL <GETP .L ,P?PATH>) TMP
|
|
(NLT <- <GET ,CLOCK-TBL ,I-TOPAZ-OFF>
|
|
,CLOCK-TIME>))
|
|
<COND (<TOPAZ-VISIBLE?>
|
|
<COND (<AND <EQUAL? .L ,ALLEY-3> <EQUAL? .NL ,FIRE-1>>
|
|
<COND (.BOLD
|
|
<HLIGHT ,H-BOLD>
|
|
<CRLF>)>
|
|
<TELL "Topaz has ">
|
|
<COND (<G? .NLT 20>
|
|
<TELL "arrived at the end of the alley. He is
|
|
retrieving the trash can.">)
|
|
(<G? .NLT 15>
|
|
<TELL "retrieved the trash can and is now
|
|
positioning it under the ladder.">)
|
|
(<G? .NLT 10>
|
|
<TELL "positioned the can and is now
|
|
climbing on top of it.">)
|
|
(<G? .NLT 5>
|
|
<TELL "just about climbed within reach
|
|
of the ladder.">)
|
|
(T
|
|
<TELL "reached the ladder and is pulling
|
|
himself up onto it.">)>
|
|
<HLIGHT ,H-NORMAL>
|
|
<CRLF>)
|
|
(<AND <FSET? .L ,PENBIT>
|
|
<FSET? .NL ,PENBIT>
|
|
<OR <FSET? ,HERE ,PENBIT>
|
|
<EQUAL? ,HERE ,HALL-1>>>
|
|
<COND (.BOLD
|
|
<HLIGHT ,H-BOLD>
|
|
<CRLF>)>
|
|
<TELL "Topaz is climbing up the ladder, just ">
|
|
<TELL N <SET TMP <- <GETP ,HERE ,P?SIZE>
|
|
<GETP .L ,P?SIZE>>>>
|
|
<TELL " floor">
|
|
<COND (<NOT <EQUAL? .TMP 1>>
|
|
<TELL "s">)>
|
|
<TELL " beneath you.">
|
|
<HLIGHT ,H-NORMAL>
|
|
<CRLF>)
|
|
(<EQUAL? .L ,TOPAZ-ROOM>
|
|
<COND (.BOLD
|
|
<HLIGHT ,H-BOLD>
|
|
<CRLF>)>
|
|
<TELL
|
|
"Topaz is entangled in a group of tourists who had been eating at the cafe,
|
|
but he continues to move in your direction.">
|
|
<HLIGHT ,H-NORMAL>
|
|
<CRLF>)
|
|
(<L? .NLT 21>
|
|
<COND (.BOLD
|
|
<HLIGHT ,H-BOLD>
|
|
<CRLF>)>
|
|
<COND (<L? .NLT 6>
|
|
<TELL
|
|
"Topaz is within a few dozen yards of you; if you don't keep moving, he'll
|
|
be on top of you in just a few moments.">)
|
|
(<L? .NLT 11>
|
|
<TELL
|
|
"Topaz is closing in; he can't be more than ten seconds behind you
|
|
now.">)
|
|
(T
|
|
<TELL
|
|
"Topaz is running at full speed in your direction. He's probably only
|
|
a few dozen seconds behind you now.">)>
|
|
<HLIGHT ,H-NORMAL>
|
|
<CRLF>)>)>>
|
|
|
|
<GLOBAL TOPAZ-IN-HALL <>>
|
|
|
|
<GLOBAL TOPAZ-SPOT-COUNT 0>
|
|
|
|
<ROUTINE PICK-NAME (TBL "AUX" ENT OFF DIR)
|
|
<REPEAT ()
|
|
<SET OFF <- <* <RANDOM </ <GET ,DIR-NAMES 0> 2>> 2> 1>>
|
|
<COND (<ZERO? <SET ENT <GET ,DIR-NAMES .OFF>>>
|
|
<AGAIN>)
|
|
(T
|
|
<PUT .TBL 0 .ENT>
|
|
<PUT .TBL 1 <GET ,DIR-NAMES <+ .OFF 1>>>
|
|
<PUT ,DIR-NAMES .OFF 0>
|
|
<RTRUE>)>>>
|
|
|
|
<GLOBAL DIR-NAMES
|
|
<LTABLE "Brgmiz" 6 "Dornik" 6 "Blenka" 6 "Cyrink" 6 "Endrizen" 8
|
|
"Galnitz" 7 "Mrtzki" 6 "Profnim" 7 "Onilik" 6 "Brzni" 5
|
|
"Lebniz" 6 "Brlensk" 7 "Rivni" 5 "Cnezeni" 7 "Veznich" 7
|
|
"Lengnoz" 7 "Gentezek" 8 "Carlyni" 7 "Dimwitz" 7 "Urg" 3
|
|
"Robnerim" 8 "Bextra" 6 "Winip" 5 "Kooplitz" 8 "Sinkriz" 7
|
|
"Blivik" 6 "Flipni" 6>>
|
|
|
|
<GLOBAL APT-DIR
|
|
<LTABLE 0 0 0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0 0 0>>
|
|
|
|
<ROUTINE FILL-DIR ("AUX" CNT TBL)
|
|
<SET CNT 24>
|
|
<SET TBL <REST ,APT-DIR 2>>
|
|
<REPEAT ()
|
|
<COND (<L? <SET CNT <- .CNT 1>> 0>
|
|
<RETURN>)
|
|
(T
|
|
<PICK-NAME .TBL>
|
|
<SET TBL <REST .TBL 4>>)>>>
|
|
|
|
<ROUTINE PRINT-OPEN-WINDOWS ("AUX" (FLR 3))
|
|
<REPEAT ()
|
|
<TELL "on the " <GET ,CARDINALS .FLR> " floor, ">
|
|
<COND (<L? <GET ,APT-DIR <+ <* <- .FLR 2> 12> 8>> 0>
|
|
<TELL "near the middle">)
|
|
(T
|
|
<TELL "at the northern end">)>
|
|
<TELL " of the building">
|
|
<COND (<G? <SET FLR <+ .FLR 1>> 5>
|
|
<RETURN>)
|
|
(<EQUAL? .FLR 5>
|
|
<TELL ", and ">)
|
|
(T
|
|
<TELL ", ">)>>>
|
|
|
|
<GLOBAL SNIPER-HALL 0>
|
|
|
|
<ROUTINE PICK-OPEN-WINDOWS ("AUX" (FLR 3) NUM H)
|
|
<SETG SNIPER-FLOOR <+ <RANDOM 3> 2>>
|
|
<REPEAT ()
|
|
<PUT ,APT-DIR
|
|
<SET NUM <+ <* <- .FLR 2> 12>
|
|
<COND (<PROB 50>
|
|
<SET H ,HALL-3>
|
|
8)
|
|
(T
|
|
<SET H ,HALL-4>
|
|
4)>>>
|
|
<- 0 <GET ,APT-DIR .NUM>>>
|
|
<COND (<EQUAL? .FLR ,SNIPER-FLOOR>
|
|
<SETG SNIPER-HALL .H>
|
|
<PUT ,APT-DIR <- .NUM 1> 0>)>
|
|
<COND (<G? <SET FLR <+ .FLR 1>> 5>
|
|
<RETURN>)>>>
|
|
|
|
<ROUTINE SNIPER-INIT ()
|
|
<SETG SNIPER-CODE <RANDOM 4>>
|
|
<FILL-DIR>
|
|
<PICK-OPEN-WINDOWS>
|
|
<FILL-VACANCIES>>
|
|
|
|
<ROUTINE FILL-VACANCIES ("AUX" MAX (CNT 5) RND)
|
|
<SET MAX </ <GET ,APT-DIR 0> 2>>
|
|
<REPEAT ()
|
|
<COND (<L? <SET CNT <- .CNT 1>> 0>
|
|
<RETURN>)>
|
|
<SET RND <RANDOM .MAX>>
|
|
<COND (<NOT <L? <GET ,APT-DIR <* .RND 2>> 0>>
|
|
<PUT ,APT-DIR <- <* .RND 2> 1> 0>)
|
|
(T
|
|
<SET CNT <+ .CNT 1>>)>>>
|
|
|
|
<ROUTINE PRINT-APT-DIR ("AUX" CNT TMP TBL LEN)
|
|
<SET CNT -1>
|
|
<TELL CR
|
|
" Gribnitz Apartments" CR CR>
|
|
<TELL
|
|
" 2nd 3rd 4th 5th">
|
|
<CRLF>
|
|
<REPEAT ()
|
|
<SET TBL <REST ,APT-DIR 2>>
|
|
<CRLF>
|
|
<COND (<G? <SET CNT <+ .CNT 1>> 5>
|
|
<RETURN>)
|
|
(T
|
|
<PRINTC <+ .CNT %<ASCII !\A>>>
|
|
<TELL ": ">
|
|
<SET TBL <REST .TBL <* .CNT 4>>>
|
|
<SET TMP 0>
|
|
<REPEAT ()
|
|
<COND (<G? <SET TMP <+ .TMP 1>> 4>
|
|
<RETURN>)
|
|
(<ZERO? <GET .TBL 0>>
|
|
<TELL " ">)
|
|
(T
|
|
<TELL <GET .TBL 0>>
|
|
<SET LEN <GET .TBL 1>>
|
|
<COND (<L? .LEN 0>
|
|
;<COND (,DEBUG
|
|
<TELL "*">)>
|
|
<SET LEN <- 0 .LEN>>)>
|
|
<PRINT-SPACES <- 9 .LEN>>)>
|
|
<SET TBL <+ .TBL 24>>>)>>>
|
|
|
|
<GLOBAL FLOOR-PROPS
|
|
<LTABLE 0 P?2ND-FLOOR P?3RD-FLOOR P?4TH-FLOOR P?5TH-FLOOR>>
|
|
|
|
<OBJECT HALL-21>
|
|
<OBJECT HALL-31>
|
|
<OBJECT HALL-41>
|
|
<OBJECT HALL-51>
|
|
<OBJECT HALL-22>
|
|
<OBJECT HALL-32>
|
|
<OBJECT HALL-42>
|
|
<OBJECT HALL-52>
|
|
<OBJECT HALL-23>
|
|
<OBJECT HALL-33>
|
|
<OBJECT HALL-43>
|
|
<OBJECT HALL-53>
|
|
<OBJECT HALL-24>
|
|
<OBJECT HALL-34>
|
|
<OBJECT HALL-44>
|
|
<OBJECT HALL-54> |