1507 lines
32 KiB
Plaintext
1507 lines
32 KiB
Plaintext
;"***************************************************************************"
|
|
; "game : Arthur"
|
|
; "file : RAVEN.ZIL"
|
|
; "auth : $Author: RAB $"
|
|
; "date : $Date: 15 May 1989 18:50:48 $"
|
|
; "revs : $Revision: 1.80 $"
|
|
; "vers : 1.0"
|
|
;"---------------------------------------------------------------------------"
|
|
; "Giant Raven Puzzle"
|
|
; "Copyright (C) 1989 Infocom, Inc. All rights reserved."
|
|
;"***************************************************************************"
|
|
|
|
<CONSTANT K-CLIMB-UP 1>
|
|
<CONSTANT K-CLIMB-DN 0>
|
|
|
|
<CONSTANT K-RAVEN-TREE-MAX 6>
|
|
<CONSTANT K-RAVEN-TREE-HALF </ ,K-RAVEN-TREE-MAX 2>>
|
|
|
|
<GLOBAL GL-RAV-P-CNT 0 <> BYTE>
|
|
|
|
;"***************************************************************************"
|
|
; "SUPPORT ROUTINES - NEEDED BUT WITH SILLY PARTS"
|
|
;"***************************************************************************"
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RT-RAV-CANT-CLIMB-UP"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROUTINE RT-RAV-CANT-CLIMB-UP ()
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-ARTHUR>
|
|
<TELL
|
|
"You can't climb the tree. There are no branches near the ground." CR
|
|
>
|
|
)
|
|
(<MC-FORM? ,K-FORM-BADGER>
|
|
<TELL "Your claws were designed for digging, not climbing." CR>
|
|
)
|
|
(<MC-FORM? ,K-FORM-TURTLE>
|
|
<TELL "Turtles can't climb trees." CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"***************************************************************************"
|
|
; "SUPPORT ROUTINES - SERIOUS"
|
|
;"***************************************************************************"
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RT-RAV-CLIMBING"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROUTINE RT-RAV-CLIMBING (UD-FLAG)
|
|
<TELL "You continue to climb ">
|
|
<COND
|
|
(<EQUAL? .UD-FLAG ,K-CLIMB-UP>
|
|
<TELL "up">
|
|
)
|
|
(T
|
|
<TELL "down">
|
|
)
|
|
>
|
|
<TELL " the tree. It looks like a long way ">
|
|
<COND
|
|
(<EQUAL? .UD-FLAG ,K-CLIMB-UP>
|
|
<COND
|
|
(<L=? ,GL-RAV-P-CNT ,K-RAVEN-TREE-HALF>
|
|
<TELL "up">
|
|
)
|
|
(T
|
|
<TELL "back down">
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<COND
|
|
(<L=? ,GL-RAV-P-CNT ,K-RAVEN-TREE-HALF>
|
|
<TELL "back up">
|
|
)
|
|
(T
|
|
<TELL "down">
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<TELL "." CR>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RT-FALL-OFF-TREE"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROUTINE RT-FALL-OFF-TREE ()
|
|
<TELL
|
|
"|You lose your grip on" the ,RM-RAVEN-TREE " and fall to the ground. "
|
|
>
|
|
<COND
|
|
(<L? ,GL-RAV-P-CNT 4>
|
|
<MOVE ,CH-PLAYER ,RM-GROVE>
|
|
<TELL "You are a bit bruised and battered but otherwise alright." CR>
|
|
)
|
|
(T
|
|
<TELL "Too bad you were so far up. The fall was fatal.|">
|
|
<RT-END-OF-GAME>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"***************************************************************************"
|
|
; "OBJECTS & OBJECT ACTIONS"
|
|
;"***************************************************************************"
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-RAVEN-EGG"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-RAVEN-EGG
|
|
(LOC RM-RAVEN-NEST)
|
|
(DESC "gold egg")
|
|
(FLAGS FL-TAKEABLE)
|
|
(SYNONYM EGG)
|
|
(ADJECTIVE GIANT GOLD GOLDEN RAVEN)
|
|
(OWNER CH-RAVEN)
|
|
(SCORE 0)
|
|
(SIZE 15)
|
|
(GENERIC RT-GN-EGG)
|
|
(ACTION RT-TH-RAVEN-EGG)
|
|
>
|
|
|
|
; "TH-RAVEN-EGG flags:"
|
|
; " FL-BROKEN - Player has received points for taking egg from grove"
|
|
|
|
<ROUTINE RT-TH-RAVEN-EGG ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,TH-RAVEN-EGG ,FL-SEEN>
|
|
<TELL "It is a huge hunk of gold in the shape of a perfect egg." CR>
|
|
)
|
|
(<VERB? SIT>
|
|
<TELL
|
|
"You squat down on top of the egg, clucking to yourself occasionally and
|
|
dutifully trying to fool the egg into thinking that you are a medieval hen.
|
|
Unfortunately, this has no effect, other than to make you feel ridiculous,
|
|
so after a while you get up." CR
|
|
>
|
|
<SETG GL-QUESTION 1>
|
|
<RT-AUTHOR-MSG "Geez! You'll try anything, won't you?">
|
|
)
|
|
>
|
|
>
|
|
|
|
;"***************************************************************************"
|
|
; "CHARACTERS & CHARACTER ACTIONS"
|
|
;"***************************************************************************"
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "CH-RAVEN"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT CH-RAVEN
|
|
(LOC RM-ABOVE-FOREST)
|
|
(DESC "giant raven")
|
|
(FLAGS FL-ALIVE FL-NO-DESC FL-OPEN FL-SEARCH)
|
|
(SYNONYM RAVEN BIRD)
|
|
(ADJECTIVE GIANT BLACK)
|
|
(GENERIC RT-GN-BIRD)
|
|
(ACTION RT-CH-RAVEN)
|
|
(CONTFCN RT-CH-RAVEN)
|
|
>
|
|
|
|
; "CH-RAVEN flags:"
|
|
; " FL-BROKEN - Raven has returned one egg to the nest"
|
|
; " FL-LOCKED - Raven is retrieving an egg"
|
|
|
|
<CONSTANT K-RAVEN-SQUAWKS-MSG "The giant raven squawks at you in response.">
|
|
|
|
<ROUTINE RT-CH-RAVEN ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-WINNER>
|
|
<TELL ,K-RAVEN-SQUAWKS-MSG CR>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(,NOW-PRSI
|
|
<RFALSE>
|
|
)
|
|
(<AND <VERB? TELL>
|
|
,P-CONT
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<AND <SPEAKING-VERB?>
|
|
<IN? ,CH-RAVEN ,HERE>
|
|
>
|
|
<TELL ,K-RAVEN-SQUAWKS-MSG CR>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,CH-RAVEN ,FL-SEEN>
|
|
<COND
|
|
(<IN? ,CH-RAVEN ,HERE>
|
|
<TELL
|
|
The ,CH-RAVEN " is a huge bird with a wingspan of around twenty feet. It has
|
|
a long, sharp beak and "
|
|
>
|
|
<COND
|
|
; "Assumes the raven only carries one thing at a time."
|
|
(<FIRST? ,CH-RAVEN>
|
|
<TELL "is holding" the <FIRST? ,CH-RAVEN> " in its ">
|
|
)
|
|
>
|
|
<TELL "huge talons." CR>
|
|
)
|
|
(<IN? ,CH-RAVEN ,RM-GROVE>
|
|
<TELL
|
|
The ,CH-RAVEN " is below you in" the ,RM-GROVE "." CR
|
|
>
|
|
)
|
|
(<IN? ,CH-RAVEN ,RM-RAVEN-NEST>
|
|
<TELL
|
|
The ,CH-RAVEN " is in" the ,RM-RAVEN-NEST " at the top of" the ,RM-RAVEN-TREE "." CR
|
|
>
|
|
)
|
|
(<IN? ,CH-RAVEN ,RM-ABOVE-FOREST>
|
|
<COND
|
|
; "Assumes the raven only carries one thing at a time."
|
|
(<FIRST? ,CH-RAVEN>
|
|
<TELL
|
|
The ,CH-RAVEN " is struggling to bring" the <FIRST? ,CH-RAVEN> " up to its nest." CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
The ,CH-RAVEN " is circling far above you in the sky." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? ATTACK>
|
|
<COND
|
|
(<AND <MC-HERE? ,RM-RAVEN-NEST>
|
|
<IN? ,CH-RAVEN ,RM-RAVEN-NEST>
|
|
>
|
|
<TELL
|
|
The+verb ,WINNER "flail" " wildly at the raven, but" his ,WINNER " blows have
|
|
no effect." CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL The ,CH-RAVEN " isn't close enough." CR>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<GLOBAL GL-RAVEN-OBJ:OBJECT <>>
|
|
|
|
<CONSTANT K-RAVEN-APPROACH-MSG "You hear the beat of approaching wings.">
|
|
|
|
<ROUTINE RT-I-RAV-GROVE-1 ()
|
|
<COND
|
|
(<OR <NOT ,GL-RAVEN-OBJ>
|
|
<NOT <IN? ,GL-RAVEN-OBJ ,RM-GROVE>>
|
|
>
|
|
<RFALSE>
|
|
)
|
|
>
|
|
<FSET ,CH-RAVEN ,FL-LOCKED> ; "Raven on an egg mission."
|
|
<RT-QUEUE ,RT-I-RAV-GROVE-2 <+ ,GL-MOVES 1>>
|
|
<COND
|
|
(<FSET? ,CH-PLAYER ,FL-ASLEEP>
|
|
<RFALSE>
|
|
)
|
|
(<MC-HERE? ,RM-GROVE>
|
|
<TELL CR ,K-RAVEN-APPROACH-MSG CR>
|
|
)
|
|
(<MC-HERE? ,RM-ABOVE-FOREST ,RM-RAVEN-TREE>
|
|
<TELL
|
|
"|The glint catches the giant raven's eye and it swoops down towards"
|
|
the ,RM-GROVE "." CR
|
|
>
|
|
<COND
|
|
(<MC-HERE? ,RM-ABOVE-FOREST>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-DESC>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
(<MC-HERE? ,RM-RAVEN-NEST>
|
|
<TELL
|
|
"|You see" the ,CH-RAVEN " swoop down towards" the ,RM-GROVE "." CR
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<CONSTANT K-RAVEN-SWOOP-MSG
|
|
"Suddenly a giant raven swoops down from the sky. ">
|
|
|
|
<ROUTINE RT-I-RAV-GROVE-2 ()
|
|
<COND
|
|
(<OR <NOT ,GL-RAVEN-OBJ>
|
|
<NOT <IN? ,GL-RAVEN-OBJ ,RM-GROVE>>
|
|
>
|
|
<FCLEAR ,CH-RAVEN ,FL-LOCKED>
|
|
<COND
|
|
(<FSET? ,CH-PLAYER ,FL-ASLEEP>
|
|
<RFALSE>
|
|
)
|
|
(<MC-HERE? ,RM-GROVE>
|
|
<TELL
|
|
CR ,K-RAVEN-SWOOP-MSG "It gets a very puzzled look on its face, and then
|
|
it flies back up out of sight." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<RT-QUEUE ,RT-I-RAV-NEST-1 <+ ,GL-MOVES 2>>
|
|
<MOVE ,GL-RAVEN-OBJ ,CH-RAVEN>
|
|
<COND
|
|
(<FSET? ,CH-PLAYER ,FL-ASLEEP>
|
|
<RFALSE>
|
|
)
|
|
(<MC-HERE? ,RM-GROVE>
|
|
<TELL
|
|
CR ,K-RAVEN-SWOOP-MSG "It clutches" the ,GL-RAVEN-OBJ " in its talons and,
|
|
struggling from the weight, flies up out of sight." CR
|
|
>
|
|
)
|
|
(<MC-HERE? ,RM-ABOVE-FOREST ,RM-RAVEN-TREE>
|
|
<TELL
|
|
CR The ,CH-RAVEN " takes" the ,GL-RAVEN-OBJ " and begins struggling upward." CR
|
|
>
|
|
<COND
|
|
(<MC-HERE? ,RM-ABOVE-FOREST>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-DESC>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-I-RAV-NEST-1 ()
|
|
<RT-QUEUE ,RT-I-RAV-NEST-2 <+ ,GL-MOVES 1>>
|
|
<COND
|
|
(<FSET? ,CH-PLAYER ,FL-ASLEEP>
|
|
<RFALSE>
|
|
)
|
|
(<MC-HERE? ,RM-RAVEN-NEST>
|
|
<TELL CR ,K-RAVEN-APPROACH-MSG CR>
|
|
)
|
|
(<MC-HERE? ,RM-ABOVE-FOREST ,RM-RAVEN-TREE>
|
|
<TELL "|The raven approaches its nest." CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-I-RAV-NEST-2 ("AUX" (1ST? <>) RM)
|
|
<COND
|
|
(<MC-HERE? ,RM-RAVEN-NEST>
|
|
<TELL CR The ,CH-RAVEN>
|
|
<COND
|
|
(<NOT <IN? ,CH-RAVEN ,RM-RAVEN-NEST>>
|
|
<COND
|
|
(<NOT <FSET? ,CH-PLAYER ,FL-ASLEEP>>
|
|
<SET 1ST? T>
|
|
)
|
|
>
|
|
<MOVE ,CH-RAVEN ,RM-RAVEN-NEST>
|
|
<FCLEAR ,CH-RAVEN ,FL-LOCKED>
|
|
<TELL " arrives in the nest">
|
|
<COND
|
|
(,GL-RAVEN-OBJ
|
|
<MOVE ,GL-RAVEN-OBJ ,RM-RAVEN-NEST>
|
|
<TELL ", drops" the ,GL-RAVEN-OBJ ",">
|
|
<COND
|
|
(<AND <EQUAL? ,GL-RAVEN-OBJ ,TH-RAVEN-EGG>
|
|
<GETP ,TH-RAVEN-EGG ,P?SCORE>
|
|
>
|
|
<FCLEAR ,TH-RAVEN-EGG ,FL-BROKEN>
|
|
<PUTP ,TH-RAVEN-EGG ,P?SCORE 0>
|
|
)
|
|
>
|
|
<SETG GL-RAVEN-OBJ <>>
|
|
)
|
|
>
|
|
<TELL " and ">
|
|
)
|
|
>
|
|
<COND
|
|
(<OR <MC-FORM? ,K-FORM-ARTHUR>
|
|
<FSET? ,CH-PLAYER ,FL-ASLEEP>
|
|
>
|
|
<COND
|
|
(.1ST?
|
|
<RT-QUEUE ,RT-I-RAV-NEST-2 <+ ,GL-MOVES 1>>
|
|
<TELL
|
|
" starts buffeting you with it's huge wings. The deafening squawks emerging
|
|
from it's sharp beak quickly convince you that it is unhappy at your presence.
|
|
The raven unsheathes its talons and fixes you with a glassy-eyed stare." CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
"'s razor-like talons dig into your flesh and kill you instantly.|"
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
>
|
|
)
|
|
(<MC-FORM? ,K-FORM-OWL ,K-FORM-SALAMANDER>
|
|
<RT-QUEUE ,RT-I-RAV-NEST-3 <+ ,GL-MOVES 2>>
|
|
<TELL " chases you out.||">
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-OWL>
|
|
<RT-GOTO ,RM-ABOVE-FOREST T>
|
|
)
|
|
(T
|
|
<COND
|
|
(<SET RM <RT-CLIMB-DOWN>>
|
|
<RT-GOTO .RM T>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<MC-FORM? ,K-FORM-TURTLE>
|
|
<TELL
|
|
" picks you up. He carries you off and drops you from a great height onto
|
|
a hard rock.|"
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
(<MC-FORM? ,K-FORM-BADGER>
|
|
<TELL " kills you.|">
|
|
<RT-END-OF-GAME>
|
|
)
|
|
>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-DESC>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
(T
|
|
<RT-QUEUE ,RT-I-RAV-NEST-3 <+ ,GL-MOVES 2>>
|
|
<MOVE ,CH-RAVEN ,RM-RAVEN-NEST>
|
|
<FCLEAR ,CH-RAVEN ,FL-LOCKED>
|
|
<COND
|
|
(,GL-RAVEN-OBJ
|
|
<MOVE ,GL-RAVEN-OBJ ,RM-RAVEN-NEST>
|
|
<COND
|
|
(<AND <EQUAL? ,GL-RAVEN-OBJ ,TH-RAVEN-EGG>
|
|
<GETP ,TH-RAVEN-EGG ,P?SCORE>
|
|
>
|
|
<FCLEAR ,TH-RAVEN-EGG ,FL-BROKEN>
|
|
<PUTP ,TH-RAVEN-EGG ,P?SCORE 0>
|
|
)
|
|
>
|
|
<SETG GL-RAVEN-OBJ <>>
|
|
)
|
|
>
|
|
<COND
|
|
(<FSET? ,CH-PLAYER ,FL-ASLEEP>
|
|
<RFALSE>
|
|
)
|
|
(<MC-HERE? ,RM-ABOVE-FOREST ,RM-RAVEN-TREE>
|
|
<TELL CR The ,CH-RAVEN " lands in the nest." CR>
|
|
<COND
|
|
(<MC-HERE? ,RM-ABOVE-FOREST>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-DESC>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-I-RAV-NEST-3 ("AUX" (EGG? <>))
|
|
<FSET ,CH-RAVEN ,FL-BROKEN>
|
|
<MOVE ,CH-RAVEN ,RM-ABOVE-FOREST>
|
|
<COND
|
|
(<AND <IN? ,TH-BRASS-EGG ,RM-RAVEN-NEST>
|
|
<IN? ,TH-RAVEN-EGG ,RM-RAVEN-NEST>
|
|
>
|
|
<SET EGG? T>
|
|
<MOVE ,TH-BRASS-EGG ,RM-GROVE>
|
|
<RT-RAVEN-WAIT-FOR ,TH-BRASS-EGG>
|
|
)
|
|
(<IN? ,TH-RAVEN-EGG ,RM-GROVE>
|
|
<RT-RAVEN-WAIT-FOR ,TH-RAVEN-EGG>
|
|
)
|
|
(<IN? ,TH-BRASS-EGG ,RM-GROVE>
|
|
<RT-RAVEN-WAIT-FOR ,TH-BRASS-EGG>
|
|
)
|
|
>
|
|
<COND
|
|
(<MC-HERE? ,RM-ABOVE-FOREST ,RM-RAVEN-TREE ,RM-GROVE>
|
|
<CRLF>
|
|
<COND
|
|
(.EGG?
|
|
<COND
|
|
(<MC-HERE? ,RM-GROVE>
|
|
<COND
|
|
(<FSET? ,CH-PLAYER ,FL-ASLEEP>
|
|
<TELL
|
|
"Suddenly, you are awakened by the sound of something crashing through the
|
|
leaves above. Your eyes fly open in a panic, and the last thing you ever
|
|
see is a large brass egg approaching your head at terminal velocity.
|
|
Seconds later, you, too, become terminal." CR
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
(T
|
|
<TELL
|
|
"Suddenly from above, you hear the sound of something heavy crashing through
|
|
leaves and branches. You glance up and then jump aside just in time to avoid
|
|
being killed by" the ,TH-BRASS-EGG ", which hits" the ,TH-GROUND " with a
|
|
loud \"WHUMP!\"||"
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
The ,CH-RAVEN " pushes" the ,TH-BRASS-EGG " out of the nest. It lands in"
|
|
the ,RM-GROVE ". "
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<TELL
|
|
The ,CH-RAVEN " leaves the nest and resumes circling the forest.|"
|
|
>
|
|
<COND
|
|
(<MC-HERE? ,RM-ABOVE-FOREST>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-DESC>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-RAVEN-WAIT-FOR (OBJ "AUX" N)
|
|
<SETG GL-RAVEN-OBJ .OBJ>
|
|
<COND
|
|
(<FSET? ,CH-RAVEN ,FL-BROKEN>
|
|
<SET N 6>
|
|
)
|
|
(T
|
|
<SET N 2>
|
|
)
|
|
>
|
|
<RT-QUEUE ,RT-I-RAV-GROVE-1 <+ ,GL-MOVES .N>>
|
|
>
|
|
|
|
;"***************************************************************************"
|
|
; "ROOMS & ROOM ACTIONS"
|
|
;"***************************************************************************"
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-ABOVE-FOREST"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-ABOVE-FOREST
|
|
(LOC ROOMS)
|
|
(DESC "above forest")
|
|
(FLAGS FL-AIR FL-LIGHTED)
|
|
(DOWN PER RT-FLY-DOWN)
|
|
(SOUTH TO RM-ABOVE-EDGE-OF-WOODS)
|
|
(SW TO RM-ABOVE-MERCAVE)
|
|
(SE TO RM-ABOVE-MOOR)
|
|
(IN TO RM-RAVEN-NEST)
|
|
(UP SORRY K-NO-HIGHER-MSG)
|
|
(ADJACENT <TABLE (LENGTH BYTE PURE) RM-RAVEN-NEST T>)
|
|
(GLOBAL LG-FOREST LG-TOWER CH-RAVEN RM-RAVEN-NEST RM-RAVEN-TREE RM-GROVE)
|
|
(ACTION RT-RM-ABOVE-FOREST)
|
|
>
|
|
|
|
<CONSTANT K-FLY-HIGH-MSG "You are flying high above the forest.">
|
|
|
|
<ROUTINE RT-RM-ABOVE-FOREST ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
|
|
<FSET ,RM-RAVEN-NEST ,FL-SEEN>
|
|
<FSET ,RM-RAVEN-TREE ,FL-SEEN>
|
|
<TELL ,K-FLY-HIGH-MSG " ">
|
|
<COND
|
|
(<EQUAL? ,OHERE ,RM-TOW-CLEARING>
|
|
<TELL "Y">
|
|
)
|
|
(T
|
|
<TELL "In the distance, y">
|
|
)
|
|
>
|
|
<TELL "ou see an ivory tower rising above the trees">
|
|
<COND
|
|
(<EQUAL? ,OHERE ,RM-TOW-CLEARING>
|
|
<TELL " nearby. In the distance,">
|
|
)
|
|
(T
|
|
<TELL ". Nearby, you see">
|
|
)
|
|
>
|
|
<TELL
|
|
" one tall tree sticks up above the rest. In its uppermost branches is a huge
|
|
nest"
|
|
>
|
|
<COND
|
|
(<OR <IN? ,CH-RAVEN ,RM-RAVEN-NEST>
|
|
<IN? ,TH-RAVEN-EGG ,RM-RAVEN-NEST>
|
|
>
|
|
<TELL ", and sitting in the nest is">
|
|
<COND
|
|
(<IN? ,CH-RAVEN ,RM-RAVEN-NEST>
|
|
<TELL the ,CH-RAVEN>
|
|
<COND
|
|
(<IN? ,TH-RAVEN-EGG ,RM-RAVEN-NEST>
|
|
<FSET ,TH-RAVEN-EGG ,FL-SEEN>
|
|
<TELL " and its solid gold egg">
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<FSET ,TH-RAVEN-EGG ,FL-SEEN>
|
|
<TELL " a solid gold giant raven's egg">
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<TELL ".">
|
|
<COND
|
|
(<IN? ,CH-RAVEN ,RM-ABOVE-FOREST>
|
|
<FSET ,CH-RAVEN ,FL-SEEN>
|
|
<TELL " Looking around, you see the giant raven ">
|
|
<COND
|
|
(<AND ,GL-RAVEN-OBJ
|
|
<IN? ,GL-RAVEN-OBJ ,CH-RAVEN>
|
|
>
|
|
<TELL "struggling to bring" a ,GL-RAVEN-OBJ " up to its nest.">
|
|
)
|
|
(<FSET? ,CH-RAVEN ,FL-LOCKED>
|
|
<TELL "swooping down towards the grove.">
|
|
)
|
|
(T
|
|
<TELL "circling nearby.">
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<FSET ,RM-GROVE ,FL-SEEN>
|
|
<TELL " Far below you, you see a grove." CR>
|
|
)
|
|
; (<MC-CONTEXT? ,M-V-LOOK ,M-LOOK>
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL "You are hovering over the forest.">
|
|
)
|
|
(T
|
|
<TELL ,K-FLY-HIGH-MSG>
|
|
)
|
|
>
|
|
<FSET ,RM-RAVEN-NEST ,FL-SEEN>
|
|
<FSET ,RM-RAVEN-TREE ,FL-SEEN>
|
|
<TELL
|
|
" You see a large raven's nest in the top of a nearby tree." CR
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-ENTER>
|
|
<SETG GL-PICTURE-NUM ,K-PIC-AIR-SCENE>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-RAV-PATH"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-RAV-PATH
|
|
(LOC ROOMS)
|
|
(DESC "trail")
|
|
(FLAGS FL-LIGHTED)
|
|
(SYNONYM PATH TRAIL)
|
|
(ADJECTIVE FOREST)
|
|
(NE TO RM-GROVE)
|
|
(SW TO RM-ENCHANTED-FOREST)
|
|
(UP PER RT-FLY-UP)
|
|
(GLOBAL LG-ENCHANTED-TREES LG-FOREST LG-PATH RM-GROVE)
|
|
(ACTION RT-RM-RAV-PATH)
|
|
>
|
|
|
|
<ROUTINE RT-RM-RAV-PATH ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL
|
|
"You are" standing " on a narrow trail, deep within the enchanted forest."
|
|
>
|
|
)
|
|
(T
|
|
<COND
|
|
(<EQUAL? ,OHERE ,RM-ENCHANTED-FOREST>
|
|
<TELL
|
|
"The path soon peters out into little more than a trail that continues to
|
|
run to the northeast."
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
"The trail looks like it broadens into a path up ahead."
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<CRLF>
|
|
<RFALSE>
|
|
)
|
|
(<MC-CONTEXT? ,M-ENTER>
|
|
<SETG GL-PICTURE-NUM ,K-PIC-FOREST-PATH>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-GROVE"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-GROVE
|
|
(LOC ROOMS)
|
|
(DESC "grove")
|
|
(FLAGS FL-LIGHTED)
|
|
(SYNONYM GROVE)
|
|
(ADJECTIVE FOREST)
|
|
(SW TO RM-RAV-PATH)
|
|
(UP PER RT-UP-RAV-GROVE)
|
|
(GLOBAL LG-ENCHANTED-TREES LG-FOREST LG-PATH RM-RAVEN-TREE RM-RAVEN-NEST)
|
|
(ACTION RT-RM-GROVE)
|
|
>
|
|
|
|
<ROUTINE RT-RM-GROVE ("OPT" (CONTEXT <>) "AUX" (RM <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL
|
|
"You are in a grove of tall trees, deep within the enchanted forest."
|
|
>
|
|
)
|
|
(T
|
|
<COND
|
|
(<EQUAL? ,OHERE ,RM-RAV-PATH>
|
|
<TELL "The trail ends in a grove of tall trees.">
|
|
)
|
|
(T
|
|
<TELL "You descend to the forest floor below.|">
|
|
<RFALSE>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<FSET ,RM-RAVEN-TREE ,FL-SEEN>
|
|
<TELL
|
|
" One tree in particular seems taller than the rest. A path to the southwest
|
|
leads back into the forest.|"
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<MC-CONTEXT? ,M-BEG>
|
|
<COND
|
|
(<AND <VERB? LOOK-UP>
|
|
<MC-PRSO? ,ROOMS ,RM-RAVEN-TREE>
|
|
>
|
|
<FSET ,RM-RAVEN-NEST ,FL-SEEN>
|
|
<TELL "At the very top of the tree you can see a large nest." CR>
|
|
)
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-END>
|
|
<COND
|
|
(,GL-RAVEN-OBJ
|
|
<COND
|
|
(<IN? ,GL-RAVEN-OBJ ,CH-RAVEN>
|
|
<RFALSE>
|
|
)
|
|
(<NOT <IN? ,GL-RAVEN-OBJ ,RM-GROVE>>
|
|
<SETG GL-RAVEN-OBJ <>>
|
|
<RT-DEQUEUE ,RT-I-RAV-GROVE-1>
|
|
)
|
|
>
|
|
)
|
|
(<IN? ,TH-RAVEN-EGG ,RM-GROVE>
|
|
<RT-RAVEN-WAIT-FOR ,TH-RAVEN-EGG>
|
|
)
|
|
(<IN? ,TH-BRASS-EGG ,RM-GROVE>
|
|
<RT-RAVEN-WAIT-FOR ,TH-BRASS-EGG>
|
|
)
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-ENTER>
|
|
<SETG GL-PICTURE-NUM ,K-PIC-GROVE>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? WALK-TO ENTER LAND-ON>
|
|
<COND
|
|
(<MC-HERE? ,RM-RAVEN-NEST>
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-OWL>
|
|
<RT-GOTO ,RM-GROVE>
|
|
)
|
|
(<MC-FORM? ,K-FORM-SALAMANDER>
|
|
<COND
|
|
(<SET RM <RT-CLIMB-DOWN>>
|
|
<RT-GOTO .RM>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
(T
|
|
<TELL ,K-DEADLY-FALL-MSG CR>
|
|
)
|
|
>
|
|
)
|
|
(<MC-HERE? ,RM-ABOVE-FOREST>
|
|
<RT-GOTO ,RM-GROVE>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-UP-RAV-GROVE ("OPT" (QUIET <>))
|
|
<COND
|
|
(.QUIET
|
|
<COND
|
|
(<OR <MC-FORM? ,K-FORM-OWL ,K-FORM-SALAMANDER>
|
|
<FSET? ,RM-RAVEN-TREE ,FL-TOUCHED>
|
|
>
|
|
<RETURN ,RM-RAVEN-TREE>
|
|
)
|
|
>
|
|
)
|
|
(<MC-FORM? ,K-FORM-OWL>
|
|
<RT-FLY-UP>
|
|
)
|
|
(<MC-FORM? ,K-FORM-SALAMANDER>
|
|
<RT-CLIMB-UP>
|
|
)
|
|
(T
|
|
<RT-RAV-CANT-CLIMB-UP>
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-RAVEN-TREE"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-RAVEN-TREE
|
|
(LOC ROOMS)
|
|
(DESC "huge tree")
|
|
(FLAGS FL-LIGHTED)
|
|
(SYNONYM TREE BRANCH BRANCHES)
|
|
(ADJECTIVE HUGE BIG TALL TALLER TALLEST RAVEN GIANT)
|
|
(OWNER CH-RAVEN)
|
|
(UP PER RT-CLIMB-UP)
|
|
(DOWN PER RT-CLIMB-DOWN)
|
|
(GLOBAL LG-FOREST RM-GROVE RM-RAVEN-NEST)
|
|
(GENERIC RT-GN-TREE)
|
|
(ACTION RT-RM-RAVEN-TREE)
|
|
>
|
|
|
|
<CONSTANT K-DEADLY-FALL-MSG "You would fall and kill yourself.">
|
|
|
|
<ROUTINE RT-RM-RAVEN-TREE ("OPT" (CONTEXT <>) "AUX" RM)
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
|
|
<TELL "You are">
|
|
<COND
|
|
(<NOT <MC-CONTEXT? ,M-LOOK>>
|
|
<TELL " now">
|
|
)
|
|
>
|
|
<TELL " clinging to the side of" the ,RM-RAVEN-TREE "." CR>
|
|
)
|
|
(<MC-CONTEXT? ,M-ENTER>
|
|
<SETG GL-PICTURE-NUM ,K-PIC-RAVEN-TREE>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<MC-CONTEXT? ,M-BEG>
|
|
<COND
|
|
(<AND <VERB? WALK-TO CLIMB-DOWN CLIMB-ON CLIMB-OVER ENTER>
|
|
<MC-PRSO? ,TH-GROUND>
|
|
>
|
|
<COND
|
|
(<VERB-WORD? ,W?JUMP ,W?LEAP ,W?DIVE>
|
|
<RT-JUMP-OFF-TREE-MSG>
|
|
)
|
|
(T
|
|
<RT-CLIMB-DOWN-TREE-MSG>
|
|
)
|
|
>
|
|
)
|
|
(<AND <VERB? WALK-TO CLIMB-UP ENTER>
|
|
<MC-PRSO? ,TH-SKY>
|
|
>
|
|
<RT-CLIMB-UP-TREE-MSG>
|
|
)
|
|
(<VERB? JUMP>
|
|
<RT-JUMP-OFF-TREE-MSG>
|
|
)
|
|
(<AND <VERB? EXAMINE LOOK-ON>
|
|
<MC-PRSO? ,TH-GROUND>
|
|
>
|
|
<TELL "The ground is ">
|
|
<COND
|
|
(<G? ,GL-RAV-P-CNT 3>
|
|
<TELL "far">
|
|
)
|
|
(<G? ,GL-RAV-P-CNT 1>
|
|
<TELL "a short distance">
|
|
)
|
|
(T
|
|
<TELL "just">
|
|
)
|
|
>
|
|
<TELL " below you." CR>
|
|
)
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-END>
|
|
<COND
|
|
(<NOT <MC-FORM? ,K-FORM-SALAMANDER>>
|
|
<RT-FALL-OFF-TREE>
|
|
)
|
|
>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,RM-RAVEN-TREE ,FL-SEEN>
|
|
<COND
|
|
(<MC-HERE? ,RM-GROVE>
|
|
<TELL "The tree towers above you." CR>
|
|
)
|
|
(<MC-HERE? ,RM-RAVEN-NEST>
|
|
<TELL "The tree supports the raven's nest." CR>
|
|
)
|
|
(<MC-HERE? ,RM-ABOVE-FOREST>
|
|
<TELL "The tree is far below you." CR>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? CLIMB-UP>
|
|
<RT-CLIMB-UP-TREE-MSG>
|
|
)
|
|
(<VERB? CLIMB-DOWN>
|
|
<RT-CLIMB-DOWN-TREE-MSG>
|
|
)
|
|
(<VERB? DISMOUNT>
|
|
<COND
|
|
(<MC-HERE? ,RM-RAVEN-TREE>
|
|
<RT-JUMP-OFF-TREE-MSG>
|
|
)
|
|
(T
|
|
<RT-AUTHOR-ON>
|
|
<TELL The+verb ,WINNER "are" "n't on" the ,RM-RAVEN-TREE ".">
|
|
<RT-AUTHOR-OFF>
|
|
)
|
|
>
|
|
)
|
|
(<AND <VERB? WALK-TO LAND-ON ENTER>
|
|
<FSET? ,HERE ,FL-AIR>
|
|
>
|
|
<RT-GOTO ,RM-RAVEN-NEST>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-GN-TREE (TBL FINDER "AUX" PTR N)
|
|
<SET PTR <REST-TO-SLOT .TBL FIND-RES-OBJ1>>
|
|
<SET N <FIND-RES-COUNT .TBL>>
|
|
<COND
|
|
(<INTBL? ,RM-RAVEN-TREE .PTR .N>
|
|
<RETURN ,RM-RAVEN-TREE>
|
|
)
|
|
(<INTBL? ,P-IT-OBJECT .PTR .N>
|
|
<RETURN ,P-IT-OBJECT>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-CLIMB-UP ("OPT" (QUIET <>))
|
|
<COND
|
|
(.QUIET
|
|
<COND
|
|
(<MC-HERE? ,RM-RAVEN-TREE>
|
|
<RETURN ,RM-RAVEN-NEST>
|
|
)
|
|
(T
|
|
<RETURN ,RM-RAVEN-TREE>
|
|
)
|
|
>
|
|
)
|
|
(<MC-HERE? ,RM-RAVEN-TREE>
|
|
<COND
|
|
(<IGRTR? GL-RAV-P-CNT ,K-RAVEN-TREE-MAX>
|
|
<TELL
|
|
"You reach the top of" the ,RM-RAVEN-TREE " and climb into" the ,RM-RAVEN-NEST ".||"
|
|
>
|
|
<RETURN ,RM-RAVEN-NEST>
|
|
)
|
|
(T
|
|
<RT-RAV-CLIMBING ,K-CLIMB-UP>
|
|
<RFALSE>
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<SETG GL-RAV-P-CNT 0>
|
|
<RETURN ,RM-RAVEN-TREE>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-CLIMB-DOWN ("OPT" (QUIET <>))
|
|
<COND
|
|
(.QUIET
|
|
<COND
|
|
(<MC-HERE? ,RM-RAVEN-TREE>
|
|
<RETURN ,RM-GROVE>
|
|
)
|
|
(T
|
|
<RETURN ,RM-RAVEN-TREE>
|
|
)
|
|
>
|
|
)
|
|
(<MC-HERE? ,RM-RAVEN-TREE>
|
|
<COND
|
|
(<DLESS? GL-RAV-P-CNT 1>
|
|
<TELL
|
|
"You reach the foot of" the ,RM-RAVEN-TREE " and jump off onto the ground.||"
|
|
>
|
|
<RETURN ,RM-GROVE>
|
|
)
|
|
(T
|
|
<RT-RAV-CLIMBING ,K-CLIMB-DN>
|
|
<RFALSE>
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<SETG GL-RAV-P-CNT ,K-RAVEN-TREE-MAX>
|
|
<RETURN ,RM-RAVEN-TREE>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-CLIMB-UP-TREE-MSG ("AUX" RM)
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-OWL>
|
|
<COND
|
|
(<MC-HERE? ,RM-RAVEN-NEST>
|
|
<RT-YOU-CANT-MSG "climb up" ,RM-RAVEN-TREE>
|
|
)
|
|
(T
|
|
<RT-GOTO ,RM-RAVEN-NEST>
|
|
)
|
|
>
|
|
)
|
|
(<MC-FORM? ,K-FORM-SALAMANDER>
|
|
<COND
|
|
(<SET RM <RT-CLIMB-UP>>
|
|
<RT-GOTO .RM>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
(T
|
|
<RT-RAV-CANT-CLIMB-UP>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-CLIMB-DOWN-TREE-MSG ("AUX" RM)
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-OWL>
|
|
<COND
|
|
(<MC-HERE? ,RM-GROVE>
|
|
<RT-YOU-CANT-MSG "climb down" ,RM-RAVEN-TREE>
|
|
)
|
|
(T
|
|
<RT-GOTO ,RM-GROVE>
|
|
)
|
|
>
|
|
)
|
|
(<MC-FORM? ,K-FORM-SALAMANDER>
|
|
<COND
|
|
(<SET RM <RT-CLIMB-DOWN>>
|
|
<RT-GOTO .RM>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
(T
|
|
<TELL ,K-DEADLY-FALL-MSG CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-JUMP-OFF-TREE-MSG ()
|
|
<COND
|
|
(<L? ,GL-RAV-P-CNT 4>
|
|
<MOVE ,CH-PLAYER ,RM-GROVE>
|
|
<SETG OHERE ,HERE>
|
|
<SETG HERE ,RM-GROVE>
|
|
<TELL
|
|
"You leap off of" the ,RM-RAVEN-TREE " and fall to" the ,TH-GROUND ", a bit
|
|
bruised and battered but otherwise alright." CR
|
|
>
|
|
<SETG GL-PICTURE-NUM ,K-PIC-GROVE>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-MAP>
|
|
<RT-UPDATE-MAP-WINDOW>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
(T
|
|
<TELL ,K-DEADLY-FALL-MSG CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-RAVEN-NEST"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-RAVEN-NEST
|
|
(LOC ROOMS)
|
|
(DESC "giant raven's nest")
|
|
(FLAGS FL-LIGHTED)
|
|
(SYNONYM NEST SIDE)
|
|
(ADJECTIVE RAVEN)
|
|
(OWNER CH-RAVEN)
|
|
(UP PER RT-FLY-UP)
|
|
(OUT PER RT-EXIT-NEST)
|
|
(DOWN PER RT-EXIT-NEST)
|
|
(GLOBAL LG-FOREST CH-RAVEN RM-GROVE RM-RAVEN-TREE)
|
|
(ACTION RT-RM-RAVEN-NEST)
|
|
>
|
|
|
|
<GLOBAL GL-EGG-IN-NEST? T <> BYTE>
|
|
|
|
<ROUTINE RT-RM-RAVEN-NEST ("OPT" (CONTEXT <>) "AUX" RM EGG?)
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
|
|
<TELL "You ">
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL "are in">
|
|
)
|
|
(<MC-FORM? ,K-FORM-OWL>
|
|
<TELL "land in">
|
|
)
|
|
(T
|
|
<TELL "climb into">
|
|
)
|
|
>
|
|
<FSET ,RM-GROVE ,FL-SEEN>
|
|
<TELL
|
|
the ,RM-RAVEN-NEST ".|Far below you, you see" the ,RM-GROVE "."
|
|
>
|
|
<COND
|
|
(<IN? ,CH-RAVEN ,RM-RAVEN-NEST>
|
|
<FSET ,CH-RAVEN ,FL-SEEN>
|
|
<TELL
|
|
" The other occupant of the nest is a giant raven that is clearly unhappy
|
|
with your presence."
|
|
>
|
|
)
|
|
(<AND <NOT <FSET? ,CH-RAVEN ,FL-LOCKED>>
|
|
<NOT ,GL-RAVEN-OBJ>
|
|
>
|
|
<FSET ,CH-RAVEN ,FL-SEEN>
|
|
<TELL " You can see" the ,CH-RAVEN " circling above.">
|
|
)
|
|
>
|
|
<CRLF>
|
|
<RFALSE>
|
|
)
|
|
(<MC-CONTEXT? ,M-ENTER>
|
|
<SETG GL-PICTURE-NUM ,K-PIC-RAVEN-NEST>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<MC-CONTEXT? ,M-ENTERED>
|
|
<COND
|
|
(<IN? ,CH-RAVEN ,RM-RAVEN-NEST>
|
|
<TELL
|
|
CR The ,CH-RAVEN "'s razor-like talons dig into your flesh and kill you
|
|
instantly.|"
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
(<FSET? ,CH-RAVEN ,FL-LOCKED>)
|
|
(,GL-RAVEN-OBJ
|
|
<RT-DEQUEUE ,RT-I-RAV-GROVE-1>
|
|
<RT-I-RAV-GROVE-1>
|
|
)
|
|
(T
|
|
<RT-I-RAV-NEST-1>
|
|
)
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-BEG>
|
|
<COND
|
|
(<OR <AND <VERB? DROP> <VERB-WORD? ,W?THROW>>
|
|
<AND <VERB? PUT PUT-IN> <MC-PRSI? ,TH-GROUND ,RM-GROVE>>
|
|
<AND <VERB? THROW> <MC-PRSI? <> ,ROOMS ,TH-GROUND ,RM-GROVE>>
|
|
<AND <VERB? EXTEND> <MC-PRSI? <> ,ROOMS ,RM-RAVEN-NEST ,GLOBAL-HERE>>
|
|
<VERB? MOVE>
|
|
>
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-ARTHUR>
|
|
<MOVE ,PRSO ,RM-GROVE>
|
|
<COND
|
|
(<AND <MC-PRSO? ,TH-RAVEN-EGG>
|
|
<NOT <FSET? ,TH-RAVEN-EGG ,FL-BROKEN>>
|
|
>
|
|
<FSET ,TH-RAVEN-EGG ,FL-BROKEN>
|
|
<PUTP ,TH-RAVEN-EGG ,P?SCORE
|
|
%<ORB
|
|
<LSH 4 ,K-WISD-SHIFT>
|
|
<LSH 5 ,K-EXPR-SHIFT>
|
|
<LSH 2 ,K-QUEST-SHIFT>
|
|
>
|
|
>
|
|
)
|
|
>
|
|
<TELL
|
|
"You throw" the ,PRSO " to" the ,RM-GROVE " below." CR
|
|
>
|
|
<COND
|
|
(<MC-PRSO? ,TH-RAVEN-EGG ,TH-BRASS-EGG>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
(T
|
|
<COND
|
|
(<MC-PRSO? ,TH-RAVEN-EGG ,TH-BRASS-EGG>
|
|
<TELL "The egg is solid ">
|
|
<COND
|
|
(<MC-PRSO? ,TH-RAVEN-EGG>
|
|
<TELL "gold">
|
|
)
|
|
(T
|
|
<TELL "brass">
|
|
)
|
|
>
|
|
<TELL
|
|
". It's too heavy for" aform " to move." CR
|
|
>
|
|
)
|
|
(T
|
|
<RT-ANIMAL-CANT-MSG "move">
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<AND <VERB? WALK-TO CLIMB-DOWN CLIMB-ON CLIMB-OVER ENTER>
|
|
<MC-PRSO? ,TH-GROUND>
|
|
>
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-OWL ,K-FORM-SALAMANDER>
|
|
<RT-DO-WALK ,P?DOWN>
|
|
)
|
|
(T ;<VERB-WORD? ,W?JUMP ,W?LEAP ,W?DIVE>
|
|
<TELL
|
|
"Throwing caution to the winds, you stand on the edge of the nest and execute
|
|
a perfect swan dive into the air. Just as it occurs to you that you are not
|
|
a swan, it occurs to the ground to smash into - and kill - you." CR
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
;(T
|
|
<RT-CLIMB-DOWN-TREE-MSG>
|
|
)
|
|
>
|
|
)
|
|
(<AND <VERB? WALK-TO CLIMB-UP ENTER>
|
|
<MC-PRSO? ,TH-SKY>
|
|
>
|
|
<RT-DO-WALK ,P?UP>
|
|
)
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-END>
|
|
<SET EGG?
|
|
<OR
|
|
<IN? ,TH-RAVEN-EGG ,RM-RAVEN-NEST>
|
|
<IN? ,TH-BRASS-EGG ,RM-RAVEN-NEST>
|
|
>
|
|
>
|
|
<COND
|
|
(<NOT <EQUAL? .EGG? ,GL-EGG-IN-NEST?>>
|
|
<SETG GL-EGG-IN-NEST? .EGG?>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(,NOW-PRSI
|
|
<COND
|
|
(<VERB? THROW PUT PUT-IN>
|
|
<COND
|
|
(<MC-HERE? ,RM-GROVE>
|
|
<TELL
|
|
The+verb ,WINNER "are" "n't strong enough to throw" the ,PRSO " that high." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,RM-RAVEN-NEST ,FL-SEEN>
|
|
<COND
|
|
(<MC-HERE? ,RM-GROVE>
|
|
<TELL "The nest is at the very top of the tree." CR>
|
|
)
|
|
(<MC-HERE? ,RM-RAVEN-TREE>
|
|
<TELL "It looks like the home of a giant raven." CR>
|
|
)
|
|
(<MC-HERE? ,RM-ABOVE-FOREST>
|
|
<TELL "The nest is below you in the top of the tree." CR>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? WALK-TO ENTER LAND-ON>
|
|
<COND
|
|
(<MC-HERE? ,RM-GROVE>
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-OWL>
|
|
<RT-GOTO ,RM-RAVEN-NEST>
|
|
)
|
|
(<MC-FORM? ,K-FORM-SALAMANDER>
|
|
<COND
|
|
(<SET RM <RT-CLIMB-UP>>
|
|
<RT-GOTO .RM>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
(T
|
|
<RT-RAV-CANT-CLIMB-UP>
|
|
)
|
|
>
|
|
)
|
|
(<MC-HERE? ,RM-ABOVE-FOREST>
|
|
<RT-GOTO ,RM-RAVEN-NEST>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? LOOK-IN>
|
|
<COND
|
|
(<MC-HERE? ,RM-ABOVE-FOREST>
|
|
<TELL "You see">
|
|
<PRINT-CONTENTS ,RM-RAVEN-NEST>
|
|
<TELL in ,RM-RAVEN-NEST the ,RM-RAVEN-NEST "." CR>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-EXIT-NEST ("OPT" (QUIET <>))
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-OWL>
|
|
<COND
|
|
(<EQUAL? ,P-WALK-DIR ,P?DOWN>
|
|
<RETURN ,RM-GROVE>
|
|
)
|
|
(T
|
|
<RT-FLY-UP .QUIET>
|
|
)
|
|
>
|
|
)
|
|
(<MC-FORM? ,K-FORM-SALAMANDER>
|
|
<RT-CLIMB-DOWN .QUIET>
|
|
)
|
|
(T
|
|
<COND
|
|
(<NOT .QUIET>
|
|
;<TELL "You would fall and hurt yourself." CR>
|
|
<TELL
|
|
"Throwing caution to the winds, you stand on the edge of the nest and execute
|
|
a perfect swan dive into the air. Just as it occurs to you that you are not
|
|
a swan, it occurs to the ground to smash into - and kill - you." CR
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"***************************************************************************"
|
|
; "end of file"
|
|
;"***************************************************************************"
|
|
|