278 lines
7.7 KiB
Plaintext
278 lines
7.7 KiB
Plaintext
"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 ;"RECORD">
|