plunderedhearts/ship.zil
historicalsource b5a28ce803 Final Revision
2019-04-14 00:38:42 -04:00

3019 lines
89 KiB
Plaintext

"SHIP for
PLUNDERED HEARTS
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
<OBJECT SHIP
(IN GLOBAL-OBJECTS)
(DESC "Helena Louise")
(SYNONYM BOAT SHIP LOUISE)
(ADJECTIVE HELENA PIRATE)
(GENERIC GEN-BOAT)
(ACTION SHIP-F)>
<ROUTINE SHIP-F ()
<COND (<VERB? EXAMINE>
<COND (<SHIP-BOARD ,HERE>
;<OR <SHIP-BOARD ,HERE>
;<EQUAL? ,HERE ,CABIN ,DEUX-DECK>>
<V-LOOK>)
(<EQUAL? ,HERE ,CABIN ,DEUX-DECK>
<COND (<OR <ADJ-USED ,A?HELENA>
<NOUN-USED ,W?LOUISE ,SHIP>>
<PERFORM ,V?LOOK-INSIDE ,WINDOW>
<RTRUE>)
(T
<V-LOOK>)>)
(<OR <EQUAL? ,HERE ,CELL-1 ,CELL-2>
<EQUAL? ,HERE ,LAFS-ROOM ,BEACH ,LAGOON ,SHALLOWS>>
<COND (<FSET? ,SHIP ,MUNGBIT>
<TELL ,YOU-CANT
"see" T ,SHIP " anywhere, but a lot of debris floats in the lagoon" ,PCR>)
(T
<TELL
CTHE ,SHIP " floats, silent
and serene, some distance out in the lagoon" ,PCR>)>)
(T
<TELL ,YOU-CANT "see" T ,SHIP " from here." CR>)>)
(<VERB? POINT>
<COND (<NOT ,PRSI>
<PROPOSE>)
(T
<RFALSE>)>)
(<AND <VERB? PUT>
<PRSO? ,TRAY ,MIRROR>>
<IMPOSSIBLES>)>>
<ROUTINE GEN-BOAT ()
<COND (<GLOBAL-IN? ,OBJ-QUARTERS ,HERE>
<RETURN ,OBJ-QUARTERS>)
(<EQUAL? <LOC ,SKIFF> ,HERE>
<RETURN ,SKIFF>)
(T
<RETURN ,SHIP>)>>
<OBJECT DEBRIS
(IN LOCAL-GLOBALS)
(DESC "debris")
(DESCFCN DEBRIS-F)
(SYNONYM DEBRIS WOOD REMAINS SAIL)
(ADJECTIVE PLANK HUMAN CANVAS FLESH)
(FLAGS PLURALBIT NARTICLEBIT TRYTAKEBIT)
(ACTION DEBRIS-F)>
<ROUTINE DEBRIS-F ()
<COND ;(.OARG
<COND (<EQUAL? .OARG ,M-DESC?>
<RTRUE>)>
<TELL ,INDENT <PICK-ONE ,DEBRIS-BITS>>
<COND (<EQUAL? ,HERE ,BEACH ,SHALLOWS>
<TELL "bobs in the waves briefly.">)
(T
<TELL "floats by you.">)>)
(<NOT <FSET? ,SHIP ,MUNGBIT>>
<TELL ,YOU-CANT-SEE-ANY D ,DEBRIS " here!" CR>)
(<VERB? EXAMINE SEARCH LOOK-INSIDE>
<TELL ,INDENT <PICK-ONE ,DEBRIS-BITS>>
<COND (<EQUAL? ,HERE ,BEACH ,SHALLOWS>
<TELL "bobs briefly in the waves.">)
(T
<TELL "floats by you.">)>
<CRLF>
;<TELL
"Large planks of wood, cloth, and human remains appear to
be all that is left of" TR ,SHIP>)
(<VERB? TAKE>
<TELL
"You reconsider, thinking of" T ,SHIP " as it was, whole and proud." CR>)>>
<GLOBAL DEBRIS-BITS
<LTABLE
0
"A plank of wood "
"Some bloodied flesh "
"A bit of canvas sail ">>
<ROUTINE SHIP-BOARD (RM)
<COND ;(<NOT <FSET? .RM ,LIGHTBIT>> <RTRUE>)
(<OR <EQUAL? .RM ,CAPT-QUARTERS ,LANDING ,SLEEPING-CUPBOARD>
<EQUAL? .RM ,AFT-HOLD ,HOLD ,CREWS-QUARTERS>
<EQUAL? .RM ,POOP ,QUARTERDECK ,MAIN-DECK>
<EQUAL? .RM ,FOCSLE ,GALLEY ,BOWSPRIT ,CROWS-NEST>
<EQUAL? .RM ,BY-SHIP ,ON-LADDER ,RIGGING-ROOM>>
<RTRUE>)
(T <RFALSE>)>>
<ROUTINE INNER-DECK (RM) ;"All inner rooms of the ship"
<COND (<OR <EQUAL? .RM ,SLEEPING-CUPBOARD ,LANDING ,AFT-HOLD>
<EQUAL? .RM ,HOLD ,CREWS-QUARTERS ,GALLEY>>
<RTRUE>)
(T <RFALSE>)>>
<ROOM CABIN
(IN ROOMS)
(DESC "Cabin")
(LDESC
"You are in an officer's cabin, lit by the firelight glowing
through a porthole. A door is to starboard. Except for the built-in bed,
the room seems to have been emptied thoroughly, if hurriedly.")
(EAST PER CABIN-EXIT)
(OUT PER CABIN-EXIT)
;(SYNONYM LAFOND DEUX)
(GLOBAL WINDOW DOOR OBJ-QUARTERS)
(FLAGS ONBIT RLANDBIT INDOORSBIT NARTICLEBIT)>
<OBJECT CABIN-BED
(IN CABIN)
(DESC "bed")
(SYNONYM BED)
(FLAGS VEHBIT NDESCBIT CONTBIT SEARCHBIT SURFACEBIT OPENBIT)
(CAPACITY 100)
(ACTION BED-F)>
<ROUTINE CABIN-EXIT ()
<COND (<IN? ,HERO ,HERE>
<COND (<G? ,HERO-CTR 3>
<DEQUEUE I-MEET-HERO>
<DEQUEUE I-PIRATE-ATTACK>
<TELL
,CTHE-PIRATE-CAPTAIN "follows you through" TR ,DOOR CR>
<RETURN ,DEUX-DECK>)
(T
<TELL ,SINEWY-ARM CR>
<RFALSE>)>)
(<IN? ,HERO ,DEUX-DECK>
<RETURN ,DEUX-DECK>)
(<IN? ,CRULLEY ,HERE>
<TELL
"\"Not that way, me pretty,\" says" T ,CRULLEY ", blocking your way" ,PCR>
;<COND (<NOT <FSET? ,CRULLEY ,DEADBIT>>
<TELL
"\"Not that way, me pretty,\" says" T ,CRULLEY>)
(T
<TELL
"You hesitate to step over the body">)>
;<TELL " blocking your way" ,PCR>
<RFALSE>)
(T
<TELL CTHE ,DOOR ,IS-CLOSED ,PCR>
<THIS-IS-IT ,DOOR>
<RFALSE>)>>
<ROOM DEUX-DECK
(IN ROOMS)
(DESC "Deck")
(IN "\"It's not safe down there,\" the Falcon calls.")
(DOWN "\"It's not safe down there,\" the Falcon calls.")
(NORTH "The Falcon follows a step behind.")
(SOUTH "The Falcon follows a step behind.")
(EAST "The Falcon follows a step behind.")
(WEST "\"It's not safe down there,\" the Falcon calls.")
(GLOBAL OBJ-QUARTERS CREW FIRE)
(FLAGS ONBIT RLANDBIT NARTICLEBIT)
(ACTION DEUX-DECK-F)>
<ROUTINE DEUX-DECK-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<MOVE ,HERO ,HERE>
<TELL
"The deck is an avalanche of noise and blood. Lit by roaring fires,
silhouetted forms crash swords, dancing around the screaming wounded."
;"A flood of freed slaves is sweeping up from the hold, yelling in
savage tongues as their black bodies join the skirmish.">)
;(<AND <EQUAL? .RARG ,M-BEG>
<VERB? EXAMINE>
<PRSO? ,SHIP>>
<PERFORM ,V?LOOK>
<RTRUE>)
(<EQUAL? .RARG ,M-ENTER>
<QUEUE I-END-PROLOGUE 1>)
(T <RFALSE>)>>
<OBJECT COFFER
(IN CABIN)
(DESC "coffer")
(SYNONYM COFFER CHEST LOCK BOX)
(ADJECTIVE SMALL METAL HEAVY)
(CAPACITY 15)
(SIZE 10)
(FLAGS NDESCBIT CONTBIT SEARCHBIT LOCKEDBIT)
(ACTION COFFER-F)>
<ROUTINE COFFER-F ()
<COND (<VERB? EXAMINE>
<TELL "It is a small heavy chest, with a ">
<COND (<FSET? ,COFFER ,MUNGBIT>
<TELL "smashed ">)>
<TELL "lock. It is">
<TELL-OPEN/CLOSED ,PRSO>
<TELL ".|">)
(<VERB? TAKE>
<COND (<PRSO? ,COFFER>
<COND (<NOT <FSET? ,COFFER ,NDESCBIT>>
<FSET ,COFFER ,TAKEBIT>
<DEQUEUE I-COFFER>
<MOVE ,COFFER ,PROTAGONIST>
<FCLEAR ,COFFER ,NDESCBIT>
<TELL "Taken." CR>)
(T
<TELL ,HUH>)>)
(T
<RFALSE>)>)
;(<VERB? TAKE>
<COND (<AND <NOT <FSET? ,COFFER ,NDESCBIT>>
<PRSO? ,COFFER>>
;<FCLEAR ,COFFER ,TRYTAKEBIT>
<FSET ,COFFER ,TAKEBIT>
<DEQUEUE I-COFFER>
<MOVE ,COFFER ,PROTAGONIST>
<FCLEAR ,COFFER ,NDESCBIT>
<TELL "Taken." CR>)
(T
<TELL ,HUH>)>)
(<AND <VERB? MUNG>
<PRSO? ,WINDOW>>
<PERFORM ,V?PUT-THROUGH ,COFFER ,WINDOW>
<RTRUE>)
(<VERB? BOARD STAND-ON>
<TELL CTHE ,COFFER " is too small to stand on." CR>)
(<AND <VERB? SHAKE>
<FSET? ,COFFER ,LOCKEDBIT>>
<TELL "It seems to be full of small, heavy objects" ,PCR>)
;(<VERB? LOOK-INSIDE SEARCH>
<COND (<FSET? ,PRSO ,OPENBIT>
<PERFORM ,V?SEARCH ,DOCUMENTS>
<RTRUE>)>)>>
<OBJECT LETTER
(DESC "missive" ;"letter")
(SYNONYM PAPER LETTER MISSIVE)
(FLAGS TAKEBIT)
(ACTION LETTER-F)>
<ROUTINE LETTER-F ()
<COND (<VERB? READ EXAMINE>
<TELL CTHE ,LETTER
" is in dear Papa's handwriting:|
|
\"Dearest child,|
You are in gravest danger! Lafond is a viper with the smile of a
saint, my most particular enemy. I have only now learned the depth of
his deception. Should Lafond get you in his power... It is unspeakable!|
I have sided with Nicholas Jamison, a sea captain and a gentleman,
whose circumstances have driven him to extreme measures, even branding
him a pirate. Nevertheless, I trust him and so may you.|
You will be safe -- but there is another for whom I fear! My horse is
waiting and I ride to her rescue. Jamison will deliver this to you.
Should anything happen to me, you must rely on him. I remain,
with love," T ,DAD ".\"" CR CR>
;<TELL
"The letter is in dear Papa's handwriting, addressed to " D ,ME ":|
|
\"I have just learned that Lafond has sent for you, telling
you that I am ill. I am not, and you are sailing into great danger.
Despite his claim to be my 'good friend,' Lafond is no friend of
mine! He is a tyrant and a viper, running a vast fleet of
pirate ships.|
I, with a young captain named Jamison, am outlawed for pirating the
demon's ships -- which is the only way to bleed his thieving organization
and return stolen goods to their rightful owners. Now he has you --
oh, my child, what have I done? He will hold you ransom for our lives!|
My horse is waiting. I ride now to Lafond's mansion to demand he
free you. I give this missive to my ally.\"" CR CR>)>>
<OBJECT INVITE
(IN COFFER)
(DESC "invitation")
(SYNONYM INVITE CARD INVITATION)
(ADJECTIVE LARGE WHITE)
(FLAGS TAKEBIT VOWELBIT)
(ACTION INVITE-F)>
;["Similar to the card taken by" T ,HERO ","]
;<COND (<NOT <FSET? ,INVITE ,EVERYBIT>>
<FSET ,INVITE ,EVERYBIT>
<TELL ,INDENT
"Davis must have carried two, for some reason." CR>)
(T
<RTRUE>)>
<ROUTINE INVITE-F ()
<COND (<VERB? READ EXAMINE>
<TELL
CTHE ,INVITE " is addressed to \"Davis\":||
In Honor of Jean Lafond,|
recently proclaimed|
Governor of " D ,ISLAND "|
A Dance at his Mansion|
Ananas Road, " D ,ISLAND "|
Formal Dress and Invitation Required" ,PCR CR>
<COND (<NOT <FSET? ,INVITE ,MUNGBIT>>
<FSET ,INVITE ,MUNGBIT>
<TELL
,INDENT "A ball! You haven't been to a ball in months!" CR>)
(T
<RFALSE>)>)
;(<AND <VERB? SHOW GIVE>
<PRSI? ,BUTLER>>
<I-BUTLER T>)
(<AND <VERB? SSHOW SGIVE>
<PRSO? ,BUTLER>>
<PERFORM ,V?GIVE ,INVITE ,BUTLER>
<RTRUE>)>>
<ROUTINE I-COFFER ()
<COND (<NOT <HELD? ,COFFER>>
<FCLEAR ,COFFER ,NDESCBIT>
<FSET ,COFFER ,TAKEBIT>
<THIS-IS-IT ,COFFER>
;<FCLEAR ,COFFER ,TRYTAKEBIT>
<TELL ,INDENT
"Suddenly, the ship lurches to one side, throwing you ">
<COND (<EQUAL? <LOC ,PROTAGONIST> ,CABIN-BED>
<MOVE ,PROTAGONIST ,HERE>
<TELL "out of the bed. ">)
(T
<TELL "off balance. ">)>
<COND (<FSET? ,COFFER ,TOUCHBIT>
<TELL CTHE ,COFFER>)
(T <TELL
"A " D ,COFFER " slides from under the bed and">)>
<TELL " bumps against your foot." CR>)
(T
<RFALSE>)>>
<ROOM CAPT-QUARTERS
(IN ROOMS) ;"MUNGBIT = typed first look text"
(DESC "Captain's Quarters")
(UP PER CLIMBING)
;(DOWN PER CLIMBING)
(NORTH PER CURTAIN-EXIT)
(SOUTH PER WINDOW-EXIT)
(GLOBAL CURTAIN WINDOW DESK DOOR SEA LADDER OBJ-QUARTERS)
(FLAGS ONBIT RLANDBIT INDOORSBIT NARTICLEBIT)
(ACTION CAPT-QUARTERS-F)>
<ROUTINE CAPT-QUARTERS-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<COND (<IN? ,LEDGE ,ON-LADDER>
<MOVE ,LEDGE ,CAPT-QUARTERS>)
(<NOT <FSET? ,CAPT-QUARTERS ,TOUCHBIT>>
<MOVE ,PROTAGONIST ,CAPT-BED>
<SETG HERO-CTR 0>
<QUEUE I-HSHIP 2>
<TELL
"TWO DAYS LATER" ,ELLIPSIS>
<TELL ,INDENT
"You blear awake from a bored nap, focusing on something shiny. You
discern it to be" A ,HRING ", on a strong hand in the act of tying a ribbon
onto" AR ,RAPIER ,INDENT
"The man with" T ,RAPIER " and the ring turns, \"Sorry, I tried not to
wake you.\" You sit up as if the bed had caught fire, for this is the
Falcon, changed from his rags to a finery all red velvet and white lace -- and
in your presence!" CR CR>)
(T
<RFALSE>)>)
(<EQUAL? .RARG ,M-LOOK>
<COND (<NOT <FSET? ,HERE ,MUNGBIT>>
<FSET ,HERE ,MUNGBIT>
<TELL
"You are in the captain's " D ,OBJ-QUARTERS " of the " D ,SHIP ", where
you have been trapped these past days since your \"rescue\" from the
Lafond Deux. ">)>
<TELL
"The room has a masculine air, with ebony panelling, a large messy table,
and a rumpled bed">
<COND (<EQUAL? <LOC ,PROTAGONIST> ,CAPT-BED>
<TELL " (upon which you lie)">)>
<TELL ". A curtain masks the forward exit and ">
<COND (<FSET? ,LEDGE ,MUNGBIT>
<TELL "air breezes in over the ledge">)
(T
<TELL
"gilded woodwork decorates the sill of the tall window looking">)>
<TELL " aft.">
;<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
<TELL CR ,INDENT CTHE ,COFFER " from the other ship
sits on the table, smashed open and emptied of its valuable contents.
The pirates had, with much argument, divvied up the jewels found
inside just this afternoon.">)
(T
<RTRUE>)>
;<I-LOOK-SEA <>>)>>
<GLOBAL LADDER-HANGING <>> ;"Is the ladder swinging from Poop?"
<ROUTINE I-HERO-TO-ISLAND ()
<COND (<EQUAL? ,HERE ,CAPT-QUARTERS>
<TELL ,INDENT
"Men clomp about overhead and a rope ladder unfurls itself past the window.
Jamison climbs down it, entering" T ,SKIFF " that awaits him below.
He rows to the island as the men above " D ,HEAD " disperse, calling
farewells to their captain" ,PCR>)>
<SETG SKIFF-LOC 1>
<SETG SKIFF-TIED <>>
<REMOVE ,HERO>
;<MOVE ,LADDER ,CAPT-QUARTERS>
<SETG LADDER-HANGING T>
<QUEUE I-SEE-LADDER -1>>
<ROUTINE I-SEE-LADDER ()
<COND (<EQUAL? ,HERE ,CAPT-QUARTERS>
<QUEUE I-SEE-LADDER -1>
<COND (<PROB 40>
<TELL ,INDENT "The end of a rope ladder blows ">
<COND (<EQUAL? <LOC ,PROTAGONIST>
,CAPT-BED ,CAPT-QUARTERS>
<TELL "past the window.">)
(T ;"(Not on the LEDGE)"
<TELL "by.">)>
<CRLF>)>)
(T
<DEQUEUE I-SEE-LADDER>)>>
<OBJECT DESK
(IN LOCAL-GLOBALS)
(DESC "desk")
(SYNONYM DESK TABLE)
(ADJECTIVE MESSY)
(FLAGS NDESCBIT SURFACEBIT CONTBIT)
(ACTION PAPERS-F)>
<ROUTINE PAPERS-F ()
<UNIMPORTANT-THING>>
<ROOM ON-LADDER
(IN ROOMS)
(DESC "On the Ladder")
(IN PER LADDER-EXIT)
(NORTH PER LADDER-EXIT)
;(UP PER CLIMBING-LADDER)
(UP PER CLIMBING)
;(DOWN PER CLIMBING-LADDER)
(DOWN PER CLIMBING)
(GLOBAL LADDER SEA OBJ-QUARTERS PSEUD-SKIFF)
(FLAGS ONBIT NARTICLEBIT)
(ACTION ON-LADDER-F)>
<ROUTINE ON-LADDER-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<MOVE ,LEDGE ,HERE>
<DEQUEUE I-SEE-LADDER>)
(<AND <EQUAL? .RARG ,M-BEG>
<OR <VERB? LEAP LEAP-OFF>
<AND <VERB? DROP>
<PRSO? ,LADDER>>>>
<DO-WALK ,P?DOWN>)
(<EQUAL? .RARG ,M-LOOK>
<TELL
"You are clinging to a slimy ladder,
tied to a rail of the poop deck above you. Not far from your feet,">
<COND (,SKIFF-TIED
<TELL A ,SKIFF " bobs in the water">)
(T
<TELL " waves kiss the stern of the ship">)>
<COND (<NOT <FSET? ,ON-LADDER ,TOUCHBIT>>
<TELL
". The ladder twists under your weight">)>
<TELL ".">)>>
<OBJECT OBJ-QUARTERS
(IN LOCAL-GLOBALS)
(DESC "quarters")
(SYNONYM QUARTE SHIP CABIN)
(ADJECTIVE CAPTAIN)
(GENERIC GEN-BOAT)
;(FLAGS NDESCBIT)
(ACTION OBJ-QUARTERS-F)>
<ROUTINE OBJ-QUARTERS-F ()
<COND (<VERB? EXAMINE>
<COND (<AND <NOUN-USED ,W?QUARTE ,OBJ-QUARTERS>
<EQUAL? ,HERE ,POOP ,LANDING>>
<TELL "Why don't you go there and look?" CR>)
(T
<V-LOOK>)>)
(<VERB? BOARD CLIMB ENTER>
<COND (<EQUAL? ,HERE ,DEUX-DECK ,ON-LADDER>
<DO-WALK ,P?IN>)
(T
<RFALSE>)>)>>
<GLOBAL BLOWING-LADDER-C 0>
<GLOBAL UP-CTR 0>
<GLOBAL SKIFF-TIED T>
;<ROUTINE ;CLIMBING-LADDER () ;"This is an EXIT-FCN"
<COND (<EQUAL? ,P-WALK-DIR ,P?UP>
<COND (<FSET? ,HOOPS ,WORNBIT>
<TELL ,YOU-CANT
"get a foothold because the hoops of
your dress keep pushing away" TR ,LADDER>
<RFALSE>)
(<AND <FSET? ,DRESS ,WORNBIT>
<NOT <FSET? ,HOOPS ,WORNBIT>>>
<TELL
"Every attempt you make to climb the ladder, you
end up tripping on your " D ,DRESS ,PCR>
<RFALSE>)
(<NOT ,LADDER-HANGING>
<TELL "There's no way to go up!" CR>
<RFALSE>)
(<NOT <FSET? ,POOP ,TOUCHBIT>>
<SETG UP-CTR <+ ,UP-CTR 1>>
<COND (<NOT <EQUAL? ,UP-CTR 5>>
<TELL "You climb up" T ,LADDER>
<COND (<EQUAL? ,UP-CTR 3>
<TELL ", passing the halfway point">)>
<TELL ,PCR>
<RFALSE>)
(T
<TELL ,INDENT
"You heave " D ,ME " over the stern rail
and sink breathlessly to the deck of" TR ,SHIP CR>
<DEQUEUE I-LADDER-BLOWS>
<RETURN ,POOP>)>)
(<EQUAL? ,HERE ,BY-SHIP>
<DEBARK-SKIFF>
<RFALSE>)
(T
<TELL
"This time, you find the climb to the deck quite easy" ,PCR CR>
<RETURN ,POOP>)>)
(<EQUAL? ,P-WALK-DIR ,P?DOWN>
<COND (<EQUAL? ,HERE ,POOP>
<TELL
"You scamper down the ladder until you are opposite the ledge" ,PCR CR>
<RETURN ,ON-LADDER>)
(,SKIFF-TIED
<SETG SKIFF-TIED <>>
<TELL
"Freeing your feet from the rungs, you slide down
the wet rope to the skiff, and quickly untie it from the ship" ,PCR CR>
<RETURN ,BY-SHIP>)
(T
<TELL
"Letting loose your grip on your sanity as well
as on the rope ladder, you plummet into the sea. ">
<COND (,BOY-DRESS?
<JIGS-UP
"Flailing about in the water just tires you.">)
(T
<JIGS-UP
"Your skirts, until sodden, hold you above water.
Then they carry you down into the depths.">)>)>)>>
<ROUTINE I-LADDER-BLOWS ()
<SETG BLOWING-LADDER-C <+ ,BLOWING-LADDER-C 1>>
<COND (<L? ,BLOWING-LADDER-C 2>
<RTRUE>)>
<TELL ,INDENT> ;"here to avoid indent in SUPERBRIEF on 2"
<COND (<EQUAL? ,BLOWING-LADDER-C 2 5>
<TELL
"All air is driven out of you as" T ,LADDER " slams into the stern." CR>)
(<EQUAL? ,BLOWING-LADDER-C 3 6>
<TELL
"Rebounding," T ,LADDER " twists you around to face" TR ,SHIP>)
(<EQUAL? ,BLOWING-LADDER-C 4>
<TELL "The ladder swings back towards" TR ,SHIP>)
(<EQUAL? ,BLOWING-LADDER-C 7> ;"used to be 9"
<JIGS-UP
"Your battered hands can take no more. Your grip loosens
and the sea comes up to break your fall.">)>>
;(<EQUAL? ,BLOWING-LADDER-C 2 8>
<TELL "You bang against the stern and bounce away again.">)
;(<EQUAL? ,BLOWING-LADDER-C 4 8>
<TELL
CTHE ,LADDER " swings out to one side,
granting you a brief glimpse of the island">)
;(<EQUAL? ,BLOWING-LADDER-C 5>
<TELL CTHE ,LADDER " bounces out and away from ship again">)
;(<EQUAL? ,BLOWING-LADDER-C 5 10>
<TELL
"You slide back behind the ship, scraping the backs of
" D ,HANDS "s against it as they grip the ladder">)
<ROUTINE LADDER-EXIT ("OPTIONAL" (CRUFTY-KLUDGE <>))
<DEQUEUE I-LADDER-BLOWS>
<TELL
"You pull " D ,ME " over" T ,LEDGE ", tumbling head over heels
into Jamison's " D ,OBJ-QUARTERS ,PCR CR>
<COND (.CRUFTY-KLUDGE
<GOTO ,CAPT-QUARTERS>)
(T
<RETURN ,CAPT-QUARTERS>)>>
<ROUTINE CURTAIN-EXIT ()
<COND (<IN? ,HERO ,HERE>
<TELL ,SINEWY-ARM CR>
<RFALSE>)
(<EQUAL? <LOC ,PROTAGONIST> ,LEDGE>
<RETURN ,CAPT-QUARTERS>)
(T
<COND (<NOT <FSET? ,LANDING ,TOUCHBIT>>
<TELL
CTHE ,CUPBOARD-OBJECT ,ISNT-FLUSH>)>
<TELL "You">
;<COND (<FSET? ,HOOPS ,WORNBIT>
<TELL
"Flattening" T ,HOOPS " from chin to heel, you manage to">)
(T
<TELL "You">)>
<TELL ,SQUEEZE-THRU ,PCR CR>
<COND (<EQUAL? ,P-WALK-DIR ,P?SOUTH>
<COND (,LADDER-HANGING
<QUEUE I-SEE-LADDER -1>)>
<FSET ,PILE-OF-CLOTHES ,NDESCBIT>
<MOVE ,CUPBOARD-OBJECT ,CAPT-QUARTERS>
<RETURN ,CAPT-QUARTERS>)
(T
<FCLEAR ,PILE-OF-CLOTHES ,NDESCBIT>
<MOVE ,CUPBOARD-OBJECT ,LANDING>
<DEQUEUE I-SEE-LADDER>
<RETURN ,LANDING>)>)>>
<ROUTINE WINDOW-EXIT ()
<PERFORM ,V?BOARD ,LEDGE>
<RFALSE>
;<COND (<NOT <FSET? ,LEDGE ,MUNGBIT>>
<TELL CTHE ,WINDOW " blocks your way." CR>
<RFALSE>)
(T
<PERFORM ,V?BOARD ,LEDGE>
<RFALSE>)>>
<OBJECT LEDGE
(IN CAPT-QUARTERS)
(DESC "ledge")
(SYNONYM LEDGE SILL)
(FLAGS NDESCBIT VEHBIT CONTBIT TRANSBIT SEARCHBIT OPENBIT)
(ACTION LEDGE-F)>
<ROUTINE LEDGE-F ("OPTIONAL" (VARG <>))
<COND (<EQUAL? .VARG ,M-BEG>
<COND (<AND <VERB? DISEMBARK CLIMB-DOWN TAKE-OFF>
<NOT <PRSO? ,LADDER ,DRESS ;,HOOPS>>>
<MOVE ,PROTAGONIST ,HERE>
<FSET ,LADDER ,TRYTAKEBIT>
<TELL "You clamber off the sill to safety." CR>)
(<OR <VERB? LEAP LEAP-OFF>
<AND <VERB? ENTER>
<PRSO? ,SEA>>>
<TELL ,SUICIDE>)
(<VERB? WALK>
<COND (<EQUAL? ,P-WALK-DIR ,P?NORTH>
<PERFORM ,V?DISEMBARK ,LEDGE>
<RTRUE>)
(<NOT <EQUAL? ,P-WALK-DIR ,P?UP>>
<DO-FIRST "get off" ,LEDGE>)
(T
<RFALSE>)>)
(T
<RFALSE>)>)
(.VARG
<RFALSE>)
(<VERB? EXAMINE>
<COND (<FSET? ,LEDGE ,MUNGBIT>
<TELL "Glass shards decorate" TR ,LEDGE>)
(T
<TELL
"Tall panes of glass are inset into" TR ,LEDGE>)>)
(<AND <VERB? MUNG>
<NOT ,PRSI>>
<PROPOSE>)
(<VERB? LEAP-OFF>
<COND (<FSET? ,LEDGE ,MUNGBIT>
<DO-FIRST "climb onto" ,LEDGE>)
(T
<TELL ,SUICIDE>)>)
(<VERB? BOARD CLIMB-ON DISEMBARK STAND-ON ENTER>
<COND (<EQUAL? ,HERE ,CAPT-QUARTERS>
<COND (<NOT <FSET? ,LEDGE ,MUNGBIT>>
<TELL
"The available ledge on this side of the window is
hardly deep enough to sit on" ,PCR>)
;(<FSET? ,HOOPS ,WORNBIT>
<TELL "Your hoops will not fit over" TR ,LEDGE>)
(T
<TELL "You climb onto the ledge. ">
;<COND (<ANYTHING-HELD>
<ROB ,PROTAGONIST ,CAPT-BED>
<TELL "lay everything on the bed and ">)>
;<TELL "climb onto the ledge. ">
<COND (<NOT <FSET? ,POOP ,TOUCHBIT>>
<FSET ,LADDER ,TAKEBIT>)>
<COND (,LADDER-HANGING
<QUEUE I-SEE-LADDER 2>
<TELL CTHE ,LADDER " drifts within reach.">)>
<CRLF>
<MOVE ,PROTAGONIST ,LEDGE>)>)
(<EQUAL? ,HERE ,ON-LADDER>
<LADDER-EXIT T>
<RTRUE>)>)>>
<ROUTINE GEN-BED ()
<RETURN ,CAPT-BED>>
<OBJECT CAPT-BED
(IN CAPT-QUARTERS)
(DESC "bed")
(SYNONYM BED)
(FLAGS VEHBIT NDESCBIT CONTBIT SEARCHBIT SURFACEBIT OPENBIT)
(GENERIC GEN-BED)
(CAPACITY 100)
(ACTION BED-F)>
<ROOM LANDING
(IN ROOMS)
(DESC "Landing")
(UP "The door at the top of the stairs won't open.")
(OUT "The door at the top of the stairs won't open.")
(IN PER CUPBOARD-EXIT)
(SOUTH PER CURTAIN-EXIT)
(DOWN TO AFT-HOLD)
(GLOBAL DOOR CURTAIN STAIRS CUPBOARD-OBJECT)
(FLAGS ONBIT RLANDBIT INDOORSBIT NARTICLEBIT)
(ACTION LANDING-F)>
<ROUTINE LANDING-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL "You are on the landing of a steep stairway
heading up and down. A " D ,CUPBOARD-OBJECT " against the aft wall
blocks the doorway to the captain's " D ,OBJ-QUARTERS ".">)
;(<EQUAL? .RARG ,M-BEG>
<COND (<AND <VERB? TAKE WEAR>
<PRSO? ,SHIRT ,PANTS>
<NOT <FSET? ,PRSO ,TOUCHBIT>>>
<CANT-REACH ,PILE>)
(T
<RFALSE>)>)>>
<ROOM SLEEPING-CUPBOARD
(IN ROOMS)
(DESC "Sleeping Cupboard")
(OUT PER CUPBOARD-EXIT)
(NORTH PER CUPBOARD-EXIT)
(FLAGS ONBIT RLANDBIT INDOORSBIT)
(GLOBAL DOOR)
(ACTION SLEEPING-CUPBOARD-F)>
<ROUTINE SLEEPING-CUPBOARD-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"The bed is softer than it looks, plumped up with fresh straw.
A soft, if somewhat cramped, bunk for the tall bulk of Jamison.
The cupboard opens to the fore.">)
(<EQUAL? .RARG ,M-BEG>
<COND (<AND <VERB? DISEMBARK>
<PRSO? ,CUPBOARD-OBJECT>>
<DO-WALK ,P?OUT>)
(T
<RFALSE>)>)>>
<ROUTINE CUPBOARD-EXIT ()
<COND (<NOT <FSET? ,CUPBOARD-OBJECT ,OPENBIT>>
<COND (<EQUAL? ,P-WALK-DIR ,P?IN>
<DO-FIRST "open" ,CUPBOARD-OBJECT>
<RFALSE>)
(T
<FSET ,CUPBOARD-OBJECT ,OPENBIT>
;<FSET ,SLEEPING-CUPBOARD ,ONBIT>
<TELL
"You open" T ,CUPBOARD-OBJECT " and clamber out" ,PCR CR>
<MOVE ,CUPBOARD-OBJECT ,LANDING>
<RETURN ,LANDING>)>)
(T
<COND (<EQUAL? ,P-WALK-DIR ,P?IN>
<COND (<IN? ,PILE-OF-CLOTHES ,CUPBOARD-OBJECT>
<MOVE ,PILE-OF-CLOTHES ,SLEEPING-CUPBOARD>)>
<MOVE ,CUPBOARD-OBJECT ,SLEEPING-CUPBOARD>
<RETURN ,SLEEPING-CUPBOARD>)
(T
<COND (<IN? ,PILE-OF-CLOTHES ,SLEEPING-CUPBOARD>
<MOVE ,PILE-OF-CLOTHES ,CUPBOARD-OBJECT>)>
<MOVE ,CUPBOARD-OBJECT ,LANDING>
<RETURN ,LANDING>)>)>>
<CONSTANT SQUEEZE-AROUND "You might be able to squeeze past it.|">
<OBJECT CUPBOARD-OBJECT
(IN CAPT-QUARTERS)
(DESC "large cupboard")
(SYNONYM CUPBOARD BED DOOR)
(FLAGS NDESCBIT DOORBIT CONTBIT SEARCHBIT INBIT)
(GENERIC GEN-BED)
(ACTION CUPBOARD-OBJECT-F)>
<ROUTINE CUPBOARD-OBJECT-F ()
<COND (<VERB? PUSH MOVE>
<TELL
CTHE ,CUPBOARD-OBJECT ,ISNT-FLUSH ,SQUEEZE-AROUND
;"It looks like you could squeeze around it.">)
(<AND <VERB? OPEN CLOSE>
<EQUAL? ,HERE ,CAPT-QUARTERS>>
<TELL CTHE ,DOOR " is on the other side of" TR ,CUPBOARD-OBJECT>)
(<VERB? EXAMINE LOOK-INSIDE SEARCH>
<COND (<EQUAL? ,HERE ,SLEEPING-CUPBOARD>
<V-LOOK>)
(<EQUAL? ,HERE ,CAPT-QUARTERS>
<TELL
,YOU-SEE ,THE-BACK T ,CUPBOARD-OBJECT ". " ,SQUEEZE-AROUND>)
(<FSET? ,CUPBOARD-OBJECT ,OPENBIT>
<TELL
"It is a dark messy bed, set entirely within and filling" T ,CUPBOARD-OBJECT
". A cabin boy must sleep here when Jamison isn't using it.">
<COND (<NOT <FSET? ,PILE-OF-CLOTHES ,TOUCHBIT>>
<TELL " " <GETP ,PILE-OF-CLOTHES ,P?FDESC>>)>
<CRLF>)
(T
<TELL "It" ,IS-CLOSED ,PCR>)>)
(<VERB? ENTER BOARD>
<COND (<EQUAL? ,HERE ,SLEEPING-CUPBOARD>
<TELL ,LOOK-AROUND>)
(<EQUAL? ,HERE ,CAPT-QUARTERS>
<TELL ,YOU-CANT-SEE-ANY ,WAY-TO-DO-THAT>)
(T
<DO-WALK ,P?IN>)>)
(<VERB? PUT>
<TELL
,YOULL-HAVE-TO "get in the " D ,CUPBOARD-OBJECT " to do that" ,PCR>)>>
<ROOM AFT-HOLD
(IN ROOMS)
(DESC "Aft Hold")
(LDESC
"This is a gloomy, damp area at the bottom of the Helena Louise. To the
fore there seems to be a little more light, or you can climb up some
steep stairs.")
(UP TO LANDING)
(NORTH TO HOLD)
(GLOBAL STAIRS)
(FLAGS ONBIT RLANDBIT INDOORSBIT NARTICLEBIT)>
<ROOM HOLD
(IN ROOMS)
(DESC "Hold")
(SYNONYM HOLD)
(UP PER HATCH-ENTRANCE)
(OUT PER HATCH-ENTRANCE)
(NORTH TO CREWS-QUARTERS)
(SOUTH TO AFT-HOLD)
(GLOBAL HATCH STAIRS)
(FLAGS ONBIT RLANDBIT NARTICLEBIT INDOORSBIT)
(ACTION HOLD-F)>
<GLOBAL FUSE-LIT <>>
<ROUTINE HOLD-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-ENTER>
<NOT <FSET? ,HERE ,TOUCHBIT>>
<NOT <FSET? ,POOP ,TOUCHBIT>>>
<TELL
"You hear a scuffling noise ahead, and scraping up near the ceiling.
You would think it was caused by rats, but for the definite curse you heard
before all the movement" ,PCR CR>)
(<AND <EQUAL? .RARG ,M-END>
,FUSE-LIT
<NOT <FSET? ,FUSE ,TOUCHBIT>>>
<DEQUEUE I-SMELL-SMOKE>
<I-SMELL-SMOKE>
<RFALSE>)
(<EQUAL? .RARG ,M-LOOK>
<HATCH-DESC>
<TELL
" above. Rats' scratchings counterpoint the lullaby of bilge water sloshing
in the bulkheads, punctuated by footsteps slapping the deck overhead.
You may move fore or aft.|
Behind a high fence, decorated by a sign, are stacked" T ,SUPPLIES ";
casks of rum, water, flour and salt meat interspersed with kegs of
gunpowder and shot. A closed gate is the only way in.">)>>
;"For the sailors unable to read the sign overhead, a high fence
guards the supplies. There is a closed mesh gate in the fence."
<OBJECT HATCH
(IN LOCAL-GLOBALS)
(DESC "canvas hatch")
(SYNONYM HATCH FRAME)
(ADJECTIVE CANVAS COVERED)
(FLAGS DOORBIT)
(ACTION HATCH-F)>
<ROUTINE HATCH-F ()
<COND (<VERB? EXAMINE>
<COND (<EQUAL? ,HERE ,HOLD>
<HATCH-DESC>
<TELL ,PCR>)
(T
<COND (<FSET? ,HATCH ,OPENBIT>
<TELL ,STEEP-STAIRS "into murky darkness." CR>)
(T
<TELL "Canvas stretches across" TR ,HATCH>)>)>)
(<VERB? LOOK-INSIDE>
<COND (<FSET? ,HATCH ,OPENBIT>
<PERFORM ,V?EXAMINE ,HATCH>
<RTRUE>)
(T
<TELL CTHE ,HATCH ,IS-CLOSED ,PCR>)>)
(<AND <VERB? OPEN>
<NOT <FSET? ,HATCH ,OPENBIT>>>
<COND (<EQUAL? ,HERE ,MAIN-DECK>
<FSET ,HATCH ,OPENBIT>
<TELL
"You pull a corner of canvas out of the frame. ">
<PERFORM ,V?EXAMINE ,HATCH>
<RTRUE>)
(T
<TELL ,YOU-CANT-SEE-ANY ,WAY-TO-DO-THAT>)>)>>
<ROUTINE HATCH-DESC ()
<COND (<FSET? ,HATCH ,OPENBIT>
<TELL
"Moonlight shines down the stairs through an open
corner of the canvas hatch">)
(T
<TELL
"Steep stairs lead up in the dimness to a canvas hatch">)>>
<OBJECT FENCE
(IN HOLD)
(DESC "fence")
(SYNONYM FENCE CAGE)
(ADJECTIVE MESH WIRE)
(FLAGS CONTBIT SEARCHBIT TRANSBIT NDESCBIT)
(ACTION FENCE-F)>
<ROUTINE FENCE-F ()
<COND (<VERB? LOOK-BEHIND LOOK-INSIDE>
<TELL
CTHE ,SUPPLIES " are kept locked behind the fence. ">
<COND (,FUSE-LIT
<PERFORM ,V?EXAMINE ,FUSE>
<RTRUE>)
(T
<CRLF>)>)
(<VERB? EXAMINE>
<TELL CTHE ,FENCE
" is made of thick, finely woven wire mesh, uncuttable and unclimbable.
Except for a gap of about 6 inches over the closed gate, the cage is
secure from ceiling to damp floorboards." CR>)
(<VERB? THROW-OVER>
<TELL "You'd best throw" T ,PRSO " over" TR ,GATE>)
(<VERB? CLIMB>
<TELL "You can't get a toehold in" TR ,FENCE>)
(<VERB? OPEN CLOSE>
<TELL
,YOULL-HAVE-TO "do that to the gate in" TR ,FENCE>)>>
<ROUTINE GATE-MADE-SAME (STR)
<TELL
"The gate is made of the same " .STR " wire as" T ,FENCE>>
<OBJECT GATE
(IN HOLD)
(DESC "gate")
(SYNONYM GATE GAP LOCK)
(ADJECTIVE IRON MESH)
(FLAGS LOCKEDBIT DOORBIT NDESCBIT)
(ACTION GATE-F)>
<ROUTINE GATE-F ()
<COND (<VERB? EXAMINE>
<TELL
"It has a huge iron lock. Between" T ,GATE " and the
ceiling, however, is a gap of about 6 inches." CR>)
(<AND <VERB? ENTER>
<NOUN-USED ,W?GAP ,GATE>>
<PERFORM ,V?CLIMB ,GATE>
<RTRUE>)
(<VERB? CLIMB CLIMB-OVER EXIT>
<GATE-MADE-SAME "finely woven">
<TELL ", and you cannot get a foothold" ,PCR>)
(<VERB? CUT>
<GATE-MADE-SAME "thick">
<TELL ,PCR>)
(<VERB? LOOK-BEHIND>
<PERFORM-PRSA ,FENCE>)
(<VERB? THROW-OVER>
;<COND (<PRSO? ,HOOPS>
<RFALSE>)>
<TELL "You throw">
<COND (<PRSO? ,RAG>
<REMOVE ,RAG>
<FCLEAR ,RAG ,TOUCHBIT>
<TELL T ,RAG " over the gate. ">
<COND (<NOT ,FUSE-LIT>
<TELL
"It falls to the floor amongst the food supplies" ,PCR>)
(<EQUAL? ,WET-RAG <>>
<TELL
"It flaps haplessly in the air, settling to the floor
not far from the burning fuse" ,PCR>
<RTRUE>)
(T
<TELL
"Luckily, it lands directly on the burning end of the fuse. ">
<COND (<EQUAL? ,WET-RAG ,RUM>
<QUEUE I-SHIP-EXPLODES 9>
<DEQUEUE I-TEAR-RAG>
<TELL
"Unluckily, it is soaked with flammable rum, and flares up, making the fuse
burn much faster. You have perhaps 3 minutes to live." CR>)
(<EQUAL? ,WET-RAG ,WATER>
<DEQUEUE I-SHIP-EXPLODES>
<DEQUEUE I-TEAR-RAG>
<SETG FUSE-LIT <>>
<FSET ,FUSE ,NDESCBIT>
;<REMOVE ,FUSE>
<SETG SCORE <+ ,SCORE 1>>
<TELL
"With a sputter and a sigh, the flame dies." CR>)>
<SETG WET-RAG <>>
<RTRUE>)>)
(<PRSO? ,DRESS>
<TELL T ,DRESS " up, ">
<COND (,WET-DRESS
;<FSET ,DRESS ,TRYTAKEBIT>
;<FSET ,DRESS ,NDESCBIT>
<MOVE ,DRESS ,HOLD>
<TELL
"its soaked skirt slapping " D ,HEAD ". Too heavy and bulky
to make it over the gate, it squelches to the floor nearby. A cold tear of "
D ,WET-DRESS " dribbles down the back of your neck" ,PCR>)
(T
<MOVE ,DRESS ,HERE>
<TELL
"but it billows out and catches on the
top of the gate. It floats to the floor near you" ,PCR>)>)
(T
<REMOVE ,PRSO>
<TELL T ,PRSO
" into the ammunition area. It skids into the darkness">
<COND (,FUSE-LIT
<TELL
", over the burning end of the fuse.
The fuse falters, spits and resumes burning">)>
<TELL ,PCR>)>)
(<AND <VERB? PUT PUT-THROUGH THROW>
<NOUN-USED ,W?GAP ,GATE>>
<PERFORM ,V?THROW-OVER ,PRSO ,GATE>
<RTRUE>)>>
<OBJECT SUPPLIES
(IN FENCE)
(DESC "food and ammunition supplies")
(SYNONYM FOOD AMMUNI GUNPOW)
(ADJECTIVE SUPPLIES)
(FLAGS NDESCBIT PLURALBIT)
(ACTION KEG-F)>
<OBJECT KEG
(IN HOLD)
(DESC "keg")
(SYNONYM KEG KEGS CASK CASKS)
(FLAGS TRYTAKEBIT NDESCBIT)
(ACTION KEG-F)>
<ROUTINE KEG-F ()
<COND (<OR <TOUCHING? ,KEG>
<TOUCHING? ,SUPPLIES>>
<CANT-REACH ,SUPPLIES>)>>
<OBJECT SIGN
(IN HOLD)
(DESC "sign")
(SYNONYM SIGN)
(FLAGS NDESCBIT)
(ACTION SIGN-F)>
<ROUTINE SIGN-F ()
<COND (<VERB? READ EXAMINE>
<TELL
"The sign proclaims \"Thieves be keel-hauled\" in uncertain lettering." CR>)>>
<ROUTINE I-SMELL-SMOKE ()
<COND (<NOT <QUEUED? I-SHIP-EXPLODES>>
<SETG FUSE-LIT T>
<FCLEAR ,FUSE ,NDESCBIT>
<QUEUE I-TEAR-RAG 85>)>
<COND (<AND <NOT <FSET? ,FUSE ,TOUCHBIT>>
<OR <AND <EQUAL? ,HERE ,MAIN-DECK>
<FSET? ,HATCH ,OPENBIT>>
<EQUAL? ,HERE ,HOLD>>>
<FSET ,FUSE ,TOUCHBIT>
<FCLEAR ,FUSE ,INVISIBLE>
<TELL ,INDENT
"You gradually notice a familiar, worrying smell,
sniff, and identify it as smoke. ">
<COND (<EQUAL? ,HERE ,MAIN-DECK>
<TELL "It appears to come from below decks." CR>)
(<EQUAL? ,HERE ,HOLD>
<TELL ,TINY-GLOW ,PCR>)>)>
<RFALSE>>
<ROUTINE I-TEAR-RAG ()
<QUEUE I-SHIP-EXPLODES 15>
<COND (<AND <NOT <LOC ,RAG>>
,FUSE-LIT>
<COND (<OR <FSET? ,DRESS ,WORNBIT>
<IN? ,DRESS ,PROTAGONIST>>
<COND (,WET-DRESS
<SETG WET-RAG T>)>
<FSET ,DRESS ,MUNGBIT>
<TELL ,INDENT "Your frock">)
(<IN? ,SHIRT ,PROTAGONIST>
<FSET ,SHIRT ,MUNGBIT>
<TELL ,INDENT "The tail of your shirt">)
(<NOT <FSET? ,CHEMISE ,EVERYBIT>>
<FSET ,CHEMISE ,MUNGBIT>
<TELL ,INDENT "Your chemise">)
(T
<RTRUE>)>
<MOVE ,RAG <LOC ,PROTAGONIST>>
<TELL
" suddenly catches on something, tearing the fabric.
A large scrap flutters to your feet." CR>)>>
<ROUTINE I-SHIP-EXPLODES ()
<COND (,FUSE-LIT
<FSET ,SHIP ,MUNGBIT>
<SETG SHIP-LOC 10>
;<MOVE ,DEBRIS ,BEACH>
;<MOVE ,DEBRIS ,LAGOON>
<DEQUEUE I-SHIP-EXPLODES>
<DEQUEUE I-TEAR-RAG>
<COND (<OR <SHIP-BOARD ,HERE>
<EQUAL? ,HERE ,BY-SHIP>>
<JIGS-UP
" Suddenly you appreciate what it is to be a ball in an exploding cannon.
The intense heat, the push of fire, and the sense of release when spit
from the cannon's mouth -- these you feel when the lighted fuse finally
burns up to the largest keg of gunpowder in the hold.">)
(<EQUAL? <LOC ,PROTAGONIST> ,SKIFF ,CASK ,BEACH>
<TELL ,INDENT "A huge wave ">
<COND (<EQUAL? ,HERE ,BEACH>
<TELL "rolls up the beach">)
(T
<TELL "rocks" T <LOC ,PROTAGONIST>>)>
<TELL
" as" T ,SHIP " explodes into flames across the lagoon" ,PCR>)
(T
<TELL ,INDENT
"You hear a noise like a huge explosion in the distance, and the ground shakes
beneath your feet. There should be good beachcombing tomorrow" ,PCR>)>)
(T
<RFALSE>)>>
;<OBJECT BENT-KEY
(IN HOLD)
(DESC "bent key")
(FDESC
"At the foot of the gate lies a key, one end bent back on itself.")
(SYNONYM KEY)
(ADJECTIVE BENT)
(FLAGS TAKEBIT)
(SIZE 2)>
<OBJECT FUSE
(IN HOLD)
(DESC "fuse")
(DESCFCN FUSE-F)
(SYNONYM FUSE GLOW FIRE)
(ADJECTIVE BURNING SLOW RED)
(FLAGS INVISIBLE ONBIT NDESCBIT)
(ACTION FUSE-F)>
<ROUTINE FUSE-F ("OPTIONAL" (OARG <>) "AUX" (C <>) (X <>))
<COND (.OARG
<COND (<EQUAL? .OARG ,M-DESC?>
<RTRUE>)>
<TELL ,INDENT ,TINY-GLOW ".">
;<COND (<AND ,FUSE-LIT
<FSET? ,FUSE ,TOUCHBIT>>
<TELL ,INDENT ,TINY-GLOW ".">)
(T
<RTRUE>)>)
(<AND <VERB? POUR PUT-ON>
<PRSO? ,RAG ,DRESS>>
<PROPOSE>)
(<VERB? MOVE TAKE>
<CANT-REACH ,FUSE>)
(<OR <VERB? ON OFF POUR PUT-ON CUT>
<TOUCHING? ,FUSE>>
<TELL ,YOU-ARENT "anywhere near" T ,FUSE "!" CR>)
(<VERB? EXAMINE>
<COND (,FUSE-LIT
<TELL "The burning fuse is ">
<COND (<SET C <QUEUED? ,I-SHIP-EXPLODES>>
<SET X <- 15 <GET .C ,C-TICK>>>
<COND (<G? .X 12>
<TELL
"boring a hole through the largest powder keg" ,PCR>
<RTRUE>)
(<G? .X 7>
<TELL "mere inches">)
(T ;<G? .X 85>
<TELL "only a foot">)>)
(T
<SET C <QUEUED? ,I-TEAR-RAG>>
<SET X <- 85 <GET .C ,C-TICK>>>
<COND (<G? .X 70>
<TELL "a few feet">)
(<G? .X 60>
<TELL "several feet">)
(<G? .X 45>
<TELL "a few yards">)
(T
<TELL
"quite near the fence, several yards">)>)>
<TELL
" from the pile of gunpowder kegs opposite" TR ,GATE>
;<TELL "[X=" N .X ", TICK=" N ,C-TICK "]" CR>)
(T
<TELL ,YOU-SEE ,DARKNESS TR ,FENCE>
;<TELL ,YOU-CANT
"see" T ,FUSE " in the darkness beyond" TR ,FENCE>)>)
(<AND <VERB? THROW THROW-OVER THROW-AT>
<PRSO? ,RAG ,DRESS>>
<PERFORM ,V?THROW-OVER ,PRSO ,GATE>
<RTRUE>)>>
<ROOM CREWS-QUARTERS
(IN ROOMS)
(DESC "Crew's Quarters")
(UP "A grate blocks your way.")
(SOUTH TO HOLD)
(FLAGS ONBIT RLANDBIT ;NARTICLEBIT INDOORSBIT)
(GLOBAL GRATE)
(ACTION CREWS-QUARTERS-F)>
<ROUTINE CREWS-QUARTERS-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-ENTER>
<NOT ,HEARD-CRULLEY>>
<QUEUE I-OVERHEAR-CRULLEY 2>)
(<EQUAL? .RARG ,M-LOOK>
<TELL
"The crew sleeps, in shifts, in this cramped space under the forecastle.
A breeze blows in on a moonbeam through a grate in the ceiling.
A low doorsill is abaft.|" ,INDENT>
<COND (<NOT <FSET? ,MESS ,TOUCHBIT>>
<FSET ,MESS ,TOUCHBIT>
<TELL "This area must also serve as sickroom. ">)>
<TELL
"Strewn about the floor are various powders and spills of malodorous potions.
In one corner, a large blood stain indicates an amputation; in another is the
smear of a leech, dropped off a bloodletting.">)>>
<OBJECT MESS
(IN CREWS-QUARTERS)
(DESC "mess")
(SYNONYM MESS POWDER POTIONS STAINS)
(FLAGS NDESCBIT)>
<OBJECT GRATE
(IN LOCAL-GLOBALS)
(DESC "grate")
(SYNONYM GRATE HOLE)
(ADJECTIVE AIR)
(ACTION GRATE-F)>
<ROUTINE GRATE-F ()
<COND (<VERB? LOOK-INSIDE>
<COND (<EQUAL? ,HERE ,CREWS-QUARTERS>
<PERFORM ,V?EXAMINE ,CEILING>
<RTRUE>)
(T
<TELL ,YOU-SEE ,DARKNESS TR ,GRATE>)>)>>
<OBJECT MIRROR
(IN CREWS-QUARTERS)
(DESC "bit of mirror")
(FDESC
"A chipped piece of mirror sits propped on a shoulder-high timber.")
(SYNONYM MIRROR)
(ADJECTIVE CHIPPED PIECE BIT)
(FLAGS TAKEBIT)
(ACTION MIRROR-F)>
<ROUTINE MIRROR-F ()
<COND (<VERB? LOOK-INSIDE>
<TELL "You are aglow with excitement" ,PCR>)
(<AND <VERB? PUT POINT>
<PRSI? ,SHIP ,SHUTTERS ,MOONBEAM ,WINDOW>>
<SIGNAL-SHIP ,MIRROR>
<RTRUE>)
(<VERB? EXAMINE>
<TELL
"Probably a remnant of a pirated lady's boudoir,"
T ,MIRROR "'s edges are dulled from use" ,PCR>)>>
<ROUTINE SIGNAL-SHIP (THING)
<COND (<AND <FSET? ,HERE ,INDOORSBIT>
<NOT <GLOBAL-IN? ,HERE ,WINDOW>>
<NOT <EQUAL? ,HERE ,LAFS-ROOM ,CAPT-QUARTERS>>>
<TELL ,YOU-CANT-SEE-ANY ,WAY-TO-DO-THAT>)
(T
<MOVE .THING ,PROTAGONIST>
<COND (<IN? ,CHICKEN .THING>
<REMOVE ,CHICKEN>
<REMOVE ,SPICES>
<TELL
"You scrape everything off" T ,TRAY " into the bushes below. ">)>
<COND (<EQUAL? ,HERE ,BEDROOM>
<TELL
,YOU-CANT "quite catch the moon, just peeking over the house,
in the little mirror" ,PCR>
<RTRUE>)>
<TELL
"You roll" T .THING " around in the beam of
moonlight till it glows silver-white. ">
;<COND (<NOT <EQUAL? ,HERE ,LAFS-ROOM>>
<CRLF>
<RTRUE>)>
<COND (<EQUAL? ,HERE ,LAFS-ROOM>
<COND (<FSET? ,SHIP ,MUNGBIT>
<TELL "The breeze picks up, howling off" TR ,SEA>
<RTRUE>)
(<AND <NOT <QUEUED? ,I-PIRATE-RESCUE>>
<NOT ,ENDGAME>>
<SETG SCORE <+ ,SCORE 1>>
<COND (<IN? ,LAFOND ,HERE>
<QUEUE I-PIRATE-RESCUE 14>)
(T
<QUEUE I-PIRATE-RESCUE 6>)>
<TELL
"After a moment, a flash of light responds from" TR ,SHIP>)
(T
<CRLF>)>)
(T
<CRLF>
<RTRUE>)>)>>
<GLOBAL ENDGAME <>>
<GLOBAL COOKIE-LOOKING <>>
<ROUTINE I-PIRATE-RESCUE ()
<SETG ENDGAME T>
<SETG COOKIE-LOOKING T>
<FSET ,LUCY ,NDESCBIT>
<FSET ,DAD ,NDESCBIT>
<MOVE ,CRULLEY ,DUNGEON>
;<MOVE ,COOKIE ,BALLROOM>
<FCLEAR ,COOKIE ,NDESCBIT>
<FSET ,BALLROOM ,EVERYBIT> ;"the crew is rounding up prisoners"
<FSET ,SKIFF ,NDESCBIT>
<TELL ,INDENT>
<COND (<EQUAL? ,HERE ,LAWN ,VERANDA ,FOREST ,TRADE-ENTRANCE>
<TELL
"Silently, a dozen ragged men creep in from the beach. Small groups move
in all " D ,INTDIR "s, surrounding the mansion, until, with a hair-raising
cry, they attack the house. Screams of terror come from the ballroom" ,PCR>)
(<AND <EQUAL? ,HERE ,LAFS-ROOM>
<IN? ,LAFOND ,HERE>>
<TELL ,BATTLE-CRY
", and Lafond whirls around, every sinew taut. \"Damnation! Jamison somehow
called his men!\" Holding a knife to your throat, Lafond drags you downstairs
and away from rescue, as Cookie and the crew watch helpless.">
<JIGS-UP " The blade bites less then you expected.">)
(<AND <EQUAL? ,HERE ,LAFS-ROOM>
<NOT <FSET? ,BUTLER ,DEADBIT>>>
<TELL ,BATTLE-CRY
", as Jamison's men respond to your signal. " CTHE ,BUTLER ", looking scared,
grabs you and runs downstairs and out to the front drive.">
<JIGS-UP " Lafond's dragoons deal with you quickly.">)
(<EQUAL? ,HERE ,GALLERY ,STAIRTOP ,FOYER ,BALLROOM
,ORCHESTRA ,SUPPER-ROOM>
<TELL ,BATTLE-CRY
", and Jamison's men stream in from all " D ,INTDIR "s,
huddling the dancers in the middle of the ballroom" ,PCR>)
(T
<TELL ,BATTLE-CRY
". It is drowned out a few minutes later by screams of terror
from the dancers in the ballroom" ,PCR>
<COND (<EQUAL? ,HERE ,FRONT-DRIVE>
<TELL ,INDENT
"The dragoons look alarmed, and confer among themselves." CR>)
(T
<RFALSE>)>)>>
<GLOBAL BATTLE-CRY
"An eerie battle cry arises on the wind, from all sides of the house">
<OBJECT DAGGER
(IN GALLEY)
(DESC "dagger")
(FDESC "A dagger is driven into the wooden floorboards.")
(SYNONYM DAGGER KNIFE)
(FLAGS TAKEBIT)
(ACTION DAGGER-F)>
<ROUTINE DAGGER-F ()
<COND (<VERB? EXAMINE>
<TELL CTHE ,DAGGER " is quite dull" ,PCR>)
(<VERB? CUT>
<COND (<FSET? ,PRSO ,WEARBIT>
<PERFORM ,V?RIP ,PRSO>
<RTRUE>)
(<PRSO? ,LINE>
<RFALSE>)
(<PRSO? ,DAGGER>
<IMPOSSIBLES>)
(T
<TELL
CTHE ,DAGGER " is much too dull to cut" TR ,PRSO>)>)>>
<ROOM POOP
(IN ROOMS)
(DESC "Poop")
;(DOWN PER CLIMBING-LADDER)
(DOWN PER CLIMBING)
(NORTH TO QUARTERDECK)
(SOUTH "You can't swim, and decide not to jump.")
(EAST "You can't swim, and decide not to jump.")
(WEST "You can't swim, and decide not to jump.")
(GLOBAL LADDER SEA RAILING OBJ-QUARTERS) ;"To cover L AT QUARTERDECK"
(FLAGS ONBIT RLANDBIT NARTICLEBIT)
(ACTION POOP-F)>
<ROUTINE POOP-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-ENTER>
<NOT <FSET? ,POOP ,TOUCHBIT>>>
<COND (<NOT ,HEARD-CRULLEY>
<SETG HEARD-CRULLEY T>
<FSET ,ANCHOR ,MUNGBIT>
<FSET ,LEVER ,MUNGBIT>
<QUEUE I-SEE-CRULLEY-ESCAPE 2>
<QUEUE I-LOOK-SEA 10>)>
<SETG SCORE <+ ,SCORE 1>>)
(<EQUAL? .RARG ,M-LOOK>
<TELL
"From this platform deck you can see the whole of the two-masted ship,
shadowy forms moving about here and there. A railing protects
you from stepping off the deck in any " D ,INTDIR " but to the fore.">
<COND (,LADDER-HANGING
<TELL
" A rope ladder is tied to the railing at the stern of the ship.">)>
<I-LOOK-SEA <>>)>>
<ROOM QUARTERDECK
(IN ROOMS)
(DESC "Quarterdeck")
(IN "The door is barred.")
(DOWN "The door is barred.")
(UP "If you wish to go to the Poop, go AFT.")
(NORTH TO MAIN-DECK)
(SOUTH TO POOP)
(EAST "You can't swim, and decide not to jump.")
(WEST "You can't swim, and decide not to jump.")
(GLOBAL DOOR CREW SEA RAILING LINE)
(FLAGS ONBIT RLANDBIT NARTICLEBIT)
(ACTION QUARTERDECK-F)>
<ROUTINE QUARTERDECK-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"No torches are lit, or needed on this moonlit night, except in the deep
shadows cast by the huge navigation wheel. Men move about to the fore,
talking quietly. Under the stairs aft to the poop is a barred door.">
<I-LOOK-SEA <>>)
(<AND <EQUAL? .RARG ,M-END>
<NOT ,BOY-DRESS?>>
<SAILOR-DEATH>)
(T <RFALSE>)>>
<OBJECT WHEEL
(IN QUARTERDECK)
(DESC "navigation wheel")
(SYNONYM WHEEL)
(ADJECTIVE NAVIGA)
(FLAGS NDESCBIT)
(ACTION WHEEL-F)>
<ROUTINE WHEEL-F ()
<COND (<TOUCHING? ,WHEEL>
<TELL
"From the grumbling emitted as you near" T ,WHEEL ", you gather that
the sailors close by would not appreciate your action." CR>)>>
<OBJECT CANNON
(IN QUARTERDECK)
(DESC "cannon")
(LDESC
"Cannon line the deck, aimed at open sea and the island.")
(SYNONYM CANNON)
(FLAGS PLURALBIT)
(ACTION CANNON-F)>
<ROUTINE CANNON-F ()
<COND (<TOUCHING? ,CANNON>
<TELL
"A crewman growls angrily, \"Boy! Get away from me guns --
they've killed better men than thee by just rollin' backwards.\"" CR>)
(<VERB? EXAMINE>
<TELL
"Huge, old and blackened, these cannon have seen many battles" ,PCR>)
(<VERB? SHOOT SSHOOT>
<REPERTOIRE "Firing cannon">)>>
<OBJECT CASK
(IN QUARTERDECK)
(DESC "cask")
(DESCFCN CASK-F)
(SYNONYM CASK KEG)
(ADJECTIVE EMPTY RUM WARPED)
(GENERIC GEN-CASK)
(FLAGS VEHBIT CONTBIT SEARCHBIT INBIT OPENBIT NDESCBIT)
(ACTION CASK-F)>
<ROUTINE CASK-F ("OPTIONAL" (VARG <>))
<COND (.VARG
<COND (<EQUAL? .VARG ,M-BEG>
<COND (<VERB? ROW ROW-DIR ROW-TO>
<V-ROW>)
;(<AND <VERB? WALK>
<EQUAL? ,P-DIRECTION ,P?OUT>>
<PERFORM ,V?DISEMBARK ,CASK>
<RFATAL>)
(<OR <AND <VERB? WALK>
<NOT <PRSO? ,P?OUT>>>
<TOUCHING? ,PYRAMID>>
<DO-FIRST "get out of" ,CASK>)>)
(<EQUAL? .VARG ,M-DESC?>
<RTRUE>)
(<AND <EQUAL? .VARG ,M-OBJDESC>
<EQUAL? ,HERE ,SHALLOWS ,LAGOON>>
<TELL ,INDENT "Waves lap at" T ,CASK ".">)
(T
<RFALSE>)>)
(<VERB? EXAMINE>
<TELL
"This large, empty cask smells of salt and rancid meat.
The head of" T ,CASK " is missing" ,PCR>)
(<VERB? BOARD ENTER>
<MOVE ,PROTAGONIST ,CASK>
<TELL "You crawl into" T ,CASK>
<COND (<NOT <FSET? ,PORK ,TOUCHBIT>>
<TELL
", feeling a slab of something stuck on the bottom">)>
<COND (<EQUAL? ,HERE ,QUARTERDECK>
<TELL
". From this close, you can see" T ,LINE
" is getting frayed where it rubs against" TR ,CASK>)
(T
<TELL ,PCR>)>
;<COND (<IN? ,HOOPS ,PROTAGONIST>
<TELL ,YOU-CANT "get" T ,HOOPS " into" TR ,CASK>)
(T
<MOVE ,PROTAGONIST ,CASK>
<TELL "You crawl into" T ,CASK>
<COND (<NOT <FSET? ,PORK ,TOUCHBIT>>
<TELL
", feeling a slab of something stuck on the bottom">)>
<COND (<EQUAL? ,HERE ,QUARTERDECK>
<TELL
". From this close, you can see" T ,LINE
" is getting frayed where it rubs against" TR ,CASK>)
(T
<TELL ,PCR>)>)>)
;(<AND <VERB? LOOK-INSIDE>
<FSET? ,PORK ,NDESCBIT>>
<TELL "A slab of something lies on the bottom" ,PCR>)
(<VERB? OPEN CLOSE>
<TELL
"One end of" T ,CASK " is missing, so it can't be opened or closed" ,PCR>)
(<VERB? LAUNCH>
<COND (<EQUAL? ,HERE ,QUARTERDECK>
<TELL ,HUH>)
(T
<TELL ,ALREADY-IS>)>
;<COND (<EQUAL? ,HERE ,BEACH>
<MOVE ,CASK ,SHALLOWS>
<TELL
"You shove" T ,CASK " off the sand and climb into
it as it bobs in the shallows" ,PCR CR>
<SETG CASK-LOC 1>
<GOTO ,CASK>)
(T
<TELL ,ALREADY-IS>)>)
;(<OR <AND <VERB? RAISE PUSH>
<EQUAL? ,HERE ,SHALLOWS>>
<AND <VERB? PUSH-DIR>
<EQUAL? ,HERE ,SHALLOWS>
<OR <PRSI? ,P?EAST>
<PRSI? ,BEACH>>>>
<MOVE ,CASK ,BEACH>
<TELL
"You tip" T ,CASK " on its side and roll it onto the beach" ,PCR>
<GOTO ,BEACH>)
(<VERB? DISEMBARK>
<COND (<EQUAL? ,HERE ,LAGOON>
<TELL ,TOO-DEEP>)
(<EQUAL? ,HERE ,SHALLOWS>
<MOVE ,PROTAGONIST ,HERE>
<REMOVE ,CASK>
<TELL
"Free of your weight," T ,CASK " bobs and spins in the current,
pulled out into the lagoon. You splash after it, but it is gone" ,PCR>)
(T
<RFALSE>)>)>>
<GLOBAL PORK-DOPED <>>
<OBJECT PORK
(IN CASK)
(DESC "slab of pork")
(SYNONYM PORK MEAT SOMETHING PORK)
(ADJECTIVE SALT SLAB)
(FLAGS ;TAKEBIT ;NDESCBIT)
(ACTION PORK-F)>
<ROUTINE PORK-F ()
<COND (<VERB? EXAMINE>
<TELL CTHE ,PORK ", caked white with salt, is rock-hard." CR>)
(<VERB? EAT ;TASTE>
<TELL CTHE ,PORK " is too salty to eat." CR>)
(<AND <VERB? TAKE>
<IN? ,PORK ,CASK>
<NOT <FSET? ,PORK ,TAKEBIT>>>
<COND (<IN? ,PROTAGONIST ,CASK>
<FSET ,PORK ,TAKEBIT>
<MOVE ,PORK ,PROTAGONIST>
<TELL "You peel it off" TR ,CASK>)
(T
<TELL
CTHE ,PORK " is beyond your reach at the bottom of" TR ,CASK>
;<TELL "You can't quite reach it from here" ,PCR>)>)>>
<OBJECT LINE ;"MUNGBIT = rope is cut"
(IN QUARTERDECK) ;"EVERYBIT = set if you try to leave"
(DESC "line") ;"ship without putting out fuse"
(SYNONYM ROPE LINE)
(ADJECTIVE HEAVY)
(FLAGS NDESCBIT)
(ACTION LINE-F)>
<ROUTINE LINE-F ()
<COND (<VERB? EXAMINE>
<TELL
"Heavy-duty, hand-twisted rope is pulled taut around" T ,PYRAMID ". ">
<COND (<NOT <FSET? ,LINE ,MUNGBIT>>
<TELL
"It runs directly over the open-ended cask. ">)>
<TELL "A seaman calls over, \"Boy, take care">
<COND (<FSET? ,LINE ,MUNGBIT>
<TELL " -- or I'll see you flogged">)
(T
<TELL
". Them casks ain't safe, they could push ye overboard">)>
<TELL "!\"" CR>)
(<VERB? CUT>
<COND (<AND <NOT ,PRSI>
<HELD? ,DAGGER>>
<TELL "[with the dagger]" CR>
<PERFORM ,V?CUT ,LINE ,DAGGER>
<RTRUE>)
(<PRSI? ,DAGGER>
<COND (<AND ,FUSE-LIT
<IN? ,PROTAGONIST ,CASK>
<NOT <FSET? ,LINE ,EVERYBIT>>>
<FSET ,LINE ,EVERYBIT>
<TELL
"You hesitate, thinking of the fates of
those left aboard this ship." CR>
<RTRUE>)>
<TELL
CTHE ,LINE " snaps, and the pyramid collapses
into dozens of tumbling casks. ">
<COND (<EQUAL? <LOC ,PROTAGONIST> ,CASK>
<FCLEAR ,CASK ,NDESCBIT>
<FSET ,LINE ,MUNGBIT>
<REMOVE ,DAGGER>
<SETG CASK-LOC <- ,SHIP-LOC 2>>
<SETG SCORE <+ ,SCORE 1>>
<TELL
"Your cask is thrust into the sea," T ,DAGGER " flying from " D ,HANDS ,PCR>
<COND (<FSET? ,ANCHOR ,MUNGBIT>
<FWTD
" The tides are against you, however, and carry you out to sea. Days later
you collapse, exhausted, to wake in the heaven on earth of a Swedish
merchant marine. A midshipman, an ice-eyed blond with Viking physique and
no English, nurses you back to health; in a moment of weakness you thank
him in the only language all men and women share.">)
(T
<TELL ,INDENT
"Sputtering mouthfuls of salt water, you
first look around several minutes later" ,PCR CR>)>
<FCLEAR ,DOOR ,OPENBIT>
<FSET ,DOOR ,LOCKEDBIT>
<QUEUE I-CURRENT -1>
<MOVE ,CASK ,LAGOON>
<GOTO ,CASK>
<V-LOOK>)
(<EQUAL? <LOC ,PROTAGONIST> ,QUARTERDECK>
<JIGS-UP
"A large one rolls into you, stumbling you
through the railing into the sea.">)>)>)
(<VERB? UNTIE REMOVE>
<TELL
,YOU-CANT-SEE-ANY "knots to untie, just line" ,PCR>)>>
<ROUTINE GEN-CASK ()
<COND (<IN? ,CASK ,HERE>
<RETURN ,CASK>)
(T
<RETURN ,PYRAMID>)>>
<GLOBAL PYRAMID-CTR 0>
<OBJECT PYRAMID
(IN QUARTERDECK)
(DESC "pyramid of casks")
(DESCFCN PYRAMID-F)
(SYNONYM PYRAMID CASKS CASK)
(ADJECTIVE RUM)
(GENERIC GEN-CASK)
(ACTION PYRAMID-F)>
<GLOBAL GET-AWAY
". \"Hey, boy! Get away from those. It ain't safe!\" yells a sailor.">
<ROUTINE PYRAMID-F ("OPTIONAL" (OARG <>))
<COND (.OARG
<COND (<EQUAL? .OARG ,M-DESC?>
<RTRUE>)>
<TELL ,INDENT "Abaft the wheel sits a ">
<COND (<FSET? ,LINE ,MUNGBIT>
<TELL "small, hastily constructed">)
(T
<TELL "large">)>
<TELL
" pyramid of casks, held in place by a heavy rope.">)
(<VERB? EXAMINE>
<TELL
"Lying on their sides, the casks are stacked in a rather
shaky pyramid: perhaps that's why someone has tied the rope about them">
<COND (<NOT <FSET? ,LINE ,MUNGBIT>>
<TELL ". A cask on one corner has lost its lid">)>
<TELL ,GET-AWAY CR>)
(<VERB? LOOK-INSIDE>
<TELL "All of the casks seem empty">
<COND (<NOT <FSET? ,LINE ,MUNGBIT>>
<TELL
", but the only one you can actually look in
is the open-ended cask.">
<COND (<IN? ,PORK ,CASK>
<TELL
" There appears to be" A ,PORK " dried to the bottom of that one.">)>)>
<CRLF>)
(<TOUCHING? ,PYRAMID>
<COND (<FSET? ,LINE ,MUNGBIT>
<TELL
"A sailor swoops down on you from nowhere, whapping your backside painfully.
\"Boy!\" he booms, \"get away from those! We already had to clean up after
you once. Cap'n'll hear of this, I tell you.\"" CR>)
(T
<SETG PYRAMID-CTR <+ ,PYRAMID-CTR 1>>
<TELL "The pyramid wobbles">
<COND (<EQUAL? ,PYRAMID-CTR 3>
<JIGS-UP
" and collapses.|
You were warned, of course, but did not listen.
A stray keg pushes you off the deck into the sea.">
<RTRUE>)
(T
<TELL ,GET-AWAY>)>
<CRLF>)>)>>
<ROOM MAIN-DECK
(IN ROOMS)
(DESC "Main Deck")
(UP PER CLIMBING)
;(UP PER CLIMBING-RIGGING)
(DOWN PER HATCH-ENTRANCE)
(NORTH TO FOCSLE)
(SOUTH TO QUARTERDECK)
(EAST "You can't swim, and decide not to jump.")
(WEST "You can't swim, and decide not to jump.")
(GLOBAL HATCH STAIRS RAILING CREW SEA RIGGING-OBJECT)
(FLAGS ONBIT RLANDBIT NARTICLEBIT)
(ACTION MAIN-DECK-F)>
<ROUTINE MAIN-DECK-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"It is a deceptively quiet evening on the ship, the pirates singing
low shanties as they repair cannon, twist ropes and sharpen daggers. The
mainmast casts an inky shadow over the ">
<COND (<FSET? ,HATCH ,OPENBIT>
<TELL
"open hatch and stairs leading down to the hold.">)
(T
<TELL "canvas screening the hatch.">)>
<TELL ,TANGLED-RIGGING>
<I-LOOK-SEA <>>
<TELL CR ,INDENT
"Two large barrels stand near the stair to the foredeck.">)
(<AND <EQUAL? .RARG ,M-ENTER>
,FUSE-LIT
<NOT <FSET? ,FUSE ,TOUCHBIT>>>
<DEQUEUE I-SMELL-SMOKE>
<I-SMELL-SMOKE>)
(<AND <EQUAL? .RARG ,M-END>
<NOT ,BOY-DRESS?>>
<SAILOR-DEATH>)>>
<ROUTINE HATCH-ENTRANCE () ;"EXIT-FCN"
<COND (<NOT <FSET? ,HATCH ,OPENBIT>>
<TELL CTHE ,HATCH ,IS-CLOSED ,PCR>
<RFALSE>)
(<EQUAL? ,HERE ,MAIN-DECK>
<TELL
"You glance around to see that no one is watching, and
duck through the open corner of" TR ,HATCH CR>
<RETURN ,HOLD>)
(T
<TELL "You slip lithely through" TR ,HATCH CR>
<RETURN ,MAIN-DECK>)>>
<OBJECT RUM-BARREL
(IN MAIN-DECK)
(DESC "rum barrel")
(SYNONYM BARREL CASK KEG STAINS)
(ADJECTIVE RUM STAINED DARK)
(FLAGS NDESCBIT CONTBIT SEARCHBIT OPENBIT)
(GENERIC GEN-BARREL)
(ACTION BARREL-F)>
<OBJECT RUM
(IN RUM-BARREL)
(DESC "rum")
(SYNONYM RUM GROG)
(FLAGS NDESCBIT)
(ACTION RUM-F)>
<ROUTINE RUM-F ()
<COND (<VERB? PUT SOAK>
<PERFORM ,V?PUT ,PRSO ,RUM-BARREL>
<RTRUE>)
(<VERB? EXAMINE LOOK-INSIDE LOOK-UNDER>
<TELL "The rum is a dark brown color" ,PCR>)
(<VERB? REACH-IN>
<TELL "Rum" ,DRIPS-OFF>)
(<VERB? DRINK ;TASTE>
<TELL
"You take a sip and spit it out, coughing.
This is much stronger than ratafia!" CR>)>>
<OBJECT WATER-BARREL
(IN MAIN-DECK)
(DESC "water barrel")
(SYNONYM BARREL CASK KEG)
(ADJECTIVE FRESH WATER)
(FLAGS NDESCBIT CONTBIT SEARCHBIT OPENBIT)
(GENERIC GEN-BARREL)
(ACTION BARREL-F)>
<ROUTINE GEN-BARREL ()
<COND (<VERB? EXAMINE>
,WATER-BARREL)
(T
<RFALSE>)>>
; "Routine for both water and rum barrels."
<ROUTINE BARREL-F ()
<COND (<VERB? EXAMINE LOOK-INSIDE>
<COND (<PRSO? ,WATER-BARREL>
<COND (<OR <ADJ-USED ,A?WATER>
<ADJ-USED ,A?FRESH>>
<TELL
"This large barrel is full of fresh water for the long sea voyage." CR>)
(T
<TELL
"The two open barrels contain rum and water, you can tell by the smell
of each. They are identical but for the dark stains around the
mouth of" TR ,RUM-BARREL>)>)
(<PRSO? ,RUM-BARREL>
<TELL
"Stained around the mouth by the spills of
over-eager sailors," T ,RUM-BARREL " is nearly full." CR>)>)
(<VERB? DRINK-FROM>
<COND (<PRSI? ,RUM-BARREL>
<PERFORM ,V?DRINK ,RUM>
<RTRUE>)
(<PRSI? ,WATER-BARREL>
<PERFORM ,V?DRINK ,WATER>
<RTRUE>)>)
(<VERB? ROLL PUSH PUSH-DIR>
<COND (<EQUAL? ,P-PRSA-WORD ,W?TIP>
<TELL
"You notice a scrawl on the side, \"No tipping, please.\"" CR>)
(T
<TELL "The barrel is secured to the deck." CR>)>)
(<VERB? EMPTY EMPTY-FROM>
<PROPOSE>)
(<VERB? REACH-IN>
<COND (<PRSO? ,RUM-BARREL>
<TELL "Rum">)
(T
<TELL "Water">)>
<TELL ,DRIPS-OFF>
;<TELL
"Hesitant to wet your sleeve, you dip your fingers into" TR ,PRSO>)
(<VERB? CLOSE>
<TELL "There is no lid." CR>)
(<VERB? PUT SOAK>
<COND ;(<PRSO? ,HOOPS>
<RFALSE>)
(<PRSO? ,LAUD>
<TELL
"The few drops left would be too diluted to affect anyone." CR>)
(<NOT <FSET? ,PRSI ,OPENBIT>>
<TELL CTHE ,PRSI ,IS-CLOSED ,PCR>)
(<PRSO? ,INVITE ,LETTER>
<PERFORM ,V?PUT ,PRSO ,SEA>
<RTRUE>)
(<PRSO? ,DRESS ,RAG>
<DIP-DRESS>)
(T
<REMOVE ,PRSO>
<TELL
"You drop" T ,PRSO " into" T ,PRSI ". It sinks from sight" ,PCR>)>)
(<VERB? DRINK>
<COND (<ZERO? <GET ,P-NAMW 0>>
<COND (<ADJ-USED ,A?WATER>
<PERFORM ,V?DRINK ,WATER>
<RTRUE>)
(<ADJ-USED ,A?RUM>
<PERFORM ,V?DRINK ,RUM>
<RTRUE>)>)
(T
<RFALSE>)>)>>
;<ROUTINE ;DIP-DRESS ()
<COND (<OR <AND ,WET-DRESS
<PRSO? ,DRESS>>
<AND ,WET-RAG
<PRSO? ,RAG>>>
<TELL "That's already wet enough.">)
(T
<TELL "Keeping hold on" T ,PRSO ", you soak it with ">
<COND (<PRSI? ,RUM-BARREL>
<TELL "rum.">
<COND (<PRSO? ,DRESS>
<MOVE ,DRESS <LOC ,PROTAGONIST>>
<TELL
" It becomes so heavy, however, that you drop it.">
<PUTP ,DRESS ,P?SIZE 10>
<SETG WET-DRESS ,RUM>)
(<PRSO? ,RAG>
;<PUTP ,RAG ,P?SIZE 3>
<SETG WET-RAG ,RUM>)>
;<TELL "rum.">)
(T
<COND (<PRSO? ,DRESS>
<PUTP ,DRESS ,P?SIZE 10>
<TELL
" It becomes so heavy, however, that you drop it.">
<SETG WET-DRESS ,SEA>)
(<PRSO? ,RAG>
<SETG WET-RAG ,SEA>)>
<TELL "water.">)>)>
<CRLF>>
<ROUTINE DIP-DRESS ("AUX" (LIQUID <>))
<COND (<NOT ,PRSI>
<V-SOAK>
<RTRUE>)
(<PRSI? ,RUM ,RUM-BARREL>
<SET LIQUID ,RUM>)
(<OR <PRSI? ,SEA ,WATER ,WATER-BARREL ,POOL>
<EQUAL? ,HERE ,BY-SHIP ,LAGOON ,SHALLOWS ,BEACH>>
<SET LIQUID ,WATER>)
(T
<IMPOSSIBLES>)>
<COND (<OR <AND ,WET-DRESS
<PRSO? ,DRESS>>
<AND ,WET-RAG
<PRSO? ,RAG>>>
<TELL "That's already wet enough." CR>
<RTRUE>)>
<TELL "Keeping hold on" T ,PRSO ", you soak it with ">
<COND (<PRSO? ,DRESS>
<MOVE ,DRESS <LOC ,PROTAGONIST>>
<PUTP ,DRESS ,P?SIZE 10>
<SETG WET-DRESS .LIQUID>
<TELL D .LIQUID
". It becomes so heavy, however, that you drop it, with a loud squelch">)
(<PRSO? ,RAG>
;<PUTP ,RAG ,P?SIZE 3>
<SETG WET-RAG .LIQUID>
<TELL D .LIQUID>)>
<TELL ,PCR>>
<ROOM FOCSLE
(IN ROOMS)
(DESC "Forecastle")
(IN TO GALLEY)
(UP PER CLIMBING)
;(UP PER CLIMBING-RIGGING)
(DOWN "The grate is too small.")
(NORTH PER BOWSPRIT-EXIT)
(SOUTH TO MAIN-DECK)
(EAST "You can't swim, and decide not to jump.")
(WEST "You can't swim, and decide not to jump.")
(GLOBAL CHAIN GRATE SEA RAILING RIGGING-OBJECT GALLEY-OBJECT)
(FLAGS ONBIT RLANDBIT NARTICLEBIT)
(ACTION FOCSLE-F)>
<ROUTINE FOCSLE-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"Higher than all but the poop deck, this end of the ship commands a good view
of the island; the \"crow's nest,\" swinging above in the heights of the
foremast, would command a better." ,TANGLED-RIGGING CR
" Imbedded in the deck is a grated air hole to the crew's "
D ,OBJ-QUARTERS " below. You can go aft, or forward through a break in the
ubiquitous railing.|
Odors of old grease and char waft from a little shack perched behind the
mast.">
<I-LOOK-SEA <>>)
(<AND <EQUAL? .RARG ,M-END>
<NOT ,BOY-DRESS?>>
<SAILOR-DEATH>)>>
<OBJECT CHAIN
(IN LOCAL-GLOBALS)
(DESC "chain")
(SYNONYM CHAIN)
(ADJECTIVE ANCHOR)
;(ACTION CHAIN-F)>
<OBJECT WINCH
(IN FOCSLE)
(DESC "mooring winch")
(SYNONYM WINCH WINDLASS BARREL)
(ADJECTIVE MOORING ANCHOR)
(ACTION WINCH-F)>
<ROUTINE WINCH-F ()
<COND (<VERB? EXAMINE>
<TELL "Made of an old barrel turning on a pole," T
,WINCH " is used to coil in the anchor chain. A pair of metal teeth bite
the links to prevent it from dragging out; a lever is connected to the teeth.
Something is written on the lever" ,PCR>)
(<VERB? SET>
<COND (<FSET? ,LEVER ,MUNGBIT>
<TELL
"The teeth are closed, so you can't move the chain" ,PCR>)
(T
<TELL ,NO-STRENGTH>)>)
(<VERB? OPEN CLOSE>
<PROPOSE>)>>
<OBJECT LEVER
(IN FOCSLE)
(DESC "lever")
(SYNONYM LEVER WRITING)
(FLAGS NDESCBIT)
(ACTION LEVER-F)>
<ROUTINE LEVER-F ()
<COND (<VERB? READ EXAMINE>
<TELL
"On the lever is written \"Open Up, Close Down.\"
You notice the lever is pointed down." CR>)
(<VERB? RAISE>
<COND (<FSET? ,ANCHOR ,MUNGBIT>
<SETG SCORE <+ ,SCORE 1>>
<FCLEAR ,ANCHOR ,MUNGBIT>
<REMOVE ,ANCHOR>
<DEQUEUE I-LOOK-SEA>
<QUEUE I-TIDES-TURN 3>
<TELL
"The metal teeth open as you raise up" T ,LEVER ". The anchor, released,
splashes down into the sea, dragging its clanking chain. After a moment,
you feel the ship pull slightly against the current. You lower the lever
to prevent any more chain from spooling out" ,PCR>)
(T
<TELL
"Raising" T ,LEVER " would release more chain and you might ">
<COND (<QUEUED? ,I-TIDES-TURN>
<TELL "cast" T ,SHIP " against the reefs!" CR>)
(T
<TELL "ground" TR ,SHIP>)>)>)
(<VERB? LOWER>
<TELL ,ALREADY-IS>)
(<VERB? MOVE PUSH>
<TELL
,YOULL-HAVE-TO "specify which way you want to move it" ,PCR>)>>
<ROUTINE I-TIDES-TURN ()
<TELL ,INDENT "With a heave and creak of timbers," T ,SHIP
" drifts a little way back towards the island. The tide has turned." CR>>
;<ROUTINE old-LEVER-F ()
<COND (<VERB? READ EXAMINE>
<TELL
"On the lever is written \"Open Up, Close Down.\"
You notice the lever is pointed ">
<COND (<FSET? ,LEVER ,MUNGBIT>
<TELL "down">)
(T
<TELL "up">)>
<TELL ,PCR>)
(<VERB? RAISE>
<COND (<FSET? ,LEVER ,MUNGBIT>
<FCLEAR ,LEVER ,MUNGBIT>
<TELL
"The metal teeth open as you raise up" T ,LEVER>
<COND (<FSET? ,ANCHOR ,MUNGBIT>
<SETG SCORE <+ ,SCORE 1>>
<FCLEAR ,ANCHOR ,MUNGBIT>
<REMOVE ,ANCHOR>
<DEQUEUE I-LOOK-SEA>
<TELL
". The anchor, released, splashes down into the sea, dragging its clanking
chain. After a second the chain slows, and you feel the ship pull slightly
against the current. You lower the lever to prevent any more chain from
spooling out">)>
<TELL ,PCR>)
(T
<TELL ,ALREADY-IS>)>)
(<VERB? LOWER>
<COND (<FSET? ,LEVER ,MUNGBIT>
<TELL ,ALREADY-IS>)
(T
<FSET ,LEVER ,MUNGBIT>
<TELL
"The metal teeth close on the chain as you lower" TR ,LEVER>)>)
(<VERB? MOVE PUSH>
<TELL
,YOULL-HAVE-TO "specify which way you want to move it" ,PCR>)>>
<ROOM GALLEY
(IN ROOMS)
(DESC "Galley")
(LDESC
"This tiny kitchen smells of old stew and yeast.
A low door to starboard shows the way out.")
(OUT TO FOCSLE)
(EAST TO FOCSLE)
(GLOBAL GALLEY-OBJECT FIRE)
(FLAGS ONBIT RLANDBIT NARTICLEBIT)
(ACTION GALLEY-F)>
<ROUTINE GALLEY-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-END>
<NOT <FSET? ,COOKIE ,TOUCHBIT>>>
<FSET ,COOKIE ,TOUCHBIT>
<TELL ,INDENT "The man looks you over sharply,">
<COND (,BOY-DRESS?
<TELL
" then winks an eye. \"Hullo, boy -- Sam, I'll call you. N">)
(T
<TELL
"frowning. \"Tut, lass, you don't foller orders, do ye? 'Tain't safe to
go about dressed like that. Mayhap ye're n">)>
<TELL
"ervous about Cap'n? He'll come to no harm. And if there is trouble, he only
has to signal from that seaward winder of the house -- ye can see it from the
crow's nest -- and we'll be there in a jiffy. Me and my peg are to stay
aboard and guard y">
<COND (,BOY-DRESS?
<TELL "--, the Cap'n's">)
(T
<TELL "ou,">)>
<TELL " young lady.\"" CR>)
(<EQUAL? .RARG ,M-ENTER>
<THIS-IS-IT ,COOKIE>
<THIS-IS-IT ,DAGGER>)>>
<OBJECT GALLEY-OBJECT
(IN LOCAL-GLOBALS)
(DESC "shack")
(SYNONYM GALLEY HUT SHACK)
(ADJECTIVE WOODEN)
(FLAGS NDESCBIT CONTBIT OPENBIT)
(ACTION GALLEY-OBJECT-F)>
<ROUTINE GALLEY-OBJECT-F ()
<COND (<VERB? EXAMINE>
<TELL "It's a tiny charred wooden shack" ,PCR>)
(<VERB? LOOK-INSIDE SEARCH>
<PERFORM-PRSA ,GALLEY>
<RTRUE>)
(<VERB? ENTER>
<GOTO ,GALLEY>)>>
<ROOM BOWSPRIT
(IN ROOMS)
(DESC "Bowsprit")
(SOUTH TO FOCSLE)
(NORTH "You can't swim, and decide not to jump.")
(EAST "You can't swim, and decide not to jump.")
(WEST "You can't swim, and decide not to jump.")
(GLOBAL CHAIN SEA RAILING)
(FLAGS ONBIT RLANDBIT NARTICLEBIT)
(ACTION BOWSPRIT-F)>
<ROUTINE BOWSPRIT-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"Hanging on the bowsprit, your arms and legs wrapped tightly around the
narrow spar, you can't see much beside an upside-down
view of the figurehead of the " D ,SHIP ", ">
<COND (<FSET? ,ANCHOR ,MUNGBIT>
<TELL
"the barnacle encrusted main anchor dripping
from its chain, and the nauseous">)
(T
<TELL "and" T ,ANCHOR " chain descending into the">)>
<TELL
" swelling and breaking waves over (under?) " D ,HEAD ".">)>>
<ROUTINE BOWSPRIT-EXIT ()
<COND (<EQUAL? ,HERE ,FOCSLE>
<TELL "You">
<COND (<ANYTHING-HELD>
<ROB ,PROTAGONIST ,HERE>
<TELL " drop all you are carrying and">)>
<TELL " creep out over the waves" ,PCR CR>
<RETURN ,BOWSPRIT>)
(T
<TELL "You inch back down to" ,ELLIPSIS>
<RETURN ,FOCSLE>)>>
<OBJECT STUB
(IN BOWSPRIT)
(DESC "stub of rope")
(DESCFCN STUB-F)
(SYNONYM ROPE HAWSER)
(ADJECTIVE STUB)
(FLAGS TRYTAKEBIT)
(ACTION STUB-F)>
<ROUTINE STUB-F ("OPTIONAL" (OARG <>))
<COND (.OARG
<COND (<EQUAL? .OARG ,M-DESC?>
<RTRUE>)>
<TELL ,INDENT
"A " D ,STUB ", roughly cut, swings rudely over the waves.">
<COND (<FSET? ,ANCHOR ,MUNGBIT>
<TELL
" The line holding the sea anchor has been cut!">)
(T
<RTRUE>)>)
(<TOUCHING? ,STUB>
<TELL ,YOU-CANT "quite reach it." CR>)>>
<OBJECT ANCHOR
(IN BOWSPRIT)
(DESC "anchor")
(SYNONYM ANCHOR)
(FLAGS VOWELBIT NDESCBIT)
(ACTION ANCHOR-F)>
<ROUTINE ANCHOR-F ()
<COND (<VERB? RAISE>
<TELL ,NO-STRENGTH>)>>
<ROOM RIGGING-ROOM
(IN ROOMS)
(DESC "In the Rigging")
(DOWN PER CLIMBING)
(UP PER CLIMBING)
(GLOBAL RIGGING-OBJECT SEA LADDER)
(FLAGS ONBIT RLANDBIT NARTICLEBIT)
(ACTION RIGGING-ROOM-F)>
<ROUTINE RIGGING-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"The deck swings far below as you cling to" T ,RIGGING-OBJECT " in the wind."
,TANGLED-RIGGING>
<COND (<EQUAL? ,WHICH-MAST? ,FOCSLE>
<TELL
" Farther up" T ,RIGGING-OBJECT " is a small platform.">)
(T
<RTRUE>)>)>>
<OBJECT RIGGING-OBJECT
(IN LOCAL-GLOBALS)
(DESC "rigging")
(SYNONYM RIGGING MAST MAINMA FOREMA)
(ADJECTIVE TANGLED)
(FLAGS TRYTAKEBIT TRANSBIT OPENBIT SEARCHBIT CONTBIT)
(ACTION RIGGING-OBJECT-F)>
<ROUTINE RIGGING-OBJECT-F ()
<COND (<VERB? TAKE>
<TELL "The only thing rigging is good for is climbing." CR>)
(<VERB? CLIMB ;CLIMB-UP>
<DO-WALK ,P?UP>
<RTRUE>)
(<VERB? CLIMB-DOWN>
<DO-WALK ,P?DOWN>
<RTRUE>)
(<VERB? EXAMINE>
<TELL
"The mast stands tall and powerful, shrouded in" TR ,RIGGING-OBJECT>)>>
<GLOBAL WHICH-MAST? <>>
;<ROUTINE ;CLIMBING-RIGGING () ;"This is an EXIT-FCN"
<COND (<OR <FSET? ,DRESS ,WORNBIT>
<FSET? ,HOOPS ,WORNBIT>>
<SETG AWAITING-REPLY 2>
<QUEUE I-REPLY 2>
<TELL "Don't be absurd: in these clothes?" CR>
<RFALSE>)
(<EQUAL? ,P-WALK-DIR ,P?UP>
<COND (<NOT <EQUAL? ,RIGGING-ROOM ,HERE>>
<SETG WHICH-MAST? ,HERE>
<COND (<EQUAL? <LOC ,DAGGER> ,PROTAGONIST>
<TELL
"You bite down on" T ,DAGGER ", freeing " D ,HANDS "s to climb.
When you stop, you take it back again. ">)>
<TELL
"The wind, a mere breeze on the deck, blows more fiercely." CR CR>
<RETURN ,RIGGING-ROOM>)
(T
<COND (<EQUAL? ,WHICH-MAST? ,FOCSLE>
<TELL "You clamber up" TR ,RIGGING-OBJECT CR>
<RETURN ,CROWS-NEST>)
(T
<TELL "Above you there appears to be only more
of the same, except higher, and you can not vouch for the effects on your
stomach" ,PCR>
<RFALSE>)>)>)
(<EQUAL? ,P-WALK-DIR ,P?DOWN>
<TELL
"You climb quickly, practically falling, down to the deck" ,PCR CR>
<RETURN ,WHICH-MAST?>)>>
<ROOM CROWS-NEST
(IN ROOMS)
(DESC "Crow's Nest")
(LDESC
"You perch on a platform high above the deck, giving a view of the endless
sea and the southernmost cliffs of the island, where a house pokes out of
the vegetation. It gives off a general glow, but no lights can be seen in
any of the second story windows.
A tiny beach nestles into the base of the cliff.")
(DOWN TO RIGGING-ROOM)
(UP "Don't push your luck too far.")
(GLOBAL RIGGING-OBJECT SEA)
(FLAGS ONBIT RLANDBIT NARTICLEBIT)
;(ACTION CROWS-NEST-F)>
;"I axed the object"
;<ROUTINE SPYGLASS-F ()
<COND (<VERB? LOOK-INSIDE>
<COND (<EQUAL? ,HERE ,CROWS-NEST ,FOCSLE ,BOWSPRIT>
<TELL "You take a sweeping pan of the horizon through
the " D ,SPYGLASS ". The sea off the port side of the ship is made no clearer
by the instrument, and the moon only brighter. But as you gaze westward to
the island, you notice a flutter on the cliff face, something white and soft
against the gray rock, apparently stuck into one of the large cracks
decorating the crag" ,PCR>)
(T
<TELL "Everything looks closer" ,PCR>)>)>>
;"If player hasn't gotten out by now, kill him/her off. On 25th move."
;<ROUTINE I-JIGS-UP-SNAFU ()
<COND (<EQUAL? ,HERE ,CABIN>
<QUEUE I-END-PROLOGUE 2>
<JIGS-UP
"As the fires increase, so does the smoke. You pass out before you discover
your fate -- death by looting pirates or smoke inhalation. In both cases,
however, death is still death.">)
(T <RFALSE>)>>
<ROUTINE I-PIRATE-ATTACK ()
<COND (<PROB 40>
<TELL ,INDENT <PICK-ONE ,PIRATE-NOISES> ,PCR>)>
<RFALSE>>
<GLOBAL PIRATE-NOISES
<LTABLE
0
"\"Aaieeee!\" echoes a scream, followed by several grunts and thumps"
"\"Cap'n Jamison! We've got 'em!\" cries a rough voice"
"\"The Falcon! The Falcon conquers!\" yells someone"
"With a creak and a crash, somewhere a mast falls to the deck"
"You recognize a voice from far away, \"Don't take that! Look in the
cabin at the stern -- you'll find some fun there!\" It sounds like Davis"
;"In a brief, unexpected silence, the sigh of some distant fire claws
at your stomach"
;"All is illuminated for a sharp moment as a jagged bolt of
lightning cracks against the sea nearby"
;"A cannon exploding on the pirate ship is echoed by a huge clap
of thunder"
;"The wind howls and roars about like some fearsome cyclone"
;"\"To the hold! To the hold! Free the slaves!\" Voices take up
the chant">>
<GLOBAL SKIFF-LOC 5>
<GLOBAL SHIP-LOC 5>
<GLOBAL CASK-LOC 10>
<ROUTINE I-LOOK-SEA ("OPTIONAL" (CALLED-BY-INTERRUPT T) "AUX" CANT-SEE-REEFS)
<COND (<INNER-DECK ,HERE>
;<TELL CR
"[You are now one room closer to the reefs, and would get this desc. on deck:"
CR <GET ,REEF-DESC ,SHIP-LOC> ". Is this advancing every 15 moves, despite
where you look or are, etc? BUG #107. Please investigate and report.]" CR>
<SET CANT-SEE-REEFS T>)>
<COND (.CALLED-BY-INTERRUPT
<QUEUE I-LOOK-SEA 15>
<SETG SHIP-LOC <+ ,SHIP-LOC 1>>
<COND (<EQUAL? ,SHIP-LOC 10>
<TELL ,INDENT <GET ,REEF-DESC ,SHIP-LOC>>
<FWTD
". The next few minutes last forever as havoc breaks out. Grabbing a
plank, you manage to stay afloat, but you are washed out to sea. A
brig, Portuguese by its sails, rescues you. The sailors are brown skinned
and smooth, and the first mate, the ship's and yours, is gentle.
They leave you in Rio, alone and forgotten.">)
(.CANT-SEE-REEFS
<COND (<EQUAL? ,SHIP-LOC 8>
<TELL ,INDENT
"The crash of surf is increasing in volume.
You'd best find out what's going on!" CR>)
(T
<RFALSE>)>)
(T
<TELL ,INDENT <GET ,REEF-DESC ,SHIP-LOC> ,PCR>)>)
(<NOT <FSET? ,ANCHOR ,MUNGBIT>>
<RTRUE>)
(<RUNNING? ,I-LOOK-SEA> ; "So it won't desc."
<QUEUE I-LOOK-SEA 2> ;"more than once a turn"
<I-LOOK-SEA <>>) ;"but it will advance next turn!"
(T
<TELL CR ,INDENT <GET ,REEF-DESC ,SHIP-LOC> ".">)>>
<GLOBAL REEF-DESC
<TABLE
0
0
0
0
0
"The ship is floating midway between the island and a line of reefs"
"The reefs seem a little larger than you thought before"
"The reefs are definitely getting larger"
"Bswish! Waves smash against the reefs nearby"
"You are misted in the spray of waves hitting the reefs. The island
is far away"
"The sound of splintering wood reverberates through the ship as it
drifts onto the reefs">>
<CONSTANT ROWWEST -3>
<CONSTANT ROWEAST 2>
<GLOBAL LOOKED-LAGOON? <>>
<GLOBAL ROWING 0>
<ROUTINE I-CURRENT ("AUX" (VENUE 0)) ;"Venue = Cask-loc or Skiff-loc"
<SET VENUE <COND (<IN? ,PROTAGONIST ,CASK>
<+ ,CASK-LOC ,ROWING>)
(<IN? ,PROTAGONIST ,SKIFF>
<+ ,SKIFF-LOC ,ROWING>)>>
<COND (<EQUAL? ,ROWING -1>
<TELL ,INDENT
"The current pulls you in towards the island.">
<COND (<EQUAL? ,HERE ,BY-SHIP>
<CRLF> <CRLF>
<MOVE ,SKIFF ,LAGOON>
<GOTO ,SKIFF>
<V-LOOK>)
(<AND <L? .VENUE 2>
<NOT <EQUAL? ,HERE ,SHALLOWS>>>
<SET VENUE 1>
<DEQUEUE I-CURRENT>
<TELL
" With a scrape," T <LOC ,PROTAGONIST> " lodges in the sand" ,PCR CR>
<COND (<IN? ,PROTAGONIST ,CASK>
<MOVE ,CASK ,SHALLOWS>
<GOTO ,CASK>)
(<IN? ,PROTAGONIST ,SKIFF>
<MOVE ,SKIFF ,SHALLOWS>
<GOTO ,SKIFF>)>)
(<EQUAL? ,HERE ,LAGOON>
<CRLF>
<COND (<NOT ,LOOKED-LAGOON?>
<V-LOOK>)
(T
<SETG LOOKED-LAGOON? <>>)>) ;"added 23.6.87"
(T
<RTRUE>)>)>
<SETG ROWING -1>
<COND (<IN? ,PROTAGONIST ,CASK>
<SETG CASK-LOC .VENUE>)
(<IN? ,PROTAGONIST ,SKIFF>
<SETG SKIFF-LOC .VENUE>)>
<RTRUE>>
;<ROUTINE ;I-CURRENT ("AUX" (VENUE 0)) ;"Venue = Cask-loc or Skiff-loc"
<SET VENUE <COND (<IN? ,PROTAGONIST ,CASK>
<+ ,CASK-LOC ,ROWING>)
(<IN? ,PROTAGONIST ,SKIFF>
<+ ,SKIFF-LOC ,ROWING>)>>
<COND ;(<AND <EQUAL? ,CASK-LOC <- ,SHIP-LOC 1>>
<IN? ,PROTAGONIST ,CASK>> ;"first turn: KLUDGE"
<RTRUE>)
(<EQUAL? ,ROWING -1>
<TELL ,INDENT
"The current pulls you in towards the island.">
<COND (<EQUAL? ,HERE ,BY-SHIP> ;"you can't be there except"
<CRLF> <CRLF> ;"in the skiff"
<MOVE ,SKIFF ,LAGOON>
<GOTO ,SKIFF>)
(<AND <L? .VENUE 2>
<NOT <EQUAL? ,HERE ,SHALLOWS>>>
<SET VENUE 1>
<DEQUEUE I-CURRENT>
<TELL
" With a scrape," T <LOC ,PROTAGONIST> " lodges in the sand" ,PCR CR>
<COND (<IN? ,PROTAGONIST ,CASK>
<MOVE ,CASK ,SHALLOWS>
<GOTO ,CASK>)
(<IN? ,PROTAGONIST ,SKIFF>
<MOVE ,SKIFF ,SHALLOWS>
<GOTO ,SKIFF>)>)
(T
<CRLF>)>)>
<SETG ROWING -1>
;<COND ;(<OR <EQUAL? .VENUE ,SHIP-LOC>
<G? .VENUE ,SHIP-LOC>> ;"in case rower overshoots"
<MOVE ,SKIFF ,BY-SHIP> ;"the mark."
<CRLF>
<CRLF>
<GOTO ,SKIFF>)
;(<AND <L? .VENUE 2>
<NOT <EQUAL? ,HERE ,SHALLOWS>>>
<SET VENUE 1>
<DEQUEUE I-CURRENT>
<COND (<IN? ,PROTAGONIST ,CASK>
<MOVE ,CASK ,SHALLOWS>
<TELL
" With a scrape," T ,CASK " lodges in the sand" ,PCR CR>
<GOTO ,CASK>)
(<IN? ,PROTAGONIST ,SKIFF>
<MOVE ,SKIFF ,SHALLOWS>
<CRLF>
<CRLF>
<GOTO ,SKIFF>)>)
;(<G? .VENUE 7>
<TELL
,INDENT "Suddenly, the skiff takes off with a mind
of its own, pulling you out and beyond">
<COND (<EQUAL? ,SHIP-LOC 8 9>
<TELL TR ,SHIP>)
(T
<TELL TR ,REEFS>)>)
;(<AND <EQUAL? .VENUE 2 3>
<VERB? ROW>>
<MOVE ,SKIFF ,LAGOON>
<SETG HERE ,LAGOON>)
;(T
<COND (<NOT <EQUAL? ,VERBOSITY 0>>
<V-LOOK>)>)>
<COND (<IN? ,PROTAGONIST ,CASK>
<SETG CASK-LOC .VENUE>)
(<IN? ,PROTAGONIST ,SKIFF>
<SETG SKIFF-LOC .VENUE>)>
<RTRUE>>
<OBJECT SKIFF
(IN SHALLOWS)
(DESC "skiff")
(DESCFCN SKIFF-F)
(SYNONYM SKIFF BOAT)
(CAPACITY 50)
(FLAGS TRANSBIT VEHBIT CONTBIT SEARCHBIT INBIT OPENBIT)
(GENERIC GEN-BOAT)
(ACTION SKIFF-F)>
<ROUTINE SKIFF-F ("OPTIONAL" (VARG <>) "AUX" (STR <>))
<COND (.VARG
<COND (<EQUAL? .VARG ,M-DESC?>
<RTRUE>)
(<EQUAL? .VARG ,M-OBJDESC>
<TELL ,INDENT>
<COND (<FSET? ,SKIFF ,TOUCHBIT>
<TELL CTHE ,SKIFF>)
(T
<FSET ,SKIFF ,TOUCHBIT>
<TELL "A " D ,SKIFF>)>
<TELL
" nods in the waves, its oars jerking around in the current.">)
(T
<RFALSE>)>)
(<VERB? EXAMINE>
<TELL CTHE ,SKIFF
" is large enough to carry several men, but light
enough that you feel able to row it" ,PCR>)
(<VERB? LOOK-INSIDE>
<FCLEAR ,OARS ,NDESCBIT>
<COND (<IN? ,PROTAGONIST ,SKIFF>
<DESCRIBE-VEHICLE>)
(T
<TELL "In" T ,SKIFF " is">
<DESCRIBE-CONTENTS ,SKIFF>
<TELL ,PCR>)>
<FSET ,OARS ,NDESCBIT>)
(<OR <VERB? LAUNCH>
<AND <VERB? PUSH>
<PRSI? ,SEA>>>
<TELL ,ALREADY-IS>)
(<VERB? TIE>
<COND (<EQUAL? ,HERE ,BY-SHIP>
<DEBARK-SKIFF>)
(T
<TELL ,THERES-NOTHING "to moor it to!" CR>)>)
(<VERB? ROW>
<COND (<EQUAL? <LOC ,PROTAGONIST> ,SKIFF>
<COND (<EQUAL? ,HERE ,BEACH>
<DO-FIRST "launch" ,SKIFF>)
(T
<TELL
,YOULL-HAVE-TO "specify a " D ,INTDIR ,PCR>)>)
(T
<DO-FIRST "get in" ,SKIFF>)>)
(<VERB? DISEMBARK>
<COND (<EQUAL? ,HERE ,LAGOON>
<TELL ,TOO-DEEP>)
(<EQUAL? ,HERE ,BY-SHIP>
<DEBARK-SKIFF>)>)
(<AND <VERB? PUT-ON>
<PRSI? ,SKIFF>>
<PERFORM ,V?PUT ,PRSO ,SKIFF>
<RTRUE>)>>
;<ROUTINE ;SKIFF-F ("OPTIONAL" (VARG <>) "AUX" (STR <>))
<COND (.VARG
<COND (<EQUAL? .VARG ,M-DESC?>
<RTRUE>)
(<EQUAL? .VARG ,M-OBJDESC>
<TELL ,INDENT>
<COND (<EQUAL? ,HERE ,BEACH>
<TELL
"A " D ,SKIFF " is shoved into the sand.">)
(T
<TELL
CTHE ,SKIFF " nods in the waves,
its oars jerking around in the current.">)>)
(T
<RFALSE>)>)
(<VERB? EXAMINE>
<TELL CTHE ,SKIFF
" is large enough to carry nine men, but light
enough that you feel able to row it" ,PCR>)
(<VERB? LOOK-INSIDE>
<FCLEAR ,OARS ,NDESCBIT>
<COND (<IN? ,PROTAGONIST ,SKIFF>
<DESCRIBE-VEHICLE>)
(T
<TELL "In" T ,SKIFF " is">
<DESCRIBE-CONTENTS ,SKIFF>
<TELL ,PCR>)>
<FSET ,OARS ,NDESCBIT>)
(<OR <VERB? LAUNCH>
<AND <VERB? PUSH>
<PRSI? ,SEA>>>
<COND (<EQUAL? ,HERE ,BEACH>
<MOVE ,SKIFF ,SHALLOWS>
<TELL
"You shove" T ,SKIFF " off the sand and jump into
the bow as it nods in the shallows" ,PCR CR>
<SETG SKIFF-LOC 1>
<GOTO ,SKIFF>
;<I-CURRENT>)
(T
<TELL ,ALREADY-IS>)>)
(<VERB? TIE>
<COND (<EQUAL? ,HERE ,BY-SHIP>
<DEBARK-SKIFF>)
(T
<TELL ,THERES-NOTHING "to moor it to!" CR>)>)
(<VERB? ROW>
<COND (<EQUAL? <LOC ,PROTAGONIST> ,SKIFF>
<COND (<EQUAL? ,HERE ,BEACH>
<DO-FIRST "launch" ,SKIFF>)
(T
<TELL
,YOULL-HAVE-TO "specify a " D ,INTDIR ,PCR>)>)
(T
<TELL
"You need to be in" T ,SKIFF " to row it" ,PCR>)>)
(<VERB? DISEMBARK>
<COND (<EQUAL? ,HERE ,LAGOON>
<TELL ,TOO-DEEP>)
(<EQUAL? ,HERE ,BY-SHIP>
<DEBARK-SKIFF>)>)
(<AND <VERB? PUT-ON>
<PRSI? ,SKIFF>>
<PERFORM ,V?PUT ,PRSO ,SKIFF>
<RTRUE>)>>
<OBJECT OARS
(IN SKIFF)
(DESC "pair of oars")
(SYNONYM OARS OAR OARLOCK)
(ADJECTIVE METAL)
(FLAGS TRYTAKEBIT PLURALBIT NDESCBIT)
(ACTION OARS-F)>
<ROUTINE OARS-F ()
<COND (<VERB? TAKE REMOVE>
<TELL
"They are fastened to" T ,SKIFF " with metal oarlocks" ,PCR>)>>
<ROUTINE DEBARK-SKIFF ()
<DEQUEUE I-CURRENT>
<SETG SKIFF-TIED T>
;<COND (<ANYTHING-HELD>
<ROB ,PROTAGONIST ,SKIFF>
<TELL "Putting all you carry in" T ,SKIFF ", y">)
(T
<TELL "Y">)>
<TELL
"You tie" T ,SKIFF " to the end of" T ,LADDER
", then climb partway up it" ,PCR CR>
<MOVE ,PROTAGONIST ,HERE> ;"Get player off skiff before moving it"
<MOVE ,SKIFF ,BY-SHIP>
<GOTO ,ON-LADDER>>
<ROOM BY-SHIP
(IN ROOMS)
(DESC "By the Ship")
(UP PER CLIMBING)
;(UP PER CLIMBING-LADDER)
(WEST PER FLOATING)
(EAST "You'll have to row that way.")
(NORTH "You'll have to row that way.")
(SOUTH "You'll have to row that way.")
(GLOBAL LADDER SEA PSEUD-SKIFF)
(FLAGS ONBIT RLANDBIT NARTICLEBIT)
(ACTION BY-SHIP-F)>
<ROUTINE BY-SHIP-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<MOVE ,PROTAGONIST ,SKIFF>)
(<EQUAL? .RARG ,M-LOOK>
;<COND (<G? ,SHIP-LOC 8>
<TELL "Bug #119" CR>
<RTRUE>)>
<TELL
"You are floating in a small skiff ">
<COND (<AND <G? ,SHIP-LOC 4>
<L? ,SHIP-LOC 9>>
<TELL "at the stern of" T ,SHIP ", ">
<COND (<EQUAL? ,SHIP-LOC 7 8>
<TELL "at the far edge of">)
(<EQUAL? ,SHIP-LOC 5 6>
<TELL "in the middle of">)>)
(T
<TELL "in">)>
<TELL " the lagoon.">
<COND (,LADDER-HANGING
<TELL
" A rope ladder, frayed ends dripping water,
hangs down from the poop deck." >)
(T
<RTRUE>)>)
(<AND <EQUAL? .RARG ,M-END>
<NOT <RUNNING? ,I-CURRENT>>>
<SETG ROWING 0>
<QUEUE I-CURRENT -1>)>>
<ROOM LAGOON
(IN ROOMS)
(DESC "Lagoon")
(WEST PER FLOATING)
(EAST "You'll have to row that way.")
(NORTH "You'll have to row that way.")
(SOUTH "You'll have to row that way.")
(FLAGS ONBIT RLANDBIT NARTICLEBIT)
(GLOBAL SEA DEBRIS)
(ACTION LAGOON-F)>
<ROUTINE LAGOON-F (RARG "AUX" (VENUE <>))
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL "You are ">
<SET VENUE <COND (<EQUAL? <LOC ,PROTAGONIST> ,CASK>
<TELL "crouched in a cask">
,CASK-LOC)
(T
<TELL "sitting in a skiff">
,SKIFF-LOC)>>
<TELL " on the lagoon of " D ,ISLAND>
<COND (<L? <- ,SHIP-LOC .VENUE> 2>
<TELL ". You are quite near">
<COND (<FSET? ,SHIP ,MUNGBIT>
<TELL T ,REEFS>)
(T
<TELL T ,SHIP>)>)
(<L? <- 10 .VENUE> 5>
<TELL
". The crash of surf hitting" T ,REEFS " is quite loud">)
(<L? .VENUE 3>
<TELL
". Music floats down to the water,
mingling with the distant roar of the sea">)
(T
<TELL
". The jungle looms gray-green in the light of the full moon">)>
<TELL ".">)
(<AND <EQUAL? .RARG ,M-END>
<NOT <VERB? LOOK>>
;<NOT <EQUAL? ,VERBOSITY 0>>>
<SETG LOOKED-LAGOON? T>
<RFALSE>)>>
<OBJECT STONE ;"TRYTAKEBIT = unreachable after slinged"
(DESC "stone")
(SYNONYM STONE ROCK)
(ADJECTIVE POINTED SHARP)
(FLAGS TAKEBIT)
(SIZE 1)
(ACTION STONE-F)>
<ROUTINE STONE-F ()
<COND (<VERB? SHOOT>
<COND (<NOT ,PRSI>
<REMOVE ,STONE>
<TELL
CTHE ,STONE ", unaimed, flies into the air, arcing up and into the sea" ,PCR>)
(<PRSO? ,GARTER>
<WASTES>)
(<L? <GETP ,PRSO ,P?SIZE> 5>
<TELL
"You don't trust your aim to hit something that small" ,PCR>)
(<NOT <IN? ,STONE ,GARTER>>
<TELL
,YOULL-HAVE-TO "put" T ,STONE " into" TR ,GARTER>)
(T
<COND (<FSET? ,PRSO ,DEADBIT>
<MAN-IS-DOWN>)
(<PRSO? ,ME>
<TELL ,SUICIDE>)
(<PRSO? ,LUCY>
<TELL ,UNLADY>)
(<PRSO? ,PISTOL>
<PERFORM-PRSA ,CRULLEY ,PRSI>
<RTRUE>)
(<PRSO? ,SHIP ,HOUSE>
<TELL "That is too far away." CR>)
(<PRSO? ,HERO>
<MOVE ,GARTER ,HERE>
<TELL
"You falter, dropping the makeshift sling. Your heart rules too well" ,PCR>)
(T
<TELL
"You pull" T ,GARTER " taut, aim, and let fly" T ,STONE ". ">
<FSET ,STONE ,TRYTAKEBIT>
<MOVE ,STONE ,HERE>
<COND (<OR <AND <PRSO? ,LAFOND>
<L? ,LAFOND-CTR ,FIGHTING>>
<AND <PRSO? ,CRULLEY>
<L? ,LAFOND-CTR ,DEAD>>>
<TELL
"It clatters onto the rocks, short of the mark" ,PCR>)
;"Dad, Crull, Laf only"
(<FSET? ,PRSO ,ACTORBIT>
<TELL
CR ,INDENT "He ducks as it whirs past his ear">
<COND (<PRSO? ,CRULLEY>
;<FSET ,CRULLEY ,DEADBIT>
;"need for check" <FSET ,DAD ,DEADBIT>
<SETG SCORE <+ ,SCORE 1>>
<TELL
". Papa, creeping unnoticed up the stairs, leaps and wrests the gun from
his grip, toppling all three, father, pirate and gun, off the cliff. Lucy
screams as the struggling pair fall to the rocks below.|
You run to Nicholas. You have lost" T ,DAD ", but Nicholas's embrace
remains, comforting, shielding, a world of love" ,PCR>
;"With a quiet thud, it hits D ,PRSI square between the eyes.
He crumples to the ground"
<FINALE>)
(T
<TELL
" to disappear with a quiet thud into the sand">
<COND (<PRSO? ,DAD>
<TELL
". He looks a bit surprised, but nods encouragingly">)>
<TELL ,PCR>)>)
(T
<TELL "It bounces off" TR ,PRSO>)>)>)>)
(<AND <VERB? TAKE>
<FSET? ,STONE ,TRYTAKEBIT>>
<CANT-REACH ,STONE>)
(<AND <VERB? THROW THROW-AT>
<PRSO? ,STONE>>
<COND (<NOT ,PRSI>
<PERFORM ,V?SHOOT ,STONE>
<RTRUE>)
(<HELD? ,PRSI>
<WASTES>)
(T
<COND (<FSET? ,PRSI ,DEADBIT>
<MAN-IS-DOWN>
<RTRUE>)>
<MOVE ,STONE ,HERE>
<TELL
"You hurl" T ,STONE ", but it falls far short of" TR ,PRSI>)>)
(<VERB? KILL>
<COND (<NOT <IN? ,STONE ,GARTER>>
<PROPOSE>)
(T
<PERFORM ,V?SHOOT ,PRSO ,STONE>
<RTRUE>)>)
(<VERB? EXAMINE>
<TELL "It is a pretty little stone" ,PCR>)>>
<ROOM SHALLOWS
(IN ROOMS)
(DESC "Shallows")
(EAST PER FLOATING)
(WEST PER FLOATING)
(SYNONYM SHALLOWS)
(NORTH "You stop at a steep cliff-face.")
(SOUTH "You stop at a steep cliff-face.")
(FLAGS ONBIT RLANDBIT NARTICLEBIT)
(GLOBAL SEA ;PSEUD-SKIFF DEBRIS)
(ACTION SHALLOWS-F)>
<ROUTINE SHALLOWS-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL "You are ">
<COND (<EQUAL? <LOC ,PROTAGONIST> ,HERE>
<COND (,BOY-DRESS?
<TELL "soaking your shoes and stockings in">)
(<NOT <FSET? ,CHEMISE ,EVERYBIT>>
<TELL "soaking the hem of your chemise in">)
(T
<TELL "holding your skirts high over">)>)
(T
<COND (<EQUAL? <LOC ,PROTAGONIST> ,CASK>
<TELL "crouched in" T ,CASK>)
(T
<TELL "sitting in" T ,SKIFF>)>
<TELL " in">)>
<TELL
" the warm, lapping waves of the shallows.
A white sand beach is west of you.">)
(<AND <EQUAL? .RARG ,M-BEG>
<VERB? SHOOT SSHOOT>
<OR <NOT <EQUAL? <META-LOC ,PRSO> ,HERE ,GLOBAL-OBJECTS>>
<NOT <EQUAL? <META-LOC ,PRSI>
,HERE ,GLOBAL-OBJECTS>>>>
<TELL
"Your aim is too unsure from this distance. Go to the beach." CR>)>>
<ROUTINE FLOATING () ;"EXIT-FCN"
<COND (<EQUAL? ,HERE ,SHALLOWS>
<COND (<IN? ,PROTAGONIST ,SKIFF>
<COND (<EQUAL? ,P-WALK-DIR ,P?WEST>
<DO-FIRST "get out of" ,SKIFF>
<RFALSE>)
(<EQUAL? ,P-WALK-DIR ,P?EAST>
<TELL ,YOULL-HAVE-TO "row that way" ,PCR>
<RFALSE>)>)
(T
<COND (<EQUAL? ,P-WALK-DIR ,P?WEST>
<RETURN ,BEACH>)
(T
<TELL
"You wade in the shallow water, unable to swim" ,PCR>
<RFALSE>)>)>)
(<EQUAL? ,P-WALK-DIR ,P?WEST>
<TELL "You're going that way anyway" ,PCR>
<RFALSE>)
(T
<TELL ,YOULL-HAVE-TO "row that way" ,PCR>
<RFALSE>)>>
<OBJECT REEFS
(IN GLOBAL-OBJECTS)
(DESC "reefs")
(SYNONYM REEFS REEF)
(ACTION REEFS-F)>
<ROUTINE REEFS-F ()
<COND (<VERB? EXAMINE>
<COND (<INNER-DECK ,HERE>
<TELL ,YOU-CANT-SEE-ANY D ,REEFS " from here" ,PCR>)
(T
<TELL
"A line of reefs separates the lagoon from the sea beyond" ,PCR>)>)>>
;<TELL "[You're in Room #" N .VENUE ".]" CR CR>