1526 lines
34 KiB
Plaintext
1526 lines
34 KiB
Plaintext
;"***************************************************************************"
|
|
; "game : Abyss"
|
|
; "file : MONTANA.ZIL"
|
|
; "auth : $Author: DEB $"
|
|
; "date : $Date: 20 Mar 1989 8:45:22 $"
|
|
; "rev : $Revision: 1.12 $"
|
|
; "vers : 1.0"
|
|
;"---------------------------------------------------------------------------"
|
|
; "U.S.S. Montana"
|
|
; "Copyright (C) 1988 Infocom, Inc. All rights reserved."
|
|
;"***************************************************************************"
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-MIDSHIP-HATCH"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-MIDSHIP-HATCH
|
|
(LOC ROOMS)
|
|
(DESC "midship hatch")
|
|
(FLAGS FL-LIGHTED FL-WATER)
|
|
; (SYNONYM )
|
|
; (ADJECTIVE )
|
|
(UP TO RM-TROUGH-LIP)
|
|
(EAST TO RM-TROUGH-LIP)
|
|
(FORE TO RM-MISSILE-HATCH)
|
|
(NORTH TO RM-MISSILE-HATCH)
|
|
(WEST TO RM-ATTACK-CENTER IF LG-MIDSHIP-HATCH IS OPEN)
|
|
(IN TO RM-ATTACK-CENTER IF LG-MIDSHIP-HATCH IS OPEN)
|
|
(DOWN PER RT-TO-TRENCH-BOTTOM)
|
|
(GLOBAL LG-MIDSHIP-HATCH LG-MONTANA LG-TROUGH RM-ATTACK-CENTER)
|
|
(ACTION RT-RM-MIDSHIP-HATCH)
|
|
>
|
|
|
|
<ROUTINE RT-RM-MIDSHIP-HATCH ("OPTIONAL" (CONTEXT <>))
|
|
<COND
|
|
; (<MC-CONTEXT? ,M-F-LOOK>
|
|
)
|
|
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
|
|
<TELL " You ">
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL "are at">
|
|
)
|
|
(T
|
|
<TELL "come to">
|
|
)
|
|
>
|
|
<TELL
|
|
" the midship hatch of the Montana. The trough wall rises sharply to the east
|
|
and the missile hatch is to the fore. Through the hatch is the attack center.|"
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
<OBJECT LG-MIDSHIP-HATCH
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "midship hatch")
|
|
(FLAGS FL-DOOR)
|
|
(SYNONYM HATCH)
|
|
(ADJECTIVE MIDSHIP)
|
|
(ACTION RT-LG-MIDSHIP-HATCH)
|
|
>
|
|
|
|
<ROUTINE RT-LG-MIDSHIP-HATCH ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
" The hatch is a heavy, circular lid with a handle in the middle. Because
|
|
the sub is resting on its side, the hinges are at the top." CR
|
|
>
|
|
)
|
|
(<VERB? OPEN>
|
|
<COND
|
|
(<FSET? ,LG-MIDSHIP-HATCH ,FL-OPEN>
|
|
<RT-ALREADY-MSG ,PRSO "open">
|
|
)
|
|
(T
|
|
<TELL
|
|
" You grab the handle and try to lift the hatch, but only succeed in
|
|
pushing yourself down in the water." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? CLOSE>
|
|
<COND
|
|
(<NOT <FSET? ,LG-MIDSHIP-HATCH ,FL-OPEN>>
|
|
<RT-ALREADY-MSG ,PRSO "closed">
|
|
)
|
|
(T
|
|
<TELL
|
|
" You can't close the hatch against the buoyancy of the lift bag." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-TO-TRENCH-BOTTOM ("AUX" (QUIET <>))
|
|
<COND
|
|
(.QUIET
|
|
<RETURN ,RM-TRENCH-BOTTOM>
|
|
)
|
|
(<OR <NOT <IN? ,TH-FBS-SUIT ,CH-PLAYER>>
|
|
<NOT <FSET? ,TH-FBS-SUIT ,FL-WORN>>
|
|
>
|
|
<TELL " You can't go down that deep with a regular dry suit.|">
|
|
<RFALSE>
|
|
)
|
|
(T
|
|
<RETURN ,RM-TRENCH-BOTTOM>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-MISSILE-HATCH"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-MISSILE-HATCH
|
|
(LOC ROOMS)
|
|
(DESC "missile hatch")
|
|
(FLAGS FL-LIGHTED FL-WATER)
|
|
(SYNONYM HATCH)
|
|
(ADJECTIVE MISSILE)
|
|
(FORE TO RM-BOW)
|
|
(AFT TO RM-MIDSHIP-HATCH)
|
|
(GLOBAL ;LG-MISSILE-HATCH LG-MONTANA LG-TROUGH RM-MISSILE-ROOM)
|
|
(ACTION RT-RM-MISSILE-HATCH)
|
|
>
|
|
|
|
<ROUTINE RT-RM-MISSILE-HATCH ("OPTIONAL" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
|
|
<TELL " You ">
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL "are at">
|
|
)
|
|
(T
|
|
<TELL "come to">
|
|
)
|
|
>
|
|
<TELL
|
|
" the missile hatch of the Montana. To the aft is the midship hatch, and the
|
|
bow lies foreward.|"
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;<OBJECT LG-MISSILE-HATCH
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "missile hatch")
|
|
(FLAGS FL-DOOR FL-OPENABLE)
|
|
(SYNONYM HATCH)
|
|
(ADJECTIVE MISSILE)
|
|
>
|
|
|
|
<OBJECT TH-MISSILE
|
|
(LOC RM-MISSILE-HATCH)
|
|
(DESC "missile")
|
|
(FLAGS FL-NO-DESC FL-SURFACE FL-SEARCH)
|
|
(SYNONYM MISSILE)
|
|
(ACTION RT-TH-MISSILE)
|
|
>
|
|
|
|
<ROUTINE RT-TH-MISSILE ("OPT" (CONTEXT <>))
|
|
<RFALSE>
|
|
>
|
|
|
|
<OBJECT TH-MISSILE-TIMER
|
|
(LOC TH-MISSILE)
|
|
(DESC "timer")
|
|
(FLAGS FL-NO-DESC)
|
|
(SYNONYM TIMER)
|
|
(ADJECTIVE MISSILE)
|
|
(ACTION RT-TH-MISSILE-TIMER)
|
|
>
|
|
|
|
<ROUTINE RT-TH-MISSILE-TIMER ("OPT" (CONTEXT <>))
|
|
<RFALSE>
|
|
>
|
|
|
|
<OBJECT TH-MISSILE-PANEL
|
|
(LOC TH-MISSILE)
|
|
(DESC "access panel")
|
|
(FLAGS FL-CONTAINER FL-LOCKED FL-OPENABLE FL-SEARCH)
|
|
(SYNONYM PANEL HATCH PLATE)
|
|
(ADJECTIVE MISSILE ACCESS COVER)
|
|
(ACTION RT-TH-MISSILE-PANEL)
|
|
>
|
|
|
|
<ROUTINE RT-TH-MISSILE-PANEL ("OPT" (CONTEXT <>))
|
|
<RFALSE>
|
|
>
|
|
|
|
<NEW-ADD-WORD "WIRES" NOUN <VOC "WIRE"> ,PLURAL-FLAG>
|
|
|
|
<GLOBAL GL-WIRE-SEQUENCE 0 <> BYTE>
|
|
<GLOBAL GL-WIRES-CUT 0>
|
|
|
|
<OBJECT TH-WIRES
|
|
(LOC TH-MISSILE-PANEL)
|
|
(DESC "wires")
|
|
(FLAGS FL-NO-DESC)
|
|
(SYNONYM WIRES)
|
|
(ACTION RT-TH-WIRES)
|
|
>
|
|
|
|
<ROUTINE RT-TH-WIRES ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
" The wires are red, green, orange, yellow, blue, and white." CR
|
|
>
|
|
)
|
|
(<VERB? CUT>
|
|
<TELL "[You must specify which wire you want to cut.]|">
|
|
<RFATAL>
|
|
)
|
|
>
|
|
>
|
|
|
|
<OBJECT TH-RED-WIRE
|
|
(LOC TH-MISSILE-PANEL)
|
|
(DESC "red wire")
|
|
(SYNONYM WIRE)
|
|
(ADJECTIVE RED)
|
|
(ACTION RT-TH-WIRE)
|
|
>
|
|
|
|
<OBJECT TH-BLUE-WIRE
|
|
(LOC TH-MISSILE-PANEL)
|
|
(DESC "blue wire")
|
|
(SYNONYM WIRE)
|
|
(ADJECTIVE BLUE)
|
|
(ACTION RT-TH-WIRE)
|
|
>
|
|
|
|
<OBJECT TH-GREEN-WIRE
|
|
(LOC TH-MISSILE-PANEL)
|
|
(DESC "green wire")
|
|
(SYNONYM WIRE)
|
|
(ADJECTIVE GREEN)
|
|
(ACTION RT-TH-WIRE)
|
|
>
|
|
|
|
<OBJECT TH-YELLOW-WIRE
|
|
(LOC TH-MISSILE-PANEL)
|
|
(DESC "yellow wire")
|
|
(SYNONYM WIRE)
|
|
(ADJECTIVE YELLOW)
|
|
(ACTION RT-TH-WIRE)
|
|
>
|
|
|
|
<OBJECT TH-ORANGE-WIRE
|
|
(LOC TH-MISSILE-PANEL)
|
|
(DESC "orange wire")
|
|
(SYNONYM WIRE)
|
|
(ADJECTIVE ORANGE)
|
|
(ACTION RT-TH-WIRE)
|
|
>
|
|
|
|
<OBJECT TH-WHITE-WIRE
|
|
(LOC TH-MISSILE-PANEL)
|
|
(DESC "white wire")
|
|
(SYNONYM WIRE)
|
|
(ADJECTIVE WHITE)
|
|
(ACTION RT-TH-WIRE)
|
|
>
|
|
|
|
<ROUTINE RT-TH-WIRE ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? CUT>
|
|
<COND
|
|
(<MC-PRSI? ,TH-KNIFE>
|
|
<TELL
|
|
"The wires are too close together to get the large blade of your knife
|
|
between them." CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,TH-WIRE-CUTTERS>
|
|
<COND
|
|
(<FSET? ,PRSO ,FL-BROKEN>
|
|
<RT-ALREADY-MSG "cut">
|
|
)
|
|
(<RT-CORRECT-WIRE? ,PRSO>
|
|
<FSET ,PRSO ,FL-BROKEN>
|
|
<SETG GL-WIRES-CUT <+ ,GL-WIRES-CUT 1>>
|
|
<COND
|
|
(<EQUAL? ,GL-WIRES-CUT 6>
|
|
<SETG GL-FALLING-INTO-TRENCH? T>
|
|
<RT-QUEUE ,RT-I-INTO-TRENCH-1 <+ ,GL-MOVES 1>>
|
|
<TELL
|
|
" You hold your breath and cut the last wire. Nothing happens. Lindsey
|
|
smiles at you and gives you a big thumbs up.|
|
|
Lindsey pats you on the back and then starts to climb back into the Cab.
|
|
The sudden imbalance makes it wobble precariously. Suddenly you realize that
|
|
it is slipping off the curved side of the sub! Desperately, you make a lunge
|
|
for the hatch to try to scramble inside, but it's too late. The Cab is
|
|
falling into the trench, and you are going to be dragged along with it." CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL " You cut" the ,PRSO "." CR>
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
" The explosion is so instantaneous and so massive that you have no
|
|
sensation of dying. You simply cease to be.|"
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
; "1 - orange, red, green, blue, white, yellow."
|
|
; "2 - yellow, red, white, orange, green, blue."
|
|
; "3 - green, red, orange, yellow, white, blue."
|
|
; "4 - green, white, yellow, blue, orange, red."
|
|
|
|
<ROUTINE RT-CORRECT-WIRE? (WIRE)
|
|
<COND
|
|
(<ZERO? ,GL-WIRE-SEQUENCE>
|
|
<RFALSE>
|
|
)
|
|
(<MC-PRSO? ,TH-RED-WIRE>
|
|
<COND
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 1 4>
|
|
<COND
|
|
(<FSET? ,TH-ORANGE-WIRE ,FL-BROKEN>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 2>
|
|
<COND
|
|
(<FSET? ,TH-YELLOW-WIRE ,FL-BROKEN>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 3>
|
|
<COND
|
|
(<FSET? ,TH-GREEN-WIRE ,FL-BROKEN>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<MC-PRSO? ,TH-BLUE-WIRE>
|
|
<COND
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 1 2>
|
|
<COND
|
|
(<FSET? ,TH-GREEN-WIRE ,FL-BROKEN>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 3>
|
|
<COND
|
|
(<FSET? ,TH-WHITE-WIRE ,FL-BROKEN>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 4>
|
|
<COND
|
|
(<FSET? ,TH-YELLOW-WIRE ,FL-BROKEN>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<MC-PRSO? ,TH-GREEN-WIRE>
|
|
<COND
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 1>
|
|
<COND
|
|
(<FSET? ,TH-RED-WIRE ,FL-BROKEN>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 2>
|
|
<COND
|
|
(<FSET? ,TH-ORANGE-WIRE ,FL-BROKEN>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(<MC-PRSO? ,TH-YELLOW-WIRE>
|
|
<COND
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 1 4>
|
|
<COND
|
|
(<FSET? ,TH-WHITE-WIRE ,FL-BROKEN>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 2>
|
|
<RTRUE>
|
|
)
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 3>
|
|
<COND
|
|
(<FSET? ,TH-ORANGE-WIRE ,FL-BROKEN>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<MC-PRSO? ,TH-ORANGE-WIRE>
|
|
<COND
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 1>
|
|
<RTRUE>
|
|
)
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 2>
|
|
<COND
|
|
(<FSET? ,TH-WHITE-WIRE ,FL-BROKEN>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 3>
|
|
<COND
|
|
(<FSET? ,TH-RED-WIRE ,FL-BROKEN>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 4>
|
|
<COND
|
|
(<FSET? ,TH-BLUE-WIRE ,FL-BROKEN>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<MC-PRSO? ,TH-WHITE-WIRE>
|
|
<COND
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 1>
|
|
<COND
|
|
(<FSET? ,TH-BLUE-WIRE ,FL-BROKEN>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 2>
|
|
<COND
|
|
(<FSET? ,TH-RED-WIRE ,FL-BROKEN>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 3>
|
|
<COND
|
|
(<FSET? ,TH-YELLOW-WIRE ,FL-BROKEN>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(<EQUAL? ,GL-WIRE-SEQUENCE 4>
|
|
<COND
|
|
(<FSET? ,TH-GREEN-WIRE ,FL-BROKEN>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<OBJECT TH-WIRE-CUTTERS
|
|
(LOC TH-ELEC-SHOP-DRAWER)
|
|
(DESC "wire cutters")
|
|
(FLAGS FL-TAKEABLE FL-KNIFE)
|
|
(SYNONYM CUTTERS)
|
|
(ADJECTIVE WIRE)
|
|
(ACTION RT-TH-WIRE-CUTTERS)
|
|
>
|
|
|
|
<ROUTINE RT-TH-WIRE-CUTTERS ("OPT" (CONTEXT <>))
|
|
<RFALSE>
|
|
>
|
|
|
|
<GLOBAL GL-FALLING-INTO-TRENCH? <> <> BYTE>
|
|
|
|
<ROUTINE RT-I-INTO-TRENCH-1 ()
|
|
<RT-QUEUE ,RT-I-INTO-TRENCH-2 <+ ,GL-MOVES 1>>
|
|
<TELL
|
|
" The hookah line goes taut and drags you down after the sub. A quick glance
|
|
to your right reveals that Lindsey's hookah has caught on the Cab's open
|
|
hatch and she is being dragged down too. Your chest begins to tighten under
|
|
the additional pressure. If you don't do something quickly, you will die." CR
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-I-INTO-TRENCH-2 ()
|
|
<TELL
|
|
" The cab pulls you deeper and deeper. Suddenly you feel a massive pain in
|
|
your chest and you black out. The last thing you see before dying is
|
|
Lindsey's hand reaching toward you for help.|"
|
|
>
|
|
<RT-END-OF-GAME>
|
|
>
|
|
|
|
<ROUTINE RT-I-OUT-OF-AIR-1 ()
|
|
<RT-QUEUE ,RT-I-OUT-OF-AIR-2 <+ ,GL-MOVES 1>>
|
|
<TELL " You can't hold your breath much longer." CR>
|
|
>
|
|
|
|
<ROUTINE RT-I-OUT-OF-AIR-2 ()
|
|
<MOVE ,CH-PLAYER ,RM-SUB-BAY>
|
|
<MOVE ,TH-DRY-SUIT ,RM-SUB-BAY>
|
|
<FCLEAR ,TH-DRY-SUIT ,FL-WORN>
|
|
<FCLEAR ,TH-DIVE-LOCKER ,FL-LOCKED>
|
|
<FSET ,TH-DIVE-LOCKER ,FL-OPEN>
|
|
<MOVE ,CH-HIPPY ,RM-SUB-BAY>
|
|
<MOVE ,CH-CATFISH ,RM-SUB-BAY>
|
|
<TELL
|
|
" You realize that you can't hold your breath any longer and that you are
|
|
going to die. Your chest aches, and you see bright lights dancing before your
|
|
eyes. But all you can think of is Lindsey's face as she disappeared into the
|
|
trough. Just when you think you are going to pass out, you notice that the
|
|
lights seem to be clustering around you, pushing you gently back towards
|
|
Deepcore. Unable to hold the air any longer, you expel it and expect to
|
|
inhale a mouthful of water. Instead you discover that you can breathe quite
|
|
normally.|
|
|
You reach out to touch the lights, but your hand passes right through
|
|
them. After a few moments, you relax and enjoy the ride. Soon you find
|
|
yourself approaching Deepcore. The lights stay with you until you surface
|
|
inside the MoonPool, and then they streak away back toward the trench.|
|
|
Catfish grabs your hand and hoists you to firm ground as easily as if you
|
|
were a child. He helps you out of your dive suit and into dry clothes. He
|
|
says that he thinks that there is some kind of benevolent alien at the bottom
|
|
of the Trench, and that Lindsey's monitoring system shows she is still alive,
|
|
down near the bottom of the trench.|
|
|
Hippy comes in and says, \"I think I can open this locker now.\" He holds
|
|
an electronic device near the lock, and the locker pops open. Inside it is
|
|
the fluid breathing system suit." CR
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-BOW"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-BOW
|
|
(LOC ROOMS)
|
|
(DESC "bow")
|
|
(FLAGS FL-LIGHTED FL-WATER)
|
|
(SYNONYM BOW)
|
|
(AFT TO RM-MISSILE-HATCH)
|
|
(WEST TO RM-TORPEDO-ROOM)
|
|
(IN TO RM-TORPEDO-ROOM)
|
|
(GLOBAL LG-MONTANA LG-TROUGH RM-MISSILE-HATCH)
|
|
(ACTION RT-RM-BOW)
|
|
>
|
|
|
|
<ROUTINE RT-RM-BOW ("OPTIONAL" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
|
|
<TELL " You ">
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL "are at">
|
|
)
|
|
(T
|
|
<TELL "come to">
|
|
)
|
|
>
|
|
<TELL
|
|
" the bow of the Montana. The missile hatch is aft of here. You see the huge
|
|
gash that was the Montana's death wound. When we get graphics into the game
|
|
you will only be able to fly the ROV in here. But for now, come on in!|"
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-TORPEDO-ROOM"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-TORPEDO-ROOM
|
|
(LOC ROOMS)
|
|
(DESC "torpedo room")
|
|
(FLAGS FL-INDOORS FL-LIGHTED FL-WATER)
|
|
(SYNONYM ROOM)
|
|
(ADJECTIVE TORPEDO)
|
|
(EAST TO RM-BOW)
|
|
(OUT TO RM-BOW)
|
|
(AFT TO RM-ENGINE-ROOM)
|
|
(GLOBAL LG-WALL LG-MONTANA RM-BOW RM-ENGINE-ROOM)
|
|
(ACTION RT-RM-TORPEDO-ROOM)
|
|
>
|
|
|
|
<ROUTINE RT-RM-TORPEDO-ROOM ("OPTIONAL" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
|
|
<TELL " You ">
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL "are in">
|
|
)
|
|
(T
|
|
<TELL "enter">
|
|
)
|
|
>
|
|
<TELL
|
|
" the Montana's torpedo room. Foreward lies the gash in the hull and aft is
|
|
the engine room.|"
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-ENGINE-ROOM"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-ENGINE-ROOM
|
|
(LOC ROOMS)
|
|
(DESC "engine room")
|
|
(FLAGS FL-INDOORS FL-LIGHTED FL-WATER)
|
|
(SYNONYM ROOM)
|
|
(ADJECTIVE ENGINE)
|
|
(FORE TO RM-TORPEDO-ROOM)
|
|
(AFT TO RM-MISSILE-ROOM)
|
|
(GLOBAL LG-WALL LG-MONTANA RM-TORPEDO-ROOM RM-MISSILE-ROOM)
|
|
(ACTION RT-RM-ENGINE-ROOM)
|
|
>
|
|
|
|
<ROUTINE RT-RM-ENGINE-ROOM ("OPTIONAL" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
|
|
<TELL " You ">
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL "are in">
|
|
)
|
|
(T
|
|
<TELL "enter">
|
|
)
|
|
>
|
|
<TELL
|
|
" the engine room of the Montana. The torpedo room is foreward, and aft is
|
|
the missile launching room.|"
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-MISSILE-ROOM"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-MISSILE-ROOM
|
|
(LOC ROOMS)
|
|
(DESC "missile launching room")
|
|
(FLAGS FL-INDOORS FL-LIGHTED FL-WATER)
|
|
(SYNONYM ROOM)
|
|
(ADJECTIVE MISSILE LAUNCHING)
|
|
(FORE TO RM-ENGINE-ROOM)
|
|
(GLOBAL LG-WALL LG-MONTANA RM-ENGINE-ROOM)
|
|
(ACTION RT-RM-MISSILE-ROOM)
|
|
>
|
|
|
|
<ROUTINE RT-RM-MISSILE-ROOM ("OPTIONAL" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
|
|
<TELL " You ">
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL "are in">
|
|
)
|
|
(T
|
|
<TELL "enter">
|
|
)
|
|
>
|
|
<TELL
|
|
" the missile launching room. On the wall hangs the missile access key.|"
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
<OBJECT TH-MISSILE-ACCESS-KEY
|
|
(LOC RM-MISSILE-ROOM)
|
|
(DESC "access key")
|
|
(FLAGS FL-KEY FL-TAKEABLE)
|
|
(SYNONYM KEY)
|
|
(ADJECTIVE MISSILE ACCESS)
|
|
(ACTION RT-TH-MISSILE-ACCESS-KEY)
|
|
>
|
|
|
|
<ROUTINE RT-TH-MISSILE-ACCESS-KEY ("OPT" (CONTEXT <>))
|
|
<RFALSE>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-ATTACK-CENTER"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-ATTACK-CENTER
|
|
(LOC ROOMS)
|
|
(DESC "attack center")
|
|
(FLAGS FL-INDOORS FL-LIGHTED FL-WATER)
|
|
(SYNONYM CENTER)
|
|
(ADJECTIVE ATTACK)
|
|
(EAST TO RM-MIDSHIP-HATCH IF LG-MIDSHIP-HATCH IS OPEN)
|
|
(OUT TO RM-MIDSHIP-HATCH IF LG-MIDSHIP-HATCH IS OPEN)
|
|
(AFT TO RM-SONAR-ROOM)
|
|
(GLOBAL LG-MIDSHIP-HATCH LG-WALL LG-MONTANA RM-SONAR-ROOM)
|
|
(ACTION RT-RM-ATTACK-CENTER)
|
|
>
|
|
|
|
<ROUTINE RT-RM-ATTACK-CENTER ("OPTIONAL" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK>
|
|
<TELL
|
|
" Cautiously, you swim through the hatch. You pull yourself along by the
|
|
rungs on the ladder, and then find yourself in the attack center. Your helmet
|
|
light reveals an eerie scene of floating debris and lop-sided high-tech
|
|
wreckage. You fight off the disorientation caused by everything being on its
|
|
side, and then locate the body of the captain and confirm that the missile
|
|
access key has been removed from his neck. Fighting the urge to vomit, you
|
|
turn away and see a companionway leading aft." CR
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-V-LOOK ,M-LOOK>
|
|
<TELL " You ">
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL "are in">
|
|
)
|
|
(<EQUAL? ,OHERE ,RM-MIDSHIP-HATCH>
|
|
<TELL
|
|
"swim through the hatch to the attack center. Aft, you see a companionway
|
|
leading into the darkness.|"
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
"enter the attack center. Above you is the midship hatch and the sonar shack
|
|
lies aft.|"
|
|
>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-SONAR-ROOM"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-SONAR-ROOM
|
|
(LOC ROOMS)
|
|
(DESC "sonar room")
|
|
(FLAGS FL-INDOORS FL-LIGHTED FL-WATER)
|
|
(SYNONYM SHACK)
|
|
(ADJECTIVE SONAR)
|
|
(FORE TO RM-ATTACK-CENTER)
|
|
(AFT TO RM-COMM-ROOM)
|
|
(GLOBAL LG-WALL LG-MONTANA RM-ATTACK-CENTER RM-COMM-ROOM)
|
|
(ACTION RT-RM-SONAR-ROOM)
|
|
>
|
|
|
|
<ROUTINE RT-RM-SONAR-ROOM ("OPTIONAL" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK>
|
|
<TELL
|
|
" Slowly, you swim through the doorway and come to the sonar room. The
|
|
sonarman is slewed sideways, still strapped into his chair. He stares at the
|
|
broken screen through blank eyes.|
|
|
Doors here lead fore and aft." CR
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-V-LOOK ,M-LOOK>
|
|
<TELL " You ">
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL "are in">
|
|
)
|
|
(T
|
|
<TELL "enter">
|
|
)
|
|
>
|
|
<TELL " the sonar room. Doors here lead fore and aft.|">
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-COMM-ROOM"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-COMM-ROOM
|
|
(LOC ROOMS)
|
|
(DESC "comm room")
|
|
(FLAGS FL-INDOORS FL-LIGHTED FL-WATER)
|
|
(SYNONYM ROOM)
|
|
(ADJECTIVE COMM COMMUNICATIONS)
|
|
(FORE TO RM-SONAR-ROOM)
|
|
(AFT PER RT-THRU-BUCKLED-DOOR)
|
|
(GLOBAL LG-BUCKLED-DOOR LG-WALL LG-MONTANA RM-SONAR-ROOM RM-SUB-CORRIDOR)
|
|
(ACTION RT-RM-COMM-ROOM)
|
|
>
|
|
|
|
<ROUTINE RT-RM-COMM-ROOM ("OPTIONAL" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK>
|
|
<TELL
|
|
" You swim into the communications room, which was stacked floor to
|
|
ceiling with high-tech equipment. The door in the aft bulkhead has buckled
|
|
and looks as if it is jammed shut." CR
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-V-LOOK ,M-LOOK>
|
|
<TELL " You ">
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL "are in">
|
|
)
|
|
(T
|
|
<TELL "enter">
|
|
)
|
|
>
|
|
<TELL
|
|
" the communications room. The sonar shack is to the fore and aft lies a
|
|
corridor.|"
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-THRU-BUCKLED-DOOR ("OPT" (QUIET <>))
|
|
<COND
|
|
(<FSET? ,LG-BUCKLED-DOOR ,FL-OPEN>
|
|
<RETURN ,RM-SUB-CORRIDOR>
|
|
)
|
|
(T
|
|
<COND
|
|
(<NOT .QUIET>
|
|
<TELL
|
|
" You push up against the door. It gives a little, and then refuses to
|
|
budge.|"
|
|
>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "LG-BUCKLED-DOOR"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT LG-BUCKLED-DOOR
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "door")
|
|
(FLAGS FL-DOOR FL-OPENABLE)
|
|
(SYNONYM DOOR)
|
|
(ADJECTIVE BUCKLED JAMMED)
|
|
(ACTION RT-LG-BUCKLED-DOOR)
|
|
>
|
|
|
|
<ROUTINE RT-LG-BUCKLED-DOOR ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
" The door in the aft bulkhead has buckled and looks as if it is jammed
|
|
shut." CR
|
|
>
|
|
)
|
|
(<VERB? OPEN PUSH>
|
|
<TELL
|
|
" You push up against the door. It gives a little, and then refuses to
|
|
budge.|"
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-SUB-CORRIDOR"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-SUB-CORRIDOR
|
|
(LOC ROOMS)
|
|
(DESC "corridor")
|
|
(FLAGS FL-INDOORS FL-LIGHTED FL-WATER)
|
|
(SYNONYM CORRIDOR)
|
|
(FORE TO RM-COMM-ROOM)
|
|
(DOWN TO RM-CAPTAINS-ROOM)
|
|
(GLOBAL LG-WALL LG-MONTANA RM-COMM-ROOM RM-CAPTAINS-ROOM)
|
|
(ACTION RT-RM-SUB-CORRIDOR)
|
|
>
|
|
|
|
<GLOBAL GL-CORRIDOR-BLOCKED? T <> BYTE>
|
|
|
|
<ROUTINE RT-RM-SUB-CORRIDOR ("OPTIONAL" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK>
|
|
<TELL
|
|
" You enter a corridor that leads into the heart of the submarine. Below
|
|
you is an open door leading into a stateroom. Only a few feet beyond the
|
|
door, the floor starts to pinch in to meet the ceiling where the corridor has
|
|
been crushed like the end of a paper towel roll." CR
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-V-LOOK ,M-LOOK>
|
|
<TELL " You ">
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL "are in">
|
|
)
|
|
(T
|
|
<TELL "enter">
|
|
)
|
|
>
|
|
<TELL
|
|
" a corridor. The comm room is foreward and below you is the captain's
|
|
quarters.|">
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-CAPTAINS-ROOM"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-CAPTAINS-ROOM
|
|
(LOC ROOMS)
|
|
(DESC "captain's quarters")
|
|
(FLAGS FL-INDOORS FL-LIGHTED FL-WATER)
|
|
(SYNONYM QUARTERS ROOM STATEROOM)
|
|
(ADJECTIVE CAPTAIN STATE)
|
|
(UP TO RM-SUB-CORRIDOR)
|
|
(GLOBAL LG-WALL LG-MONTANA RM-SUB-CORRIDOR)
|
|
(ACTION RT-RM-CAPTAINS-ROOM)
|
|
>
|
|
|
|
<ROUTINE RT-RM-CAPTAINS-ROOM ("OPTIONAL" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK>
|
|
<TELL
|
|
" You swim down into the room below you, which turns out to be the
|
|
captain's stateroom. The room is curiously untouched by the disaster. Except
|
|
for the fact that everything has rotated ninety degrees, it is as neat and
|
|
tidy as if it were awaiting an admiral's inspection. The bunk is made.
|
|
Interestingly enough, the framed photograph on the wall doesn't seem to have
|
|
shifted position, even though the sub is lying on its side." CR
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-V-LOOK ,M-LOOK>
|
|
<TELL " You ">
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL "are in">
|
|
)
|
|
(T
|
|
<TELL "enter">
|
|
)
|
|
>
|
|
<TELL " the captain's stateroom. Above you is a corridor.|">
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-PHOTOGRAPH"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-PHOTOGRAPH
|
|
(LOC RM-CAPTAINS-ROOM)
|
|
(DESC "photograph")
|
|
(FLAGS FL-NO-DESC)
|
|
(SYNONYM PHOTOGRAPH PICTURE FRAME)
|
|
(ADJECTIVE FRAMED)
|
|
(ACTION RT-TH-PHOTOGRAPH)
|
|
>
|
|
|
|
<ROUTINE RT-TH-PHOTOGRAPH ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,TH-PHOTOGRAPH ,FL-SEEN>
|
|
<TELL
|
|
" The picture is of the same man whose body you saw in the control room.
|
|
He is standing with his arm around a woman, and they are both smiling into
|
|
the camera. At the bottom is scrawled, \"Twenty years before the mast. June
|
|
30, 1989. Love, Helen.\"" CR
|
|
>
|
|
)
|
|
(<VERB? LOOK-BEHIND>
|
|
<COND
|
|
(<FSET? ,TH-SAFE ,FL-SEEN>
|
|
<TELL " Behind the picture is the wall safe." CR>
|
|
)
|
|
(T
|
|
<FSET ,TH-SAFE ,FL-SEEN>
|
|
; <FCLEAR ,TH-SAFE ,FL-INVISIBLE>
|
|
<MOVE ,TH-SAFE ,RM-CAPTAINS-ROOM>
|
|
<TELL
|
|
" You push aside the picture and discover a wall safe." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-SAFE"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-SAFE
|
|
(LOC RM-CAPTAINS-ROOM)
|
|
(DESC "safe")
|
|
(FLAGS FL-CONTAINER FL-LOCKED FL-NO-DESC FL-OPENABLE FL-SEARCH)
|
|
(SYNONYM SAFE DIAL)
|
|
(ADJECTIVE WALL)
|
|
(ACTION RT-TH-SAFE)
|
|
>
|
|
|
|
<GLOBAL GL-SAFE-NUM 0 <> BYTE>
|
|
|
|
<ROUTINE RT-TH-SAFE ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
; (<AND <NOT <FSET? ,TH-SAFE ,FL-SEEN>>
|
|
<NOT <EVERYWHERE-VERB? <COND (,NOW-PRSI 2) (T 1)>>>
|
|
>
|
|
<NP-CANT-SEE>
|
|
)
|
|
(<NOUN-USED? ,TH-SAFE ,W?DIAL>
|
|
<COND
|
|
(<VERB? EXAMINE>
|
|
<TELL " The dial is turned to " N ,GL-SAFE-NUM "." CR>
|
|
)
|
|
(<VERB? TURN>
|
|
<SETG GL-SAFE-NUM <- <RANDOM 101> 1>>
|
|
<TELL " You spin the dial." CR>
|
|
)
|
|
(<VERB? TURN-TO>
|
|
<COND
|
|
(<MC-PRSI? ,INTNUM>
|
|
<COND
|
|
(<OR <L? ,P-NUMBER 0>
|
|
<G? ,P-NUMBER 100>
|
|
>
|
|
<TELL
|
|
" The dial can only be turned to numbers between 0 and 100, inclusive." CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL " You turn the dial to " N ,P-NUMBER ".">
|
|
<COND
|
|
(<FSET? ,TH-SAFE ,FL-OPEN>)
|
|
(<EQUAL? ,P-NUMBER 30>
|
|
<COND
|
|
(<EQUAL? ,GL-SAFE-NUM 6>
|
|
<FSET ,TH-SAFE ,FL-ON>
|
|
)
|
|
(T
|
|
<FCLEAR ,TH-SAFE ,FL-ON>
|
|
)
|
|
>
|
|
)
|
|
(<EQUAL? ,P-NUMBER 69>
|
|
<COND
|
|
(<AND <EQUAL? ,GL-SAFE-NUM 30>
|
|
<FSET? ,TH-SAFE ,FL-ON>
|
|
>
|
|
<FCLEAR ,TH-SAFE ,FL-ON>
|
|
<FCLEAR ,TH-SAFE ,FL-LOCKED>
|
|
<FSET ,TH-SAFE ,FL-OPEN>
|
|
<TELL " The safe door opens.">
|
|
<COND
|
|
(<RT-SEE-ANYTHING-IN? ,TH-SAFE>
|
|
<TELL " Inside you see">
|
|
<RT-PRINT-CONTENTS ,TH-SAFE>
|
|
<TELL ".">
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<FCLEAR ,TH-SAFE ,FL-ON>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<SETG GL-SAFE-NUM ,P-NUMBER>
|
|
<CRLF>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? CLOSE>
|
|
<COND
|
|
(<FSET? ,TH-SAFE ,FL-OPEN>
|
|
<FCLEAR ,TH-SAFE ,FL-OPEN>
|
|
<FSET ,TH-SAFE ,FL-LOCKED>
|
|
<SETG GL-SAFE-NUM <- <RANDOM 101> 1>>
|
|
<TELL " You close the safe and spin the dial." CR>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
" The safe is a combination safe with numbers on the dial from 0 to 100." CR
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<OBJECT TH-PLASTIC-CARD
|
|
(LOC TH-SAFE)
|
|
(DESC "plastic card")
|
|
(FLAGS FL-READABLE FL-TAKEABLE)
|
|
(SYNONYM CARD CODE CODES)
|
|
(ADJECTIVE PLASTIC WIRING)
|
|
(ACTION RT-TH-PLASTIC-CARD)
|
|
>
|
|
|
|
<ROUTINE RT-TH-PLASTIC-CARD ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? EXAMINE READ>
|
|
<TELL
|
|
" The card has row after row of meaningless numbers written on it." CR
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-PLASTIQUE"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-PLASTIQUE
|
|
(LOC RM-DRILL-ROOM)
|
|
(DESC "plastique")
|
|
(FLAGS FL-SURFACE FL-TAKEABLE FL-SEARCH)
|
|
(SYNONYM PLASTIQUE EXPLOSIVE TAPE)
|
|
(ADJECTIVE PLASTIC)
|
|
(OWNER 0)
|
|
(ACTION RT-TH-PLASTIQUE)
|
|
>
|
|
|
|
<ROUTINE RT-TH-PLASTIQUE ("OPT" (CONTEXT <>) "AUX" OBJ V)
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(,NOW-PRSI
|
|
<RFALSE>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
" The plastique is a flat package with some sticky, two-sided tape on the
|
|
bottom."
|
|
>
|
|
<COND
|
|
(<IN? ,TH-DETONATOR ,TH-PLASTIQUE>
|
|
<TELL " There is a detonator attached to it.">
|
|
)
|
|
>
|
|
<CRLF>
|
|
)
|
|
(<VERB? ATTACH PUT>
|
|
<COND
|
|
(<MC-PRSI? ,LG-BUCKLED-DOOR>
|
|
<MOVE ,TH-PLASTIQUE ,HERE>
|
|
<PUTP ,TH-PLASTIQUE ,P?OWNER ,LG-BUCKLED-DOOR>
|
|
<TELL " You stick the plastique to the door." CR>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? TAKE>
|
|
<COND
|
|
(<SET OBJ <GETP ,TH-PLASTIQUE ,P?OWNER>>
|
|
<SET V <ITAKE>>
|
|
<COND
|
|
(<EQUAL? .V ,M-FATAL>
|
|
<RFATAL>
|
|
)
|
|
(.V
|
|
<PUTP ,TH-PLASTIQUE ,P?OWNER <>>
|
|
<TELL " You remove the plastique from" the .OBJ "." CR>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-DETONATOR"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-DETONATOR
|
|
(LOC RM-DRILL-ROOM)
|
|
(DESC "detonator")
|
|
(FLAGS FL-TAKEABLE)
|
|
(SYNONYM DETONATOR TIMER DIAL SWITCH)
|
|
(ACTION RT-TH-DETONATOR)
|
|
>
|
|
|
|
<GLOBAL GL-DETONATOR-TIME 10 <> BYTE>
|
|
|
|
<ROUTINE RT-TH-DETONATOR ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<COND
|
|
(<NOUN-USED? ,TH-DETONATOR ,W?DIAL ,W?TIMER>
|
|
<TELL " The dial is set to " N ,GL-DETONATOR-TIME "." CR>
|
|
)
|
|
(<NOUN-USED? ,TH-DETONATOR ,W?SWITCH>
|
|
<TELL " The switch is ">
|
|
<COND
|
|
(<FSET? ,TH-DETONATOR ,FL-ON>
|
|
<TELL "on">
|
|
)
|
|
(T
|
|
<TELL "off">
|
|
)
|
|
>
|
|
<TELL "." CR>
|
|
)
|
|
(T
|
|
<TELL
|
|
" The detonator is deceptively innocent looking. It has a timer that is
|
|
calibrated in units of 5 from 10 to 60. Below the face of the timer is a
|
|
single switch." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? ATTACH PUT-IN PUT>
|
|
<COND
|
|
(<AND <MC-PRSO? ,TH-DETONATOR>
|
|
<MC-PRSI? ,TH-PLASTIQUE>
|
|
>
|
|
<MOVE ,TH-DETONATOR ,TH-PLASTIQUE>
|
|
<TELL
|
|
" You firmly imbed the prongs of the detonator into the plastique." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? TURN-TO>
|
|
<COND
|
|
(<OR <NOT <MC-PRSI? ,INTNUM>>
|
|
<L? ,P-NUMBER 10>
|
|
<G? ,P-NUMBER 60>
|
|
<NOT <ZERO? <MOD ,P-NUMBER 5>>>
|
|
>
|
|
<TELL
|
|
" The timer can only be set in increments of 5 between the numbers of 10
|
|
and 60, inclusive.|"
|
|
>
|
|
<RFATAL>
|
|
)
|
|
(T
|
|
<SETG GL-DETONATOR-TIME ,P-NUMBER>
|
|
<TELL " You set the dial to " N ,P-NUMBER "." CR>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? LISTEN>
|
|
<COND
|
|
(<FSET? ,TH-DETONATOR ,FL-ON>
|
|
<TELL " You hear a faint whirring." CR>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? TURN-ON>
|
|
<COND
|
|
(<FSET? ,TH-DETONATOR ,FL-ON>
|
|
<RT-ALREADY-MSG "armed">
|
|
)
|
|
(T
|
|
<FSET ,TH-DETONATOR ,FL-ON>
|
|
<RT-QUEUE ,RT-I-DETONATOR <+ ,GL-MOVES <* ,GL-DETONATOR-TIME 2>>>
|
|
<TELL " You turn the switch and hear a faint whirr." CR>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? TURN-OFF>
|
|
<COND
|
|
(<NOT <FSET? ,TH-DETONATOR ,FL-ON>>
|
|
<RT-ALREADY-MSG "disarmed">
|
|
)
|
|
(T
|
|
<FCLEAR ,TH-DETONATOR ,FL-ON>
|
|
<RT-DEQUEUE ,RT-I-DETONATOR>
|
|
<SETG GL-DETONATOR-TIME 10>
|
|
<TELL
|
|
" You turn off the detonator. The timer resets itself to ten minutes." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-I-DETONATOR ("OPT" (CONTEXT <>) "AUX" L M)
|
|
<SET L <LOC ,TH-PLASTIQUE>>
|
|
<SET M <META-LOC ,TH-PLASTIQUE>>
|
|
<COND
|
|
(<IN? ,TH-DETONATOR ,TH-PLASTIQUE>
|
|
<REMOVE ,TH-PLASTIQUE>
|
|
<COND
|
|
(<AND <FSET? .M ,FL-WATER>
|
|
<FSET? .M ,FL-INDOORS>
|
|
<FSET? ,HERE ,FL-WATER>
|
|
<FSET? ,HERE ,FL-INDOORS>
|
|
>
|
|
; "Both plastique and player in Montana."
|
|
<COND
|
|
(<MC-HERE? .M>
|
|
<TELL
|
|
" Suddenly you see a bright flash. An enormous shock wave slams into you
|
|
and instantly kills you.|"
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
" Suddenly you hear a muffled explosion. Seconds later an enormous shock
|
|
wave slams you up against a bulkhead and kills you.|"
|
|
>
|
|
)
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
(<AND <EQUAL? .L ,RM-COMM-ROOM>
|
|
<EQUAL? <GETP ,TH-PLASTIQUE ,P?OWNER> ,LG-BUCKLED-DOOR>
|
|
>
|
|
<FSET ,LG-BUCKLED-DOOR ,FL-OPEN>
|
|
<COND
|
|
(<GLOBAL-IN? ,LG-MONTANA ,HERE> ;"Montana visible?"
|
|
<TELL
|
|
" Suddenly you hear a muffled explosion. The Montana seems to rock for a
|
|
moment, and then settle back into its former position on the ledge." CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
" From far away, you hear a muffled thud. The plastique must have gone off
|
|
inside the Montana." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<FSET? .M ,FL-WATER>
|
|
<COND
|
|
(<FSET? .M ,FL-INDOORS>
|
|
<COND
|
|
(<GLOBAL-IN? ,LG-MONTANA ,HERE> ;"Montana visible?"
|
|
<TELL
|
|
" Suddenly you hear a muffled explosion. The Montana seems to rock for a
|
|
moment, and then it slides off the ledge and plummets into the chasm!"
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
" From far away, you hear a muffled thud. The plastique must have gone off
|
|
inside the Montana. Unbeknownst to you, the blast jars loose the submarine,
|
|
and it falls into the chasm."
|
|
>
|
|
)
|
|
>
|
|
<TELL
|
|
" Seconds later, the sub slams against the wall of the chasm, ripping off
|
|
the timing device, and igniting the nuclear warhead. Everything nearby is
|
|
instantly vaporized, including you.|"
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
(T
|
|
<TELL
|
|
" The plastique goes \"BOOM\" in the water." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(T ;"Plastique in Deepcore"
|
|
<COND
|
|
(<NOT <FSET? ,HERE ,FL-WATER>>
|
|
<TELL
|
|
" Suddenly, a huge explosion rips through Deepcore, killing you before you
|
|
even have time to figure out what caused it.|"
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
" Suddenly, a huge explosion rips through Deepcore, causing you to lose the
|
|
will to live.|"
|
|
>
|
|
)
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
>
|
|
)
|
|
(<ACCESSIBLE? ,TH-DETONATOR>
|
|
<FCLEAR ,TH-DETONATOR ,FL-ON>
|
|
<SETG ,GL-DETONATOR-TIME 10>
|
|
<TELL " The detonator makes a faint 'click'." CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
" Plastique Player Result
|
|
Door Montana Shock wave. Killed.
|
|
Door Outside Montana Montana rocks. *
|
|
Door Sea floor Muffled thud. *
|
|
Door Deepcore Muffled thud. *
|
|
Montana Same room Flash. Killed.
|
|
Montana Montana Shock wave. Killed.
|
|
Montana Outside Montana Montana slides into trench. Vaporize.
|
|
Montana Sea floor Far away muffled thud. Vaporize.
|
|
Montana Deepcore Far away muffled thud. Vaporize.
|
|
Outside Montana ?
|
|
Sea floor ?
|
|
Deepcore Montana ?
|
|
Deepcore Outside Montana ?
|
|
Deepcore Sea floor ?
|
|
Deepcore Deepcore Player killed."
|
|
|
|
;"***************************************************************************"
|
|
; "end of file"
|
|
;"***************************************************************************"
|
|
|