Release Version
This commit is contained in:
commit
7edfae6d56
|
@ -0,0 +1,80 @@
|
|||
"A5 for
|
||||
SHOGUN
|
||||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<PRINC "
|
||||
*** SHOGUN: A Story of Japan ***
|
||||
">
|
||||
|
||||
<VERSION YZIP>
|
||||
<ZIP-OPTIONS BIG COLOR UNDO MOUSE DISPLAY>
|
||||
<SETG NEW-PARSER? T> ;"use new parser"
|
||||
<FREQUENT-WORDS?> ;"include frequent words"
|
||||
<SET REDEFINE T> ;"don't stop and ask"
|
||||
<ORDER-OBJECTS? ROOMS-FIRST>
|
||||
<NEVER-ZAP-TO-SOURCE-DIRECTORY?>
|
||||
|
||||
;"segments"
|
||||
|
||||
<DEFINE-SEGMENT STARTUP T>
|
||||
<DEFINE-SEGMENT RECORD <>>
|
||||
<DEFINE-SEGMENT ERASMUS <> ANJIRO>
|
||||
<DEFINE-SEGMENT ANJIRO <> ERASMUS YABU>
|
||||
<DEFINE-SEGMENT YABU <> ANJIRO PIT>
|
||||
<DEFINE-SEGMENT PIT <> YABU RODRIGUES>
|
||||
<DEFINE-SEGMENT RODRIGUES <> PIT VOYAGE>
|
||||
<DEFINE-SEGMENT VOYAGE <> RODRIGUES AUDIENCE>
|
||||
<DEFINE-SEGMENT AUDIENCE <> VOYAGE PRISON>
|
||||
<DEFINE-SEGMENT PRISON <> AUDIENCE MARIKO>
|
||||
<DEFINE-SEGMENT MARIKO <> PRISON ESCAPE>
|
||||
<DEFINE-SEGMENT ESCAPE <> MARIKO MAZE>
|
||||
<DEFINE-SEGMENT MAZE <> ESCAPE QUAKE>
|
||||
<DEFINE-SEGMENT QUAKE <> MAZE ZATAKI>
|
||||
<DEFINE-SEGMENT ZATAKI <> QUAKE YOKOSE>
|
||||
<DEFINE-SEGMENT YOKOSE <> ZATAKI OCHIBA>
|
||||
<DEFINE-SEGMENT OCHIBA <> YOKOSE DEPARTURE>
|
||||
<DEFINE-SEGMENT DEPARTURE <> OCHIBA SEPPUKU>
|
||||
<DEFINE-SEGMENT SEPPUKU <> DEPARTURE NINJA>
|
||||
<DEFINE-SEGMENT NINJA <> SEPPUKU YOKOHAMA>
|
||||
<DEFINE-SEGMENT YOKOHAMA <> NINJA AFTERMATH>
|
||||
<DEFINE-SEGMENT AFTERMATH <> YOKOHAMA SEKIGAHARA>
|
||||
<DEFINE-SEGMENT SEKIGAHARA <> AFTERMATH>
|
||||
<DEFINE-SEGMENT HINTS <>>
|
||||
|
||||
<INSERT-FILE "DEFS"> ;"redefinitions"
|
||||
<XFLOAD "~INTERLOGIC/ZILLIB/PARSER/PARSER.SHOGUN"> ;"new parser"
|
||||
|
||||
;"game substrate"
|
||||
|
||||
<INSERT-FILE "PICDEF"> ;"picture constants"
|
||||
<INSERT-FILE "MISC">
|
||||
<INSERT-FILE "~INTERLOGIC/ZILLIB/SOFT"> ;"function key stuff"
|
||||
<INSERT-FILE "~INTERLOGIC/ZILLIB/MENU"> ;"menu stuff"
|
||||
<INSERT-FILE "STATUS"> ;"status line"
|
||||
<INSERT-FILE "PIC"> ;"picture stuff"
|
||||
<INSERT-FILE "DESC"> ;"describers"
|
||||
<INSERT-FILE "SYNTAX">
|
||||
<INSERT-FILE "RECORD">
|
||||
<INSERT-FILE "VERBS">
|
||||
<INSERT-FILE "~INTERLOGIC/ZILLIB/PARSER/PRARE">
|
||||
<INSERT-FILE "QVERBS">
|
||||
<INSERT-FILE "GLOBALS">
|
||||
|
||||
;"game files"
|
||||
|
||||
<INSERT-FILE "CAST"> ;"characters"
|
||||
<INSERT-FILE "ERASMUS"> ;"arrival in japan"
|
||||
<INSERT-FILE "ANJIRO"> ;"arrival at village"
|
||||
<INSERT-FILE "VOYAGE"> ;"voyage to osaka/saving rodrigues"
|
||||
<INSERT-FILE "AUDIENCE"> ;"audience with toranaga"
|
||||
<INSERT-FILE "OSAKA"> ;"escape from osaka"
|
||||
<INSERT-FILE "MAZE"> ;"maze of alleys in osaka"
|
||||
<INSERT-FILE "QUAKE"> ;"earthquake"
|
||||
<INSERT-FILE "MARIKO"> ;"framing story"
|
||||
<INSERT-FILE "ATTACK"> ;"ninja attack on castle"
|
||||
|
||||
<XFLOAD "~INTERLOGIC/ZILLIB/CLUES.XFLOAD">
|
||||
<INSERT-FILE "HINTS">
|
||||
|
||||
<PROPDEF SIZE 5>
|
||||
<PROPDEF CAPACITY 0>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,29 @@
|
|||
<VERSION YZIP>
|
||||
|
||||
<SINGLE-FILE? T>
|
||||
|
||||
<ROUTINE ANIMATE (CELS)
|
||||
<REPEAT ()
|
||||
<SETG CARTOON .CELS>
|
||||
<SETG CARTOON-N 0>
|
||||
<INPUT 1 1 ,NEXT-CEL>>>
|
||||
|
||||
<GLOBAL CARTOON <>>
|
||||
<GLOBAL CARTOON-N 0>
|
||||
|
||||
<ROUTINE NEXT-CEL ("AUX" (N <GET ,CARTOON 1>))
|
||||
<COND (<IGRTR? CARTOON-N <GET ,CARTOON 0>>
|
||||
<SET N 1>)>
|
||||
<SCREEN 1>
|
||||
<DISPLAY <GET ,CARTOON .N> 1 1>
|
||||
<SCREEN 0>
|
||||
<RFALSE>>
|
||||
|
||||
<ROUTINE GO
|
||||
<CLEAR -1>
|
||||
<SPLIT </ <WINGET 0 ,WHIGH> 4>>
|
||||
<ANIMATE ,CEL-TABLE>
|
||||
<QUIT>>
|
||||
|
||||
<CONSTANT CEL-TABLE
|
||||
<LTABLE 1 2 3 4 5 6 7 8>>
|
|
@ -0,0 +1,769 @@
|
|||
"CAST for
|
||||
SHOGUN
|
||||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<FILE-FLAGS SENTENCE-ENDS?>
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
<CONSTANT J-HEAD 1>
|
||||
<CONSTANT J-KILL-MARIKO 2>
|
||||
<CONSTANT J-SEPPUKU 3>
|
||||
<CONSTANT J-CALL-YABU 4>
|
||||
<CONSTANT J-SHOOT-YABU 5>
|
||||
<CONSTANT J-ATTACK-ISHIDO 6>
|
||||
<CONSTANT J-LAUGH-AT-TORANAGA 7>
|
||||
<CONSTANT J-SWITCH 8>
|
||||
<CONSTANT J-WRONG-ANSWER 9>
|
||||
|
||||
<ROUTINE NEW-SDESC (OBJ STR "OPT" (IMPROPER? <>))
|
||||
<COND (.IMPROPER?
|
||||
<FSET .OBJ ,THE>
|
||||
<FCLEAR .OBJ ,NOTHEBIT>
|
||||
<FCLEAR .OBJ ,NOABIT>)
|
||||
(ELSE
|
||||
<FCLEAR .OBJ ,THE>
|
||||
<FSET .OBJ ,NOTHEBIT>
|
||||
<FSET .OBJ ,NOABIT>)>
|
||||
<PUTP .OBJ ,P?SDESC .STR>>
|
||||
|
||||
<ROUTINE WAKARIMASEN ()
|
||||
<COND (<OR <P? KONNICHI-WA ROOMS>
|
||||
<P? KONBANWA>>
|
||||
<TELL
|
||||
I"\"Domo, genki desu,\"" " " THE ,WINNER " answers politely." CR>)
|
||||
(<P? NIHON-GO-GA HANASE-MASEN>
|
||||
<TELL
|
||||
CTHE ,WINNER " seems to understand, but is at a loss what to say next." CR>)
|
||||
(<JAPANESE-VERB?>
|
||||
<TELL
|
||||
CTHE ,WINNER " seems impressed that you know some Japanese, but apparently
|
||||
isn't sure what you are getting at." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"\""I"Wakarimasen, Anjin-san.""\" " CTHE ,WINNER " doesn't appear to
|
||||
understand you." CR>)>>
|
||||
|
||||
<VOC "ANJIN" NOUN>
|
||||
<VOC "ANJIN-SAN" NOUN>
|
||||
|
||||
<OBJECT BLACKTHORNE
|
||||
(LOC BRIDGE-OF-ERASMUS)
|
||||
(OWNER LG-ERASMUS)
|
||||
(DESC "Blackthorne")
|
||||
(SYNONYM JOHN BLACKTHORNE
|
||||
PILOT PILOT-MAJOR
|
||||
PILOT ;ANJIN PILOT-MAJOR ;ANJIN-SAN)
|
||||
(ADJECTIVE JOHN)
|
||||
(FLAGS PERSON ENGLISHBIT NOABIT NOTHEBIT OPENBIT CONTBIT SEARCHBIT)
|
||||
(HEALTH 3) ;"0=ERASMUS, 1=ANJIRO, 2=ANJIRO, 3 otherwise"
|
||||
(GENERIC GENERIC-PILOT-F)
|
||||
(ACTION BLACKTHORNE-F)>
|
||||
|
||||
<ROUTINE GENERIC-PILOT-F (R F)
|
||||
<COND (<SCENE? ,S-RODRIGUES> ,RODRIGUES)
|
||||
(ELSE ,BLACKTHORNE)>>
|
||||
|
||||
<ROUTINE BLACKTHORNE-F ("OPT" (RARG <>))
|
||||
<COND (<RARG? <>>
|
||||
<COND (<P? (BE BE?) (ME BLACKTHORNE)>
|
||||
<COND (<PRSI? BLACKTHORNE>
|
||||
<TELL
|
||||
"That's correct." CR>)
|
||||
(<PRSI? ENGLISH>
|
||||
<TELL
|
||||
"That's right, although your mother was Dutch." CR>)>)
|
||||
(<VERB? BE? BE WHERE HOW>
|
||||
<RFALSE>)
|
||||
(<PRSO? BLACKTHORNE>
|
||||
<PERFORM ,PRSA ,ME ,PRSI>
|
||||
<RTRUE>)>)
|
||||
(<RARG? WINNER>
|
||||
<COND (<AND <B-NOT-STANDING?>
|
||||
<OR <MOTION-VERB?>
|
||||
<AND <HOSTILE-VERB?>
|
||||
,OPPONENT
|
||||
<EQUAL? ,OPPONENT ,PRSO ,PRSI>>
|
||||
<AND <VERB? OPEN CLOSE>
|
||||
<FSET? ,PRSO ,DOORBIT>>>
|
||||
<NOT <PAST-TENSE?>>>
|
||||
<COND (<HERE? ,MURA-HOUSE> <RFALSE>)
|
||||
(<FSET? <LOC ,WINNER> ,VEHBIT>
|
||||
<RFALSE>)
|
||||
(<AND <SCENE? ,S-NINJA>
|
||||
<FSET? ,MARIKO ,RMUNGBIT>>
|
||||
<COND (<NOT <IN? ,YABU ,SECRET-REDOUBT>>
|
||||
<TELL
|
||||
"You are too shaken to stand." CR>)
|
||||
(ELSE
|
||||
<B-STAND>
|
||||
<FCLEAR ,BLACKTHORNE ,RMUNGBIT>
|
||||
<TELL
|
||||
"You lurch up, Yabu helping you, and painfully approach Mariko." CR>)>)
|
||||
(<SCENE? ,S-TORANAGA> <RFALSE>)
|
||||
(<AND <SCENE? ,S-QUAKE>
|
||||
<OR ,QUAKE?
|
||||
<QUEUED? I-CRAWL>>>
|
||||
<RFALSE>)
|
||||
(ELSE
|
||||
<B-STAND>
|
||||
<TELL "You stand up">
|
||||
<COND (<OR <P? STAND> <P? WALK ,P?UP>>
|
||||
<TELL "." CR>)
|
||||
(ELSE
|
||||
<TELL " first." CR>)>)>)
|
||||
(<AND <FSET? ,WINNER ,RMUNGBIT>
|
||||
<SCENE? ,S-NINJA>>
|
||||
<COND (<GAME-VERB?> <RFALSE>)
|
||||
(<AND <NOT <ABSTRACT-VERB?>>
|
||||
<OR <PRSO? MARIKO>
|
||||
<PRSI? MARIKO>>>
|
||||
<YOULL-HAVE-TO "get closer to her">)
|
||||
(<NOT <PASSIVE-VERB?>>
|
||||
<TELL
|
||||
"The explosion has left you too dazed to do anything." CR>)>)>)>>
|
||||
|
||||
<ROUTINE I-DONT-KNOW? ()
|
||||
<AND <VERB? KNOW>
|
||||
<EQUAL? ,PRSS ,ME>
|
||||
<EQUAL? ,PRSQ ,V?DO?>
|
||||
<NOT <BTST <PARSE-FLAGS ,PARSE-RESULT> ,PARSE-QUESTION>>
|
||||
<BTST <PARSE-FLAGS ,PARSE-RESULT> ,PARSE-NOT>>>
|
||||
|
||||
<OBJECT BOOTS
|
||||
(OWNER BLACKTHORNE)
|
||||
(DESC "your boots")
|
||||
(FDESC "Sitting at the bottom of the steps are your boots.")
|
||||
(SYNONYM BOOTS PAIR)
|
||||
(FLAGS TAKEBIT WEARABLE PLURAL NOTHEBIT NOABIT)
|
||||
(ACTION BOOTS-F)>
|
||||
|
||||
<ROUTINE BOOTS-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<COND (<SCENE? ,S-ERASMUS>
|
||||
<TELL
|
||||
"They are salt-encrusted and worn." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"They have been cleaned and shined." CR>)>)
|
||||
(<VERB? LOOK-INSIDE SMELL>
|
||||
<TELL
|
||||
"They are the same boots you've been wearing for two years now. Let's
|
||||
just say they aren't in perfect condition any more." CR>)
|
||||
(<AND <VERB? TAKE-OFF>
|
||||
<FSET? ,BOOTS ,WEARBIT>>
|
||||
<COND (<SCENE? S-ERASMUS>
|
||||
<TELL
|
||||
"You'd be crazy to remove your boots in this weather!" CR>)>)
|
||||
(<VERB? WEAR>
|
||||
<COND (<AND <NOT <HELD? ,PRSO>>
|
||||
<NOT <EQUAL? <ITAKE> T>>>
|
||||
<RTRUE>)
|
||||
(<NOT <FSET? ,BOOTS ,WEARBIT>>
|
||||
<FSET ,BOOTS ,WEARBIT>
|
||||
<TELL
|
||||
"You put on your boots." CR>)>)>>
|
||||
|
||||
<OBJECT CLOTHES
|
||||
(OWNER BLACKTHORNE)
|
||||
(DESC "your clothes")
|
||||
(SYNONYM CLOTHES)
|
||||
(ADJECTIVE ;MY PILE)
|
||||
(FLAGS TAKEBIT WEARABLE PLURAL NOTHEBIT NOABIT)
|
||||
(ACTION CLOTHES-F)>
|
||||
|
||||
<ROUTINE CLOTHES-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<COND (<SCENE? ,S-ERASMUS>
|
||||
<TELL
|
||||
"They are filthy, torn, and wet." CR>)
|
||||
(<NOT <FSET? ,CLOTHES ,TOUCHBIT>>
|
||||
<TELL
|
||||
"They are in a neat pile, washed and pressed and mended with tiny,
|
||||
exquisite stitching. But your knife is gone, and so are your
|
||||
keys. Your boots are nowhere to be found. Worst of all, there is no sign
|
||||
of your precious rutters!" CR>)>)
|
||||
(<VERB? TAKE>
|
||||
<COND (<AND <SCENE? ,S-ANJIRO>
|
||||
<L? <GETP ,WINNER ,P?HEALTH> 3>>
|
||||
<QUEUE I-COLLAPSE 4>
|
||||
<TELL
|
||||
"You are still too weak to stand and go over to the clothes." CR>)>)
|
||||
(<VERB? WEAR>
|
||||
<COND (<AND <NOT <HELD? ,PRSO>>
|
||||
<L? <GETP ,WINNER ,P?HEALTH> 3>>
|
||||
<PERFORM ,V?TAKE ,CLOTHES>
|
||||
<RTRUE>)
|
||||
(<AND <NOT <FSET? ,CLOTHES ,WEARBIT>>
|
||||
<OR <IN? ,CLOTHES ,WINNER>
|
||||
<ITAKE>>>
|
||||
<FSET ,CLOTHES ,WEARBIT>
|
||||
<TELL "You ">
|
||||
<COND (<IN? ,WINNER ,QUILT>
|
||||
<MOVE ,WINNER ,HERE>)>
|
||||
<COND (<B-NOT-STANDING?>
|
||||
<B-STAND>
|
||||
<TELL "stand shakily and ">)>
|
||||
<TELL "put on your clothes">
|
||||
<COND (<NOT <HELD? ,BOOTS>>
|
||||
<TELL ", feeling strange without your boots">)>
|
||||
<TELL "." CR>)>)
|
||||
(<VERB? TAKE-OFF>
|
||||
<COND (<SCENE? S-ERASMUS>
|
||||
<TELL
|
||||
"You would freeze, or at least take a terrible chill." CR>)
|
||||
(<FSET? ,BOOTS ,WEARBIT>
|
||||
<YOULL-HAVE-TO "take off your boots">)
|
||||
(<AND <VERB? TAKE-OFF> <FORMAL-SCENE?>>
|
||||
<TELL
|
||||
"You would expose yourself to ridicule." CR>)
|
||||
(ELSE
|
||||
<FCLEAR ,CLOTHES ,WEARBIT>
|
||||
<TELL
|
||||
"You remove your clothes." CR>)>)
|
||||
(<VERB? TEAR>
|
||||
<COND (<SCENE? ,S-ERASMUS>
|
||||
<TELL
|
||||
"You are in desperate straits, but rending your garments seems like an odd
|
||||
reaction." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"Your clothes are thick, strong European fabrics and don't tear at all
|
||||
easily." CR>)>)>>
|
||||
|
||||
<OBJECT SEBASTIO
|
||||
(SDESC "priest")
|
||||
;(DESC "Father Sebastio")
|
||||
(SYNONYM PRIEST SEBASTIO MAN FATHER JESUIT EUROPEAN)
|
||||
(ADJECTIVE FATHER TONSURED)
|
||||
(FLAGS PERSON PORTUGUESEBIT OPENBIT CONTBIT SEARCHBIT NOABIT
|
||||
THE)
|
||||
(ACTION SEBASTIO-F)>
|
||||
|
||||
<ROUTINE SEBASTIO-F ("OPT" (RARG <>) "AUX" OW)
|
||||
<COND (<RARG? SUBJ>
|
||||
<RFALSE>)
|
||||
(<RARG? WINNER>
|
||||
<COND (<P? HELP ME>
|
||||
<TELL
|
||||
"\"Ah, help!\" he says with icy contempt. \"Help a heretic pirate!\"" CR>)
|
||||
(<VERB? HELLO>
|
||||
<TELL
|
||||
CTHE ,SEBASTIO " ignores your greeting." CR>)
|
||||
(<P? FIND ;WHERE (ME THIS)>
|
||||
<COND (,YABU-QUESTION
|
||||
<SPEAK-ONLY-TO-YABU>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"\"The Japans, pirate.\" the priest says angrily." CR>)>)
|
||||
(<P? BE THIS JAPAN>
|
||||
<COND (,YABU-QUESTION
|
||||
<SPEAK-ONLY-TO-YABU>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"\"Yes, Japan. Nippon,\" the priest says impatiently." CR>)>)
|
||||
(<VERB? WHO>
|
||||
<COND (<PRSO? YOU>
|
||||
<COND (,YABU-QUESTION <SPEAK-ONLY-TO-YABU>)
|
||||
(ELSE
|
||||
<NEW-SDESC ,SEBASTIO "Father Sebastio">
|
||||
<TELL
|
||||
"\"Father Sebastio. I'm from Portugal. I'm a Jesuit.\"" CR>)>)
|
||||
(<AND <PRSO? ,YABU ,GLOBAL-DAIMYO>
|
||||
<NOUN-USED? ,PRSO ,W?DAIMYO>>
|
||||
<TELL
|
||||
"\"The "I"daimyo"" is Kasigi Yabu."G" He owns this whole province.\"" CR>)
|
||||
(<PRSO? ,OMI>
|
||||
<COND (,YABU-QUESTION <SPEAK-ONLY-TO-YABU>)
|
||||
(ELSE
|
||||
<TELL "\"">
|
||||
<COND (<NOT <FSET? ,OMI ,NOTHEBIT>>
|
||||
<TELL
|
||||
"Who told you about Kasigi Omi-san? ">)>
|
||||
<TELL
|
||||
"Kasigi Omi-san is the samurai in charge of this village. He is
|
||||
the Lord Yabu's nephew.\"" CR>)>)
|
||||
(<PRSO? ,MURA>
|
||||
<COND (,YABU-QUESTION <SPEAK-ONLY-TO-YABU>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"\"He is the headman of this village. He, at least, is a good
|
||||
Christian.\"" CR>)>)
|
||||
(ELSE
|
||||
<TELL
|
||||
G"\"I'm not here to answer your questions, pirate!\"" CR>)>)
|
||||
(<VERB? WHAT>
|
||||
<COND (<PRSO? YOU>
|
||||
<PERFORM ,V?WHO ,YOU>
|
||||
<RTRUE>)
|
||||
(<PRSO? ,GLOBAL-DAIMYO ,YABU>
|
||||
<COND (<NOUN-USED? ,PRSO ,W?DAIMYO>
|
||||
<TELL
|
||||
"\"The "I"daimyo"" is a feudal lord."G" He owns this whole province.\"" CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"\"Who told you about " D ,YABU "?\"" CR>)>)
|
||||
(<PRSO? ,GLOBAL-SAMURAI>
|
||||
<TELL
|
||||
"\"Warriors -- soldiers -- members of the warrior caste.\"" CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
G"\"I'm not here to answer your questions, pirate!\"" CR>)>)
|
||||
(,OMI-QUESTION
|
||||
<SET OW ,WINNER>
|
||||
<SETG WINNER ,OMI>
|
||||
<PERFORM ,PRSA ,PRSO ,PRSI>
|
||||
<SETG WINNER .OW>
|
||||
<RTRUE>)
|
||||
(,YABU-QUESTION
|
||||
<COND (<VERB? TRANSLATE>
|
||||
<TELL
|
||||
"You harden your voice. \""I"Que va!"" First translate what I
|
||||
said. Now!\" The priest reddens, and you see that the exchange has not gone
|
||||
unnoticed by the "I"daimyo""." CR>)
|
||||
(ELSE
|
||||
<SET OW ,WINNER>
|
||||
<SETG WINNER ,YABU>
|
||||
<PERFORM ,PRSA ,PRSO ,PRSI>
|
||||
<SETG WINNER .OW>
|
||||
<RTRUE>)>)
|
||||
(<VERB? TRANSLATE>
|
||||
<TELL
|
||||
"\"It's not your place to command me, heretic!\"" CR>)
|
||||
(<P? BE ME>
|
||||
<COND (<AND <PRSI? ,HERETIC ,PIRATE>
|
||||
<P-NEGATIVE?>>
|
||||
<TELL
|
||||
"\"Liar!\" storms the priest." CR>)
|
||||
(<PRSI? ,BLACKTHORNE>
|
||||
<TELL
|
||||
"He doesn't seem to have heard of you before." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"\"I'll know who and what you are soon enough!\"" CR>)>)
|
||||
(ELSE
|
||||
<TELL
|
||||
CTHE ,SEBASTIO " looks at you with contempt." CR>)>)
|
||||
(<VERB? EXAMINE>
|
||||
<TELL
|
||||
CTHE ,SEBASTIO " is a short, thick man with dark hair and a long
|
||||
beard. His robe is travel-stained and his boots are besmirched with
|
||||
mud. He is
|
||||
obviously a Portuguese or Spanish priest, and though his flowing robe is
|
||||
orange, there is no mistaking the ">
|
||||
<COND (<IN? ,SEBASTIO-CRUCIFIX ,PRSO>
|
||||
<TELL "crucifix and ">)>
|
||||
<TELL "rosary at his
|
||||
belt, or the cold hostility on his face." CR>)
|
||||
(<AND <P? TELL-ABOUT SEBASTIO STRAIT-OF-MAGELLAN>
|
||||
<EQUAL? ,YABU-QUESTION 4>>
|
||||
<PERFORM ,PRSA ,YABU ,PRSI>
|
||||
<RTRUE>)
|
||||
(<VERB? ANSWER REPLY>
|
||||
<TELL
|
||||
"\"That's no response, pirate!\" rages " THE ,SEBASTIO "." CR>)
|
||||
(<VERB? BOW>
|
||||
<TELL
|
||||
"\"You learn fast, pirate!\" he says, surprised, but he doesn't return
|
||||
your bow." CR>)
|
||||
(<P? THROW SEBASTIO-CRUCIFIX SEBASTIO>
|
||||
<RFALSE>)
|
||||
(<HOSTILE-VERB?>
|
||||
<TELL "You ">
|
||||
<COND (<B-NOT-STANDING?>
|
||||
<B-STAND>
|
||||
<TELL "storm to your feet, ">)>
|
||||
<COND (<VERB? THROW>
|
||||
<MOVE ,PRSO ,HERE>
|
||||
<TELL "throw " THE ,PRSO " at">)
|
||||
(<VERB? SPIT>
|
||||
<TELL "spit at">)
|
||||
(<VERB? KICK>
|
||||
<TELL "kick">)
|
||||
(<VERB? PISS>
|
||||
<TELL "piss on">)
|
||||
(ELSE
|
||||
<TELL "strike">)>
|
||||
<TELL " " THE ,SEBASTIO ", and he curses at you
|
||||
but turns the other cheek." CR>
|
||||
<COND (<AND <IN? ,OMI ,HERE> <IN? ,YABU ,HERE>>
|
||||
<QUEUE I-BOW? 2>
|
||||
<TELL CR
|
||||
"Omi and Yabu look at each other in surprise." CR>)>
|
||||
<RTRUE>)>>
|
||||
|
||||
<OBJECT OMI
|
||||
;(SDESC "Omi")
|
||||
(SDESC "young man")
|
||||
(SYNONYM MAN OMI OMI-SAN SAMURAI)
|
||||
(ADJECTIVE YOUNG KASIGI)
|
||||
(PICTURE P-OMI)
|
||||
(FLAGS PERSON JAPANESEBIT SCOREBIT THE ;NOTHEBIT)
|
||||
(GENERIC GENERIC-SAMURAI-F)
|
||||
(ACTION OMI-F)>
|
||||
|
||||
<ROUTINE OMI-F ("OPT" (RARG <>))
|
||||
<COND (<RARG? SUBJ>
|
||||
<RFALSE>)
|
||||
(<RARG? WINNER>
|
||||
<COND (<OR <VERB? PISS CURSE FUCK>
|
||||
<AND <VERB? NO IYE>
|
||||
<QUEUED? I-TAKE-CROOCQ>>>
|
||||
<SETG WINNER ,PLAYER>
|
||||
<PERFORM ,V?CURSE ,OMI>
|
||||
<RTRUE>)
|
||||
(<OR <QUESTION-VERB?>
|
||||
<VERB? ASK-ABOUT TELL-ME-ABOUT>>
|
||||
<TELL
|
||||
CTHE ,SEBASTIO " snaps, \"You're to answer questions, not ask
|
||||
them.\" He says something to the samurai, who scowls." CR>)
|
||||
(<AND ,OMI-QUESTION
|
||||
<I-DONT-KNOW?>>
|
||||
<TELL
|
||||
"\"Liar!\" screams " THE ,SEBASTIO ". \"They use torture here. They can
|
||||
find out anything!\"" CR>)
|
||||
(<AND <EQUAL? ,OMI-QUESTION 1>
|
||||
<P? BE (ME BLACKTHORNE)> ,PRSI>
|
||||
<COND (<AND <OR <ENGLISH?> <DUTCH?>>
|
||||
<NOT <P-NEGATIVE?>>>
|
||||
<SETG QCONTEXT <>>
|
||||
<SETG OMI-QUESTION 0>
|
||||
<TELL CTHE ,SEBASTIO>
|
||||
<COND (<ENGLISH?>
|
||||
<TELL
|
||||
" steps back as though struck. \"English! England">)
|
||||
(ELSE
|
||||
<TELL
|
||||
" nods suspiciously. \"Dutch! Holland">)>
|
||||
<TELL
|
||||
"!\"He begins to explain to Omi but the samurai cuts him short." CR>)
|
||||
(ELSE
|
||||
<SETUP-ANSWER "i am">
|
||||
<SEBASTIO-SCREAMS>
|
||||
<COND (<PRSI? ,BLACKTHORNE>
|
||||
<TELL
|
||||
"I want to know your nationality, not your name, heretic!\"" CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"I know you aren't what you say you are!\"" CR>)>)>)
|
||||
(<AND <EQUAL? ,OMI-QUESTION 2>
|
||||
<OR <P? BE (BLACKTHORNE ME) INTPP>
|
||||
<P? COME-FROM>>>
|
||||
<COND (<OR <P? COME-FROM HOLLAND>
|
||||
<PP? ,W?FROM ,HOLLAND>>
|
||||
<SETG QCONTEXT <>>
|
||||
<SETG OMI-QUESTION 0>
|
||||
<TELL
|
||||
CTHE ,SEBASTIO "'s anger is obvious. \"A Dutch pirate ship!\" he
|
||||
gasps. He says something haltingly to Omi-san." CR>)
|
||||
(ELSE
|
||||
<SEBASTIO-SCREAMS>
|
||||
<TELL "That's a
|
||||
Dutch pirate ship! Admit you're a heretic, murdering Dutchman!\"" CR>)>)
|
||||
(<AND <EQUAL? ,OMI-QUESTION 3>
|
||||
<VERB? YES NO IYE BE HAI>>
|
||||
<COND (<OR <VERB? YES HAI>
|
||||
<AND <P? BE (BLACKTHORNE ME) LEADER>
|
||||
<NOT <P-NEGATIVE?>>>>
|
||||
<SETG QCONTEXT <>>
|
||||
<SETG OMI-QUESTION 0>
|
||||
<SETG ORPHAN-ANSWER <>>
|
||||
<TELL CTHE ,SEBASTIO>
|
||||
<COND (<VERB? HAI>
|
||||
<TELL
|
||||
" looks surprised at your knowledge of Japanese, and
|
||||
speaks rapidly and excitedly to Omi." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
" translates for Omi, still digesting what you have
|
||||
told him." CR>)>
|
||||
<SCORE-OBJECT ,OMI>)
|
||||
(ELSE
|
||||
<SETUP-ANSWER "i am">
|
||||
<TELL
|
||||
CTHE ,SEBASTIO " screams, \"Coward, I know you're the leader! The
|
||||
villagers have already told me so!\"" CR>)>)
|
||||
(,OMI-QUESTION
|
||||
<COND (<VERB? SAY REPLY>
|
||||
<PERFORM ,V?BE ,ME ,PRSO>
|
||||
<RTRUE>)
|
||||
(ELSE
|
||||
<TELL
|
||||
CTHE ,OMI " doesn't respond, but the priest says, \"You'd better learn to be
|
||||
polite -- and find some manners quickly. Here they don't tolerate lack
|
||||
of manners.\" His voice edges. \"Hurry up and answer!\"" CR>)>)
|
||||
(<AND <VERB? STOP>
|
||||
<NOT ,ANSWER-HAI?>
|
||||
<HERE? ,VILLAGE-SQUARE>
|
||||
<QUEUED? I-TAKE-CROOCQ>>
|
||||
<SETG QCONTEXT ,OMI>
|
||||
<TELL
|
||||
"\"Omi-san says, you agree to behave? You will obey all orders?\"" CR>)
|
||||
(<AND <VERB? HAI YES>
|
||||
<NOT ,ANSWER-HAI?>
|
||||
<HERE? ,VILLAGE-SQUARE>
|
||||
<QUEUED? I-TAKE-CROOCQ>>
|
||||
<COND (<VERB? YES>
|
||||
<TELL
|
||||
"\"You must speak to him in Japanese, heretic! You must say 'hai.'\" "
|
||||
D ,SEBASTIO " is sweating and nervous." CR>)
|
||||
(ELSE
|
||||
<SETG ANSWER-HAI? T>
|
||||
<SETG DELAY-CNT 0>
|
||||
<THIS-IS-IT ,ORDERS>
|
||||
<TELL
|
||||
"\"Omi-san says, lie down. Immediately.\"" CR>
|
||||
<SCORE-OBJECT ,VILLAGE-SQUARE>)>)
|
||||
(ELSE
|
||||
<TELL
|
||||
CTHE ,OMI " ignores you, for now." CR>)>)
|
||||
(<VERB? EXAMINE>
|
||||
<TELL
|
||||
"The young man is a head shorter and much younger than you, his
|
||||
handsome face slightly pockmarked though. He wears breeches and clogs
|
||||
and a light kimono with two scabbarded swords stuck into the belt. One
|
||||
is daggerlike, the other, a two-handed killing sword, is long and
|
||||
slightly curved." CR>)
|
||||
(<VERB? WHO>
|
||||
<TELL
|
||||
CTHE ,OMI " is an ambitious young man. He serves his masters well, but
|
||||
himself better." CR>)
|
||||
(<VERB? THANK>
|
||||
<COND (<IN? ,SEBASTIO ,HERE>
|
||||
<TELL
|
||||
CTHE ,SEBASTIO " translates. Omi seems pleased by your politeness." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"Omi responds with a curt bow, and says \"Domo.\"" CR>)>)
|
||||
(<OR <VERB? PISS CURSE FUCK>
|
||||
<AND <OR <VERB? NO IYE> <HOSTILE-VERB?>>
|
||||
<QUEUED? I-TAKE-CROOCQ>>>
|
||||
<COND (<SCENE? S-PIT>
|
||||
<COND (<NOT ,PISS-FLAG>
|
||||
<SETG PISS-FLAG T>
|
||||
<TELL
|
||||
"You lose your composure. \"Tell him to go to hell. Tell him I piss on
|
||||
him and his whole country. Tell him exactly what I said! Exactly, by
|
||||
God!\" you yell at the priest. Omi listens, then the knuckles on his
|
||||
sword hand whiten. You can see he is trying not to give way to his
|
||||
emotions." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"You continue to scream abuse at Omi." CR>)>)>)
|
||||
(<OR <HOSTILE-VERB?> <VERB? STOP>>
|
||||
<REMOVES-YOUR-HEAD ,OMI>)>>
|
||||
|
||||
<ROUTINE SEBASTIO-SCREAMS ()
|
||||
<TELL
|
||||
CTHE ,SEBASTIO " screams, \"Lying pig of a heretic! ">>
|
||||
|
||||
<ROUTINE REMOVES-YOUR-HEAD (WHO)
|
||||
<COND (<JIGS-UP? ,J-HEAD>
|
||||
<TELL
|
||||
CTHE .WHO " responds to your feeble attack by removing your head." CR>
|
||||
<JIGS-UP>)
|
||||
(ELSE <RTRUE>)>>
|
||||
|
||||
<OBJECT MURA
|
||||
(LOC GENERIC-OBJECTS)
|
||||
(DESC "Mura")
|
||||
(SYNONYM MURA HEADMAN MAN)
|
||||
(FLAGS PERSON JAPANESEBIT NOABIT NOTHEBIT OPENBIT CONTBIT SEARCHBIT)
|
||||
(GENERIC GENERIC-MAN-F)
|
||||
(ACTION MURA-F)>
|
||||
|
||||
<ROUTINE GENERIC-MAN-F (R F)
|
||||
<TELL "You'll have to be more specific." CR>
|
||||
,ROOMS ;"means 'handled'">
|
||||
|
||||
<ROUTINE MURA-F ("OPT" (RARG <>))
|
||||
<COND ;(<RARG? SUBJ>
|
||||
<RFALSE>)
|
||||
(<RARG? WINNER>
|
||||
<COND (<AND <VERB? TAKE>
|
||||
<IN? ,PRSO ,PLAYER>
|
||||
<NOT <FSET? ,PRSO ,WEARBIT>>>
|
||||
<SETG WINNER ,PLAYER>
|
||||
<PERFORM ,V?GIVE ,PRSO ,MURA>)
|
||||
(<AND <VERB? NO IYE>
|
||||
<EQUAL? ,QCONTEXT ,MURA>
|
||||
<SCENE? ,S-RODRIGUES>>
|
||||
<TELL
|
||||
"Mura replies in halting Portuguese, \"So sorry, Anjin-san, you must
|
||||
go.\"" CR>)
|
||||
(<P? (TELL-ME-ABOUT FIND) ONNA>
|
||||
<NEW-SDESC ,ONNA "Haku">
|
||||
<REPLACE-SYNONYM ,ONNA ,W?ONNA ,W?HAKU>
|
||||
<TELL
|
||||
"\"Where's Onna?\" you ask. \"I want Onna!\" Mura replies in heavily-accented
|
||||
Portuguese, \""I"Onna"" mean 'woman.' Her name Haku.\"" CR>)
|
||||
(ELSE
|
||||
<WAKARIMASEN>)>)
|
||||
(<RARG? <>>
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
"Mura is a short, wiry, middle-aged man. You realize there's more
|
||||
to him than the simple fisherman he appears to be." CR>)
|
||||
(<AND <P? GIVE * MURA>
|
||||
<HERE? ,BATH-HOUSE>
|
||||
<NOT <FSET? ,PRSO ,WEARBIT>>>
|
||||
<MOVE ,PRSO ,MURA>
|
||||
<TELL
|
||||
"Mura takes " THE ,PRSO "." CR>)
|
||||
(<VERB? ATTACK HIT>
|
||||
<TELL
|
||||
"Mura is unarmed, but the moment you get within reach, he chops your
|
||||
elbow with the side of his hand and your arm hangs down, momentarily
|
||||
paralyzed. \"Please excuse me, Captain-san,\" he says in very
|
||||
bad Portuguese." CR>)
|
||||
(<VERB? WHO>
|
||||
<TELL
|
||||
"Mura is the headman of the village of Anjiro." CR>)>)>>
|
||||
|
||||
<OBJECT MARIKO
|
||||
;(DESC "Mariko")
|
||||
(SDESC "Mariko")
|
||||
(PICTURE P-MARIKO)
|
||||
(SYNONYM MARIKO TODA WOMAN)
|
||||
(ADJECTIVE LADY TODA)
|
||||
(FLAGS PERSON JAPANESEBIT FEMALE NOABIT NOTHEBIT
|
||||
OPENBIT CONTBIT SEARCHBIT SCOREBIT)
|
||||
(DESCFCN MARIKO-DESC)
|
||||
(ACTION MARIKO-F)>
|
||||
|
||||
<ROUTINE MARIKO-DESC (RARG OBJ)
|
||||
<COND (<RARG? OBJDESC?>
|
||||
<COND (<AND <SCENE? ,S-SEPPUKU>
|
||||
<HERE? ,TEA-HOUSE ,FORECOURT>>
|
||||
<RTRUE>)
|
||||
(<AND <SCENE? ,S-NINJA>
|
||||
<OR <FSET? ,MARIKO ,DEAD>
|
||||
<FSET? ,MARIKO ,RMUNGBIT>>>
|
||||
<RTRUE>)>)
|
||||
(<RARG? OBJDESC>
|
||||
<TELL "Mariko ">
|
||||
<COND (<HERE? ,TEA-HOUSE>
|
||||
<TELL
|
||||
"kneels here, facing the doorway.">)
|
||||
(<HERE? ,FORECOURT>
|
||||
<COND (<FSET? ,MARIKO ,SITTING>
|
||||
<TELL
|
||||
"kneels serenely in the center of the crimson coverlet.">)
|
||||
(ELSE
|
||||
<TELL
|
||||
"is standing in the center of the main gate.">)>)
|
||||
(<SCENE? ,S-NINJA>
|
||||
<TELL "lies ">
|
||||
<COND (<FSET? ,MARIKO ,DEAD>
|
||||
<TELL "dead">)
|
||||
(ELSE
|
||||
<TELL "dying">)>
|
||||
<TELL " on the floor.">)>)>>
|
||||
|
||||
<ROUTINE MARIKO-F ("OPT" (RARG <>))
|
||||
<COND (<RARG? SUBJ>
|
||||
<RFALSE>)
|
||||
(<RARG? WINNER>
|
||||
<COND (<OR <FSET? ,MARIKO ,DEAD>
|
||||
<FSET? ,MARIKO ,RMUNGBIT>>
|
||||
<TELL
|
||||
"Mariko can no longer respond." CR>)
|
||||
(<P? (WHO TELL-ME-ABOUT) (YOU MARIKO)>
|
||||
<TELL
|
||||
"\"I am Lady Toda Mariko-noh-Buntaro. The priests know me as Lady Maria,
|
||||
as I am Christian.\"" CR>)
|
||||
(<P? (WHAT TELL-ME-ABOUT) PROPHECY>
|
||||
<COND (<HERE? ,MAPLE-GLADE>
|
||||
<TELL
|
||||
"Mariko asks permission of Toranaga, who nods. ">)>
|
||||
<TELL
|
||||
"\"Six years ago a Chinese embassy came to the Taiko to try to settle the
|
||||
Japanese-Chinese-Korean war. A famous astrologer was among them. He forecast
|
||||
many things which have since come true. The Taiko asked him to predict the
|
||||
deaths of certain of his counselors. The astrologer said that Toranaga would
|
||||
die by the sword when he was middle-aged. Ishido, the famous conqueror of
|
||||
Korea, would die undiseased, an old man, his feet firm in the earth, the
|
||||
most famous man of his day. The Taiko himself would die in his bed, respected,
|
||||
revered, of old age, leaving a healthy son to follow him. At this time Yaemon
|
||||
had not yet been born, so that part of the prophecy has already come to
|
||||
pass.\"" CR>
|
||||
<SCORE-OBJECT ,PROPHECY>)
|
||||
(<SCENE? ,S-MARIKO>
|
||||
<COND (<OR <P? KONNICHI-WA ROOMS>
|
||||
<P? NIHON-GO-GA HANASE-MASEN>>
|
||||
<COND (<FSET? ,MAPLE-GLADE ,SCOREBIT>
|
||||
<SETG WINNER ,PLAYER>
|
||||
<PERFORM ,V?KONNICHI-WA ,MARIKO>
|
||||
<RTRUE>)>)
|
||||
(<AND <EQUAL? ,QCONTEXT ,MARIKO>
|
||||
<VERB? LEARN TRAIN TEACH>
|
||||
<PAST-TENSE?>>
|
||||
<COND (<OR <AND <EQUAL? ,PRSS ,DOMINGO>
|
||||
<PRSO? ME>>
|
||||
<PRSO? PRISON DOMINGO>>
|
||||
<HOW-I-LEARNED>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"She doesn't seem to believe you." CR>)>)
|
||||
(<P? TEACH ME JAPANESE>
|
||||
<TELL
|
||||
"\"If my master wishes,\" she answers, turning to Toranaga. They converse
|
||||
for a while. \"My Master says that only a few bar -- foreigners have been
|
||||
able to learn our language, and these are all priests. But he would like to
|
||||
be able to talk to you directly, without the need for an interpreter. He will
|
||||
consider this request.\"" CR>)
|
||||
(<P? (WHO TELL-ME-ABOUT) YAEMON>
|
||||
<NEW-SDESC ,YAEMON "Yaemon">
|
||||
<TELL
|
||||
"\"This is the Heir, the only son of the Taiko. His name is Yaemon.\"" CR>)
|
||||
(<P? (WHO TELL-ME-ABOUT) (YOU MARIKO)>
|
||||
<TELL
|
||||
"\"My name is Toda Mariko noh-Buntaro. I am a 'senhora,' not a 'senhorita,'
|
||||
if you please.\"" CR>)
|
||||
(<OR <QUESTION-VERB?>
|
||||
<VERB? ASK-ABOUT TELL-ME-ABOUT>>
|
||||
<TELL
|
||||
"\"Lord Toranaga has instructed me to say that ">
|
||||
<COND (<EQUAL? ,LG-CREWMEN ,PRSO ,PRSI>
|
||||
<TELL
|
||||
"your crewmen are being treated well. They will given a place to live, and
|
||||
to learn to be civilized.\"" CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"you will please confine yourself
|
||||
to answering questions only, for the moment.\" Then she says, \"I'm sure, if
|
||||
you are patient, Pilot-Captain B'ackthon, that you'll be given an opportunity
|
||||
to ask anything you wish later.\"" CR>)>)
|
||||
(<JAPANESE-VERB?>
|
||||
<TELL
|
||||
"\"If you will excuse me, senhor, my Master orders me to say your accent is a
|
||||
little wrong.\" She repeats the word several times slowly, showing you how to
|
||||
say it." CR>)
|
||||
(ELSE
|
||||
<I-DONT-UNDERSTAND>)>)
|
||||
(<VERB? THOU>
|
||||
<I-LOVE-YOU>)
|
||||
(<VERB? TELL-ME-ABOUT>
|
||||
<COND (<PRSO? ,SUICIDE>
|
||||
<TELL
|
||||
"\"If the shame is too great, or if our liege Lord commands, we
|
||||
take our lives. I have been trained to do so, as have all samurai.\"" CR>
|
||||
<RTRUE>)
|
||||
(<PRSO? ,KIYAMA>
|
||||
<TELL
|
||||
"\"Lord Kiyama is a member of the Council of Regents, and the most powerful
|
||||
of the Christian daimyos.\"" CR>)
|
||||
(<SCENE? ,S-NINJA>
|
||||
<COND (<PRSO? ,YABU>
|
||||
<TELL
|
||||
"\"He is very angry with me for confronting Lord Ishido, and even
|
||||
angrier that I did not go through with my seppuku, but that was my
|
||||
"I"karma"", Anjin-san.\"" CR>
|
||||
<RTRUE>)
|
||||
(<PRSO? ,ACHIKO>
|
||||
<TELL
|
||||
"\"Her grandfather-in-law, Lord Kiyama, opposes Lord Toranaga. He has
|
||||
disowned her for her presumption in joining us.\"" CR>
|
||||
<RTRUE>)>)>
|
||||
<TELL
|
||||
"\"I cannot tell you
|
|
@ -0,0 +1,339 @@
|
|||
"DEFS for
|
||||
SHOGUN
|
||||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
;"see if we can save some space"
|
||||
|
||||
<CHRSET 0 "abcdefghiklmnoprstuwyT.,\"">
|
||||
<CHRSET 1 "jqvxzABCEGHIJLMNOPRSWY?!'-">
|
||||
<CHRSET 2 "DFKQUVXZ123[]:;=*()#}>/ ">
|
||||
|
||||
<INCLUDE "SYMBOLS">
|
||||
|
||||
<COMPILATION-FLAG P-DEBUGGING-PARSER T>
|
||||
|
||||
<TELL-TOKENS (CRLF CR) <CRLF>
|
||||
(NUM N) * <PRINTN .X>
|
||||
(CHAR CHR C) * <PRINTC .X>
|
||||
G *:STRING <PRINT .X>
|
||||
D ,PRSO <DPRINT-PRSO>
|
||||
D ,PRSI <DPRINT-PRSI>
|
||||
D * <DPRINT .X>
|
||||
CD ,PRSO <CDPRINT-PRSO>
|
||||
CD ,PRSI <CDPRINT-PRSI>
|
||||
CD * <CDPRINT .X>
|
||||
THE ,PRSO <THE-PRINT-PRSO>
|
||||
THE ,PRSI <THE-PRINT-PRSI>
|
||||
THE * <THE-PRINT .X>
|
||||
CTHE ,PRSO <CTHE-PRINT-PRSO>
|
||||
CTHE ,PRSI <CTHE-PRINT-PRSI>
|
||||
CTHE * <CTHE-PRINT .X>
|
||||
(A AN) ,PRSO <PRINTA-PRSO>
|
||||
(A AN) ,PRSI <PRINTA-PRSI>
|
||||
(A AN) * <PRINTA .X>
|
||||
(CA CAN) ,PRSO <CPRINTA-PRSO>
|
||||
(CA CAN) ,PRSI <CPRINTA-PRSI>
|
||||
(CA CAN) * <CPRINTA .X>
|
||||
I *:STRING <PRINTUNDER .X>
|
||||
HIM/HER * <PRINT-HIM/HER .X>
|
||||
CHE/SHE * <CPRINT-HE/SHE .X>
|
||||
HE/SHE * <PRINT-HE/SHE .X>
|
||||
HIS/HER * <PRINT-HIS/HER .X>
|
||||
IS/ARE * <PRINT-IS/ARE .X>
|
||||
S * <PRINT-PLURAL .X>>
|
||||
|
||||
<REPLACE-DEFINITION BUZZER-WORD?
|
||||
<ROUTINE BUZZER-WORD? (WD PTR) <>>>
|
||||
|
||||
<REPLACE-DEFINITION DIR-VERB-PRSI?
|
||||
<ROUTINE DIR-VERB-PRSI? (NP) <>>>
|
||||
|
||||
<DELAY-DEFINITION GAME-VERB?> ;"to replace parser's versions"
|
||||
|
||||
<BLOCK (<ROOT>)>
|
||||
TELL-CTHE
|
||||
TELL-THE
|
||||
THINGS
|
||||
<ENDBLOCK>
|
||||
|
||||
<REPLACE-DEFINITION TELL-THE
|
||||
<DEFMAC TELL-THE ("ARGS" X) <FORM THE-PRINT !.X>>>
|
||||
|
||||
<REPLACE-DEFINITION TELL-CTHE
|
||||
<DEFMAC TELL-CTHE ("ARGS" X) <FORM CTHE-PRINT !.X>>>
|
||||
|
||||
<REPLACE-DEFINITION OWNERS
|
||||
<CONSTANT OWNERS
|
||||
<TABLE (PURE LENGTH)
|
||||
BLACKTHORNE
|
||||
CHOPSTICKS
|
||||
CITY
|
||||
CREWMEN
|
||||
CROWD
|
||||
GALLEY
|
||||
GOD
|
||||
GRUEL
|
||||
GYOKO
|
||||
ISHIDO
|
||||
KIRITSUBO
|
||||
LG-ERASMUS
|
||||
LIZARD
|
||||
MAPLE-GLADE
|
||||
MARIKO
|
||||
MATES
|
||||
MURA
|
||||
OMI
|
||||
PARCHMENT
|
||||
REEF
|
||||
SEARCH-PARTY
|
||||
SEBASTIO
|
||||
SIGN-OF-CROSS
|
||||
SPILLBERGEN
|
||||
STRAIT-OF-MAGELLAN
|
||||
TORANAGA
|
||||
VINCK
|
||||
YABU
|
||||
YOSHINAKA>>>
|
||||
|
||||
<DELAY-DEFINITION READ-INPUT>
|
||||
<REPLACE-DEFINITION PERSONBIT <CONSTANT PERSONBIT PERSON>>
|
||||
<REPLACE-DEFINITION NARTICLEBIT <CONSTANT NARTICLEBIT NOTHEBIT>>
|
||||
<REPLACE-DEFINITION REFRESH
|
||||
<ROUTINE V-$REFRESH ()
|
||||
<SETG SHERE <>>
|
||||
<COND (<NOT <EQUAL? ,P-CAN-UNDO 2>>
|
||||
<REPAINT-DISPLAY>)
|
||||
(<EQUAL? ,P-CAN-UNDO 2>
|
||||
<COLOR ,FG-COLOR ,BG-COLOR>
|
||||
<RESET-MARGIN>
|
||||
<CLEAR 0>
|
||||
<UPDATE-STATUS-LINE>
|
||||
<COND (<EQUAL? ,HERE ,MAZE>
|
||||
<DISPLAY-MAZE>)>
|
||||
<COND (<QUEUED? I-SETUP-ANSWER>
|
||||
<I-SETUP-ANSWER>
|
||||
;"interrupts won't run")>
|
||||
<TELL "[UNDO done.]" CR>)>>>
|
||||
<REPLACE-DEFINITION ROOMSBIT
|
||||
<CONSTANT ROOMSBIT RLANDBIT>>
|
||||
<REPLACE-DEFINITION SETUP-ORPHAN-NP
|
||||
<CONSTANT SETUP-ORPHAN-NP 0>>
|
||||
<DELAY-DEFINITION STATUS-LINE>
|
||||
<DELAY-DEFINITION YES?>
|
||||
|
||||
<COMPILATION-FLAG P-PS-COMMA T>
|
||||
<TERMINALS VERB NOUN ADJ
|
||||
;ADV QUANT MISCWORD
|
||||
DIR TOBE QWORD CANDO COMMA
|
||||
PARTICLE PREP ;"keep these two in order! -- SWG"
|
||||
ASKWORD
|
||||
COMMA APOSTR OFWORD ARTICLE QUOTE>
|
||||
|
||||
|
||||
<PROPDEF DIRECTIONS <> ;"direction defs for 'rooms-first'"
|
||||
(DIR TO R:ROOM =
|
||||
(UEXIT 1) ;444 #SEMI "UNCONDITIONAL EXIT"
|
||||
(REXIT <ROOM .R>) #SEMI "TO ROOM")
|
||||
(DIR S:STRING =
|
||||
(NEXIT 2) ;99 #SEMI "IMPOSSIBLE EXIT"
|
||||
(NEXITSTR <STRING .S>) #SEMI "FAILURE MESSAGE")
|
||||
(DIR SORRY S:STRING =
|
||||
(NEXIT 2) #SEMI "IMPOSSIBLE EXIT"
|
||||
(NEXITSTR <STRING .S>) #SEMI "FAILURE MESSAGE")
|
||||
(DIR PER F:FCN =
|
||||
(FEXIT 3) ;53 #SEMI "CONDITIONAL EXIT"
|
||||
(FEXITFCN <WORD .F>) #SEMI "PER FUNCTION"
|
||||
<BYTE 0>)
|
||||
(DIR TO R:ROOM IF F:GLOBAL "OPT" ELSE S:STRING =
|
||||
(CEXIT 4) ;7 #SEMI "CONDITIONAL EXIT"
|
||||
(REXIT <ROOM .R>) #SEMI "TO ROOM"
|
||||
(CEXITFLAG <GLOBAL .F>) #SEMI "IF FLAG IS TRUE"
|
||||
(CEXITSTR <STRING .S>) #SEMI "FAILURE MESSAGE")
|
||||
(DIR TO R:ROOM IF O:OBJECT IS OPEN "OPT" ELSE S:STRING =
|
||||
(DEXIT 5) ;15 #SEMI "CONDITIONAL EXIT"
|
||||
(DEXITOBJ <OBJECT .O>) #SEMI "IF DOOR IS OPEN"
|
||||
(DEXITSTR <STRING .S>) #SEMI "FAILURE MESSAGE"
|
||||
(DEXITRM <ROOM .R>) #SEMI "TO ROOM")>
|
||||
|
||||
<DIRECTIONS NORTH NE EAST SE SOUTH SW WEST NW
|
||||
UP DOWN IN OUT FORE AFT PORT STARBOARD>
|
||||
|
||||
<SETG L-SEARCH-PATH (["P" ""] !,L-SEARCH-PATH)>
|
||||
|
||||
<REPLACE-DEFINITION WINNER-SAYS-WHICH?
|
||||
<ROUTINE WINNER-SAYS-WHICH? (NP)
|
||||
<RFATAL>>>
|
||||
|
||||
<REPLACE-DEFINITION INVALID-OBJECT?
|
||||
<ROUTINE INVALID-OBJECT? (OBJ)
|
||||
<COND (<NOT <LOC .OBJ>> <RTRUE>)
|
||||
(<AND <NOT <IN? .OBJ ,GLOBAL-OBJECTS>>
|
||||
<NOT <IN? .OBJ ,GENERIC-OBJECTS>>
|
||||
<NOT <IN-SCENE? .OBJ>>>
|
||||
<RTRUE>)
|
||||
(ELSE <RFALSE>)>>>
|
||||
|
||||
<REPLACE-DEFINITION VERB-ALL-TEST
|
||||
<DEFINE VERB-ALL-TEST (O I "AUX" L) ;"O=PRSO I=PRSI"
|
||||
<SET L <LOC .O>>
|
||||
<COND (<EQUAL? ,PRSA ,V?DROP ,V?GIVE>
|
||||
<COND (<AND <EQUAL? .L ,WINNER>
|
||||
<NOT <FSET? .L ,WEARBIT>>>
|
||||
<RTRUE>)
|
||||
(T <RFALSE>)>)
|
||||
(<EQUAL? ,PRSA ,V?PUT>
|
||||
<COND (<EQUAL? .O .I>
|
||||
<RFALSE>)
|
||||
(<NOT <IN? .O .I>>
|
||||
<RTRUE>)
|
||||
(T <RFALSE>)>)
|
||||
(<EQUAL? ,PRSA ,V?TAKE>
|
||||
<COND (<FSET? .O ,DONT-ALL> <RFALSE>)
|
||||
(<FSET? .O ,WEARBIT> <RFALSE>)
|
||||
(<AND <NOT <FSET? .O ,TAKEBIT>>
|
||||
<NOT <FSET? .O ,TRYTAKEBIT>>>
|
||||
<RFALSE>)>
|
||||
<COND (<NOT <ZERO? .I>>
|
||||
<COND (<NOT <EQUAL? .L .I>>
|
||||
<RFALSE>)>)
|
||||
(<EQUAL? .L ;,WINNER ,HERE>
|
||||
<RTRUE>)>
|
||||
<COND (<OR <FSET? .L ,PERSONBIT>
|
||||
<FSET? .L ,SURFACEBIT>>
|
||||
<RTRUE>)
|
||||
(<AND <FSET? .L ,CONTBIT>
|
||||
<FSET? .L ,OPENBIT>>
|
||||
<RTRUE>)
|
||||
(T <RFALSE>)>)
|
||||
(<AND <EQUAL? ,PRSA ,V?WEAR>
|
||||
<NOT <FSET? .O ,WEARABLE>>>
|
||||
<RFALSE>)
|
||||
(<NOT <ZERO? .I>>
|
||||
<COND (<NOT <EQUAL? .O .I>>
|
||||
<RTRUE>)
|
||||
(T <RFALSE>)>)
|
||||
(T <RTRUE>)>>>
|
||||
|
||||
<REPLACE-DEFINITION SPECIAL-CONTRACTION?
|
||||
<VOC "FO">
|
||||
<VOC "C">
|
||||
<VOC "FOC">
|
||||
<VOC "SLE">
|
||||
<ROUTINE SPECIAL-CONTRACTION? (PTR)
|
||||
<COND (<AND <EQUAL? <ZGET .PTR 0> ,W?FO>
|
||||
<EQUAL? <ZGET .PTR ,P-LEXELEN> ,W?APOSTROPHE>
|
||||
<EQUAL? <ZGET .PTR <* 2 ,P-LEXELEN>> ,W?C>>
|
||||
,W?FOC)
|
||||
(<AND <EQUAL? <ZGET .PTR 0> ,W?FOC>
|
||||
<EQUAL? <ZGET .PTR ,P-LEXELEN> ,W?APOSTROPHE>
|
||||
<EQUAL? <ZGET .PTR <* 2 ,P-LEXELEN>> ,W?SLE>>
|
||||
,W?FOCSLE)>>>
|
||||
|
||||
<REPLACE-DEFINITION SPEAKING-VERB?
|
||||
<DEFINE SPEAKING-VERB? ("OPT" (A ,PRSA) ;(PER 0))
|
||||
<COND (<EQUAL? .A ,V?ANSWER ,V?ASK-ABOUT ,V?ASK-FOR ,V?CURSE ,V?HELLO
|
||||
,V?NO ,V?REPLY ,V?SAY ,V?SPEAK ,V?TELL ,V?TELL-ABOUT
|
||||
,V?THANK ,V?THOU ,V?YELL ,V?YELL-AT ,V?YES>
|
||||
<COND (T ;<EQUAL? .PER 0 ,PRSO>
|
||||
<RTRUE>)>)>>>
|
||||
|
||||
<REPLACE-DEFINITION CAPITAL-NOUN?
|
||||
<ROUTINE CAPITAL-NOUN? (WD)
|
||||
<EQUAL? .WD
|
||||
,W?ACHIKO
|
||||
,W?AKABO
|
||||
,W?ALVITO
|
||||
,W?BACCUS
|
||||
,W?BLACKTHORNE
|
||||
,W?BROWN
|
||||
,W?BROWNS
|
||||
,W?BUNTARO
|
||||
,W?CAPTAIN
|
||||
,W?CAPTAIN-GENERAL
|
||||
,W?CHIMMOKO
|
||||
,W?CROOCQ
|
||||
,W?DANZENJI
|
||||
,W?DOMINGO
|
||||
,W?ENGLAND
|
||||
,W?ERASMUS
|
||||
,W?ETSU
|
||||
,W?GINSEL
|
||||
,W?GONZALEZ
|
||||
,W?GORODA
|
||||
,W?GRAY
|
||||
,W?GRAYS
|
||||
,W?GYOKO
|
||||
,W?HENDRIK
|
||||
,W?HIRO-MATSU
|
||||
,W?HOLLAND
|
||||
,W?I
|
||||
,W?ISHIDO
|
||||
,W?JAN
|
||||
,W?JOHANN
|
||||
,W?JOHN
|
||||
,W?KASIGI
|
||||
,W?KAZUNARI
|
||||
,W?KIKU
|
||||
,W?KIRI
|
||||
,W?KIRITSUBO
|
||||
,W?KIYAMA
|
||||
,W?KOJIMA
|
||||
,W?KWAMPAKU
|
||||
,W?MAETSUKKER
|
||||
,W?MARIKO
|
||||
,W?MARTIN
|
||||
,W?MAXIMILIAN
|
||||
,W?MURA
|
||||
,W?NAKAMURA
|
||||
,W?NEKK
|
||||
,W?OCHIBA
|
||||
,W?OMI
|
||||
,W?ONNA
|
||||
,W?PAULUS
|
||||
,W?PIETERZOON
|
||||
,W?POPE,W?RODRIGUES
|
||||
,W?ROPER
|
||||
,W?SAIGAWA
|
||||
,W?SALAMON
|
||||
,W?SAZUKO
|
||||
,W?SEBASTIO
|
||||
,W?SHOGUN
|
||||
,W?SONK
|
||||
,W?SPECZ
|
||||
,W?SPILLBERGEN
|
||||
,W?SUMIYORI
|
||||
,W?TAIKO
|
||||
,W?TODA
|
||||
,W?TORANAGA
|
||||
,W?VASCO
|
||||
,W?VINCK
|
||||
,W?YABU
|
||||
,W?YAEMON
|
||||
,W?YAMAZAKI
|
||||
,W?YOSHI
|
||||
,W?YOSHINAKA
|
||||
,W?ZATAKI
|
||||
>>>
|
||||
|
||||
<REPLACE-DEFINITION SOFT-KEY-DEFINITIONS
|
||||
<SOFT-KEYS
|
||||
,UP-ARROW "n"
|
||||
,DOWN-ARROW "s"
|
||||
,LEFT-ARROW "w"
|
||||
,RIGHT-ARROW "e"
|
||||
;"vt100 keypad keys"
|
||||
,F1 "sw"
|
||||
,F2 "s"
|
||||
,F3 "se"
|
||||
,F4 "w"
|
||||
,F5 ""
|
||||
,F6 "e"
|
||||
,F7 "nw"
|
||||
,F8 "n"
|
||||
,F9 "ne"
|
||||
,F10 ""
|
||||
-1 0
|
||||
-1 <TABLE "Save Definition File" SOFT-SAVE-DEFS>
|
||||
-1 <TABLE "Restore Definition File" SOFT-RESTORE-DEFS>
|
||||
-1 <TABLE "Reset Defaults" SOFT-RESET-DEFAULTS>
|
||||
-1 <TABLE "Exit" SOFT-EXIT>>>
|
|
@ -0,0 +1,308 @@
|
|||
"DESC for
|
||||
Your Game
|
||||
(c) Copyright 1986 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
"The fabled new describers, as updated and modified to conform to the
|
||||
latest bug fixes. See ZD:DESC.DOC for details. See Z:DESC.ZIL for
|
||||
the source."
|
||||
|
||||
<GLOBAL DESCRIBED-ROOM? <>>
|
||||
|
||||
<ROUTINE DESCRIBE-ROOM ("OPTIONAL" (LOOK? <>) "AUX" V? STR AV)
|
||||
<COND (<NOT ,LIT>
|
||||
<TELL "It is pitch black." CR>
|
||||
<RFALSE>)>
|
||||
<COND (<IN? ,HERE ,ROOMS>
|
||||
<HLIGHT ,H-BOLD>
|
||||
<TELL 'HERE>
|
||||
<HLIGHT ,H-NORMAL>)>
|
||||
<SET AV <LOC ,WINNER>>
|
||||
<COND (<FSET? .AV ,VEHBIT>
|
||||
<COND (<FSET? .AV ,SURFACEBIT>
|
||||
<TELL ", on ">)
|
||||
(ELSE
|
||||
<TELL ", in ">)>
|
||||
<TELL THE .AV>)>
|
||||
<CRLF>
|
||||
<SET V? <OR .LOOK? <EQUAL? ,VERBOSITY 2>>>
|
||||
<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
|
||||
<FSET ,HERE ,TOUCHBIT>
|
||||
<COND (,VERBOSITY <SET V? T>)>)>
|
||||
<SETG DESCRIBED-ROOM? .V?>
|
||||
<COND (.V?
|
||||
<COND (<AND <NOT <EQUAL? ,HERE .AV>>
|
||||
<FSET? .AV ,VEHBIT>
|
||||
<APPLY <GETP .AV ,P?ACTION> ,M-LOOK>>
|
||||
<RTRUE>)
|
||||
(<APPLY <GETP ,HERE ,P?ACTION> ,M-LOOK>
|
||||
<RTRUE>)
|
||||
(<SET STR <GETP ,HERE ,P?LDESC>>
|
||||
<TELL .STR CR>)>)>
|
||||
T>
|
||||
|
||||
<ROUTINE DESCRIBE-OBJECTS ("AUX" O STR (AV <LOC ,WINNER>) TMP)
|
||||
<SET O <FIRST? ,HERE>>
|
||||
<COND (<NOT .O> <RFALSE>)>
|
||||
<REPEAT () ;"FDESCS and MISC."
|
||||
<COND (<NOT .O> <RETURN>)
|
||||
(<AND <DESCRIBABLE? .O>
|
||||
<NOT <FSET? .O ,TOUCHBIT>>
|
||||
<SET STR <GETP .O ,P?FDESC>>>
|
||||
<THIS-IS-IT .O>
|
||||
<CRLF>
|
||||
<TELL .STR>
|
||||
<COND (<FSET? .O ,CONTBIT>
|
||||
<DESCRIBE-CONTENTS .O
|
||||
T
|
||||
<+ ,D-ALL?
|
||||
,D-PARA?>>)>
|
||||
<CRLF>)>
|
||||
<SET O <NEXT? .O>>>
|
||||
<SET O <FIRST? ,HERE>>
|
||||
<REPEAT () ;"DESCFCNS and LDESCS"
|
||||
<COND (<NOT .O> <RETURN>)
|
||||
(<OR <NOT <DESCRIBABLE? .O>>
|
||||
<AND <GETP .O ,P?FDESC>
|
||||
<NOT <FSET? .O ,TOUCHBIT>>>>
|
||||
T)
|
||||
(<AND <SET STR <GETP .O ,P?DESCFCN>>
|
||||
<SET TMP <APPLY .STR ,M-OBJDESC? .O>>>
|
||||
<COND (<NOT <EQUAL? .TMP ,M-FATAL>>
|
||||
<THIS-IS-IT .O>
|
||||
<CRLF>
|
||||
<COND (<SET STR <APPLY .STR ,M-OBJDESC .O>>
|
||||
<COND (<AND <FSET? .O ,CONTBIT>
|
||||
<N==? .STR ,M-FATAL>>
|
||||
<DESCRIBE-CONTENTS
|
||||
.O
|
||||
T
|
||||
<+ ,D-ALL?
|
||||
,D-PARA?>>)>)>
|
||||
<CRLF>)>)
|
||||
(<SET STR <GETP .O ,P?LDESC>>
|
||||
<THIS-IS-IT .O>
|
||||
<CRLF>
|
||||
<TELL .STR>
|
||||
<COND (<FSET? .O ,CONTBIT>
|
||||
<DESCRIBE-CONTENTS .O
|
||||
T
|
||||
<+ ,D-ALL?
|
||||
,D-PARA?>>)>
|
||||
<CRLF>)>
|
||||
<SET O <NEXT? .O>>>
|
||||
<SETG D-BIT <- ,PERSON>>
|
||||
<DESCRIBE-CONTENTS ,HERE <> <>>
|
||||
<SETG D-BIT ,PERSON>
|
||||
<DESCRIBE-CONTENTS ,HERE <> <>>
|
||||
<SETG D-BIT <>>
|
||||
<COND (<AND .AV <NOT <EQUAL? ,HERE .AV>>>
|
||||
<DESCRIBE-CONTENTS .AV <> <>>)>>
|
||||
|
||||
<CONSTANT D-ALL? 1> ;"print everything?"
|
||||
<CONSTANT D-PARA? 2> ;"started paragraph yet?"
|
||||
|
||||
"<DESCRIBE-CONTENTS object-whose-contents-to-describe
|
||||
level: -1 means only top level (default)
|
||||
<> means top-level (include crlf)
|
||||
T for all other levels
|
||||
or string to print
|
||||
all?: t if not being called from room-desc >
|
||||
|
||||
Prints nothing and rfalses if there was nothing to list.
|
||||
|
||||
'The wall crumbles to dust, revealing ' <DESCRIBE-CONTENTS .OBJ> "
|
||||
|
||||
<ROUTINE DESCRIBE-CONTENTS (OBJ "OPTIONAL" (LEVEL -1) (ALL? ,D-ALL?)
|
||||
"AUX" (F <>) N (1ST? T) (IT? <>) (TWO? <>)
|
||||
(START? <>) (PARA? <>) DB)
|
||||
<COND (<EQUAL? .LEVEL 2>
|
||||
<SET LEVEL T>
|
||||
<SET PARA? T>
|
||||
<SET START? T>)
|
||||
(<BTST .ALL? ,D-PARA?>
|
||||
<SET PARA? T>)>
|
||||
<SET N <FIRST? .OBJ>>
|
||||
<COND (<OR .START?
|
||||
<IN? .OBJ ,ROOMS>
|
||||
<FSET? .OBJ ,PERSON>
|
||||
<AND .N
|
||||
<FSET? .OBJ ,CONTBIT>
|
||||
<OR <FSET? .OBJ ,OPENBIT>
|
||||
<FSET? .OBJ ,TRANSBIT>>
|
||||
<OR <EQUAL? .LEVEL -1>
|
||||
<FSET? .OBJ ,SEARCHBIT>>>>
|
||||
<REPEAT ()
|
||||
<COND (<OR <NOT .N>
|
||||
<AND <DESCRIBABLE? .N>
|
||||
<OR <BTST .ALL? ,D-ALL?>
|
||||
<SIMPLE-DESC? .N>>>>
|
||||
<COND (.F
|
||||
<COND (.1ST?
|
||||
<SET 1ST? <>>
|
||||
<COND (<EQUAL? .LEVEL <> T>
|
||||
<COND (<NOT .START?>
|
||||
<COND (<NOT .PARA?>
|
||||
<SET PARA? T>
|
||||
<CRLF>)
|
||||
(<EQUAL? .LEVEL T>
|
||||
<TELL " ">)>
|
||||
<DESCRIBE-START
|
||||
.OBJ
|
||||
<COND (<FSET? .F ,PLURAL>
|
||||
T)
|
||||
(ELSE .N)>>)>)
|
||||
(<NOT <EQUAL? .LEVEL -1>>
|
||||
<TELL .LEVEL>)>)
|
||||
(.N
|
||||
<TELL ", ">)
|
||||
(ELSE
|
||||
<TELL " and ">)>
|
||||
<TELL A .F>
|
||||
<DESCRIBE-SPECIAL .F>
|
||||
<COND (<AND <NOT .IT?> <NOT .TWO?>>
|
||||
<SET IT? .F>)
|
||||
(T
|
||||
<SET TWO? T>
|
||||
<SET IT? <>>)>)>
|
||||
<SET F .N>)>
|
||||
<COND (.N <SET N <NEXT? .N>>)>
|
||||
<COND (<AND <NOT .F> <NOT .N>>
|
||||
<COND (<AND .IT? <NOT .TWO?>>
|
||||
<THIS-IS-IT .IT?>)>
|
||||
<COND (<AND .1ST? .START?>
|
||||
<TELL " nothing">
|
||||
<RFALSE>)
|
||||
(<AND <NOT .1ST?>
|
||||
<EQUAL? .LEVEL <> T>>
|
||||
<COND (<EQUAL? .OBJ ,HERE>
|
||||
<TELL " here">)>
|
||||
<TELL ".">)>
|
||||
<RETURN>)>>
|
||||
<COND (<EQUAL? .LEVEL <> T>
|
||||
<SET F <FIRST? .OBJ>>
|
||||
<REPEAT ()
|
||||
<COND (<NOT .F> <RETURN>)
|
||||
(<AND <OR <FSET? .F ,CONTBIT>
|
||||
<EQUAL? .F ,HERE>>
|
||||
<DESCRIBABLE? .F T>
|
||||
<OR <BTST .ALL? ,D-ALL?>
|
||||
<SIMPLE-DESC? .F>>>
|
||||
<SET DB ,D-BIT>
|
||||
<SETG D-BIT <>>
|
||||
<COND (<DESCRIBE-CONTENTS
|
||||
.F
|
||||
T
|
||||
<COND (.PARA?
|
||||
<+ ,D-ALL?
|
||||
,D-PARA?>)
|
||||
(ELSE ,D-ALL?)>>
|
||||
<SET 1ST? <>>
|
||||
<SET PARA? T>)>
|
||||
<SETG D-BIT .DB>)>
|
||||
<SET F <NEXT? .F>>>)>
|
||||
<COND (<AND <NOT .1ST?>
|
||||
<EQUAL? .LEVEL <> T>
|
||||
<EQUAL? .OBJ ,HERE <LOC ,WINNER>>>
|
||||
<CRLF>)>
|
||||
<NOT .1ST?>)>>
|
||||
|
||||
"DESCRIBE-START -- add starters for special classes of objects here"
|
||||
|
||||
<ROUTINE DESCRIBE-START (OBJ N)
|
||||
<COND (<EQUAL? .OBJ ,HERE>
|
||||
<COND (<EQUAL? ,D-BIT ,PERSON>
|
||||
<TELL "You see ">)
|
||||
(ELSE
|
||||
<TELL "There ">
|
||||
<COND (.N <TELL "are ">)
|
||||
(ELSE <TELL "is ">)>)>)
|
||||
(<EQUAL? .OBJ ,PLAYER>
|
||||
<COND (<EQUAL? ,D-BIT ,WEARBIT>
|
||||
<TELL " You are wearing ">)
|
||||
(T
|
||||
<TELL "You are carrying ">)>)
|
||||
(<FSET? .OBJ ,PERSON>
|
||||
;<COND (<NOT <FSET? .OBJ ,NOTHEBIT>>
|
||||
<TELL "The ">)> ;"hand is only one this clause catches"
|
||||
<TELL CTHE .OBJ " has ">)
|
||||
(<FSET? .OBJ ,SURFACEBIT>
|
||||
<COND (<EQUAL? .OBJ ,LADDER> <TELL "Stand">)
|
||||
(ELSE <TELL "Sitt">)>
|
||||
<TELL "ing on " THE .OBJ>
|
||||
<COND (.N <TELL " are ">)
|
||||
(ELSE <TELL " is ">)>)
|
||||
(ELSE
|
||||
<TELL CTHE .OBJ " contains ">)>>
|
||||
|
||||
"DESCRIBE-SPECIAL -- add special trailers to object descriptions here"
|
||||
|
||||
<ROUTINE DESCRIBE-SPECIAL (OBJ)
|
||||
<COND (<FSET? .OBJ ,ONBIT>
|
||||
<TELL " (providing light)">)>>
|
||||
|
||||
"determines if an object is describable at all."
|
||||
|
||||
<GLOBAL D-BIT <>> ;"bit to screen objects"
|
||||
|
||||
<ROUTINE DESCRIBABLE? (OBJ "OPT" (CONT? <>))
|
||||
<COND (<FSET? .OBJ ,INVISIBLE> <RFALSE>)
|
||||
(<EQUAL? .OBJ ,WINNER> <RFALSE>)
|
||||
(<AND <EQUAL? .OBJ <LOC ,WINNER>>
|
||||
<NOT <EQUAL? ,HERE <LOC ,WINNER>>>>
|
||||
<RFALSE>)
|
||||
(<AND <NOT .CONT?> <FSET? .OBJ ,NDESCBIT>>
|
||||
<RFALSE>)
|
||||
(,D-BIT
|
||||
<COND (<G? ,D-BIT 0>
|
||||
<COND (<FSET? .OBJ ,D-BIT> <RTRUE>)
|
||||
(ELSE <RFALSE>)>)
|
||||
(<NOT <FSET? .OBJ <- ,D-BIT>>>
|
||||
<RTRUE>)
|
||||
(ELSE <RFALSE>)>)
|
||||
(ELSE
|
||||
<RTRUE>)>>
|
||||
|
||||
"Determines, for DESCRIBE-OBJECTS, if an object has a simple description
|
||||
(not a FDESC, LDESC, or whatever)."
|
||||
|
||||
<ROUTINE SIMPLE-DESC? (OBJ "AUX" STR)
|
||||
<COND (<AND <GETP .OBJ ,P?FDESC>
|
||||
<NOT <FSET? .OBJ ,TOUCHBIT>>>
|
||||
<RFALSE>)
|
||||
(<AND <SET STR <GETP .OBJ ,P?DESCFCN>>
|
||||
<APPLY .STR ,M-OBJDESC? .OBJ>>
|
||||
<RFALSE>)
|
||||
(<GETP .OBJ ,P?LDESC> <RFALSE>)
|
||||
(ELSE <RTRUE>)>>
|
||||
|
||||
|
||||
|
||||
"DESCRIBE-REST finishes 'Opening the crocodile's mouth reveals '"
|
||||
|
||||
<ROUTINE DESCRIBE-REST (OBJ)
|
||||
<COND (<NOT <DESCRIBE-CONTENTS .OBJ>>
|
||||
<TELL "nothing">)>
|
||||
<RTRUE>>
|
||||
|
||||
"DESCRIBE-SENT does the whole ball of wax"
|
||||
|
||||
<ROUTINE DESCRIBE-SENT (OBJ)
|
||||
<COND (<NOT <DESCRIBE-CONTENTS .OBJ <> <+ ,D-ALL? ,D-PARA?>>>
|
||||
<TELL "The " D .OBJ " is empty.">)>
|
||||
<RTRUE>>
|
||||
|
||||
"DESCRIBE-NOTHING returns false if nothing was described"
|
||||
|
||||
;<ROUTINE DESCRIBE-NOTHING ()
|
||||
<COND (<DESCRIBE-CONTENTS ,PRSO 2>
|
||||
<COND (<NOT <IN? ,WINNER ,PRSO>>
|
||||
<CRLF>)>
|
||||
<RTRUE>)
|
||||
(T ;"nothing"
|
||||
<RFALSE>)>>
|
||||
|
||||
<END-SEGMENT>
|
||||
|
||||
;"END"
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,722 @@
|
|||
"HINTS for
|
||||
|
||||
SHOGUN
|
||||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<FILE-FLAGS SENTENCE-ENDS?>
|
||||
|
||||
<BEGIN-SEGMENT HINTS>
|
||||
|
||||
;"longest hint topic can be 17 chars"
|
||||
;"longest question can be 36 chars."
|
||||
;"question can't have more than 32 answers"
|
||||
|
||||
<CONSTANT HINTS
|
||||
<CONSTRUCT-HINTS HINT-COUNTS ;"Put topics in Quotes - followed by PLTABLEs
|
||||
of Questions and Answers in quotes"
|
||||
;"17 character wide"
|
||||
;"this set of quotes is 36 chars. wide"
|
||||
"Erasmus"
|
||||
<PLTABLE "What must I do to survive?"
|
||||
"You have to do everything you can to keep your ship from sinking before you
|
||||
get to Japan."
|
||||
"You should try to find something to eat as soon as possible."
|
||||
"You should help the sick men as best you can."
|
||||
"It would be a good idea to keep updating the record of your voyage in your
|
||||
rutter."
|
||||
"You must keep your demoralized crew in order and continue to assert your
|
||||
authority."
|
||||
"You must pilot the ship into a safe harbor in Japan.">
|
||||
<PLTABLE "How do I steer the ship?"
|
||||
"To change direction, turn the wheel to PORT (left) or STARBOARD (right)."
|
||||
"Compass directions won't work, you're in the middle of a storm!"
|
||||
"If you turn the wheel to PORT or STARBOARD, the ship will continue
|
||||
turning in that direction and you will flounder."
|
||||
"STRAIGHTEN THE WHEEL once the ship has turned, to maintain course and to
|
||||
avoid capsizing.">
|
||||
<PLTABLE "I'm tired!"
|
||||
"You're tired and hungry."
|
||||
"Better not lay down on your bunk, though. You'll fall asleep."
|
||||
"Maybe you could find something to eat.">
|
||||
<PLTABLE "I'm hungry!"
|
||||
"An experienced seaman like yourself would probably keep a secret stash of
|
||||
emergency food somewhere."
|
||||
"Perhaps in your cabin?"
|
||||
"Check your desk."
|
||||
"That's right, they're gone. Someone must have taken them!"
|
||||
"Didn't you just see Jan Roper come out of your cabin?"
|
||||
"Roper took your apples! Why don't you go into the Mate's Cabin and get them?">
|
||||
<PLTABLE "How can I get the crew on watch?"
|
||||
"Go to the crew's quarters, Below Decks."
|
||||
"LOOK AT THE CREWMEN to decide who's fit to take a watch."
|
||||
"Send those men out on watch."
|
||||
"Vinck, Ginsel and Maetsukker are strong enough to go out."
|
||||
"Show some authority if any of them balk!">
|
||||
<PLTABLE "What about my rutters?"
|
||||
"They're valuable, so you keep them in your sea chest."
|
||||
"You'll need a key to unlock it. Have you seen one around?"
|
||||
"The key is in your desk, which also holds the quill pen you'll need to
|
||||
write in it.">
|
||||
<PLTABLE "How can I help Spillbergen?"
|
||||
"He keeps asking for water, doesn't he?"
|
||||
"Try looking for water."
|
||||
"There's a flagon of water hidden in the cabin."
|
||||
"Did you search his desk?"
|
||||
"There's a secret compartment in the desk. The flagon is inside.">
|
||||
<PLTABLE "What about my pet rat?"
|
||||
"Oh, do you mean Gerald?"
|
||||
"You don't have a pet rat named Gerald!"
|
||||
"It's a joke! Now, stop reading the hints and play the game!">
|
||||
<PLTABLE "How do I get through the reef?"
|
||||
"Sail due west after straightening the wheel."
|
||||
"When the reef is sighted, turn to Port to avoid hitting it."
|
||||
"Soon after, you will see a gap to Starboard, so turn towards it."
|
||||
"You'll be aimed very close to the gap, but you've lost some speed, so
|
||||
turn to port to get a boost from the wind."
|
||||
"Once you've done that, turn to Starboard to enter the gap.">
|
||||
<PLTABLE "We've lost our foresails!"
|
||||
"Is the crew on deck?"
|
||||
"If not, get them! This is an emergency!"
|
||||
"Try ringing the bell. That ought to wake them up."
|
||||
"Now that they're on deck, order them to repair the foresails.">
|
||||
<PLTABLE "I can't hold onto the wheel!"
|
||||
"You're too weak to fight the waves and current."
|
||||
"Maybe you could use some help."
|
||||
"Is anyone nearby?"
|
||||
"Vinck should be nearby. Ask him to help you.">
|
||||
"Anjiro"
|
||||
<PLTABLE "I'm hungry!"
|
||||
"You won't live very long without getting something to eat."
|
||||
"So eat the food that's on the tray!"
|
||||
"After you do that, a woman will come in."
|
||||
"Indicate to her that you're still hungry."
|
||||
"POINT TO THE TRAY or POINT TO MY STOMACH will suffice."
|
||||
"She'll bring you more food and your clothes!"
|
||||
"Eat the second tray of food and you'll survive!">
|
||||
<PLTABLE "I was clumsy and I'm sorry!"
|
||||
"Tell the woman that. She'll appreciate it."
|
||||
"Just do your best to apologize.">
|
||||
<PLTABLE "How can I fight off these henchmen?"
|
||||
"You can't beat them, but don't worry, you won't be killed."
|
||||
"At least not if you fight back.">
|
||||
<PLTABLE "How can I avoid being killed by Omi?"
|
||||
"Be polite."
|
||||
"Answer his questions!"
|
||||
"Address your answers to the priest. He's translating."
|
||||
"You should know the answers already."
|
||||
"Question 1: I AM ENGLISH"
|
||||
"Question 2: I AM FROM HOLLAND"
|
||||
"Question 3: I'M THE LEADER"
|
||||
"Once you've answered the questions and Omi kills the henchman,
|
||||
get out of there!">
|
||||
<PLTABLE "Where are my rutters?"
|
||||
"Have you looked on your ship?"
|
||||
"It's at anchor in the harbor!"
|
||||
"There's a rowboat at the waterfront."
|
||||
"Just row out and climb aboard."
|
||||
"You're the pilot. Just go aft towards your quarters."
|
||||
"Nope, the samurai guards won't let you in. Maybe some other time.">
|
||||
"Yabu"
|
||||
<PLTABLE "What do I say to Yabu?"
|
||||
"Answer the questions he asks. Some are the same as Omi's."
|
||||
"It's also very important to notice how Yabu and Father Sebastio
|
||||
are getting along with each other."
|
||||
"Question 1: I'M JOHN BLACKTHORNE."
|
||||
"Question 2: I SAILED FROM HOLLAND."
|
||||
"Question 3: I'M THE PILOT."
|
||||
"Question 4: I SAILED THROUGH THE STRAIT OF MAGELLAN.">
|
||||
<PLTABLE "Yabu orders me killed!"
|
||||
"You need to show him there is a reason to keep you alive."
|
||||
"You can't tell him anything, because you don't speak Japanese
|
||||
and Sebastio would lie about anything really useful."
|
||||
"Demonstrate that you are not the same sort of 'barbarian' as
|
||||
Sebastio."
|
||||
"Sebastio is a Catholic, you are a Protestant. In the year 1600,
|
||||
this is significant."
|
||||
"In the year 1600, crosses would be an abomination to a good English
|
||||
Protestant."
|
||||
"When Sebastio's crucifix dangles near you, grab it..."
|
||||
"Then break it or throw it on the ground."
|
||||
"Then remember that courtesy is very important in this culture."
|
||||
"Better bow to Yabu to show you didn't mean him any insult by
|
||||
that action.">
|
||||
"Pit"
|
||||
<PLTABLE "How can I get out of the pit?"
|
||||
"You might try yelling."
|
||||
"Oh, well, I guess that didn't work.">
|
||||
<PLTABLE "Help, I've been picked!"
|
||||
"Relax, there was only a fifty percent chance you'd be picked."
|
||||
"Better to resist than be boiled, eh?"
|
||||
"Now they've taken poor Pieterzoon?"
|
||||
"There's nothing you can do -- someone is going to die. Pragmatism
|
||||
argues it ought not be you.">
|
||||
<PLTABLE "Help, Vinck's been picked!"
|
||||
"Relax, there was only a fifty percent chance he'd be picked."
|
||||
"On the other hand, you're the other fifty percent."
|
||||
"Prevent him from going."
|
||||
"Stop him or shake the ladder."
|
||||
"Fight the attacking samurai who descend!"
|
||||
"Now they've taken poor Pieterzoon?"
|
||||
"There's nothing you can do -- someone is going to die.">
|
||||
<PLTABLE "Now Omi wants me to come up!"
|
||||
"You could fight, or refuse."
|
||||
"... but the right thing to do is come up.">
|
||||
<PLTABLE "Should I agree?"
|
||||
"If you refuse, you will die."
|
||||
"If you agree, the results will be unpleasant."
|
||||
"... but you will survive."
|
||||
"'Better to be a live dog than a dead lion.'">
|
||||
"Rodrigues"
|
||||
<PLTABLE "How can I get Rodrigues' help?"
|
||||
"He asks you specific questions any English Pilot would know the
|
||||
answers to."
|
||||
"If you study the map that came in your game package, you will find
|
||||
the answers."
|
||||
"If you don't have a map, perhaps you really ARE a pirate!">
|
||||
<PLTABLE "What can Rodrigues do for me?"
|
||||
"He's obviously a respected person, maybe he has privileges you don't."
|
||||
"Perhaps he can get you into your ship to search for your rutters."
|
||||
"First, you should engage his interest. Talk to him about your ship."
|
||||
"Then just follow his lead!">
|
||||
<PLTABLE "What about the archers?"
|
||||
"If you don't watch out, they'll think you're trying to escape, and shoot you!"
|
||||
"You could explain yourself...if you could speak Japanese."
|
||||
"Rodrigues could explain, but he can't watch the archers while he's rowing."
|
||||
"That's why he asked you to!"
|
||||
"Watch the archers, and when they act hostile, tell Rodrigues!">
|
||||
<PLTABLE "We're back on the Erasmus."
|
||||
"This may be your ship, but the samurai are in charge now."
|
||||
"This is Rodrigues' show. Just follow his lead, and let him do the talking.">
|
||||
<PLTABLE "How do I defeat the attacking guards?"
|
||||
"Find your pistol."
|
||||
"Then find your powder horn."
|
||||
"...and blow them away!"
|
||||
"Of course, they aren't attacking, there is no pistol, and no powder horn."
|
||||
"Hint-browsing is considered barbaric in Japan.">
|
||||
"Voyage to Osaka"
|
||||
<PLTABLE "I'm tied down!"
|
||||
"Just untie your safety line."
|
||||
"It's dangerous but necessary.">
|
||||
<PLTABLE "Now I'm getting washed overboard!"
|
||||
"Grab something!"
|
||||
"What's near at hand?"
|
||||
"Grab the gunwale!">
|
||||
<PLTABLE "The oarsmen are confused!"
|
||||
"Help them, or tell them to ship their oars. Be useful!"
|
||||
"Once they're settled down and awaiting orders, tell them to row!">
|
||||
<PLTABLE "I can't make it to the bay!"
|
||||
"Steer towards it."
|
||||
"Rodrigues will tell you to stop, but ignore him."
|
||||
"You'll die if you steer out to sea.">
|
||||
<PLTABLE "Rodrigues went overboard!"
|
||||
"He can't swim!"
|
||||
"He needs something to cling to!"
|
||||
"There's a life ring nearby."
|
||||
"Throw it to him."
|
||||
"Damn! Maybe there's something else..."
|
||||
"Throw the oar to him."
|
||||
"Maybe he has a chance, and maybe not. You've done all you can.">
|
||||
<PLTABLE "How can I secure the galley?"
|
||||
"Are you in the bay yet?"
|
||||
"It's being washed around by the current."
|
||||
"Dropping the anchor would help!">
|
||||
<PLTABLE "Poor Rodrigues. What can I do?"
|
||||
"You can at least try to recover his body."
|
||||
"You might be in for a surprise!">
|
||||
<PLTABLE "They won't let me ashore!"
|
||||
"Lower the skiff, they'll permit that."
|
||||
"Get in it."
|
||||
"Keep trying! Insist! You'll get your way eventually.">
|
||||
<PLTABLE "I can't find Rodrigues' body!"
|
||||
"Be persistent. Keep searching."
|
||||
"Keep heading south from the beach."
|
||||
"You can go all the way around the headland, but then you can't
|
||||
go any further."
|
||||
"Keep searching on the way back."
|
||||
"He's in the rocks below the Cliff Path.">
|
||||
<PLTABLE "How can I get to him?"
|
||||
"Try climbing down the cliff."
|
||||
"You can't get to him..."
|
||||
"But Yabu can!"
|
||||
"So get Yabu to climb down.">
|
||||
<PLTABLE "How can I save Yabu?"
|
||||
"Are you sure you want to save that sadistic monster?"
|
||||
"Yes, you should -- besides, he has Rodrigues."
|
||||
"You need a rope."
|
||||
"You need a long rope!">
|
||||
<PLTABLE "Where can I find a rope?"
|
||||
"There's rope back at the galley."
|
||||
"But there's no time to get it."
|
||||
"Kimonos might make a good rope."
|
||||
"They need to be torn up and tied together."
|
||||
"They're still too short!"
|
||||
"Look at the remaining members of the search party."
|
||||
"How about using their loincloths!">
|
||||
<PLTABLE "Yabu won't pay attention!"
|
||||
"Everyone seems to think the situation is hopeless."
|
||||
"If only there were some way of getting Yabu and Rodrigues to higher ground!"
|
||||
"A ledge, perhaps?"
|
||||
"Try searching the cliff. There's a ledge just beyond Yabu's reach."
|
||||
"Point it out to the samurai. They'll get his attention."
|
||||
"Don't forget to keep the rope lowered!">
|
||||
"Toranaga"
|
||||
<PLTABLE "Why does Toranaga have me killed?"
|
||||
"Courtesy, respect, politeness. You are lacking in these."
|
||||
"You could emulate Hiro-matsu, and kneel as he did."
|
||||
"Or you could show some courage. Bow and then sit as an equal would!"
|
||||
"You can look at Toranaga, which is disrespectful: \"A cat can
|
||||
look at a king.\" Beyond that, you are in grave danger.">
|
||||
<PLTABLE "What should I do with Alvito?"
|
||||
"Choose a language in which to speak to Alvito."
|
||||
"Tell Toranaga that Alvito is your enemy."
|
||||
"And remember that while he is your enemy, he is also not a fool.">
|
||||
<PLTABLE "Why should I obey Alvito?"
|
||||
"Because you were asked to."
|
||||
"Because you are in the way if a fight starts!"
|
||||
"Toranaga and Ishido hate each other, so you don't want to be
|
||||
between them.">
|
||||
<PLTABLE "How do I prevent Ishido from killing Toranaga?"
|
||||
"You could try punching him out."
|
||||
"Or kicking him."
|
||||
"Or do nothing, since he isn't going to kill Toranaga."
|
||||
"Not now, at any rate.">
|
||||
"Prison"
|
||||
<PLTABLE "That guy stole my food!"
|
||||
"Take it back."
|
||||
"I'm afraid you'll have to fight him."
|
||||
"... but don't attack him first. If you do, he'll win.">
|
||||
<PLTABLE "Why won't the old friar talk to me?"
|
||||
"He's Spanish. All the Europeans you've met so far are Portuguese."
|
||||
"He's a Dominican friar. All the priests you've met so far are
|
||||
Portuguese Jesuits."
|
||||
"The Portuguese Jesuits threw him in prison. He hates the Portuguese."
|
||||
"So speak Spanish to him.">
|
||||
<PLTABLE "What use is Domingo?"
|
||||
"He's been here a long time and he speaks Japanese."
|
||||
"Ask him about things."
|
||||
"For example, ask him about Toranaga or Japan or the Jesuits."
|
||||
"Ask him to teach you Japanese. He knows a lot."
|
||||
"He can't do much in a few days, but it's a start!">
|
||||
<PLTABLE "I'm being attacked!"
|
||||
"You are unarmed, and cannot defend yourself."
|
||||
"Duck, you fool!">
|
||||
<PLTABLE "Yabu wants me to go with him."
|
||||
"He's one of Toranaga's men."
|
||||
"It's either him or Ishido."
|
||||
"'Better the devil you know...'"
|
||||
"GET IN LITTER.">
|
||||
"Mariko"
|
||||
<PLTABLE "What do I do in this scene?"
|
||||
"Bow to Toranaga or greet Mariko."
|
||||
"Ask Mariko about the prophecy."
|
||||
"Try to amuse Yaemon. Smile or wink or act silly.">
|
||||
|
||||
"Escape (Part I)"
|
||||
<PLTABLE "What's going on in this scene?"
|
||||
"Kiritsubo is preparing to leave Osaka."
|
||||
"There is also a rather rancorous argument going on."
|
||||
"But maybe something else as well..."
|
||||
"Watch closely what happens as the cortege is preparing to move out.">
|
||||
<PLTABLE "What about Ishido?"
|
||||
"Ignore him, he's just being a pest."
|
||||
"Hiro-matsu, Buntaro and Yabu will take care of him."
|
||||
"You might try wandering around as much as they'll let you."
|
||||
"The garden is particularly pretty this time of year...">
|
||||
<PLTABLE "What happened to Sazuko?"
|
||||
"She seemed to fall and possibly endanger herself and her baby."
|
||||
"But then she seemed to be all right again."
|
||||
"But was that all that was going on?">
|
||||
<PLTABLE "What's in the garden?"
|
||||
"A little cha-no-yu (tea house)."
|
||||
"There's someone inside."
|
||||
"A veiled figure: a woman?"
|
||||
"No, it's Toranaga!">
|
||||
<PLTABLE "What did Kiri do?"
|
||||
"She yelled something, probably a warning about Sazuko."
|
||||
"And then she ran into the garden, and out again..."
|
||||
"...and when she came out she was Toranaga!">
|
||||
<PLTABLE "Here's Ishido again!"
|
||||
"He only wants to give Kiri a parchment."
|
||||
"But if he does, he'll discover that Kiri is really Toranaga in disguise!"
|
||||
"Ishido will kill you all!"
|
||||
"If you want to live, you'd better stop him!">
|
||||
<PLTABLE "How can I stop Ishido?"
|
||||
"Well, he wants to give Kiri the parchment."
|
||||
"If he didn't have it he couldn't give it to her."
|
||||
"Of course, he won't like it if you just take it."
|
||||
"The time must be right."
|
||||
"And you'd better come up with some way of mollifying him afterward."
|
||||
"You could apologize."
|
||||
"You could bow, since your Japanese is still rather weak."
|
||||
"Or you could try to convince him you've gone crazy.">
|
||||
<PLTABLE "How crazy am I?"
|
||||
"You could babble."
|
||||
"Of course, your speech sounds like babbling to the Japanese already."
|
||||
"You could sing; that would worry them."
|
||||
"You could dance around."
|
||||
"You could just act crazy.">
|
||||
<PLTABLE "How do I get out of here?"
|
||||
"Just walk south across the bridge."
|
||||
"Of course, you better let Ishido know you're under control."
|
||||
"He has strong views about madness."
|
||||
"Do exactly what Mariko tells you to!">
|
||||
<PLTABLE "I can't move!"
|
||||
"You're pretty tired."
|
||||
"Maybe you should follow Mariko's advice."
|
||||
"Get in Mariko's litter.">
|
||||
"Escape (Part II)"
|
||||
<PLTABLE "Now I'm really lost!"
|
||||
"You have to find your way out of the maze of city streets."
|
||||
"You start at the castle, and are headed for the docks."
|
||||
"Use your mouse, arrow keys, or function keys to move the glyph representing
|
||||
the party."
|
||||
"Or you can just type directions, but that's more tedious."
|
||||
"The dock is at the right edge of the display of mazelike city streets.">
|
||||
<PLTABLE "We're under attack!"
|
||||
"You can't fight, you have no weapons."
|
||||
"You can't see the archers anyways."
|
||||
"Better get out of the way."
|
||||
"There's a litter to hide behind.">
|
||||
<PLTABLE "Mariko's dead!"
|
||||
"You should try to save her."
|
||||
"When the attack starts, try to get her behind the litter, too.">
|
||||
<PLTABLE "We're at the dock, now what?"
|
||||
"Agree to Toranaga's plan."
|
||||
"Follow Mariko when she runs for the galley."
|
||||
"You ought to board the galley."
|
||||
"You have any better ideas?">
|
||||
<PLTABLE "Mariko seems to be in trouble!"
|
||||
"You should help her."
|
||||
"She seems to have fainted."
|
||||
"Maybe she needs water..."
|
||||
"... or 'mizu' as they say here.">
|
||||
<PLTABLE "Now I'm under attack."
|
||||
"You have two knives."
|
||||
"Fight back!"
|
||||
"Of course, their swords are a lot longer than your knives..."
|
||||
"...so you can't fight at close quarters."
|
||||
"Throw your knives at them!"
|
||||
"Don't forget Mariko- she'll need your help!"
|
||||
"Just get out of the way of those flashing swords."
|
||||
"...and keep those knives flying.">
|
||||
"Earthquake"
|
||||
<PLTABLE "Can I save myself?"
|
||||
"Just get out of the way of the fissure as it approaches."
|
||||
"MOVE or ROLL, for example.">
|
||||
<PLTABLE "Can I save Toranaga?"
|
||||
"He's close by."
|
||||
"Try grabbing him.">
|
||||
<PLTABLE "Can I save Mariko?"
|
||||
"She's close by."
|
||||
"Try grabbing her."
|
||||
"You didn't really think that would work twice, did you?"
|
||||
"You'll have to climb down into the fissure."
|
||||
"...and then lift her out to Toranaga."
|
||||
"...and then climb out yourself."
|
||||
"...and you should hurry!">
|
||||
<PLTABLE "What should I do then?"
|
||||
"Well, you could emulate Toranaga."
|
||||
"He has sort of a coarse sense of humor, doesn't he?"
|
||||
"He's also lost something he values highly."
|
||||
"You have something almost as good."
|
||||
"Give Toranaga your swords!">
|
||||
|
||||
"Journey to Yedo"
|
||||
<PLTABLE "What an embarassing situation!"
|
||||
"When in Rome..."
|
||||
"There is little taboo against nakedness here."
|
||||
"...and everyone around is a friend."
|
||||
"...so go with the situation."
|
||||
"Undress, and then get in the tub."
|
||||
"Have some fun, ask Mariko to help bathe you.">
|
||||
<PLTABLE "How do I avoid the thief?"
|
||||
"Hide under the bed until he comes in."
|
||||
"What bed? What thief?"
|
||||
"Read your dictionary, not the fake hint questions!">
|
||||
<PLTABLE "What can I do in the nighttime?"
|
||||
"You could sleep."
|
||||
"But it isn't very helpful."
|
||||
"You could read your dictionary."
|
||||
"You can try to visit Mariko."
|
||||
"Watch out, though. If Yoshi catches you with her, he'll kill you.">
|
||||
<PLTABLE "How can I avoid getting caught?"
|
||||
"You need to avoid being seen going into Mariko's room."
|
||||
"Watch for and listen to Yoshinaka as he makes his rounds."
|
||||
"Then time your excursion to avoid him."
|
||||
"And do the same on the way back.">
|
||||
<PLTABLE "What can I do with Mariko?"
|
||||
"Doesn't your imagination suggest something?"
|
||||
"You are in love, after all."
|
||||
"And no one is here to bother you."
|
||||
"Well, this is a family hint question."
|
||||
"You figure it out."
|
||||
"But don't take too long! Remember, Yoshi is still out there.">
|
||||
|
||||
"Ochiba"
|
||||
<PLTABLE "How do I avoid embarassment?"
|
||||
"What were you worrying about mere seconds ago?"
|
||||
"Check your swords!">
|
||||
<PLTABLE "How do I avoid offending?"
|
||||
"Ochiba is a very important person, so bow to her!"
|
||||
"Then greet her.">
|
||||
<PLTABLE "How can I make her like me?"
|
||||
"It's her birthday."
|
||||
"What do people expect on their birthday?"
|
||||
"A gift! Have you anything to give her?"
|
||||
"Give her the camellia blossom."
|
||||
"It's not the custom here, but she will understand and appreciate it.">
|
||||
<PLTABLE "Ishido is certainly being nasty."
|
||||
"You, therefore, should be polite."
|
||||
"Correct his mistake."
|
||||
"You are no longer a barbarian, you are a samurai!"
|
||||
"Tell him so!"
|
||||
"It will expose his rudeness, and put him in an embarassing position.">
|
||||
|
||||
"Departure"
|
||||
<PLTABLE "What can I do to help Mariko?"
|
||||
"When she directs you to fight, do so."
|
||||
"Kill the Captain of the Grays."
|
||||
"Just keep attacking him."
|
||||
"You will realize he doesn't want to kill you, although the Grays
|
||||
will kill everyone else in Mariko's escort.">
|
||||
<PLTABLE "Now Mariko is fighting!"
|
||||
"She is samurai; it is her right."
|
||||
"Don't try to help her, or you'll bring great shame upon her.">
|
||||
"Seppuku"
|
||||
<PLTABLE "What do I do in the garden?"
|
||||
"Do what Chimmoko asks."
|
||||
"Go in the cha-no-yu house and see Mariko."
|
||||
"Kiss her, if you wish.">
|
||||
<PLTABLE "How can I help Mariko?"
|
||||
"First, realize you can't stop her without shaming her even more than
|
||||
Ishido has shamed her."
|
||||
"Then realize you must just wait until Ishido gives in."
|
||||
"Then, when she has won, you can carry her away.">
|
||||
|
||||
"Ninja"
|
||||
<PLTABLE "What should I do about Yabu?"
|
||||
"First, notice that he's nervous."
|
||||
"Ask him about the 'plan.'"
|
||||
"Maybe he's up to something!"
|
||||
"Perhaps you should follow him and find out."
|
||||
"Discretion, discretion! Don't follow too close.">
|
||||
<PLTABLE "How can I survive the ninja attack?"
|
||||
"You could try fighting them off."
|
||||
"Well, first you will need some weapons."
|
||||
"Your swords and powder horn are in your quarters."
|
||||
"The ninja haven't much experience with firearms, so your pistol will
|
||||
help a lot."
|
||||
"They will slow down, confused and scared, each time you fire the
|
||||
pistol."
|
||||
"But your pistol takes time to reload, so you're going to have to
|
||||
retreat and hope for help."
|
||||
"And each time you use it, they get less scared of it.">
|
||||
<PLTABLE "They've taken Mariko!"
|
||||
"You can usually avoid this by telling Mariko to follow you."
|
||||
"If they have her, firing the pistol will give her a chance to
|
||||
escape.">
|
||||
<PLTABLE "I can't get away from the ninja!"
|
||||
"You'll have to block them and slow them down."
|
||||
"Firing the pistol at them slows them down."
|
||||
"Closing and barring doors in their way slows them down."
|
||||
"The iron-bound door between the Audience Chamber and the Inner Corridor can be
|
||||
closed and barred."
|
||||
"You can also slow them down by shooting at them through the crack they
|
||||
make in that door."
|
||||
"But you'll be better off finding a safer place to retreat to."
|
||||
"Have you been back to the Private Quarters?"
|
||||
"When you go back, Kiritsubo will show you the way into a secret room."
|
||||
"Once you're in there with the women, you should close the bolts!">
|
||||
<PLTABLE "How can I escape the explosion?"
|
||||
"You can go out onto the balcony."
|
||||
"First you have to open the catches on the balcony door."
|
||||
"They're rusty, so hit them with something."
|
||||
"...the pistol, for example.">
|
||||
<PLTABLE "How can I prevent Mariko's death?"
|
||||
"Get her into the Secret Redoubt."
|
||||
"Then convince her to go onto the Balcony."
|
||||
"But she won't go, will she?"
|
||||
"She thinks her death is inevitable."
|
||||
"So force her!"
|
||||
"But if you do that the ninja will capture her."
|
||||
"She's right. Your love is doomed, and if she's captured by Ishido,
|
||||
the hostages will never be freed."
|
||||
"It's tragic, but there is no way out for her."
|
||||
"Honor her faith, and bless her after she dies.">
|
||||
|
||||
"Yokohama"
|
||||
<PLTABLE "Vinck certainly is acting weird!"
|
||||
"Humor him."
|
||||
"Don't get him too upset."
|
||||
"...as he's armed and dangerous."
|
||||
"Wait for him to die."
|
||||
"...and then carry him away.">
|
||||
<PLTABLE "What can I do about the Erasmus?"
|
||||
"You can look at it."
|
||||
"...and that's about it.">
|
||||
|
||||
"Aftermath"
|
||||
<PLTABLE "What's the scroll good for?"
|
||||
"It gives you something to read."
|
||||
"It also reminds you that you can get a new ship."
|
||||
"You should tell Toranaga that.">
|
||||
<PLTABLE "What does Toranaga want?"
|
||||
"He wants you to tell him what you know."
|
||||
"What did you find out during the attack on the castle?"
|
||||
"What did Yabu do before the attack?"
|
||||
"Did you try to follow him?"
|
||||
"You ought to try that!"
|
||||
"Tell Toranaga that Yabu betrayed him."
|
||||
">TORANAGA, YABU BETRAYED YOU"
|
||||
"Tell Toranaga how Yabu betrayed him."
|
||||
">TORANAGA, YABU LET IN THE NINJA"
|
||||
"Tell Toranaga what Yabu said to the ninja."
|
||||
">TORANAGA, I AM KASIGI YABU">
|
||||
|
||||
"As a Last Resort (Part I)"
|
||||
<PLTABLE "Read me first."
|
||||
"This section tells you how the points in each scene are scored. You
|
||||
get five points for each correct action listed. It is possible to
|
||||
finish some scenes without getting all the points.|
|
||||
|
|
||||
Think twice before reading further! Don't spoil the game for yourself!">
|
||||
|
||||
<PLTABLE "Erasmus (11 actions)"
|
||||
;WHEEL "Straightening the wheel."
|
||||
;ROPER "Getting your apple back from Roper."
|
||||
;APPLE "Eating the apple."
|
||||
;KEY "Finding the key to the sea chest."
|
||||
;RUTTER "Writing in your rutter."
|
||||
;CAPTAINS-DESK "Finding the flagon in the Captain's desk."
|
||||
;FLAGON "Giving the Captain water."
|
||||
;MAETSUKKER "Sending Vinck, Ginsel, and Maetsukker out on watch."
|
||||
;BELL "Ringing the bell to get the crew on deck."
|
||||
;FORESAILS "Fixing the foresails."
|
||||
;REEF "Getting through the reef into the harbor.">
|
||||
|
||||
<PLTABLE "Anjiro (4 actions)"
|
||||
;FOOD "Eating both trays of food."
|
||||
;SEBASTIO-HENCHMEN "Fighting back against Sebastio's henchmen."
|
||||
;OMI "Getting through Omi's interrogation."
|
||||
;SAMURAI-GUARDS "Trying to get your rutters back.">
|
||||
|
||||
<PLTABLE "Yabu (2 actions)"
|
||||
;SEBASTIO-CRUCIFIX "Breaking Sebastio's crucifix."
|
||||
;STRAIT-OF-MAGELLAN "Telling Yabu about your voyage.">
|
||||
|
||||
<PLTABLE "Pit (5 actions)"
|
||||
;LADDER "Saving Vinck if he's the one picked to die, or saving
|
||||
yourself if you are picked."
|
||||
;LOSING-SAMURAI "Fighting the samurai, taking one as a hostage."
|
||||
;VILLAGE-SQUARE "Agreeing to behave."
|
||||
;CROOCQ "Lying down."
|
||||
;BATHTUB "Taking a bath.">
|
||||
|
||||
<PLTABLE "Rodrigues (4 actions)"
|
||||
;TRINITY-HOUSE "Answering Rodrigues about where you trained."
|
||||
;LIZARD "Answering Rodrigues about the Lizard."
|
||||
;LG-ERASMUS "Telling Rodrigues about the Erasmus."
|
||||
;ARCHERS "Warning Rodrigues about the archers.">
|
||||
|
||||
<PLTABLE "Voyage to Osaka (11 actions)"
|
||||
;GUNWALE "Grabbing the gunwale."
|
||||
;MAIN-DECK "Restoring order on the oar deck."
|
||||
;OARSMEN "Getting the oarsmen to row again."
|
||||
;OAR "Throwing oar to Rodrigues."
|
||||
;ANCHOR "Dropping anchor once in the bay."
|
||||
;SKIFF "Getting into the skiff."
|
||||
;LEDGE-4 "Finding Rodrigues."
|
||||
;YABU-KIMONO "Making a rope of kimonos."
|
||||
;LOINCLOTH "Adding loincloths to rope."
|
||||
;LEDGE "Finding the ledge."
|
||||
;SEARCH-PARTY "Getting Yabu's attention.">
|
||||
|
||||
<PLTABLE "Toranaga (3 actions)"
|
||||
;AUDIENCE-CHAMBER "Defying convention by bowing but not kneeling."
|
||||
;DAIS "Moving to the dais when Ishido arrives."
|
||||
;ALVITO "Telling Toranaga Alvito is your enemy.">
|
||||
|
||||
<PLTABLE "Prison (6 actions)"
|
||||
;THUG "Defeating the thug."
|
||||
;DOMINGO "Speaking Spanish to Domingo."
|
||||
;JAPANESE "Asking Domingo to teach you Japanese."
|
||||
;LG-LINE "Joining the line of prisoners."
|
||||
;BANDITS "Avoiding the bandit's attack."
|
||||
;YABU-PALANQUIN "Getting in Yabu's palanquin.">
|
||||
|
||||
<PLTABLE "Mariko (3 actions)"
|
||||
;MAPLE-GLADE "Greeting or bowing to Mariko or Toranaga."
|
||||
;YAEMON "Smiling or winking at Yaemon."
|
||||
;PROPHECY "Asking Mariko about the prophecy.">
|
||||
|
||||
"As a Last Resort (Part II)"
|
||||
<PLTABLE "Escape (13 actions)"
|
||||
;TORANAGA-IN-DRAG "Seeing Toranaga in the hut."
|
||||
;KIRITSUBO "Seeing Toranaga and Kiritsubo switch."
|
||||
;PARCHMENT "Grabbing the parchment from Ishido."
|
||||
;CURTAINS "Giving the parchment to 'Kiri.'"
|
||||
;CRAZY "Distracting Ishido by acting nuts."
|
||||
;WOODS "Reaching the woods successfully."
|
||||
;MARIKOS-LITTER "Saving Mariko during ambush."
|
||||
;FISH-GATE "Finding the ronin."
|
||||
;MESSENGER "Slowing down the messenger so Buntaro can kill him."
|
||||
;WHARF "Helping Mariko when she 'faints.'"
|
||||
;GLOBAL-WATER "Remembering the word for 'water.'"
|
||||
;GRAY-LEADER "Killing the Gray leader."
|
||||
;SECOND-GRAY "Killing the second Gray.">
|
||||
|
||||
<PLTABLE "Earthquake (4 actions)"
|
||||
;MAIN-FISSURE "Saving Toranaga."
|
||||
;SIDE-FISSURE "Saving Mariko."
|
||||
;PLATEAU "Pissing in the fissure."
|
||||
;SWORDS "Giving swords to Toranaga after his are lost.">
|
||||
|
||||
<PLTABLE "Journey to Yedo (3 actions)"
|
||||
;YOKOSE-BATHTUB "Bathing with Mariko."
|
||||
;YOKOSE-SPA-3 "Making love to Mariko."
|
||||
;YOKOSE-SPA-1 "Getting back to your room safely.">
|
||||
|
||||
<PLTABLE "Ochiba (3 actions)"
|
||||
;SWORDS "Checking your swords."
|
||||
;CAMELLIA "Giving the camellia to Ochiba."
|
||||
;GLOBAL-BARBARIAN "Telling Ishido you are not a barbarian.">
|
||||
|
||||
<PLTABLE "Departure (1 action)"
|
||||
;YAMAZAKI "Killing Yamazaki.">
|
||||
|
||||
<PLTABLE "Seppuku (1 action)"
|
||||
;MARIKO "Carrying Mariko away.">
|
||||
|
||||
<PLTABLE "Ninja (6 actions)"
|
||||
;PLAN "Asking Yabu about the plan."
|
||||
;BARRELS "Hiding from the ninja in the cellars."
|
||||
;CELLARS "Seeing Yabu in the cellars let in the ninja."
|
||||
;NINJA "Shooting the ninja leader."
|
||||
;MARIKO "Telling Mariko to follow you."
|
||||
;MARIKO "Blessing Mariko.">
|
||||
|
||||
<PLTABLE "Yokohama (1 action)"
|
||||
;YOKOHAMA "Picking up Vinck.">
|
||||
|
||||
<PLTABLE "Aftermath (3 actions)"
|
||||
;SEALED-SCROLL "Reading the sealed scroll."
|
||||
;TRAITOR "Reporting that you saw Yabu."
|
||||
;YABU "Reporting the password.">
|
||||
"Have you tried?"
|
||||
<PLTABLE "Amusing things to try..."
|
||||
">HUG VINCK (or any other of your crew)"
|
||||
">BOW TO VINCK (or any other Dutchman)"
|
||||
"Wandering around Anjiro naked."
|
||||
">KICK HEAD (of Sebastio's disrespectful henchman)"
|
||||
">WHAT ARE COJONES (since Rodrigues wonders if you have any)"
|
||||
">DRAW THE WORLD (for Yaemon)"
|
||||
">SING (other than during the escape)"
|
||||
"Find out the name of your sword (after the Earthquake scene)."
|
||||
">LOOK UP \"TSURU\" IN DICTIONARY">
|
||||
|
||||
<PLTABLE "To find out who worked on the game."
|
||||
"Type 'CREDITS' at any time in the story.">
|
||||
>>
|
||||
|
||||
<END-SEGMENT>
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,756 @@
|
|||
"MAZE for
|
||||
SHOGUN
|
||||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<FILE-FLAGS SENTENCE-ENDS?>
|
||||
|
||||
<BEGIN-SEGMENT MAZE>
|
||||
|
||||
<CONSTANT MAZE-WINDOW 3>
|
||||
|
||||
<CONSTANT MWALL 128>
|
||||
|
||||
<DEFMAC MSTREET? ('VAL)
|
||||
<FORM ZERO? <FORM BAND .VAL ,MWALL>>>
|
||||
|
||||
<OBJECT HOUSE
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(SYNONYM HOUSE HOUSES SHOP SHOPS)
|
||||
(DESC "house")
|
||||
(FLAGS NDESCBIT)
|
||||
(ACTION HOUSE-F)>
|
||||
|
||||
<ROUTINE HOUSE-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
"Houses and shops crowd the street on all sides, some dark and some
|
||||
lit by oil lamps flickering through the paper panels of the shojis." CR>)
|
||||
(<VERB? ENTER BOARD THROUGH>
|
||||
<TELL
|
||||
"As you start to move off from the cortege, Mariko calls you back,
|
||||
speaking in Latin. \"No, Pilot, that is not the way.\"" CR>)>>
|
||||
|
||||
<OBJECT RONIN
|
||||
(SYNONYM RONIN DETACHMENT)
|
||||
(DESC "detachment of ronin")
|
||||
(FLAGS PERSON PLURAL JAPANESEBIT)
|
||||
(ACTION RONIN-F)>
|
||||
|
||||
<ROUTINE RONIN-F ("OPT" (RARG <>))
|
||||
<COND (<RARG? WINNER>
|
||||
<TELL
|
||||
"The ronin take orders only from Toranaga." CR>
|
||||
<END-QUOTE>)>>
|
||||
|
||||
<OBJECT FISH-GATE
|
||||
(SYNONYM GATE FISH)
|
||||
(ADJECTIVE BATTERED ETCHED)
|
||||
(DESC "gate")
|
||||
(FLAGS NDESCBIT SCOREBIT)
|
||||
(ACTION FISH-GATE-F)>
|
||||
|
||||
<ROUTINE FISH-GATE-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
"It's just a weathered old gate with a fish carved on it." CR>)>>
|
||||
|
||||
<OBJECT AMBUSHERS
|
||||
(SYNONYM AMBUSHER BOWMAN FIGURE SHAPE
|
||||
AMBUSHERS BOWMEN FIGURES SHAPES)
|
||||
(ADJECTIVE SHADOWY DIM)
|
||||
(DESC "dim figures")
|
||||
(FLAGS PERSON JAPANESEBIT PLURAL)
|
||||
(DESCFCN AMBUSHERS-DESC)
|
||||
(ACTION AMBUSHERS-F)>
|
||||
|
||||
<ROUTINE AMBUSHERS-DESC (RARG OBJ)
|
||||
<COND (<RARG? OBJDESC?> <RTRUE>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"Dim figures can be seen on one of the tiled roofs of a nearby house.">)>>
|
||||
|
||||
<ROUTINE AMBUSHERS-F ("OPT" RARG)
|
||||
<COND (<RARG? SUBJ>
|
||||
<RFALSE>)
|
||||
(<RARG? WINNER>
|
||||
<TELL G"There is no response." CR>)
|
||||
(<VERB? EXAMINE>
|
||||
<TELL
|
||||
"From here, in the dark, they are merely dim dark outlines." CR>)>>
|
||||
|
||||
<OBJECT MESSENGER
|
||||
(SYNONYM MESSENGER MAN SAMURAI GRAY)
|
||||
(ADJECTIVE GRAY)
|
||||
(DESC "messenger")
|
||||
(FLAGS PERSON JAPANESEBIT INVISIBLE SCOREBIT)
|
||||
(GENERIC GENERIC-MAN-F)
|
||||
(ACTION MESSENGER-F)>
|
||||
|
||||
<ROUTINE MESSENGER-F ("OPT" (RARG <>))
|
||||
<COND (<AND <IN? ,MESSENGER ,LOCAL-GLOBALS>
|
||||
<NOT <PASSIVE-VERB?>>>
|
||||
<TELL "He's gone!" CR>)
|
||||
(<RARG? SUBJ>
|
||||
<RFALSE>)
|
||||
(<RARG? WINNER>
|
||||
<WAKARIMASEN>)
|
||||
(<OR <VERB? STOP>
|
||||
<HOSTILE-VERB?>>
|
||||
<COND (<FSET? ,MESSENGER ,DEAD>
|
||||
<TELL "Buntaro hacked him to pieces." CR>)
|
||||
(<NOT <FSET? ,MESSENGER ,RMUNGBIT>>
|
||||
<FSET ,MESSENGER ,RMUNGBIT>
|
||||
<TELL
|
||||
"You stretch to intercept the man, grabbing and nearly tackling him, and he
|
||||
tumbles to the ground." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"Desperately you struggle with the messenger and manage to knock him down
|
||||
a second time." CR>
|
||||
<SCORE-OBJECT ,MESSENGER>)>)>>
|
||||
|
||||
<ROOM AMBUSH-SITE
|
||||
(LOC ROOMS)
|
||||
(DESC "City Street")
|
||||
(LDESC
|
||||
"This is a dark, deserted street in the middle of Osaka.")
|
||||
(SYNONYM STREET)
|
||||
(ADJECTIVE CITY)
|
||||
(FLAGS ONBIT OUTSIDE)
|
||||
(GLOBAL MESSENGER)
|
||||
(ACTION AMBUSH-SITE-F)>
|
||||
|
||||
<ROUTINE AMBUSH-SITE-F ("OPT" (RARG <>))
|
||||
<COND (<RARG? BEG>
|
||||
<COND (<VERB? WALK>
|
||||
<TELL
|
||||
"You are pinned down by the attack. To run would be suicidal!" CR>)
|
||||
(<AND <P? (PUSH TAKE HELP PULL-BEHIND) MARIKO>
|
||||
<FSET? ,MARIKOS-LITTER ,SCOREBIT>>
|
||||
<B-LIE-DOWN>
|
||||
<TELL
|
||||
"You roll for cover, taking Mariko with you into the lee of the tumbled
|
||||
litter." CR>
|
||||
<SCORE-OBJECT ,MARIKOS-LITTER>)
|
||||
(<AND <OR <VERB? DODGE>
|
||||
<P? (HIDE-BEHIND HIDE-UNDER) MARIKOS-LITTER>>
|
||||
<FSET? ,MARIKOS-LITTER ,SCOREBIT>>
|
||||
<B-LIE-DOWN>
|
||||
<TELL
|
||||
"You roll for cover into the lee of the tumbled litter." CR>)>)>>
|
||||
|
||||
<GLOBAL AMBUSH-PROB 2>
|
||||
|
||||
<GLOBAL XAMBUSH 0>
|
||||
<GLOBAL YAMBUSH 0>
|
||||
|
||||
<ROUTINE I-AMBUSH-START ()
|
||||
<COND (<OR <G? ,AMBUSH-PROB 100>
|
||||
<PROB ,AMBUSH-PROB>>
|
||||
<SETG XAMBUSH ,X>
|
||||
<SETG YAMBUSH ,Y>
|
||||
<MOVE-ALL ,MAZE ,AMBUSH-SITE>
|
||||
<COND (<IN? ,BLACKTHORNE ,MARIKOS-LITTER>
|
||||
<MOVE ,MARIKOS-LITTER ,MAZE>)
|
||||
(ELSE
|
||||
<MOVE ,BLACKTHORNE ,MAZE>)>
|
||||
<MOVE ,AMBUSHERS ,AMBUSH-SITE>
|
||||
<QUEUE I-AMBUSH -1>
|
||||
<TELL CR
|
||||
"The arrows come out of the night, the first impaling the captain
|
||||
through the throat. His lungs fill with molten fire and death
|
||||
swallows him. His last thought is one of wonder, for did not Lord
|
||||
Kiyama, his master, tell him the ambush was to be later, beside
|
||||
the wharves, and directed at the pirate?" CR CR>
|
||||
<GOTO ,AMBUSH-SITE>)
|
||||
(ELSE
|
||||
<QUEUE I-AMBUSH-START 5>
|
||||
<SETG AMBUSH-PROB <+ ,AMBUSH-PROB 6>>
|
||||
<RFALSE>)>>
|
||||
|
||||
<ROUTINE I-AMBUSH ()
|
||||
<ZLINES ,AMBUSH-CNT
|
||||
(<TELL CR
|
||||
"An arrow slams into the litter post an inch from your head! Two
|
||||
arrows pierce the curtains of Kiritsubo's litter, and another strikes
|
||||
one of the maids in the waist. As she screams, the litter bearers
|
||||
take to their heels into the darkness. Mariko ">
|
||||
<COND (<FSET? ,MARIKOS-LITTER ,SCOREBIT>
|
||||
<TELL "stands in the open">)
|
||||
(ELSE
|
||||
<TELL "clings to you">)>
|
||||
<TELL ",
|
||||
staring in shock at the dying maid." CR>)
|
||||
(<TELL CR
|
||||
"A shower of arrows straddles both litters.">
|
||||
<COND (<FSET? ,MARIKOS-LITTER ,SCOREBIT>
|
||||
<FSET ,MARIKO ,DEAD>
|
||||
<TELL
|
||||
" One strikes Mariko in the back as she starts to run for cover. She
|
||||
falls to the ground and is still." CR>
|
||||
<FAILED-SCENE>)
|
||||
(ELSE
|
||||
<TELL
|
||||
" One thuds into the ground where Mariko was an instant ago." CR>)>)
|
||||
(<MOVE ,TORANAGA ,HERE>
|
||||
<REMOVE ,TORANAGA-IN-DRAG>
|
||||
<FSET ,CURTAINS ,OPENBIT>
|
||||
<MARGINAL-PIC ,P-IN-DRAG T ,P-IN-DRAG-CORNER T>
|
||||
<TELL CR
|
||||
"Buntaro shields Toranaga's litter with his body as best he can, then
|
||||
whips open the curtains. Two arrows are imbedded in Toranaga's chest and
|
||||
side,
|
||||
and he jerks them out of the armor he wears beneath the kimono. He
|
||||
fights his way out of the litter and stands in the street, sword
|
||||
drawn, an incongruous figure in kimono and hat." CR>)
|
||||
(<REMOVE ,AMBUSHERS>
|
||||
<TELL CR
|
||||
"Another volley of arrows comes out of the darkness, one missing you
|
||||
so narrowly that it takes skin off of your cheek, and then all is silent.|
|
||||
|
|
||||
Buntaro and some of his men are near the wall in pursuit but the
|
||||
ambushers vanish into the blackness. A dozen men race in pursuit but
|
||||
all know it's hopeless." CR>)
|
||||
(<MOVE ,MESSENGER ,HERE>
|
||||
<FCLEAR ,MESSENGER ,INVISIBLE>
|
||||
<THIS-IS-IT ,MESSENGER>
|
||||
<SETG OPPONENT ,MESSENGER>
|
||||
<TELL CR
|
||||
"One of the officer Grays says, \"Toranaga!\" and though it is said
|
||||
quietly, everyone hears. Here, incredibly, is the enemy of his
|
||||
master, free, outside the castle walls. \"You will wait here, Lord
|
||||
Toranaga. You,\" he snaps at one of his men, \"report to Lord Ishido
|
||||
at once!\" The man races toward you, heading back toward the castle!" CR>)
|
||||
(DELAY
|
||||
<COND (<FSET? ,MESSENGER ,SCOREBIT>
|
||||
<COND (<AND <FSET? ,MESSENGER ,RMUNGBIT>
|
||||
<NOT <FSET? ,MESSENGER ,SURFACEBIT>>>
|
||||
<FSET ,MESSENGER ,SURFACEBIT>
|
||||
<TELL CR
|
||||
"Immediately he rolls and is on his feet again!" CR>)
|
||||
(ELSE
|
||||
<MOVE ,MESSENGER ,LOCAL-GLOBALS>
|
||||
<FCLEAR ,MESSENGER ,SCOREBIT>
|
||||
<TELL CR
|
||||
"This time the messenger scuttles away from you and is off like a hare
|
||||
chased by hounds." CR>)>
|
||||
<RTRUE>)
|
||||
(<AND <NOT <IN? ,MESSENGER ,LOCAL-GLOBALS>>
|
||||
<NOT <FSET? ,MESSENGER ,DEAD>>>
|
||||
<FSET ,MESSENGER ,DEAD>
|
||||
<TELL CR
|
||||
"This time Buntaro, with a vicious chop of his sword, cuts the man down." CR>
|
||||
<RTRUE>)>)
|
||||
(<REPLACE-SYNONYM ,CORTEGE ,W?GRAYS ,W?BROWNS>
|
||||
<MOVE ,GRAYS ,HERE>
|
||||
<THIS-IS-IT ,GRAYS>
|
||||
<TELL CR
|
||||
"The rest of the Grays attack, trying to reach Toranaga. One officer
|
||||
whips out his two-handed sword and leaps for Toranaga but Buntaro
|
||||
parries. The Browns and Grays, all intermixed, erupt into a swirling
|
||||
melee.|
|
||||
|
|
||||
The Grays fight courageously. Four join in a suicidal charge at
|
||||
Toranaga. The Browns break it and the Grays regroup and charge
|
||||
again. Then a senior officer orders three to retreat for help and the
|
||||
rest to guard the retreat." CR>)
|
||||
(<DEQUEUE I-AMBUSH>
|
||||
<COND (<FSET? ,MESSENGER ,DEAD> <REMOVE ,MESSENGER>)
|
||||
(ELSE <QUEUE I-CAUGHT 150>)>
|
||||
<REMOVE ,GRAYS>
|
||||
<MOVE-ALL ,AMBUSH-SITE ,MAZE>
|
||||
<MOVE ,BLACKTHORNE ,AMBUSH-SITE>
|
||||
<TELL CR
|
||||
"The three Grays tear off, and though Buntaro kills one, the other two
|
||||
are only wounded. The rest die." CR CR>
|
||||
<GOTO ,MAZE>)>>
|
||||
|
||||
<ROUTINE I-CAUGHT ()
|
||||
<COND (<HERE? MAZE>
|
||||
<LEAVE-MAZE>
|
||||
<TELL CR
|
||||
"Ahead of you, a mass of Gray archers materializes out of the night. Above,
|
||||
a mass of fireworks blooms in warning from the castle. Toranaga turns,
|
||||
ordering the cortege to retreat down an alley, but there are Grays there
|
||||
too. The party is surrounded!" CR>
|
||||
<JIGS-UP>
|
||||
<RFATAL>)>>
|
||||
|
||||
<ROOM MAZE
|
||||
(LOC ROOMS)
|
||||
(SYNONYM STREETS)
|
||||
(ADJECTIVE CITY)
|
||||
(DESC "City Streets")
|
||||
(FLAGS OUTSIDE ONBIT)
|
||||
(GLOBAL HOUSE)
|
||||
(MOUSE MAZE-MOUSE-F)
|
||||
(ACTION MAZE-F)>
|
||||
|
||||
<ROUTINE MAZE-F (RARG "AUX" XX YY OXX OYY)
|
||||
<COND (<RARG? LOOK>
|
||||
<TELL
|
||||
"This maze of streets and alleys extends from the great castle to the
|
||||
harbor. At night, it is a nightmare of blind alleys, twisting overhung
|
||||
streets, and shadowy hurrying shapes." CR>)
|
||||
(<RARG? ENTER>
|
||||
<PICSET ,MAZE-PICS>
|
||||
<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
|
||||
<MOVE-ALL ,CITY ,MAZE>
|
||||
<TELL
|
||||
"The cortege continues through the winding, curling city streets,
|
||||
the pedestrians bowing and the very poor on their knees until you
|
||||
pass." CR CR>
|
||||
<QUEUE I-AMBUSH-START 5>
|
||||
<TELL "[Building Osaka.]" CR CR>
|
||||
<BUILDMAZE>)>
|
||||
<COND (<EQUAL? ,OHERE ,WAREHOUSE>
|
||||
<SET XX ,XGOAL>
|
||||
<SET YY ,YGOAL>
|
||||
<TELL
|
||||
"You have returned to the"G" maze of back streets and alleys." CR>)
|
||||
(<EQUAL? ,OHERE ,AMBUSH-SITE>
|
||||
<SET XX ,XAMBUSH>
|
||||
<SET YY ,YAMBUSH>
|
||||
<TELL
|
||||
"The cortege re-forms and prepares to continue the escape. The urgency is
|
||||
now great, as the escaped grays will spread the alarm." CR>)
|
||||
(ELSE
|
||||
<SET XX ,XSTART>
|
||||
<SET YY ,YSTART>
|
||||
<TELL
|
||||
"You have entered a"G" maze of back streets and alleys." CR>)>
|
||||
<CRLF>
|
||||
<TYPE-ANY-KEY>
|
||||
<DISPLAY-MAZE>
|
||||
<MAZE-MOVE .XX .YY>
|
||||
<RTRUE>)
|
||||
(<RARG? LEAVE>
|
||||
<LEAVE-MAZE>)
|
||||
(<RARG? BEG>
|
||||
<COND (<VERB? DEFINE>
|
||||
<CLEAR ,MAZE-WINDOW>
|
||||
<RFALSE>)
|
||||
(<VERB? WALK>
|
||||
<REPEAT ((MOVED? <>))
|
||||
<SET XX ,X>
|
||||
<SET YY ,Y>
|
||||
<SET OXX ,X>
|
||||
<SET OYY ,Y>
|
||||
<COND (<AND <EQUAL? ,P-WALK-DIR ,P?NORTH>
|
||||
<G? .YY 0>>
|
||||
<SET YY <- .YY 1>>)
|
||||
(<AND <EQUAL? ,P-WALK-DIR ,P?EAST>
|
||||
<L? .XX <- ,MAZE-WIDTH 1>>>
|
||||
<SET XX <+ .XX 1>>)
|
||||
(<AND <EQUAL? ,P-WALK-DIR ,P?WEST>
|
||||
<G? .XX 0>>
|
||||
<SET XX <- .XX 1>>)
|
||||
(<AND <EQUAL? ,P-WALK-DIR ,P?SOUTH>
|
||||
<L? .YY <- ,MAZE-HEIGHT 1>>>
|
||||
<SET YY <+ .YY 1>>)
|
||||
(<AND <EQUAL? ,P-WALK-DIR ,P?NE>
|
||||
<L? .XX <- ,MAZE-WIDTH 1>>
|
||||
<G? .YY 0>>
|
||||
<SET XX <+ .XX 1>>
|
||||
<SET YY <- .YY 1>>)
|
||||
(<AND <EQUAL? ,P-WALK-DIR ,P?SE>
|
||||
<L? .XX <- ,MAZE-WIDTH 1>>
|
||||
<L? .YY <- ,MAZE-HEIGHT 1>>>
|
||||
<SET XX <+ .XX 1>>
|
||||
<SET YY <+ .YY 1>>)
|
||||
(<AND <EQUAL? ,P-WALK-DIR ,P?SW>
|
||||
<G? .XX 0>
|
||||
<L? .YY <- ,MAZE-HEIGHT 1>>>
|
||||
<SET XX <- .XX 1>>
|
||||
<SET YY <+ .YY 1>>)
|
||||
(<AND <EQUAL? ,P-WALK-DIR ,P?NW>
|
||||
<G? .XX 0>
|
||||
<G? .YY 0>>
|
||||
<SET XX <- .XX 1>>
|
||||
<SET YY <- .YY 1>>)
|
||||
(ELSE
|
||||
<TELL "You can't go that way." CR>
|
||||
<RTRUE>)>
|
||||
<COND (<AND <EQUAL? .XX ,XSTART>
|
||||
<EQUAL? .YY ,YSTART>>
|
||||
<GOTO ,CITY>
|
||||
<RTRUE>)
|
||||
(<AND <EQUAL? .XX ,XGOAL>
|
||||
<EQUAL? .YY ,YGOAL>>
|
||||
<GOTO ,WAREHOUSE>
|
||||
<RTRUE>)
|
||||
(<AND <MSTREET? <MGETB .XX .YY>>
|
||||
<OR <EQUAL? .XX .OXX>
|
||||
<EQUAL? .YY .OYY>
|
||||
<MSTREET? <MGETB .XX .OYY>>
|
||||
<MSTREET? <MGETB .OXX .YY>>>>
|
||||
<MAZE-MOVE .XX .YY>
|
||||
<COND (<AND <EQUAL? .XX ,XFISH>
|
||||
<EQUAL? .YY ,YFISH>
|
||||
<NOT <LOC ,FISH-GATE>>>
|
||||
<MOVE ,FISH-GATE ,HERE>
|
||||
<COND (<FSET? ,FISH-GATE ,SCOREBIT>
|
||||
<MOVE ,RONIN ,HERE>
|
||||
<SCORE-OBJECT ,FISH-GATE>
|
||||
<TELL
|
||||
G"You make your way through the deserted streets.">
|
||||
<TELL
|
||||
" Toranaga stops the cortege outside a battered gate. A fish is etched
|
||||
into its timbers. He knocks in code. The door opens at once, and an
|
||||
ill-kempt samurai bows. \"Bring your men and follow me,\" Toranaga
|
||||
says. Fifteen men, dressed as "I"ronin"" follow him and slip into
|
||||
place as advance and rear guard. Others spread the alarm to other
|
||||
secret cadres. Soon there are fifty troops with you and a hundred
|
||||
guarding your flanks." CR>)>)
|
||||
(<AND <EQUAL? .OXX ,XFISH>
|
||||
<EQUAL? .OYY ,YFISH>>
|
||||
<REMOVE ,FISH-GATE>)>
|
||||
<COND (<EQUAL? ,P-WALK-DIR ,P?NORTH ,P?SOUTH>
|
||||
<COND (<OR <MSTREET?
|
||||
<MGETB <- .XX 1> .YY>>
|
||||
<MSTREET?
|
||||
<MGETB <+ .XX 1> .YY>>>
|
||||
<RETURN>)
|
||||
(ELSE
|
||||
<SET MOVED? T>)>)
|
||||
(<EQUAL? ,P-WALK-DIR ,P?EAST ,P?WEST>
|
||||
<COND (<OR <MSTREET?
|
||||
<MGETB .XX <- .YY 1>>>
|
||||
<MSTREET?
|
||||
<MGETB .XX <+ .YY 1>>>>
|
||||
<RETURN>)
|
||||
(ELSE
|
||||
<SET MOVED? T>)>)>)
|
||||
(.MOVED? <RETURN>)
|
||||
(ELSE
|
||||
<TELL "There's a house there." CR>
|
||||
<RTRUE>)>>
|
||||
<TELL
|
||||
G"You make your way through the deserted streets." CR>)
|
||||
(<AND <VERB? DROP>
|
||||
<IN? ,WINNER ,MAZE>>
|
||||
<COND (<IDROP>
|
||||
<REMOVE ,PRSO>
|
||||
<TELL
|
||||
CTHE ,PRSO " drops to the ground and is lost from sight in the dark and
|
||||
confusion." CR>)
|
||||
(ELSE <RTRUE>)>)>)>>
|
||||
|
||||
<ROUTINE LEAVE-MAZE ("AUX" YY)
|
||||
<SET YY <+ <WINGET ,S-TEXT ,WYPOS> <WINGET ,S-TEXT ,WTOP>>>
|
||||
<SETUP-TEXT-AND-STATUS>
|
||||
<SCREEN ,S-TEXT>
|
||||
<CURSET <- .YY <WINGET ,S-TEXT ,WTOP>> 1>>
|
||||
|
||||
<CONSTANT MAZE-PICS
|
||||
<TABLE P-MAZE-WALL
|
||||
P-MAZE-STREET
|
||||
P-MAZE-PARTY
|
||||
P-MAZE-CASTLE
|
||||
P-MAZE-DOCK
|
||||
P-MAZE-FISH
|
||||
P-MAZE-BACKGROUND
|
||||
0>>
|
||||
|
||||
<ROUTINE MAZE-MOUSE-F (TRM "AUX" (DIR <>) WX WY
|
||||
(BX <GET ,MAZE-BOX-TBL 1>) (BY <GET ,MAZE-BOX-TBL 0>))
|
||||
<SET WY
|
||||
<+ <WINGET ,MAZE-WINDOW ,WTOP>
|
||||
,YOFFSET
|
||||
<* ,Y .BY>
|
||||
</ .BY 2>>>
|
||||
<SET WX
|
||||
<+ <WINGET ,MAZE-WINDOW ,WLEFT>
|
||||
,XOFFSET
|
||||
<* ,X .BX>
|
||||
</ .BX 2>>>
|
||||
<SET WY <- ,MOUSE-LOC-Y .WY>>
|
||||
<SET WX <- ,MOUSE-LOC-X .WX>>
|
||||
<COND (<G=? .WX 0> ;"right side"
|
||||
<COND (<L? .WY 0> ;"top right"
|
||||
<SET WY <- .WY>>
|
||||
<COND (<G? .WX <* .WY 3>>
|
||||
<SET DIR ,EAST-STR>)
|
||||
(<G? .WY <* .WX 3>>
|
||||
<SET DIR ,NORTH-STR>)
|
||||
(ELSE
|
||||
<SET DIR ,NE-STR>)>)
|
||||
(ELSE ;"bottom right"
|
||||
<COND (<G? .WX <* .WY 3>>
|
||||
<SET DIR ,EAST-STR>)
|
||||
(<G? .WY <* .WX 3>>
|
||||
<SET DIR ,SOUTH-STR>)
|
||||
(ELSE
|
||||
<SET DIR ,SE-STR>)>)>)
|
||||
(<L? .WY 0> ;"top left"
|
||||
<SET WY <- .WY>>
|
||||
<SET WX <- .WX>>
|
||||
<COND (<G? .WX <* .WY 3>>
|
||||
<SET DIR ,WEST-STR>)
|
||||
(<G? .WY <* .WX 3>>
|
||||
<SET DIR ,NORTH-STR>)
|
||||
(ELSE
|
||||
<SET DIR ,NW-STR>)>)
|
||||
(ELSE ;"bottom left"
|
||||
<SET WX <- .WX>>
|
||||
<COND (<G? .WX <* .WY 3>>
|
||||
<SET DIR ,WEST-STR>)
|
||||
(<G? .WY <* .WX 3>>
|
||||
<SET DIR ,SOUTH-STR>)
|
||||
(ELSE
|
||||
<SET DIR ,SW-STR>)>)>
|
||||
<COND (<AND <L=? .WX </ .BX 2>> <L=? .WY </ .BY 2>>>
|
||||
<RFALSE>)
|
||||
(.DIR
|
||||
<ADD-TO-INPUT .DIR 13>
|
||||
<RETURN 13>)
|
||||
(ELSE
|
||||
<RFALSE>)>>
|
||||
|
||||
<CONSTANT NORTH-STR <LTABLE (PURE STRING) "north">>
|
||||
<CONSTANT SOUTH-STR <LTABLE (PURE STRING) "south">>
|
||||
<CONSTANT EAST-STR <LTABLE (PURE STRING) "east">>
|
||||
<CONSTANT WEST-STR <LTABLE (PURE STRING) "west">>
|
||||
<CONSTANT SE-STR <LTABLE (PURE STRING) "se">>
|
||||
<CONSTANT SW-STR <LTABLE (PURE STRING) "sw">>
|
||||
<CONSTANT NE-STR <LTABLE (PURE STRING) "ne">>
|
||||
<CONSTANT NW-STR <LTABLE (PURE STRING) "nw">>
|
||||
|
||||
<CONSTANT MAZE-BOX-TBL <TABLE 0 0>>
|
||||
|
||||
"Mechanics of building and displaying maze."
|
||||
|
||||
<ROUTINE MGETB (X Y)
|
||||
<GETB ,MAZE-MAP <+ <* .Y ,MAZE-WIDTH> .X>>>
|
||||
|
||||
<ROUTINE MPUTB (X Y VAL)
|
||||
<PUTB ,MAZE-MAP <+ <* .Y ,MAZE-WIDTH> .X> .VAL>>
|
||||
|
||||
<GLOBAL YOFFSET 0>
|
||||
<GLOBAL XOFFSET 0>
|
||||
|
||||
<ROUTINE DISPLAY-MAZE-PIC (VAL Y X "AUX" BY BX OY OX)
|
||||
<COND (<NOT <ZERO? .VAL>> ;<EQUAL? .VAL ;!\#>
|
||||
<SET BY <GET ,MAZE-BOX-TBL 0>>
|
||||
<SET BX <GET ,MAZE-BOX-TBL 1>>
|
||||
<DISPLAY .VAL ;<MAZE-PIC .VAL>
|
||||
<+ 1 ,YOFFSET <* .Y .BY>>
|
||||
<+ 1 ,XOFFSET <* .X .BX>>>)>>
|
||||
|
||||
;<ROUTINE MAZE-PIC (VAL)
|
||||
<COND (<EQUAL? .VAL !\B> ,P-MAZE-PARTY)
|
||||
(<EQUAL? .VAL !\*> ,P-MAZE-WALL)
|
||||
(<EQUAL? .VAL !\ > ,P-MAZE-STREET)
|
||||
(<EQUAL? .VAL !\C> ,P-MAZE-CASTLE)
|
||||
(<EQUAL? .VAL !\D> ,P-MAZE-DOCK)
|
||||
(<EQUAL? .VAL !\F> ,P-MAZE-FISH)>>
|
||||
|
||||
<ROUTINE MAZE-MOVE (X Y)
|
||||
<SCREEN ,MAZE-WINDOW>
|
||||
<SETG X .X>
|
||||
<SETG Y .Y>
|
||||
<MPUTC <- .X 1> <- .Y 1>>
|
||||
<MPUTC .X <- .Y 1>>
|
||||
<MPUTC <+ .X 1> <- .Y 1>>
|
||||
<MPUTC <- .X 1> .Y>
|
||||
<MPUTC <+ .X 1> .Y>
|
||||
<MPUTC <- .X 1> <+ .Y 1>>
|
||||
<MPUTC .X <+ .Y 1>>
|
||||
<MPUTC <+ .X 1> <+ .Y 1>>
|
||||
<MPUTC .X .Y ,P-MAZE-PARTY ;!\B>
|
||||
<SCREEN ,S-TEXT>>
|
||||
|
||||
<ROUTINE MPUTC (X Y "OPT" (VAL <>) "AUX" OVAL)
|
||||
<COND (<VALID .X .Y>
|
||||
<SET OVAL <MGETB .X .Y>>
|
||||
<COND (<NOT .VAL>
|
||||
<SET VAL .OVAL>
|
||||
<COND (<MSTREET? .VAL>
|
||||
<COND (<AND <EQUAL? .X ,XSTART>
|
||||
<EQUAL? .Y ,YSTART>>
|
||||
<SET VAL ,P-MAZE-CASTLE ;!\C>)
|
||||
(<AND <EQUAL? .X ,XGOAL>
|
||||
<EQUAL? .Y ,YGOAL>>
|
||||
<SET VAL ,P-MAZE-DOCK ;!\D>)
|
||||
(<AND <EQUAL? .X ,XFISH>
|
||||
<EQUAL? .Y ,YFISH>>
|
||||
<SET VAL ,P-MAZE-FISH ;!\F>)
|
||||
(ELSE <SET VAL ,P-MAZE-STREET ;!\ >)>)
|
||||
(ELSE
|
||||
<SET VAL ,P-MAZE-WALL ;!\*>)>)>
|
||||
<SET VAL <BOR .VAL <BAND .OVAL ,MWALL>>>
|
||||
<COND (<NOT <EQUAL? .VAL .OVAL>>
|
||||
<MPUTB .X .Y .VAL>
|
||||
<DISPLAY-MAZE-PIC <BAND .VAL 127> .Y .X>)>)>>
|
||||
|
||||
<ROUTINE DISPLAY-MAZE ("AUX" Y BY BX MH TH SH)
|
||||
<RESET-MARGIN>
|
||||
<CLEAR ,S-TEXT>
|
||||
<PICINF ,P-MAZE-BACKGROUND ,YX-TBL>
|
||||
<SET SH <WINGET ,S-STATUS ,WHIGH>>
|
||||
<WINDEF ,MAZE-WINDOW
|
||||
<SET Y <+ <WINGET ,S-STATUS ,WTOP> .SH>>
|
||||
<WINGET ,S-TEXT ,WLEFT>
|
||||
<SET MH <GET ,YX-TBL 0>>
|
||||
<GET ,YX-TBL 1>>
|
||||
<SET TH <- <WINGET ,S-FULL ,WHIGH> .SH>>
|
||||
<WINDEF ,S-TEXT
|
||||
<+ .Y .MH> <WINGET ,S-TEXT ,WLEFT>
|
||||
<- .TH .MH> <WINGET ,S-TEXT ,WWIDE>>
|
||||
<CLEAR ,S-TEXT>
|
||||
<SCREEN ,MAZE-WINDOW>
|
||||
<PICINF ,P-MAZE-BOX ,MAZE-BOX-TBL>
|
||||
<SET BY <GET ,MAZE-BOX-TBL 0>>
|
||||
<SET BX <GET ,MAZE-BOX-TBL 1>>
|
||||
<SETG YOFFSET
|
||||
</ <- <WINGET ,MAZE-WINDOW ,WHIGH>
|
||||
<* ,MAZE-HEIGHT .BY>>
|
||||
2>>
|
||||
<SETG XOFFSET
|
||||
</ <- <WINGET ,MAZE-WINDOW ,WWIDE>
|
||||
<* ,MAZE-WIDTH .BX>>
|
||||
2>>
|
||||
<PRINTM>
|
||||
<SCREEN ,S-TEXT>>
|
||||
|
||||
<ROUTINE PRINTM ("AUX" M (OFFS 0))
|
||||
<DISPLAY ,P-MAZE-BACKGROUND 1 1>
|
||||
<FOR ((Y 0) <L? .Y ,MAZE-HEIGHT> <SET Y <+ .Y 1>>)
|
||||
<FOR ((X 0) <L? .X ,MAZE-WIDTH> <SET X <+ .X 1>>)
|
||||
<DISPLAY-MAZE-PIC <SET M <BAND <GETB ,MAZE-MAP .OFFS> 127>>
|
||||
.Y .X>
|
||||
<SET OFFS <+ .OFFS 1>>>>>
|
||||
|
||||
<CONSTANT MAZE-WIDTH 37>
|
||||
<CONSTANT MAZE-HEIGHT 17>
|
||||
<GLOBAL SIZE 0>
|
||||
<GLOBAL PMAX 0>
|
||||
<GLOBAL MAZE-MAP <ITABLE <* ,MAZE-WIDTH ,MAZE-HEIGHT> (BYTE) 128>>
|
||||
|
||||
<CONSTANT DIR
|
||||
<TABLE <TABLE (BYTE) 0 1 2 3> <TABLE (BYTE) 0 1 3 2>
|
||||
<TABLE (BYTE) 0 2 1 3> <TABLE (BYTE) 0 2 3 1>
|
||||
<TABLE (BYTE) 0 3 1 2> <TABLE (BYTE) 0 3 2 1>
|
||||
<TABLE (BYTE) 1 0 2 3> <TABLE (BYTE) 1 0 3 2>
|
||||
<TABLE (BYTE) 1 2 0 3> <TABLE (BYTE) 1 2 3 0>
|
||||
<TABLE (BYTE) 1 3 0 2> <TABLE (BYTE) 1 3 2 0>
|
||||
<TABLE (BYTE) 2 0 1 3> <TABLE (BYTE) 2 0 3 1>
|
||||
<TABLE (BYTE) 2 1 0 3> <TABLE (BYTE) 2 1 3 0>
|
||||
<TABLE (BYTE) 2 3 0 1> <TABLE (BYTE) 2 3 1 0>
|
||||
<TABLE (BYTE) 3 0 1 2> <TABLE (BYTE) 3 0 2 1>
|
||||
<TABLE (BYTE) 3 1 0 2> <TABLE (BYTE) 3 1 2 0>
|
||||
<TABLE (BYTE) 3 2 0 1> <TABLE (BYTE) 3 2 1 0>>>
|
||||
|
||||
<CONSTANT XOFF1 <TABLE 0 0 1 -1>>
|
||||
<CONSTANT YOFF1 <TABLE -1 1 0 0>>
|
||||
<CONSTANT XOFF2 <TABLE 0 0 2 -2>>
|
||||
<CONSTANT YOFF2 <TABLE -2 2 0 0>>
|
||||
|
||||
<GLOBAL X 0>
|
||||
<GLOBAL Y 0>
|
||||
<GLOBAL XSTART 0>
|
||||
<GLOBAL YSTART 0>
|
||||
<GLOBAL XGOAL 0>
|
||||
<GLOBAL YGOAL 0>
|
||||
<GLOBAL LEN 0>
|
||||
<GLOBAL LMAX 0>
|
||||
<GLOBAL FLEN 0>
|
||||
<GLOBAL XFISH 0>
|
||||
<GLOBAL YFISH 0>
|
||||
|
||||
<ROUTINE BUILDMAZE ("AUX" LEFT PLEN D)
|
||||
<SETG SIZE <* </ ,MAZE-WIDTH 2> </ ,MAZE-HEIGHT 2>>>
|
||||
<SETG PMAX ,SIZE>
|
||||
<SET LEFT ,SIZE>
|
||||
<SETG FLEN <+ 10 <RANDOM 5>>>
|
||||
<FOR ((YY 0) <L? .YY ,MAZE-HEIGHT> <SET YY <+ .YY 1>>)
|
||||
<FOR ((XX 0) <L? .XX ,MAZE-WIDTH> <SET XX <+ .XX 1>>)
|
||||
<MPUTB .XX .YY ,MWALL>>>
|
||||
<FOR ((YY 1) <L? .YY ,MAZE-HEIGHT> <SET YY <+ .YY 2>>)
|
||||
<FOR ((XX 1) <L? .XX ,MAZE-WIDTH> <SET XX <+ .XX 2>>)
|
||||
<MPUTB .XX .YY 0>>>
|
||||
<SETG XGOAL <- ,MAZE-WIDTH 2>
|
||||
;<+ <* <RANDOM <- </ ,MAZE-WIDTH 2> 1>> 2> 1>>
|
||||
<SETG XSTART ,XGOAL>
|
||||
<SETG X ,XGOAL>
|
||||
<SETG YGOAL <+ <* <RANDOM <- </ ,MAZE-HEIGHT 2> 1>> 2> 1>>
|
||||
<SETG YSTART ,YGOAL>
|
||||
<SETG Y ,YGOAL>
|
||||
<MPUTB ,X ,Y 1>
|
||||
<SETG LEN 1>
|
||||
<SETG LMAX 1>
|
||||
<FOR ((PLEN 0) <G? <SET LEFT <- .LEFT 1>> 0> <SET PLEN <+ .PLEN 1>>)
|
||||
<REPEAT ()
|
||||
<COND (<OR <ZERO? <MGETB ,X ,Y>>
|
||||
<G=? .PLEN ,PMAX>
|
||||
<L? <SET D <FINDMOVE ,X ,Y>> 0>>
|
||||
<BACKUP>
|
||||
<SET PLEN 0>)
|
||||
(ELSE <RETURN>)>>
|
||||
<REMOVEWALL .D>>
|
||||
<FOR ((YY 1) <L? .YY ,MAZE-HEIGHT> <SET YY <+ .YY 2>>)
|
||||
<FOR ((XX 1) <L? .XX ,MAZE-WIDTH> <SET XX <+ .XX 2>>)
|
||||
<MPUTB .XX .YY 0>>>
|
||||
<FOR ((XX 0) <L? .XX ,MAZE-WIDTH> <SET XX <+ .XX 1>>)
|
||||
<MPUTB .XX 0 ,MWALL>
|
||||
<MPUTB .XX <- ,MAZE-HEIGHT 1> ,MWALL>>
|
||||
<FOR ((YY 1) <L? .YY <- ,MAZE-HEIGHT 1>> <SET YY <+ .YY 1>>)
|
||||
<MPUTB 0 .YY ,MWALL>
|
||||
<MPUTB <- ,MAZE-WIDTH 1> .YY ,MWALL>>
|
||||
<SETG XGOAL <+ ,XGOAL 1>>
|
||||
;<REPEAT ()
|
||||
<SETG XFISH <RANDOM ,MAZE-WIDTH>>
|
||||
<SETG YFISH <RANDOM ,MAZE-HEIGHT>>
|
||||
<COND (<ZERO? <BAND <MGETB ,XFISH ,YFISH> ,MWALL>>
|
||||
<RETURN>)>>
|
||||
<MPUTB ,XGOAL ,YGOAL 0> ;"make the exit">
|
||||
|
||||
<ROUTINE VISITED (XLOC YLOC)
|
||||
<COND (<NOT <VALID .XLOC .YLOC>>)
|
||||
(<N==? <MGETB .XLOC .YLOC> 0>)>>
|
||||
|
||||
<ROUTINE VALID (XLOC YLOC)
|
||||
<COND (<OR <L? .XLOC 0> <G=? .XLOC ,MAZE-WIDTH>
|
||||
<L? .YLOC 0> <G=? .YLOC ,MAZE-HEIGHT>>
|
||||
<>)
|
||||
(ELSE T)>>
|
||||
|
||||
<ROUTINE FINDMOVE (XLOC YLOC "AUX" (DV <RANDOM 23>) D I)
|
||||
<FOR ((I 0) <L? .I 4> <SET I <+ .I 1>>)
|
||||
<SET D <GETB <GET ,DIR .DV> .I>>
|
||||
<COND (<NOT <VISITED <+ .XLOC <GET ,XOFF2 .D>>
|
||||
<+ .YLOC <GET ,YOFF2 .D>>>>
|
||||
<RETURN .D>)
|
||||
(ELSE <SET D -1>)>>
|
||||
.D>
|
||||
|
||||
<ROUTINE BACKUP ("AUX" D XX YY)
|
||||
<SETG LEN <- ,LEN 1>>
|
||||
<FOR ((D 0) <L? .D 4> <SET D <+ .D 1>>)
|
||||
<SET XX <+ ,X <GET ,XOFF2 .D>>>
|
||||
<SET YY <+ ,Y <GET ,YOFF2 .D>>>
|
||||
<COND (<AND <VALID .XX .YY>
|
||||
<==? <MGETB .XX .YY> ,LEN>>
|
||||
<RETURN>)>>
|
||||
<SETG X .XX>
|
||||
<SETG Y .YY>
|
||||
<RTRUE>>
|
||||
|
||||
<ROUTINE REMOVEWALL (D)
|
||||
<MPUTB <+ ,X <GET ,XOFF1 .D>>
|
||||
<+ ,Y <GET ,YOFF1 .D>>
|
||||
0>
|
||||
<SETG LEN <+ <MGETB ,X ,Y> 1>>
|
||||
<SETG X <+ ,X <GET ,XOFF2 .D>>>
|
||||
<SETG Y <+ ,Y <GET ,YOFF2 .D>>>
|
||||
<MPUTB ,X ,Y ,LEN>
|
||||
<COND (<EQUAL? ,LEN ,FLEN>
|
||||
<SETG XFISH ,X>
|
||||
<SETG YFISH ,Y>)>
|
||||
<COND (<G? ,LEN ,LMAX>
|
||||
<SETG LMAX ,LEN>
|
||||
<SETG XSTART ,X>
|
||||
<SETG YSTART ,Y>)>
|
||||
<RTRUE>>
|
||||
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,205 @@
|
|||
"PIC for
|
||||
Library
|
||||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
<CONSTANT P-TITLE 1> ;"standard number for title pic"
|
||||
|
||||
<CONSTANT YX-TBL <TABLE 0 0>>
|
||||
|
||||
<ROUTINE YCEILING (Y)
|
||||
<SET Y <+ .Y ,FONT-Y -1>>
|
||||
<- .Y <MOD .Y ,FONT-Y>>>
|
||||
|
||||
<ROUTINE XCEILING (X)
|
||||
<SET X <+ .X ,FONT-X -1>>
|
||||
<- .X <MOD .X ,FONT-X>>>
|
||||
|
||||
<END-SEGMENT>
|
||||
|
||||
<BEGIN-SEGMENT STARTUP>
|
||||
|
||||
<ROUTINE TITLE-SCREEN ()
|
||||
<CLEAR ,S-FULL>
|
||||
<COND (<PICINF ,P-TITLE ,YX-TBL>
|
||||
<CURSOR-OFF>
|
||||
<SCREEN ,S-FULL>
|
||||
<DISPLAY ,P-TITLE 1 1>
|
||||
<CURSET <WINGET ,S-TEXT ,WHIGH> 1>
|
||||
<INPUT 1>
|
||||
<CLEAR ,S-FULL>
|
||||
<CURSOR-ON>)>
|
||||
<DISPLAY-BORDER ,P-BORDER>
|
||||
<V-VERSION T>>
|
||||
|
||||
<END-SEGMENT>
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
<GLOBAL CURRENT-BORDER 0>
|
||||
|
||||
<ROUTINE DISPLAY-BORDER ("OPT" (B ,CURRENT-BORDER))
|
||||
<COND (<APPLE?> <RFALSE>)
|
||||
(<PICINF .B ,YX-TBL>
|
||||
<SCREEN ,S-FULL>
|
||||
<DISPLAY .B 1 1>
|
||||
<SETG CURRENT-BORDER .B>
|
||||
<SCREEN ,S-TEXT>)>>
|
||||
|
||||
<ROUTINE CENTER-PIC-X (P "AUX" X Y)
|
||||
<COND (<PICINF .P ,YX-TBL>
|
||||
<FLUSH-OLD-PICTURE>
|
||||
<MAKE-ROOM-FOR <SET Y <GET ,YX-TBL 0>>>
|
||||
<SET X <- <WINGET -3 ,WWIDE> <GET ,YX-TBL 1>>>
|
||||
<COND (<G? .X 1> <SET X </ .X 2>>)
|
||||
(ELSE <SET X 1>)>
|
||||
<DISPLAY .P 0 .X>
|
||||
<N-CRLF </ <+ .Y ,FONT-Y -1> ,FONT-Y>>
|
||||
<RTRUE>)>>
|
||||
|
||||
"display a picture centered in the current window"
|
||||
|
||||
<ROUTINE CENTER-PIC (P "AUX" X Y)
|
||||
<COND (<PICINF .P ,YX-TBL>
|
||||
<SET Y <- <WINGET -3 ,WHIGH> <GET ,YX-TBL 0>>>
|
||||
<SET X <- <WINGET -3 ,WWIDE> <GET ,YX-TBL 1>>>
|
||||
<COND (<G? .Y 1> <SET Y </ .Y 2>>)
|
||||
(ELSE <SET Y 1>)>
|
||||
<COND (<G? .X 1> <SET X </ .X 2>>)
|
||||
(ELSE <SET X 1>)>
|
||||
<DISPLAY .P .Y .X>)>>
|
||||
|
||||
<CONSTANT TEXT-MARGIN 2> ;"left and right text margins in pixels"
|
||||
|
||||
<ROUTINE FLUSH-OLD-PICTURE ("AUX" Y)
|
||||
<COND (<SET Y <WINGET ,S-TEXT ,WCRCNT>>
|
||||
<N-CRLF .Y>
|
||||
<RESET-MARGIN>)>>
|
||||
|
||||
<ROUTINE N-CRLF (Y)
|
||||
<REPEAT ((CNT 0))
|
||||
<COND (<IGRTR? CNT .Y> <RETURN>)>
|
||||
<CRLF>>>
|
||||
|
||||
<ROUTINE MARGINAL-PIC (P "OPT" (RIGHT? T) (C <>) (CTOP? <>)
|
||||
"AUX" TMP X Y YLEFT HIGH WIDE (CENTER? <>))
|
||||
<COND (<PICINF .P ,YX-TBL>
|
||||
<SET HIGH <WINGET ,S-TEXT ,WHIGH>>
|
||||
<SET WIDE <WINGET ,S-TEXT ,WWIDE>>
|
||||
<FLUSH-OLD-PICTURE>
|
||||
<SET Y <YCEILING <GET ,YX-TBL 0>>> ;"pic height rounded up"
|
||||
<SET X <GET ,YX-TBL 1>> ;"pic width"
|
||||
<COND (<AND .C <PICINF .C ,YX-TBL>>
|
||||
<SETG NEXT-PIC-CRCNT <GET ,YX-TBL 0>>
|
||||
<SETG NEXT-PIC-WIDTH <GET ,YX-TBL 1>>)
|
||||
(ELSE
|
||||
<SET C 0>
|
||||
<SETG NEXT-PIC-CRCNT 0>
|
||||
<SETG NEXT-PIC-WIDTH 0>)>
|
||||
<SET YLEFT <MAKE-ROOM-FOR .Y>>
|
||||
<COND (<G=? <+ .X <* ,FONT-X 10>> .WIDE>
|
||||
<SET CENTER? T>)>
|
||||
<DISPLAY .P
|
||||
0
|
||||
<COND (.CENTER?
|
||||
<+ 1 </ <- .WIDE .X> 2>>)
|
||||
(<AND .RIGHT?
|
||||
<L? .X .WIDE>>
|
||||
<+ 1 <- .WIDE .X>>)
|
||||
(ELSE 1)>>
|
||||
<COND (.CENTER?
|
||||
<CURSET .YLEFT 1>
|
||||
<CURSOR-OFF>
|
||||
<INPUT 1>
|
||||
<CURSOR-ON>
|
||||
<SET Y <- <YCEILING .HIGH> ,FONT-Y>>
|
||||
<COND (<L? <- .HIGH .Y> ,FONT-Y>
|
||||
<SET Y <- .Y ,FONT-Y>>)>
|
||||
<SET Y <+ .Y 1>>
|
||||
<COND (<G? .YLEFT .Y>
|
||||
<SCROLL ,S-TEXT <- .YLEFT .Y>>
|
||||
<CURSET .Y 1>)>
|
||||
<CRLF>)
|
||||
(ELSE
|
||||
<SET-MARGIN <COND (<AND .C .CTOP?> ,NEXT-PIC-WIDTH)
|
||||
(ELSE .X)>
|
||||
.RIGHT?>
|
||||
<SET Y </ .Y ,FONT-Y>>
|
||||
<COND (.C ;"does this picture have a corner?"
|
||||
<COND (.CTOP? <SETG NEXT-PIC-WIDTH .X>)>
|
||||
<SETG PIC-SIDE .RIGHT?>
|
||||
<SET TMP
|
||||
<- </ <YCEILING ,NEXT-PIC-CRCNT>
|
||||
,FONT-Y>
|
||||
1>>
|
||||
<COND (.CTOP?
|
||||
<SETG NEXT-PIC-CRCNT <- .Y .TMP 1>>
|
||||
<WINPUT 0 ,WCRCNT <+ .TMP 1>>)
|
||||
(ELSE
|
||||
<SETG NEXT-PIC-CRCNT <+ .TMP 1>>
|
||||
<WINPUT 0 ,WCRCNT <- .Y .TMP 1>>)>
|
||||
<WINPUT 0 ,WCRFUNC ,NEXT-MARGIN>)
|
||||
(ELSE
|
||||
<WINPUT 0 ,WCRFUNC ,RESET-MARGIN>
|
||||
<COND (<EQUAL? .P ,P-OAR>
|
||||
<SET Y <+ .Y 1>>)>
|
||||
<WINPUT 0 ,WCRCNT .Y>)>)>)>>
|
||||
|
||||
<ROUTINE SET-MARGIN (X RIGHT? "AUX" WIDE)
|
||||
<SET WIDE <WINGET ,S-TEXT ,WWIDE>>
|
||||
<SET X </ <XCEILING <+ .X 2>> ,FONT-X>>
|
||||
<COND (.RIGHT?
|
||||
<MARGIN ,TEXT-MARGIN <* .X ,FONT-X>>)
|
||||
(ELSE
|
||||
<MARGIN <* .X ,FONT-X> ,TEXT-MARGIN>)>
|
||||
<SET WIDE <- </ .WIDE ,FONT-X> .X>>
|
||||
<PUTB ,P-INBUF 0
|
||||
<COND (<G? .WIDE ,INBUF-LENGTH>
|
||||
,INBUF-LENGTH)
|
||||
(T
|
||||
.WIDE)>>>
|
||||
|
||||
<GLOBAL PIC-SIDE <>>
|
||||
<GLOBAL NEXT-PIC-WIDTH 0>
|
||||
<GLOBAL NEXT-PIC-CRCNT 0>
|
||||
|
||||
<ROUTINE NEXT-MARGIN ()
|
||||
<COND (,NEXT-PIC-CRCNT
|
||||
<SET-MARGIN ,NEXT-PIC-WIDTH ,PIC-SIDE>
|
||||
<WINPUT ,S-TEXT ,WCRCNT ,NEXT-PIC-CRCNT>
|
||||
<WINPUT ,S-TEXT ,WCRFUNC ,RESET-MARGIN>
|
||||
<SETG NEXT-PIC-CRCNT 0>)>
|
||||
<RTRUE>>
|
||||
|
||||
<ROUTINE RESET-MARGIN ()
|
||||
<WINPUT ,S-TEXT ,WCRCNT 0>
|
||||
<WINPUT ,S-TEXT ,WCRFUNC 0>
|
||||
<MARGIN ,TEXT-MARGIN ,TEXT-MARGIN>
|
||||
<PUTB ,P-INBUF 0 ,INBUF-LENGTH>>
|
||||
|
||||
"make sure room for Y pixels, by scrolling and moreing if necessary"
|
||||
|
||||
<ROUTINE MAKE-ROOM-FOR (Y "AUX" YLEFT LLEFT (HIGH <WINGET ,S-TEXT ,WHIGH>)
|
||||
(YLOC <WINGET ,S-TEXT ,WYPOS>)
|
||||
(XLOC <WINGET ,S-TEXT ,WXPOS>))
|
||||
<COND (<G? .Y .HIGH> <SET Y .HIGH>)>
|
||||
<SET YLEFT <+ 1 <- .HIGH .YLOC>>> ;"pixels left to eos"
|
||||
<COND (<G? .Y .YLEFT> ;"picture won't fit in rest of screen?"
|
||||
<SET YLEFT <YCEILING <- .Y .YLEFT>>> ;"won't fit by this much"
|
||||
<SET LLEFT ;"what yloc was when lncnt last was 1"
|
||||
<- .YLOC
|
||||
<* <- <WINGET ,S-TEXT ,WLCNT> 1>
|
||||
,FONT-Y>>>
|
||||
<COND (<G? .YLEFT .LLEFT> ;"would lose info?"
|
||||
<WINPUT ,S-TEXT ,WLCNT </ .HIGH ,FONT-Y>>
|
||||
<CRLF>
|
||||
<CURSET <- <WINGET ,S-TEXT ,WYPOS> ,FONT-Y> 1>)>
|
||||
<SCROLL ,S-TEXT .YLEFT>
|
||||
<SET YLOC <- .YLOC .YLEFT>>
|
||||
<COND (<L=? .YLOC 0> <SET YLOC 1>)>
|
||||
<CURSET .YLOC .XLOC>)>
|
||||
<SET YLEFT <+ .Y <WINGET ,S-TEXT ,WYPOS>>>
|
||||
<RETURN .YLEFT>>
|
||||
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,51 @@
|
|||
|
||||
<CONSTANT P-TITLE 1>
|
||||
<CONSTANT P-BORDER-LOC 2>
|
||||
<CONSTANT P-BORDER 3>
|
||||
<CONSTANT P-BORDER2 4>
|
||||
<CONSTANT P-TIME 5>
|
||||
<CONSTANT P-BORDER-3 6>
|
||||
<CONSTANT P-STORM 7>
|
||||
<CONSTANT P-BELOW-DECKS 8>
|
||||
<CONSTANT P-GARDEN 9>
|
||||
<CONSTANT P-ANJIRO 10>
|
||||
<CONSTANT P-OMI 11>
|
||||
<CONSTANT P-YABU 12>
|
||||
<CONSTANT P-PIT 13>
|
||||
<CONSTANT P-RODRIGUES 14>
|
||||
<CONSTANT P-CONFUSION 15>
|
||||
<CONSTANT P-OVERBOARD 16>
|
||||
<CONSTANT P-OAR 17>
|
||||
<CONSTANT P-CLIFF 18>
|
||||
<CONSTANT P-OSAKA 19>
|
||||
<CONSTANT P-FALCON 20>
|
||||
<CONSTANT P-ALVITO 21>
|
||||
<CONSTANT P-ISHIDO 22>
|
||||
<CONSTANT P-PROCESSION 23>
|
||||
<CONSTANT P-MAD-SCENE 24>
|
||||
<CONSTANT P-IN-DRAG 25>
|
||||
<CONSTANT P-QUAKE 26>
|
||||
<CONSTANT P-SWORDS 27>
|
||||
<CONSTANT P-SEPPUKU 28>
|
||||
<CONSTANT P-NINJA 29>
|
||||
<CONSTANT P-EXPLOSION 30>
|
||||
<CONSTANT P-CREST 31>
|
||||
<CONSTANT P-MARIKO 32>
|
||||
<CONSTANT P-BATH 33>
|
||||
<CONSTANT P-BEACH 34>
|
||||
<CONSTANT P-BURNED-ERASMUS 35>
|
||||
<CONSTANT P-VINCK 36>
|
||||
<CONSTANT P-WARRIOR 37>
|
||||
<CONSTANT P-MAZE-WALL 38>
|
||||
<CONSTANT P-MAZE-STREET 39>
|
||||
<CONSTANT P-MAZE-PARTY 40>
|
||||
<CONSTANT P-MAZE-CASTLE 41>
|
||||
<CONSTANT P-MAZE-DOCK 42>
|
||||
<CONSTANT P-MAZE-FISH 43>
|
||||
<CONSTANT P-MAZE-BACKGROUND 44>
|
||||
<CONSTANT P-MAZE-BOX 45>
|
||||
<CONSTANT P-IN-DRAG-CORNER 46>
|
||||
<CONSTANT P-EXPLOSION-CORNER 47>
|
||||
<CONSTANT P-WARRIOR-CORNER 48>
|
||||
<CONSTANT P-HINT-LOC 49>
|
||||
<CONSTANT P-HINT-BORDER 50>
|
|
@ -0,0 +1,663 @@
|
|||
"QVERBS for
|
||||
SHOGUN
|
||||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<FILE-FLAGS MDL-ZIL?>
|
||||
|
||||
<DEFAULTS-DEFINED
|
||||
PRINT-IS/ARE>
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
<OBJECT WHAT
|
||||
(LOC GLOBAL-OBJECTS)
|
||||
(DESC "what")
|
||||
(SYNONYM WHAT WHO ;WHOM)
|
||||
(FLAGS NOTHEBIT)
|
||||
(ACTION WHAT-F)>
|
||||
|
||||
<DEFINE WHAT-F ("AUX" OBJ TMP NOT? LOC?)
|
||||
<SET NOT? <ANDB ,PARSE-NOT <PARSE-FLAGS ,PARSE-RESULT>>>
|
||||
<SET LOC? <PARSE-LOC ,PARSE-RESULT>>
|
||||
<COND (<VERB? BE?>
|
||||
<RFALSE>)
|
||||
(<EQUAL? <SET OBJ <PARSE-QW ,PARSE-RESULT>>
|
||||
,W?WHO ,W?WHAT ,W?WHERE ,W?WHY ,W?WHEN ,W?HOW>
|
||||
<RFALSE>)
|
||||
(<NOT <EVERYWHERE-VERB?> ;<ABSTRACT-VERB?>>
|
||||
<TELL
|
||||
"That's precisely the sort of question you'll have to answer for
|
||||
yourself." CR>
|
||||
<RTRUE>)
|
||||
(<EQUAL? ,PRSI ,INTPP>
|
||||
<COND (<AND <SET OBJ <P-PP-OBJ>>
|
||||
<NOT .NOT?>>
|
||||
<SET TMP <OR <P-PP-PREP> <PP-PREP .LOC?>>>
|
||||
<COND (<EQUAL? .TMP ,W?BEHIND>
|
||||
<PERFORM ,V?LOOK-BEHIND .OBJ>
|
||||
<RTRUE>)
|
||||
(<EQUAL? .TMP ,W?DOWN>
|
||||
<PERFORM ,V?LOOK-DOWN .OBJ>
|
||||
<RTRUE>)
|
||||
(<EQUAL? .TMP ,W?IN ,W?ON ,W?THROUGH>
|
||||
<PERFORM ,V?LOOK-INSIDE .OBJ>
|
||||
<RTRUE>)
|
||||
(<EQUAL? .TMP ,W?UNDER>
|
||||
<PERFORM ,V?LOOK-UNDER .OBJ>
|
||||
<RTRUE>)>)>)
|
||||
;(<EQUAL? ,PRSI ,INTADJ>
|
||||
<SET ADJ? <PARSE-ADJ ,PARSE-RESULT>>
|
||||
<COND (<IS-PRSO-ADJ? .ADJ?>
|
||||
<COND (.NOT? <TELL "Wrong,">)
|
||||
(ELSE <TELL "Right,">)>
|
||||
<PRSO-IS <>>)
|
||||
(ELSE
|
||||
<COND (.NOT? <TELL "Right,">)
|
||||
(ELSE <TELL "Wrong,">)>
|
||||
<PRSO-IS T>)>
|
||||
<TELL " ">
|
||||
<PRINTB .ADJ?>
|
||||
<TELL "." CR>)
|
||||
;(ELSE
|
||||
<TELL "So you think">
|
||||
<PRSO-IS .NOT?>
|
||||
<COND (,PRSI <TELL " " A ,PRSI>)>
|
||||
<TELL "." CR>)>>
|
||||
|
||||
<DEFINE TELL-Q-WORD ("AUX" WD)
|
||||
<COND (<VERB? BE?>
|
||||
<TELL "if">)
|
||||
(<EQUAL? <SET WD <PARSE-QW ,PARSE-RESULT>>
|
||||
,W?WHO ,W?WHAT ,W?WHERE ,W?WHY ,W?WHEN ,W?HOW>
|
||||
<PRINTB .WD>)
|
||||
(T
|
||||
<TELL "whether">)>>
|
||||
|
||||
<DEFINE P-NEGATIVE? ()
|
||||
<ANDB ,PARSE-NOT <PARSE-FLAGS ,PARSE-RESULT>>>
|
||||
|
||||
<DEFINE TRY-QCONTEXT? ("AUX" W)
|
||||
<COND (<AND ,QCONTEXT
|
||||
<IN? ,QCONTEXT ,HERE>
|
||||
<NOT <EQUAL? ,QCONTEXT ,WINNER>>
|
||||
<OR <PAST-TENSE?>
|
||||
<AND <NOT <EQUAL? ,QCONTEXT ,PRSO>>
|
||||
<NOT <VERB? ASK-ABOUT>>
|
||||
<NOT <AND <VERB? TELL-ABOUT>
|
||||
<EQUAL? ,PRSO ,ME>>>>>>
|
||||
<SET W ,WINNER>
|
||||
<SETG WINNER ,QCONTEXT>
|
||||
<PERFORM ,PRSA ,PRSO ,PRSI>
|
||||
<SETG WINNER .W ;,PLAYER>
|
||||
<RTRUE>)>>
|
||||
|
||||
<DEFINE PRE-BE ()
|
||||
<COND (<TRY-QCONTEXT?>
|
||||
<RTRUE>)>>
|
||||
|
||||
<SYNTAX BE OBJECT (MOBY) = V-BE PRE-BE>
|
||||
<SYNTAX BE OBJECT (MOBY) OBJECT (MOBY) = V-BE PRE-BE>
|
||||
|
||||
<SYNTAX BE? OBJECT (MOBY) = V-BE?>
|
||||
<SYNTAX BE? OBJECT (MOBY) OBJECT (MOBY) = V-BE?>
|
||||
|
||||
<DEFINE V-BE ("AUX" TMP NOT? ADJ? LOC? OBJ PREP)
|
||||
<SET NOT? <ANDB ,PARSE-NOT <PARSE-FLAGS ,PARSE-RESULT>>>
|
||||
<SET ADJ? <PARSE-ADJ ,PARSE-RESULT>>
|
||||
<SET LOC? <PARSE-LOC ,PARSE-RESULT>>
|
||||
<COND (<OR <VERB? BE? WHO WHAT WHERE WHY WHEN HOW>
|
||||
<EQUAL? <SET TMP <PARSE-QW ,PARSE-RESULT>>
|
||||
,W?WHO ,W?WHAT ,W?WHERE ,W?WHY ,W?WHEN ,W?HOW>>
|
||||
<COND (<TRY-QCONTEXT?>
|
||||
<RTRUE>)>
|
||||
<COND (<EQUAL? ,PRSI ,INTADJ>
|
||||
<COND (<EQUAL? ,PRSO ,ME ,PLAYER>
|
||||
<COND (<VERB? BE?>
|
||||
<TELL "You">)
|
||||
(T
|
||||
<PRINT ,WHO-KNOWS-STRING>
|
||||
<TELL-Q-WORD>
|
||||
<TELL " you">)>
|
||||
<COND (<IS-PRSO-ADJ? .ADJ?>
|
||||
<TELL " are ">)
|
||||
(ELSE <TELL " aren't ">)>)
|
||||
(ELSE
|
||||
<COND (<VERB? BE?>
|
||||
<TELL-CTHE ,PRSO>)
|
||||
(T
|
||||
<PRINT ,WHO-KNOWS-STRING>
|
||||
<TELL-Q-WORD>
|
||||
<TELL " ">
|
||||
<TELL-THE ,PRSO>)>
|
||||
<PRINT-IS/ARE ,PRSO>
|
||||
<COND (<NOT <IS-PRSO-ADJ? .ADJ?>>
|
||||
<TELL "n't">)>
|
||||
<TELL " ">)>
|
||||
<PRINTB .ADJ?>
|
||||
<TELL "." CR>)
|
||||
(<EQUAL? ,PRSI ,INTPP>
|
||||
<COND (<AND <SET PREP <P-PP-PREP>>
|
||||
<SET OBJ <P-PP-OBJ>>>
|
||||
<COND (<VERB? BE?>
|
||||
<PRSO-IS <NOT <RIGHT-PREP? .PREP ,PRSO .OBJ>>
|
||||
T>
|
||||
<TELL " ">
|
||||
<PRINTB .PREP>
|
||||
<TELL " ">
|
||||
<TELL-THE .OBJ>
|
||||
<TELL "." CR>)
|
||||
(ELSE
|
||||
<PRINT ,WHO-KNOWS-STRING>
|
||||
<TELL-Q-WORD>
|
||||
<PRSO-IS .NOT?>
|
||||
<TELL " ">
|
||||
<PRINTB .PREP>
|
||||
<TELL " ">
|
||||
<TELL-THE .OBJ>
|
||||
<TELL "." CR>)>)
|
||||
(ELSE
|
||||
<PRINT ,WHO-KNOWS-STRING>
|
||||
<TELL-Q-WORD>
|
||||
<PRSO-IS .NOT?>
|
||||
<TELL " ">
|
||||
<PRINTB <PP-PREP .LOC?>>
|
||||
<TELL " ">
|
||||
<NP-PRINT <PP-NOUN .LOC?>>
|
||||
<TELL "." CR>)>)
|
||||
(<PARSE-SUBJ ,PARSE-RESULT>
|
||||
<WHO-KNOWS>)
|
||||
(<AND <NOT ,PRSI> <EQUAL? <PARSE-QW ,PARSE-RESULT> ,W?WHERE>>
|
||||
<COND (<NOT <EQUAL? ,PRSO <> ,ROOMS>>
|
||||
<SET LOC? <LOC ,PRSO>>)
|
||||
(T <SET LOC? <>>)>
|
||||
<COND (<NOT .LOC?>
|
||||
<TELL "That's an excellent question." CR>)
|
||||
(<IN? ,PRSO ,HERE>
|
||||
<PRSO-IS <> T>
|
||||
<TELL " here." CR>)
|
||||
(<EQUAL? .LOC? ,GENERIC-OBJECTS>
|
||||
<TELL "You don't know where ">
|
||||
<TELL-THE ,PRSO>
|
||||
<PRINT-IS/ARE ,PRSO>
|
||||
<TELL "." CR>)
|
||||
(<EQUAL? .LOC? ,GLOBAL-OBJECTS>
|
||||
<TELL "No doubt ">
|
||||
<TELL-THE ,PRSO>
|
||||
<PRINT-IS/ARE ,PRSO>
|
||||
<TELL " around here somewhere." CR>)
|
||||
(<AND <EQUAL? .LOC? ,LOCAL-GLOBALS>
|
||||
<GLOBAL-IN? ,PRSO ,HERE>>
|
||||
<TELL-CTHE ,PRSO>
|
||||
<PRINT-IS/ARE ,PRSO>
|
||||
<TELL " nearby." CR>)
|
||||
(<FSET? .LOC? ,PERSONBIT>
|
||||
<TELL-CTHE .LOC?>
|
||||
<TELL " has ">
|
||||
<TELL-THE ,PRSO>
|
||||
<TELL "." CR>)
|
||||
(<EQUAL? <META-LOC ,PRSO> ,HERE>
|
||||
<TELL-CTHE ,PRSO>
|
||||
<PRINT-IS/ARE ,PRSO>
|
||||
<TELL " in ">
|
||||
<TELL-THE .LOC?>
|
||||
<TELL "." CR>)
|
||||
(<IN? .LOC? ,ROOMS>
|
||||
<TELL-CTHE ,PRSO>
|
||||
<PRINT-IS/ARE ,PRSO>
|
||||
<TELL " probably ">
|
||||
<COND (<FSET? ,PRSO ,TOUCHBIT>
|
||||
<TELL
|
||||
"still in the place called \"" D .LOC? ".\"" CR>)
|
||||
(ELSE
|
||||
<COND (<NOT <FSET? ,PRSO ,PERSONBIT>>
|
||||
<TELL "lying ">)>
|
||||
<TELL "around somewhere." CR>)>)
|
||||
(ELSE
|
||||
<PRINT ,WHO-KNOWS-STRING>
|
||||
<TELL "where ">
|
||||
<TELL-THE ,PRSO>
|
||||
<PRINT-IS/ARE ,PRSO>
|
||||
<TELL "." CR>)>)
|
||||
(ELSE
|
||||
<PRINT ,WHO-KNOWS-STRING>
|
||||
<TELL-Q-WORD>
|
||||
<COND (<NOT <EQUAL? ,PRSO <> ,ROOMS>>
|
||||
<PRSO-IS .NOT?>
|
||||
<COND (,PRSI <TELL " " A ,PRSI>)>)>
|
||||
<TELL "." CR>)>)
|
||||
(ELSE
|
||||
<COND (<EQUAL? ,PRSI ,INTADJ>
|
||||
<COND (<IS-PRSO-ADJ? .ADJ?>
|
||||
<COND (.NOT? <TELL "Wrong,">)
|
||||
(ELSE <TELL "Right,">)>
|
||||
<PRSO-IS <>>)
|
||||
(ELSE
|
||||
<COND (.NOT? <TELL "Right,">)
|
||||
(ELSE <TELL "Wrong,">)>
|
||||
<PRSO-IS T>)>
|
||||
<TELL " ">
|
||||
<PRINTB .ADJ?>
|
||||
<TELL "." CR>)
|
||||
(<EQUAL? ,PRSI ,INTPP>
|
||||
<TELL "So, you say">
|
||||
<PRSO-IS .NOT?>
|
||||
<TELL " ">
|
||||
<COND (<SET TMP <P-PP-PREP>>
|
||||
<PRINTB .TMP>)
|
||||
(ELSE
|
||||
<PRINTB <PP-PREP .LOC?>>)>
|
||||
<TELL " ">
|
||||
<COND (<SET TMP <P-PP-OBJ>>
|
||||
<TELL-THE .TMP>)
|
||||
(ELSE <NP-PRINT <PP-NOUN .LOC?>>)>
|
||||
<TELL "." CR>)
|
||||
(<EQUAL? ,P-PRSA-WORD ,W?BE>
|
||||
<COND (<EQUAL? ,PRSO ,WINNER>
|
||||
<TELL-CTHE ,PRSO>
|
||||
<TELL " is already " "that" "." CR>)
|
||||
(T <TELL "That would take a bit of magic." CR>)>)
|
||||
(ELSE
|
||||
<TELL "So you think">
|
||||
<PRSO-IS .NOT?>
|
||||
<COND (,PRSI <TELL " " A ,PRSI>)>
|
||||
<TELL "." CR>)>)>>
|
||||
|
||||
<DEFINE RIGHT-PREP? (PREP OBJ CONT)
|
||||
<COND (<NOT <IN? .OBJ .CONT>> <RFALSE>)
|
||||
(<EQUAL? .PREP ,W?IN ,W?INSIDE>
|
||||
<COND (<SEE-INSIDE? .CONT>
|
||||
<RTRUE>)
|
||||
(ELSE <RFALSE>)>)
|
||||
(<AND <EQUAL? .PREP ,W?ON>
|
||||
<OR <FSET? .CONT ,SURFACEBIT>
|
||||
;<FSET? .CONT ,FURNITURE>>>
|
||||
<RTRUE>)>>
|
||||
|
||||
<DEFINE V-BE? ()
|
||||
<V-BE>>
|
||||
|
||||
<SYNTAX HOW OBJECT (MOBY) (FIND RLANDBIT) = V-HOW>
|
||||
<SYNTAX HOW OBJECT (MOBY) OBJECT (MOBY) = V-HOW>
|
||||
|
||||
<SYNTAX WHAT OBJECT (MOBY) (FIND RLANDBIT) = V-WHAT>
|
||||
<SYNTAX WHAT OBJECT (MOBY) OBJECT (MOBY) = V-WHAT>
|
||||
|
||||
<SYNTAX WHEN OBJECT (MOBY) (FIND RLANDBIT) = V-WHEN>
|
||||
<SYNTAX WHEN OBJECT (MOBY) OBJECT (MOBY) = V-WHEN>
|
||||
|
||||
<SYNTAX WHERE OBJECT (MOBY) (FIND RLANDBIT) = V-WHERE PRE-WHERE>
|
||||
<SYNTAX WHERE OBJECT (MOBY) OBJECT (MOBY) = V-WHERE PRE-WHERE>
|
||||
|
||||
<SYNTAX WHO OBJECT (MOBY) (FIND RLANDBIT) = V-WHO>
|
||||
<SYNTAX WHO OBJECT (MOBY) OBJECT (MOBY) = V-WHO>
|
||||
<SYNONYM WHO WHOM>
|
||||
|
||||
<SYNTAX WHY OBJECT (MOBY) (FIND RLANDBIT) = V-WHY>
|
||||
<SYNTAX WHY OBJECT (MOBY) OBJECT (MOBY) = V-WHY>
|
||||
|
||||
<SYNTAX WILL OBJECT (MOBY) ;(FIND RLANDBIT) = V-WILL?>
|
||||
<SYNTAX WOULD OBJECT (MOBY) ;(FIND RLANDBIT) = V-WOULD?>
|
||||
|
||||
<DEFINE V-WHO ()
|
||||
<COND (<PRSO? ,ROOMS>
|
||||
<MORE-SPECIFIC>)
|
||||
(<NOT ,PRSI>
|
||||
<TELL
|
||||
"You don't know anything special about " THE ,PRSO "." CR>)
|
||||
(ELSE <V-BE>)>>
|
||||
|
||||
<DEFINE V-WHAT ()
|
||||
<V-WHO>>
|
||||
|
||||
<DEFINE PRE-WHERE ()
|
||||
<COND (<AND <ZERO? ,PRSS> <ZERO? ,PRSQ>>
|
||||
<PERFORM ,V?FIND ,PRSO ,PRSI>
|
||||
<RTRUE>)>>
|
||||
|
||||
<DEFINE V-WHERE ()
|
||||
<COND (<PRSO? ,ROOMS>
|
||||
<MORE-SPECIFIC>)
|
||||
(ELSE <V-BE>)>>
|
||||
|
||||
<DEFINE V-WHEN ()
|
||||
<COND (<PRSO? ,ROOMS>
|
||||
<MORE-SPECIFIC>)
|
||||
(ELSE <V-BE>)>>
|
||||
|
||||
<DEFINE V-WHY ()
|
||||
<COND (<PRSO? ,ROOMS>
|
||||
<MORE-SPECIFIC>)
|
||||
(ELSE <V-BE>)>>
|
||||
|
||||
<DEFINE V-HOW ()
|
||||
<COND (<PRSO? ,ROOMS>
|
||||
<MORE-SPECIFIC>)
|
||||
(ELSE <V-BE>)>>
|
||||
|
||||
<CONSTANT ADJ-TABLE
|
||||
<LTABLE <VOC "OUTSIDE" <> ;ADJ>
|
||||
OUTSIDE?
|
||||
;<VOC "INSIDE" ADJ>
|
||||
;INSIDE?
|
||||
<VOC "OPEN" ADJ>
|
||||
OPEN?
|
||||
<VOC "CLOSED" ADJ>
|
||||
Q-CLOSED?
|
||||
<VOC "LOCKED" ADJ>
|
||||
LOCKED?
|
||||
<VOC "UNLOCKED" ADJ>
|
||||
UNLOCKED?
|
||||
<VOC "DEAD" ADJ>
|
||||
DEAD?
|
||||
<VOC "ALIVE" ADJ>
|
||||
ALIVE?
|
||||
<VOC "QUIET" ADJ>
|
||||
QUIET?>>
|
||||
|
||||
<DEFINE QUIET? (OBJ)
|
||||
<RTRUE>>
|
||||
|
||||
<DEFINE OUTSIDE? (OBJ)
|
||||
<FSET? ,HERE ,OUTSIDE>>
|
||||
|
||||
;<DEFINE INSIDE? (OBJ)
|
||||
<NOT <FSET? ,HERE ,OUTSIDE>>>
|
||||
|
||||
<DEFINE OPEN? (OBJ)
|
||||
<AND <OR <FSET? .OBJ ,OPENABLE>
|
||||
<FSET? .OBJ ,DOORBIT>>
|
||||
<FSET? .OBJ ,OPENBIT>>>
|
||||
|
||||
<DEFINE Q-CLOSED? (OBJ)
|
||||
<AND <OR <FSET? .OBJ ,OPENABLE>
|
||||
<FSET? .OBJ ,DOORBIT>>
|
||||
<NOT <FSET? .OBJ ,OPENBIT>>>>
|
||||
|
||||
<DEFINE LOCKED? (OBJ)
|
||||
<AND <FSET? .OBJ ,DOORBIT>
|
||||
<FSET? .OBJ ,LOCKED>>>
|
||||
|
||||
<DEFINE UNLOCKED? (OBJ)
|
||||
<AND <FSET? .OBJ ,DOORBIT>
|
||||
<NOT <FSET? .OBJ ,LOCKED>>>>
|
||||
|
||||
<DEFINE DEAD? (OBJ)
|
||||
<OR <NOT <FSET? .OBJ ,PERSONBIT>>
|
||||
<FSET? .OBJ ,DEAD>>>
|
||||
|
||||
<DEFINE ALIVE? (OBJ)
|
||||
<AND <FSET? .OBJ ,PERSONBIT>
|
||||
<NOT <FSET? .OBJ ,DEAD>>>>
|
||||
|
||||
<DEFINE PRSO-IS (NOT? "OPT" (CAP? <>))
|
||||
<COND (<EQUAL? ,PRSO ,ME ,PLAYER>
|
||||
<COND (.CAP? <TELL "You">)
|
||||
(ELSE <TELL " you">)>
|
||||
<TELL " are">
|
||||
<COND (.NOT? <TELL "n't">)>)
|
||||
(ELSE
|
||||
<COND (.CAP? <TELL-CTHE ,PRSO>)
|
||||
(T <TELL " "> <TELL-THE ,PRSO>)>
|
||||
<PRINT-IS/ARE ,PRSO>
|
||||
<COND (.NOT? <TELL "n't">)>)>>
|
||||
|
||||
<DEFAULT-DEFINITION PRINT-IS/ARE
|
||||
<DEFINE PRINT-IS/ARE (OBJ)
|
||||
<COND (<OR <FSET? .OBJ ,PLURAL>
|
||||
<EQUAL? .OBJ ,BLACKTHORNE ,ME ,YOU>>
|
||||
<TELL " are">)
|
||||
(ELSE <TELL " is">)>>>
|
||||
|
||||
<DEFINE IS-PRSO-ADJ? (ADJ "AUX" TMP)
|
||||
<COND (<AND <SET TMP <GETPT ,PRSO ,P?ADJECTIVE>>
|
||||
<INTBL? .ADJ .TMP </ <PTSIZE .TMP> 2>>>
|
||||
<RTRUE>)
|
||||
(<AND <SET TMP <INTBL? .ADJ ,ADJ-TABLE <GET ,ADJ-TABLE 0>>>
|
||||
<APPLY <GET .TMP 1> ,PRSO>>
|
||||
<RTRUE>)>>
|
||||
|
||||
<DEFINE PP? (P N "AUX" (TMP <PARSE-LOC ,PARSE-RESULT>))
|
||||
<COND (<NOT .TMP> <RFALSE>)
|
||||
(<NOT <AND .P <EQUAL? .P <P-PP-PREP>>>>
|
||||
<RFALSE>)
|
||||
(<NOT <AND .N <EQUAL? .N <P-PP-OBJ>>>>
|
||||
<RFALSE>)
|
||||
(ELSE <RTRUE>)>>
|
||||
|
||||
"does a bear shit in the woods?"
|
||||
|
||||
"RLANDBIT would allow single-word sentence!"
|
||||
<SYNTAX CAN OBJECT (MOBY) ;(FIND RLANDBIT) = V-CAN?>
|
||||
<SYNTAX COULD OBJECT (MOBY) ;(FIND RLANDBIT) = V-COULD?>
|
||||
<SYNTAX DO OBJECT (MOBY) ;(FIND RLANDBIT) = V-DO?>
|
||||
<SYNTAX MAY OBJECT (MOBY) ;(FIND RLANDBIT) = V-MAY?>
|
||||
<SYNTAX MIGHT OBJECT (MOBY) ;(FIND RLANDBIT) = V-MIGHT?>
|
||||
<SYNTAX MUST OBJECT (MOBY) ;(FIND RLANDBIT) = V-MUST?>
|
||||
<SYNTAX SHOULD OBJECT (MOBY) ;(FIND RLANDBIT) = V-SHOULD?>
|
||||
|
||||
<DEFINE V-STATEMENT () <V-DO?>>
|
||||
|
||||
<CONSTANT WHO-KNOWS-STRING "It's not easy to tell "
|
||||
;"The \"narrator\" can't tell you ">
|
||||
|
||||
<DEFINE WHO-KNOWS ("OPT" (WD <PARSE-QUERY ,PARSE-RESULT>) "AUX" OBJ SUBJ)
|
||||
<COND (<AND <EQUAL? <PARSE-QW ,PARSE-RESULT> ,W?WHO ,W?WHAT>
|
||||
<SET OBJ <VERB-ONE <WORD-VERB-STUFF ,P-PRSA-WORD>>>
|
||||
<GET-SYNTAX .OBJ 1 0 T>
|
||||
<SET OBJ <DETERMINE-OBJ <> 1 T>>
|
||||
<SET OBJ <NOUN-PHRASE-OBJ1 .OBJ>>>
|
||||
<TELL "Perhaps">)
|
||||
(T
|
||||
<SET OBJ <>>
|
||||
<PRINT ,WHO-KNOWS-STRING>
|
||||
<TELL-Q-WORD>)>
|
||||
<SET SUBJ <PARSE-SUBJ ,PARSE-RESULT>>
|
||||
<COND (<T? .SUBJ>
|
||||
<SET SUBJ <NOUN-PHRASE-OBJ1 .SUBJ>>)
|
||||
(<NOT <EQUAL? ,PRSO <> ,ROOMS>>
|
||||
<SET SUBJ ,PRSO>)
|
||||
(T
|
||||
<TELL "." CR>
|
||||
<RTRUE>)>
|
||||
<TELL " ">
|
||||
<COND (<EQUAL? .SUBJ ,ME ,PLAYER>
|
||||
<TELL "you">)
|
||||
(ELSE
|
||||
<TELL-THE .SUBJ>)>
|
||||
<COND (<T? .WD>
|
||||
<COND (<OR <NOT <EQUAL? .WD ,W?DO ,W?DOES ,W?DID>>
|
||||
<NOT <PARSE-SUBJ ,PARSE-RESULT>>>
|
||||
<TELL " ">
|
||||
<PRINTB .WD>)>)>
|
||||
<COND (<T? <PARSE-SUBJ ,PARSE-RESULT>>
|
||||
<TELL " ">
|
||||
;<PRINT-VOCAB-WORD ,P-PRSA-WORD>
|
||||
<COND (<T? .WD>
|
||||
<COND (<EQUAL? .WD ,W?DID>
|
||||
;<BAND ,PAST-TENSE <WORD-FLAGS .WD>>
|
||||
;"Look for past-tense form in vocabulary:"
|
||||
<PROG ((V <ZREST ,VOCAB <+ 1 <GETB ,VOCAB 0>>>)
|
||||
(M <BOR *200* <GETB .V 0>>) N)
|
||||
<COND (<EQUAL? ,P-PRSA-WORD ,W?GET>
|
||||
<TELL "got">)
|
||||
(<AND <SET N <INTBL? ,P-PRSA-WORD <ZREST .V 9 ;3>
|
||||
<ZGET <ZREST .V 1> 0> .M>>
|
||||
<BTST <ZGET .N 1> ,PAST-TENSE>>
|
||||
<PRINT-VOCAB-WORD .N>)
|
||||
(T
|
||||
<PRINT-VOCAB-WORD ,P-PRSA-WORD>
|
||||
<TELL "ed">)>>)
|
||||
(T
|
||||
<PRINT-VOCAB-WORD ,P-PRSA-WORD>
|
||||
<COND (<AND <EQUAL? .WD ,W?DO ,W?DOES>
|
||||
<NOT <EQUAL? .SUBJ ,ME ,PLAYER>>
|
||||
<NOT <FSET? .SUBJ ,PLURAL>>>
|
||||
<TELL "s">)>)>
|
||||
<COND (<T? .OBJ>
|
||||
<TELL " ">
|
||||
<COND (<EQUAL? .OBJ .SUBJ>
|
||||
<COND (<NOT <FSET? .OBJ ,PERSONBIT>>
|
||||
<TELL "it">)
|
||||
(<FSET? .OBJ ,FEMALE>
|
||||
<TELL "her">)
|
||||
(T
|
||||
<TELL "him">)>
|
||||
<TELL "self">)
|
||||
(T
|
||||
<TELL-THE .OBJ>)>)
|
||||
(T
|
||||
<ECHO-NOUNS>)>)
|
||||
(T <PRINT-VOCAB-WORD ,P-PRSA-WORD>)>)>
|
||||
<TELL "." CR>>
|
||||
|
||||
<DEFINE ECHO-NOUNS ("AUX" WD)
|
||||
<COND (<NOT <EQUAL? ,PRSO 0 ,WHAT ,NOT-HERE-OBJECT>>
|
||||
<COND (<SET WD <PARSE-PARTICLE1 ,PARSE-RESULT>>
|
||||
<TELL " ">
|
||||
<PRINTB .WD>)>
|
||||
<TELL " ">
|
||||
<TELL-THE ,PRSO>)>
|
||||
<COND (<NOT <EQUAL? ,PRSI 0 ,WHAT ,NOT-HERE-OBJECT>>
|
||||
<COND (<SET WD <PARSE-PARTICLE2 ,PARSE-RESULT>>
|
||||
<TELL " ">
|
||||
<PRINTB .WD>)>
|
||||
<TELL " ">
|
||||
<TELL-THE ,PRSI>)>>
|
||||
|
||||
<DEFINE V-CAN? () <WHO-KNOWS ,W?CAN>>
|
||||
|
||||
<DEFINE V-MAY? () <WHO-KNOWS ,W?MAY>>
|
||||
|
||||
<DEFINE V-DO? ()
|
||||
<COND (<TRY-QCONTEXT?>
|
||||
<RTRUE>)
|
||||
(<NOT <BTST <PARSE-FLAGS ,PARSE-RESULT> ,PARSE-QUESTION>>
|
||||
<COND (<NOT ,PRSS>
|
||||
<MORE-SPECIFIC>
|
||||
<RTRUE>)
|
||||
(ELSE
|
||||
<TELL "So you think">
|
||||
<COND (<EQUAL? ,PRSS ,ME ,PLAYER>
|
||||
<TELL " you ">
|
||||
<COND (<ANDB ,PARSE-NOT <PARSE-FLAGS ,PARSE-RESULT>>
|
||||
<TELL "don't ">)>)
|
||||
(T
|
||||
<COND ;(.CAP? <TELL-CTHE ,PRSS>)
|
||||
(T <TELL " "> <TELL-THE ,PRSS> <TELL " ">)>
|
||||
<COND (<ANDB ,PARSE-NOT <PARSE-FLAGS ,PARSE-RESULT>>
|
||||
<TELL "doesn't ">)>)>
|
||||
<PRINT-VOCAB-WORD ,P-PRSA-WORD>
|
||||
<ECHO-NOUNS>
|
||||
<TELL "." CR>)>)
|
||||
(T
|
||||
<WHO-KNOWS ;<COND ;(<BAND ,PAST-TENSE <PARSE-FLAGS ,PARSE-RESULT>>
|
||||
,W?DID)
|
||||
(T ,W?DOES)>>)>>
|
||||
|
||||
<DEFINE V-COULD? () <WHO-KNOWS ,W?COULD>>
|
||||
|
||||
<DEFINE V-WOULD? () <WHO-KNOWS ,W?WOULD>>
|
||||
|
||||
<DEFINE V-SHOULD? () <WHO-KNOWS ,W?SHOULD>>
|
||||
|
||||
<DEFINE V-MIGHT? () <WHO-KNOWS ,W?MIGHT>>
|
||||
|
||||
<DEFINE V-WILL? () <WHO-KNOWS ,W?WILL>>
|
||||
|
||||
<DEFINE V-MUST? () <WHO-KNOWS ,W?MUST>>
|
||||
|
||||
<DEFINE QUESTION-VERB? ("AUX" TMP) ;"add more later..."
|
||||
<OR <EQUAL? <SET TMP <PARSE-QW ,PARSE-RESULT>>
|
||||
,W?WHO ,W?WHAT ,W?WHERE ,W?WHY ,W?WHEN ,W?HOW>
|
||||
<VERB? BE? CAN? COULD? DO? MAY? MIGHT? MUST? SHOULD? WILL? WOULD?>>>
|
||||
|
||||
"PERFORM uses two additional GLOBALs, 'q-verb' and subject, each of
|
||||
which can be false. Examples:
|
||||
|
||||
'IS THE POPE CATHOLIC'
|
||||
becomes
|
||||
<SETG PRSQ T>
|
||||
<PERFORM ,V?BE ,POPE ,INTADJ ;T>
|
||||
|
||||
'DOES THE GOVERNMENT TAKE MONEY FROM ME'
|
||||
becomes
|
||||
<SETG PRSQ ,V?DO>
|
||||
<SETG PRSS ,GOVERNMENT>
|
||||
<PERFORM ,V?TAKE ,MONEY ,ME>
|
||||
|
||||
'WHY DOES THE GOVERNMENT TAKE MONEY FROM ME'
|
||||
becomes
|
||||
<SETG PRSQ ,V?WHY>
|
||||
<SETG PRSS ,GOVERNMENT>
|
||||
<PERFORM ,V?TAKE ,MONEY ,ME>
|
||||
|
||||
When PERFORM notices the presence of a q-verb, it calls action routines
|
||||
in this order:
|
||||
WINNER
|
||||
SUBJECT
|
||||
; M-BEG
|
||||
Q-PREACTION (from the following table)
|
||||
; OBJECT #2
|
||||
; OBJECT #1
|
||||
Q-ACTION (ditto) or V-STATEMENT
|
||||
|
||||
PERFORM also handles statements, for example:
|
||||
|
||||
'MY NAME IS ARTHUR DENT'
|
||||
becomes
|
||||
<PERFORM ,V?IS ,NAME ,ARTHUR>
|
||||
"
|
||||
|
||||
<CONSTANT QACTIONS <PLTABLE
|
||||
V-BE V-BE? 0
|
||||
V-DISEMBARK V-DISEMBARK? 0
|
||||
V-DROP V-DROP? PRE-DROP?
|
||||
V-TAKE V-TAKE? PRE-TAKE?
|
||||
;"and so on">>
|
||||
|
||||
<DEFINE PRE-DROP? ()
|
||||
<COND (<EQUAL? ,PRSO <LOC ,PRSS>>
|
||||
;<SETG PRSQ ,V?DISEMBARK>
|
||||
<PERFORM ,V?DISEMBARK ;,PRSA ,PRSO ,PRSI ;,V?DISEMBARK ;,PRSS>
|
||||
<RTRUE>)>>
|
||||
|
||||
<DEFINE V-DROP? ()
|
||||
<COND (<EQUAL? ,PRSO ,ROOMS>
|
||||
<PRINT "You aren't ">
|
||||
<TELL "hanging from anything." CR>)>>
|
||||
|
||||
<DEFINE V-DISEMBARK? ("AUX" AV)
|
||||
<SET AV <LOC ,PRSS>>
|
||||
<COND (<EQUAL? ,PRSO <> ,ROOMS>
|
||||
<COND (<AND .AV <NOT <IN? .AV ,ROOMS>>>
|
||||
<PERFORM ,PRSA .AV ,PRSI ;,PRSQ ;,PRSS>
|
||||
<RTRUE>)
|
||||
(ELSE
|
||||
<PRINT "You aren't ">
|
||||
<TELL "in anything." CR>)>)
|
||||
(<AND .AV <NOT <IN? .AV ,ROOMS>>>
|
||||
<COND (<AND <NOT <EQUAL? .AV ,PRSO>>
|
||||
<NOT <HELD? .AV ,PRSO>>>
|
||||
<PRINT "You already are">
|
||||
<COND (<FSET? .AV ,SURFACEBIT> <TELL " on ">)
|
||||
(ELSE <TELL " in ">)>
|
||||
<TELL-THE .AV>
|
||||
<TELL "!" CR>
|
||||
<RTRUE>)>)
|
||||
(<LOC ,PRSO>
|
||||
;<SETG PRSQ ,V?TAKE>
|
||||
<PERFORM ,V?TAKE ;,PRSA ,PRSO ,PRSI ;,V?TAKE ;,PRSS>
|
||||
<RTRUE>)
|
||||
(ELSE
|
||||
<PRINT "It's not in anything.">
|
||||
<CRLF>)>>
|
||||
|
||||
<DEFINE PRE-TAKE? ()
|
||||
<COND (<NOT ,PRSI>
|
||||
<PRE-TAKE>)>>
|
||||
|
||||
<DEFINE V-TAKE? ()
|
||||
<COND (<ZERO? <PARSE-QW ,PARSE-RESULT>>
|
||||
<TELL "Seems reasonable." CR>)>>
|
||||
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,277 @@
|
|||
"RECORD for
|
||||
SHOGUN
|
||||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<BEGIN-SEGMENT RECORD>
|
||||
|
||||
<SYNTAX \#RANDOM OBJECT = V-$RANDOM>
|
||||
<SYNTAX \#COMMAND = V-$COMMAND>
|
||||
<SYNTAX \#RECORD = V-$RECORD>
|
||||
<SYNTAX \#UNRECORD = V-$UNRECORD>
|
||||
|
||||
<ROUTINE V-$COMMAND ()
|
||||
<DIRIN ,D-COMMAND-FILE>
|
||||
<RTRUE>>
|
||||
|
||||
<ROUTINE V-$RANDOM ()
|
||||
<COND (<NOT <PRSO? ,INTNUM>>
|
||||
<TELL "Illegal call to #RANDOM." CR>)
|
||||
(T
|
||||
<RANDOM <- 0 ,P-NUMBER>>
|
||||
<RTRUE>)>>
|
||||
|
||||
<ROUTINE V-$RECORD ()
|
||||
<DIROUT ,D-RECORD-ON> ;"all READS and INPUTS get sent to command file"
|
||||
<RTRUE>>
|
||||
|
||||
<ROUTINE V-$UNRECORD ()
|
||||
<DIROUT ,D-RECORD-OFF>
|
||||
<RTRUE>>
|
||||
|
||||
|
||||
"debugging help"
|
||||
|
||||
;<SYNTAX $P OBJECT = V-$P>
|
||||
|
||||
;<ROUTINE V-$P ()
|
||||
<COND (<PICINF ,P-NUMBER ,YX-TBL>
|
||||
<TELL N <GET ,YX-TBL 0> "x" N <GET ,YX-TBL 1> CR>)
|
||||
(ELSE <TELL "No such picture." CR>)>>
|
||||
|
||||
;<SYNTAX $D OBJECT = V-$D>
|
||||
|
||||
;<ROUTINE V-$D ()
|
||||
<COND (<PICINF ,P-NUMBER ,YX-TBL>
|
||||
<RESET-MARGIN>
|
||||
<CLEAR ,S-TEXT>
|
||||
<CENTER-PIC ,P-NUMBER>
|
||||
<INPUT 1>)
|
||||
(ELSE <TELL "No such picture." CR>)>>
|
||||
|
||||
;<SYNTAX $W OBJECT = V-$W>
|
||||
|
||||
;<ROUTINE V-$W ("AUX" WIN ATTRS TMP)
|
||||
<SET WIN ,P-NUMBER>
|
||||
<TELL "#" N .WIN
|
||||
" at " N <WINGET .WIN ,WTOP>
|
||||
"," N <WINGET .WIN ,WLEFT>
|
||||
"; size " N <WINGET .WIN ,WHIGH>
|
||||
"x" N <WINGET .WIN ,WWIDE>>
|
||||
<COND (<OR <NOT <ZERO? <WINGET .WIN ,WLMARGIN>>>
|
||||
<NOT <ZERO? <WINGET .WIN ,WRMARGIN>>>>
|
||||
<TELL " (" N <WINGET .WIN ,WLMARGIN>
|
||||
"<->" N <WINGET .WIN ,WRMARGIN> ")">)>
|
||||
<COND (<NOT <ZERO? <SET TMP <WINGET .WIN ,WHLIGHT>>>>
|
||||
<TELL "; HL=" N .TMP>)>
|
||||
<COND (<NOT <EQUAL? <SET TMP <WINGET .WIN ,WCOLOR>> 257>>
|
||||
<TELL "; f,b=" N <LOW-BYTE .TMP> "," N <HIGH-BYTE .TMP>>)>
|
||||
<COND (<NOT <EQUAL? <SET TMP <WINGET .WIN ,WFONT>> 0>>
|
||||
<TELL "; F=" N .TMP>)>
|
||||
<SET TMP <WINGET .WIN ,WFSIZE>>
|
||||
<COND (<OR <EQUAL? .WIN ,S-FULL>
|
||||
<NOT <EQUAL? <HIGH-BYTE .TMP> ,FONT-Y>>
|
||||
<NOT <EQUAL? <LOW-BYTE .TMP> ,FONT-X>>>
|
||||
<TELL "; FS=" N <HIGH-BYTE .TMP> "x" N <HIGH-BYTE .TMP>>)>
|
||||
<TELL "; cursor " N <WINGET .WIN ,WYPOS>
|
||||
"," N <WINGET .WIN ,WXPOS>
|
||||
"; line " N <WINGET .WIN ,WLCNT>
|
||||
"; ">
|
||||
<COND (<AND <NOT <ZERO? <SET TMP <WINGET .WIN ,WCRCNT>>>>
|
||||
<NOT <ZERO? <WINGET .WIN ,WCRFUNC>>>>
|
||||
<TELL " CR=" N .TMP>)>
|
||||
<SET ATTRS <WINGET .WIN ,WATTRS>>
|
||||
<COND (<ZERO? <BAND .ATTRS ,A-WRAP>> <TELL "-">)
|
||||
(ELSE <TELL "+">)>
|
||||
<TELL "W,">
|
||||
<COND (<ZERO? <BAND .ATTRS ,A-SCROLL>> <TELL "-">)
|
||||
(ELSE <TELL "+">)>
|
||||
<TELL "S,">
|
||||
<COND (<ZERO? <BAND .ATTRS ,A-SCRIPT>> <TELL "-">)
|
||||
(ELSE <TELL "+">)>
|
||||
<TELL "P,">
|
||||
<COND (<ZERO? <BAND .ATTRS ,A-BUFFER>> <TELL "-">)
|
||||
(ELSE <TELL "+">)>
|
||||
<TELL "B">
|
||||
<CRLF>>
|
||||
|
||||
;<DEFMAC TELLBIT ('BIT)
|
||||
<FORM COND (<FORM FSET? ',PRSO <CHTYPE .BIT GVAL>>
|
||||
<FORM TELL <STRING " " <SPNAME .BIT>>>)>>
|
||||
|
||||
;<SYNTAX $X OBJECT (MOBY) = V-$X>
|
||||
|
||||
;<ROUTINE V-$X ("AUX" TMP)
|
||||
<COND (<PRSO? INTNUM>
|
||||
<TELL N ,P-NUMBER "/ " N <GETB ,P-NUMBER 0>>)
|
||||
(ELSE <TELL "??">)>
|
||||
<CRLF>>
|
||||
|
||||
;<SYNTAX $G OBJECT (MOBY) = V-$G PRE-$G>
|
||||
|
||||
;<ROUTINE PRE-$G ("AUX" TMP)
|
||||
<COND (<AND <PRSO? INTNUM>
|
||||
<G? ,P-NUMBER 15>
|
||||
<L? ,P-NUMBER 256>>
|
||||
<TELL "Global " N ,P-NUMBER "/ " N <VALUE ,P-NUMBER>>)
|
||||
(ELSE <TELL "??">)>
|
||||
<CRLF>>
|
||||
|
||||
;<ROUTINE V-$G () <RTRUE>>
|
||||
|
||||
;<SYNTAX $I OBJECT (MOBY) = V-$I PRE-$I>
|
||||
|
||||
;<ROUTINE PRE-$I ("AUX" TMP)
|
||||
<COND (<PRSO? INTNUM> <SETG PRSO ,P-NUMBER>)>
|
||||
<TELL-OBJ ,PRSO>
|
||||
<TELL "; in ">
|
||||
<COND (<SET TMP <LOC ,PRSO>>
|
||||
<TELL-OBJ .TMP>)
|
||||
(ELSE <TELL "limbo">)>
|
||||
<COND (<FIRST? ,PRSO>
|
||||
<TELL "; contains">
|
||||
<REPEAT ((F <FIRST? ,PRSO>))
|
||||
<TELL " ">
|
||||
<TELL-OBJ .F>
|
||||
<COND (<NOT <SET F <NEXT? .F>>>
|
||||
<RETURN>)>>)>
|
||||
<TELL "; flags">
|
||||
<TELLBIT AN>
|
||||
<TELLBIT BODY-PART>
|
||||
<TELLBIT CANT-HOLD>
|
||||
<TELLBIT CONTBIT>
|
||||
<TELLBIT DEAD>
|
||||
<TELLBIT DONT-ALL>
|
||||
<TELLBIT DONT-IT>
|
||||
<TELLBIT DOORBIT>
|
||||
<TELLBIT DUTCHBIT>
|
||||
<TELLBIT ENGLISHBIT>
|
||||
<TELLBIT FEMALE>
|
||||
<TELLBIT FOODBIT>
|
||||
<TELLBIT FURNITURE>
|
||||
<TELLBIT INVISIBLE>
|
||||
<TELLBIT JAPANESEBIT>
|
||||
<TELLBIT LIGHTBIT>
|
||||
<TELLBIT LOCKABLE>
|
||||
<TELLBIT LOCKED>
|
||||
<TELLBIT NDESCBIT>
|
||||
<TELLBIT NOABIT>
|
||||
<TELLBIT NOTHEBIT>
|
||||
<TELLBIT ONBIT>
|
||||
<TELLBIT OPENABLE>
|
||||
<TELLBIT OPENBIT>
|
||||
<TELLBIT OUTSIDE>
|
||||
<TELLBIT PERSON>
|
||||
<TELLBIT PLURAL>
|
||||
<TELLBIT PORTUGUESEBIT>
|
||||
<TELLBIT READBIT>
|
||||
<TELLBIT RLANDBIT>
|
||||
<TELLBIT RMUNGBIT>
|
||||
<TELLBIT SCOREBIT>
|
||||
<TELLBIT SEARCHBIT>
|
||||
<TELLBIT SITTING>
|
||||
<TELLBIT SPANISHBIT>
|
||||
<TELLBIT SURFACEBIT>
|
||||
<TELLBIT TAKEBIT>
|
||||
<TELLBIT THE>
|
||||
<TELLBIT TOOLBIT>
|
||||
<TELLBIT TOUCHBIT>
|
||||
<TELLBIT TRANSBIT>
|
||||
<TELLBIT TRYTAKEBIT>
|
||||
<TELLBIT VEHBIT>
|
||||
<TELLBIT WEAPONBIT>
|
||||
<TELLBIT WEARABLE>
|
||||
<TELLBIT WEARBIT>
|
||||
<TELL ";">
|
||||
<REPEAT ((P 0))
|
||||
<COND (<ZERO? <SET P <NEXTP ,PRSO .P>>> <RETURN>)
|
||||
(ELSE
|
||||
<TELL " ">
|
||||
<TELLPROP .P>
|
||||
<TELL "(" N <PTSIZE <GETPT ,PRSO .P>> ")">)>>
|
||||
<CRLF>>
|
||||
|
||||
;<ROUTINE V-$I () <RTRUE>>
|
||||
|
||||
;<ROUTINE TELL-OBJ (TMP)
|
||||
<TELL N .TMP ":\"">
|
||||
<COND (<EQUAL? .TMP ,ROOMS>
|
||||
<TELL "ROOMS">)
|
||||
(<EQUAL? .TMP ,GLOBAL-OBJECTS>
|
||||
<TELL "GLOBAL-OBJECTS">)
|
||||
(<EQUAL? .TMP ,LOCAL-GLOBALS>
|
||||
<TELL "LOCAL-GLOBALS">)
|
||||
(<EQUAL? .TMP ,GENERIC-OBJECTS>
|
||||
<TELL "GENERIC-OBJECTS">)
|
||||
(ELSE <TELL D .TMP>)>
|
||||
<TELL "\"">>
|
||||
|
||||
;<ROUTINE TELLPROP (P)
|
||||
<COND (<EQUAL? .P ,P?NORTH> <TELL "NORTH">) ;63
|
||||
(<EQUAL? .P ,P?NE> <TELL "NE">) ;62
|
||||
(<EQUAL? .P ,P?EAST> <TELL "EAST">) ;61
|
||||
(<EQUAL? .P ,P?SE> <TELL "SE">) ;60
|
||||
(<EQUAL? .P ,P?SOUTH> <TELL "SOUTH">) ;59
|
||||
(<EQUAL? .P ,P?SW> <TELL "SW">) ;58
|
||||
(<EQUAL? .P ,P?WEST> <TELL "WEST">) ;57
|
||||
(<EQUAL? .P ,P?NW> <TELL "NW">) ;56
|
||||
(<EQUAL? .P ,P?UP> <TELL "UP">) ;55
|
||||
(<EQUAL? .P ,P?DOWN> <TELL "DOWN">) ;54
|
||||
(<EQUAL? .P ,P?IN> <TELL "IN">) ;53
|
||||
(<EQUAL? .P ,P?OUT> <TELL "OUT">) ;52
|
||||
(<EQUAL? .P ,P?FORE> <TELL "FORE">) ;51
|
||||
(<EQUAL? .P ,P?AFT> <TELL "AFT">) ;50
|
||||
(<EQUAL? .P ,P?PORT> <TELL "PORT">) ;49
|
||||
(<EQUAL? .P ,P?STARBOARD> <TELL "STARBOARD">) ;48
|
||||
(<EQUAL? .P ,P?ACTION> <TELL "ACTION">) ;47
|
||||
(<EQUAL? .P ,P?ADJACENT> <TELL "ADJACENT">) ;46
|
||||
(<EQUAL? .P ,P?SYNONYM> <TELL "SYNONYM">) ;45
|
||||
(<EQUAL? .P ,P?CONTFCN> <TELL "CONTFCN">) ;44
|
||||
(<EQUAL? .P ,P?THINGS> <TELL "THINGS">) ;43
|
||||
(<EQUAL? .P ,P?DESCFCN> <TELL "DESCFCN">) ;42
|
||||
(<EQUAL? .P ,P?GLOBAL> <TELL "GLOBAL">) ;41
|
||||
(<EQUAL? .P ,P?FDESC> <TELL "FDESC">) ;40
|
||||
(<EQUAL? .P ,P?LDESC> <TELL "LDESC">) ;39
|
||||
(<EQUAL? .P ,P?COUNT> <TELL "COUNT">) ;38
|
||||
(<EQUAL? .P ,P?SIZE> <TELL "SIZE">) ;37
|
||||
(<EQUAL? .P ,P?TEXT> <TELL "TEXT">) ;36
|
||||
(<EQUAL? .P ,P?VALUE> <TELL "VALUE">) ;35
|
||||
(<EQUAL? .P ,P?CAPACITY> <TELL "CAPACITY">) ;34
|
||||
(<EQUAL? .P ,P?ADJECTIVE> <TELL "ADJECTIVE">) ;33
|
||||
(<EQUAL? .P ,P?OWNER> <TELL "OWNER">) ;32
|
||||
(<EQUAL? .P ,P?GENERIC> <TELL "GENERIC">) ;31
|
||||
(<EQUAL? .P ,P?HEALTH> <TELL "HEALTH">) ;30
|
||||
(<EQUAL? .P ,P?PICTURE> <TELL "PICTURE">) ;29
|
||||
(<EQUAL? .P ,P?SCENE> <TELL "SCENE">) ;28
|
||||
(<EQUAL? .P ,P?SDESC> <TELL "SDESC">) ;27
|
||||
(<EQUAL? .P ,P?SCORE> <TELL "SCORE">) ;26
|
||||
(<EQUAL? .P ,P?MOUSE> <TELL "MOUSE">) ;25
|
||||
(<EQUAL? .P ,P?AFTER> <TELL "AFTER">) ;24
|
||||
(ELSE <TELL N .P>)>>
|
||||
|
||||
;<SYNTAX $M = V-$M>
|
||||
|
||||
;<ROUTINE V-$M ("AUX" S (X 0) (Y 0))
|
||||
<REPEAT ((N <GET ,SCENE-LOCS 0>) (CNT 0))
|
||||
<COND (<G? <SET CNT <+ .CNT 1>> .N> <RETURN>)
|
||||
(ELSE
|
||||
<SET S <GETPT <GET ,SCENE-LOCS .CNT> ,P?SCORE>>
|
||||
<PRINT <GET ,SCENE-NAMES .CNT>>
|
||||
<SET X <+ .X <GETB .S 0>>>
|
||||
<SET Y <+ .Y <GETB .S 1>>>
|
||||
<TELL ": "
|
||||
N <* ,SCORE-FACTOR <GETB .S 0>>
|
||||
"/"
|
||||
N <* ,SCORE-FACTOR <GETB .S 1>>
|
||||
CR>)>>
|
||||
<TELL "Total: " N <* ,SCORE-FACTOR .X>
|
||||
"/"
|
||||
N <* ,SCORE-FACTOR .Y>
|
||||
CR CR
|
||||
"Missing">
|
||||
<REPEAT ((CNT 0))
|
||||
<COND (<G? <SET CNT <+ .CNT 1>> ,LAST-OBJECT> <RETURN>)
|
||||
(<FSET? .CNT ,SCOREBIT>
|
||||
<TELL ", " D .CNT>)>>
|
||||
<CRLF>>
|
||||
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,156 @@
|
|||
"STATUS for
|
||||
SHOGUN
|
||||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
<CONSTANT S-STATUS 1>
|
||||
<CONSTANT STATUS-LINES 2>
|
||||
|
||||
<ROUTINE SETUP-TEXT-AND-STATUS ("OPT" (P ,P-BORDER-LOC)
|
||||
"AUX" X (HIGH <LOWCORE VWRD>)
|
||||
(WIDE <LOWCORE HWRD>) (SLEFT 1)
|
||||
(SHIGH <* ,STATUS-LINES ,FONT-Y>))
|
||||
<COND (<NOT <APPLE?>> ;"only apples have no borders"
|
||||
<PICINF .P ,YX-TBL>
|
||||
<SET X <GET ,YX-TBL 1>>
|
||||
<SET SLEFT <+ .X .SLEFT>>
|
||||
<COND (<NOT <EQUAL? .P ,P-BORDER-LOC>>
|
||||
<SET SHIGH <GET ,YX-TBL 0>>)>
|
||||
<SET WIDE <- .WIDE <* .X 2>>>)>
|
||||
<WINDEF ,S-STATUS 1 .SLEFT .SHIGH .WIDE>
|
||||
<WINDEF ,S-TEXT
|
||||
<+ 1 .SHIGH> .SLEFT
|
||||
<- .HIGH .SHIGH> .WIDE>>
|
||||
|
||||
<ROUTINE INIT-STATUS-LINE ("OPT" (NO-STS? <>))
|
||||
<RESET-MARGIN>
|
||||
<CLEAR ,S-TEXT>
|
||||
<COND (<NOT .NO-STS?> <SETUP-TEXT-AND-STATUS>)>
|
||||
<SCREEN ,S-STATUS>
|
||||
<DIROUT ,D-TABLE-ON ,DIROUT-TABLE>
|
||||
<PRINTI "0">
|
||||
<DIROUT ,D-TABLE-OFF>
|
||||
<SETG SCORE-WIDTH <LOWCORE TWID>>
|
||||
<COLOR ,BG-COLOR ,FG-COLOR>
|
||||
<CLEAR ,S-STATUS>
|
||||
<UPDATE-STATUS-LINE T>>
|
||||
|
||||
<GLOBAL SCORE-WIDTH 0>
|
||||
|
||||
<GLOBAL SHERE <>>
|
||||
|
||||
<ROUTINE UPDATE-STATUS-LINE ("OPT" (REF? <>) "AUX" WIDE TMP)
|
||||
<COND (<FLAG-ON? ,F-REFRESH>
|
||||
<DISPLAY-BORDER>)>
|
||||
<COND (<OR <FLAG-ON? ,F-REFRESH>
|
||||
<NOT <EQUAL? ,HERE ,SHERE>>>
|
||||
<SET REF? T>)>
|
||||
<COND (<OR .REF?
|
||||
<NOT <EQUAL? ,SCORE ,OSCORE>>
|
||||
<NOT <EQUAL? ,MOVES ,OMOVES>>>
|
||||
<SCREEN ,S-STATUS>
|
||||
<COLOR ,BG-COLOR ,FG-COLOR>
|
||||
<SET WIDE </ <WINGET ,S-STATUS ,WWIDE> ,FONT-X>>
|
||||
<COND (.REF?
|
||||
<CURSET 1 1>
|
||||
<ERASE 1>
|
||||
<COND (,SCENE
|
||||
<CURSET 1 1>
|
||||
<PRINT <GET ,SCENE-NAMES ,SCENE>>
|
||||
<TELL ":">)>
|
||||
<COND (<NOT <EQUAL? ,MACHINE
|
||||
,DEBUGGING-ZIP ,MACINTOSH>>
|
||||
<CURSET 1
|
||||
<- </ <WINGET ,S-STATUS ,WWIDE> 2>
|
||||
<* ,SCORE-WIDTH 3>>>
|
||||
<TELL "SHOGUN">)>
|
||||
<LOWCORE FLAGS
|
||||
<BAND <LOWCORE FLAGS> <BCOM ,F-REFRESH>>>)>
|
||||
<COND (<OR .REF?
|
||||
<AND <SCENE? ,S-ERASMUS>
|
||||
<HERE? ,BRIDGE-OF-ERASMUS>>
|
||||
<AND <SCENE? ,S-VOYAGE>
|
||||
<HERE? ,GALLEY>>>
|
||||
<COND (.REF?
|
||||
<CCURSET 2 1>
|
||||
<ERASE 1>)>
|
||||
<COND (,HERE
|
||||
<CCURSET 2 1>
|
||||
<SETG SHERE ,HERE>
|
||||
<TELL 'HERE>
|
||||
<SET TMP <LOC ,WINNER>>
|
||||
<COND (<FSET? .TMP ,VEHBIT>
|
||||
<SETG SHERE .TMP>
|
||||
<COND (<FSET? .TMP ,SURFACEBIT>
|
||||
<TELL ", on ">)
|
||||
(ELSE
|
||||
<TELL ", in ">)>
|
||||
<TELL THE .TMP>)>
|
||||
<COND (<HERE? ,BRIDGE-OF-ERASMUS ,GALLEY>
|
||||
<ERASE-ALL-BUT 12>
|
||||
<COND (<OR <AND <HERE? ,BRIDGE-OF-ERASMUS>
|
||||
<FSET? ,WHEEL ,ONBIT>>
|
||||
<AND <HERE? ,GALLEY>
|
||||
<FSET? ,GALLEY-WHEEL ,ONBIT>>>
|
||||
<TELL "; course ">
|
||||
<TELL-DIRECTION ,SHIP-DIRECTION>
|
||||
<TELL "; wheel ">
|
||||
<TELL-DIRECTION ,SHIP-COURSE>)>)>)>)>
|
||||
<COND (<OR .REF? <NOT <EQUAL? ,SCORE ,OSCORE>>>
|
||||
<COND (.REF?
|
||||
<CCURSET 1 <- .WIDE 10>>
|
||||
<TELL "Score:">
|
||||
<ERASE 1>)>
|
||||
<SET TMP <* ,SCORE ,SCORE-FACTOR>>
|
||||
<RJNUM .TMP 1>
|
||||
<SETG OSCORE ,SCORE>)>
|
||||
<COND (<OR .REF? <NOT <EQUAL? ,MOVES ,OMOVES>>>
|
||||
<COND (.REF?
|
||||
<CCURSET 2 <- .WIDE 10>>
|
||||
<TELL "Moves:">
|
||||
<ERASE 1>)>
|
||||
<RJNUM ,MOVES 2>
|
||||
<SETG OMOVES ,MOVES>)>
|
||||
<SCREEN ,S-TEXT>)>>
|
||||
|
||||
<ROUTINE ERASE-ALL-BUT (N)
|
||||
<ERASE <- <WINGET ,S-STATUS ,WWIDE>
|
||||
<WINGET ,S-STATUS ,WXPOS>
|
||||
<* .N ,FONT-X>>>>
|
||||
|
||||
<ROUTINE INTERLUDE-STATUS-LINE ()
|
||||
<DISPLAY-BORDER ,P-BORDER2>
|
||||
<SETG SHERE <>>
|
||||
<SCREEN ,S-STATUS>
|
||||
<COLOR ,BG-COLOR ,FG-COLOR>
|
||||
<CURSET 1 1>
|
||||
<ERASE-ALL-BUT 12>
|
||||
<CURSET 1 1>
|
||||
<PRINT <GET ,SCENE-NAMES ,SCENE>>
|
||||
<TELL ":">
|
||||
<COND (<NOT <EQUAL? ,MACHINE ,DEBUGGING-ZIP ,MACINTOSH>>
|
||||
<CURSET 1
|
||||
<- </ <WINGET ,S-STATUS ,WWIDE> 2>
|
||||
<* ,SCORE-WIDTH 3>>>
|
||||
<TELL "SHOGUN">)>
|
||||
<LOWCORE FLAGS <BAND <LOWCORE FLAGS> <BCOM ,F-REFRESH>>>
|
||||
<CCURSET 2 1>
|
||||
<ERASE-ALL-BUT 12>
|
||||
<CCURSET 2 1>
|
||||
<TELL "Interlude">
|
||||
<SCREEN ,S-TEXT>>
|
||||
|
||||
<ROUTINE RJNUM (NUM LINE "AUX" (WIDE <WINGET ,S-STATUS ,WWIDE>) (N <>))
|
||||
<SET LINE <+ 1 <* <- .LINE 1> ,FONT-Y>>>
|
||||
<COND (<L? .NUM 10> <SET N 1>)
|
||||
(<L? .NUM 100> <SET N 2>)
|
||||
(<L? .NUM 1000> <SET N 3>)
|
||||
(<L? .NUM 10000> <SET N 4>)>
|
||||
<CURSET .LINE <- .WIDE <* ,SCORE-WIDTH 4>>>
|
||||
<ERASE 1>
|
||||
<CURSET .LINE <- .WIDE <* ,SCORE-WIDTH .N>>>
|
||||
<COND (.N <TELL N .NUM>)
|
||||
(ELSE <TELL "****">)>>
|
||||
|
||||
<END-SEGMENT>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue