Revision 9 (Original Source)

This commit is contained in:
historicalsource 2019-04-14 01:02:51 -04:00
commit ecea3862ce
31 changed files with 25101 additions and 0 deletions

1
README.md Normal file
View file

@ -0,0 +1 @@
# borderzone

984
bad.zabstr Normal file
View file

@ -0,0 +1,984 @@
<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>
<DEFINE-ROUTINE TOPAZ-THOUGHT>
<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)>
<DEFINE-ROUTINE BAD-GUN-F>
<OBJECT BAD-WATCH (DESC "wristwatch") (SYNONYM CLOCK WATCH WRISTWATCH) (
ADJECTIVE WRIST) (FLAGS WEARBIT WORNBIT READBIT) (ACTION BAD-WATCH-F)>
<DEFINE-ROUTINE BAD-WATCH-F>
<DEFINE-ROUTINE I-ASSASSINATION>
<DEFINE-ROUTINE I-FESTIVITIES>
<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>>
<DEFINE-ROUTINE SQUARE-VIEW?>
<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)>
<DEFINE-ROUTINE MATCHES-F>
<OBJECT CIGARETTE (DESC "cigarette") (SYNONYM CIGARETTE) (FLAGS TAKEBIT) (SIZE
2) (ACTION CIGARETTE-F)>
<DEFINE-ROUTINE CIGARETTE-F>
<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.")>
<DEFINE-ROUTINE BB2-MOVE>
<DEFINE-ROUTINE BB1-MOVE>
<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)>
<DEFINE-ROUTINE BUILDING-F>
<OBJECT ANTIQUE-SIGN (LOC BLDG-8) (DESC "sign") (SYNONYM SIGN) (FLAGS READBIT
NDESCBIT) (ACTION ANTIQUE-SIGN-F)>
<DEFINE-ROUTINE ANTIQUE-SIGN-F>
<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)>
<DEFINE-ROUTINE ANTIQUE-SHOP-F>
<OBJECT CROWD (LOC GLOBAL-OBJECTS) (DESC "crowd of people") (SYNONYM PEOPLE
CROWD MASSES SPECTATORS TOURIST TOURISTS) (SCENARIO 3) (ACTION CROWD-F)>
<DEFINE-ROUTINE CROWD-F>
<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)>
<DEFINE-ROUTINE ANTIQUE-STORAGE-F>
<OBJECT CURIOS (LOC LOCAL-GLOBALS) (DESC "curio") (SYNONYM CURIO CURIOS
ANTIQUES ANTIQUE) (ADJECTIVE RARE) (ACTION CURIOS-F)>
<DEFINE-ROUTINE CURIOS-F>
<OBJECT RARE-BOOKS (LOC LOCAL-GLOBALS) (DESC "rare book") (SYNONYM BOOK BOOKS
MANUSCRIPT FOLIO FOLIOS) (ADJECTIVE RARE OLD) (ACTION RARE-BOOKS-F)>
<DEFINE-ROUTINE RARE-BOOKS-F>
<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)>
<DEFINE-ROUTINE ANTIQUE-COUNTER-DOOR-F>
<OBJECT ANTIQUE-CONVERSATION (LOC ANTIQUE-STORAGE) (DESC "conversation") (
SYNONYM CONVERSATION) (FLAGS NDESCBIT) (ACTION ANTIQUE-CONVERSATION-F)>
<DEFINE-ROUTINE ANTIQUE-CONVERSATION-F>
<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)>
<DEFINE-ROUTINE POLICE-F>
<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)
>
<DEFINE-ROUTINE ANTIQUE-STREET-DOOR-F>
<DEFINE-ROUTINE I-CUSTOMER-LEAVES>
<DEFINE-ROUTINE COUNTER-ENTER>
<DEFINE-ROUTINE I-POLICE-ENTER>
<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)>
<DEFINE-ROUTINE COUNTER-F>
<DEFINE-ROUTINE PROPRIETOR-F>
<OBJECT CUSTOMER (LOC ANTIQUE-SHOP) (DESC "customer") (SYNONYM CUSTOMER MAN) (
FLAGS PERSON NDESCBIT) (ACTION CUSTOMER-F)>
<DEFINE-ROUTINE CUSTOMER-F>
<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.|
">
<DEFINE-ROUTINE ANTIQUE-ENTER>
<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)>
<DEFINE-ROUTINE GLOBAL-WINDOW-F>
<DEFINE-ROUTINE GLOBAL-BLDGS-F>
<OBJECT SQUARE-BUILDINGS (LOC TOWN-SQUARE) (DESC "building") (SYNONYM BUILDING
BUILDINGS WINDOW WINDOWS APARTMENT) (ADJECTIVE APARTMENT) (FLAGS NDESCBIT) (
ACTION SQUARE-BUILDINGS-F)>
<DEFINE-ROUTINE SQUARE-BUILDINGS-F>
<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)>
<DEFINE-ROUTINE COLUMN-F>
<OBJECT DAIS (LOC TOWN-SQUARE) (DESC "dais") (SYNONYM DAIS PODIUM) (FLAGS
NDESCBIT) (ACTION DAIS-F)>
<DEFINE-ROUTINE DAIS-F>
<OBJECT HUTTINGER (LOC TOWN-SQUARE) (DESC "Huttinger") (SYNONYM HUTTINGER
AMBASSADOR) (ADJECTIVE AMBASSADOR) (FLAGS NDESCBIT PERSON NOABIT NOTHEBIT) (
ACTION HUTTINGER-F)>
<DEFINE-ROUTINE HUTTINGER-F>
<OBJECT MAYOR (LOC TOWN-SQUARE) (DESC "mayor") (SYNONYM MAYOR) (FLAGS NDESCBIT
PERSON) (ACTION MAYOR-F)>
<DEFINE-ROUTINE MAYOR-F>
<OBJECT DIGNITARIES (LOC TOWN-SQUARE) (DESC "dignitary") (SYNONYM DIGNITARIES
DIGNITARY) (FLAGS NDESCBIT PERSON) (ACTION DIGNITARIES-F)>
<DEFINE-ROUTINE DIGNITARIES-F>
<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)>
<DEFINE-ROUTINE APARTMENT-GUARDS-F>
<OBJECT DIRECTORY (LOC APARTMENT-LOBBY) (DESC "directory") (SYNONYM DIRECTORY
LIST LISTING) (ADJECTIVE BUILDING APARTMENT) (FLAGS NDESCBIT READBIT) (ACTION
DIRECTORY-F)>
<DEFINE-ROUTINE DIRECTORY-F>
<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)>
<DEFINE-ROUTINE APARTMENT-LOBBY-F>
<OBJECT ELEVATOR (LOC LOCAL-GLOBALS) (DESC "elevator") (SYNONYM ELEVATOR LIFT)
(ACTION ELEVATOR-F)>
<DEFINE-ROUTINE ELEVATOR-F>
<OBJECT ELEVATOR-OPERATOR (LOC LOCAL-GLOBALS) (DESC "older woman") (SYNONYM
WOMAN OPERATOR) (ADJECTIVE OLD OLDER) (FLAGS PERSON) (ACTION
ELEVATOR-OPERATOR-F)>
<DEFINE-ROUTINE ELEVATOR-OPERATOR-F>
<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)>
<DEFINE-ROUTINE WAITER-F>
<OBJECT CAFE-FOOD (LOC BLDG-2) (DESC "food") (SYNONYM FOOD LUNCH MEAL EATS) (
FLAGS NDESCBIT) (ACTION CAFE-FOOD-F)>
<DEFINE-ROUTINE CAFE-FOOD-F>
<OBJECT CAFE-TABLE (LOC BLDG-2) (DESC "table") (SYNONYM TABLE CHAIR SEAT) (
FLAGS NDESCBIT) (ACTION CAFE-TABLE-F)>
<DEFINE-ROUTINE CAFE-TABLE-F>
<DEFINE-ROUTINE BLDG-2-F>
<DEFINE-ROUTINE I-TOPAZ-SPOTS>
<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)
>
<DEFINE-ROUTINE ALLEY-MOVE>
<DEFINE-ROUTINE ALLEY-1-F>
<OBJECT BUSINESS-CARD (DESC "business card") (SYNONYM CARD) (ADJECTIVE BUSINESS
) (SIZE 2) (FLAGS READBIT TAKEBIT) (ACTION BUSINESS-CARD-F)>
<DEFINE-ROUTINE BUSINESS-CARD-F>
<DEFINE-ROUTINE CAN-BE-FOUND>
<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)>
<DEFINE-ROUTINE START-CHASE>
<ROOM TOPAZ-ROOM (LOC ROOMS) (DESC "Topaz Start Point") (FDESC
"table he was seated at") (PATH BLDG-2) (PATH-TIME 15)>
<DEFINE-ROUTINE I-TOPAZ-END>
<DEFINE-ROUTINE TOPAZ-KILLS>
<DEFINE-ROUTINE I-TOPAZ>
<DEFINE-ROUTINE REAL-HALL>
<DEFINE-ROUTINE HALL-OBJECT?>
<GLOBAL FIGHT-IN-PROGRESS <>>
<GLOBAL TOPPLE-CHASE 0>
<GLOBAL TOPPLED-CART-TRANSIENT <PLTABLE ALLEY-1 ALLEY-2>>
<DEFINE-ROUTINE IN-PUBLIC?>
<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)>
<DEFINE-ROUTINE FOOD-F>
<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)>
<DEFINE-ROUTINE VENDOR-STUFF-F>
<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)>
<DEFINE-ROUTINE VENDOR-F>
<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 <>>
<DEFINE-ROUTINE VENDOR-CART-F>
<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.">
<DEFINE-ROUTINE DYNAMIC-DESC>
<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)>
<DEFINE-ROUTINE ALLEY-23>
<GLOBAL CART-TOPPLED? <>>
<DEFINE-ROUTINE ALLEY-2-F>
<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)>
<DEFINE-ROUTINE ALLEY-3-F>
<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)>
<DEFINE-ROUTINE BOXES-F>
<GLOBAL ON-THE-CAN <>>
<DEFINE-ROUTINE TRASH-CAN-F>
<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 <>>
<DEFINE-ROUTINE FIRE-WINDOW-F>
<OBJECT ALLEY (LOC LOCAL-GLOBALS) (DESC "alley") (SYNONYM ALLEY) (ADJECTIVE
BLIND) (FLAGS VOWELBIT) (ACTION ALLEY-F)>
<DEFINE-ROUTINE ALLEY-F>
<OBJECT FIRE-LADDER (LOC LOCAL-GLOBALS) (DESC "ladder") (SYNONYM RUNG RUNGS
LADDER FIRE-ESCAPE ESCAPE) (ADJECTIVE FIRE-ESCAPE FIRE) (ACTION FIRE-LADDER-F)>
<DEFINE-ROUTINE FIRE-LADDER-F>
<DEFINE-ROUTINE FIRE-LADDER-REACH>
<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>>
<DEFINE-ROUTINE FIRE-1-MOVE>
<DEFINE-ROUTINE FIRE-2-MOVE>
<DEFINE-ROUTINE FIRE-3-MOVE>
<DEFINE-ROUTINE FIRE-4-MOVE>
<DEFINE-ROUTINE FIRE-5-MOVE>
<DEFINE-ROUTINE FIRE-MOVE>
<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)>
<DEFINE-ROUTINE LEAVE-HALL>
<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)>
<DEFINE-ROUTINE ELEVATOR-ROOM-F>
<DEFINE-ROUTINE ELEVATOR-SEQUENCE>
<DEFINE-ROUTINE I-ELEVATOR-LEAVES>
<OBJECT ELEVATOR-DOOR (LOC LOCAL-GLOBALS) (DESC "elevator door") (SYNONYM DOOR)
(ADJECTIVE ELEVATOR) (FLAGS DOORBIT) (ACTION ELEVATOR-DOOR-F)>
<DEFINE-ROUTINE ELEVATOR-DOOR-F>
<OBJECT ELEVATOR-BUTTON (LOC LOCAL-GLOBALS) (DESC "call button") (SYNONYM
BUTTON) (ADJECTIVE WHITE CALL) (ACTION ELEVATOR-BUTTON-F)>
<DEFINE-ROUTINE ELEVATOR-BUTTON-F>
<DEFINE-ROUTINE I-ELEVATOR-ARRIVES>
<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)>
<DEFINE-ROUTINE HALL-DOOR-F>
<GLOBAL AWAITING-PASSWORD <>>
<GLOBAL HIDING-BEHIND-DOOR <>>
<DEFINE-ROUTINE CHECK-PASSWORD>
<DEFINE-ROUTINE SNIPER-SPOTS?>
<DEFINE-ROUTINE MOVE-ALL>
<OBJECT SNIPER-WINDOW (LOC SNIPER-ROOM) (DESC "window") (SYNONYM WINDOW) (FLAGS
NDESCBIT) (ACTION SNIPER-WINDOW-F)>
<DEFINE-ROUTINE SNIPER-WINDOW-F>
<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)>
<DEFINE-ROUTINE SNIPER-F>
<OBJECT SNIPER-RIFLE (LOC SNIPER-ROOM) (DESC "high-powered rifle") (SYNONYM
RIFLE) (ADJECTIVE HIGH-POWERED) (FLAGS NDESCBIT) (ACTION SNIPER-RIFLE-F)>
<DEFINE-ROUTINE SNIPER-RIFLE-F>
<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)>
<DEFINE-ROUTINE SNIPER-ROOM-F>
<GLOBAL APT-LETTERS <PTABLE "A" "B" "C" "D" "E" "F">>
<DEFINE-ROUTINE TELL-ROOM-NUMBER>
<GLOBAL CARDINALS <PLTABLE "first" "second" "third" "fourth" "fifth">>
<DEFINE-ROUTINE FIRE-ROOM-F>
<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)>
<DEFINE-ROUTINE GLOBAL-TOPAZ-F>
<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)>
<DEFINE-ROUTINE TOPAZ-F>
<OBJECT REMINGTON (DESC "Remington") (SYNONYM GUN REVOLVER PISTOL REMINGTON) (
ADJECTIVE REMINGTON) (FLAGS TAKEBIT) (ACTION REMINGTON-F)>
<DEFINE-ROUTINE REMINGTON-F>
<DEFINE-ROUTINE GUN-POINT>
<DEFINE-ROUTINE TOPAZ-VISIBLE?>
<DEFINE-ROUTINE TELL-TOPAZ-MOVEMENT>
<DEFINE-ROUTINE TOPAZ-DESC>
<GLOBAL TOPAZ-IN-HALL <>>
<GLOBAL TOPAZ-SPOT-COUNT 0>
<DEFINE-ROUTINE PICK-NAME>
<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>>
<DEFINE-ROUTINE FILL-DIR>
<DEFINE-ROUTINE PRINT-OPEN-WINDOWS>
<GLOBAL SNIPER-HALL 0>
<DEFINE-ROUTINE PICK-OPEN-WINDOWS>
<DEFINE-ROUTINE SNIPER-INIT>
<DEFINE-ROUTINE FILL-VACANCIES>
<DEFINE-ROUTINE PRINT-APT-DIR>
<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>

3627
bad.zil Normal file

File diff suppressed because it is too large Load diff

1437
border.zabstr Normal file

File diff suppressed because it is too large Load diff

5098
border.zil Normal file

File diff suppressed because it is too large Load diff

396
bystander.zabstr Normal file
View file

@ -0,0 +1,396 @@
<ROOM PLATFORM-1 (LOC ROOMS) (DESC "Platform, North End") (SOUTH PER
PLATFORM-MOVE-2) (NORTH SORRY
"The platform ends here at a tall fence, marking the actual border between
Frobnia and Litzenburg.") (WEST SORRY
"A guard prevents you from boarding the train. \"Nye mneshna pletska bli!\"") (
GLOBAL PLAT-TRAIN PLAT-GUARDS PLAT-PEOPLE PLAT-FENCE) (FLAGS PLATFORMBIT) (
ACTION PLATFORM-ROOM-F)>
<OBJECT PLAT-FENCE (LOC LOCAL-GLOBALS) (DESC "fence") (SYNONYM FENCE) (
ADJECTIVE BORDER) (ACTION PLAT-FENCE-F)>
<DEFINE-ROUTINE PLAT-FENCE-F>
<ROOM PLATFORM-2 (LOC ROOMS) (DESC "Train Platform") (NORTH PER PLATFORM-MOVE-1
) (SOUTH PER PLATFORM-MOVE-3) (WEST SORRY
"A guard prevents you from boarding the train. \"Nye mneshna pletska bli!\"") (
GLOBAL PLAT-TRAIN PLAT-GUARDS PLAT-PEOPLE) (FLAGS PLATFORMBIT) (ACTION
PLATFORM-ROOM-F)>
<ROOM PLATFORM-3 (LOC ROOMS) (DESC "Train Platform") (NORTH PER PLATFORM-MOVE-2
) (SOUTH PER PLATFORM-MOVE-4) (WEST SORRY
"A guard prevents you from boarding the train. \"Nye mneshna pletska bli!\"") (
GLOBAL PLAT-TRAIN PLAT-GUARDS PLAT-PEOPLE) (FLAGS PLATFORMBIT) (ACTION
PLATFORM-ROOM-F)>
<ROOM PLATFORM-4 (LOC ROOMS) (DESC "Platform, South End") (NORTH PER
PLATFORM-MOVE-3) (SOUTH SORRY
"The platform ends here, and a guard prevents you from going any farther.") (
WEST SORRY "A guard prevents you from boarding the train. \"Nye mneshna pletska bli!\""
) (GLOBAL PLAT-TRAIN PLAT-GUARDS PLAT-PEOPLE) (FLAGS PLATFORMBIT) (ACTION
PLATFORM-ROOM-F)>
<DEFINE-ROUTINE PLATFORM-MOVE-1>
<DEFINE-ROUTINE PLATFORM-MOVE-2>
<DEFINE-ROUTINE PLATFORM-MOVE-3>
<DEFINE-ROUTINE PLATFORM-MOVE-4>
<GLOBAL FOLLOW-WARNING <>>
<GLOBAL FOLLOW-SURE <>>
<DEFINE-ROUTINE PLATFORM-MOVE>
<DEFINE-ROUTINE PLATFORM-ROOM-F>
<OBJECT PLAT-GUARDS (LOC LOCAL-GLOBALS) (DESC "guard") (SYNONYM GUARD GUARDS) (
FLAGS PERSON) (ACTION PLAT-GUARDS-F)>
<DEFINE-ROUTINE PLAT-GUARDS-F>
<OBJECT PLAT-PEOPLE (LOC LOCAL-GLOBALS) (DESC "crowd of people") (SYNONYM
PEOPLE MEN WOMEN CHILDREN CROWD THRONG) (ACTION PLAT-PEOPLE-F)>
<DEFINE-ROUTINE PLAT-PEOPLE-F>
<OBJECT GLOBAL-CONTACT (LOC GLOBAL-OBJECTS) (DESC "contact") (SYNONYM CONTACT)
(ACTION GLOBAL-CONTACT-F)>
<DEFINE-ROUTINE GLOBAL-CONTACT-F>
<GLOBAL SMALL-NUMS-TBL <PLTABLE "one compartment" "two compartments"
"three compartments" "four compartments" "five compartments">>
<OBJECT GLOBAL-COMPARTMENT (LOC GLOBAL-OBJECTS) (DESC "compartment") (SYNONYM
COMPARTMENT) (ADJECTIVE MY) (SCENARIO 1) (ACTION GLOBAL-COMPARTMENT-F)>
<DEFINE-ROUTINE GLOBAL-COMPARTMENT-F>
<CONSTANT GET-THERE-FIRST "You'll have to get there first.">
<ROOM COMP-5 (LOC ROOMS) (DESC "Your Compartment") (OUT PER COMP-EXIT) (EAST
PER COMP-EXIT) (WEST SORRY "Your situation is serious, but not desperate.") (
GLOBAL COMP-5-DOOR) (ACTION COMP-5-F)>
<DEFINE-ROUTINE COMP-5-F>
<OBJECT COMP-CORD (LOC COMP-5) (DESC "emergency stop cord") (SYNONYM CORD ROPE
HANDLE) (ADJECTIVE EMERGENCY STOP) (FLAGS NDESCBIT) (ACTION COMP-CORD-F)>
<DEFINE-ROUTINE COMP-CORD-F>
<OBJECT COMP-RACK (LOC COMP-5) (DESC "luggage rack") (SYNONYM RACK) (ADJECTIVE
LUGGAGE) (FLAGS OPENBIT TRANSBIT SEARCHBIT NDESCBIT CONTBIT SURFACEBIT) (
CAPACITY 100) (ACTION COMP-RACK-F)>
<DEFINE-ROUTINE COMP-RACK-F>
<OBJECT COMP-SEAT-BACK (LOC COMP-5) (DESC "rear-facing seat") (SYNONYM SEAT
BENCH) (ADJECTIVE BACK-FACING REAR-FACING REAR FACING) (FLAGS NDESCBIT CONTBIT
SURFACEBIT OPENBIT SEARCHBIT) (CAPACITY 100) (ACTION COMP-SEAT-F)>
<OBJECT UNDER-SEAT (LOC COMP-5) (DESC "space under the rear bench") (SYNONYM
$XY) (FLAGS NDESCBIT CONTBIT OPENBIT SEARCHBIT TRANSBIT)>
<OBJECT COMP-SEAT-FRONT (LOC COMP-5) (DESC "front-facing seat") (SYNONYM SEAT
BENCH) (ADJECTIVE FRONT-FACING FORWARD-FACING FRONT FORWARD FACING) (FLAGS
NDESCBIT CONTBIT SURFACEBIT SEARCHBIT OPENBIT) (CAPACITY 100) (ACTION
COMP-SEAT-F)>
<DEFINE-ROUTINE COMP-SEAT-F>
<OBJECT COMP-WINDOW (LOC COMP-5) (DESC "window") (SYNONYM WINDOW) (FLAGS
NDESCBIT DOORBIT) (ACTION COMP-WINDOW-F)>
<DEFINE-ROUTINE COMP-WINDOW-F>
<OBJECT PASS-WINDOW (LOC LOCAL-GLOBALS) (DESC "window") (SYNONYM WINDOW) (
ACTION PASS-WINDOW-F)>
<DEFINE-ROUTINE PASS-WINDOW-F>
<OBJECT COMP-5-DOOR (LOC LOCAL-GLOBALS) (DESC "compartment door") (SYNONYM DOOR
) (ADJECTIVE COMPARTMENT) (FLAGS DOORBIT)>
<GLOBAL GUARD-NOTICE-FLAG <>>
<OBJECT GLOBAL-BAD-SPY (LOC GLOBAL-OBJECTS) (DESC "man in the trench coat") (
SYNONYM MAN SPY VIPER) (ADJECTIVE BAD) (SCENARIO 1) (TRANSIENT <PLTABLE PASS-1
PASS-2 PASS-3 PASS-4 PASS-5 PASS-6 COMP-5 LAVATORY>) (ACTION GLOBAL-BAD-SPY-F)>
<DEFINE-ROUTINE GLOBAL-BAD-SPY-F>
<DEFINE-ROUTINE PASS-F>
<DEFINE-ROUTINE HST?>
<GLOBAL PASS-TELLS <PLTABLE "northernmost compartment"
"second northernmost compartment" "middle compartment"
"compartment next to your own" "" "lavatory">>
<GLOBAL CURRENT-PASS <>>
<ROOM PASS-1 (LOC ROOMS) (DESC "Outside 1st Compartment") (IN-DIR P?WEST) (WEST
PER COMP-MOVE) (NORTH SORRY "A stern-faced guard refuses to let you pass.") (
SOUTH PER PASS-MOVE-2) (GLOBAL COMP-N-DOOR PASS-WINDOW BY-GUARDS BY-GUN) (FLAGS
HUTBIT) (NS 1) (EJECT
"Two newlyweds here are enjoying their privacy, and not enjoying your
presence. The woman, who appears to be the man of the house, escorts
you out of the door.") (ACTION PASS-F)>
<ROOM PASS-2 (LOC ROOMS) (DESC "Outside 2nd Compartment") (IN-DIR P?WEST) (WEST
PER COMP-MOVE) (NORTH PER PASS-MOVE-1) (SOUTH PER PASS-MOVE-3) (GLOBAL
COMP-N-DOOR PASS-WINDOW BY-GUARDS BY-GUN) (FLAGS HUTBIT) (NS 2) (EJECT
"A family of five is having what appears to be a rather heated argument.
You are nearly socked in the head before you retreat to the corridor.
The door slams behind you.") (ACTION PASS-F)>
<ROOM PASS-3 (LOC ROOMS) (DESC "Outside 3rd Compartment") (IN-DIR P?WEST) (WEST
PER COMP-MOVE) (NORTH PER PASS-MOVE-2) (SOUTH PER PASS-MOVE-4) (GLOBAL
COMP-N-DOOR PASS-WINDOW BY-GUARDS BY-GUN) (FLAGS HUTBIT) (NS 3) (EJECT
"This smoke-filled compartment is filled with a dozen or more men, playing
some sort of card game. They regard you with hostility, and force you
back into the corridor.") (ACTION PASS-F)>
<ROOM PASS-4 (LOC ROOMS) (DESC "Outside 4th Compartment") (IN-DIR P?WEST) (WEST
PER COMP-MOVE) (NORTH PER PASS-MOVE-3) (SOUTH PER PASS-MOVE-5) (GLOBAL
COMP-N-DOOR PASS-WINDOW BY-GUARDS BY-GUN) (FLAGS HUTBIT) (NS 4) (EJECT
"Three women are here, busily engaging in what probably amounts to gossip.
They stop abruptly as you enter, and stare at you stonily. After a moment,
you mumble some apologetic word and return to the corridor.") (ACTION PASS-F)>
<DEFINE-ROUTINE COMP-5-ENTER>
<ROOM PASS-5 (LOC ROOMS) (DESC "Outside Your Compartment") (IN-DIR P?WEST) (
WEST PER COMP-5-ENTER) (NORTH PER PASS-MOVE-4) (SOUTH PER PASS-MOVE-6) (GLOBAL
COMP-5-DOOR PASS-WINDOW BY-GUARDS BY-GUN) (FLAGS HUTBIT) (NS 5) (ACTION PASS-F)
>
<ROOM PASS-6 (LOC ROOMS) (DESC "Outside Lavatory") (IN PER LAVATORY-MOVE) (WEST
PER LAVATORY-MOVE) (SOUTH SORRY "A stern-faced guard refuses to let you pass.")
(NORTH PER PASS-MOVE-5) (GLOBAL LAVATORY-DOOR PASS-WINDOW BY-GUARDS BY-GUN) (
FLAGS HUTBIT) (NS 6) (ACTION PASS-F)>
<DEFINE-ROUTINE COMP-MOVE>
<DEFINE-ROUTINE LAVATORY-MOVE>
<DEFINE-ROUTINE PASS-MOVE-1>
<DEFINE-ROUTINE PASS-MOVE-2>
<DEFINE-ROUTINE PASS-MOVE-3>
<DEFINE-ROUTINE PASS-MOVE-4>
<DEFINE-ROUTINE PASS-MOVE-5>
<DEFINE-ROUTINE PASS-MOVE-6>
<DEFINE-ROUTINE PASS-MOVE>
<DEFINE-ROUTINE DOC-CHECK>
<DEFINE-ROUTINE HST-CHECK>
<GLOBAL BAD-SPY-SEEN <>>
<DEFINE-ROUTINE LAVATORY-EXIT>
<DEFINE-ROUTINE COMP-EXIT>
<GLOBAL HST-FLAG <>>
<ROOM COMP-N (LOC ROOMS) (DESC "Compartment") (ACTION COMP-N-F)>
<DEFINE-ROUTINE COMP-N-F>
<OBJECT COMP-N-DOOR (LOC LOCAL-GLOBALS) (DESC "compartment door") (SYNONYM DOOR
) (ADJECTIVE COMPARTMENT) (FLAGS DOORBIT) (ACTION COMP-N-DOOR-F)>
<DEFINE-ROUTINE COMP-N-DOOR-F>
<ROOM LAVATORY (LOC ROOMS) (DESC "Lavatory") (OUT PER LAVATORY-EXIT) (EAST PER
LAVATORY-EXIT) (GLOBAL LAVATORY-DOOR) (ACTION LAVATORY-F)>
<DEFINE-ROUTINE LAVATORY-F>
<OBJECT LAVATORY-DOOR (LOC LOCAL-GLOBALS) (DESC "lavatory door") (SYNONYM DOOR)
(ADJECTIVE LAVATORY) (FLAGS DOORBIT)>
<OBJECT LAV-TOILET (LOC LAVATORY) (DESC "toilet") (SYNONYM TOILET BOWL HANDLE)
(ADJECTIVE TOILET) (FLAGS NDESCBIT OPENBIT SEARCHBIT CONTBIT) (CAPACITY 20) (
ACTION LAV-TOILET-F)>
<DEFINE-ROUTINE LAV-TOILET-F>
<DEFINE-ROUTINE I-SHRED>
<GLOBAL DRAIN-TBL <LTABLE 0 0 0 0 0 0 0 0 0 0>>
<DEFINE-ROUTINE DOWN-THE-DRAIN>
<OBJECT GLOBAL-LAVATORY (LOC GLOBAL-OBJECTS) (DESC "lavatory") (SYNONYM
LAVATORY WC BATHROOM) (SCENARIO 1) (ACTION GLOBAL-LAVATORY-F)>
<DEFINE-ROUTINE GLOBAL-LAVATORY-F>
<OBJECT BRIEFCASE (LOC COMP-5) (DESC "briefcase") (SYNONYM CASE BRIEFCASE) (
FLAGS TAKEBIT CONTBIT SEARCHBIT TRYTAKEBIT) (SCENARIO 1) (CAPACITY 65) (SIZE 16
) (ACTION BRIEFCASE-F)>
<DEFINE-ROUTINE BRIEFCASE-F>
<OBJECT CAMERA-BAG (LOC COMP-5) (DESC "camera bag") (SYNONYM BAG) (ADJECTIVE
CAMERA) (FLAGS TAKEBIT CONTBIT OPENBIT SEARCHBIT) (SCENARIO 1) (CAPACITY 40) (
SIZE 41)>
<OBJECT CAMERA (LOC CAMERA-BAG) (DESC "camera") (SYNONYM CAMERA) (FLAGS TAKEBIT
CONTBIT SEARCHBIT) (SCENARIO 1) (SIZE 25) (ACTION CAMERA-F)>
<DEFINE-ROUTINE CAMERA-F>
<OBJECT COLOR-ROLL (LOC CAMERA) (DESC "roll of color film") (SYNONYM ROLL FILM)
(ADJECTIVE COLOR) (FLAGS TAKEBIT FILMBIT) (SCENARIO 1) (SIZE 4) (GENERIC
GENERIC-FILM) (SHOT 23) (PHOTO <TABLE -1 -1>) (ACTION COLOR-ROLL-F)>
<DEFINE-ROUTINE COLOR-ROLL-F>
<OBJECT EXPOSED-ROLL (LOC CAMERA-BAG) (DESC "old roll of film") (SYNONYM ROLL
FILM) (ADJECTIVE EXPOSED OLD) (FLAGS TAKEBIT FILMBIT CONTBIT OPENBIT VOWELBIT
AN) (SCENARIO 1) (SIZE 4) (GENERIC GENERIC-FILM) (SHOT -1) (ACTION
EXPOSED-ROLL-F)>
<GLOBAL FILM-RUINED <>>
<OBJECT PHONY-FILM (DESC "film") (LOC GLOBAL-OBJECTS) (FLAGS FILMBIT) (SCENARIO
1) (ACTION PHONY-FILM-F)>
<DEFINE-ROUTINE PHONY-FILM-F>
<DEFINE-ROUTINE GENERIC-FILM>
<DEFINE-ROUTINE EXPOSED-ROLL-F>
<DEFINE-ROUTINE REWIND-FILM>
<OBJECT GLOBAL-FILM (LOC GLOBAL-OBJECTS) (DESC "film") (SYNONYM FILM) (
ADJECTIVE COLOR EXPOSED OLD) (ACTION GLOBAL-FILM-F)>
<DEFINE-ROUTINE GLOBAL-FILM-F>
<OBJECT TOILET-KIT (LOC BRIEFCASE) (DESC "toilet kit") (SYNONYM KIT) (ADJECTIVE
TOILET) (FLAGS TAKEBIT CONTBIT SEARCHBIT) (SCENARIO 1) (SIZE 15) (CAPACITY 14)>
<OBJECT TOOTHBRUSH (LOC TOILET-KIT) (DESC "toothbrush") (SYNONYM BRUSH
TOOTHBRUSH) (FLAGS TAKEBIT) (SCENARIO 1) (SIZE 3) (ACTION TOOTHBRUSH-F)>
<DEFINE-ROUTINE TOOTHBRUSH-F>
<OBJECT TEETH (LOC GLOBAL-OBJECTS) (DESC "your teeth") (SYNONYM TEETH) (
ADJECTIVE MY) (ACTION TEETH-F)>
<DEFINE-ROUTINE TEETH-F>
<OBJECT BYSTANDER-WATCH (DESC "wristwatch") (SYNONYM CLOCK WATCH WRISTWATCH) (
ADJECTIVE WRIST) (FLAGS WEARBIT WORNBIT READBIT) (ACTION BYSTANDER-WATCH-F)>
<DEFINE-ROUTINE BYSTANDER-WATCH-F>
<OBJECT TWEEZERS (LOC TOILET-KIT) (DESC "pair of tweezers") (SYNONYM PAIR
TWEEZERS) (FLAGS TAKEBIT) (SCENARIO 1) (SIZE 4) (ACTION TWEEZERS-F)>
<DEFINE-ROUTINE TWEEZERS-F>
<OBJECT PICTURE (LOC GLOBAL-OBJECTS) (DESC "picture") (SYNONYM PICTURE
PHOTOGRAPH PHOTO) (ACTION PICTURE-F)>
<DEFINE-ROUTINE PICTURE-F>
<DEFINE-ROUTINE TAKE-A-PICTURE>
<OBJECT BYSTANDER-CLOTHES (DESC "your clothes") (SYNONYM CLOTHES SOCKS SHIRT
PANTS CLOTHING CLOTH SUIT) (FLAGS NARTICLEBIT WORNBIT SEARCHBIT SURFACEBIT
OPENBIT CONTBIT NOTHEBIT NOABIT) (ACTION BYSTANDER-CLOTHES-F)>
<DEFINE-ROUTINE BYSTANDER-CLOTHES-F>
<OBJECT CARNATION (LOC BYSTANDER-CLOTHES) (SYNONYM CARNATION FLOWER) (ADJECTIVE
WHITE RUMPLED) (DESC "rumpled white carnation") (FLAGS WEARBIT WORNBIT TAKEBIT)
(ACTION CARNATION-F)>
<DEFINE-ROUTINE CARNATION-F>
<OBJECT BAD-SPY (DESC "man in a trench coat") (SYNONYM SPY MAN VIPER) (
ADJECTIVE BAD TRENCHCOATED) (FLAGS NDESCBIT PERSON) (ACTION BAD-SPY-F)>
<DEFINE-ROUTINE BAD-SPY-F>
<GLOBAL BAD-SPY-MOVES <PLTABLE PASS-1 PASS-2 PASS-3 PASS-4 PASS-5 PASS-6>>
<GLOBAL BAD-SPY-COUNT 0>
<DEFINE-ROUTINE I-BAD-SPY>
<GLOBAL READ-INTERRUPTED <>>
<GLOBAL BAD-INTERVIEW-FLAG <>>
<DEFINE-ROUTINE BAD-INTERVIEW>
<GLOBAL BAD-CONFINED <>>
<GLOBAL SUSPICION 0>
<GLOBAL BAD-YES-START
"You reply that indeed a wounded man did wander into the compartment,
apparently looking for someone. A moment later, he was gone. You are
asked whether he gave you anything, a piece of paper perhaps, but you
shake your head in the negative.">
<OBJECT COMP-BLOOD-STAIN (LOC COMP-5) (DESC "blood stain") (SYNONYM BLOOD STAIN
) (ADJECTIVE BLOOD) (FLAGS NDESCBIT) (ACTION COMP-BLOOD-STAIN-F)>
<DEFINE-ROUTINE COMP-BLOOD-STAIN-F>
<GLOBAL BAD-DISTANCE 0>
<DEFINE-ROUTINE I-BAD-WAITS>
<GLOBAL BAD-WAIT-TBL <PLTABLE "" "\"I am in a hurry. If you wouldn't mind...\""
"The man looks at you impatiently. \"Please...\" he implores."
"\"I am afraid that you really must come with me.\"">>
<GLOBAL BAD-WAIT-COUNT 0>
<DEFINE-ROUTINE I-BAD-LAV-WAITS>
<GLOBAL BAD-LAV-WAIT-TBL <PLTABLE ""
"There is a knock on the door. \"If you wouldn't mind, I really must speak
to you.\"" "\"I really must insist.\" After a moment, the man speaks loudly in
Frobnian, as if to somebody farther away than yourself."
"\"If you won't come out, we can arrange something else...\" His voice
trails off in a rather sarcastic way.">>
<OBJECT GRAFFITI (LOC LAVATORY) (DESC "graffiti") (SYNONYM GRAFITTI GRAFFITI
WORDS WRITING) (FLAGS NDESCBIT) (ACTION GRAFFITI-F)>
<DEFINE-ROUTINE GRAFFITI-F>
<OBJECT TOWEL-DISPENSER (LOC LAVATORY) (DESC "towel dispenser") (SYNONYM
DISPENSER MACHINE) (ADJECTIVE TOWEL) (FLAGS NDESCBIT CONTBIT SEARCHBIT OPENBIT)
(CAPACITY 5) (ACTION TOWEL-DISPENSER-F)>
<DEFINE-ROUTINE TOWEL-DISPENSER-F>
<OBJECT PAPER-TOWEL (LOC TOWEL-DISPENSER) (DESC "paper towel") (SYNONYM TOWEL)
(ADJECTIVE PAPER) (FLAGS TAKEBIT) (SCENARIO 1) (SIZE 2) (ACTION PAPER-TOWEL-F)>
<DEFINE-ROUTINE PAPER-TOWEL-F>
<OBJECT STAINED-PAPER-TOWEL (DESC "blood-stained paper towel") (SYNONYM TOWEL)
(ADJECTIVE WET BLOOD-STAINED STAINED BLOODY PAPER) (FLAGS TAKEBIT) (SCENARIO 1)
(SIZE 4) (ACTION PAPER-TOWEL-F)>
<OBJECT WET-PAPER-TOWEL (DESC "wet paper towel") (SYNONYM TOWEL) (ADJECTIVE WET
PAPER) (FLAGS TAKEBIT) (SCENARIO 1) (SIZE 4) (ACTION PAPER-TOWEL-F)>
<OBJECT LAV-SINK (LOC LAVATORY) (DESC "sink") (SYNONYM SINK) (FLAGS NDESCBIT
CONTBIT OPENBIT TRANSBIT SEARCHBIT) (CAPACITY 12) (ACTION LAV-SINK-F)>
<DEFINE-ROUTINE LAV-SINK-F>
<OBJECT GLOBAL-TAIL (LOC GLOBAL-OBJECTS) (DESC "man following you") (SYNONYM
MAN AGENT TAIL) (SCENARIO 1) (TRANSIENT <PLTABLE PLATFORM-1 PLATFORM-2
PLATFORM-3 PLATFORM-4>) (ACTION GLOBAL-TAIL-F)>
<DEFINE-ROUTINE GLOBAL-TAIL-F>
<OBJECT GLOBAL-WATER (LOC GLOBAL-OBJECTS) (DESC "water") (SYNONYM WATER) (
ADJECTIVE COLD) (ACTION GLOBAL-WATER-F)>
<DEFINE-ROUTINE GLOBAL-WATER-F>
<OBJECT LAV-FAUCET (LOC LAVATORY) (DESC "faucet") (SYNONYM FAUCET) (FLAGS
NDESCBIT) (ACTION LAV-FAUCET-F)>
<DEFINE-ROUTINE LAV-FAUCET-F>
<OBJECT DOCUMENT (DESC "document") (SYNONYM PAPER DOCUMENT DRAWING) (ADJECTIVE
TYPED FRONT) (FLAGS TAKEBIT) (SIZE 5) (SCENARIO 1) (ACTION DOCUMENT-F)>
<DEFINE-ROUTINE DOCUMENT-F>
<OBJECT SHRED (DESC "shred of the document") (SYNONYM SHRED DOCUMENT) (
ADJECTIVE SMALL WET) (FLAGS TAKEBIT) (SCENARIO 1) (SIZE 1) (ACTION SHRED-F)>
<DEFINE-ROUTINE SHRED-F>
<OBJECT SHREDS (DESC "handful of shreds") (SYNONYM SHRED SHREDS HANDFUL PILE
PIECES) (ADJECTIVE PAPER) (FLAGS TAKEBIT) (SCENARIO 1) (SIZE 1) (ACTION
SHREDS-F)>
<DEFINE-ROUTINE SHREDS-F>
<OBJECT LAV-MIRROR (LOC LAVATORY) (DESC "mirror") (SYNONYM MIRROR) (FLAGS
NDESCBIT) (ACTION LAV-MIRROR-F)>
<DEFINE-ROUTINE LAV-MIRROR-F>
<OBJECT LAV-WINDOW (LOC LAVATORY) (DESC "window") (SYNONYM WINDOW) (ADJECTIVE
GRIMY) (FLAGS NDESCBIT) (ACTION LAV-WINDOW-F)>
<DEFINE-ROUTINE LAV-WINDOW-F>
<GLOBAL BAD-TUNNEL <>>
<DEFINE-ROUTINE I-BAD-TUNNEL>
<DEFINE-ROUTINE I-BAD-TUNNEL-END>
<DEFINE-ROUTINE I-BAD-BORDER>
<GLOBAL AT-STATION <>>
<DEFINE-ROUTINE DONT-CONFISCATE>
<DEFINE-ROUTINE CONFISCATE-FILM>
<DEFINE-ROUTINE REMOVE-IF-IN?>
<DEFINE-ROUTINE CAMERA-SEARCH>
<GLOBAL SECOND-ROLL <>>
<DEFINE-ROUTINE FINDING-NOTHING>
<DEFINE-ROUTINE THEY-START-WITH>
<DEFINE-ROUTINE BAD-FOUND>
<GLOBAL BAD-END "\"I am afraid you have not been very honest
with us. We will need to ask some, how to say, more difficult
questions now.\" He motions to the guards, who lead you into a
holding area nearby. After hours of questioning, you are
finally released, but not before missing your rendezvous.">
<GLOBAL EPILOGUE-ASS
"Epilogue|
|
Two days later, in your hotel room in Vienna, you notice the headline
reporting the assassination of the American ambassador to Litzenburg in
the small border town of Ostnitz. The apparent assassin
was a member of a radical Islamic group, although details of the plot
may never be known since the assassin himself was found dead at the
scene of the crime, an apparent suicide.">
<DEFINE-ROUTINE BAD-SEARCH>
<DEFINE-ROUTINE REMOVE-TO-BOTTOM>
<OBJECT BY-GUN (LOC LOCAL-GLOBALS) (DESC "gun") (SYNONYM GUN GUNS) (ADJECTIVE
MACHINE) (ACTION BY-GUN-F)>
<DEFINE-ROUTINE BY-GUN-F>
<OBJECT BY-GUARDS (LOC LOCAL-GLOBALS) (DESC "guard") (SYNONYM GUARD GUARDS) (
FLAGS PERSON) (ACTION BY-GUARDS-F)>
<DEFINE-ROUTINE BY-GUARDS-F>
<OBJECT SAY-IT-IN-FROBNIAN (LOC BRIEFCASE) (DESC
"tourist guide and phrase book") (SYNONYM BOOK GUIDE) (ADJECTIVE TOURIST
FROBNIAN PHRASE) (FLAGS TAKEBIT) (SIZE 8) (ACTION SAY-IT-IN-FROBNIAN-F)>
<DEFINE-ROUTINE SAY-IT-IN-FROBNIAN-F>
<OBJECT PASSPORT (LOC BRIEFCASE) (DESC "passport") (SYNONYM PASSPORT) (FLAGS
TAKEBIT READBIT) (SIZE 6) (ACTION PASSPORT-F)>
<DEFINE-ROUTINE PASSPORT-F>
<OBJECT TICKET (LOC BRIEFCASE) (DESC "train ticket") (SYNONYM TICKET) (
ADJECTIVE TRAIN) (FLAGS TAKEBIT) (ACTION TICKET-F)>
<DEFINE-ROUTINE TICKET-F>
<OBJECT PLAT-TRAIN (LOC LOCAL-GLOBALS) (DESC "train") (SYNONYM TRAIN) (ACTION
PLAT-TRAIN-F)>
<DEFINE-ROUTINE PLAT-TRAIN-F>
<DEFINE-ROUTINE I-GORMNASH>
<GLOBAL CONTACT <>>
<GLOBAL BUMPER-FLAG <>>
<GLOBAL CONTACT-WAIT <>>
<GLOBAL I-FATAL <>>
<GLOBAL PASSWORD-GIVEN <>>
<DEFINE-ROUTINE I-PLATFORM>
<GLOBAL CONTACT-PROB 25>
<DEFINE-ROUTINE PICK-WRONG-BUMPER>
<GLOBAL BUMPERS <LTABLE 0 OLD-MAN YOUNG-BOY RUSSIAN-GUARD SMALLISH-WOMAN
YOUNG-GIRL>>
<OBJECT YOUNG-GIRL (DESC "young girl") (SYNONYM GIRL) (ADJECTIVE YOUNG) (BDESC
"The young girl is holding the hand of her mother, tugging gently.
She seems distracted, as young girls will be.") (BUMPER
"A young girl, holding her mother's hand, walks into you and stumbles.
She says, meekly,") (FROBNIAN <PTABLE "Pripsa dazi, vaz!" "Pardon me, sir.">) (
ACTION BUMPER-F)>
<OBJECT OLD-MAN (DESC "old man") (SYNONYM MAN) (ADJECTIVE OLD) (BDESC
"The man is old and infirm. He apparently can't see too well, for he is
constantly squinting. He also appears to be mumbling to himself.") (BUMPER
"An old man seems to walk right into you. He adjusts his glasses and
says") (FROBNIAN <PTABLE "Pripsa dazi!" "Pardon me.">) (ACTION BUMPER-F)>
<OBJECT YOUNG-BOY (DESC "young boy") (SYNONYM BOY) (ADJECTIVE YOUNG) (BDESC
"The boy is looking rather ashamed at having bumped into you. He
clearly recognizes you as a stranger, and starts to look away.") (BUMPER
"A young boy, perhaps twelve years old, backs into you. He bows,
saying") (FROBNIAN <PTABLE "Hartzi dazi!" "Forgive me.">) (ACTION BUMPER-F)>
<OBJECT RUSSIAN-GUARD (DESC "Russian soldier") (SYNONYM SOLDIER) (ADJECTIVE
RUSSIAN) (BDESC "He stares you down as you look clearly at him, but his face reveals
nothing more than his words.") (BUMPER
"A stern-faced Russian soldier brushes into you. He leers at you, spits,
and says") (FROBNIAN <PTABLE "Vinchim dorn!" "You are in my way!">) (ACTION
BUMPER-F)>
<OBJECT SMALLISH-WOMAN (DESC "smallish woman") (SYNONYM WOMAN) (ADJECTIVE
SMALLISH) (BDESC
"She averts her gaze as you attempt to get a better look at her. You
can tell she's fairly young and quite beautiful.") (BUMPER
"A smallish woman, in peasant dress, bumps into you. She looks at you
fiercely and says") (FROBNIAN <PTABLE "Oopzi dazi. Izi slep!"
"Excuse me. I am sorry.">) (ACTION BUMPER-F)>
<DEFINE-ROUTINE SCENE-1-ARREST>
<DEFINE-ROUTINE BUMPER-F>
<DEFINE-ROUTINE SCENE-1-FINISH>
<BUZZ OOPZI DAZI IZI SLEP POPKA IZIM HARTZI PRIPSA BESNAP BELBOZ BRZNI>
<GLOBAL FROBNIAN <PLTABLE <PTABLE <PLTABLE W?HARTZI W?DAZI> FZ-EXCUSES> <PTABLE
<PLTABLE W?OOPZI W?DAZI> FZ-EXCUSES> <PTABLE <PLTABLE W?PRIPSA W?DAZI>
FZ-EXCUSES> <PTABLE <PLTABLE W?POPKA W?IZIM> FZ-MY-FAULT>>>
<GLOBAL BUMPER-ACTIONS 0>
<DEFINE-ROUTINE BAD-ARREST?>
<DEFINE-ROUTINE FZ-EXCUSES>
<GLOBAL BAD-SPEAKING <>>
<DEFINE-ROUTINE FZ-MY-FAULT>
<GLOBAL NO-FROBNIAN
"Nobody responds. Maybe it is your accent, or maybe you should reread
your phrase book, or just maybe nobody's interested.">
<DEFINE-ROUTINE SIIF>

2961
bystander.zil Normal file

File diff suppressed because it is too large Load diff

11
desc.zabstr Normal file
View file

@ -0,0 +1,11 @@
<GLOBAL DESCRIBED-ROOM? <>>
<DEFINE-ROUTINE DESCRIBE-ROOM>
<DEFINE-ROUTINE DESCRIBE-OBJECTS>
<CONSTANT D-ALL? 1>
<CONSTANT D-PARA? 2>
<DEFINE-ROUTINE DESCRIBE-CONTENTS>
<DEFINE-ROUTINE DESCRIBE-START>
<GLOBAL D-BIT <>>
<DEFINE-ROUTINE DESCRIBABLE?>
<DEFINE-ROUTINE SIMPLE-DESC?>

283
desc.zil Normal file
View file

@ -0,0 +1,283 @@
"DESC for
BORDER ZONE
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
"The fabled new describers, as updated and modified to conform to the
latest bug fixes. See ZD:DESC.DOC for details. See Z:DESC.ZIL for
the source."
;<CONSTANT M-OBJDESC? 9>;"modify if necessary for games with other M-..."
<GLOBAL DESCRIBED-ROOM? <>>
<ROUTINE DESCRIBE-ROOM ("OPTIONAL" (LOOK? <>) "AUX" V? STR AV)
;<COND (<NOT ,LIT>
<TELL "It is pitch black." CR>
<RFALSE>)>
<COND (<IN? ,HERE ,ROOMS> <HERE-TELL>)>
<SET AV <LOC ,WINNER>>
<CRLF>
<SET V? <OR .LOOK? <EQUAL? ,VERBOSITY 1 2>>>
<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
<FSET ,HERE ,TOUCHBIT>
<COND (<AND ,VERBOSITY
<EQUAL? ,SCENARIO ,S-BAD>>
<SET V? T>)>)>
<SETG DESCRIBED-ROOM? .V?>
<COND (.V?
<CRLF>
<COND (<APPLY <GETP ,HERE ,P?ACTION> ,M-LOOK>
<RTRUE>)
(<SET STR <GETP ,HERE ,P?LDESC>>
<TELL .STR CR>)>)>
T>
<ROUTINE DESCRIBE-OBJECTS ("AUX" O STR (AV <LOC ,WINNER>) TMP)
<SET O <FIRST? ,HERE>>
<COND (<NOT .O> <RFALSE>)>
<REPEAT () ;"FDESCS and MISC."
<COND (<NOT .O> <RETURN>)
(<AND <DESCRIBABLE? .O>
<NOT <FSET? .O ,TOUCHBIT>>
<SET STR <GETP .O ,P?FDESC>>>
<THIS-IS-IT .O>
<CRLF>
<TELL .STR>
<COND (<FSET? .O ,CONTBIT>
<DESCRIBE-CONTENTS .O
T
<+ ,D-ALL?
,D-PARA?>>)>
<CRLF>)>
<SET O <NEXT? .O>>>
<SET O <FIRST? ,HERE>>
<REPEAT () ;"DESCFCNS and LDESCS"
<COND (<NOT .O> <RETURN>)
(<OR <NOT <DESCRIBABLE? .O>>
<AND <GETP .O ,P?FDESC>
<NOT <FSET? .O ,TOUCHBIT>>>>
T)
(<AND <SET STR <GETP .O ,P?DESCFCN>>
<SET TMP <APPLY .STR ,M-OBJDESC? .O>>>
<COND (<NOT <EQUAL? .TMP ,M-FATAL>>
<THIS-IS-IT .O>
<CRLF>
<COND (<SET STR <APPLY .STR ,M-OBJDESC .O>>
<COND (<AND <FSET? .O ,CONTBIT>
<N==? .STR ,M-FATAL>>
<DESCRIBE-CONTENTS
.O
T
<+ ,D-ALL?
,D-PARA?>>)>)>
<CRLF>)>)
(<SET STR <GETP .O ,P?LDESC>>
<THIS-IS-IT .O>
<CRLF>
<TELL .STR>
<COND (<FSET? .O ,CONTBIT>
<DESCRIBE-CONTENTS .O
T
<+ ,D-ALL?
,D-PARA?>>)>
<CRLF>)>
<SET O <NEXT? .O>>>
<DESCRIBE-CONTENTS ,HERE <> <>>
<COND (<AND .AV <NOT <EQUAL? ,HERE .AV>>>
<DESCRIBE-CONTENTS .AV <> <>>)>>
<CONSTANT D-ALL? 1> ;"print everything?"
<CONSTANT D-PARA? 2> ;"started paragraph yet?"
"<DESCRIBE-CONTENTS object-whose-contents-to-describe
level: -1 means only top level (default)
<> means top-level (include crlf)
T for all other levels
or string to print
all?: t if not being called from room-desc >
Prints nothing and rfalses if there was nothing to list.
'The wall crumbles to dust, revealing ' <DESCRIBE-CONTENTS .OBJ> "
<ROUTINE DESCRIBE-CONTENTS (OBJ "OPTIONAL" (LEVEL -1) (ALL? ,D-ALL?)
"AUX" (F <>) N (1ST? T) (IT? <>) (TWO? <>)
(START? <>) (PARA? <>) DB)
<COND (<EQUAL? .LEVEL 2>
<SET LEVEL T>
<SET PARA? T>
<SET START? T>)
(<BTST .ALL? ,D-PARA?>
<SET PARA? T>)>
<SET N <FIRST? .OBJ>>
<COND (<OR .START?
<IN? .OBJ ,ROOMS>
<FSET? .OBJ ,PERSON>
<AND .N
<FSET? .OBJ ,CONTBIT>
<OR <FSET? .OBJ ,OPENBIT>
<FSET? .OBJ ,TRANSBIT>>
<OR <EQUAL? .LEVEL -1>
<FSET? .OBJ ,SEARCHBIT>>>>
<REPEAT ()
<COND (<OR <NOT .N>
<AND <DESCRIBABLE? .N>
<OR <BTST .ALL? ,D-ALL?>
<SIMPLE-DESC? .N>>>>
<COND (.F
<COND (.1ST?
<SET 1ST? <>>
<COND (<EQUAL? .LEVEL <> T>
<COND (<NOT .START?>
<COND (<NOT .PARA?>
<SET PARA? T>
<CRLF>)
(<EQUAL? .LEVEL T>
<TELL " ">)>
<DESCRIBE-START .OBJ .N>)>)
(<NOT <EQUAL? .LEVEL -1>>
<TELL .LEVEL>)>)
(.N
<TELL ", ">)
(ELSE
<TELL " and ">)>
<TELL A .F>
;<DESCRIBE-SPECIAL .F>
<COND (<AND <NOT .IT?> <NOT .TWO?>>
<SET IT? .F>)
(T
<SET TWO? T>
<SET IT? <>>)>)>
<SET F .N>)>
<COND (.N <SET N <NEXT? .N>>)>
<COND (<AND <NOT .F> <NOT .N>>
<COND (<AND .IT? <NOT .TWO?>>
<THIS-IS-IT .IT?>)>
<COND (<AND .1ST? .START?>
<TELL " nothing">
<RFALSE>)
(<AND <NOT .1ST?>
<EQUAL? .LEVEL <> T>>
<COND (<EQUAL? .OBJ ,HERE>
<TELL " here">)>
<TELL ".">)>
<RETURN>)>>
<COND (<EQUAL? .LEVEL <> T>
<SET F <FIRST? .OBJ>>
<REPEAT ()
<COND (<NOT .F> <RETURN>)
(<AND <FSET? .F ,CONTBIT>
<DESCRIBABLE? .F T>
<OR <BTST .ALL? ,D-ALL?>
<SIMPLE-DESC? .F>>>
<SET DB ,D-BIT>
<SETG D-BIT <>>
<COND (<DESCRIBE-CONTENTS
.F
T
<COND (.PARA?
<+ ,D-ALL?
,D-PARA?>)
(ELSE ,D-ALL?)>>
<SET 1ST? <>>
<SET PARA? T>)>
<SETG D-BIT .DB>)>
<SET F <NEXT? .F>>>)>
<COND (<AND <NOT .1ST?>
<EQUAL? .LEVEL <> T>
<EQUAL? .OBJ ,HERE <LOC ,WINNER>>>
<CRLF>)>
<NOT .1ST?>)>>
"DESCRIBE-START -- add starters for special classes of objects here"
<ROUTINE DESCRIBE-START (OBJ N)
<COND (<EQUAL? .OBJ ,HERE>
<TELL "There is ">)
(<EQUAL? .OBJ ,PROTAGONIST>
<COND (<EQUAL? ,D-BIT ,WORNBIT>
<TELL " You are wearing ">)
(T
<TELL "You are carrying ">)>)
(<FSET? .OBJ ,PERSON>
;<COND (<NOT <FSET? .OBJ ,NOTHEBIT>>
<TELL "The ">)> ;"hand is only one this clause catches"
<TELL CTHE .OBJ " wears ">)
(<EQUAL? .OBJ ,BYSTANDER-CLOTHES>
<TELL "Pinned to " THE .OBJ " is ">)
(<FSET? .OBJ ,SURFACEBIT>
<TELL "Sitting on " THE .OBJ " is ">)
(ELSE
<TELL CTHE .OBJ " contains ">)>>
"DESCRIBE-SPECIAL -- add special trailers to object descriptions here"
;<ROUTINE DESCRIBE-SPECIAL (OBJ)
<COND (<FSET? .OBJ ,ONBIT>
<TELL " (providing light)">)
;(<FSET? .OBJ ,WORNBIT>
<TELL " (being worn)">)>>
"determines if an object is describable at all."
<GLOBAL D-BIT <>> ;"bit to screen objects"
<ROUTINE DESCRIBABLE? (OBJ "OPT" (CONT? <>))
<COND (<FSET? .OBJ ,INVISIBLE> <RFALSE>)
(<EQUAL? .OBJ ,WINNER> <RFALSE>)
(<AND <EQUAL? .OBJ <LOC ,WINNER>>
<NOT <EQUAL? ,HERE <LOC ,WINNER>>>>
<RFALSE>)
(<AND <NOT .CONT?> <FSET? .OBJ ,NDESCBIT>>
<RFALSE>)
(,D-BIT
<COND (<G? ,D-BIT 0>
<COND (<FSET? .OBJ ,D-BIT> <RTRUE>)
(ELSE <RFALSE>)>)
(<NOT <FSET? .OBJ <- ,D-BIT>>>
<RTRUE>)
(ELSE <RFALSE>)>)
(ELSE
<RTRUE>)>>
"Determines, for DESCRIBE-OBJECTS, if an object has a simple description
(not a FDESC, LDESC, or whatever)."
<ROUTINE SIMPLE-DESC? (OBJ "AUX" STR)
<COND (<AND <GETP .OBJ ,P?FDESC>
<NOT <FSET? .OBJ ,TOUCHBIT>>>
<RFALSE>)
(<AND <SET STR <GETP .OBJ ,P?DESCFCN>>
<APPLY .STR ,M-OBJDESC? .OBJ>>
<RFALSE>)
(<GETP .OBJ ,P?LDESC> <RFALSE>)
(ELSE <RTRUE>)>>
"DESCRIBE-REST finishes 'Opening the crocodile's mouth reveals '"
;<ROUTINE DESCRIBE-REST (OBJ)
<COND (<NOT <DESCRIBE-CONTENTS .OBJ>>
<TELL "nothing">)>
<RTRUE>>
"DESCRIBE-SENT does the whole ball of wax"
;<ROUTINE DESCRIBE-SENT (OBJ)
<COND (<NOT <DESCRIBE-CONTENTS .OBJ <> <+ ,D-ALL? ,D-PARA?>>>
<TELL "The " D .OBJ " is empty.">)>
<RTRUE>>
"DESCRIBE-NOTHING returns false if nothing was described"
;<ROUTINE DESCRIBE-NOTHING ()
<COND (<DESCRIBE-CONTENTS ,PRSO 2>
<COND (<NOT <IN? ,WINNER ,PRSO>>
<CRLF>)>
<RTRUE>)
(T ;"nothing"
<RFALSE>)>>
;"END"

86
globals.zabstr Normal file
View file

@ -0,0 +1,86 @@
<DIRECTIONS NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT>
<CONSTANT S-TEXT 0>
<CONSTANT S-WINDOW 1>
<CONSTANT H-NORMAL 0>
<CONSTANT H-INVERSE 1>
<CONSTANT H-BOLD 2>
<CONSTANT H-ITALIC 4>
<CONSTANT D-SCREEN-ON 1>
<CONSTANT D-SCREEN-OFF -1>
<CONSTANT D-PRINTER-ON 2>
<CONSTANT D-PRINTER-OFF -2>
<CONSTANT D-TABLE-ON 3>
<CONSTANT D-TABLE-OFF -3>
<CONSTANT D-RECORD-ON 4>
<CONSTANT D-RECORD-OFF -4>
<DEFINE-ROUTINE V-$ISL>
<DEFINE-ROUTINE INIT-STATUS-LINE>
<DEFINE-ROUTINE INVERSE-LINE>
<DEFINE-ROUTINE PRINT-SPACES>
<DEFINE-ROUTINE STATUS-LINE>
<DEFINE-ROUTINE HERE-TELL>
<GLOBAL HERE <>>
<OBJECT GLOBAL-OBJECTS (SYNONYM ZZMGCK FRONT MR) (DESC "GloObj") (FLAGS
INVISIBLE TOUCHBIT SURFACEBIT TRYTAKEBIT OPENBIT SEARCHBIT TRANSBIT WEARBIT
MUNGEDBIT RLANDBIT WORNBIT CONTBIT VOWELBIT NDESCBIT DOORBIT PERSON CROSSBIT
NARTICLEBIT SLVIEWBIT FENCECUTBIT FENCEBENTBIT PENBIT FENCEBLOWNBIT HUTBIT
PLATFORMBIT AN NOABIT THE NOTHEBIT) (TRANSIENT ROADBLOCK)>
<OBJECT LOCAL-GLOBALS (LOC GLOBAL-OBJECTS) (DESC "LocGlo") (SYNONYM $XY) (
DESCFCN 0) (GLOBAL GLOBAL-OBJECTS) (FDESC "F") (LDESC "F") (SIZE 0) (TEXT "") (
CAPACITY 0) (GENERIC 0) (THINGS <PSEUDO (ZZMGCK ZZMGCK ME-F)>)>
<OBJECT ROOMS (DESC "Rms") (SIZE 0)>
<OBJECT INTNUM (LOC GLOBAL-OBJECTS) (SYNONYM NUMBER INTNUM) (SDESC "number")>
<OBJECT IT (LOC GLOBAL-OBJECTS) (SYNONYM IT THEM) (DESC "it") (FLAGS VOWELBIT
AN NARTICLEBIT TOUCHBIT)>
<OBJECT HIM (LOC GLOBAL-OBJECTS) (SYNONYM HIM HIMSELF) (DESC "him") (FLAGS
NARTICLEBIT TOUCHBIT)>
<OBJECT HER (LOC GLOBAL-OBJECTS) (SYNONYM HER HERSELF) (DESC "her") (FLAGS
NARTICLEBIT TOUCHBIT)>
<OBJECT NOT-HERE-OBJECT (DESC "it") (FLAGS NARTICLEBIT) (ACTION
NOT-HERE-OBJECT-F)>
<DEFINE-ROUTINE NOT-HERE-OBJECT-F>
<DEFINE-ROUTINE PRSO-MOBY-VERB?>
<DEFINE-ROUTINE PRSI-MOBY-VERB?>
<DEFINE-ROUTINE FIND-NOT-HERE>
<DEFINE-ROUTINE NOT-HERE-PRINT>
<OBJECT GROUND (LOC GLOBAL-OBJECTS) (SYNONYM FLOOR GROUND) (DESC "ground") (
ACTION GROUND-F)>
<DEFINE-ROUTINE GROUND-F>
<OBJECT WALLS (LOC GLOBAL-OBJECTS) (FLAGS NDESCBIT TOUCHBIT) (DESC "wall") (
SYNONYM WALL WALLS)>
<OBJECT CEILING (LOC GLOBAL-OBJECTS) (FLAGS NDESCBIT TOUCHBIT) (DESC "ceiling")
(SYNONYM CEILING ROOF) (ACTION CEILING-F)>
<DEFINE-ROUTINE CEILING-F>
<OBJECT HANDS (LOC GLOBAL-OBJECTS) (SYNONYM HANDS HAND PALM FINGERS) (ADJECTIVE
BARE MY YOUR) (DESC "hand") (FLAGS NDESCBIT TOUCHBIT NARTICLEBIT PLURALBIT) (
ACTION HANDS-F)>
<DEFINE-ROUTINE HANDS-F>
<OBJECT EYES (LOC GLOBAL-OBJECTS) (DESC "your eyes") (SYNONYM EYE EYES) (
ADJECTIVE YOUR MY) (FLAGS NARTICLEBIT PLURALBIT NOTHEBIT NOABIT)>
<OBJECT PROTAGONIST (LOC B8) (SYNONYM PROTAG) (DESC "it") (FLAGS NDESCBIT
INVISIBLE PERSON)>
<OBJECT ME (LOC GLOBAL-OBJECTS) (SYNONYM ME SELF MYSELF $FN $LN) (DESC
"yourself") (FLAGS PERSON TOUCHBIT NARTICLEBIT NOTHEBIT NOABIT) (ACTION ME-F)>
<DEFINE-ROUTINE ME-F>
<OBJECT GLOBAL-ROOM (LOC GLOBAL-OBJECTS) (DESC "room") (SYNONYM ROOM PLACE
LOCATION AREA) (ACTION GLOBAL-ROOM-F)>
<DEFINE-ROUTINE GLOBAL-ROOM-F>
<OBJECT WAY (LOC GLOBAL-OBJECTS) (DESC "way") (SYNONYM WAY)>
<OBJECT SKY (LOC GLOBAL-OBJECTS) (DESC "sky") (SYNONYM SKY) (ADJECTIVE NIGHT
DARK) (ACTION SKY-F)>
<DEFINE-ROUTINE SKY-F>
<DEFINE-ROUTINE TOUCHING?>
<DEFINE-ROUTINE HURT?>
<DEFINE-ROUTINE PRSO-PRINT>
<DEFINE-ROUTINE PRSI-PRINT>
<DEFINE-ROUTINE CANT-SEE>
<DEFINE-ROUTINE CANT-VERB-A-PRSO>
<DEFINE-ROUTINE TELL-HIT-HEAD>
<CONSTANT YNH "You're not holding">
<CONSTANT LOOK-AROUND "Look around you.|">
<CONSTANT CANT-GO "You can't go that way.|">
<DEFINE-ROUTINE REFERRING>
<CONSTANT RECOGNIZE "[That sentence isn't one I recognize.]|">
<CONSTANT HOLDING-IT "You're holding it!|">
<CONSTANT PERIOD ".|">

694
globals.zil Normal file
View file

@ -0,0 +1,694 @@
"GLOBALS for
BORDER ZONE
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
<DIRECTIONS ;"Do not change the order of the first 8 without consulting MARC!"
NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT>
;"status line stuff"
<CONSTANT S-TEXT 0> ;"<SCREEN 0> puts cursor in text part of screen"
<CONSTANT S-WINDOW 1> ;"<SCREEN 1> puts cursor in window part of screen"
<CONSTANT H-NORMAL 0> ;"<HLIGHT 0> returns printing to normal (default)"
<CONSTANT H-INVERSE 1> ;"<HLIGHT 1> sets printing mode to inverse video"
<CONSTANT H-BOLD 2> ;"<HLIGHT 2> sets printing mode to bold, else normal"
<CONSTANT H-ITALIC 4> ;"<HLIGHT 4> italicizes, else underline, else normal"
<CONSTANT D-SCREEN-ON 1> ;"<DIROUT 1> turns on printing to the screen"
<CONSTANT D-SCREEN-OFF -1>;"<DIROUT -1> turns off printing to the screen"
<CONSTANT D-PRINTER-ON 2> ;"<DIROUT 2> turns on printing to the printer"
<CONSTANT D-PRINTER-OFF -2>;"<DIROUT -2> turns off printing to the printer"
<CONSTANT D-TABLE-ON 3> ;"<DIROUT 3 .TABLE> turns on printing to that table"
<CONSTANT D-TABLE-OFF -3> ;"<DIROUT -3> turns off printing to that table"
<CONSTANT D-RECORD-ON 4> ;"<DIROUT 4> sends READs and INPUTs to record file"
<CONSTANT D-RECORD-OFF -4>;"<DIROUT -4> stops sending READs and INPUTs to file"
<ROUTINE V-$ISL ("OPTIONAL" (PRT? T))
<INIT-STATUS-LINE 3>
<COND (,SL-WATCH <SL-CYCLE>)
(,G-WATCH <G-CYCLE>)>
<UPDATE-CHRONOGRAPH 0 T>
<UPDATE-TIME>
<COND (.PRT? <TELL "Done." CR>)>
<RTRUE>>
<ROUTINE INIT-STATUS-LINE (HEIGHT "OPTIONAL" (DONT-CLEAR <>))
<COND (<NOT .DONT-CLEAR>
<CLEAR -1>
<SPLIT .HEIGHT>)>
<SCREEN ,S-WINDOW>
<BUFOUT <>>
<CURSET 1 1>
<INVERSE-LINE>
<CURSET 2 1>
<INVERSE-LINE>
<CURSET 3 1>
<INVERSE-LINE>
<BUFOUT T>
<SCREEN ,S-TEXT>>
<ROUTINE INVERSE-LINE ("AUX" (CENTER-HALF <>))
<HLIGHT ,H-INVERSE>
<PRINT-SPACES <GETB 0 33>>
<HLIGHT ,H-NORMAL>>
<ROUTINE PRINT-SPACES (CNT)
<REPEAT ()
<COND (<L? <SET CNT <- .CNT 1>> 0>
<RETURN>)
(T
<PRINTC 32>)>>>
;<ROUTINE CONTINUE ("AUX" (CURRENTLY-SCRIPTING <>) CNT)
<COND (<G? <GETB 0 32> 21> ;"is screen more than 21 lines tall?"
<SET CNT <- <GETB 0 32> 21>>
<REPEAT ()
<SET CNT <- .CNT 1>>
<CRLF>
<COND (<EQUAL? .CNT 0>
<RETURN>)>>)>
<COND (<BTST <GET 0 8> 1> ;"turn scripting off so [MORE] won't print"
<SET CURRENTLY-SCRIPTING T>
<DIROUT ,D-PRINTER-OFF>)>
<TELL "[Hit any key to continue.]">
<BUFOUT <>>
<BUFOUT T>
<COND (.CURRENTLY-SCRIPTING
<DIROUT ,D-PRINTER-ON>)>
<INPUT 1>>
;<GLOBAL SL-BUFFER <ITABLE NONE 80>>
<ROUTINE STATUS-LINE ("AUX" LEN LOCATION)
<SCREEN-1>
<CURSET 1 2>
<HERE-TELL>
<SCREEN-0>>
<ROUTINE HERE-TELL ("OPTIONAL" (PAD? T) "AUX" LEN)
<DIROUT ,D-TABLE-ON ,DIROUT-TBL>
<COND (,IN-SWAMP? <TELL "In the Swamp">)
(,ON-BRACE? <TELL "On the Brace">)
(,ON-THE-CAN <TELL "On the Trash Can">)
(T <TELL D ,HERE>)>
<DIROUT ,D-TABLE-OFF>
<SET LEN <GET ,DIROUT-TBL 0>>
<COND (<G? .LEN 24>
<TELL "** Desc too long **">)
(T
<COND (,IN-SWAMP? <TELL "In the Swamp">)
(,ON-BRACE? <TELL "On the Brace">)
(,ON-THE-CAN <TELL "On the Trash Can">)
(T <TELL D ,HERE>)>
<COND (.PAD?
<PRINT-SPACES <- 24 .LEN>>)>)>
<RTRUE>>
<GLOBAL HERE <>>
;<GLOBAL LIT T>
;<GLOBAL INDENTS
<PTABLE ""
" "
" "
" "
" ">>
<OBJECT GLOBAL-OBJECTS
(SYNONYM ZZMGCK FRONT MR) ;"No, it doesn't need to exist... sigh"
(DESC "GloObj")
(FLAGS INVISIBLE TOUCHBIT SURFACEBIT TRYTAKEBIT OPENBIT SEARCHBIT
TRANSBIT WEARBIT MUNGEDBIT RLANDBIT WORNBIT
CONTBIT VOWELBIT
NDESCBIT DOORBIT PERSON CROSSBIT
NARTICLEBIT SLVIEWBIT FENCECUTBIT FENCEBENTBIT PENBIT
FENCEBLOWNBIT HUTBIT PLATFORMBIT
AN NOABIT THE NOTHEBIT)
(TRANSIENT ROADBLOCK)>
<OBJECT LOCAL-GLOBALS
(LOC GLOBAL-OBJECTS)
(DESC "LocGlo")
(SYNONYM $XY) ;"Yes, this synonym needs to exist... sigh"
(DESCFCN 0)
(GLOBAL GLOBAL-OBJECTS)
(FDESC "F")
(LDESC "F")
(SIZE 0)
(TEXT "")
(CAPACITY 0)
(GENERIC 0)
(THINGS <PSEUDO (ZZMGCK ZZMGCK ME-F)>)>
<OBJECT ROOMS
(DESC "Rms")
(SIZE 0)>
;<OBJECT INTDIR
(LOC GLOBAL-OBJECTS)
(DESC "direction")
(SYNONYM DIRECTION)
(ADJECTIVE NORTH EAST SOUTH WEST NE NW SE SW ;UP ;DOWN)>
<OBJECT INTNUM
(LOC GLOBAL-OBJECTS)
(SYNONYM NUMBER INTNUM)
;(DESC "number")
(SDESC "number")
;(ACTION INTNUM-F)>
<OBJECT IT
(LOC GLOBAL-OBJECTS)
(SYNONYM IT THEM)
(DESC "it")
(FLAGS VOWELBIT AN NARTICLEBIT TOUCHBIT)>
<OBJECT HIM
(LOC GLOBAL-OBJECTS)
(SYNONYM HIM HIMSELF)
(DESC "him")
(FLAGS NARTICLEBIT TOUCHBIT)>
<OBJECT HER
(LOC GLOBAL-OBJECTS)
(SYNONYM HER HERSELF)
(DESC "her")
(FLAGS NARTICLEBIT TOUCHBIT)>
<OBJECT NOT-HERE-OBJECT
(DESC "it")
(FLAGS NARTICLEBIT)
(ACTION NOT-HERE-OBJECT-F)>
<ROUTINE NOT-HERE-OBJECT-F ("AUX" TBL (PRSO? T) OBJ (X <>))
<COND (<AND <PRSO? ,NOT-HERE-OBJECT>
<PRSI? ,NOT-HERE-OBJECT>>
<TELL "Those things aren't here!" CR>
<RTRUE>)
(<PRSO? ,NOT-HERE-OBJECT>
<SET TBL ,P-PRSO>)
(T
<SET TBL ,P-PRSI>
<SET PRSO? <>>)>
<COND (<AND .PRSO?
<PRSO-MOBY-VERB?>>
<SET X T>)
(<AND <NOT .PRSO?>
<PRSI-MOBY-VERB?>>
<SET X T>)>
<COND (.X ;"the verb is a moby-find verb"
<SET OBJ <FIND-NOT-HERE .TBL .PRSO?>>
<COND (<AND .OBJ
<NOT <EQUAL? .OBJ ,NOT-HERE-OBJECT>>>
<RTRUE>)
(T
<RFALSE>)>
<TELL "You'll have to be more specific, I'm afraid." CR>)
(<EQUAL? ,WINNER ,PROTAGONIST>
<TELL "You can't see">
<COND (<NOT <NAME? ,P-XNAM>>
<TELL " any">)>
<NOT-HERE-PRINT .PRSO?>
<TELL " here!" CR>)
(T
<TELL "Looking confused, the " ,WINNER " says, \"I don't see">
<COND (<NOT <NAME? ,P-XNAM>>
<TELL " any">)>
<NOT-HERE-PRINT .PRSO?>
<TELL " here!\"" CR>)>
<STOP>>
<ROUTINE PRSO-MOBY-VERB? (;"OPTIONAL" ;(A ,PRSA))
<COND (<OR <EQUAL? ,PRSA ,V?FIND ,V?FOLLOW>
<EQUAL? ,PRSA ,V?WHAT ,V?WHERE ,V?WHO>
<EQUAL? ,PRSA ,V?WAIT-FOR ,V?WALK-TO>
<EQUAL? ,PRSA ,V?CALL ,V?SAY ,V?YELL>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE PRSI-MOBY-VERB? ()
<COND (<EQUAL? ,PRSA ,V?ASK-ABOUT ,V?ASK-FOR ,V?TELL-ABOUT>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE FIND-NOT-HERE (TBL PRSO? "AUX" M-F OBJ)
;"Protocol: return T if case was handled and msg TELLed, NOT-HERE-OBJECT
if 'can't see' msg TELLed, <> if PRSO/PRSI ready to use"
;"Special-case code goes here. <MOBY-FIND .TBL> returns # of matches. If 1,
then P-MOBY-FOUND is it. You can treat the 0 and >1 cases alike or differently.
Always return RFALSE (not handled) if you have resolved the problem."
<SET M-F <MOBY-FIND .TBL>>
;<COND (,DEBUG
<TELL "[Found " N .M-F " obj]" CR>)>
<COND (<EQUAL? 1 .M-F>
;<COND (,DEBUG
<TELL "[Namely: " D ,P-MOBY-FOUND "]" CR>)>
<COND (.PRSO?
<SETG PRSO ,P-MOBY-FOUND>
<THIS-IS-IT ,PRSO>)
(T
<SETG PRSI ,P-MOBY-FOUND>)>
<RFALSE>)
(<AND <L? 1 .M-F>
<SET OBJ <APPLY <GETP <SET OBJ <GET .TBL 1>> ,P?GENERIC>>>>
;"Protocol: returns .OBJ if that's the one to use
,NOT-HERE-OBJECT if case was handled and msg TELLed
<> if WHICH-PRINT should be called"
;<COND (,DEBUG
<TELL "[Generic: " D .OBJ "]" CR>)>
<COND (<EQUAL? .OBJ ,NOT-HERE-OBJECT>
<RTRUE>)
(.PRSO?
<SETG PRSO .OBJ>
<THIS-IS-IT ,PRSO>)
(T
<SETG PRSI .OBJ>)>
<RFALSE>)
(T
,NOT-HERE-OBJECT)>>
<ROUTINE NOT-HERE-PRINT (PRSO?)
<COND (,P-OFLAG
<COND (,P-XADJ
<TELL " ">
<PRINTB ,P-XADJN>)>
<COND (,P-XNAM
<TELL " ">
<PRINTB ,P-XNAM>)>)
(.PRSO?
<BUFFER-PRINT <GET ,P-ITBL ,P-NC1> <GET ,P-ITBL ,P-NC1L> <>>)
(T
<BUFFER-PRINT <GET ,P-ITBL ,P-NC2> <GET ,P-ITBL ,P-NC2L> <>>)>>
<OBJECT GROUND
(LOC GLOBAL-OBJECTS)
(SYNONYM FLOOR GROUND)
(DESC "ground")
(ACTION GROUND-F)>
<ROUTINE GROUND-F ()
<COND (<VERB? CLIMB-UP CLIMB-ON CLIMB BOARD>
<WASTES>)
(<VERB? LOOK-UNDER>
<IMPOSSIBLES>)
(<VERB? LEAVE>
<DO-WALK ,P?UP>)
(<VERB? CLEAN>
<COND (<IN? ,COMP-BLOOD-STAIN ,HERE>
<PERFORM ,V?CLEAN ,COMP-BLOOD-STAIN>
<RTRUE>)
(T
<TELL
"You're not aware that it needs cleaning." CR>)>)
(<AND <VERB? EXAMINE>
<EQUAL? ,HERE ,COMP-5>
<IN? ,COMP-BLOOD-STAIN ,HERE>>
<TELL
"When you look at the floor in front of you, your eye is immediately
drawn to ">
<COND (<FSET? ,COMP-BLOOD-STAIN ,CROSSBIT>
<TELL "a smeared blood stain">)
(T
<TELL "some drops of blood bunched together">)>
<TELL " near the door." CR>)
(<VERB? EXAMINE>
<PERFORM ,V?LOOK>
<RTRUE>)
(<AND <VERB? DIG> <EQUAL? ,SCENARIO 2>>
<TELL
"Except for digging up some snow, you wont get anywhere; the frozen ground is
much too hard." CR>)>>
<OBJECT WALLS
(LOC GLOBAL-OBJECTS)
(FLAGS NDESCBIT TOUCHBIT)
(DESC "wall")
(SYNONYM WALL WALLS)>
<OBJECT CEILING
(LOC GLOBAL-OBJECTS)
(FLAGS NDESCBIT TOUCHBIT)
(DESC "ceiling")
(SYNONYM CEILING ROOF)
(ACTION CEILING-F)>
<ROUTINE CEILING-F ()
<COND (<AND <FSET? ,HERE ,OUTHUTBIT>
<VERB? CLIMB CLIMB-UP>>
<TELL
"You'd never make it with that bad arm of yours." CR>)
(<VERB? LOOK-UNDER>
<PERFORM ,V?LOOK>
<RTRUE>)>>
<OBJECT HANDS
(LOC GLOBAL-OBJECTS)
(SYNONYM HANDS HAND PALM FINGERS)
(ADJECTIVE BARE MY YOUR)
(DESC "hand")
(FLAGS NDESCBIT TOUCHBIT NARTICLEBIT PLURALBIT)
(ACTION HANDS-F)>
<ROUTINE HANDS-F ("AUX" ACTOR)
<COND (<VERB? WAVE>
<SETG PRSO <>>
<PERFORM ,V?WAVE-AT>
<RTRUE>)
(<VERB? SHAKE>
<COND ;(<EQUAL? ,HERE ,THRONE-ROOM>
<PERFORM ,V?SHAKE-WITH ,HANDS ,MITRE>
<RTRUE>)
(<SET ACTOR <FIND-IN ,HERE ,PERSON "with">>
<PERFORM ,V?SHAKE-WITH ,HANDS .ACTOR>
<RTRUE>)
(T
<TELL "Pleased to meet you." CR>)>)
(<VERB? CLEAN>
<TELL "They're as clean as they'll get." CR>)>>
<OBJECT EYES
(LOC GLOBAL-OBJECTS)
(DESC "your eyes")
(SYNONYM EYE EYES)
(ADJECTIVE YOUR MY)
(FLAGS NARTICLEBIT PLURALBIT NOTHEBIT NOABIT)
;(ACTION EYES-F)>
;<OBJECT EARS
(LOC GLOBAL-OBJECTS)
(DESC "your ears")
(SYNONYM EAR EARS)
(ADJECTIVE YOUR MY)
(FLAGS NARTICLEBIT PLURALBIT)>
;<OBJECT NOSE
(LOC GLOBAL-OBJECTS)
(DESC "your nose")
(SYNONYM NOSE NOSTRIL)
(ADJECTIVE YOUR MY)
(FLAGS NARTICLEBIT)
(ACTION NOSE-F)>
;<ROUTINE NOSE-F ()
<COND (<VERB? TAKE>
<PERFORM ,V?SPUT-ON ,NOSE ,HANDS>
<RTRUE>)>>
;<OBJECT MOUTH
(LOC GLOBAL-OBJECTS)
(DESC "your mouth")
(SYNONYM MOUTH LIP LIPS)
(ADJECTIVE YOUR MY)
(FLAGS NARTICLEBIT)>
;<OBJECT KNEECAPS
(LOC GLOBAL-OBJECTS)
(DESC "your kneecaps")
(SYNONYM KNEECAP KNEE KNEES)
(ADJECTIVE YOUR MY)
(FLAGS NARTICLEBIT)>
<OBJECT PROTAGONIST
(LOC B8)
(SYNONYM PROTAG)
(DESC "it")
(FLAGS NDESCBIT INVISIBLE PERSON)>
;<OBJECT YOU
(LOC GLOBAL-OBJECTS)
(SYNONYM YOU YOURSELF HIMSELF HERSELF)
(DESC "himself or herself")
(FLAGS NDESCBIT)
(ACTION YOU-F)>
;<ROUTINE YOU-F ()
<COND (<AND <VERB? ASK-ABOUT>
<PRSI? ,YOU>>
<PERFORM ,V?ASK-ABOUT ,PRSO ,PRSO>
<RTRUE>)
(<AND <VERB? TELL-ABOUT>
<PRSI? ,YOU>>
<PERFORM ,V?TELL-ABOUT ,PRSO ,WINNER>
<RTRUE>)>>
<OBJECT ME
(LOC GLOBAL-OBJECTS)
(SYNONYM ME SELF MYSELF $FN $LN)
(DESC "yourself")
(FLAGS PERSON TOUCHBIT NARTICLEBIT NOTHEBIT NOABIT)
(ACTION ME-F)>
<ROUTINE ME-F ()
<COND (<VERB? SAVE-SOMETHING>
<TELL
"Perhaps you need a HINT?" CR>)
(<VERB? LOOK-BEHIND>
<TELL
"In this country, looking over one's shoulder is a way of life; at
the moment, you don't see anything you haven't seen before." CR>)
(<VERB? TELL>
<TELL
"Talking to yourself is a sign of impending mental collapse." CR>
<STOP>)
(<VERB? LISTEN>
<TELL "Yes?" CR>)
(<AND <VERB? GIVE>
<PRSI? ,ME>>
<PERFORM ,V?TAKE ,PRSO>
<RTRUE>)
(<VERB? MOVE>
<V-WALK-AROUND>)
(<VERB? SEARCH>
<V-INVENTORY>
<RTRUE>)
;(<VERB? EXAMINE>
<TELL "You're wearing" AR ,GARMENT>)
(<VERB? KILL HIT MUNG OFF>
<TELL "Self-flagellation is not the answer." CR>)
(<VERB? FIND>
<TELL "You're right here!" CR>)
(<VERB? FOLLOW>
<TELL
"When you talk this way, you're very hard to follow." CR>)>>
<OBJECT GLOBAL-ROOM
(LOC GLOBAL-OBJECTS)
(DESC "room")
(SYNONYM ROOM PLACE LOCATION AREA)
(ACTION GLOBAL-ROOM-F)>
<ROUTINE GLOBAL-ROOM-F ()
<COND (<VERB? LOOK LOOK-INSIDE EXAMINE>
<PERFORM ,V?LOOK>
<RTRUE>)
(<VERB? ENTER WALK-TO>
<PERFORM ,V?WALK-AROUND ,PRSO>
<RTRUE>)
(<VERB? LEAVE EXIT>
<DO-WALK ,P?OUT>
<RTRUE>)
(<VERB? WALK-AROUND>
<TELL
"Walking around here reveals nothing new. To move elsewhere, just type
the desired direction." CR>)>>
<OBJECT WAY
(LOC GLOBAL-OBJECTS)
(DESC "way")
(SYNONYM WAY)>
;<OBJECT STAIRS
(LOC LOCAL-GLOBALS)
(DESC "stair")
(SYNONYM STAIR STAIRS STAIRW STEP)
(ADJECTIVE STEEP WINDING)
(ACTION STAIRS-F)>
;<ROUTINE STAIRS-F ()
<COND (<VERB? CLIMB CLIMB-UP>
<DO-WALK ,P?UP>)
(<VERB? CLIMB-DOWN>
<DO-WALK ,P?DOWN>)>>
<OBJECT SKY
(LOC GLOBAL-OBJECTS)
(DESC "sky")
(SYNONYM SKY)
(ADJECTIVE NIGHT DARK)
(ACTION SKY-F)>
<ROUTINE SKY-F ()
<COND (<VERB? EXAMINE>
<COND (<EQUAL? ,SCENARIO 3>
<TELL
"It's a beautiful, sunny day in Ostnitz." CR>)
(<EQUAL? ,SCENARIO 1>
<TELL
"It's dark outside and cloudy, if memory serves." CR>)
(<OR <EQUAL? ,HERE ,INSIDE-SHED ,HUT-LIVING>
<EQUAL? ,HERE ,HUT-BEDROOM ,HUT-STORAGE>>
<TELL
"It's hard to tell from here, but it can be assumed that it is still dark
and cloudy out." CR>)
(T
<TELL
"It is dark and cloudy, though the clouds are thin enough to see the
pale image of a full moon lighting up the sky.">
<COND (<OR <EQUAL? ,HERE ,OUTSIDE-HUT ,NORTH-HUT>
<EQUAL? ,HERE ,SOUTH-HUT ,D5 ,BEHIND-HUT>>
<CRLF>)
(T
<TELL " Off to the ">
<TELL-DIRECTION ,HERE ,D5>
<COND (,HUT-BURNING
<TELL ", you can see a dull
orange glow with plumes of black smoke billowing upwards." CR>)
(T
<TELL ", you can see some wisps of
black smoke rising up into the heavens." CR>)>)>)>)>>
;<ROUTINE DONT-HANDLE? (OBJECT)
<COND (<OR <AND <EQUAL? .OBJECT ,PRSO>
<PRSO-MOBY-VERB?>>
<AND <EQUAL? .OBJECT PRSI>
<PRSI-MOBY-VERB?>>>
<RTRUE>)
(T
<RFALSE>)>>
;<ROUTINE TALKING-TO? (ACTOR)
<COND (<OR <ASKING? .ACTOR>
<EQUAL? ,WINNER .ACTOR>>
<RTRUE>)
(<AND <VERB? TELL TELL-ABOUT HELLO WAVE-AT REPLY YELL ALARM>
<PRSO? .ACTOR>>
<RTRUE>)
(T
<RFALSE>)>>
;<ROUTINE ASKING? (ACTOR)
<COND (<AND <VERB? ASK-ABOUT ASK-FOR>
<PRSO? .ACTOR>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE TOUCHING? (THING)
<COND (<AND <OR <EQUAL? ,PRSA ,V?TAKE ,V?TOUCH ,V?SHAKE>
<EQUAL? ,PRSA ,V?SPIN ,V?PUT-ON>
<EQUAL? ,PRSA ,V?PUSH ,V?CLOSE>
<EQUAL? ,PRSA ,V?MOVE ,V?OPEN>
<EQUAL? ,PRSA ,V?RAISE ,V?CLIMB-OVER>
<EQUAL? ,PRSA ,V?CLIMB-UP ,V?BEND>
<EQUAL? ,PRSA ,V?CLIMB ,V?CLIMB-DOWN ,V?CLIMB-ON>
<EQUAL? ,PRSA ,V?BOARD ,V?ENTER ,V?CRAWL-UNDER>
<HURT? .THING>>
<PRSO? .THING>>
<RTRUE>)
(<AND <PRSI? .THING>
<VERB? PUT PUT-ON>>
<RTRUE>)
(T
<RFALSE>)>>
;<ROUTINE DISTURB? (THING)
<COND (<OR <TOUCHING? .THING>
<TALKING-TO? .THING>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE HURT? (THING)
<COND (<AND <OR <EQUAL? ,PRSA ,V?MUNG ,V?KICK ,V?KILL>
<EQUAL? ,PRSA ,V?KNOCK ,V?CUT ;,V?WHIP>
<EQUAL? ,PRSA ,V?BITE ,V?PUSH>>
<PRSO? .THING>>
<RTRUE>)
(<AND <VERB? THROW>
<PRSI? .THING>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE PRSO-PRINT ("AUX" PTR) ;"moved directly into CANT-SEE"
<COND (<OR ,P-MERGED
<==? <GET <SET PTR <GET ,P-ITBL ,P-NC1>> 0> ,W?IT>>
<TELL " " D ,PRSO>)
(T <BUFFER-PRINT .PTR <GET ,P-ITBL ,P-NC1L> <>>)>>
<ROUTINE PRSI-PRINT ("AUX" PTR) ;"moved directly into CANT-SEE"
<COND (<OR ,P-MERGED
<==? <GET <SET PTR <GET ,P-ITBL ,P-NC2>> 0> ,W?IT>>
<TELL " " D ,PRSI>)
(T <BUFFER-PRINT .PTR <GET ,P-ITBL ,P-NC2L> <>>)>>
<ROUTINE CANT-SEE ("OPTIONAL" (OBJ <>) (STRING <>))
<SETG P-WON <>>
;<COND (,P-MULT
<SETG P-NOT-HERE <+ ,P-NOT-HERE 1>>)>
<TELL "You can't see">
<COND (<OR <NOT .OBJ>
<AND .OBJ
<NOT <NAME? .OBJ>>>>
<TELL " any">)>
<COND (<NOT .OBJ>
<TELL " " .STRING>)
(<EQUAL? .OBJ ,PRSI>
<PRSI-PRINT>)
(T
<PRSO-PRINT>)>
<TELL " here." CR>>
<ROUTINE CANT-VERB-A-PRSO! (STRING)
<TELL "You can't " .STRING AR ,PRSO>>
<ROUTINE TELL-HIT-HEAD ()
<TELL "You hit your head against the " D ,PRSO
" as you attempt this." CR>>
;<ROUTINE IS-NOUN? (TEST-NOUN)
<COND (<EQUAL? .TEST-NOUN <GET ,P-NAMW 0> <GET ,P-NAMW 1>>
<RTRUE>)
(T
<RFALSE>)>>
;<ROUTINE IS-ADJ? (OBJ TEST-ADJECTIVE "AUX" INPUT-ADJECTIVE)
<COND (<EQUAL? .OBJ ,PRSO>
<SET INPUT-ADJECTIVE <GET ,P-ADJW 0>>)
(T
<SET INPUT-ADJECTIVE <GET ,P-ADJW 1>>)>
<COND (<EQUAL? .TEST-ADJECTIVE .INPUT-ADJECTIVE>
<RTRUE>)
(T
<RFALSE>)>>
;<ROUTINE IS-ADJ? (TEST-ADJ)
<COND (<EQUAL? .TEST-ADJ <GET ,P-ADJW 0> <GET ,P-ADJW 1>>
<RTRUE>)
(T
<RFALSE>)>>
;<CONSTANT TOO-DARK "It's too dark to see a thing.">
<CONSTANT YNH "You're not holding">
;<GLOBAL YOU-SEE "You can see">
<CONSTANT LOOK-AROUND "Look around you.|">
<CONSTANT CANT-GO "You can't go that way.|">
<ROUTINE REFERRING ("OPTIONAL" (FOO <>))
<TELL "[I don't see what you're referring to.]" CR>>
<CONSTANT RECOGNIZE "[That sentence isn't one I recognize.]|">
<CONSTANT HOLDING-IT "You're holding it!|">
<CONSTANT PERIOD ".|">

170
good.zabstr Normal file
View file

@ -0,0 +1,170 @@
<DEFINE-ROUTINE I-120-SECONDS>
<GLOBAL 30-TIMER 0>
<DEFINE-ROUTINE I-30-SECONDS>
<GLOBAL HEALTH 10>
<GLOBAL WARMTH 10>
<GLOBAL BEEN-AT-HUT? <>>
<GLOBAL CUT-VIGILANCE <>>
<DEFINE-ROUTINE GONE-TO-THE-DOGS?>
<GLOBAL HEALTH-TBL <PTABLE
"You are on your last legs now, and have trouble moving around. Even the most simple of actions is complicated, and you realize that your mission will soon end in failure. If you're lucky, maybe they'll find you before you die here."
"You've gotten to the point where you must stop and rest briefly after every few dozen steps. Unless you stop the blood loss soon, you will collapse."
"The weakness has taken a toll on your physical abilities; movement is slower and less sure."
"You are definitely weaker now, and it is starting to affect you significantly."
"You're starting to feel a little weak and confused; it occurs to you that you won't last very long unless you stop the bleeding from your wounded left arm."
>>
<OBJECT GLOBAL-TOURNIQUET (LOC GLOBAL-OBJECTS) (DESC "tourniquet") (SYNONYM
TOURNIQUET) (SCENARIO 2) (ACTION GLOBAL-TOURNIQUET-F)>
<DEFINE-ROUTINE GLOBAL-TOURNIQUET-F>
<OBJECT RIPPED-CLOTHES (DESC "piece of ripped fabric") (SYNONYM FABRIC
TOURNIQUET PIECE RAG SCRAP) (ADJECTIVE RIPPED TORN) (FLAGS TAKEBIT) (SCENARIO 2
) (ACTION RIPPED-CLOTHES-F)>
<DEFINE-ROUTINE RIPPED-CLOTHES-F>
<OBJECT BODY-PARTS (LOC GLOBAL-OBJECTS) (DESC "body part") (SYNONYM LEG FOOT
HEAD EYE NOSE) (ADJECTIVE MY LEFT RIGHT) (ACTION BODY-PARTS-F)>
<DEFINE-ROUTINE BODY-PARTS-F>
<OBJECT LEFT-ARM (DESC "your left arm") (SYNONYM ARM) (ADJECTIVE MY LEFT) (
FLAGS NDESCBIT NARTICLEBIT WORNBIT NOTHEBIT NOABIT OPENBIT SEARCHBIT SURFACEBIT
) (ACTION ARM-F)>
<OBJECT WOUNDED-LEFT-ARM (DESC "your left arm") (SYNONYM ARM WOUND BLOOD) (
ADJECTIVE MY LEFT BLEEDING BLOODY INJURED HURT WOUNDED) (FLAGS NDESCBIT
NARTICLEBIT WORNBIT SEARCHBIT SURFACEBIT NOTHEBIT NOABIT OPENBIT) (ACTION ARM-F
)>
<OBJECT RIGHT-ARM (LOC PROTAGONIST) (DESC "your right arm") (SYNONYM ARM) (
ADJECTIVE MY RIGHT) (FLAGS NDESCBIT NARTICLEBIT WORNBIT SEARCHBIT SURFACEBIT
NOTHEBIT NOABIT OPENBIT) (ACTION ARM-F)>
<DEFINE-ROUTINE ARM-F>
<OBJECT CLOTHES (LOC PROTAGONIST) (DESC "your everyday clothes") (SYNONYM
CLOTHES SOCKS SHIRT PANTS CLOTHING) (ADJECTIVE MY EVERYDAY) (FLAGS NARTICLEBIT
WEARBIT WORNBIT NOTHEBIT NOABIT) (ACTION CLOTHES-F)>
<GLOBAL CLOTHES-RIPPED <>>
<DEFINE-ROUTINE CLOTHES-F>
<DEFINE-ROUTINE I-200-SECONDS>
<GLOBAL WARMTH-TBL <PTABLE
"You're shaking uncontrollably from the cold. It won't be long before you are competely incapacitated."
"You're shivering badly. If you don't find some warmth soon, it's hard to see how you can go on."
"Your teeth start to chatter from the cold; you are clearly slowing down, both physically and mentally."
"You've got quite a chill; you must move now to keep warm, but even this is not enough."
"In your confusion, you've all but forgotten how cold it is outside.">>
<OBJECT WATCHING-OBJECT (DESC "watching") (LOC GLOBAL-OBJECTS) (SYNONYM
WATCHING) (ACTION WATCHING-OBJECT-F)>
<DEFINE-ROUTINE WATCHING-OBJECT-F>
<OBJECT TIMING-OBJECT (DESC "chronograph") (SYNONYM WATCH TIMER TIMING CLOCK
TIME CHRONOGRAPH STOPWATCH CHRONOMETER) (FLAGS WORNBIT TAKEBIT WEARBIT READBIT)
(SCENARIO 2) (ACTION TIMING-OBJECT-F)>
<DEFINE-ROUTINE TIMING-OBJECT-F>
<DEFINE-ROUTINE REDISPLAY-CHRONOGRAPH>
<OBJECT SEARCHLIGHTS (DESC "searchlight") (LOC LOCAL-GLOBALS) (SYNONYM
SEARCHLIGHT LIGHT LIGHTS) (ACTION SEARCHLIGHTS-F)>
<DEFINE-ROUTINE SEARCHLIGHTS-F>
<DEFINE-ROUTINE SL-CYCLE>
<DEFINE-ROUTINE G-CYCLE>
<GLOBAL PERIOD-CR ".|
">
<GLOBAL SL-WATCH <>>
<DEFINE-ROUTINE SL-TELL>
<DEFINE-ROUTINE SL-POS-STR>
<DEFINE-ROUTINE SL-POS-STR-AB>
<DEFINE-ROUTINE SL-POS>
<GLOBAL SL-POS-STR-TBL <PTABLE "north" "north-northeast" "northeast"
"east-northeast" "east" "east-southeast" "southeast" "south-southeast" "south"
"south-southwest" "southwest" "west-southwest" "west" "west-northwest"
"northwest" "north-northwest" "north">>
<GLOBAL SL-POS-STR-AB-TBL <PTABLE "N" "NNE" "NE" "ENE" "E" "ESE" "SE" "SSE" "S"
"SSW" "SW" "WSW" "W" "WNW" "NW" "NNW" "N">>
<GLOBAL SL-TBL <LTABLE <TABLE 0 45> <TABLE 900 90> <TABLE 2700 45>>>
<GLOBAL NOMANS-SPEED 3>
<DEFINE-ROUTINE NOMANS-MOVE>
<DEFINE-ROUTINE PAUSE>
<DEFINE-ROUTINE I-READ-FALSE>
<DEFINE-ROUTINE SL-CAUGHT-START>
<DEFINE-ROUTINE SLOWDOWN>
<GLOBAL SL-CAUGHT-TOWERS <PTABLE "leftmost tower " "middle tower "
"rightmost tower ">>
<CONSTANT SL-BEAM 16>
<DEFINE-ROUTINE IN-THE-SPOTLIGHT?>
<DEFINE-ROUTINE TURN-SL>
<GLOBAL TRUE-FLAG T>
<GLOBAL FALSE-FLAG <>>
<OBJECT DOGS (LOC A2) (DESC "pack of dogs") (SYNONYM DOGS PACK)>
<OBJECT GLOBAL-DOGS (LOC GLOBAL-OBJECTS) (DESC "pack of dogs") (SYNONYM DOGS
PACK) (SCENARIO 2) (ACTION GLOBAL-DOGS-F)>
<DEFINE-ROUTINE GLOBAL-DOGS-F>
<GLOBAL NODOGS-FLAG <>>
<GLOBAL DOG-PURSUIT <>>
<GLOBAL VIGILANCE <>>
<DEFINE-ROUTINE I-DOGS>
<GLOBAL LOST-SCENT <>>
<DEFINE-ROUTINE HOW-FAR>
<DEFINE-ROUTINE NS-DIFF>
<DEFINE-ROUTINE EW-DIFF>
<GLOBAL ROAD-TBL <PTABLE F4 F5 E6 D6 ROAD-END D6 D7 D8 C9 0>>
<GLOBAL RESTED-ROAD-TBL 0>
<GLOBAL CAR-ON-ROAD? <>>
<OBJECT CAR (LOC ROOMS) (DESC "automobile") (LDESC
"An official car is here, bearing the seal of Frobnia.") (SYNONYM DOOR CAR AUTO
AUTOMOBILE) (FLAGS VOWELBIT AN OPENBIT METALBIT) (ACTION CAR-F)>
<DEFINE-ROUTINE CAR-F>
<OBJECT CAR-WINDOW (LOC CAR) (DESC "car window") (SYNONYM WINDOW) (FLAGS
NDESCBIT) (ACTION CAR-WINDOW-F)>
<DEFINE-ROUTINE CAR-WINDOW-F>
<OBJECT CAR-STUFF (LOC CAR) (DESC "car part") (SYNONYM TRUNK HOOD) (FLAGS
NDESCBIT) (ACTION CAR-STUFF-F)>
<DEFINE-ROUTINE CAR-STUFF-F>
<OBJECT GLOBAL-CAR (LOC GLOBAL-OBJECTS) (DESC "automobile") (SCENARIO 2) (
SYNONYM CAR AUTO AUTOMOBILE) (FLAGS VOWELBIT AN) (ACTION GLOBAL-CAR-F)>
<DEFINE-ROUTINE GLOBAL-CAR-F>
<DEFINE-ROUTINE I-CARS>
<DEFINE-ROUTINE TELL-DIRECTION>
<DEFINE-ROUTINE RET-DIRECTION>
<GLOBAL DIR-PROP-TBL <PTABLE P?NORTH P?NW P?NE P?EAST P?SOUTH P?SW P?SE P?WEST>
>
<GLOBAL CAR-SEQUENCE <>>
<GLOBAL WOOD-TIMER 35>
<DEFINE-ROUTINE CAR-NEARLY-HITS>
<GLOBAL SEQUENCE-RUN? <>>
<GLOBAL CAR-SEQUENCE-TBL <LTABLE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0>>
<DEFINE-ROUTINE RUN-CAR-SEQUENCE>
<DEFINE-ROUTINE RUN-SCOUT-SEQUENCE>
<DEFINE-ROUTINE SCOUT-CATCHES>
<GLOBAL SCOUT-TBL <PTABLE <PTABLE NORTH-HUT SOUTH-HUT
"As if on command, a single guard breaks off from the group and walks slowly and carefully to the northeast."
"As if on command, a single guard breaks off from the group and walks slowly and carefully to the northeast."
OUTSIDE-HUT> <PTABLE BEHIND-HUT HUT-LIVING
"You hear footsteps coming slowly in your direction from the north side of the hut."
"Apparently, one of the guards has been ordered to search the area, for a lone guard is walking past the window. Fortunately, he is concentrating on the grounds, rather than the inside of the hut."
NORTH-HUT> <PTABLE SOUTH-HUT HUT-STORAGE
"You hear footsteps coming slowly in your direction from the back side of the hut."
"Through the window, you see a lone guard checking out
the rear of the hut. Fortunately, he isn't looking inside." BEHIND-HUT> <PTABLE
ROAD-END HUT-BEDROOM
"You can see a single guard slowly walking around the back side of the hut to the south side of the hut."
"Through the window, a lone guard comes into view, awalking slowly toward the front of the hut. Fortunately, he isn't looking in your direction."
SOUTH-HUT> <PTABLE NORTH-HUT 0
"You watch as the lone guard returns to the group. He appears relieved that he has nothing to report."
"FOO" 0>>>
<DEFINE-ROUTINE GUARDS-SPOTTED>
<DEFINE-ROUTINE CAR-SPOTTED>
<OBJECT SWAMP (LOC GLOBAL-OBJECTS) (DESC "swamp") (SYNONYM SWAMP MARSH) (ACTION
SWAMP-F)>
<DEFINE-ROUTINE WRONG-SCENARIO>
<GLOBAL IN-SWAMP? <>>
<DEFINE-ROUTINE SWAMP-F>
<GLOBAL HACK-FLAG <>>
<DEFINE-ROUTINE GUARD-DISTANCE>
<DEFINE-ROUTINE IN-GUARD-VIEW?>
<GLOBAL WOOD-TBL <PLTABLE HUT-STORAGE HUT-LIVING OUTSIDE-HUT D5 D5 OUTSIDE-SHED
INSIDE-SHED INSIDE-SHED OUTSIDE-SHED D5 D5 OUTSIDE-HUT HUT-LIVING HUT-STORAGE
HUT-LIVING 0>>
<GLOBAL WOOD-COUNT 0>
<DEFINE-ROUTINE RUN-WOOD-SEQUENCE>
<GLOBAL HUT-MAN-FROM <>>
<CONSTANT HUT-MAN-HALT
"You hear a cry of \"Halt,\" then spin around to see a large man aiming
a pistol at you. You start to run, but you're shot in the leg. Unable to
move, you await the arrival of the border patrol.">
<DEFINE-ROUTINE HUT-MUNGER>
<OBJECT GLOBAL-SEARCHLIGHTS (LOC GLOBAL-OBJECTS) (DESC "searchlights") (SYNONYM
LIGHT LIGHTS SEARCHLIGHT) (SCENARIO 2) (ACTION GLOBAL-SEARCHLIGHTS-F)>
<DEFINE-ROUTINE GLOBAL-SEARCHLIGHTS-F>

1509
good.zil Normal file

File diff suppressed because it is too large Load diff

212
hints.zabstr Normal file
View file

@ -0,0 +1,212 @@
<GLOBAL LAST-HINT 0>
<GLOBAL LAST-Q 0>
<GLOBAL HINT-WARNING <>>
<GLOBAL HINTS-OFF <>>
<DEFINE-ROUTINE V-HINT>
<DEFINE-ROUTINE DISPLAY-HINT>
<DEFINE-ROUTINE PUT-UP-QUESTIONS>
<DEFINE-ROUTINE INIT-HINT-SCREEN>
<CONSTANT HINT-COUNT 0>
<CONSTANT HINT-QUESTION 1>
<CONSTANT HINT-SEEN 2>
<CONSTANT HINT-OFF 3>
<CONSTANT HINT-HINTS 4>
<DEFINE NEW-HINT (NAME Q "ARGS" HINTS) <COND (<G? <LENGTH .Q> 35> <ERROR
QUESTION-TOO-LONG!-ERRORS NEW-HINT .Q>)> <LTABLE .Q 4 0 !.HINTS>>
<GLOBAL HINT-TBL <>>
<GLOBAL HINT-TBL-1 <PLTABLE <NEW-HINT H-ANSWER "How do I answer the man?"
"It is possible to answer either way, although you must be careful."
"If he thinks you are lying, it will raise his level of suspicion, regardless of what you said."
"Also, the admission that you have seen the American agent is enough to generate a little suspicion."
> <NEW-HINT H-BLOOD "Why doesn't he believe my answer?"
"Is there any reason the man might KNOW that you've seen
the American agent?"
"Might the agent have left something behind, besides the document and the carnation?"
"Wasn't he holding his left arm? Mightn't it have been wounded?"
"LOOK AT THE FLOOR to see the blood that he's left here. It's a dead giveaway, no pun intended. It would be best to clean up after him."
"In the lavatory, across the hall and to the south, there is a towel. Get it, wet it, then use it to clean up the blood."
"Also, answering in a way that contradicts the evidence (i.e. the bloodiness of the floor), adds suspicion."
> <NEW-HINT H-SUSPICIOUS "Why am I searched so thoroughly?"
"For one reason, there's an important document missing."
"For another, they know the American agent had it."
"You are American, therefore somewhat suspicious."
"If you're wearing that crushed carnation, you might look peculiar to them."
"Depending on how you handled your 'interview' with the trench coated man, you might have appeared suspicious."
"Also, if you have been seen outside of your compartment holding any unusual items - a carnation, a briefcase, etc..."
> <NEW-HINT H-FOLLOW "Why am I followed at the station?"
"Clearly, you are under suspicion."
"There are a number of things you may have done to make the situation worse. See the previous two questions. Also, if the guards found anything peculiar in their search of your possessions, that would increase their suspicions."
> <NEW-HINT H-DOCUMENT "How can I deliver the document?"
"You'll have to make sure the guards don't find it."
"Have you tried hiding it...?" "...in your compartment?" "...in the lavatory?"
"...in your camera?"
"Oh, you have? Then, you should be aware that you CANNOT deliver the document."
"However, you can deliver its contents."
"Your camera can be used for more than tourist shots."
"PHOTOGRAPH the document."
"You must be clever to avoid the guards destroying your film during the search."
"Try rewinding the roll that's in there, and loading the camera with the exposed roll. That will divert suspicion."
> <NEW-HINT H-CONTACT "Who is my contact?"
"It depends on what the American agent said at the very beginning."
"Check your Frobnian phrase book (in your Border Zone package) for the translation of the phrase that your contact was supposed to repeat. Be careful; the exact words must be used."
"When your contact appears, you must SAY \"It is my fault\" in Frobnian. Check your phrase book for the translation."
"Then, GIVE THE COLOR ROLL TO THE CONTACT. Alternatively, you can DROP THE COLOR FILM; this latter method is less obvious, in case you are followed. Depending on how much suspicion you have raised, you may be able to do either, both, or none of these two things."
> <NEW-HINT H-EVER1 "Have you ever tried...?"
"[Please don't read further until you have successfully completed this chapter.]"
"...dropping things in the passageway?"
"...entering other compartments (they're all different!)"
"...photographing things at the train platform?"
"...photographing the bad spy? yourself? the camera?"
"...pulling the stop cord on the train?"
"...jumping out the window in your compartment?"
"...giving the document (or shreds) to the bad spy?"
"...reading the graffiti in the bathroom?" "...putting things in the sink?"
"...flushing things down the toilet?"
"...trying to hide the document every place you can think of?"
"...taking a gun from one of the guards?">>>
<GLOBAL HINT-TBL-2 <PLTABLE <NEW-HINT H-BLEEDING
"How do I stop myself from bleeding?" "Have you tried using a tourniquet?"
"Is there any cloth or fabric you can use?" "RIP your CLOTHES."
"Then, TIE THE PIECE OF CLOTHING AROUND LEFT ARM."> <NEW-HINT H-WARMTH
"How can I get warm?" "Have you found any shelter?"
"Go east and north from your starting point."
"You'll have to get into the hut." "There's a very nice parka inside."
"See the question \"How do I get into the hut?\""> <NEW-HINT H-DOGS
"How can I keep away from the dogs?" "Can you find food to distract them?"
"Didn't think so." "Can you hide your tracks?" "Guess not."
"Can you confuse their senses?"
"How about a place where you don't leave tracks..."
"... and don't worry much about odors." "Have you been at the swamp?"
"Make sure that you ENTER THE SWAMP; then move somewhere else along the edge, so they'll lose the trail."
"Oh, I hope you weren't wearing any of your nice shoes."> <NEW-HINT H-CAR
"What about the automobile I hear?" "Have you observed it from up close?"
"If you get in it's way, you'll be caught."
"There's a good spot where you can observe the car."
"Like the north side of the hut."
"Basically, three enemy guards are in the car."
"They come to warn the man in the hut that you are an escaped lunatic."
"Who else would be walking around, wounded and cold, in the middle of nowhere?"
> <NEW-HINT H-HUT "How can I get into the hut?"
"Have you tried the front and back doors?"
"Well, it works better if nobody's inside."
"You can get in when the occupant is talking to the men from the car. [See the hint about the car if this is meaningless...]"
"Also, the occupant will leave at some point to get more wood from the shed."
"Also, there's another way, but that's for you to figure out..."> <NEW-HINT
H-SCOUT "How can I get out of the hut?"
"If the owner hasn't returned and there's no scout prowling around, it's no problem."
"The scout will be gone when the car leaves (you'll hear it)."
"But now, the owner's returned as well. The squeaky door alerts him to your presence."
"Take the oil can, then OIL THE HINGES."
"Now you can leave - just don't come back!"> <NEW-HINT H-BOMB
"How do I use the explosive?" "Better might be \"Where...?\""
"To use the explosive, REMOVE the CAP, PUSH the BUTTON once for every minute you want the fuse to run, and REPLACE the CAP."
"Oh... you won't want to be there when it goes off."
"Try placing it in different places to see what happens; remember it's magnetic so you can PUT it ON metallic objects."
"You don't really need this until you've gotten as far as the border fences."
"See \"How can I cross the border?\" for details."> <NEW-HINT H-SL
"How can I avoid the searchlights?" "If you are not WATCHing them, you should."
"The status line will show you the current positions of the lights."
"You should plan to head NORTH when the three lights are all aimed away from you."
"Make sure you understand where YOU are in relation to the three lights; the right times to cross differ depending on your position."
"To cross successfully, you must be in good physical condition."
"That means warm and not bleeding." "You should also be wearing proper shoes."
"For example, the WORK SHOES in the hut."> <NEW-HINT H-FENCE
"How can I cross the first fence?"
"It's electrified, so you'd best not touch it."
"Also, you'll need something to break the chain links."
"You could use something insulating on your hands."
"Perhaps RUBBER GLOVES, from the woodshed."
"You'll also need the BOLT CUTTERS, also found in the woodshed."
"You'll have to LOOK AT THE TOOLS to find the gloves and the bolt cutters."
"Try CUTting the LINKS WITH THE BOLT CUTTERS."
"Oh, yeah. If you want to get through the fence, you'll have to BEND (or PULL) it back, otherwise you'll get zapped going through."
> <NEW-HINT H-GAS "How can I survive the tear gas?"
"Did you don your gas mask?" "And why not?" "Oh, you don't have one."
"Perhaps you're playing the wrong game?" "Or cheating?"
"Either way, it doesn't reflect well on you."> <NEW-HINT H-GUARDS
"How can I avoid the border guards?"
"Both are moving, so you should WATCH them."
"When they are facing away from you, you have some freedom of action."
"Unless you're in front of the middle tower, you are ALWAYS in view of one of the guards."
"The quieter you are, the better." "The farther away they are, the better."
"The less you hang around there, the better."> <NEW-HINT H-BORDER
"How do I get past the second fence?" "There's no way." "You can't." "Really."
"No." "!"> <NEW-HINT H-CROSS "How can I cross the border?"
"If you haven't gotten to the guard tower yet, don't read any further."
"How tall is the fence?" "How tall is the tower?"
"It might be possible to \"ride\" the tower across the border."
"An explosive device would be useful in this regard." "But where to put it?"
"The posts are fairly weak, but choose well."
"The northern posts will work. ATTACH THE PEN TO THE NE (NW) POST"
"Oh, first you should set the timer and arm the device."
"Then, you should get INTO the tower."> <NEW-HINT H-TOWER
"How do I get into the tower?" "Did you try knocking on the door?"
"Well, that doesn't mean that you should be just standing there with a stupid look on your face..."
"Check out the brace; you can GET ON it." "Then try KNOCKing on the DOOR."
"No, we're not pulling your leg."> <NEW-HINT H-CHASE
"The guards are coming after me!" "Well, what did you expect?"
"You can't leave; you can't fight; or can you?"
"You'll have to somehow blow up the tower and yet stay in relative safety (no mean trick)."
"This hinges on where you've placed the explosive, how you've set the timer, and where you are when it goes off."
"See the question regarding \"How can I cross the border?\""> <NEW-HINT H-EVER2
"Have you ever tried...?"
"[Please don't read further until you have successfully completed this chapter.]"
"...having the bomb explode in the car? Or in or adjacent to the hut? Or the shed?"
"...going farther into the swamp?"
"...knocking on the tower door for a second time?"
"...using the binoculars? On something you're carrying?" "...climbing the hut?"
>>>
<GLOBAL HINT-TBL-3 <PLTABLE <NEW-HINT H-FIND-SNIPER
"Where is the sniper hiding?" "Have you seen your contact, the antique dealer?"
"The antique shop is just west of the southwest corner of the square (i.e. south and west of your starting position)."
"Be careful; the police are sometimes inside, checking around. They know who you are, so you'd better not get seen."
"You'll have to find out yourself on which floor of the apartment building the sniper is hiding, but at least your contact had the password."
"Perhaps he is, in some way, visible from the street; the town square might be a good vantage point."
"From the town square, try LOOKing AT THE WINDOWS or BUILDINGS. There are three open windows in the apartment building; the sniper is in one of them."
"In the apartment building's lobby, there is a directory of residents; maybe there is some information there."
"There is only one vacant apartment with the window open. Guess who's in it?">
<NEW-HINT H-TO-SNIPER "How do I get TO the sniper?"
"You can try using the elevator in the apartment lobby."
"Or, have you been into the alley?" "Down at the end is a fire-escape ladder."
"If you TAKE THE TRASH CAN, then PUT THE TRASH CAN UNDER THE LADDER, then STAND ON THE CAN, you can easily reach the ladder. Then, go up to the proper floor."
"Knock on the door, and have the password handy. If you don't give the password quickly, the sniper will ignore you for the remainder of the scenario."
> <NEW-HINT H-PASSWORD "How do I get the password?"
"You'll have to meet with your contact, the antique dealer. See the previous question."
> <NEW-HINT H-DILEMMA "Should I kill the sniper?"
"An interesting dilemma. If you kill the sniper, your cover is broken, due to suspicion regarding the gun used (yours) and the incident on the train, in which you lost the coded document. On the other hand, you stop the assassination. All in all, a mixed bag. You can do better."
> <NEW-HINT H-SNIPER-KILLS "Why does the sniper kill me?"
"A variety of reasons. First, anything you do that might cause him to think you're intent on defeating him will get you killed. Also, arriving at his door while you're being pursued is a definite killer."
> <NEW-HINT H-TOPAZ "How can I avoid Topaz?"
"Once he's seen you, he will doggedly pursue you for the remainder of your alloted time (i.e. until the assassination happens.)"
"He can be avoided by staying away from the cafe. The more you pass by there or spend time there, the more likely that he'll see you."
"Maybe you don't want to avoid him..."> <NEW-HINT H-TOPAZ-HELP
"Can Topaz help me?"
"Firstly, his interest and yours are similar - preventing the assassination. In your case, however, you daren't risk exposing yourself to Topaz, firstly, for fear of being seen by other Soviet agents and, secondly,
for fear of being killed by Topaz, who has an axe to grind with you."
"Can you arrange for Topaz to kill the sniper?" "Think about it..."
"Topaz will follow you anywhere, even to the sniper's room."
"If you can lead him there, you're home free. Almost."> <NEW-HINT H-CART
"Topaz always catches me. Why?"
"He's about the same speed as you, so you're usually fine. Unless you're in the alley, trying to get to the fire-escape ladder. That takes more time than you've got."
"Can you put a stumbling block in his way?"
"You can TOPPLE THE VENDOR'S CART and make an unholy mess; that will hold Topaz for a little while. After that, it's up to you."
> <NEW-HINT H-BEST "I can't get the best ending. Why?"
"Presumably, you have found the sniper and know the password."
"Also, you know that Topaz can be made to kill the sniper for you."
"Meaning that Topaz must follow you up to the sniper's room. See the previous clue for help in this regard."
"Once you're in the sniper's room, Topaz will never find you in time unless you've helped him along."
"DROP something before giving the password; it's presence will alert Topaz to yours. Oh, and make it small or the sniper will find it instead."
"And HIDE or STAND BEHIND THE DOOR so that you won't get in Topaz's line of fire and get killed with the sniper."
"Then, HIT TOPAZ, and he'll never know what happened."> <NEW-HINT H-EVER3
"Have you ever tried...?"
"[Please don't read further until you have successfully completed this chapter.]"
"...buying food from the vendor?" "...taking food after toppling the cart?"
"...throwing things at Topaz as he chases you?"
"...killing the sniper yourself? with Topaz's gun?"
"...figuring out how many Infocom people live in the Gribnitz apartments?">>>
<DEFINE-ROUTINE CENTER-LINE>
<DEFINE-ROUTINE LEFT-LINE>
<DEFINE-ROUTINE RIGHT-LINE>
<GLOBAL DIROUT-TBL <TABLE 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>>

487
hints.zil Normal file
View file

@ -0,0 +1,487 @@
"HINTS for
BORDER ZONE
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
<GLOBAL LAST-HINT 0>
<GLOBAL LAST-Q 0>
<GLOBAL HINT-WARNING <>>
<GLOBAL HINTS-OFF <>>
<ROUTINE V-HINT ("AUX" CURQ CURL CHR MAXQ MAXL (Q <>))
<COND (,HINTS-OFF
<TELL
"[Hints have been disallowed for this session.]" CR>
<RTRUE>)
(<NOT ,HINT-WARNING>
<SETG HINT-WARNING T>
<TELL "[Warning: It is recognized that the temptation
for help may at times be so exceedingly strong that you might fetch
hints prematurely. Therefore, you may at any time during the story type
HINTS OFF, and this will disallow the seeking out of help for the
present session of the story. If you still want a hint now, indicate
HINT.]" CR>
<RTRUE>)>
<COND (<EQUAL? ,SCENARIO 2>
<SETG HINT-TBL ,HINT-TBL-2>)
(<EQUAL? ,SCENARIO 1>
<SETG HINT-TBL ,HINT-TBL-1>)
(T
<SETG HINT-TBL ,HINT-TBL-3>)>
<SET MAXQ <GET ,HINT-TBL 0>>
<INIT-HINT-SCREEN>
<CURSET 4 1>
<SET MAXL <PUT-UP-QUESTIONS 1>>
<SET CURQ 1>
<SET CURL 5>
<COND (<G? ,LAST-HINT 0>
<SET CURL ,LAST-HINT>)>
<COND (<G? ,LAST-Q 0>
<SET CURQ ,LAST-Q>)>
<CURSET .CURL 2>
<PRINTI "->">
<REPEAT ()
<SET CHR <INPUT 1>>
<COND (<EQUAL? .CHR %<ASCII !\Q> %<ASCII !\q>>
<SETG LAST-HINT .CURL>
<SETG LAST-Q .CURQ>
<SET Q T>
<RETURN>)
(<EQUAL? .CHR %<ASCII !\N> %<ASCII !\n>>
<COND (<EQUAL? .CURQ .MAXQ> T)
(T
<CURSET .CURL 2>
<PRINTI " ">
<SET CURL <+ .CURL 1>>
<SET CURQ <+ .CURQ 1>>
<CURSET .CURL 2>
<PRINTI "->">)>)
(<EQUAL? .CHR %<ASCII !\P> %<ASCII !\p>>
<COND (<EQUAL? .CURQ 1> T)
(T
<CURSET .CURL 2>
<PRINTI " ">
<SET CURL <- .CURL 1>>
<SET CURQ <- .CURQ 1>>
<CURSET .CURL 2>
<PRINTI "->">)>)
(<EQUAL? .CHR 13 10>
<SETG LAST-HINT .CURL>
<SETG LAST-Q .CURQ>
<DISPLAY-HINT .CURQ>
<RETURN>)>>
<COND (<NOT .Q> <AGAIN>)>
<SPLIT 0>
<CLEAR -1>
<BUFOUT T>
<V-$ISL>
<TELL "Back to the game..." CR>>
<ROUTINE DISPLAY-HINT (N "AUX" H MX (CNT ,HINT-HINTS) CHR (FLG T))
<SPLIT 0>
<CLEAR -1>
<SPLIT 3>
<SCREEN ,S-WINDOW>
<CURSET 1 1>
<INVERSE-LINE>
<CENTER-LINE 1 "INVISICLUES (TM)" %<LENGTH "INVISICLUES (TM)">>
<CURSET 3 1>
<INVERSE-LINE>
<LEFT-LINE 3 " RETURN for hint">
<RIGHT-LINE 3 "Q to go back"
%<LENGTH "Q to go back">>
<HLIGHT ,H-BOLD>
<CENTER-LINE 2 <GET <SET H <GET ,HINT-TBL .N>> ,HINT-QUESTION>>
<HLIGHT ,H-NORMAL>
<SET MX <GET .H 0>>
<SCREEN ,S-TEXT>
<BUFOUT T>
<CRLF>
<REPEAT ()
<COND (<EQUAL? .CNT <GET .H ,HINT-SEEN>>
<RETURN>)
(T
<TELL <GET .H .CNT> CR CR>
<SET CNT <+ .CNT 1>>)>>
<REPEAT ()
<COND (<AND .FLG <G? .CNT .MX>>
<SET FLG <>>
<TELL "[That's all folks!]" CR>)
(.FLG
<TELL "Hint (">
<COND (<0? <- .MX .CNT>>
<TELL "last">)
(T
<TELL N <- .MX .CNT> " left">)>
<TELL ") -> ">
<SET FLG <>>)>
<SET CHR <INPUT 1>>
<COND (<EQUAL? .CHR %<ASCII !\Q> %<ASCII !\q>>
<PUT .H ,HINT-SEEN .CNT>
<RETURN>)
(<EQUAL? .CHR 13 10>
<COND (<G? .CNT .MX>
T)
(T
<SET FLG T>
<TELL <GET .H .CNT> CR CR>
<SET CNT <+ .CNT 1>>
<COND (<G? .CNT .MX>
<SET FLG <>>
<TELL
"[That's all folks!]" CR>)>)>)>>
<BUFOUT <>>
T>
<ROUTINE PUT-UP-QUESTIONS (ST "AUX" MXQ MXL LN)
<SET MXQ <GET ,HINT-TBL 0>>
<SET MXL <GETB 0 32>>
<SET LN 6>
<REPEAT ()
<SET LN <+ .LN 1>>
<COND (<G? .ST .MXQ>
<CURSET <- .LN 2> 1>
<TELL "[Last question]">
<RETURN .MXQ>)
;(<G? .LN .MXL>
<TELL CR "[More questions follow]" CR>
<RETURN <- .ST 1>>)
(T
<CURSET <- .LN 2> 1>
<TELL " "
<GET <GET ,HINT-TBL .ST> ,HINT-QUESTION>>)>
<SET ST <+ .ST 1>>>>
<ROUTINE INIT-HINT-SCREEN ("AUX" WID LEN)
<SET WID <GETB 0 33>>
<SPLIT 0>
<CLEAR -1>
<SPLIT <- <GETB 0 32> 1>>
<SCREEN ,S-WINDOW>
<BUFOUT <>>
<CURSET 1 1>
<INVERSE-LINE>
<CURSET 2 1>
<INVERSE-LINE>
<CURSET 3 1>
<INVERSE-LINE>
<CENTER-LINE 1 "INVISICLUES (TM)" 16>
<LEFT-LINE 2 " N for Next hint">
<RIGHT-LINE 2 "P for Previous hint" %<LENGTH "P for Previous hint">>
<LEFT-LINE 3 " RETURN to see hint">
<RIGHT-LINE 3 "Q to return to game" %<LENGTH "Q to return to game">>>
<CONSTANT HINT-COUNT 0>
<CONSTANT HINT-QUESTION 1>
<CONSTANT HINT-SEEN 2>
<CONSTANT HINT-OFF 3>
<CONSTANT HINT-HINTS 4>
<DEFINE NEW-HINT (NAME Q "ARGS" HINTS)
;<SETG .NAME 1>
<COND (<G? <LENGTH .Q> 35>
<ERROR QUESTION-TOO-LONG!-ERRORS NEW-HINT .Q>)>
<LTABLE .Q
4
0 ;.NAME
!.HINTS>>
<GLOBAL HINT-TBL <>>
<GLOBAL HINT-TBL-1
<PLTABLE
<NEW-HINT H-ANSWER
"How do I answer the man?"
"It is possible to answer either way, although you must be careful."
"If he thinks you are lying, it will raise his level of suspicion, regardless of what you said."
"Also, the admission that you have seen the American agent is enough to generate a little suspicion.">
<NEW-HINT H-BLOOD
"Why doesn't he believe my answer?"
"Is there any reason the man might KNOW that you've seen
the American agent?"
"Might the agent have left something behind, besides the document and the carnation?"
"Wasn't he holding his left arm? Mightn't it have been wounded?"
"LOOK AT THE FLOOR to see the blood that he's left here. It's a dead giveaway, no pun intended. It would be best to clean up after him."
"In the lavatory, across the hall and to the south, there is a towel. Get it, wet it, then use it to clean up the blood."
"Also, answering in a way that contradicts the evidence (i.e. the bloodiness of the floor), adds suspicion.">
<NEW-HINT H-SUSPICIOUS
"Why am I searched so thoroughly?"
"For one reason, there's an important document missing."
"For another, they know the American agent had it."
"You are American, therefore somewhat suspicious."
"If you're wearing that crushed carnation, you might look peculiar to them."
"Depending on how you handled your 'interview' with the trench coated man, you might have appeared suspicious."
"Also, if you have been seen outside of your compartment holding any unusual items - a carnation, a briefcase, etc...">
<NEW-HINT H-FOLLOW
"Why am I followed at the station?"
"Clearly, you are under suspicion."
"There are a number of things you may have done to make the situation worse. See the previous two questions. Also, if the guards found anything peculiar in their search of your possessions, that would increase their suspicions.">
<NEW-HINT H-DOCUMENT
"How can I deliver the document?"
"You'll have to make sure the guards don't find it."
"Have you tried hiding it...?"
"...in your compartment?"
"...in the lavatory?"
"...in your camera?"
"Oh, you have? Then, you should be aware that you CANNOT deliver the document."
"However, you can deliver its contents."
"Your camera can be used for more than tourist shots."
"PHOTOGRAPH the document."
"You must be clever to avoid the guards destroying your film during the search."
"Try rewinding the roll that's in there, and loading the camera with the exposed roll. That will divert suspicion.">
<NEW-HINT H-CONTACT
"Who is my contact?"
"It depends on what the American agent said at the very beginning."
"Check your Frobnian phrase book (in your Border Zone package) for the translation of the phrase that your contact was supposed to repeat. Be careful; the exact words must be used."
"When your contact appears, you must SAY \"It is my fault\" in Frobnian. Check your phrase book for the translation."
"Then, GIVE THE COLOR ROLL TO THE CONTACT. Alternatively, you can DROP THE COLOR FILM; this latter method is less obvious, in case you are followed. Depending on how much suspicion you have raised, you may be able to do either, both, or none of these two things.">
<NEW-HINT H-EVER1
"Have you ever tried...?"
"[Please don't read further until you have successfully completed this chapter.]"
"...dropping things in the passageway?"
"...entering other compartments (they're all different!)"
"...photographing things at the train platform?"
"...photographing the bad spy? yourself? the camera?"
"...pulling the stop cord on the train?"
"...jumping out the window in your compartment?"
"...giving the document (or shreds) to the bad spy?"
"...reading the graffiti in the bathroom?"
"...putting things in the sink?"
"...flushing things down the toilet?"
"...trying to hide the document every place you can think of?"
"...taking a gun from one of the guards?">
>>
<GLOBAL HINT-TBL-2
<PLTABLE
<NEW-HINT H-BLEEDING
"How do I stop myself from bleeding?"
"Have you tried using a tourniquet?"
"Is there any cloth or fabric you can use?"
"RIP your CLOTHES."
"Then, TIE THE PIECE OF CLOTHING AROUND LEFT ARM.">
<NEW-HINT H-WARMTH
"How can I get warm?"
"Have you found any shelter?"
"Go east and north from your starting point."
"You'll have to get into the hut."
"There's a very nice parka inside."
"See the question \"How do I get into the hut?\"">
<NEW-HINT H-DOGS
"How can I keep away from the dogs?"
"Can you find food to distract them?"
"Didn't think so."
"Can you hide your tracks?"
"Guess not."
"Can you confuse their senses?"
"How about a place where you don't leave tracks..."
"... and don't worry much about odors."
"Have you been at the swamp?"
"Make sure that you ENTER THE SWAMP; then move somewhere else along the edge, so they'll lose the trail."
"Oh, I hope you weren't wearing any of your nice shoes.">
<NEW-HINT H-CAR
"What about the automobile I hear?"
"Have you observed it from up close?"
"If you get in it's way, you'll be caught."
"There's a good spot where you can observe the car."
"Like the north side of the hut."
"Basically, three enemy guards are in the car."
"They come to warn the man in the hut that you are an escaped lunatic."
"Who else would be walking around, wounded and cold, in the middle of nowhere?">
<NEW-HINT H-HUT
"How can I get into the hut?"
"Have you tried the front and back doors?"
"Well, it works better if nobody's inside."
"You can get in when the occupant is talking to the men from the car. [See the hint about the car if this is meaningless...]"
"Also, the occupant will leave at some point to get more wood from the shed."
"Also, there's another way, but that's for you to figure out...">
<NEW-HINT H-SCOUT
"How can I get out of the hut?"
"If the owner hasn't returned and there's no scout prowling around, it's no problem."
"The scout will be gone when the car leaves (you'll hear it)."
"But now, the owner's returned as well. The squeaky door alerts him to your presence."
"Take the oil can, then OIL THE HINGES."
"Now you can leave - just don't come back!">
<NEW-HINT H-BOMB
"How do I use the explosive?"
"Better might be \"Where...?\""
"To use the explosive, REMOVE the CAP, PUSH the BUTTON once for every minute you want the fuse to run, and REPLACE the CAP."
"Oh... you won't want to be there when it goes off."
"Try placing it in different places to see what happens; remember it's magnetic so you can PUT it ON metallic objects."
"You don't really need this until you've gotten as far as the border fences."
"See \"How can I cross the border?\" for details.">
<NEW-HINT H-SL
"How can I avoid the searchlights?"
"If you are not WATCHing them, you should."
"The status line will show you the current positions of the lights."
"You should plan to head NORTH when the three lights are all aimed away from you."
"Make sure you understand where YOU are in relation to the three lights; the right times to cross differ depending on your position."
"To cross successfully, you must be in good physical condition."
"That means warm and not bleeding."
"You should also be wearing proper shoes."
"For example, the WORK SHOES in the hut.">
<NEW-HINT H-FENCE
"How can I cross the first fence?"
"It's electrified, so you'd best not touch it."
"Also, you'll need something to break the chain links."
"You could use something insulating on your hands."
"Perhaps RUBBER GLOVES, from the woodshed."
"You'll also need the BOLT CUTTERS, also found in the woodshed."
"You'll have to LOOK AT THE TOOLS to find the gloves and the bolt cutters."
"Try CUTting the LINKS WITH THE BOLT CUTTERS."
"Oh, yeah. If you want to get through the fence, you'll have to BEND (or PULL) it back, otherwise you'll get zapped going through.">
<NEW-HINT H-GAS
"How can I survive the tear gas?"
"Did you don your gas mask?"
"And why not?"
"Oh, you don't have one."
"Perhaps you're playing the wrong game?"
"Or cheating?"
"Either way, it doesn't reflect well on you.">
<NEW-HINT H-GUARDS
"How can I avoid the border guards?"
"Both are moving, so you should WATCH them."
"When they are facing away from you, you have some freedom of action."
"Unless you're in front of the middle tower, you are ALWAYS in view of one of the guards."
"The quieter you are, the better."
"The farther away they are, the better."
"The less you hang around there, the better.">
<NEW-HINT H-BORDER
"How do I get past the second fence?"
"There's no way."
"You can't."
"Really."
"No."
"!">
<NEW-HINT H-CROSS
"How can I cross the border?"
"If you haven't gotten to the guard tower yet, don't read any further."
"How tall is the fence?"
"How tall is the tower?"
"It might be possible to \"ride\" the tower across the border."
"An explosive device would be useful in this regard."
"But where to put it?"
"The posts are fairly weak, but choose well."
"The northern posts will work. ATTACH THE PEN TO THE NE (NW) POST"
"Oh, first you should set the timer and arm the device."
"Then, you should get INTO the tower.">
<NEW-HINT H-TOWER
"How do I get into the tower?"
"Did you try knocking on the door?"
"Well, that doesn't mean that you should be just standing there with a stupid look on your face..."
"Check out the brace; you can GET ON it."
"Then try KNOCKing on the DOOR."
"No, we're not pulling your leg.">
<NEW-HINT H-CHASE
"The guards are coming after me!"
"Well, what did you expect?"
"You can't leave; you can't fight; or can you?"
"You'll have to somehow blow up the tower and yet stay in relative safety (no mean trick)."
"This hinges on where you've placed the explosive, how you've set the timer, and where you are when it goes off."
"See the question regarding \"How can I cross the border?\"">
<NEW-HINT H-EVER2
"Have you ever tried...?"
"[Please don't read further until you have successfully completed this chapter.]"
"...having the bomb explode in the car? Or in or adjacent to the hut? Or the shed?"
"...going farther into the swamp?"
"...knocking on the tower door for a second time?"
"...using the binoculars? On something you're carrying?"
"...climbing the hut?">
>>
<GLOBAL HINT-TBL-3
<PLTABLE
<NEW-HINT H-FIND-SNIPER
"Where is the sniper hiding?"
"Have you seen your contact, the antique dealer?"
"The antique shop is just west of the southwest corner of the square (i.e. south and west of your starting position)."
"Be careful; the police are sometimes inside, checking around. They know who you are, so you'd better not get seen."
"You'll have to find out yourself on which floor of the apartment building the sniper is hiding, but at least your contact had the password."
"Perhaps he is, in some way, visible from the street; the town square might be a good vantage point."
"From the town square, try LOOKing AT THE WINDOWS or BUILDINGS. There are three open windows in the apartment building; the sniper is in one of them."
"In the apartment building's lobby, there is a directory of residents; maybe there is some information there."
"There is only one vacant apartment with the window open. Guess who's in it?">
<NEW-HINT H-TO-SNIPER
"How do I get TO the sniper?"
"You can try using the elevator in the apartment lobby."
"Or, have you been into the alley?"
"Down at the end is a fire-escape ladder."
"If you TAKE THE TRASH CAN, then PUT THE TRASH CAN UNDER THE LADDER, then STAND ON THE CAN, you can easily reach the ladder. Then, go up to the proper floor."
"Knock on the door, and have the password handy. If you don't give the password quickly, the sniper will ignore you for the remainder of the scenario.">
<NEW-HINT H-PASSWORD
"How do I get the password?"
"You'll have to meet with your contact, the antique dealer. See the previous question.">
<NEW-HINT H-DILEMMA
"Should I kill the sniper?"
"An interesting dilemma. If you kill the sniper, your cover is broken, due to suspicion regarding the gun used (yours) and the incident on the train, in which you lost the coded document. On the other hand, you stop the assassination. All in all, a mixed bag. You can do better.">
<NEW-HINT H-SNIPER-KILLS
"Why does the sniper kill me?"
"A variety of reasons. First, anything you do that might cause him to think you're intent on defeating him will get you killed. Also, arriving at his door while you're being pursued is a definite killer.">
<NEW-HINT H-TOPAZ
"How can I avoid Topaz?"
"Once he's seen you, he will doggedly pursue you for the remainder of your alloted time (i.e. until the assassination happens.)"
"He can be avoided by staying away from the cafe. The more you pass by there or spend time there, the more likely that he'll see you."
"Maybe you don't want to avoid him...">
<NEW-HINT H-TOPAZ-HELP
"Can Topaz help me?"
"Firstly, his interest and yours are similar - preventing the assassination. In your case, however, you daren't risk exposing yourself to Topaz, firstly, for fear of being seen by other Soviet agents and, secondly,
for fear of being killed by Topaz, who has an axe to grind with you."
"Can you arrange for Topaz to kill the sniper?"
"Think about it..."
"Topaz will follow you anywhere, even to the sniper's room."
"If you can lead him there, you're home free. Almost.">
<NEW-HINT H-CART
"Topaz always catches me. Why?"
"He's about the same speed as you, so you're usually fine. Unless you're in the alley, trying to get to the fire-escape ladder. That takes more time than you've got."
"Can you put a stumbling block in his way?"
"You can TOPPLE THE VENDOR'S CART and make an unholy mess; that will hold Topaz for a little while. After that, it's up to you.">
<NEW-HINT H-BEST
"I can't get the best ending. Why?"
"Presumably, you have found the sniper and know the password."
"Also, you know that Topaz can be made to kill the sniper for you."
"Meaning that Topaz must follow you up to the sniper's room. See the previous clue for help in this regard."
"Once you're in the sniper's room, Topaz will never find you in time unless you've helped him along."
"DROP something before giving the password; it's presence will alert Topaz to yours. Oh, and make it small or the sniper will find it instead."
"And HIDE or STAND BEHIND THE DOOR so that you won't get in Topaz's line of fire and get killed with the sniper."
"Then, HIT TOPAZ, and he'll never know what happened.">
<NEW-HINT H-EVER3
"Have you ever tried...?"
"[Please don't read further until you have successfully completed this chapter.]"
"...buying food from the vendor?"
"...taking food after toppling the cart?"
"...throwing things at Topaz as he chases you?"
"...killing the sniper yourself? with Topaz's gun?"
"...figuring out how many Infocom people live in the Gribnitz apartments?">
>>
<ROUTINE CENTER-LINE (LN STR "OPTIONAL" (LEN 0) (INV T))
<COND (<ZERO? .LEN>
<DIROUT ,D-TABLE-ON ,DIROUT-TBL>
<TELL .STR>
<DIROUT ,D-TABLE-OFF>
<SET LEN <GET ,DIROUT-TBL 0>>)>
<CURSET .LN </ <- <GETB 0 33> .LEN> 2>>
<COND (.INV <HLIGHT ,H-INVERSE>)>
<TELL .STR>
<COND (.INV <HLIGHT ,H-NORMAL>)>>
<ROUTINE LEFT-LINE (LN STR "OPTIONAL" (INV T))
<CURSET .LN 1>
<COND (.INV <HLIGHT ,H-INVERSE>)>
<TELL .STR>
<COND (.INV <HLIGHT ,H-NORMAL>)>>
<ROUTINE RIGHT-LINE (LN STR "OPTIONAL" (LEN 0) (INV T))
<COND (<ZERO? .LEN>
<DIROUT 3 ,DIROUT-TBL>
<TELL .STR>
<DIROUT -3>
<SET LEN <GET ,DIROUT-TBL 0>>)>
<CURSET .LN <- <GETB 0 33> .LEN>>
<COND (.INV <HLIGHT ,H-INVERSE>)>
<TELL .STR>
<COND (.INV <HLIGHT ,H-NORMAL>)>>
<GLOBAL DIROUT-TBL <TABLE 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>>

99
misc.zabstr Normal file
View file

@ -0,0 +1,99 @@
<TELL-TOKENS (CRLF CR) <CRLF> (NUM N) * <PRINTN .X> (CHAR CHR C) * <PRINTC .X>
S *:STRING <PRINT .X> D * <DPRINT .X> CD ,PRSO <CDPRINT-PRSO> CD ,PRSI <
CDPRINT-PRSI> CD * <CDPRINT .X> THE ,PRSO <THE-PRINT-PRSO> THE ,PRSI <
THE-PRINT-PRSI> THE * <THE-PRINT .X> CTHE ,PRSO <CTHE-PRINT-PRSO> CTHE ,PRSI <
CTHE-PRINT-PRSI> CTHE * <CTHE-PRINT .X> (A AN) ,PRSO <PRINTA-PRSO> (A AN) ,PRSI
<PRINTA-PRSI> (A AN) * <PRINTA .X> A * <APRINT .X> T ,PRSO <TPRINT-PRSO> T ,
PRSI <TPRINT-PRSI> T * <TPRINT .X> AR * <ARPRINT .X> TR * <TRPRINT .X>>
<DEFINE-ROUTINE TELL-OPEN-CLOSED>
<DEFINE-ROUTINE OPEN-CLOSED>
<DEFINE-ROUTINE IS-ARE>
<DEFINE-ROUTINE CTHE-PRINT-PRSO>
<DEFINE-ROUTINE CTHE-PRINT>
<DEFINE-ROUTINE THE-PRINT-PRSO>
<DEFINE-ROUTINE THE-PRINT-PRSI>
<DEFINE-ROUTINE THE-PRINT>
<DEFINE-ROUTINE PRINTA-PRSO>
<DEFINE-ROUTINE PRINTA-PRSI>
<DEFINE-ROUTINE PRINTA>
<DEFINE-ROUTINE DPRINT>
<DEFINE-ROUTINE IPRINT>
<DEFINE-ROUTINE NSPRINT>
<DEFINE-ROUTINE APRINT>
<DEFINE-ROUTINE TPRINT>
<DEFINE-ROUTINE TPRINT-PRSO>
<DEFINE-ROUTINE TPRINT-PRSI>
<DEFINE-ROUTINE ARPRINT>
<DEFINE-ROUTINE TRPRINT>
<DEFMAC VERB? ("ARGS" ATMS) <MULTIFROB PRSA .ATMS>>
<DEFMAC PRSO? ("ARGS" ATMS) <MULTIFROB PRSO .ATMS>>
<DEFMAC PRSI? ("ARGS" ATMS) <MULTIFROB PRSI .ATMS>>
<DEFMAC ROOM? ("ARGS" ATMS) <MULTIFROB HERE .ATMS>>
<DEFINE MULTIFROB (X ATMS "AUX" (OO (OR)) (O .OO) (L ()) ATM) <REPEAT () <COND
(<EMPTY? .ATMS> <RETURN <COND (<LENGTH? .OO 1> <ERROR .X>) (<LENGTH? .OO 2> <
NTH .OO 2>) (ELSE <CHTYPE .OO FORM>)>>)> <REPEAT () <COND (<EMPTY? .ATMS> <
RETURN>)> <SET ATM <NTH .ATMS 1>> <SET L (<COND (<TYPE? .ATM ATOM> <CHTYPE <
COND (<==? .X PRSA> <PARSE <STRING "V?" <SPNAME .ATM>>>) (ELSE .ATM)> GVAL>) (
ELSE .ATM)> !.L)> <SET ATMS <REST .ATMS>> <COND (<==? <LENGTH .L> 3> <RETURN>)>
> <SET O <REST <PUTREST .O (<FORM EQUAL? <CHTYPE .X GVAL> !.L>)>>> <SET L ()>>>
<DEFMAC BSET ('OBJ "ARGS" BITS) <MULTIBITS FSET .OBJ .BITS>>
<DEFMAC BCLEAR ('OBJ "ARGS" BITS) <MULTIBITS FCLEAR .OBJ .BITS>>
<DEFMAC BSET? ('OBJ "ARGS" BITS) <MULTIBITS FSET? .OBJ .BITS>>
<DEFINE MULTIBITS (X OBJ ATMS "AUX" (O ()) ATM) <REPEAT () <COND (<EMPTY? .ATMS
> <RETURN <COND (<LENGTH? .O 1> <NTH .O 1>) (<EQUAL? .X FSET?> <FORM OR !.O>) (
ELSE <FORM PROG () !.O>)>>)> <SET ATM <NTH .ATMS 1>> <SET ATMS <REST .ATMS>> <
SET O (<FORM .X .OBJ <COND (<TYPE? .ATM FORM> .ATM) (ELSE <FORM GVAL .ATM>)>>
!.O)>>>
<DEFMAC RFATAL () '<PROG () <PUSH 8> <RSTACK>>>
<DEFMAC PROB ('BASE?) <FORM NOT <FORM L? .BASE? '<RANDOM 100>>>>
<DEFINE-ROUTINE PICK-ONE>
<DEFINE PSEUDO ("TUPLE" V) <MAPF ,PLTABLE <FUNCTION (OBJ) <COND (<N==? <LENGTH
.OBJ> 3> <ERROR BAD-THING .OBJ>)> <MAPRET <COND (<NTH .OBJ 2> <VOC <SPNAME <NTH
.OBJ 2>> NOUN>)> <COND (<NTH .OBJ 1> <VOC <SPNAME <NTH .OBJ 1>> ADJECTIVE>)> <3
.OBJ>>> .V>>
<CONSTANT M-BEG 1>
<CONSTANT M-ENTER 2>
<CONSTANT M-LOOK 3>
<CONSTANT M-FLASH 4>
<CONSTANT M-OBJDESC 5>
<CONSTANT M-END 6>
<CONSTANT M-SMELL 7>
<CONSTANT M-FATAL 8>
<CONSTANT M-OBJDESC? 9>
<CONSTANT M-ENTER-DESC 10>
<ZSTART GO>
<GLOBAL SCENARIO 0>
<CONSTANT S-BYSTANDER 1>
<CONSTANT S-GOOD 2>
<CONSTANT S-BAD 3>
<GLOBAL SCENARIO-TBL <PLTABLE BYSTANDER-SCENARIO-F GOOD-SCENARIO-F
BAD-SCENARIO-F>>
<CONSTANT MINUS-ONE -1>
<GLOBAL MAX-WEIGHT 40>
<DEFINE-ROUTINE GO>
<DEFINE-ROUTINE MAIN-LOOP>
<DEFINE-ROUTINE MAIN-LOOP-1>
<GLOBAL AWAITING-FAKE-ORPHAN <>>
<DEFINE-ROUTINE DONT-ALL>
<DEFINE-ROUTINE CLOCKER-VERB?>
<GLOBAL P-WON <>>
<GLOBAL P-MULT <>>
<GLOBAL P-NOT-HERE 0>
<DEFINE-ROUTINE FAKE-ORPHAN>
<DEFINE-ROUTINE PERFORM-PRSA>
<DEFINE-ROUTINE PERFORM>
<DEFINE-ROUTINE D-APPLY>
<GLOBAL CLOCK-WAIT <>>
<CONSTANT C-TABLELEN 60>
<CONSTANT C-INTLEN 4>
<CONSTANT C-RTN 0>
<CONSTANT C-TICK 1>
<GLOBAL CLOCK-MOVE 12>
<CONSTANT CLOCK-DEFAULT 12>
<DEFINE-ROUTINE NOISY-VERB?>
<DEFINE-ROUTINE QUIET-VERB?>
<DEFINE-ROUTINE CLOCKER>
<DEFINE-ROUTINE ABS>
<DEFINE-ROUTINE TOO-LATE>

834
misc.zil Normal file
View file

@ -0,0 +1,834 @@
"MISC for
BORDER ZONE
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
;"tell macro and friends"
<TELL-TOKENS (CRLF CR) <CRLF>
(NUM N) * <PRINTN .X>
(CHAR CHR C) * <PRINTC .X>
S *:STRING <PRINT .X>
D * <DPRINT .X>
CD ,PRSO <CDPRINT-PRSO>
CD ,PRSI <CDPRINT-PRSI>
CD * <CDPRINT .X>
THE ,PRSO <THE-PRINT-PRSO>
THE ,PRSI <THE-PRINT-PRSI>
THE * <THE-PRINT .X>
CTHE ,PRSO <CTHE-PRINT-PRSO>
CTHE ,PRSI <CTHE-PRINT-PRSI>
CTHE * <CTHE-PRINT .X>
(A AN) ,PRSO <PRINTA-PRSO>
(A AN) ,PRSI <PRINTA-PRSI>
(A AN) * <PRINTA .X>
A * <APRINT .X>
T ,PRSO <TPRINT-PRSO>
T ,PRSI <TPRINT-PRSI>
T * <TPRINT .X>
AR * <ARPRINT .X>
TR * <TRPRINT .X>
>
<ROUTINE TELL-OPEN-CLOSED ("OPTIONAL" (OBJ <>))
<COND (.OBJ <TELL CTHE .OBJ>)
(ELSE
<SET OBJ ,PRSO>
<TELL THE ,PRSO>)>
<IS-ARE .OBJ>
<TELL " ">
<OPEN-CLOSED .OBJ>>
<ROUTINE OPEN-CLOSED (OBJ)
<COND (<FSET? .OBJ ,OPENBIT>
<TELL "open">)
(ELSE
<TELL "closed">)>
<TELL ,PERIOD>>
<ROUTINE IS-ARE (OBJ)
<COND ;(<PLURAL? .OBJ> <TELL " are">)
(ELSE <TELL " is">)>>
<ROUTINE CTHE-PRINT-PRSO ()
<THE-PRINT ,PRSO T>>
;<ROUTINE CTHE-PRINT-PRSI ()
<THE-PRINT ,PRSI T>>
<ROUTINE CTHE-PRINT (O)
<THE-PRINT .O T>>
<ROUTINE THE-PRINT-PRSO ()
<THE-PRINT ,PRSO>>
<ROUTINE THE-PRINT-PRSI ()
<THE-PRINT ,PRSI>>
<ROUTINE THE-PRINT (O "OPTIONAL" (CAP? <>))
<DPRINT .O .CAP? <NOT <FSET? .O ,NOTHEBIT>>>>
<ROUTINE PRINTA-PRSO ()
<PRINTA ,PRSO>>
<ROUTINE PRINTA-PRSI ()
<PRINTA ,PRSI>>
<ROUTINE PRINTA (O)
<COND (<FSET? .O ,THE> <PRINTI "the ">)
(<NOT <FSET? .O ,NOABIT>>
<COND (<FSET? .O ,AN> <PRINTI "an ">)
(ELSE <PRINTI "a ">)>)>
<IPRINT .O>>
;<ROUTINE CDPRINT-PRSO ()
<DPRINT ,PRSO T>>
;<ROUTINE CDPRINT-PRSI ()
<DPRINT ,PRSI T>>
;<ROUTINE CDPRINT (O)
<DPRINT .O T>>
;<ROUTINE PRSO-NOTHING-SPECIAL ()
<TELL S "You see nothing special about ">
<THE-PRSO>>
;<ROUTINE THE-PRSO () <TELL THE ,PRSO ,PERIOD>>
<ROUTINE DPRINT (O "OPTIONAL" (CAP? <>) (THE? <>) "AUX" S)
<COND (<OR .THE? <FSET? .O ,THE>>
<COND (.CAP? <PRINTI "The ">)
(T <PRINTI "the ">)>)>
<IPRINT .O>>
<ROUTINE IPRINT (O)
<PRINTD .O>>
<ROUTINE NSPRINT (NUM STR)
<PRINTN .NUM>
<TELL " ">
<PRINT .STR>
<COND (<NOT <EQUAL? .NUM 1>>
<TELL "s">)>>
<ROUTINE APRINT (OBJ)
<COND (<FSET? .OBJ ,NARTICLEBIT>
<TELL " ">)
(<FSET? .OBJ ,VOWELBIT>
<TELL " an ">)
(T
<TELL " a ">)>
<DPRINT .OBJ>>
<ROUTINE TPRINT (OBJ)
<COND (<FSET? .OBJ ,NARTICLEBIT>
<TELL " ">)
(T
<TELL " the ">)>
<DPRINT .OBJ>>
<ROUTINE TPRINT-PRSO ()
<TPRINT ,PRSO>>
<ROUTINE TPRINT-PRSI ()
<TPRINT ,PRSI>>
<ROUTINE ARPRINT (OBJ)
<APRINT .OBJ>
<TELL ,PERIOD-CR>>
<ROUTINE TRPRINT (OBJ)
<TPRINT .OBJ>
<TELL ,PERIOD-CR>>
;"macros"
<DEFMAC VERB? ("ARGS" ATMS)
<MULTIFROB PRSA .ATMS>>
<DEFMAC PRSO? ("ARGS" ATMS)
<MULTIFROB PRSO .ATMS>>
<DEFMAC PRSI? ("ARGS" ATMS)
<MULTIFROB PRSI .ATMS>>
<DEFMAC ROOM? ("ARGS" ATMS)
<MULTIFROB HERE .ATMS>>
<DEFINE MULTIFROB (X ATMS "AUX" (OO (OR)) (O .OO) (L ()) ATM)
<REPEAT ()
<COND (<EMPTY? .ATMS>
<RETURN!- <COND (<LENGTH? .OO 1> <ERROR .X>)
(<LENGTH? .OO 2> <NTH .OO 2>)
(ELSE <CHTYPE .OO FORM>)>>)>
<REPEAT ()
<COND (<EMPTY? .ATMS> <RETURN!->)>
<SET ATM <NTH .ATMS 1>>
<SET L
(<COND (<TYPE? .ATM ATOM>
<CHTYPE <COND (<==? .X PRSA>
<PARSE
<STRING "V?"
<SPNAME .ATM>>>)
(ELSE .ATM)> GVAL>)
(ELSE .ATM)>
!.L)>
<SET ATMS <REST .ATMS>>
<COND (<==? <LENGTH .L> 3> <RETURN!->)>>
<SET O <REST <PUTREST .O
(<FORM EQUAL? <CHTYPE .X GVAL> !.L>)>>>
<SET L ()>>>
<DEFMAC BSET ('OBJ "ARGS" BITS)
<MULTIBITS FSET .OBJ .BITS>>
<DEFMAC BCLEAR ('OBJ "ARGS" BITS)
<MULTIBITS FCLEAR .OBJ .BITS>>
<DEFMAC BSET? ('OBJ "ARGS" BITS)
<MULTIBITS FSET? .OBJ .BITS>>
<DEFINE MULTIBITS (X OBJ ATMS "AUX" (O ()) ATM)
<REPEAT ()
<COND (<EMPTY? .ATMS>
<RETURN!- <COND (<LENGTH? .O 1> <NTH .O 1>)
(<EQUAL? .X FSET?> <FORM OR !.O>)
(ELSE <FORM PROG () !.O>)>>)>
<SET ATM <NTH .ATMS 1>>
<SET ATMS <REST .ATMS>>
<SET O
(<FORM .X
.OBJ
<COND (<TYPE? .ATM FORM> .ATM)
(ELSE <FORM GVAL .ATM>)>>
!.O)>>>
<DEFMAC RFATAL ()
'<PROG () <PUSH 8> <RSTACK>>>
<DEFMAC PROB ('BASE?)
<FORM NOT <FORM L? .BASE? '<RANDOM 100>>>>
;<ROUTINE PICK-ONE (FROB)
<GET .FROB <RANDOM <GET .FROB 0>>>>
;"this new PICK-ONE won't begin repeating any of the items in the table until
they've all been used."
<ROUTINE PICK-ONE (TBL "AUX" LENGTH CNT RND MSG RFROB)
<SET LENGTH <GET .TBL 0>>
<SET CNT <GET .TBL 1>>
<SET LENGTH <- .LENGTH 1>>
<SET TBL <REST .TBL 2>>
<SET RFROB <REST .TBL <* .CNT 2>>>
<SET RND <RANDOM <- .LENGTH .CNT>>>
<SET MSG <GET .RFROB .RND>>
<PUT .RFROB .RND <GET .RFROB 1>>
<PUT .RFROB 1 .MSG>
<SET CNT <+ .CNT 1>>
<COND (<==? .CNT .LENGTH>
<SET CNT 0>)>
<PUT .TBL 0 .CNT>
.MSG>
<DEFINE PSEUDO ("TUPLE" V)
<MAPF ,PLTABLE
<FUNCTION (OBJ)
<COND (<N==? <LENGTH .OBJ> 3>
<ERROR BAD-THING .OBJ>)>
<MAPRET <COND (<NTH .OBJ 2>
<VOC <SPNAME <NTH .OBJ 2>> NOUN>)>
<COND (<NTH .OBJ 1>
<VOC <SPNAME <NTH .OBJ 1>> ADJECTIVE>)>
<3 .OBJ>>>
.V>>
;"MAIN-LOOP and associated routines"
<CONSTANT M-BEG 1>
<CONSTANT M-ENTER 2>
<CONSTANT M-LOOK 3>
<CONSTANT M-FLASH 4>
<CONSTANT M-OBJDESC 5>
<CONSTANT M-END 6>
<CONSTANT M-SMELL 7>
<CONSTANT M-FATAL 8>
<CONSTANT M-OBJDESC? 9>
<CONSTANT M-ENTER-DESC 10>
<ZSTART GO> ;"else, ZIL gets confused between verb-word GO and routine GO"
<GLOBAL SCENARIO 0>
<CONSTANT S-BYSTANDER 1>
<CONSTANT S-GOOD 2>
<CONSTANT S-BAD 3>
<GLOBAL SCENARIO-TBL <PLTABLE BYSTANDER-SCENARIO-F
GOOD-SCENARIO-F
BAD-SCENARIO-F>>
<CONSTANT MINUS-ONE -1>
<GLOBAL MAX-WEIGHT 40>
<ROUTINE GO () ;"NOTE: this routine CANNOT have any local variables"
<OPENING-SCREEN>
<V-LOOK>
<MAIN-LOOP>
<AGAIN>>
<ROUTINE MAIN-LOOP ("AUX" TRASH)
<REPEAT ()
<SET TRASH <MAIN-LOOP-1>>>>
<ROUTINE MAIN-LOOP-1 ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP)
<SET CNT 0>
<SET OBJ <>>
<SET PTBL T>
<COND (<SETG P-WON <PARSER>>
<SET ICNT <GET ,P-PRSI ,P-MATCHLEN>>
<SET OCNT <GET ,P-PRSO ,P-MATCHLEN>>
<COND (<AND ,P-IT-OBJECT
<ACCESSIBLE? ,P-IT-OBJECT>>
<SET TMP <>>
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .ICNT>
<RETURN>)
(T
<COND (<EQUAL? <GET ,P-PRSI .CNT> ,IT>
;<COND (<TOO-DARK-FOR-IT?> <RTRUE>)>
<PUT ,P-PRSI .CNT ,P-IT-OBJECT>
<SET TMP T>
<RETURN>)>)>>
<COND (<NOT .TMP>
<SET CNT 0>
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .OCNT>
<RETURN>)
(T
<COND (<EQUAL? <GET ,P-PRSO .CNT> ,IT>
;<COND (<TOO-DARK-FOR-IT?> <RTRUE>)>
<PUT ,P-PRSO .CNT ,P-IT-OBJECT>
<RETURN>)>)>>)>
<SET CNT 0>)>
<SET NUM <COND (<0? .OCNT>
.OCNT)
(<G? .OCNT 1>
<SET TBL ,P-PRSO>
<COND (<0? .ICNT>
<SET OBJ <>>)
(T
<SET OBJ <GET ,P-PRSI 1>>)>
.OCNT)
(<G? .ICNT 1>
<SET PTBL <>>
<SET TBL ,P-PRSI>
<SET OBJ <GET ,P-PRSO 1>>
.ICNT)
(T
1)>>
<COND (<AND <NOT .OBJ>
<1? .ICNT>>
<SET OBJ <GET ,P-PRSI 1>>)>
<COND (<AND <EQUAL? ,PRSA ,V?WALK> ,PRSO>
;"Was just <EQUAL? ,PRSA ,V?WALK>, to fix RUN WATER"
<SET V <PERFORM-PRSA ,PRSO>>)
(<0? .NUM>
<COND (<0? <BAND <GETB ,P-SYNTAX ,P-SBITS> ,P-SONUMS>>
<SET V <PERFORM-PRSA>>
<SETG PRSO <>>)
;(<NOT ,LIT>
<TELL ,TOO-DARK CR>
<STOP>)
(T
<TELL "There isn't anything to ">
<SET TMP <GET ,P-ITBL ,P-VERBN>>
<COND (<VERB? TELL>
<TELL "talk to">)
(<OR ,P-OFLAG ,P-MERGED>
<PRINTB <GET .TMP 0>>)
(T
<WORD-PRINT <GETB .TMP 2> <GETB .TMP 3>>)>
<TELL "!" CR>
<SET V <>>
<STOP>)>)
(T
<SETG P-NOT-HERE 0>
<SETG P-MULT <>>
<COND (<G? .NUM 1>
<SETG P-MULT T>)>
<SET TMP <>>
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .NUM>
<COND (<G? ,P-NOT-HERE 0>
<TELL "[The ">
<COND (<NOT <EQUAL? ,P-NOT-HERE .NUM>>
<TELL "other ">)>
<TELL "object">
<COND (<NOT <EQUAL? ,P-NOT-HERE 1>>
<TELL "s">)>
<TELL " that you mentioned ">
<COND (<NOT <EQUAL? ,P-NOT-HERE 1>>
<TELL "are">)
(T
<TELL "is">)>
<TELL "n't here.]" CR>)
(<NOT .TMP>
<REFERRING>)>
<RETURN>)
(T
<COND (.PTBL
<SET OBJ1 <GET ,P-PRSO .CNT>>)
(T
<SET OBJ1 <GET ,P-PRSI .CNT>>)>
<SETG PRSO <COND (.PTBL
.OBJ1)
(T
.OBJ)>>
<SETG PRSI <COND (.PTBL
.OBJ)
(T
.OBJ1)>>
<COND (<OR <G? .NUM 1>
<EQUAL? <GET <GET ,P-ITBL ,P-NC1> 0>
,W?ALL
,W?EVERYTHING>>
<COND (<DONT-ALL .OBJ1>
<AGAIN>)
(T
<COND (<EQUAL? .OBJ1 ,IT>
<TELL D ,P-IT-OBJECT>)
(<EQUAL? .OBJ1 ,HIM>
<TELL D ,P-HIM-OBJECT>)
(<EQUAL? .OBJ1 ,HER>
<TELL D ,P-HER-OBJECT>)
(T
<TELL D .OBJ1>)>
<TELL ": ">)>)>
<SET TMP T>
<SET V <PERFORM-PRSA ,PRSO ,PRSI>>
<COND (<EQUAL? .V ,M-FATAL>
<RETURN>)>)>>)>
<COND (<EQUAL? .V ,M-FATAL>
<SETG P-CONT <>>)>
<COND (<AND <CLOCKER-VERB?>
<NOT <VERB? TELL>>
,P-WON ;"fake YOU CANT SEE responses set P-WON to false">
<SET V <APPLY <GETP ,HERE ,P?ACTION> ,M-END>>)>)
(T
<SETG P-CONT <>>)>
<COND (,P-WON
<COND (<CLOCKER-VERB?>
<SET V <CLOCKER>>)>
<SETG P-PRSA-WORD <>>
;"else, when input is just a direction, P-PRSA-WORD will remain
whatever it was for the previous turn"
<SETG PRSA <>>
<SETG PRSO <>>
<SETG PRSI <>>)>
<COND (<AND ,AWAITING-FAKE-ORPHAN
<NOT ,P-OFLAG>>
<ORPHAN-VERB>)>>
<GLOBAL AWAITING-FAKE-ORPHAN <>>
;<ROUTINE TOO-DARK-FOR-IT? ()
<COND (<AND <NOT ,LIT>
<NOT <ULTIMATELY-IN? ,P-IT-OBJECT ,WINNER>>
<NOT <IN? ,WINNER ,P-IT-OBJECT>>>
<TELL ,TOO-DARK CR>
<RTRUE>)>>
<ROUTINE DONT-ALL (OBJ1 "AUX" (L <LOC .OBJ1>))
;"RFALSE if OBJ1 should be included in the ALL, otherwise RTRUE"
<COND (<EQUAL? .OBJ1 ,NOT-HERE-OBJECT>
<SETG P-NOT-HERE <+ ,P-NOT-HERE 1>>
<RTRUE>)
(<AND <VERB? TAKE> ;"TAKE prso FROM prsi and prso isn't in prsi"
,PRSI
<NOT <IN? ,PRSO ,PRSI>>>
<RTRUE>)
(<NOT <ACCESSIBLE? .OBJ1>> ;"can't get at object"
<RTRUE>)
(<EQUAL? ,P-GETFLAGS ,P-ALL> ;"cases for ALL"
<COND (<AND ,PRSI
<PRSO? ,PRSI>>
<RTRUE>)
(<VERB? TAKE>
;"TAKE ALL and object not accessible or takeable"
<COND (<AND <NOT <FSET? .OBJ1 ,TAKEBIT>>
<NOT <FSET? .OBJ1 ,TRYTAKEBIT>>>
<RTRUE>)
(<AND <NOT <EQUAL? .L ,WINNER ,HERE ,PRSI>>
<NOT <EQUAL? .L <LOC ,WINNER>>>>
<COND (<AND <FSET? .L ,SURFACEBIT>
<NOT <FSET? .L ,TAKEBIT>>> ;"tray"
<RFALSE>)
(T
<RTRUE>)>)
(<AND <NOT ,PRSI>
<ULTIMATELY-IN? ,PRSO>> ;"already have it"
<RTRUE>)
(T
<RFALSE>)>)
(<AND <VERB? DROP PUT PUT-ON GIVE SGIVE>
;"VERB ALL, object not held"
<NOT <IN? .OBJ1 ,WINNER>>>
<RTRUE>)
(<AND <VERB? DROP PUT PUT-ON GIVE SGIVE>
<FSET? .OBJ1 ,WORNBIT>>
<RTRUE>)
(<AND <VERB? PUT PUT-ON>
;"PUT ALL IN X,obj already in x"
<NOT <IN? ,PRSO ,WINNER>>
<ULTIMATELY-IN? ,PRSO ,PRSI>>
<RTRUE>)>)>>
<ROUTINE CLOCKER-VERB? ()
<COND (<VERB? VERSION SAVE RESTORE RESTART QUIT SCRIPT UNSCRIPT
BRIEF SUPER-BRIEF VERBOSE HINT $ISL>
<RFALSE>)
(T
<RTRUE>)>>
<GLOBAL P-WON <>>
<GLOBAL P-MULT <>>
<GLOBAL P-NOT-HERE 0>
<ROUTINE FAKE-ORPHAN ("OPTIONAL" (IT-WAS-USED <>) "AUX" TMP)
<ORPHAN ,P-SYNTAX <>>
<SET TMP <GET ,P-OTBL ,P-VERBN>>
<TELL "[Be specific: Wh">
<COND (.IT-WAS-USED
<TELL "at object">)
(T
<TELL "o">)>
<TELL " do you want to ">
<COND (<EQUAL? .TMP 0>
<TELL "tell">)
(<0? <GETB ,P-VTBL 2>>
<PRINTB <GET .TMP 0>>)
(T
<WORD-PRINT <GETB .TMP 2> <GETB .TMP 3>>
<PUTB ,P-VTBL 2 0>)>
<SETG P-OFLAG T>
<SETG P-WON <>>
<PREP-PRINT <GETB ,P-SYNTAX ,P-SPREP1>>
<TELL "?]" CR>>
<ROUTINE PERFORM-PRSA ("OPTIONAL" (O <>) (I <>))
<PERFORM ,PRSA .O .I>>
<ROUTINE PERFORM (A "OPTIONAL" (O <>) (I <>) "AUX" V OA OO OI)
<SET OA ,PRSA>
<SET OO ,PRSO>
<SET OI ,PRSI>
<SETG PRSA .A>
<COND (<AND <EQUAL? ,IT .O .I>
<NOT <EQUAL? .A ,V?WALK>>>
<COND (<VISIBLE? ,P-IT-OBJECT>
<COND (<EQUAL? ,IT .O>
<SET O ,P-IT-OBJECT>)
(T
<SET I ,P-IT-OBJECT>)>)
(T
<COND (<NOT .I>
<FAKE-ORPHAN T>)
(T
<REFERRING>)>
<RFATAL>)>)>
<COND (<AND <EQUAL? ,HIM .O .I>
<NOT <EQUAL? .A ,V?WALK>>>
<COND (<VISIBLE? ,P-HIM-OBJECT>
<COND (<EQUAL? ,HIM .O>
<SET O ,P-HIM-OBJECT>)
(T
<SET I ,P-HIM-OBJECT>)>)
(T
<COND (<NOT .I>
<FAKE-ORPHAN>)
(T
<REFERRING T>)>
<RFATAL>)>)>
<COND (<AND <EQUAL? ,HER .O .I>
<NOT <EQUAL? .A ,V?WALK>>>
<COND (<VISIBLE? ,P-HER-OBJECT>
<COND (<EQUAL? ,HER .O>
<SET O ,P-HER-OBJECT>)
(T
<SET I ,P-HER-OBJECT>)>)
(T
<COND (<NOT .I>
<FAKE-ORPHAN>)
(T
<REFERRING T>)>
<RFATAL>)>)>
<SETG PRSO .O>
<SETG PRSI .I>
<COND (<AND <NOT <EQUAL? .A ,V?WALK>>
<EQUAL? ,NOT-HERE-OBJECT ,PRSO ,PRSI>
<SET V <D-APPLY "Not Here" ,NOT-HERE-OBJECT-F>>>
<SETG P-WON <>>
T)
(T
<SET O ,PRSO>
<SET I ,PRSI>
<THIS-IS-IT ,PRSI>
<THIS-IS-IT ,PRSO>
<COND (<SET V <D-APPLY "Actor" <GETP ,WINNER ,P?ACTION>>>
T)
(<SET V <D-APPLY "M-Beg" <GET ,SCENARIO-TBL ,SCENARIO>
,M-BEG>>
T)
(<SET V <D-APPLY "M-Beg" <GETP ,HERE ,P?ACTION> ,M-BEG>>
T)
(<SET V <D-APPLY "Preaction" <GET ,PREACTIONS .A>>>
T)
(<AND .I <SET V <D-APPLY "PRSI" <GETP .I ,P?ACTION>>>>
T)
(<AND .O
<ZERO? ,P-WALK-DIR>
;<NOT <EQUAL? .A ,V?WALK>>
<SET V <D-APPLY "PRSO" <GETP .O ,P?ACTION>>>>
T)
(<SET V <D-APPLY <> <GET ,ACTIONS .A>>>
T)>)>
<SETG PRSA .OA>
<SETG PRSO .OO>
<SETG PRSI .OI>
.V>
<ROUTINE D-APPLY (STR FCN "OPTIONAL" (FOO <>) "AUX" RES)
<COND (<NOT .FCN> <>)
(T
;<COND (,DEBUG
<COND (<NOT .STR>
<TELL " Default ->" CR>)
(T
<TELL " " .STR " -> ">)>)>
<SET RES <COND (.FOO
<APPLY .FCN .FOO>)
(T
<APPLY .FCN>)>>
;<COND (<AND ,DEBUG
.STR>
<COND (<EQUAL? .RES ,M-FATAL>
<TELL "Fatal" CR>)
(<NOT .RES>
<TELL "Not handled">)
(T <TELL "Handled" CR>)>)>
.RES)>>
;"CLOCKER and related routines"
;<GLOBAL C-TABLE %<COND (<GASSIGNED? ZILCH>
'<ITABLE NONE 30>)
(T
'<ITABLE NONE 60>)>>
<GLOBAL CLOCK-WAIT <>>
;<GLOBAL C-INTS 60>
;<GLOBAL C-MAXINTS 60>
;<GLOBAL CLOCK-HAND <>>
<CONSTANT C-TABLELEN 60>
<CONSTANT C-INTLEN 4> ;"length of an interrupt entry"
<CONSTANT C-RTN 0> ;"offset of routine name"
<CONSTANT C-TICK 1> ;"offset of count"
;<ROUTINE DEQUEUE (RTN)
<COND (<SET RTN <QUEUED? .RTN>>
<PUT .RTN ,C-RTN 0>)>>
;<ROUTINE QUEUED? (RTN "AUX" C E)
<SET E <REST ,C-TABLE ,C-TABLELEN>>
<SET C <REST ,C-TABLE ,C-INTS>>
<REPEAT ()
<COND (<EQUAL? .C .E>
<RFALSE>)
(<EQUAL? <GET .C ,C-RTN> .RTN>
<COND (<ZERO? <GET .C ,C-TICK>>
<RFALSE>)
(T
<RETURN .C>)>)>
<SET C <REST .C ,C-INTLEN>>>>
;<ROUTINE RUNNING? (RTN "AUX" C E)
<SET E <REST ,C-TABLE ,C-TABLELEN>>
<SET C <REST ,C-TABLE ,C-INTS>>
<REPEAT ()
<COND (<EQUAL? .C .E>
<RFALSE>)
(<EQUAL? <GET .C ,C-RTN> .RTN>
<COND (<OR <ZERO? <GET .C ,C-TICK>>
<G? <GET .C ,C-TICK> 1>>
<RFALSE>)
(T
<RTRUE>)>)>
<SET C <REST .C ,C-INTLEN>>>>
;<ROUTINE QUEUE (RTN TICK "AUX" C E (INT <>)) ;"automatically enables as well"
<SET E <REST ,C-TABLE ,C-TABLELEN>>
<SET C <REST ,C-TABLE ,C-INTS>>
<REPEAT ()
<COND (<EQUAL? .C .E>
<COND (.INT
<SET C .INT>)
(T
<COND (<L? ,C-INTS ,C-INTLEN>
<TELL "**Too many ints!**" CR>)>
<SETG C-INTS <- ,C-INTS ,C-INTLEN>>
<COND (<L? ,C-INTS ,C-MAXINTS>
<SETG C-MAXINTS ,C-INTS>)>
<SET INT <REST ,C-TABLE ,C-INTS>>)>
<PUT .INT ,C-RTN .RTN>
<RETURN>)
(<EQUAL? <GET .C ,C-RTN> .RTN>
<SET INT .C>
<RETURN>)
(<ZERO? <GET .C ,C-RTN>>
<SET INT .C>)>
<SET C <REST .C ,C-INTLEN>>>
<COND (%<COND (<GASSIGNED? ZILCH>
'<G? .INT ,CLOCK-HAND>)
(T
'<L? <LENGTH .INT> <LENGTH ,CLOCK-HAND>>)>
<SET TICK <- <+ .TICK 3>>>)>
<PUT .INT ,C-TICK .TICK>
.INT>
<GLOBAL CLOCK-MOVE 12>
<CONSTANT CLOCK-DEFAULT 12>
<ROUTINE NOISY-VERB? ()
<COND (<OR <VERB? MUNG YELL>
<VERB? ALARM KNOCK KICK>
<VERB? KILL HIT CALL>>
<RTRUE>)>>
<ROUTINE QUIET-VERB? ()
<COND (<OR <NOT <CLOCKER-VERB?>>
<VERB? EAT DRINK>
<VERB? LOOK EXAMINE WATCH>
<VERB? INVENTORY FIND HIDE>
<VERB? LOOK-INSIDE LOOK-UP LOOK-DOWN>
<VERB? SMELL COUNT READ>
<VERB? WAVE WAIT>
<VERB? SAVE RESTORE RESET>
<VERB? TAKE DROP PUT>
<VERB? OIL OPEN FAST-TIME>
<VERB? SLOW-TIME>
<AND <VERB? PUSH> <ULTIMATELY-IN? ,PRSO ,WINNER>>>
<RTRUE>)>>
<ROUTINE CLOCKER ("AUX" E TICK RTN (FLG <>) (Q? <>) OWINNER)
<COND (<AND ,CUT-DETECTED
<G? ,CLOCK-TIME ,CUT-DETECTED>
<NOT ,CUT-VIGILANCE>>
<SETG CUT-VIGILANCE T>)
(<AND <EQUAL? ,HERE ,HUT-STORAGE ,HUT-BEDROOM>
<IN? ,HUT-MAN ,HUT-LIVING>
<NOT <VERB? WALK>>
<NOT <QUIET-VERB?>>>
<HLIGHT ,H-BOLD>
<CRLF>
<JIGS-UP
"That last action of yours has alerted the owner of your presence.
He calmly walks in, gun in hand, and places a call to the border patrol
who quickly arrive to take you into custody.">
<RTRUE>)
(<AND <FSET? ,HERE ,GVIEWBIT>
<NOT <VERB? WALK>>>
<SET TICK <GUARD-DISTANCE>>
;<COND (,DEBUG
<TELL "[GUARD-DISTANCE = " N .TICK "]" CR>)>
<COND (<AND <OR ,VIGILANCE ,CUT-VIGILANCE>
<OR ,TOWER-DESTROYED <PROB 30>>
<NOT ,GUARD-CHASE>>
<CRLF>
<TELL "One of the guards, more alert due">
<COND (,VIGILANCE
<TELL" to the recent explosion">)
(T
<TELL ", perhaps, to the belated
detection of voltage loss in the fence">)>
<TELL ", notices
you, and calls out to the other guards, who rapidly surround you and take you
into custody.">
<JIGS-UP " ">
<RTRUE>)
(<AND <OR <AND <NOISY-VERB?> <L? .TICK 40>>
<AND <VERB? CUT> <L? .TICK 25>>>
<NOT ,GUARD-CHASE>>
;<COND (,SL-DEBUG
<TELL "[GUARDS: Facing ">
<COND (<NOT <GUARDS-FACING-PLAYER?>>
<TELL "Away">)>
<TELL ", Distance: ">
<TELL N .TICK "]" CR>)>
<CRLF>
<JIGS-UP
"You've made enough noise to attract the guard's attention! He fires a
warning shot, alerting the other guards, who rapidly approach with
their weapons drawn...">
<RTRUE>)
(<AND <NOT <QUIET-VERB?>>
<GUARDS-FACING-PLAYER?>
<L? .TICK 70>
<PROB </ <- 100 .TICK> 4>>
<NOT ,GUARD-CHASE>>
;<COND (,SL-DEBUG
<TELL "[GUARDS: Facing ">
<COND (<NOT <GUARDS-FACING-PLAYER?>>
<TELL "Away">)>
<TELL ", Distance: ">
<TELL N .TICK " (probabilistic)" CR>)>
<CRLF>
<JIGS-UP
"One of the guards notices you and fires a warning shot. An alarm
sounds, and you are rapidly surrounded by border guards...">
<RTRUE>)>)>
<I-CLOCKER ,CLOCK-MOVE>
;"Formerly, only for WAIT"
<COND (<OR ,SL-WATCH ,G-WATCH>
<UPDATE-CHRONOGRAPH 0 T>
<UPDATE-TIME>)>
<SETG CLOCK-MOVE ,CLOCK-DEFAULT>
<RTRUE>>
<ROUTINE ABS (N)
<COND (<NOT <L? .N 0>> .N)
(T <- 0 .N>)>>
;<ROUTINE NEW-VERB (V)
<PERFORM .V ,PRSO ,PRSI>>
;<ROUTINE SWAP-VERB (V)
<PERFORM .V ,PRSI ,PRSO>>
;<ROUTINE NEW-PRSO (O)
<PERFORM-PRSA .O ,PRSI>>
;<ROUTINE NEW-PRSI (I)
<PERFORM-PRSA ,PRSO .I>>
;<ROUTINE NEW-WINNER-PRSO (A "OPT" (O <>) (I <>) "AUX" OW)
<SET OW ,WINNER>
<SETG WINNER ,PRSO>
<PERFORM .A .O .I>
<SETG WINNER .OW>>
;<ROUTINE REDIRECT (FROM TO "AUX" O I)
<SET O <COND (<PRSO? .FROM> .TO) (ELSE ,PRSO)>>
<SET I <COND (<PRSI? .FROM> .TO) (ELSE ,PRSI)>>
<PERFORM-PRSA .O .I>
<RTRUE>>
<ROUTINE TOO-LATE ()
<TELL "That's already been done." CR>>

5
once.zabstr Normal file
View file

@ -0,0 +1,5 @@
<DEFINE-ROUTINE START-SCENARIO-1>
<DEFINE-ROUTINE START-SCENARIO-2>
<DEFINE-ROUTINE START-SCENARIO-3>
<DEFINE-ROUTINE OPENING-SCREEN>

258
once.zil Normal file
View file

@ -0,0 +1,258 @@
"ONCE for
BORDER ZONE
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
<ROUTINE START-SCENARIO-1 ("OPTIONAL" (INT? <>))
<SETG START-HOUR 17>
<SETG START-MINUTE 26>
<SETG CLOCK-TBL ,CLOCK-TBL-1>
<SETG CLOCK-INTS ,CLOCK-INTS-1>
<SETG MAX-WEIGHT 150>
<SETG SCENARIO ,S-BYSTANDER>
<SETG HERE ,COMP-5>
<SETG WINNER ,PROTAGONIST>
<REMOVE ,CLOTHES>
<MOVE ,BYSTANDER-WATCH ,WINNER>
<MOVE ,BYSTANDER-CLOTHES ,WINNER>
<MOVE ,DOCUMENT ,WINNER>
<MOVE ,WINNER ,HERE>
<SLOW-CLOCK-QUEUE ,I-BAD-SPY 20>
<RT-QUEUE ,I-BAD-TUNNEL 900>
<INIT-STATUS-LINE 3>
<STATUS-LINE>
<UPDATE-TIME>
<SETG CONTACT <PICK-ONE ,BUMPERS>>
<TELL "|
|
It is always a pleasure to leave Frobnia, and the ride is never over too
soon. Sure, a plane would be faster, but as far as reliability goes,
well ... better late than never, that's the best rule.|
|
The train ride from Frzi to Vienna is into its sixth hour, and the train
is fast approaching the border of neutral Litzenburg. You can breathe a lot
easier there, just knowing that you're out from behind the Iron Curtain. It's
even worth the border crossing - guards everywhere, suitcases searched -
horrible, really, but there's no use complaining. There are worse countries
to be importing goods from - you should know, you've been in most of
them.|
|
Just here, a few miles from the border, night is falling, and the lights of
the small villages flicker into existence. You're drifting off into sleep
when there is a knock on your compartment door, and a man, clutching his
left arm, staggers inside. Drops of blood on his sleeve leave no doubt
as to the cause.|
|
\"Don't be frightened,\" he begins, \"I'm all right.\" Before you can speak,
he begins his story. He is, it seems, an American agent who has just learned
of a sinister plot to assassinate a top-ranking American diplomat tomorrow
morning in Ostnitz, the town your train is
fast approaching. He hands you a document, which he says must be passed to
his contact at the train station there. You look through it, but it's all
in Frobnian, and you know barely a handful of words - that's why you always
carry your combination tourist guide and phrase book with you on your trips
here.|
|
\"You must deliver this. I do not know who the contact is - he was supposed
to find me. I was to wear this white carnation.\" He pulls out the rumpled
flower and pins it onto your jacket. \"He will bump into you and greet you
with the words '">
<TELL <GET <GETP ,CONTACT ,P?FROBNIAN> 1>>
<TELL "' to which you should reply 'It
is my fault.' Then, hand him the document and earn our country's thanks.\"|
|
He looks quickly over his shoulder - an instinct, perhaps. \"I must be going.
You understand.\" And with that, he disappears from the compartment." CR CR>
<COND (.INT? <V-LOOK>)>
<RTRUE>>
<ROUTINE START-SCENARIO-2 ("OPTIONAL" (INT? <>))
<PUT <GETPT ,ME ,P?SYNONYM> 3 ,W?TOPAZ>
<SETG READ-CLOCK 10> ;"FAST"
<SETG CLOCK-TIME 0>
<REMOVE ,BYSTANDER-CLOTHES>
<REMOVE ,BYSTANDER-WATCH>
<SETG START-HOUR 17>
<SETG START-MINUTE 49>
<SETG CLOCK-TBL ,CLOCK-TBL-2>
<SETG CLOCK-INTS ,CLOCK-INTS-2>
<SETG MAX-WEIGHT 40>
<SETG SCENARIO ,S-GOOD>
<SETG HERE ,B8>
<SETG WINNER ,PROTAGONIST>
<MOVE ,EXPLODING-PEN ,WINNER>
<MOVE ,NORMAL-SHOES ,WINNER>
<MOVE ,TIMING-OBJECT ,WINNER>
<MOVE ,CLOTHES ,WINNER>
<MOVE ,WINNER ,HERE>
<SETG SHOES-WORN ,NORMAL-SHOES>
<REMOVE ,LEFT-ARM>
<MOVE ,WOUNDED-LEFT-ARM ,PROTAGONIST>
<INIT-STATUS-LINE 3>
<STATUS-LINE>
<UPDATE-TIME>
<SETG CHRONOGRAPH-ON T>
<UPDATE-CHRONOGRAPH 0 T>
<SETG CHRONOGRAPH-ON <>>
<TELL
"|
|
Cold. Pain.|
|
What happened? I wasn't even active ... just making one of my monthly
excursions to Vienna, keeping up the front ... George Bonnard, Vice President
- Eastern Europe, IC Cola ... \"Drink It Up, Frobnia!\" What a laugh.|
|
The train, yes ... of course ... Just past Yinsli, I spotted my
archenemy \"Viper,\" only it wasn't him, it was a priest.
But it ">
<HLIGHTELL "was">
<TELL " him.|
|
He vanished, lost in the crowd ... tourists, a honeymoon couple, something ...
moonlight, thank God for that ... pitch black otherwise. OK, stop and
think. You found him, his compartment, but he wasn't there. He left
the briefcase, not as smart as his reputation, but that's not it. Wait.|
|
Found the document, the assassination of - who? It's here, isn't it?
No? Well, where the hell is it? But he came back, yes, Viper, and then
the fight. And a shot, and Christ it hurts but at least it's not my ">
<HLIGHTELL "right">
<TELL " arm...|
|
Don't know how I got away ... must have done some damage myself. \"Border
Stop! We will be arriving at the border in five minutes!\" But, the
document... Oh, yes, the real McCoy ... the real businessman, the one in
the dining car - gave it to him knowing I'd be caught. He's got it,
that is if ">
<HLIGHTELL "they">
<TELL " haven't got ">
<HLIGHTELL "him">
<TELL "...|
|
It's clearer now. We went into a tunnel, and it was then that I knew
... the only chance, the only escape ... jumping off the train! The fall
must have knocked me out cold for a few moments, but I seem alive
enough. It can't be too far to the border, just a little to the north. If
I don't die first.|
|
">
<COND (.INT? <V-LOOK>)>
<RTRUE>>
<ROUTINE START-SCENARIO-3 ("OPTIONAL" (INT? <>))
<PUT <GETPT ,ME ,P?SYNONYM> 3 ,W?VIPER>
<SETG G-WATCH <>>
<SETG SL-WATCH <>>
<SETG CHRONOGRAPH-ON <>>
<SETG VERBOSE-CLOCK <>>
<SETG CLOCK-TIME 0>
<SETG READ-CLOCK 10> ;"FAST"
<SETG START-HOUR 11>
<SETG START-MINUTE 47>
<SETG CLOCK-TBL ,CLOCK-TBL-3>
<SETG CLOCK-INTS ,CLOCK-INTS-3>
<SETG MAX-WEIGHT 100>
<SETG SCENARIO ,S-BAD>
<SETG HERE ,SQUARE-NW>
<SETG WINNER ,PROTAGONIST>
<SNIPER-INIT>
<RT-QUEUE ,I-CUSTOMER-LEAVES 265>
<REMOVE ,CLOTHES>
<MOVE ,BUSINESS-CARD ,WINNER>
<MOVE ,BAD-WATCH ,WINNER>
<MOVE ,BAD-GUN ,WINNER>
<MOVE ,CIGARETTE ,WINNER>
<MOVE ,MATCHES ,WINNER>
<MOVE ,BAD-CLOTHES ,WINNER>
<REMOVE ,CARNATION>
<REMOVE ,WOUNDED-LEFT-ARM>
<MOVE ,LEFT-ARM ,PROTAGONIST>
<MOVE ,WINNER ,HERE>
<INIT-STATUS-LINE 3>
<STATUS-LINE>
<UPDATE-TIME>
<TELL "|
|
\"Vipna homitz, nimso klamitz.\" \"A rotten fish will turn up
eventually.\" The American \"Murphy\" puts it better, perhaps, but your
Frobnian expression seems to fit the circumstances.|
|
Not that it started out that way. No, the Kremlin decided to assassinate
the American ambassador to Litzenburg, and it's
naturally a very sensitive affair, so they chose you to supervise - that is,
keep it clean, keep the KGB and the Kremlin from appearing to be involved.
That part wasn't hard - it didn't take long for your Litzenburger friends
to find an angry, young Iranian who was more than willing to perform God's
work...|
|
No, your problem isn't keeping the job clean ... it's preventing it from
happening, without blowing your cover. And you haven't spent the last ten
years working your way up the KGB hierarchy just to start taking stupid
chances now. Nobody said it would be easy being a double agent. So, coded
cable in hand and dressed as a clergyman, you boarded the train to Ostnitz.|
|
Enter a headstrong, street-smart American agent code-named Topaz - didn't
have the slightest clue who you were. But smart enough to know that
something was up, so he waylaid you, and took the cable. You smile that
disturbing smile of yours at nobody in particular - if only he knew the code,
he could have done your work for you!|
|
Your first priority was retrieving the document, so the priest's garb had
to go - the local authorities would respond better to the trench coat
than to the cloth. But Topaz must have jumped - poor guy, doesn't have a
chance. And that American businessman... something not quite right there,
but nothing solid.|
|
So now your job's doubly hard - knowing only that the assassination is
in the Ostnitz town square, a little after noon. Fortunately, the KGB's
local man is a good friend of yours, an antique dealer named Riznik. He
probably even arranged the plan, so you can get the details from him.
But even with the plan in hand, you'll still have your hands full - security
is tight here, and some of the local police would find your presence here
more than a little disturbing. You take a deep breath, and plunge into the
milling crowd.|
|
">
<COND (.INT? <V-LOOK>)>
<RTRUE>>
<ROUTINE OPENING-SCREEN ("AUX" CHR)
<CLEAR -1>
<HLIGHT ,H-BOLD>
<V-VERSION>
<TELL
"|
Welcome to Border Zone. This story of international intrigue has
three chapters, each telling a different piece of the story from a different
point of view. You can play each chapter independently, but you will enjoy
the story more if you play them in the proper order. If at any time you
need to \"pause\" the game and cause the real-time clock to stop running
(to get a sandwich or to read a long bit of
text), use the PAUSE command.|
|
The chapters are:|
|
Chapter 1: The Train|
Chapter 2: The Border|
Chapter 3: The Assassination|
">
<REPEAT ()
<TELL CR
"Which chapter would you like to play: 1, 2, 3, or (R)estore? >">
<SET CHR <INPUT 1>>
<COND (<EQUAL? .CHR %<ASCII !\1>>
<START-SCENARIO-1>
<RTRUE>)
(<EQUAL? .CHR %<ASCII !\2>>
<START-SCENARIO-2>
<RTRUE>)
(<EQUAL? .CHR %<ASCII !\3>>
<START-SCENARIO-3>
<RTRUE>)
(<AND <EQUAL? .CHR %<ASCII !\R> %<ASCII !\r>>
<CRLF>
<V-RESTORE>>)
(T
<TELL CR CR
"Just press \"1\", \"2\", \"3\", or \"R\" to start the game." CR>)>>>

156
parser.zabstr Normal file
View file

@ -0,0 +1,156 @@
<SETG SIBREAKS ".,\"">
<GLOBAL P-AND <>>
<GLOBAL IN-FRONT-FLAG <>>
<GLOBAL PRSA <>>
<GLOBAL PRSI <>>
<GLOBAL PRSO <>>
<GLOBAL P-SYNTAX 0>
<GLOBAL P-LEN 0>
<GLOBAL WINNER 0>
<GLOBAL P-LEXV <ITABLE 59 (LEXV) 0 #BYTE *000000000000* #BYTE *000000000000*>>
<GLOBAL P-INBUF <ITABLE 99 (BYTE LENGTH) 0>>
<GLOBAL RESERVE-INBUF <ITABLE 99 (BYTE LENGTH) 0>>
<GLOBAL RESERVE-LEXV <ITABLE 59 (LEXV) 0 #BYTE *000000000000* #BYTE
*000000000000*>>
<GLOBAL AGAIN-LEXV <ITABLE 59 (LEXV) 0 #BYTE *000000000000* #BYTE
*000000000000*>>
<GLOBAL RESERVE-PTR <>>
<GLOBAL OOPS-INBUF <ITABLE 99 (BYTE LENGTH) 0>>
<GLOBAL OOPS-TABLE <TABLE <> <> <> <> <> <>>>
<CONSTANT O-PTR 0>
<CONSTANT O-START 1>
<CONSTANT O-LENGTH 2>
<CONSTANT O-END 3>
<CONSTANT O-CONT 4>
<CONSTANT O-LEN 5>
<GLOBAL P-CONT <>>
<GLOBAL P-IT-OBJECT <>>
<GLOBAL P-HIM-OBJECT <>>
<GLOBAL P-HER-OBJECT <>>
<DEFINE-ROUTINE THIS-IS-IT>
<GLOBAL P-OFLAG <>>
<GLOBAL P-MERGED <>>
<GLOBAL P-ACLAUSE <>>
<GLOBAL P-ANAM <>>
<GLOBAL P-AADJ <>>
<CONSTANT P-LEXWORDS 1>
<CONSTANT P-LEXSTART 1>
<CONSTANT P-LEXELEN 2>
<CONSTANT P-WORDLEN 4>
<CONSTANT P-PSOFF 6>
<CONSTANT P-P1OFF 7>
<CONSTANT P-P1BITS 3>
<CONSTANT P-ITBLLEN 10>
<GLOBAL P-ITBL <TABLE 0 0 0 0 0 0 0 0 0 0>>
<GLOBAL P-OTBL <TABLE 0 0 0 0 0 0 0 0 0 0>>
<GLOBAL P-VTBL <TABLE 0 0 0 0>>
<GLOBAL P-OVTBL <TABLE 0 0 0 0>>
<GLOBAL P-NCN 0>
<CONSTANT P-VERB 0>
<CONSTANT P-VERBN 1>
<CONSTANT P-PREP1 2>
<CONSTANT P-PREP1N 3>
<CONSTANT P-PREP2 4>
<CONSTANT P-NC1 6>
<CONSTANT P-NC1L 7>
<CONSTANT P-NC2 8>
<CONSTANT P-NC2L 9>
<GLOBAL QUOTE-FLAG <>>
<GLOBAL P-END-ON-PREP <>>
<GLOBAL P-PRSA-WORD <>>
<DEFINE-ROUTINE CHECK-REFRESH>
<GLOBAL VERBOSE-CLOCK T>
<GLOBAL MINUTES-FLAG <>>
<DEFINE-ROUTINE PARSER>
<DEFINE-ROUTINE CHANGE-LEXV>
<GLOBAL P-WALK-DIR <>>
<GLOBAL AGAIN-DIR <>>
<DEFINE-ROUTINE STUFF>
<DEFINE-ROUTINE INBUF-STUFF>
<DEFINE-ROUTINE INBUF-ADD>
<DEFINE-ROUTINE WT?>
<DEFINE-ROUTINE CLAUSE>
<DEFINE-ROUTINE NUMBER?>
<GLOBAL P-NUMBER 0>
<GLOBAL P-EXCHANGE 0>
<GLOBAL P-DIRECTION <>>
<DEFINE-ROUTINE ORPHAN-MERGE>
<DEFINE-ROUTINE ACLAUSE-WIN>
<DEFINE-ROUTINE NCLAUSE-WIN>
<DEFINE-ROUTINE WORD-PRINT>
<DEFINE-ROUTINE UNKNOWN-WORD>
<DEFINE-ROUTINE CANT-USE>
<GLOBAL P-SLOCBITS 0>
<CONSTANT P-SYNLEN 8>
<CONSTANT P-SBITS 0>
<CONSTANT P-SPREP1 1>
<CONSTANT P-SPREP2 2>
<CONSTANT P-SFWIM1 3>
<CONSTANT P-SFWIM2 4>
<CONSTANT P-SLOC1 5>
<CONSTANT P-SLOC2 6>
<CONSTANT P-SACTION 7>
<CONSTANT P-SONUMS 3>
<DEFINE-ROUTINE SYNTAX-CHECK>
<DEFINE-ROUTINE VERB-PRINT>
<DEFINE-ROUTINE ORPHAN>
<DEFINE-ROUTINE ORPHAN-VERB>
<DEFINE-ROUTINE CLAUSE-PRINT>
<DEFINE-ROUTINE BUFFER-PRINT>
<DEFINE-ROUTINE NAME?>
<DEFINE-ROUTINE CAPITALIZE>
<DEFINE-ROUTINE PREP-PRINT>
<DEFINE-ROUTINE CLAUSE-COPY>
<DEFINE-ROUTINE CLAUSE-ADD>
<DEFINE-ROUTINE PREP-FIND>
<DEFINE-ROUTINE SYNTAX-FOUND>
<GLOBAL P-GWIMBIT 0>
<DEFINE-ROUTINE GWIM>
<DEFINE-ROUTINE SNARF-OBJECTS>
<DEFINE-ROUTINE BUT-MERGE>
<GLOBAL P-NAM <>>
<GLOBAL P-NAMW <TABLE 0 0>>
<GLOBAL P-ADJ <>>
<GLOBAL P-ADJW <TABLE 0 0>>
<GLOBAL P-OFW <TABLE 0 0>>
<GLOBAL P-PHR 0>
<GLOBAL P-PRSO <ITABLE NONE 50>>
<GLOBAL P-PRSI <ITABLE NONE 50>>
<GLOBAL P-BUTS <ITABLE NONE 50>>
<GLOBAL P-MERGE <ITABLE NONE 50>>
<GLOBAL P-OCLAUSE <ITABLE NONE 50>>
<CONSTANT P-MATCHLEN 0>
<GLOBAL P-GETFLAGS 0>
<CONSTANT P-ALL 1>
<CONSTANT P-ONE 2>
<CONSTANT P-INHIBIT 4>
<DEFINE-ROUTINE SNARFEM>
<DEFINE-ROUTINE ADJ-CHECK>
<CONSTANT SH 128>
<CONSTANT SC 64>
<CONSTANT SIR 32>
<CONSTANT SOG 16>
<CONSTANT STAKE 8>
<CONSTANT SMANY 4>
<CONSTANT SHAVE 2>
<DEFINE-ROUTINE NOUN-MISSING>
<DEFINE-ROUTINE GET-OBJECT>
<CONSTANT LAST-OBJECT 0>
<DEFINE-ROUTINE MOBY-FIND>
<GLOBAL P-MOBY-FOUND <>>
<GLOBAL P-XNAM <>>
<GLOBAL P-XADJ <>>
<GLOBAL P-XADJN <>>
<DEFINE-ROUTINE WHICH-PRINT>
<DEFINE-ROUTINE GLOBAL-CHECK>
<DEFINE-ROUTINE DO-SL>
<CONSTANT P-SRCBOT 2>
<CONSTANT P-SRCTOP 0>
<CONSTANT P-SRCALL 1>
<DEFINE-ROUTINE SEARCH-LIST>
<DEFINE-ROUTINE OBJ-FOUND>
<DEFINE-ROUTINE TAKE-CHECK>
<DEFINE-ROUTINE ITAKE-CHECK>
<DEFINE-ROUTINE MANY-CHECK>
<DEFINE-ROUTINE THIS-IT?>

1649
parser.zil Normal file

File diff suppressed because it is too large Load diff

45
realtime.zabstr Normal file
View file

@ -0,0 +1,45 @@
<GLOBAL CHRONOGRAPH-TIME 0>
<GLOBAL CHRONOGRAPH-ON <>>
<DEFINE-ROUTINE CHRONOGRAPH-TELL>
<GLOBAL CLOCK-TIME 0>
<GLOBAL CLOCK-TBL <>>
<GLOBAL CLOCK-TBL-1 <TABLE I-TOWER 32767 I-FUSE 32767 I-FUSE 32767>>
<CONSTANT CLOCK-INTS-1 3>
<CONSTANT I-SLOW-CLOCK-OFF 3>
<CONSTANT I-RANDOM-QUEUE-OFF 5>
<GLOBAL CLOCK-TBL-2 <TABLE I-TOWER 32767 I-FUSE 32767 I-DOGS 68 I-SEARCHLIGHTS
1 I-CARS 180 I-30-SECONDS 30 I-200-SECONDS 200>>
<CONSTANT CLOCK-INTS-2 7>
<CONSTANT I-FUSE-OFF 3>
<CONSTANT I-RT-QUEUE-OFF 1>
<GLOBAL CLOCK-INTS <>>
<GLOBAL INT-FLAG T>
<GLOBAL CLOCK-TICKS 0>
<DEFINE-ROUTINE SLOW-CLOCK-QUEUE>
<DEFINE-ROUTINE SLOW-CLOCK-QUEUED?>
<DEFINE-ROUTINE DE-QUEUE>
<DEFINE-ROUTINE DE-RT-QUEUE>
<DEFINE-ROUTINE DE-RANDOM-QUEUE>
<DEFINE-ROUTINE DE-SLOW-CLOCK-QUEUE>
<DEFINE-ROUTINE RT-QUEUE>
<DEFINE-ROUTINE RANDOM-QUEUE>
<DEFINE-ROUTINE RT-QUEUED?>
<DEFINE-ROUTINE I-CLOCKER>
<DEFINE-ROUTINE UPDATE-CLOCK>
<DEFINE-ROUTINE MULTAPPLY>
<GLOBAL REAL-UPDATE 0>
<GLOBAL START-HOUR 17>
<GLOBAL START-MINUTE 44>
<DEFINE-ROUTINE UPDATE-TIME>
<DEFINE-ROUTINE UPDATE-CHRONOGRAPH>
<DEFINE-ROUTINE I-SEARCHLIGHTS>
<DEFINE-ROUTINE SL-WATCHER>
<GLOBAL G-WATCH <>>
<GLOBAL GUARD-MARGIN 0>
<DEFINE-ROUTINE GUARD-WATCHER>
<DEFINE-ROUTINE GUARDS-FACING-EACH-OTHER?>
<DEFINE-ROUTINE GUARDS-FACING-PLAYER?>
<DEFINE-ROUTINE SCREEN-1>
<DEFINE-ROUTINE SCREEN-0>
<DEFINE-ROUTINE HLIGHTELL>

249
realtime.zil Normal file
View file

@ -0,0 +1,249 @@
"REALTIME for
BORDER ZONE
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
<GLOBAL CHRONOGRAPH-TIME 0>
<GLOBAL CHRONOGRAPH-ON <>>
<ROUTINE CHRONOGRAPH-TELL ("AUX" N)
<SET N </ <MOD ,CHRONOGRAPH-TIME 3600> 60>>
<COND (<G? .N 59>
<SET N <- .N 60>>)>
<COND (<L? .N 10>
<TELL "0">)>
<TELL N .N ":">
<SET N <MOD ,CHRONOGRAPH-TIME 60>>
<COND (<L? .N 10>
<TELL "0">)>
<TELL N .N>>
<GLOBAL CLOCK-TIME 0>
<GLOBAL CLOCK-TBL <>>
<GLOBAL CLOCK-TBL-1 <TABLE I-TOWER 32767
I-FUSE 32767
I-FUSE 32767>>
<CONSTANT CLOCK-INTS-1 3>
<CONSTANT I-SLOW-CLOCK-OFF 3>
<CONSTANT I-RANDOM-QUEUE-OFF 5>
<GLOBAL CLOCK-TBL-2 <TABLE I-TOWER 32767
I-FUSE 32767
I-DOGS 68
I-SEARCHLIGHTS 1
I-CARS 180
I-30-SECONDS 30
I-200-SECONDS 200>>
<CONSTANT CLOCK-INTS-2 7>
<CONSTANT I-FUSE-OFF 3>
<CONSTANT I-RT-QUEUE-OFF 1>
<GLOBAL CLOCK-INTS <>>
<GLOBAL INT-FLAG T>
<GLOBAL CLOCK-TICKS 0>
<ROUTINE SLOW-CLOCK-QUEUE (FCN TIM "AUX" (OFF ,I-SLOW-CLOCK-OFF))
<PUT ,CLOCK-TBL <- .OFF 1> .FCN>
<PUT ,CLOCK-TBL .OFF .TIM>>
<ROUTINE SLOW-CLOCK-QUEUED? (FCN "AUX" (OFF ,I-SLOW-CLOCK-OFF))
<AND <EQUAL? <GET ,CLOCK-TBL <- .OFF 1>> .FCN>
<NOT <EQUAL? <GET ,CLOCK-TBL .OFF> 32767>>>>
<ROUTINE DE-QUEUE (OFF)
<PUT ,CLOCK-TBL .OFF 32767>>
<ROUTINE DE-RT-QUEUE ()
<DE-QUEUE ,I-RT-QUEUE-OFF>>
<ROUTINE DE-RANDOM-QUEUE ()
<DE-QUEUE ,I-RANDOM-QUEUE-OFF>>
<ROUTINE DE-SLOW-CLOCK-QUEUE ()
<DE-QUEUE ,I-SLOW-CLOCK-OFF>>
<ROUTINE RT-QUEUE (FCN TIM "OPTIONAL" (OFF ,I-RT-QUEUE-OFF))
<PUT ,CLOCK-TBL <- .OFF 1> .FCN>
<PUT ,CLOCK-TBL .OFF <+ <INT-TIME> .TIM>>>
<ROUTINE RANDOM-QUEUE (FCN TIM "AUX" (OFF ,I-RANDOM-QUEUE-OFF))
<PUT ,CLOCK-TBL <- .OFF 1> .FCN>
<PUT ,CLOCK-TBL .OFF <+ <INT-TIME> .TIM>>>
<ROUTINE RT-QUEUED? (FCN "AUX" (OFF ,I-RT-QUEUE-OFF))
<AND <EQUAL? <GET ,CLOCK-TBL <- .OFF 1>> .FCN>
<NOT <EQUAL? <GET ,CLOCK-TBL .OFF> 32767>>>>
<ROUTINE I-CLOCKER ("OPTIONAL" (TICKS 1) "AUX" SCENE CNT TBL TIM)
<SET SCENE ,SCENARIO>
<SET CNT ,CLOCK-INTS>
<SET TBL ,CLOCK-TBL>
<COND (<AND <EQUAL? .TICKS 1> <NOT ,INT-FLAG>>
;"If real-time interrupts are turned off"
<RFALSE>)>
<SETG CLOCK-TICKS .TICKS>
<REPEAT ()
<COND (<NOT <EQUAL? .SCENE ,SCENARIO>>
<COND (<NOT ,PRSA> <SETG READ-INTERRUPTED T>)>
<RETURN>)
(<L? <SET CNT <- .CNT 1>> 0>
<UPDATE-CLOCK .TICKS>
<RETURN>)
(<L? .TICKS <SET TIM <GET .TBL 1>>>
<COND (<NOT <L? <+ .TICKS <MOD ,CLOCK-TIME .TIM>>
.TIM>>
<APPLY <GET .TBL 0>>)>)
(T
<MULTAPPLY <GET .TBL 0> </ .TICKS .TIM>>)>
<SET TBL <REST .TBL 4>>>
;<RFALSE>
,READ-INTERRUPTED>
<ROUTINE UPDATE-CLOCK (TICKS "OPTIONAL" (FORCE? <>))
<SETG CLOCK-TIME <+ ,CLOCK-TIME .TICKS>>
;<COND (,CHRONOGRAPH-ON <UPDATE-CHRONOGRAPH .TICKS .FORCE?>)>
<UPDATE-CHRONOGRAPH .TICKS .FORCE?>
<SETG REAL-UPDATE <+ ,REAL-UPDATE .TICKS>>
<COND (<G? ,REAL-UPDATE 59>
<SETG REAL-UPDATE <MOD ,REAL-UPDATE 60>>
<UPDATE-TIME>)>>
<ROUTINE MULTAPPLY (FCN NUM)
;<COND (,DEBUG <TELL "[MULTAPPLY x " N .NUM "]" CR>)>
<REPEAT ()
<COND (<L? <SET NUM <- .NUM 1>> 0>
<RETURN>)
(T
<APPLY .FCN>)>>>
<GLOBAL REAL-UPDATE 0>
<GLOBAL START-HOUR 17>
<GLOBAL START-MINUTE 44>
<ROUTINE UPDATE-TIME ("AUX" MIN TMP)
<BUFOUT <>>
<SCREEN 1>
<CURSET 1 <- <GETB 0 33> 5>>
<HLIGHT ,H-INVERSE>
<SET MIN <+ </ ,CLOCK-TIME 60> ,START-MINUTE>>
<SET TMP <+ ,START-HOUR </ .MIN 60>>>
<COND (<G? .TMP 23>
<TELL "0">
<SET TMP <- .TMP 24>>)>
<TELL N .TMP ":">
<SET MIN <MOD .MIN 60>>
<COND (<L? .MIN 10> <TELL "0">)>
<TELL N .MIN>
<SCREEN-0>>
<ROUTINE UPDATE-CHRONOGRAPH (TICKS "OPTIONAL" (FORCE? <>) (SCR <>))
<COND (,CHRONOGRAPH-ON
<SCREEN-1>
<SET SCR T>
<COND (<G? <GETB 0 33> 58>
<CURSET 1 <- </ <GETB 0 33> 2> 3>>)
(T
<CURSET 1 27>)>
<SETG CHRONOGRAPH-TIME <+ ,CHRONOGRAPH-TIME .TICKS>>
<COND (<EQUAL? ,SCENARIO 2>
<CHRONOGRAPH-TELL>)
(T
<TELL " ">)>
<TELL " ">)>
<COND (,SL-WATCH
<COND (<NOT .SCR> <SCREEN-1> <SET SCR T>)>
<SL-WATCHER>)>
<COND (<AND ,G-WATCH
<OR .FORCE? <ZERO? <MOD ,CHRONOGRAPH-TIME 5>>>>
<COND (<NOT .SCR> <SCREEN-1> <SET SCR T>)>
<GUARD-WATCHER>)>
<COND (.SCR <SCREEN-0>)>
<RTRUE>>
<ROUTINE I-SEARCHLIGHTS () <TURN-SL> ;<TELL "[SL]" CR>>
<ROUTINE SL-WATCHER ()
<CURSET 2 8>
<TELL <SL-POS-STR-AB 1> " ">
<CURSET 2 <+ </ <GETB 0 33> 2> 2>>
<TELL <SL-POS-STR-AB 2> " ">
<CURSET 2 <- <GETB 0 33> 4>>
<TELL <SL-POS-STR-AB 3> " ">>
<GLOBAL G-WATCH <>>
<GLOBAL GUARD-MARGIN 0>
<ROUTINE GUARD-WATCHER ("OPTIONAL" (INIT? <>) "AUX" MT FACE? OFF SW)
<SET SW <GETB 0 33>>
<COND (,GUARD-MARGIN
<SET OFF ,GUARD-MARGIN>)
(T
<COND (<L? .SW 41>
<SET OFF 2>)
(T
<SET OFF <- </ <- .SW 36> 2> 4>>)>
<SETG GUARD-MARGIN .OFF>)>
<COND (.INIT?
<SCREEN-1>
<CURSET 2 .OFF>
<TELL "T">
<CURSET 2 <+ 18 .OFF>>
<TELL "T">
<CURSET 2 <+ 36 .OFF>>
<TELL "T">
<CURSET 3 <+ .OFF </ <GETP ,HERE ,P?GPOS> 5>>>
<TELL "*">)>
<SET FACE? <GUARDS-FACING-EACH-OTHER?>>
<SET MT <MOD ,CLOCK-TIME 180>>
<COND (<NOT <L? .MT 90>> <SET MT <- 180 .MT>>)>
<COND (,GUARD-CHASE
<SET FACE? T>
<SET MT <- ,GUARD-CHASE <- ,CLOCK-TIME ,GUARD-CHASE-TIME>>>
<SET MT <- 90 .MT>>)>
<COND (,G-WATCH
<CURSET 2 <+ .OFF <- ,G-WATCH 1>>>
<COND (<EQUAL? ,G-WATCH 1 19>
<TELL "T">)
(T <TELL " ">)>
<CURSET 2 <+ .OFF <- 37 ,G-WATCH>>>
<COND (<EQUAL? ,G-WATCH 1 19>
<TELL "T">)
(T <TELL " ">)>)>
<SETG G-WATCH <+ </ .MT 5> 1>>
<CURSET 2 <+ .OFF <- ,G-WATCH 1>>>
<COND (.FACE? <TELL ">">)
(T <TELL "<">)>
<CURSET 2 <+ .OFF <- 37 ,G-WATCH>>>
<COND (.FACE? <TELL "<">)
(T <TELL ">">)>
<COND (.INIT?
<SCREEN-0>)>
<RTRUE>>
<ROUTINE GUARDS-FACING-EACH-OTHER? ()
<ZERO? <MOD </ ,CLOCK-TIME 90> 2>>>
<ROUTINE GUARDS-FACING-PLAYER? ()
<OR <NOT <EQUAL? <GETP ,HERE ,P?GPOS> 90>>
<ZERO? <MOD </ ,CLOCK-TIME 90> 2>>>>
<ROUTINE SCREEN-1 ()
<BUFOUT <>>
<SCREEN 1>
<HLIGHT ,H-INVERSE>>
<ROUTINE SCREEN-0 ()
<HLIGHT ,H-NORMAL>
<SCREEN 0>
<BUFOUT T>>
<ROUTINE HLIGHTELL (STR "OPTIONAL" (HL ,H-ITALIC))
<HLIGHT .HL>
<TELL .STR>
<HLIGHT ,H-NORMAL>>

4
scenario.zabstr Normal file
View file

@ -0,0 +1,4 @@
<DEFINE-ROUTINE GOOD-SCENARIO-F>
<DEFINE-ROUTINE BAD-SCENARIO-F>
<DEFINE-ROUTINE BYSTANDER-SCENARIO-F>

163
scenario.zil Normal file
View file

@ -0,0 +1,163 @@
"SCENARIO for
BORDER ZONE
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
<ROUTINE GOOD-SCENARIO-F (FLG "OPTIONAL" STUFF "AUX" LD)
<COND (<AND <EQUAL? .FLG ,M-BEG>
<VERB? WALK>
<NOT ,SHOES-WORN>
<EQUAL? ,SCENARIO 2>>
<TELL "You're not going anywhere without shoes." CR>
<RTRUE>)
(<AND <EQUAL? .FLG ,M-BEG>
<VERB? DROP>
<FSET? ,HERE ,SWAMPBIT>>
<TELL
"You'd only get it filthy; try putting it down somewhere else." CR>)
(<EQUAL? .FLG ,M-ENTER>
<COND (<AND ,CUT-DETECTED <G? ,CLOCK-TIME ,CUT-DETECTED>>
<SETG CUT-VIGILANCE T>)>
<COND (<OR <EQUAL? ,HERE ,OUTSIDE-HUT ,NORTH-HUT ,SOUTH-HUT>
<EQUAL? ,HERE ,D5 ,BEHIND-HUT ,ROAD-END>>
<SETG BEEN-AT-HUT? T>)>
<COND (<AND <NOT <FSET? ,HERE ,SWAMPBIT>>
,IN-SWAMP?>
<SETG IN-SWAMP? <>>)>
<COND (<NOT ,IN-SWAMP?>
<PUTP ,HERE ,P?PATH 0>
<PUTP .STUFF ,P?PATH ,HERE>)>
<SET LD <LOC ,DOGS>>
<COND (<EQUAL? .LD ,HERE>
<CRLF>
<TELL
"You can hear the guard dogs within 50 yards! Their voices
reach a fevered pitch - a guard calls out - a muffled explosion - the
night sky is lit by a single red-orange flare. In the nick of time,
you retreat to your earlier position and remind yourself to take
the chase dogs more seriously in the future." CR>
<GOTO .STUFF <>>
<RTRUE>)
(<AND <IN? ,CAR ,HERE>
<NOT <EQUAL? ,HERE ,ROAD-END>>>
<CAR-NEARLY-HITS>
<RTRUE>)
(<IN? ,SCOUT ,HERE>
<TELL CR
"You walk a short ways, then catch a glimpse of a lone guard who appears to
be checking out the area around the hut. Rather than continue on, you retreat
to your previous location">
<COND (<EQUAL? .STUFF ,HUT-STORAGE>
<FCLEAR ,HUT-BACK-DOOR ,OPENBIT>
<TELL ", closing the door behind you.">)>
<TELL ,PERIOD-CR>
<GOTO .STUFF <>>
<RTRUE>)
(<AND <IN? ,CAR ,ROAD-END>
<EQUAL? ,HERE ,D5 ,OUTSIDE-HUT>>
<COND (<OR <EQUAL? .STUFF ,C5 ,C6>
<EQUAL? .STUFF ,D4 ,OUTSIDE-SHED>>
<TELL CR
"You just start to emerge from the forest when you notice an automobile
and some guards in front of a small hut to the east of the clearing.
You retreat back into the safety of the trees, thinking that perhaps
it would be safer approaching the hut from the other side." CR>
<GOTO .STUFF <>>
<RTRUE>)>
<GUARDS-SPOTTED>
<RTRUE>)
(<IN? ,HUT-MAN ,HERE>
<MAN-CATCHES>
<RTRUE>)>
<COND (<NOT ,MOVE-FORCED>
<GONE-TO-THE-DOGS? <HOW-FAR .LD .STUFF>
<HOW-FAR .LD ,HERE>
,DOGS
<>>)>
<COND (<AND ,SL-WATCH <NOT <FSET? ,HERE ,SLVIEWBIT>>>
<CRLF>
<PERFORM ,V?OFF-2 ,TIMING-OBJECT ,SEARCHLIGHTS>)>
<COND (<AND ,G-WATCH <NOT <FSET? ,HERE ,GVIEWBIT>>>
<CRLF>
<PERFORM ,V?OFF-2 ,TIMING-OBJECT ,GUARDS>)>
<COND (,G-WATCH
<SCREEN-1>
<CURSET 3 <+ ,GUARD-MARGIN
</ <GETP .STUFF ,P?GPOS> 5>>>
<TELL " ">
<CURSET 3 <+ ,GUARD-MARGIN
</ <GETP ,HERE ,P?GPOS> 5>>>
<TELL "*">
<SCREEN-0>)>
<RTRUE>)>>
<ROUTINE BAD-SCENARIO-F (FLG "OPTIONAL" STUFF)
<COND (<AND <EQUAL? .FLG ,M-BEG>
<VERB? WALK>
,ON-THE-CAN
<NOT <EQUAL? ,PRSO ,P?UP>>>
<TELL
"You'd best get off the can first." CR>)
(<EQUAL? .FLG ,M-ENTER>
;"Hall objects"
<COND (<FSET? .STUFF ,HUTBIT>
<MOVE-ALL .STUFF
<GETP .STUFF
<GET ,FLOOR-PROPS ,HALL-FLOOR>>>)>
<COND (<AND <EQUAL? ,HERE ,HALL-1> <FSET? .STUFF ,PENBIT>>
<SETG HALL-FLOOR <GETP .STUFF ,P?SIZE>>)>
<COND (<FSET? ,HERE ,HUTBIT>
<MOVE-ALL <GETP ,HERE
<GET ,FLOOR-PROPS ,HALL-FLOOR>>
,HERE>)>
;"Turn off Topaz spots you interrupt"
<COND (<AND <NOT ,CHASE-FLAG>
<EQUAL? .STUFF ,BLDG-2>>
<DE-QUEUE ,I-TOPAZ-OFF>)>
;"For chase scene"
<PUTP ,HERE ,P?PATH 0>
<PUTP .STUFF ,P?PATH ,HERE>
<PUTP .STUFF ,P?PATH-TIME ,CLOCK-MOVE>
<RFALSE>)
(T
<RFALSE>)>>
<ROUTINE BYSTANDER-SCENARIO-F (FLG "OPTIONAL" STUFF)
<COND (<AND <EQUAL? .FLG ,M-BEG>
<VERB? DROP THROW EMPTY>
<FSET? ,HERE ,HUTBIT>>
<TELL
"With the guards watching, it isn't a good idea to litter." CR>
<RTRUE>)
(<AND <EQUAL? .FLG ,M-BEG>
<VERB? DROP>
,BUMPER-FLAG>
<SETG CLOCK-MOVE 50>
<RFALSE>)
(<AND <EQUAL? .FLG ,M-BEG>
<VERB? WALK>
,BAD-CONFINED
<EQUAL? ,PRSO ,P?EAST ,P?OUT>>
<TELL
"You start to go through your compartment's door, but are stopped by
a uniformed guard. You return to your compartment, out of sight of the guard.
You'd might as well get comfortable here until you
reach the station." CR>
<RTRUE>)
(<AND ,AT-STATION
<EQUAL? .FLG ,M-BEG>
<VERB? WALK>>
<COND (<AND <EQUAL? ,HERE ,PASS-5>
<EQUAL? ,PRSO ,P?NORTH>>
<TELL
"The guard stops you, pointing toward the south and the other exit." CR>
<RTRUE>)
(<AND <EQUAL? ,HERE ,PASS-6>
<EQUAL? ,PRSO ,P?SOUTH>>
<TELL
"You move past the guard, down the stairs, and onto the station
platform." CR CR>
<PLATFORM-ROOM-F ,M-LOOK>
<GOTO ,PLATFORM-4 <>>
<SLOW-CLOCK-QUEUE ,I-PLATFORM 30>
<RTRUE>)>)>
<RFALSE>>

50
spy.zil Normal file
View file

@ -0,0 +1,50 @@
"EXTENDED for
BORDER ZONE
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
<VERSION XZIP>
<SET ZREDEFINE T>
<SET REDEFINE T>
<FREQUENT-WORDS?>
;<FUNNY-GLOBALS?>
<PRINC "
*** Border Zone: A Game of Intrigue ***
">
<SNAME "MARC.SPY">
<INSERT-FILE "MISC" T>
<INSERT-FILE "REALTIME" T>
<INSERT-FILE "PARSER" T>
<INSERT-FILE "SYNTAX" T>
<INSERT-FILE "SCENARIO" T>
<INSERT-FILE "DESC" T>
<PUT-PURE-HERE>
<INSERT-FILE "VERBS" T>
<INSERT-FILE "GLOBALS" T>
<INSERT-FILE "HINTS" T>
;"Chapter 2 - GOOD"
<INSERT-FILE "GOOD" T>
<INSERT-FILE "BORDER" T>
;"Chapter 1 - BYSTANDER"
<INSERT-FILE "BYSTANDER" T>
;"Chapter 3 - BAD"
<INSERT-FILE "BAD" T>
<INSERT-FILE "ONCE" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>
<COND (<NOT <GASSIGNED? VALUE>> <SETG VALUE ,GVAL>)>

BIN
spy.zip Normal file

Binary file not shown.

542
syntax.zabstr Normal file
View file

@ -0,0 +1,542 @@
<BUZZ A AN THE IS ARE AM AND OF THEN ALL ONE BUT EXCEPT \. \, \" \! ? THIS THAT
PRY PLEASE HERE SOME MORE G AGAIN OOPS O SECONDS MINUTES MINUTE C CONTINUE>
<PREP-SYNONYM TO TOWARD>
<PREP-SYNONYM WITH USING>
<PREP-SYNONYM THROUGH THRU>
<PREP-SYNONYM ON ONTO>
<PREP-SYNONYM OUT OUTSIDE APART>
<PREP-SYNONYM IN INSIDE INTO>
<PREP-SYNONYM UNDER BELOW BENEATH UNDERNEATH>
<PREP-SYNONYM AROUND ALONG>
<SYNONYM ALL BOTH EVERYTHING>
<SYNONYM NORTH N>
<SYNONYM SOUTH S>
<SYNONYM EAST E>
<SYNONYM WEST W>
<SYNONYM DOWN D>
<SYNONYM UP U>
<SYNONYM NW NORTHWEST>
<SYNONYM NE NORTHEAST>
<SYNONYM SW SOUTHWEST>
<SYNONYM SE SOUTHEAST>
<SYNTAX VERBOSE = V-VERBOSE>
<SYNTAX BRIEF = V-BRIEF>
<SYNTAX SUPERBRIEF = V-SUPER-BRIEF>
<SYNTAX DIAGNOSE = V-DIAGNOSE>
<SYNTAX INVENTORY = V-INVENTORY>
<VERB-SYNONYM INVENTORY I>
<SYNTAX QUIT = V-QUIT>
<VERB-SYNONYM QUIT Q>
<SYNTAX RESTART = V-RESTART>
<SYNTAX RESTORE = V-RESTORE>
<SYNTAX SAVE = V-SAVE>
<SYNTAX SCRIPT = V-SCRIPT>
<SYNTAX UNSCRIPT = V-UNSCRIPT>
<SYNTAX VERSION = V-VERSION>
<SYNTAX \#RANDOM OBJECT = V-$RANDOM>
<SYNTAX $VERIFY = V-$VERIFY>
<SYNTAX $VERIFY OBJECT = V-$VERIFY>
<SYNTAX $ID = V-$ID>
<SYNTAX ADDRESS OBJECT (FIND PERSON) (IN-ROOM) = V-TELL>
<SYNTAX ADVANCE OBJECT = V-ADVANCE>
<SYNTAX ANSWER = V-ANSWER>
<SYNTAX ANSWER OBJECT = V-ANSWER>
<SYNTAX ANSWER TO OBJECT = V-ANSWER>
<VERB-SYNONYM ANSWER REPLY>
<SYNTAX APPROACH OBJECT = V-WALK-TO>
<SYNTAX ARREST OBJECT = V-ARREST>
<SYNTAX ASK OBJECT (FIND PERSON) ABOUT OBJECT = V-ASK-ABOUT>
<SYNTAX ASK OBJECT (FIND PERSON) ON OBJECT = V-ASK-ABOUT>
<SYNTAX ASK OBJECT (FIND PERSON) FOR OBJECT = V-ASK-FOR>
<SYNTAX KILL OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-KILL>
<SYNTAX KILL OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) WITH OBJECT (HELD CARRIED
HAVE) = V-KILL>
<VERB-SYNONYM KILL MURDER ASSAULT STAB>
<SYNTAX HIT OBJECT (FIND PERSON) = V-HIT>
<SYNTAX HIT OBJECT (FIND PERSON) WITH OBJECT (HELD CARRIED HAVE) = V-HIT>
<VERB-SYNONYM HIT PUNCH SLAP STRIKE ATTACK>
<SYNTAX STRANGLE OBJECT = V-STRANGLE>
<SYNTAX BEND OBJECT = V-BEND>
<SYNTAX BEND BACK OBJECT = V-BEND>
<SYNTAX BEND OBJECT OUT OBJECT = V-BEND>
<SYNTAX BITE OBJECT = V-BITE>
<SYNTAX BLOW OUT OBJECT = V-OFF>
<SYNTAX BUY OBJECT = V-BUY>
<SYNTAX BUY OBJECT FROM OBJECT = V-BUY>
<SYNTAX BUY WITH OBJECT = V-BUY-WITH>
<SYNTAX BUY OBJECT WITH OBJECT = V-BUY-OBJECT-WITH>
<VERB-SYNONYM BUY ORDER PURCHASE>
<SYNTAX CALL OBJECT = V-CALL>
<SYNTAX CALL OUT OBJECT = V-CALL>
<SYNTAX CALL TO OBJECT = V-CALL>
<SYNTAX CLIMB = V-CLIMB-NUL>
<SYNTAX CLIMB OBJECT (ON-GROUND IN-ROOM) = V-CLIMB>
<SYNTAX CLIMB ON OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX CLIMB UP OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-CLIMB-UP>
<SYNTAX CLIMB DOWN OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX CLIMB OUT OBJECT (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNTAX CLIMB OFF OBJECT (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNTAX CLIMB OVER OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-OVER>
<SYNTAX CLIMB IN OBJECT (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
<SYNTAX CLIMB THROUGH OBJECT = V-ENTER>
<SYNTAX CLIMB UNDER OBJECT = V-CRAWL-UNDER>
<SYNTAX CLIMB ACROSS OBJECT = V-CLIMB>
<VERB-SYNONYM CLIMB SCALE CREEP CRAWL>
<SYNTAX CLOSE OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM) = V-CLOSE>
<SYNTAX CLOSE OFF OBJECT (HELD CARRIED ON-GROUND IN-ROOM TAKE) = V-OFF>
<VERB-SYNONYM CLOSE SHUT>
<SYNTAX COVER OBJECT WITH OBJECT (HELD MANY) = V-SPUT-ON>
<SYNTAX COUNT OBJECT = V-COUNT>
<SYNTAX DEMOLISH OBJECT (ON-GROUND IN-ROOM) = V-MUNG>
<SYNTAX DEMOLISH OBJECT WITH OBJECT (HELD CARRIED TAKE) = V-MUNG>
<SYNTAX DEMOLISH DOWN OBJECT = V-KILL>
<VERB-SYNONYM DEMOLISH DESTROY DAMAGE BREAK SMASH WRECK POP>
<SYNTAX DESCEND OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX DIG IN OBJECT = V-DIG>
<SYNTAX DIG WITH OBJECT = V-DIG>
<SYNTAX DIG THROUGH OBJECT = V-DIG>
<SYNTAX DIG UNDER OBJECT = V-DIG>
<SYNTAX DRINK OBJECT (FIND DRINKBIT) (HELD CARRIED ON-GROUND IN-ROOM) = V-DRINK
>
<SYNTAX DRINK FROM OBJECT (HELD CARRIED) = V-DRINK-FROM>
<VERB-SYNONYM DRINK SIP SWALLOW>
<SYNTAX DROP OBJECT (HELD MANY HAVE) = V-DROP IDROP>
<SYNTAX DROP OBJECT (HELD MANY) DOWN OBJECT = V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (HELD MANY) IN OBJECT = V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (HELD MANY) ON OBJECT = V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (HELD CARRIED) OUT OBJECT = V-PUT-THROUGH IDROP>
<VERB-SYNONYM DROP DUMP>
<SYNTAX EAT OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-EAT>
<VERB-SYNONYM EAT TASTE>
<SYNTAX EMPTY OBJECT = V-EMPTY>
<SYNTAX EMPTY OUT OBJECT = V-EMPTY>
<SYNTAX ENTER = V-IN>
<SYNTAX ENTER OBJECT = V-ENTER>
<SYNTAX EXIT = V-EXIT>
<SYNTAX EXIT OBJECT = V-EXIT>
<VERB-SYNONYM EXIT DEPART>
<SYNTAX EXAMINE OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-EXAMINE PRE-READ>
<SYNTAX EXAMINE OBJECT THROUGH OBJECT = V-EXAMINE-THROUGH PRE-READ>
<SYNTAX EXAMINE IN OBJECT (HELD CARRIED IN-ROOM ON-GROUND) = V-LOOK-INSIDE>
<SYNTAX EXAMINE ON OBJECT (HELD CARRIED IN-ROOM ON-GROUND) = V-LOOK-INSIDE>
<SYNTAX EXAMINE FOR OBJECT = V-FIND>
<VERB-SYNONYM EXAMINE INSPECT DESCRIBE STUDY SEE SCOUR X>
<SYNTAX EXTINGUISH OBJECT = V-OFF>
<SYNTAX FEED OBJECT (FIND PERSON) = V-FEED>
<SYNTAX FEED OBJECT (MANY HELD HAVE) TO OBJECT (FIND PERSON) (ON-GROUND) =
V-GIVE PRE-GIVE>
<SYNTAX FEED OBJECT (FIND PERSON) (ON-GROUND) OBJECT (MANY HELD HAVE) = V-SGIVE
>
<SYNTAX FILL OBJECT (FIND CONTBIT) (HELD CARRIED HAVE) WITH OBJECT = V-FILL>
<SYNTAX FILL OBJECT (FIND CONTBIT) (HELD CARRIED HAVE) = V-FILL>
<SYNTAX FIND OBJECT = V-FIND>
<VERB-SYNONYM FIND SEEK>
<SYNTAX FLUSH OBJECT = V-FLUSH>
<SYNTAX FOLLOW OBJECT = V-FOLLOW>
<VERB-SYNONYM FOLLOW PURSUE CHASE>
<SYNTAX GO OBJECT = V-WALK>
<SYNTAX GO IN OBJECT = V-ENTER>
<SYNTAX GO OUT OBJECT = V-ENTER>
<SYNTAX GO THROUGH OBJECT = V-ENTER>
<SYNTAX GO AROUND OBJECT (FIND RLANDBIT) = V-WALK-AROUND>
<SYNTAX GO UNDER OBJECT = V-CRAWL-UNDER>
<SYNTAX GO BEHIND OBJECT = V-HIDE-BEHIND>
<SYNTAX GO UP OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-UP>
<SYNTAX GO DOWN OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX GO TO OBJECT = V-WALK-TO>
<SYNTAX GO AWAY OBJECT (FIND RLANDBIT) = V-LEAVE>
<SYNTAX GO WITH OBJECT = V-FOLLOW>
<SYNTAX HAND OBJECT (MANY HELD HAVE) TO OBJECT (FIND PERSON) (ON-GROUND) =
V-GIVE PRE-GIVE>
<SYNTAX HAND OBJECT (FIND PERSON) (ON-GROUND) OBJECT (MANY HELD HAVE) = V-SGIVE
>
<VERB-SYNONYM HAND GIVE OFFER PASS SEND>
<SYNTAX HEAR OBJECT = V-LISTEN>
<SYNTAX HELLO = V-HELLO>
<SYNTAX HELLO OBJECT = V-HELLO>
<VERB-SYNONYM HELLO HI>
<SYNTAX HELP = V-HINT>
<SYNTAX HELP OBJECT = V-SAVE-SOMETHING>
<SYNTAX HIDE = V-HIDE>
<SYNTAX HIDE UNDER OBJECT = V-HIDE>
<SYNTAX HIDE IN OBJECT = V-HIDE>
<SYNTAX HIDE BEHIND OBJECT = V-HIDE-BEHIND>
<SYNTAX HIDE OBJECT UNDER OBJECT = V-PUT-UNDER PRE-PUT>
<SYNTAX HIDE OBJECT IN OBJECT = V-PUT PRE-PUT>
<VERB-SYNONYM HIDE CROUCH>
<SYNTAX HOLD = V-HOLD>
<SYNTAX HOLD OBJECT = V-HOLD>
<SYNTAX HOLD ON OBJECT = V-HOLD>
<SYNTAX INFLATE OBJECT = V-INFLATE>
<SYNTAX JUMP = V-LEAP>
<SYNTAX JUMP OVER OBJECT = V-LEAP>
<SYNTAX JUMP ACROSS OBJECT = V-LEAP>
<SYNTAX JUMP IN OBJECT = V-ENTER>
<SYNTAX JUMP FROM OBJECT = V-LEAP-OFF>
<SYNTAX JUMP OFF OBJECT = V-LEAP-OFF>
<SYNTAX JUMP ON OBJECT = V-STAND-ON>
<SYNTAX JUMP ACROSS OBJECT = V-LEAP>
<SYNTAX JUMP OUT OBJECT = V-LEAP-OFF>
<SYNTAX JUMP THROUGH OBJECT = V-ENTER>
<SYNTAX JUMP UP OBJECT (FIND RLANDBIT) = V-LEAP>
<SYNTAX JUMP DOWN OBJECT (FIND RLANDBIT) = V-LEAP>
<SYNTAX JUMP TO OBJECT = V-LEAP>
<VERB-SYNONYM JUMP LEAP DIVE>
<SYNTAX KICK OBJECT = V-KICK>
<SYNTAX KICK IN OBJECT = V-KICK>
<SYNTAX KISS OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-KISS>
<SYNTAX KNOCK ON OBJECT = V-KNOCK>
<SYNTAX KNOCK AT OBJECT = V-KNOCK>
<SYNTAX KNOCK DOWN OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-TOPPLE>
<SYNTAX KNOCK OVER OBJECT = V-TOPPLE>
<VERB-SYNONYM KNOCK RAP>
<SYNTAX TOPPLE OBJECT = V-TOPPLE>
<SYNTAX TOPPLE OVER OBJECT = V-TOPPLE>
<VERB-SYNONYM TOPPLE UPSET TIP>
<SYNTAX LEAVE = V-LEAVE>
<SYNTAX LEAVE OBJECT = V-LEAVE>
<SYNTAX LET GO OBJECT (HELD MANY HAVE) = V-DROP IDROP>
<SYNTAX LIE ON OBJECT = V-LIE-DOWN>
<SYNTAX LIE IN OBJECT = V-LIE-DOWN>
<SYNTAX LIE DOWN OBJECT (FIND RLANDBIT) = V-LIE-DOWN>
<VERB-SYNONYM LIE RECLINE>
<SYNTAX LIGHT OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-ON>
<VERB-SYNONYM LIGHT SMOKE>
<SYNTAX LISTEN TO OBJECT = V-LISTEN>
<SYNTAX LISTEN = V-LISTEN>
<SYNTAX LOCK OBJECT = V-LOCK PRE-LOCK>
<SYNTAX LOCK OBJECT (ON-GROUND IN-ROOM) WITH OBJECT = V-LOCK PRE-LOCK>
<SYNTAX LOOK = V-LOOK>
<SYNTAX LOOK AROUND OBJECT (FIND RLANDBIT) = V-LOOK>
<SYNTAX LOOK DOWN OBJECT (FIND RLANDBIT) = V-LOOK-DOWN>
<SYNTAX LOOK UP OBJECT (FIND RLANDBIT) = V-LOOK-UP>
<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-EXAMINE PRE-READ>
<SYNTAX LOOK AT OBJECT THROUGH OBJECT = V-EXAMINE-THROUGH PRE-READ>
<SYNTAX LOOK THROUGH OBJECT = V-LOOK-INSIDE>
<SYNTAX LOOK OUT OBJECT = V-LOOK-INSIDE>
<SYNTAX LOOK UNDER OBJECT = V-LOOK-UNDER PRE-READ>
<SYNTAX LOOK BEHIND OBJECT = V-LOOK-BEHIND PRE-READ>
<SYNTAX LOOK IN OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-LOOK-INSIDE>
<SYNTAX LOOK THROUGH OBJECT AT OBJECT = V-EXAMINE-THROUGH-FLIP>
<SYNTAX LOOK ON OBJECT = V-EXAMINE PRE-READ>
<SYNTAX LOOK TO OBJECT = V-EXAMINE PRE-READ>
<SYNTAX LOOK FOR OBJECT = V-FIND>
<SYNTAX LOOK OVER OBJECT = V-LOOK-OVER>
<SYNTAX LOOK OBJECT = V-CHASTISE PRE-CHASTISE>
<VERB-SYNONYM LOOK L STARE>
<SYNTAX LOWER OBJECT = V-LOWER>
<SYNTAX LOWER OBJECT THROUGH OBJECT = V-PUT-THROUGH IDROP>
<SYNTAX LOWER OBJECT OUT OBJECT = V-PUT-THROUGH IDROP>
<SYNTAX MAKE OBJECT = V-MAKE>
<SYNTAX MAKE OBJECT OUT OBJECT = V-MAKE>
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM) = V-MOVE>
<SYNTAX MOVE OBJECT WITH OBJECT = V-TAKE-WITH>
<SYNTAX MOVE OBJECT OFF OBJECT = V-TAKE PRE-TAKE>
<SYNTAX MOVE OBJECT UNDER OBJECT = V-PUT-UNDER PRE-PUT>
<SYNTAX MOVE AROUND OBJECT (FIND RLANDBIT) = V-WALK-AROUND>
<SYNTAX MOVE ON OBJECT = V-BOARD>
<SYNTAX MOVE BACK OBJECT = V-BEND>
<SYNTAX PULL OBJECT = V-PULL>
<SYNTAX PULL ON OBJECT = V-BEND>
<SYNTAX PULL OUT OBJECT = V-BEND>
<SYNTAX PULL BACK OBJECT = V-BEND>
<SYNTAX PULL OUT OBJECT WITH OBJECT = V-TAKE-WITH>
<SYNTAX PULL UP OBJECT (ON-GROUND IN-ROOM) = V-RAISE>
<SYNTAX WIDEN OBJECT = V-BEND>
<VERB-SYNONYM WIDEN SPREAD STRETCH>
<SYNTAX NO = V-NO>
<SYNTAX OPEN OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM) = V-OPEN>
<SYNTAX OPEN UP OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM) = V-OPEN
>
<SYNTAX OPEN OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM) WITH OBJECT
(ON-GROUND IN-ROOM HELD CARRIED HAVE) = V-OPEN>
<VERB-SYNONYM OPEN PART DRAW>
<SYNTAX PAY OBJECT = V-BUY>
<SYNTAX PAY FOR OBJECT = V-BUY>
<SYNTAX PAY FOR OBJECT WITH OBJECT = V-BUY-OBJECT-WITH>
<SYNTAX PAY OBJECT (MANY HELD HAVE) TO OBJECT (FIND PERSON) = V-GIVE PRE-GIVE>
<SYNTAX PAY OBJECT (FIND PERSON) WITH OBJECT (HELD HAVE) = V-SGIVE>
<SYNTAX PAY WITH OBJECT = V-BUY-WITH>
<SYNTAX POINT AT OBJECT = V-POINT>
<SYNTAX POINT TO OBJECT = V-POINT>
<SYNTAX PICK OBJECT = V-PICK>
<SYNTAX PICK OBJECT WITH OBJECT = V-PICK>
<SYNTAX PICK UP OBJECT (FIND TAKEBIT) (ON-GROUND MANY) = V-PICK-UP PRE-TAKE>
<SYNTAX PLAY OBJECT = V-PLAY>
<SYNTAX POINT OBJECT = V-CLEAN>
<SYNTAX POINT AT OBJECT = V-POINT>
<SYNTAX POINT TO OBJECT = V-POINT>
<SYNTAX POINT OBJECT AT OBJECT = V-POINT>
<SYNTAX POINT OBJECT IN OBJECT = V-POINT>
<VERB-SYNONYM POINT SHINE>
<SYNTAX POUR OBJECT (HELD CARRIED) IN OBJECT = V-POUR>
<SYNTAX POUR OUT OBJECT (HELD CARRIED) IN OBJECT = V-POUR>
<SYNTAX POUR OBJECT (HELD CARRIED) ON OBJECT = V-POUR>
<SYNTAX POUR OBJECT (HELD CARRIED) AT OBJECT = V-POUR>
<SYNTAX POUR OBJECT (HELD CARRIED) FROM OBJECT = V-POUR>
<SYNTAX POUR OBJECT (HELD CARRIED) OUT OBJECT = V-POUR>
<VERB-SYNONYM POUR SPILL>
<SYNTAX PUSH OBJECT = V-PUSH>
<SYNTAX PUSH UP OBJECT = V-RAISE>
<SYNTAX PUSH ON OBJECT (IN-ROOM ON-GROUND) = V-PUSH>
<SYNTAX PUSH OBJECT UNDER OBJECT = V-PUT-UNDER PRE-PUT>
<SYNTAX PUSH OBJECT IN OBJECT = V-PUSH>
<SYNTAX PUSH OVER OBJECT = V-TOPPLE>
<VERB-SYNONYM PUSH PRESS TRIP>
<SYNTAX PUT OBJECT TO OBJECT = V-TIE>
<SYNTAX PUT OBJECT (HELD MANY) IN OBJECT = V-PUT PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY) DOWN OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY) ON OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY) AROUND OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY) OVER OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY) ACROSS OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX PUT DOWN OBJECT (HELD MANY HAVE) = V-DROP IDROP>
<SYNTAX PUT IN OBJECT = V-PLUG-IN>
<SYNTAX PUT OBJECT UNDER OBJECT = V-PUT-UNDER PRE-PUT>
<SYNTAX PUT ON OBJECT (FIND WEARBIT) = V-WEAR>
<SYNTAX PUT BACK OBJECT = V-REPLACE>
<SYNTAX PUT OBJECT = V-REPLACE>
<SYNTAX PUT OBJECT BEHIND OBJECT = V-PUT-BEHIND>
<SYNTAX PUT OBJECT THROUGH OBJECT = V-PUT-THROUGH IDROP>
<SYNTAX PUT OBJECT OUT OBJECT = V-PUT-THROUGH IDROP>
<SYNTAX PUT OUT OBJECT = V-OFF>
<VERB-SYNONYM PUT PLUG STUFF INSERT STICK PLACE LAY REPLACE>
<SYNTAX RAISE OBJECT = V-RAISE>
<SYNTAX RAISE UP OBJECT = V-RAISE>
<VERB-SYNONYM RAISE LIFT>
<SYNTAX REACH IN OBJECT (ON-GROUND IN-ROOM) = V-REACH-IN>
<SYNTAX REACH UNDER OBJECT (ON-GROUND IN-ROOM) = V-REACH-IN>
<SYNTAX REACH FOR OBJECT = V-TOUCH>
<SYNTAX REACH OBJECT = V-TOUCH>
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE) =
V-READ PRE-READ>
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
THROUGH OBJECT = V-EXAMINE-THROUGH PRE-READ>
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE) WITH
OBJECT = V-EXAMINE-THROUGH PRE-READ>
<VERB-SYNONYM READ SKIM>
<SYNTAX REMOVE OBJECT (FIND WORNBIT) = V-REMOVE>
<SYNTAX REMOVE OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY) FROM OBJECT =
V-TAKE PRE-TAKE>
<VERB-SYNONYM REMOVE SHED UNWRAP>
<SYNTAX RIP OBJECT (HAVE) = V-RIP>
<SYNTAX RIP UP OBJECT (HAVE) = V-RIP>
<VERB-SYNONYM RIP TEAR SHRED>
<SYNTAX SAVE OBJECT = V-SAVE-SOMETHING>
<SYNTAX SAY = V-SAY>
<SYNTAX SCORE = V-SCORE>
<SYNTAX SEARCH OBJECT = V-SEARCH>
<SYNTAX SEARCH IN OBJECT = V-SEARCH>
<SYNTAX SEARCH FOR OBJECT = V-FIND>
<SYNTAX SEARCH THROUGH OBJECT = V-SEARCH>
<VERB-SYNONYM SEARCH RUMMAGE FRISK>
<SYNTAX SHAKE OBJECT = V-SHAKE>
<SYNTAX SHAKE OBJECT WITH OBJECT = V-SHAKE-WITH>
<SYNTAX SHOOT OBJECT = V-SHOOT>
<SYNTAX SHOOT AT OBJECT = V-SHOOT>
<SYNTAX SHOOT OBJECT AT OBJECT = V-SHOOT-FLIP>
<SYNTAX SHOOT OBJECT WITH OBJECT = V-SHOOT>
<VERB-SYNONYM SHOOT FIRE>
<SYNTAX SHOW OBJECT (HELD MANY) TO OBJECT (FIND PERSON) = V-SHOW>
<SYNTAX SHOW OBJECT (FIND PERSON) OBJECT (HELD MANY) = V-SSHOW>
<SYNTAX SIGN OBJECT = V-SIGN>
<SYNTAX SIT ON OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX SIT DOWN OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-SIT>
<SYNTAX SIT IN OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX SIT AT OBJECT (ON-GROUND IN-ROOM) = V-SIT>
<VERB-SYNONYM SIT REST SQUAT>
<SYNTAX SKIP = V-SKIP>
<VERB-SYNONYM SKIP HOP>
<SYNTAX SLEEP = V-SLEEP>
<SYNTAX SLEEP IN OBJECT (IN-ROOM ON-GROUND) = V-BOARD PRE-BOARD>
<SYNTAX SLEEP ON OBJECT (IN-ROOM ON-GROUND) = V-BOARD PRE-BOARD>
<VERB-SYNONYM SLEEP DOZE NAP>
<SYNTAX SLICE OBJECT WITH OBJECT (CARRIED HELD) = V-CUT>
<SYNTAX SLICE THROUGH OBJECT WITH OBJECT (CARRIED HELD) = V-CUT>
<SYNTAX SLICE DOWN OBJECT WITH OBJECT (CARRIED HELD) = V-CUT>
<VERB-SYNONYM SLICE CUT CHOP>
<SYNTAX SLIDE OBJECT = V-PUSH>
<SYNTAX SLIDE DOWN OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX SLIDE OBJECT IN OBJECT = V-PUT PRE-PUT>
<SYNTAX SLIDE OBJECT THROUGH OBJECT = V-PUT PRE-PUT>
<SYNTAX SLIDE OBJECT UNDER OBJECT = V-PUT-UNDER PRE-PUT>
<SYNTAX SMELL OBJECT = V-SMELL>
<VERB-SYNONYM SMELL SNIFF>
<SYNTAX SMILE = V-SMILE>
<SYNTAX SMILE AT OBJECT = V-SMILE>
<SYNTAX SPIN OBJECT = V-SPIN>
<VERB-SYNONYM SPIN WHIRL>
<SYNTAX STAND = V-STAND>
<SYNTAX STAND UP OBJECT (FIND RLANDBIT) = V-STAND>
<SYNTAX STAND ON OBJECT = V-STAND-ON>
<SYNTAX STAND IN OBJECT = V-STAND-ON>
<SYNTAX STAND BEHIND OBJECT = V-HIDE-BEHIND>
<VERB-SYNONYM STAND RISE>
<SYNTAX START OBJECT = V-ON>
<SYNTAX START OBJECT OBJECT = V-ON-2>
<VERB-SYNONYM START ACTIVATE>
<SYNTAX STOP OBJECT = V-OFF>
<SYNTAX STOP OBJECT OBJECT = V-OFF-2>
<VERB-SYNONYM STOP DEACTIVATE>
<SYNTAX RESET OBJECT = V-RESET>
<VERB-SYNONYM RESET ZERO>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (ON-GROUND IN-ROOM MANY) = V-TAKE PRE-TAKE>
<SYNTAX TAKE IN OBJECT (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
<SYNTAX TAKE ON OBJECT (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
<SYNTAX TAKE UP OBJECT (FIND RLANDBIT) = V-STAND>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM MANY) OUT OBJECT = V-TAKE
PRE-TAKE>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM MANY) OFF OBJECT = V-TAKE
PRE-TAKE>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY) FROM OBJECT = V-TAKE
PRE-TAKE>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY) IN OBJECT = V-TAKE
PRE-TAKE>
<SYNTAX TAKE OFF OBJECT = V-TAKE-OFF>
<SYNTAX TAKE OUT OBJECT (ON-GROUND) = V-DISEMBARK>
<SYNTAX TAKE DOWN OBJECT (ON-GROUND) = V-DISEMBARK>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) WITH OBJECT = V-TAKE-WITH>
<SYNTAX TAKE UNDER OBJECT = V-CRAWL-UNDER>
<SYNTAX TAKE BEHIND OBJECT = V-HIDE-BEHIND>
<VERB-SYNONYM TAKE GET GRAB CATCH CARRY>
<SYNTAX TALK TO OBJECT (FIND PERSON) (IN-ROOM) = V-TELL>
<VERB-SYNONYM TALK SPEAK>
<SYNTAX TAP OBJECT = V-TOUCH>
<SYNTAX TAP ON OBJECT = V-KNOCK>
<SYNTAX TELL OBJECT (FIND PERSON) (IN-ROOM) = V-TELL>
<SYNTAX TELL OBJECT (FIND PERSON) ABOUT OBJECT = V-TELL-ABOUT>
<SYNTAX TELL OBJECT OBJECT = V-STELL>
<VERB-SYNONYM TELL WARN>
<SYNTAX THANKS OBJECT = V-THANK>
<SYNTAX THANKS = V-THANK>
<VERB-SYNONYM THANKS THANK>
<SYNTAX THROW OBJECT (HELD CARRIED) = V-THROW IDROP>
<SYNTAX THROW OBJECT (HELD CARRIED) IN OBJECT = V-PUT PRE-PUT>
<SYNTAX THROW OBJECT (HELD CARRIED) UP OBJECT (FIND RLANDBIT) = V-THROW IDROP>
<SYNTAX THROW OBJECT (HELD CARRIED) AT OBJECT (ON-GROUND IN-ROOM) = V-THROW
IDROP>
<SYNTAX THROW OBJECT (HELD CARRIED) TO OBJECT (ON-GROUND IN-ROOM) = V-THROW
IDROP>
<SYNTAX THROW OBJECT (HELD CARRIED) OFF OBJECT = V-THROW-OFF IDROP>
<SYNTAX THROW OBJECT (HELD CARRIED) OVER OBJECT = V-THROW-OFF IDROP>
<SYNTAX THROW OBJECT (HELD CARRIED) THROUGH OBJECT (ON-GROUND IN-ROOM) =
V-PUT-THROUGH IDROP>
<SYNTAX THROW OBJECT (HELD CARRIED) OUT OBJECT = V-PUT-THROUGH IDROP>
<SYNTAX THROW OUT OBJECT = V-DISPOSE>
<VERB-SYNONYM THROW HURL TOSS>
<SYNTAX TIE OBJECT (HELD) TO OBJECT = V-TIE>
<SYNTAX TIE OBJECT (HELD) ON OBJECT = V-TIE>
<SYNTAX TIE OBJECT (HELD) AROUND OBJECT = V-TIE>
<SYNTAX TIE TOGETHER OBJECT = V-TIE-TOGETHER>
<SYNTAX TIE OBJECT WITH OBJECT (HELD) = V-TIE-FLIP>
<VERB-SYNONYM TIE FASTEN SECURE ATTACH CONNECT>
<SYNTAX TOUCH OBJECT = V-TOUCH>
<SYNTAX TOUCH OBJECT WITH OBJECT = V-TOUCH>
<SYNTAX TOUCH OBJECT ON OBJECT = V-TOUCH>
<VERB-SYNONYM TOUCH FEEL POKE>
<SYNTAX TURN OBJECT = V-SET>
<SYNTAX TURN AROUND OBJECT = V-SET>
<SYNTAX TURN OBJECT TO OBJECT = V-SET>
<SYNTAX TURN OBJECT WITH OBJECT (HAVE) = V-SET>
<SYNTAX TURN IN OBJECT TO OBJECT = V-SET>
<SYNTAX TURN ON OBJECT = V-ON>
<SYNTAX TURN OFF OBJECT = V-OFF>
<VERB-SYNONYM TURN SET SWITCH FLIP FLICK TOGGLE>
<SYNTAX UNLOCK OBJECT = V-UNLOCK PRE-LOCK>
<SYNTAX UNLOCK OBJECT WITH OBJECT (HAVE) = V-UNLOCK PRE-LOCK>
<SYNTAX UNTIE OBJECT (ON-GROUND IN-ROOM HELD CARRIED) = V-UNTIE>
<VERB-SYNONYM UNTIE FREE UNFASTEN UNATTACH>
<SYNTAX USE OBJECT = V-USE>
<SYNTAX WAIT = V-WAIT>
<SYNTAX WAIT OBJECT = V-$WAIT>
<SYNTAX WAIT FOR OBJECT = V-WAIT-FOR>
<SYNTAX WAIT IN OBJECT = V-WAIT-IN>
<SYNTAX WAIT ON OBJECT = V-WAIT-IN>
<VERB-SYNONYM WAIT Z>
<SYNTAX WAKE OBJECT (FIND RLANDBIT) = V-ALARM>
<SYNTAX WAKE UP OBJECT (FIND RLANDBIT) = V-ALARM>
<VERB-SYNONYM WAKE AWAKE ROUSE>
<SYNTAX CROSS OBJECT = V-CROSS>
<SYNTAX WALK = V-WALK-AROUND>
<SYNTAX WALK OBJECT = V-WALK>
<SYNTAX WALK IN OBJECT = V-ENTER>
<SYNTAX WALK OUT OBJECT = V-ENTER>
<SYNTAX WALK ACROSS OBJECT = V-ENTER>
<SYNTAX WALK ON OBJECT = V-STAND-ON>
<SYNTAX WALK OVER OBJECT = V-ENTER>
<SYNTAX WALK THROUGH OBJECT = V-ENTER>
<SYNTAX WALK AROUND OBJECT (FIND RLANDBIT) = V-WALK-AROUND>
<SYNTAX WALK UNDER OBJECT = V-CRAWL-UNDER>
<SYNTAX WALK BEHIND OBJECT = V-HIDE-BEHIND>
<SYNTAX WALK UP OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-UP>
<SYNTAX WALK DOWN OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX WALK TO OBJECT = V-WALK-TO>
<SYNTAX WALK AWAY OBJECT (FIND RLANDBIT) = V-LEAVE>
<VERB-SYNONYM WALK RUN PROCEED>
<SYNTAX WASH OBJECT = V-CLEAN>
<SYNTAX WASH UP OBJECT (FIND RLANDBIT) = V-CLEAN>
<SYNTAX WASH UP OBJECT WITH OBJECT = V-CLEAN>
<SYNTAX WASH OBJECT WITH OBJECT = V-CLEAN>
<VERB-SYNONYM WASH CLEAN TIDY WIPE BRUSH>
<SYNTAX WAVE OBJECT (HELD CARRIED) = V-WAVE>
<SYNTAX WAVE = V-WAVE-AT>
<SYNTAX WAVE AT OBJECT = V-WAVE-AT>
<SYNTAX WAVE TO OBJECT = V-WAVE-AT>
<SYNTAX WEAR OBJECT (FIND WEARBIT) (TAKE) = V-WEAR>
<VERB-SYNONYM WEAR DON>
<SYNTAX WHAT = V-WHAT>
<SYNTAX WHAT OBJECT = V-WHAT>
<VERB-SYNONYM WHAT WHATS WHAT\'S>
<SYNTAX WHERE = V-WHERE>
<SYNTAX WHERE OBJECT = V-WHERE>
<VERB-SYNONYM WHERE WHERES WHERE\'S>
<SYNTAX WHO = V-WHO>
<SYNTAX WHO OBJECT = V-WHO>
<VERB-SYNONYM WHO WHOS>
<SYNTAX WHY = V-WHY>
<SYNTAX WRAP OBJECT IN OBJECT (HELD MANY) = V-SPUT-ON>
<SYNTAX WRAP OBJECT (HELD MANY) AROUND OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX YELL = V-YELL>
<SYNTAX YELL AT OBJECT = V-YELL>
<SYNTAX YELL TO OBJECT = V-YELL>
<VERB-SYNONYM YELL SCREAM SHOUT>
<SYNTAX OIL OBJECT = V-OIL>
<VERB-SYNONYM OIL LUBRICATE>
<SYNTAX YES = V-YES>
<VERB-SYNONYM YES Y OK OKAY>
<SYNTAX WATCH OBJECT = V-WATCH>
<SYNTAX WATCH OBJECT THROUGH OBJECT = V-EXAMINE-THROUGH PRE-READ>
<VERB-SYNONYM WATCH OBSERVE>
<SYNTAX HINT = V-HINT>
<SYNTAX HINT OFF OBJECT (FIND RLANDBIT) = V-HINTS-OFF>
<VERB-SYNONYM HINT HINTS CLUE>
<SYNTAX $ISL = V-$ISL>
<VERB-SYNONYM $ISL $REFRESH>
<SYNTAX SLOW = V-SLOW-TIME>
<SYNTAX FAST = V-FAST-TIME>
<SYNTAX LOAD OBJECT = V-LOAD>
<SYNTAX LOAD OBJECT WITH OBJECT = V-LOAD>
<SYNTAX LOAD OBJECT IN OBJECT = V-SLOAD>
<SYNTAX REWIND OBJECT = V-REWIND>
<SYNTAX REWIND UP OBJECT = V-REWIND>
<VERB-SYNONYM REWIND WIND UNWIND UNROLL>
<SYNTAX PHOTOGRAPH OBJECT = V-PHOTOGRAPH>
<SYNTAX PHOTOGRAPH OBJECT WITH OBJECT = V-PHOTOGRAPH>
<SYNTAX FOLD OBJECT = V-FOLD>
<SYNTAX FOLD UP OBJECT = V-FOLD>
<VERB-SYNONYM FOLD CRUMPLE>
<SYNTAX UNFOLD OBJECT = V-UNFOLD>
<VERB-SYNONYM UNFOLD UNCRUMPLE>
<SYNTAX SURRENDER = V-SURRENDER>
<SYNTAX BRIBE OBJECT = V-BRIBE>
<SYNTAX BRIBE OBJECT WITH OBJECT = V-BRIBE>
<SYNTAX WET OBJECT = V-WET>
<VERB-SYNONYM WET SOAK>
<GLOBAL READ-CLOCK 30>
<SYNTAX STACK OBJECT = V-STACK>
<SYNTAX STACK UP OBJECT = V-STACK>
<VERB-SYNONYM STACK PILE>
<SYNTAX PAUSE = V-PAUSE>
<DEFINE-ROUTINE V-PAUSE>

778
syntax.zil Normal file
View file

@ -0,0 +1,778 @@
"SYNTAX for
BORDER ZONE
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
<BUZZ A AN THE IS ARE AM AND OF THEN ALL ONE BUT EXCEPT \. \, \" \! \?
THIS THAT PRY PLEASE HERE SOME MORE G AGAIN OOPS O ;RIDDLE ;SEX
SECONDS MINUTES MINUTE C CONTINUE>
<PREP-SYNONYM TO TOWARD>
<PREP-SYNONYM WITH USING>
<PREP-SYNONYM THROUGH THRU>
<PREP-SYNONYM ON ONTO>
<PREP-SYNONYM OUT OUTSIDE APART>
<PREP-SYNONYM IN INSIDE INTO>
<PREP-SYNONYM UNDER BELOW BENEATH UNDERNEATH>
<PREP-SYNONYM AROUND ALONG>
<SYNONYM ALL BOTH EVERYTHING>
<SYNONYM NORTH N>
<SYNONYM SOUTH S>
<SYNONYM EAST E>
<SYNONYM WEST W>
<SYNONYM DOWN D>
<SYNONYM UP U>
<SYNONYM NW NORTHWEST>
<SYNONYM NE NORTHEAST>
<SYNONYM SW SOUTHWEST>
<SYNONYM SE SOUTHEAST>
;"game commands"
<SYNTAX VERBOSE = V-VERBOSE>
<SYNTAX BRIEF = V-BRIEF>
<SYNTAX SUPERBRIEF = V-SUPER-BRIEF>
<SYNTAX DIAGNOSE = V-DIAGNOSE>
<SYNTAX INVENTORY = V-INVENTORY>
<VERB-SYNONYM INVENTORY I>
<SYNTAX QUIT = V-QUIT>
<VERB-SYNONYM QUIT Q>
<SYNTAX RESTART = V-RESTART>
<SYNTAX RESTORE = V-RESTORE>
<SYNTAX SAVE = V-SAVE>
<SYNTAX SCRIPT = V-SCRIPT>
<SYNTAX UNSCRIPT = V-UNSCRIPT>
<SYNTAX VERSION = V-VERSION>
<SYNTAX \#RANDOM OBJECT = V-$RANDOM>
<SYNTAX $VERIFY = V-$VERIFY>
<SYNTAX $VERIFY OBJECT = V-$VERIFY>
<SYNTAX $ID = V-$ID>
;"subtitle real verbs"
<SYNTAX ADDRESS OBJECT (FIND PERSON) (IN-ROOM) = V-TELL>
<SYNTAX ADVANCE OBJECT = V-ADVANCE>
<SYNTAX ANSWER = V-ANSWER>
<SYNTAX ANSWER OBJECT = V-ANSWER>
<SYNTAX ANSWER TO OBJECT = V-ANSWER>
<VERB-SYNONYM ANSWER REPLY>
<SYNTAX APPROACH OBJECT = V-WALK-TO>
<SYNTAX ARREST OBJECT = V-ARREST>
<SYNTAX ASK OBJECT (FIND PERSON) ABOUT OBJECT = V-ASK-ABOUT>
<SYNTAX ASK OBJECT (FIND PERSON) ON OBJECT = V-ASK-ABOUT>
<SYNTAX ASK OBJECT (FIND PERSON) FOR OBJECT = V-ASK-FOR>
<SYNTAX KILL OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-KILL>
<SYNTAX KILL OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
WITH OBJECT (HELD CARRIED HAVE) = V-KILL>
<VERB-SYNONYM KILL MURDER ASSAULT STAB>
<SYNTAX HIT OBJECT (FIND PERSON) = V-HIT>
<SYNTAX HIT OBJECT (FIND PERSON) WITH OBJECT (HELD CARRIED HAVE) = V-HIT>
<VERB-SYNONYM HIT PUNCH SLAP STRIKE ATTACK>
<SYNTAX STRANGLE OBJECT = V-STRANGLE>
<SYNTAX BEND OBJECT = V-BEND>
<SYNTAX BEND BACK OBJECT = V-BEND>
<SYNTAX BEND OBJECT OUT OBJECT = V-BEND>
<SYNTAX BITE OBJECT = V-BITE>
;<SYNTAX BLOW UP OBJECT = V-INFLATE>
<SYNTAX BLOW OUT OBJECT = V-OFF>
;<SYNTAX BREATHE = V-INHALE>
;<SYNTAX BREATHE HARD OBJECT (FIND RLANDBIT) = V-INHALE>
;<VERB-SYNONYM BREATHE INHALE>
<SYNTAX BUY OBJECT = V-BUY ;PRE-BUY>
<SYNTAX BUY OBJECT FROM OBJECT = V-BUY ;PRE-BUY>
<SYNTAX BUY WITH OBJECT = V-BUY-WITH>
<SYNTAX BUY OBJECT WITH OBJECT = V-BUY-OBJECT-WITH>
<VERB-SYNONYM BUY ORDER PURCHASE>
<SYNTAX CALL OBJECT = V-CALL>
<SYNTAX CALL OUT OBJECT = V-CALL>
<SYNTAX CALL TO OBJECT = V-CALL>
;<SYNTAX CALL OBJECT WITH OBJECT = V-PHONE-WITH>
;<SYNTAX CALL OBJECT ON OBJECT = V-PHONE-WITH>
;<SYNTAX CAST OFF OBJECT (FIND RLANDBIT) = V-CAST-OFF>
;<SYNTAX CLICK OBJECT = V-CLICK>
<SYNTAX CLIMB = V-CLIMB-NUL>
<SYNTAX CLIMB OBJECT (ON-GROUND IN-ROOM) = V-CLIMB>
<SYNTAX CLIMB ON OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX CLIMB UP OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-CLIMB-UP>
<SYNTAX CLIMB DOWN OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX CLIMB OUT OBJECT (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNTAX CLIMB OFF OBJECT (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNTAX CLIMB OVER OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-OVER>
<SYNTAX CLIMB IN OBJECT (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
<SYNTAX CLIMB THROUGH OBJECT = V-ENTER>
<SYNTAX CLIMB UNDER OBJECT = V-CRAWL-UNDER>
<SYNTAX CLIMB ACROSS OBJECT = V-CLIMB>
<VERB-SYNONYM CLIMB SCALE CREEP CRAWL>
<SYNTAX CLOSE OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM) = V-CLOSE>
<SYNTAX CLOSE OFF OBJECT (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-OFF>
<VERB-SYNONYM CLOSE SHUT>
<SYNTAX COVER OBJECT WITH OBJECT (HELD MANY) = V-SPUT-ON>
<SYNTAX COUNT OBJECT = V-COUNT>
;<SYNTAX DEFLATE OBJECT = V-DEFLATE>
<SYNTAX DEMOLISH OBJECT (ON-GROUND IN-ROOM) = V-MUNG>
<SYNTAX DEMOLISH OBJECT WITH OBJECT (HELD CARRIED TAKE) = V-MUNG>
<SYNTAX DEMOLISH DOWN OBJECT = V-KILL>
<VERB-SYNONYM DEMOLISH DESTROY DAMAGE BREAK SMASH WRECK POP>
<SYNTAX DESCEND OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX DIG IN OBJECT = V-DIG>
<SYNTAX DIG WITH OBJECT = V-DIG>
<SYNTAX DIG THROUGH OBJECT = V-DIG>
<SYNTAX DIG UNDER OBJECT = V-DIG>
<SYNTAX DRINK OBJECT (FIND DRINKBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-DRINK>
<SYNTAX DRINK FROM OBJECT (HELD CARRIED) = V-DRINK-FROM>
<VERB-SYNONYM DRINK SIP SWALLOW>
<SYNTAX DROP OBJECT (HELD MANY HAVE) = V-DROP IDROP>
<SYNTAX DROP OBJECT (HELD MANY) DOWN OBJECT = V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (HELD MANY) IN OBJECT = V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (HELD MANY) ON OBJECT = V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (HELD CARRIED) OUT OBJECT = V-PUT-THROUGH IDROP>
<VERB-SYNONYM DROP DUMP>
<SYNTAX EAT OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-EAT>
<VERB-SYNONYM EAT TASTE>
;<SYNTAX EJECT OBJECT = V-EJECT>
<SYNTAX EMPTY OBJECT = V-EMPTY>
<SYNTAX EMPTY OUT OBJECT = V-EMPTY>
;<SYNTAX EMPTY OBJECT (MANY) FROM OBJECT = V-SEMPTY>
;<SYNTAX EMPTY OBJECT OVER OBJECT = V-EMPTY-ONTO>
;<SYNTAX EMPTY OBJECT ON OBJECT = V-EMPTY-ONTO>
;<SYNTAX EMPTY OBJECT IN OBJECT = V-EMPTY-INTO>
;<SYNTAX EMPTY OBJECT OUT OBJECT = V-EMPTY>
<SYNTAX ENTER = V-IN>
<SYNTAX ENTER OBJECT = V-ENTER>
<SYNTAX EXIT = V-EXIT>
<SYNTAX EXIT OBJECT = V-EXIT>
<VERB-SYNONYM EXIT DEPART>
<SYNTAX EXAMINE OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-EXAMINE PRE-READ>
<SYNTAX EXAMINE OBJECT THROUGH OBJECT = V-EXAMINE-THROUGH PRE-READ>
<SYNTAX EXAMINE IN OBJECT (HELD CARRIED IN-ROOM ON-GROUND)
= V-LOOK-INSIDE>
<SYNTAX EXAMINE ON OBJECT (HELD CARRIED IN-ROOM ON-GROUND)
= V-LOOK-INSIDE>
<SYNTAX EXAMINE FOR OBJECT = V-FIND>
<VERB-SYNONYM EXAMINE INSPECT DESCRIBE STUDY SEE SCOUR X>
<SYNTAX EXTINGUISH OBJECT = V-OFF>
<SYNTAX FEED OBJECT (FIND PERSON) = V-FEED>
<SYNTAX FEED OBJECT (MANY HELD HAVE) TO OBJECT (FIND PERSON) (ON-GROUND)
= V-GIVE PRE-GIVE>
<SYNTAX FEED OBJECT (FIND PERSON) (ON-GROUND) OBJECT (MANY HELD HAVE)
= V-SGIVE>
<SYNTAX FILL OBJECT (FIND CONTBIT) (HELD CARRIED HAVE) WITH OBJECT = V-FILL>
<SYNTAX FILL OBJECT (FIND CONTBIT) (HELD CARRIED HAVE) = V-FILL>
<SYNTAX FIND OBJECT = V-FIND>
<VERB-SYNONYM FIND SEEK>
<SYNTAX FLUSH OBJECT = V-FLUSH>
<SYNTAX FOLLOW OBJECT = V-FOLLOW>
<VERB-SYNONYM FOLLOW PURSUE CHASE>
<SYNTAX GO OBJECT = V-WALK>
<SYNTAX GO IN OBJECT = V-ENTER>
<SYNTAX GO OUT OBJECT = V-ENTER>
<SYNTAX GO THROUGH OBJECT = V-ENTER>
<SYNTAX GO AROUND OBJECT (FIND RLANDBIT) = V-WALK-AROUND>
<SYNTAX GO UNDER OBJECT = V-CRAWL-UNDER>
<SYNTAX GO BEHIND OBJECT = V-HIDE-BEHIND>
<SYNTAX GO UP OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-UP>
<SYNTAX GO DOWN OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX GO TO OBJECT = V-WALK-TO>
<SYNTAX GO AWAY OBJECT (FIND RLANDBIT) = V-LEAVE>
<SYNTAX GO WITH OBJECT = V-FOLLOW>
<SYNTAX HAND OBJECT (MANY HELD HAVE) TO OBJECT (FIND PERSON) (ON-GROUND)
= V-GIVE PRE-GIVE>
<SYNTAX HAND OBJECT (FIND PERSON) (ON-GROUND) OBJECT (MANY HELD HAVE)
= V-SGIVE>
;<SYNTAX HAND UP OBJECT (FIND RLANDBIT) = V-GIVE-UP>
<VERB-SYNONYM HAND GIVE OFFER PASS SEND>
;<SYNTAX HANG OBJECT FROM OBJECT = V-HANG>
;<SYNTAX HANG OBJECT (HELD MANY) IN OBJECT = V-PUT PRE-PUT>
<SYNTAX HEAR OBJECT = V-LISTEN ;PRE-LISTEN>
<SYNTAX HELLO = V-HELLO>
<SYNTAX HELLO OBJECT = V-HELLO>
<VERB-SYNONYM HELLO HI>
<SYNTAX HELP = V-HINT>
<SYNTAX HELP OBJECT = V-SAVE-SOMETHING>
<SYNTAX HIDE = V-HIDE>
<SYNTAX HIDE UNDER OBJECT = V-HIDE>
<SYNTAX HIDE IN OBJECT = V-HIDE>
<SYNTAX HIDE BEHIND OBJECT = V-HIDE-BEHIND>
<SYNTAX HIDE OBJECT UNDER OBJECT = V-PUT-UNDER PRE-PUT>
<SYNTAX HIDE OBJECT IN OBJECT = V-PUT PRE-PUT>
<VERB-SYNONYM HIDE CROUCH>
;<SYNTAX HISS = V-HISS>
<SYNTAX HOLD = V-HOLD>
<SYNTAX HOLD OBJECT = V-HOLD>
<SYNTAX HOLD ON OBJECT = V-HOLD>
<SYNTAX INFLATE OBJECT = V-INFLATE>
<SYNTAX JUMP = V-LEAP>
<SYNTAX JUMP OVER OBJECT = V-LEAP>
<SYNTAX JUMP ACROSS OBJECT = V-LEAP>
<SYNTAX JUMP IN OBJECT = V-ENTER>
<SYNTAX JUMP FROM OBJECT = V-LEAP-OFF>
<SYNTAX JUMP OFF OBJECT = V-LEAP-OFF>
<SYNTAX JUMP ON OBJECT = V-STAND-ON>
<SYNTAX JUMP ACROSS OBJECT = V-LEAP>
<SYNTAX JUMP OUT OBJECT = V-LEAP-OFF>
<SYNTAX JUMP THROUGH OBJECT = V-ENTER>
<SYNTAX JUMP UP OBJECT (FIND RLANDBIT) = V-LEAP>
<SYNTAX JUMP DOWN OBJECT (FIND RLANDBIT) = V-LEAP>
<SYNTAX JUMP TO OBJECT = V-LEAP>
<VERB-SYNONYM JUMP LEAP DIVE>
<SYNTAX KICK OBJECT = V-KICK>
<SYNTAX KICK IN OBJECT = V-KICK>
<SYNTAX KISS OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-KISS>
;<SYNTAX KISS OBJECT (FIND PERSON) ON OBJECT = V-KISS-ON>
;<SYNTAX KNEEL TO OBJECT (FIND PERSON) = V-KNEEL>
;<SYNTAX KNEEL BEFORE OBJECT (FIND PERSON) = V-KNEEL>
;<SYNTAX KNEEL FOR OBJECT (FIND PERSON) = V-KNEEL>
;<VERB-SYNONYM KNEEL BOW>
<SYNTAX KNOCK ON OBJECT = V-KNOCK>
<SYNTAX KNOCK AT OBJECT = V-KNOCK>
<SYNTAX KNOCK DOWN OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-TOPPLE>
<SYNTAX KNOCK OVER OBJECT = V-TOPPLE>
<VERB-SYNONYM KNOCK RAP>
<SYNTAX TOPPLE OBJECT = V-TOPPLE>
<SYNTAX TOPPLE OVER OBJECT = V-TOPPLE>
<VERB-SYNONYM TOPPLE UPSET TIP>
<SYNTAX LEAVE = V-LEAVE>
<SYNTAX LEAVE OBJECT = V-LEAVE>
<SYNTAX LET GO OBJECT (HELD MANY HAVE) = V-DROP IDROP>
<SYNTAX LIE ON OBJECT = V-LIE-DOWN>
<SYNTAX LIE IN OBJECT = V-LIE-DOWN>
<SYNTAX LIE DOWN OBJECT (FIND RLANDBIT) = V-LIE-DOWN>
<VERB-SYNONYM LIE RECLINE>
<SYNTAX LIGHT OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-ON>
<VERB-SYNONYM LIGHT SMOKE>
<SYNTAX LISTEN TO OBJECT = V-LISTEN ;PRE-LISTEN>
<SYNTAX LISTEN = V-LISTEN>
<SYNTAX LOCK OBJECT = V-LOCK PRE-LOCK>
<SYNTAX LOCK OBJECT (ON-GROUND IN-ROOM) WITH OBJECT = V-LOCK PRE-LOCK>
<SYNTAX LOOK = V-LOOK>
<SYNTAX LOOK AROUND OBJECT (FIND RLANDBIT) = V-LOOK>
<SYNTAX LOOK DOWN OBJECT (FIND RLANDBIT) = V-LOOK-DOWN>
<SYNTAX LOOK UP OBJECT (FIND RLANDBIT) = V-LOOK-UP>
<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-EXAMINE PRE-READ>
<SYNTAX LOOK AT OBJECT THROUGH OBJECT = V-EXAMINE-THROUGH PRE-READ>
<SYNTAX LOOK THROUGH OBJECT = V-LOOK-INSIDE>
<SYNTAX LOOK OUT OBJECT = V-LOOK-INSIDE>
<SYNTAX LOOK UNDER OBJECT = V-LOOK-UNDER PRE-READ>
<SYNTAX LOOK BEHIND OBJECT = V-LOOK-BEHIND PRE-READ>
<SYNTAX LOOK IN OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-LOOK-INSIDE>
<SYNTAX LOOK THROUGH OBJECT AT OBJECT = V-EXAMINE-THROUGH-FLIP>
<SYNTAX LOOK ON OBJECT = V-EXAMINE PRE-READ>
<SYNTAX LOOK TO OBJECT = V-EXAMINE PRE-READ>
<SYNTAX LOOK FOR OBJECT = V-FIND>
<SYNTAX LOOK OVER OBJECT = V-LOOK-OVER>
<SYNTAX LOOK OBJECT = V-CHASTISE PRE-CHASTISE>
<VERB-SYNONYM LOOK L STARE>
<SYNTAX LOWER OBJECT = V-LOWER>
<SYNTAX LOWER OBJECT THROUGH OBJECT = V-PUT-THROUGH IDROP>
<SYNTAX LOWER OBJECT OUT OBJECT = V-PUT-THROUGH IDROP>
<SYNTAX MAKE OBJECT = V-MAKE>
<SYNTAX MAKE OBJECT OUT OBJECT = V-MAKE>
;<SYNTAX MAKE OBJECT TO OBJECT (FIND PERSON) = V-MAKE-LOVE>
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM) = V-MOVE>
<SYNTAX MOVE OBJECT WITH OBJECT = V-TAKE-WITH>
<SYNTAX MOVE OBJECT OFF OBJECT = V-TAKE PRE-TAKE>
<SYNTAX MOVE OBJECT UNDER OBJECT = V-PUT-UNDER PRE-PUT>
<SYNTAX MOVE AROUND OBJECT (FIND RLANDBIT) = V-WALK-AROUND>
<SYNTAX MOVE ON OBJECT = V-BOARD>
<SYNTAX MOVE BACK OBJECT = V-BEND>
<SYNTAX PULL OBJECT = V-PULL>
<SYNTAX PULL ON OBJECT = V-BEND>
<SYNTAX PULL OUT OBJECT = V-BEND>
<SYNTAX PULL BACK OBJECT = V-BEND>
<SYNTAX PULL OUT OBJECT WITH OBJECT = V-TAKE-WITH>
<SYNTAX PULL UP OBJECT (ON-GROUND IN-ROOM) = V-RAISE>
<SYNTAX WIDEN OBJECT = V-BEND>
<VERB-SYNONYM WIDEN SPREAD STRETCH>
<SYNTAX NO = V-NO>
<SYNTAX OPEN OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM) = V-OPEN>
<SYNTAX OPEN UP OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-OPEN>
<SYNTAX OPEN OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT (ON-GROUND IN-ROOM HELD CARRIED HAVE) = V-OPEN>
<VERB-SYNONYM OPEN PART DRAW>
<SYNTAX PAY OBJECT = V-BUY>
<SYNTAX PAY FOR OBJECT = V-BUY ;PRE-BUY>
<SYNTAX PAY FOR OBJECT WITH OBJECT = V-BUY-OBJECT-WITH>
<SYNTAX PAY OBJECT (MANY HELD HAVE) TO OBJECT (FIND PERSON) ;(ON-GROUND)
= V-GIVE PRE-GIVE>
<SYNTAX PAY OBJECT (FIND PERSON) WITH OBJECT (HELD HAVE)
= V-SGIVE>
<SYNTAX PAY WITH OBJECT = V-BUY-WITH>
<SYNTAX POINT AT OBJECT = V-POINT>
<SYNTAX POINT TO OBJECT = V-POINT>
<SYNTAX PICK OBJECT = V-PICK>
<SYNTAX PICK OBJECT WITH OBJECT = V-PICK>
<SYNTAX PICK UP OBJECT (FIND TAKEBIT) (ON-GROUND MANY) = V-PICK-UP PRE-TAKE>
<SYNTAX PLAY OBJECT = V-PLAY>
<SYNTAX POINT OBJECT = V-CLEAN>
<SYNTAX POINT AT OBJECT = V-POINT>
<SYNTAX POINT TO OBJECT = V-POINT>
<SYNTAX POINT OBJECT AT OBJECT = V-POINT>
<SYNTAX POINT OBJECT IN OBJECT = V-POINT>
<VERB-SYNONYM POINT SHINE>
;<SYNTAX POUR OBJECT (HELD CARRIED) = V-POUR>
;<SYNTAX POUR OUT OBJECT (HELD CARRIED) = V-POUR>
<SYNTAX POUR OBJECT (HELD CARRIED) IN OBJECT = V-POUR>
<SYNTAX POUR OUT OBJECT (HELD CARRIED) IN OBJECT = V-POUR>
<SYNTAX POUR OBJECT (HELD CARRIED) ON OBJECT = V-POUR>
<SYNTAX POUR OBJECT (HELD CARRIED) AT OBJECT = V-POUR>
<SYNTAX POUR OBJECT (HELD CARRIED) FROM OBJECT = V-POUR>
<SYNTAX POUR OBJECT (HELD CARRIED) OUT OBJECT = V-POUR>
<VERB-SYNONYM POUR SPILL>
<SYNTAX PUSH OBJECT = V-PUSH>
<SYNTAX PUSH UP OBJECT = V-RAISE>
<SYNTAX PUSH ON OBJECT (IN-ROOM ON-GROUND) = V-PUSH>
;<SYNTAX PUSH OFF OBJECT (FIND RLANDBIT) = V-PUSH-OFF>
<SYNTAX PUSH OBJECT UNDER OBJECT = V-PUT-UNDER PRE-PUT>
<SYNTAX PUSH OBJECT IN OBJECT = V-PUSH>
<SYNTAX PUSH OVER OBJECT = V-TOPPLE>
<VERB-SYNONYM PUSH PRESS TRIP>
<SYNTAX PUT OBJECT TO OBJECT = V-TIE>
<SYNTAX PUT OBJECT (HELD MANY) IN OBJECT = V-PUT PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY) DOWN OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY) ON OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY) AROUND OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY) OVER OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY) ACROSS OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX PUT DOWN OBJECT (HELD MANY HAVE) = V-DROP IDROP>
<SYNTAX PUT IN OBJECT = V-PLUG-IN>
<SYNTAX PUT OBJECT UNDER OBJECT = V-PUT-UNDER PRE-PUT>
<SYNTAX PUT ON OBJECT (FIND WEARBIT) = V-WEAR>
<SYNTAX PUT BACK OBJECT = V-REPLACE>
<SYNTAX PUT OBJECT = V-REPLACE>
<SYNTAX PUT OBJECT BEHIND OBJECT = V-PUT-BEHIND>
<SYNTAX PUT OBJECT THROUGH OBJECT = V-PUT-THROUGH IDROP>
<SYNTAX PUT OBJECT OUT OBJECT = V-PUT-THROUGH IDROP>
<SYNTAX PUT OUT OBJECT = V-OFF>
<VERB-SYNONYM PUT PLUG STUFF INSERT STICK PLACE LAY REPLACE>
<SYNTAX RAISE OBJECT = V-RAISE>
<SYNTAX RAISE UP OBJECT = V-RAISE>
;<SYNTAX RAISE OBJECT TO OBJECT = V-RAISE>
<VERB-SYNONYM RAISE LIFT>
<SYNTAX REACH IN OBJECT (ON-GROUND IN-ROOM) = V-REACH-IN>
<SYNTAX REACH UNDER OBJECT (ON-GROUND IN-ROOM) = V-REACH-IN>
<SYNTAX REACH FOR OBJECT = V-TOUCH>
<SYNTAX REACH OBJECT = V-TOUCH>
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-READ PRE-READ>
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
THROUGH OBJECT = V-EXAMINE-THROUGH PRE-READ>
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
WITH OBJECT = V-EXAMINE-THROUGH PRE-READ>
;<SYNTAX READ OBJECT (FIND READBIT) ON OBJECT = V-READ PRE-READ>
<VERB-SYNONYM READ SKIM>
<SYNTAX REMOVE OBJECT (FIND WORNBIT) = V-REMOVE>
<SYNTAX REMOVE OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY)
FROM OBJECT = V-TAKE PRE-TAKE>
<VERB-SYNONYM REMOVE SHED UNWRAP>
<SYNTAX RIP OBJECT (HAVE) = V-RIP>
<SYNTAX RIP UP OBJECT (HAVE) = V-RIP>
<VERB-SYNONYM RIP TEAR SHRED>
<SYNTAX SAVE OBJECT = V-SAVE-SOMETHING>
<SYNTAX SAY = V-SAY>
<SYNTAX SCORE = V-SCORE>
<SYNTAX SEARCH OBJECT = V-SEARCH>
<SYNTAX SEARCH IN OBJECT = V-SEARCH>
<SYNTAX SEARCH FOR OBJECT = V-FIND>
<SYNTAX SEARCH THROUGH OBJECT = V-SEARCH>
<VERB-SYNONYM SEARCH RUMMAGE FRISK>
<SYNTAX SHAKE OBJECT = V-SHAKE>
<SYNTAX SHAKE OBJECT WITH OBJECT = V-SHAKE-WITH>
<SYNTAX SHOOT OBJECT = V-SHOOT>
<SYNTAX SHOOT AT OBJECT = V-SHOOT>
<SYNTAX SHOOT OBJECT AT OBJECT = V-SHOOT-FLIP>
<SYNTAX SHOOT OBJECT WITH OBJECT = V-SHOOT>
<VERB-SYNONYM SHOOT FIRE>
<SYNTAX SHOW OBJECT (HELD MANY) TO OBJECT (FIND PERSON) = V-SHOW>
<SYNTAX SHOW OBJECT (FIND PERSON) OBJECT (HELD MANY) = V-SSHOW>
<SYNTAX SIGN OBJECT = V-SIGN>
<SYNTAX SIT ON OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX SIT DOWN OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-SIT>
<SYNTAX SIT IN OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX SIT AT OBJECT (ON-GROUND IN-ROOM) = V-SIT>
<VERB-SYNONYM SIT REST SQUAT>
<SYNTAX SKIP = V-SKIP>
<VERB-SYNONYM SKIP HOP>
<SYNTAX SLEEP = V-SLEEP>
<SYNTAX SLEEP IN OBJECT (IN-ROOM ON-GROUND) = V-BOARD PRE-BOARD>
<SYNTAX SLEEP ON OBJECT (IN-ROOM ON-GROUND) = V-BOARD PRE-BOARD>
<VERB-SYNONYM SLEEP DOZE NAP>
<SYNTAX SLICE OBJECT WITH OBJECT (CARRIED HELD) = V-CUT>
<SYNTAX SLICE THROUGH OBJECT WITH OBJECT (CARRIED HELD) = V-CUT>
<SYNTAX SLICE DOWN OBJECT WITH OBJECT (CARRIED HELD) = V-CUT>
<VERB-SYNONYM SLICE CUT CHOP>
<SYNTAX SLIDE OBJECT = V-PUSH>
<SYNTAX SLIDE DOWN OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX SLIDE OBJECT IN OBJECT = V-PUT PRE-PUT>
<SYNTAX SLIDE OBJECT THROUGH OBJECT = V-PUT PRE-PUT>
<SYNTAX SLIDE OBJECT UNDER OBJECT = V-PUT-UNDER PRE-PUT>
<SYNTAX SMELL OBJECT = V-SMELL ;PRE-SMELL>
<VERB-SYNONYM SMELL SNIFF>
<SYNTAX SMILE = V-SMILE>
<SYNTAX SMILE AT OBJECT = V-SMILE>
<SYNTAX SPIN OBJECT = V-SPIN>
<VERB-SYNONYM SPIN WHIRL>
<SYNTAX STAND = V-STAND>
<SYNTAX STAND UP OBJECT (FIND RLANDBIT) = V-STAND>
<SYNTAX STAND ON OBJECT = V-STAND-ON>
<SYNTAX STAND IN OBJECT = V-STAND-ON>
<SYNTAX STAND BEHIND OBJECT = V-HIDE-BEHIND>
<VERB-SYNONYM STAND RISE>
<SYNTAX START OBJECT = V-ON>
<SYNTAX START OBJECT OBJECT = V-ON-2>
<VERB-SYNONYM START ACTIVATE>
<SYNTAX STOP OBJECT = V-OFF>
<SYNTAX STOP OBJECT OBJECT = V-OFF-2>
<VERB-SYNONYM STOP DEACTIVATE>
<SYNTAX RESET OBJECT = V-RESET>
<VERB-SYNONYM RESET ZERO>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (ON-GROUND IN-ROOM MANY) = V-TAKE PRE-TAKE>
<SYNTAX TAKE IN OBJECT (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
<SYNTAX TAKE ON OBJECT (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
<SYNTAX TAKE UP OBJECT (FIND RLANDBIT) = V-STAND>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM MANY) OUT OBJECT
= V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM MANY) OFF OBJECT
= V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY) FROM OBJECT
= V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY) IN OBJECT
= V-TAKE PRE-TAKE>
<SYNTAX TAKE OFF OBJECT = V-TAKE-OFF>
<SYNTAX TAKE OUT OBJECT (ON-GROUND) = V-DISEMBARK>
<SYNTAX TAKE DOWN OBJECT (ON-GROUND) = V-DISEMBARK>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) WITH OBJECT = V-TAKE-WITH>
<SYNTAX TAKE UNDER OBJECT = V-CRAWL-UNDER>
<SYNTAX TAKE BEHIND OBJECT = V-HIDE-BEHIND>
<VERB-SYNONYM TAKE GET GRAB CATCH ;HOLD CARRY>
<SYNTAX TALK TO OBJECT (FIND PERSON) (IN-ROOM) = V-TELL>
<VERB-SYNONYM TALK SPEAK>
<SYNTAX TAP OBJECT = V-TOUCH>
<SYNTAX TAP ON OBJECT = V-KNOCK>
<SYNTAX TELL OBJECT (FIND PERSON) (IN-ROOM) = V-TELL>
<SYNTAX TELL OBJECT (FIND PERSON) ABOUT OBJECT = V-TELL-ABOUT>
<SYNTAX TELL OBJECT OBJECT = V-STELL>
<VERB-SYNONYM TELL WARN>
<SYNTAX THANKS OBJECT = V-THANK>
<SYNTAX THANKS = V-THANK>
<VERB-SYNONYM THANKS THANK>
<SYNTAX THROW OBJECT (HELD CARRIED) = V-THROW IDROP>
;<SYNTAX THROW OBJECT (HELD CARRIED) OVERBOARD OBJECT (FIND RLANDBIT)
= V-THROW-OVERBOARD IDROP>
<SYNTAX THROW OBJECT (HELD CARRIED) IN OBJECT = V-PUT PRE-PUT>
<SYNTAX THROW OBJECT (HELD CARRIED) UP OBJECT (FIND RLANDBIT) = V-THROW IDROP>
<SYNTAX THROW OBJECT (HELD CARRIED) AT OBJECT (ON-GROUND IN-ROOM)
= V-THROW IDROP>
<SYNTAX THROW OBJECT (HELD CARRIED) TO OBJECT (ON-GROUND IN-ROOM)
= V-THROW IDROP>
<SYNTAX THROW OBJECT (HELD CARRIED) OFF OBJECT = V-THROW-OFF IDROP>
<SYNTAX THROW OBJECT (HELD CARRIED) OVER OBJECT = V-THROW-OFF IDROP>
<SYNTAX THROW OBJECT (HELD CARRIED) THROUGH OBJECT (ON-GROUND IN-ROOM)
= V-PUT-THROUGH IDROP>
<SYNTAX THROW OBJECT (HELD CARRIED) OUT OBJECT = V-PUT-THROUGH IDROP>
<SYNTAX THROW OUT OBJECT = V-DISPOSE>
<VERB-SYNONYM THROW HURL TOSS>
<SYNTAX TIE OBJECT (HELD) TO OBJECT = V-TIE>
<SYNTAX TIE OBJECT (HELD) ON OBJECT = V-TIE>
<SYNTAX TIE OBJECT (HELD) AROUND OBJECT = V-TIE>
<SYNTAX TIE TOGETHER OBJECT = V-TIE-TOGETHER>
<SYNTAX TIE OBJECT WITH OBJECT (HELD) = V-TIE-FLIP>
<VERB-SYNONYM TIE FASTEN SECURE ATTACH CONNECT>
<SYNTAX TOUCH OBJECT = V-TOUCH>
<SYNTAX TOUCH OBJECT WITH OBJECT = V-TOUCH>
<SYNTAX TOUCH OBJECT ON OBJECT = V-TOUCH>
<VERB-SYNONYM TOUCH FEEL POKE>
<SYNTAX TURN OBJECT = V-SET>
<SYNTAX TURN AROUND OBJECT ;(FIND RLANDBIT) = V-SET>
<SYNTAX TURN OBJECT TO OBJECT = V-SET>
<SYNTAX TURN OBJECT WITH OBJECT (HAVE) = V-SET>
<SYNTAX TURN IN OBJECT TO OBJECT = V-SET>
<SYNTAX TURN ON OBJECT = V-ON>
<SYNTAX TURN OFF OBJECT = V-OFF>
<VERB-SYNONYM TURN SET SWITCH FLIP FLICK TOGGLE>
<SYNTAX UNLOCK OBJECT = V-UNLOCK PRE-LOCK>
<SYNTAX UNLOCK OBJECT WITH OBJECT (HAVE) = V-UNLOCK PRE-LOCK>
<SYNTAX UNTIE OBJECT (ON-GROUND IN-ROOM HELD CARRIED) = V-UNTIE>
<VERB-SYNONYM UNTIE FREE UNFASTEN UNATTACH>
<SYNTAX USE OBJECT = V-USE>
<SYNTAX WAIT = V-WAIT>
<SYNTAX WAIT OBJECT = V-$WAIT>
<SYNTAX WAIT FOR OBJECT = V-WAIT-FOR>
<SYNTAX WAIT IN OBJECT = V-WAIT-IN>
<SYNTAX WAIT ON OBJECT = V-WAIT-IN>
<VERB-SYNONYM WAIT Z>
<SYNTAX WAKE OBJECT (FIND RLANDBIT) = V-ALARM>
<SYNTAX WAKE UP OBJECT (FIND RLANDBIT) = V-ALARM>
<VERB-SYNONYM WAKE AWAKE ROUSE>
<SYNTAX CROSS OBJECT = V-CROSS>
<SYNTAX WALK = V-WALK-AROUND>
<SYNTAX WALK OBJECT = V-WALK>
<SYNTAX WALK IN OBJECT = V-ENTER>
<SYNTAX WALK OUT OBJECT = V-ENTER>
<SYNTAX WALK ACROSS OBJECT = V-ENTER>
<SYNTAX WALK ON OBJECT = V-STAND-ON>
<SYNTAX WALK OVER OBJECT = V-ENTER> ;"formerly V-LEAP"
<SYNTAX WALK THROUGH OBJECT = V-ENTER>
<SYNTAX WALK AROUND OBJECT (FIND RLANDBIT) = V-WALK-AROUND>
<SYNTAX WALK UNDER OBJECT = V-CRAWL-UNDER>
<SYNTAX WALK BEHIND OBJECT = V-HIDE-BEHIND>
<SYNTAX WALK UP OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-UP>
<SYNTAX WALK DOWN OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX WALK TO OBJECT = V-WALK-TO>
<SYNTAX WALK AWAY OBJECT (FIND RLANDBIT) = V-LEAVE>
<VERB-SYNONYM WALK RUN PROCEED>
<SYNTAX WASH OBJECT = V-CLEAN>
<SYNTAX WASH UP OBJECT (FIND RLANDBIT) = V-CLEAN>
<SYNTAX WASH UP OBJECT WITH OBJECT = V-CLEAN>
<SYNTAX WASH OBJECT WITH OBJECT = V-CLEAN>
<VERB-SYNONYM WASH CLEAN TIDY WIPE BRUSH>
<SYNTAX WAVE OBJECT (HELD CARRIED) = V-WAVE>
<SYNTAX WAVE = V-WAVE-AT>
<SYNTAX WAVE AT OBJECT = V-WAVE-AT>
<SYNTAX WAVE TO OBJECT = V-WAVE-AT>
<SYNTAX WEAR OBJECT (FIND WEARBIT) (TAKE) = V-WEAR>
<VERB-SYNONYM WEAR DON>
<SYNTAX WHAT = V-WHAT>
<SYNTAX WHAT OBJECT = V-WHAT>
<VERB-SYNONYM WHAT WHATS WHAT\'S>
<SYNTAX WHERE = V-WHERE>
<SYNTAX WHERE OBJECT = V-WHERE>
<VERB-SYNONYM WHERE WHERES WHERE\'S>
<SYNTAX WHO = V-WHO>
<SYNTAX WHO OBJECT = V-WHO>
<VERB-SYNONYM WHO WHOS>
<SYNTAX WHY = V-WHY>
<SYNTAX WRAP OBJECT IN OBJECT (HELD MANY) = V-SPUT-ON>
;<SYNTAX WRAP OBJECT (HELD MANY) ON OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX WRAP OBJECT (HELD MANY) AROUND OBJECT = V-PUT-ON PRE-PUT>
;<SYNTAX WRAP OBJECT (HELD MANY) OVER OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX YELL = V-YELL>
<SYNTAX YELL AT OBJECT = V-YELL>
<SYNTAX YELL TO OBJECT = V-YELL>
<VERB-SYNONYM YELL SCREAM SHOUT>
<SYNTAX OIL OBJECT = V-OIL>
<VERB-SYNONYM OIL LUBRICATE>
<SYNTAX YES = V-YES>
<VERB-SYNONYM YES Y OK OKAY>
<SYNTAX WATCH OBJECT = V-WATCH>
<SYNTAX WATCH OBJECT THROUGH OBJECT = V-EXAMINE-THROUGH PRE-READ>
<VERB-SYNONYM WATCH OBSERVE>
<SYNTAX HINT = V-HINT>
<SYNTAX HINT OFF OBJECT (FIND RLANDBIT) = V-HINTS-OFF>
<VERB-SYNONYM HINT HINTS CLUE>
;<SYNTAX $DOGS = I-DOGS>
;<SYNTAX $CAR = V-$CAR>
<SYNTAX $ISL = V-$ISL>
<VERB-SYNONYM $ISL $REFRESH>
;<SYNTAX $DEBUG = V-$DEBUG>
;<SYNTAX $XY = V-$XY>
;<SYNTAX $DIAGNOSE = V-$DIAGNOSE>
;<SYNTAX $REAL = V-$REAL>
<SYNTAX SLOW = V-SLOW-TIME>
<SYNTAX FAST = V-FAST-TIME>
;<SYNTAX $CLOCK = V-$CLOCK>
<SYNTAX LOAD OBJECT = V-LOAD>
<SYNTAX LOAD OBJECT WITH OBJECT = V-LOAD>
<SYNTAX LOAD OBJECT IN OBJECT = V-SLOAD>
<SYNTAX REWIND OBJECT = V-REWIND>
<SYNTAX REWIND UP OBJECT = V-REWIND>
<VERB-SYNONYM REWIND WIND UNWIND UNROLL>
<SYNTAX PHOTOGRAPH OBJECT = V-PHOTOGRAPH>
<SYNTAX PHOTOGRAPH OBJECT WITH OBJECT = V-PHOTOGRAPH>
;<SYNTAX $SCENARIO OBJECT = V-$SCENARIO>
;<VERB-SYNONYM $SCENARIO $SCENE>
<SYNTAX FOLD OBJECT = V-FOLD>
<SYNTAX FOLD UP OBJECT = V-FOLD>
<VERB-SYNONYM FOLD CRUMPLE>
<SYNTAX UNFOLD OBJECT = V-UNFOLD>
<VERB-SYNONYM UNFOLD UNCRUMPLE>
<SYNTAX SURRENDER = V-SURRENDER>
<SYNTAX BRIBE OBJECT = V-BRIBE>
<SYNTAX BRIBE OBJECT WITH OBJECT = V-BRIBE>
<SYNTAX WET OBJECT = V-WET>
<VERB-SYNONYM WET SOAK>
;<SYNTAX $SUSPICION OBJECT = V-$SUSPICION>
;<SYNTAX $SUSPICION = V-$SUSPICION>
;<SYNTAX $CONTACT = V-$CONTACT>
;<SYNTAX $WINDOW = PRINT-OPEN-WINDOWS>
<GLOBAL READ-CLOCK 30>
;<SYNTAX $WATCH = V-$WATCH>
<SYNTAX STACK OBJECT = V-STACK>
<SYNTAX STACK UP OBJECT = V-STACK>
<VERB-SYNONYM STACK PILE>
<SYNTAX PAUSE = V-PAUSE>
<ROUTINE V-PAUSE ()
<TELL "Pausing... Press any key to continue...">
<INPUT 1>
<CRLF>
<SETG CLOCK-MOVE 0>
<RTRUE>>

255
verbs.zabstr Normal file
View file

@ -0,0 +1,255 @@
<GLOBAL VERBOSITY 1>
<DEFINE-ROUTINE V-VERBOSE>
<DEFINE-ROUTINE V-BRIEF>
<DEFINE-ROUTINE V-SUPER-BRIEF>
<GLOBAL SAVE-FLAG <>>
<DEFINE-ROUTINE V-SAVE>
<DEFINE-ROUTINE V-RESTORE>
<DEFINE-ROUTINE V-SCRIPT>
<DEFINE-ROUTINE V-UNSCRIPT>
<DEFINE-ROUTINE TRANSCRIPT>
<DEFINE-ROUTINE V-DIAGNOSE>
<DEFINE-ROUTINE V-INVENTORY>
<DEFINE-ROUTINE V-QUIT>
<DEFINE-ROUTINE V-RESTART>
<DEFINE-ROUTINE DO-YOU-WISH>
<DEFINE-ROUTINE YES?>
<DEFINE-ROUTINE YES-WORD?>
<DEFINE-ROUTINE FINISH>
<DEFINE-ROUTINE V-VERSION>
<CONSTANT D-RECORD-ON 4>
<CONSTANT D-RECORD-OFF -4>
<DEFINE-ROUTINE V-$RANDOM>
<DEFINE-ROUTINE V-$ID>
<DEFINE-ROUTINE V-$VERIFY>
<CONSTANT SERIAL 0>
<DEFINE-ROUTINE V-ADVANCE>
<DEFINE-ROUTINE V-ALARM>
<DEFINE-ROUTINE V-ANSWER>
<DEFINE-ROUTINE V-ARREST>
<DEFINE-ROUTINE V-ASK-ABOUT>
<DEFINE-ROUTINE V-ASK-FOR>
<DEFINE-ROUTINE V-BITE>
<DEFINE-ROUTINE V-BEND>
<DEFINE-ROUTINE PRE-BOARD>
<DEFINE-ROUTINE V-BOARD>
<DEFINE-ROUTINE V-BUY>
<DEFINE-ROUTINE V-BUY-WITH>
<DEFINE-ROUTINE V-BUY-OBJECT-WITH>
<DEFINE-ROUTINE V-CALL>
<DEFINE-ROUTINE V-CHASTISE>
<DEFINE-ROUTINE PRE-CHASTISE>
<DEFINE-ROUTINE V-CLEAN>
<DEFINE-ROUTINE V-CLIMB-NUL>
<DEFINE-ROUTINE V-CLIMB>
<DEFINE-ROUTINE V-CLIMB-DOWN>
<DEFINE-ROUTINE V-CLIMB-ON>
<DEFINE-ROUTINE V-CLIMB-OVER>
<DEFINE-ROUTINE V-CLIMB-UP>
<DEFINE-ROUTINE V-CLOSE>
<DEFINE-ROUTINE V-COUNT>
<DEFINE-ROUTINE V-CRAWL-UNDER>
<DEFINE-ROUTINE V-CUT>
<DEFINE-ROUTINE V-DIG>
<DEFINE-ROUTINE V-DISEMBARK>
<DEFINE-ROUTINE V-DRINK>
<DEFINE-ROUTINE V-DRINK-FROM>
<DEFINE-ROUTINE V-DROP>
<DEFINE-ROUTINE SPECIAL-DROP>
<DEFINE-ROUTINE V-EAT>
<DEFINE-ROUTINE V-EMPTY>
<DEFINE-ROUTINE V-ENTER>
<DEFINE-ROUTINE V-EXAMINE>
<DEFINE-ROUTINE V-EXAMINE-THROUGH-FLIP>
<DEFINE-ROUTINE V-EXAMINE-THROUGH>
<DEFINE-ROUTINE V-EXIT>
<DEFINE-ROUTINE V-FEED>
<DEFINE-ROUTINE V-FILL>
<DEFINE-ROUTINE V-FIND>
<DEFINE-ROUTINE V-FLUSH>
<DEFINE-ROUTINE V-FOLLOW>
<DEFINE-ROUTINE PRE-GIVE>
<DEFINE-ROUTINE V-GIVE>
<DEFINE-ROUTINE V-HELLO>
<DEFINE-ROUTINE V-HIDE>
<DEFINE-ROUTINE V-HIDE-BEHIND>
<DEFINE-ROUTINE V-HOLD>
<DEFINE-ROUTINE V-IN>
<DEFINE-ROUTINE V-INFLATE>
<DEFINE-ROUTINE V-KICK>
<DEFINE-ROUTINE V-KILL>
<DEFINE-ROUTINE V-KISS>
<DEFINE-ROUTINE V-KNOCK>
<DEFINE-ROUTINE V-LEAP>
<DEFINE-ROUTINE V-LEAP-OFF>
<DEFINE-ROUTINE V-LEAVE>
<DEFINE-ROUTINE V-LIE-DOWN>
<DEFINE-ROUTINE V-LISTEN>
<DEFINE-ROUTINE PRE-LOCK>
<DEFINE-ROUTINE V-LOCK>
<DEFINE-ROUTINE V-LOOK>
<DEFINE-ROUTINE V-LOOK-BEHIND>
<DEFINE-ROUTINE V-LOOK-DOWN>
<DEFINE-ROUTINE WHAT-CONTENTS>
<DEFINE-ROUTINE V-LOOK-INSIDE>
<DEFINE-ROUTINE V-LOOK-OVER>
<DEFINE-ROUTINE V-LOOK-UNDER>
<DEFINE-ROUTINE V-LOOK-UP>
<DEFINE-ROUTINE V-LOWER>
<DEFINE-ROUTINE V-MAKE>
<DEFINE-ROUTINE V-MOVE>
<DEFINE-ROUTINE V-MUNG>
<DEFINE-ROUTINE V-NO>
<DEFINE-ROUTINE V-RESET>
<DEFINE-ROUTINE V-OFF-2>
<DEFINE-ROUTINE V-OFF>
<DEFINE-ROUTINE V-ON-2>
<DEFINE-ROUTINE V-ON>
<DEFINE-ROUTINE CANT-TURN>
<DEFINE-ROUTINE V-OPEN>
<DEFINE-ROUTINE V-PICK>
<DEFINE-ROUTINE V-PICK-UP>
<DEFINE-ROUTINE V-PLAY>
<DEFINE-ROUTINE V-PLUG-IN>
<DEFINE-ROUTINE V-POINT>
<DEFINE-ROUTINE V-POUR>
<DEFINE-ROUTINE V-PUSH>
<DEFINE-ROUTINE PRE-PUT>
<DEFINE-ROUTINE V-PUT>
<DEFINE-ROUTINE V-PUT-BEHIND>
<DEFINE-ROUTINE V-PUT-ON>
<DEFINE-ROUTINE V-PUT-THROUGH>
<DEFINE-ROUTINE V-PUT-UNDER>
<DEFINE-ROUTINE V-RAISE>
<DEFINE-ROUTINE V-REACH-IN>
<DEFINE-ROUTINE PRE-READ>
<DEFINE-ROUTINE V-READ>
<DEFINE-ROUTINE V-REMOVE>
<DEFINE-ROUTINE V-RIP>
<DEFINE-ROUTINE V-SAVE-SOMETHING>
<DEFINE-ROUTINE V-SAY>
<DEFINE-ROUTINE V-SCORE>
<DEFINE-ROUTINE V-SEARCH>
<DEFINE-ROUTINE V-SET>
<DEFINE-ROUTINE V-SGIVE>
<DEFINE-ROUTINE V-SHAKE>
<DEFINE-ROUTINE V-SHAKE-WITH>
<DEFINE-ROUTINE V-SHOW>
<DEFINE-ROUTINE V-SIGN>
<DEFINE-ROUTINE V-SIT>
<DEFINE-ROUTINE V-SKIP>
<DEFINE-ROUTINE V-SLEEP>
<DEFINE-ROUTINE V-SMELL>
<DEFINE-ROUTINE V-SMILE>
<DEFINE-ROUTINE V-SPIN>
<DEFINE-ROUTINE V-SPUT-ON>
<DEFINE-ROUTINE V-SSHOW>
<DEFINE-ROUTINE V-STAND>
<DEFINE-ROUTINE V-STAND-ON>
<DEFINE-ROUTINE V-STELL>
<DEFINE-ROUTINE PRE-TAKE>
<DEFINE-ROUTINE V-TAKE>
<DEFINE-ROUTINE V-TAKE-OFF>
<DEFINE-ROUTINE V-TELL>
<DEFINE-ROUTINE V-TELL-ABOUT>
<DEFINE-ROUTINE V-THANK>
<DEFINE-ROUTINE V-THROW>
<DEFINE-ROUTINE V-THROW-OFF>
<DEFINE-ROUTINE V-TIE>
<DEFINE-ROUTINE V-TIE-FLIP>
<DEFINE-ROUTINE V-TIE-TOGETHER>
<DEFINE-ROUTINE V-TOUCH>
<DEFINE-ROUTINE V-UNLOCK>
<DEFINE-ROUTINE V-UNTIE>
<DEFINE-ROUTINE V-USE>
<DEFINE-ROUTINE V-WALK>
<DEFINE-ROUTINE V-WALK-AROUND>
<DEFINE-ROUTINE V-WALK-TO>
<DEFINE-ROUTINE V-WAIT>
<DEFINE-ROUTINE V-$WAIT>
<DEFINE-ROUTINE V-WAIT-FOR>
<DEFINE-ROUTINE V-WAIT-IN>
<DEFINE-ROUTINE V-WAVE>
<DEFINE-ROUTINE V-WAVE-AT>
<DEFINE-ROUTINE V-WEAR>
<DEFINE-ROUTINE V-WHAT>
<DEFINE-ROUTINE V-WHERE>
<DEFINE-ROUTINE V-WHO>
<DEFINE-ROUTINE V-WHY>
<DEFINE-ROUTINE V-YELL>
<DEFINE-ROUTINE V-YES>
<DEFINE-ROUTINE ITAKE>
<DEFINE-ROUTINE IDROP>
<DEFINE-ROUTINE CCOUNT>
<DEFINE-ROUTINE WEIGHT>
<CONSTANT REXIT 0>
<CONSTANT UEXIT 2>
<CONSTANT NEXIT 3>
<CONSTANT FEXIT 4>
<CONSTANT SEXIT 5>
<CONSTANT DEXIT 6>
<CONSTANT NEXITSTR 0>
<CONSTANT FEXITFCN 0>
<CONSTANT SEXITSTR 1>
<CONSTANT SEXITFLG 4>
<CONSTANT DEXITOBJ 1>
<CONSTANT DEXITSTR 2>
<GLOBAL MOVE-FORCED <>>
<DEFINE-ROUTINE GOTO>
<DEFINE-ROUTINE BACKTRACK?>
<GLOBAL DONT-DESCRIBE-ROOM <>>
<DEFINE-ROUTINE JIGS-UP>
<DEFINE-ROUTINE BOMB-IN-TOWER?>
<DEFINE-ROUTINE ACCESSIBLE?>
<DEFINE-ROUTINE VISIBLE?>
<DEFINE-ROUTINE META-LOC>
<DEFINE-ROUTINE OTHER-SIDE>
<DEFINE-ROUTINE ULTIMATELY-IN?>
<DEFINE-ROUTINE HELD?>
<DEFINE-ROUTINE SEE-INSIDE?>
<DEFINE-ROUTINE GLOBAL-IN?>
<DEFINE-ROUTINE FIND-IN>
<DEFINE-ROUTINE DIRECTION?>
<DEFINE-ROUTINE LOC-CLOSED>
<DEFINE-ROUTINE DO-WALK>
<DEFINE-ROUTINE STOP>
<DEFINE-ROUTINE HACK-HACK>
<GLOBAL HO-HUM <LTABLE 0 " won't help you." " is useless, or worse."
" can have no desirable effect.">>
<GLOBAL YUKS <LTABLE 0 "What a concept!" "That's ridiculous!" "Not a chance!">>
<DEFINE-ROUTINE IMPOSSIBLES>
<GLOBAL IMPOSSIBLE-LIST <LTABLE 0 "Don't even consider it!"
"The strain is showing!" "That's impossible!" "Try to think more rationally!">>
<DEFINE-ROUTINE WASTES>
<GLOBAL WASTE-LIST <LTABLE 0
"That's a waste of time, and you haven't much left." "Stop wasting time."
"There's another few seconds down the drain.">>
<DEFINE-ROUTINE V-WATCH>
<DEFINE-ROUTINE V-SHOOT-FLIP>
<DEFINE-ROUTINE V-SHOOT>
<DEFINE-ROUTINE V-OIL>
<DEFINE-ROUTINE V-TAKE-WITH>
<DEFINE-ROUTINE V-LOAD>
<DEFINE-ROUTINE V-SLOAD>
<DEFINE-ROUTINE V-REPLACE>
<DEFINE-ROUTINE V-PHOTOGRAPH>
<DEFINE-ROUTINE V-REWIND>
<DEFINE-ROUTINE V-CROSS>
<DEFINE-ROUTINE V-FOLD>
<DEFINE-ROUTINE V-UNFOLD>
<DEFINE-ROUTINE V-SURRENDER>
<DEFINE-ROUTINE V-DISPOSE>
<DEFINE-ROUTINE V-WET>
<DEFINE-ROUTINE V-BRIBE>
<DEFINE-ROUTINE V-TOPPLE>
<DEFINE-ROUTINE V-STRANGLE>
<DEFINE-ROUTINE V-HINTS-OFF>
<DEFINE-ROUTINE V-HIT>
<DEFINE-ROUTINE V-STACK>
<DEFINE-ROUTINE FLUSH-BAD-SCENARIO>
<DEFINE-ROUTINE V-SLOW-TIME>
<DEFINE-ROUTINE V-FAST-TIME>
<DEFINE-ROUTINE V-PULL>

2058
verbs.zil Normal file

File diff suppressed because it is too large Load diff