5373 lines
119 KiB
Plaintext
5373 lines
119 KiB
Plaintext
"VERBS for BEYOND ZORK:
|
|
Copyright (C)1987 Infocom, Inc. All Rights Reserved."
|
|
|
|
<ROUTINE GOTO (WHERE "AUX" (CR 0) WHO X L OLIT)
|
|
<SET OLIT ,LIT?>
|
|
<SET WHO ,WINNER>
|
|
<SET L <LOC ,WINNER>>
|
|
<COND (<AND <EQUAL? .L ,SADDLE>
|
|
<IN? .L ,DACT>>
|
|
<SET WHO ,DACT>)
|
|
(<AND <NOT <EQUAL? .L ,HERE>>
|
|
<IS? .L ,VEHICLE>>
|
|
<COND (<EQUAL? <PERFORM ,V?EXIT .L> ,M-FATAL>
|
|
<SETG P-WALK-DIR <>>
|
|
<RTRUE>)>
|
|
<SETG P-WALK-DIR <>>
|
|
<SETG OLD-HERE <>>
|
|
<INC CR>)>
|
|
<SET X <APPLY <GETP ,HERE ,P?ACTION> ,M-EXIT>>
|
|
<COND (<EQUAL? .X ,M-FATAL>
|
|
<SETG P-WALK-DIR <>>
|
|
<RTRUE>)
|
|
(<T? .X>
|
|
<COND (<T? .CR>
|
|
<TELL ,TAB>)>
|
|
<INC CR>)>
|
|
; <COND (<EQUAL? .WHERE ,APLANE ,DEATH>)
|
|
(<T? ,EXIT-LINE>
|
|
<COND (<T? .CR>
|
|
<TELL ,TAB>)>
|
|
<TELL ,EXIT-LINE CR>
|
|
<INC CR>)>
|
|
; <SETG EXIT-LINE <>>
|
|
<COND (<AND <EQUAL? .WHO ,WINNER>
|
|
<IN? ,DACT ,HERE>
|
|
<IS? ,DACT ,LIVING>
|
|
<NOT <IS? ,DACT ,MUNGED>>
|
|
<NOT <IS? ,DACT ,SLEEPING>>>
|
|
<REMOVE ,DACT>
|
|
<COND (<NOT <EQUAL? .WHERE ,APLANE ,DEATH>>
|
|
<COND (<T? .CR>
|
|
<TELL ,TAB>)>
|
|
<INC CR>
|
|
<TELL
|
|
"A shadow passes over " 'HEAD " as you leave." CR>)>)>
|
|
<COND (<AND <T? .CR>
|
|
<T? ,VERBOSITY>>
|
|
<CRLF>)>
|
|
<SETG HERE .WHERE>
|
|
<MOVE .WHO .WHERE>
|
|
<SETG LIT? <IS-LIT?>>
|
|
<COND (<AND <ZERO? .OLIT>
|
|
<ZERO? ,LIT?>>
|
|
<COND (<T? .CR>
|
|
<TELL ,TAB>)>
|
|
<TELL ,CYOU <PICK-NEXT ,DARK-WALKS>>
|
|
|
|
<COND (<GRUE-ROOM?>)
|
|
(<PROB 50>
|
|
<TELL
|
|
", straight into the jaws of a deadly presence lurking in the darkness">
|
|
<JIGS-UP>
|
|
<RTRUE>)>
|
|
<PRINT ,PERIOD>
|
|
<COND (<T? ,VERBOSITY>
|
|
<CRLF>)>)>
|
|
|
|
<APPLY <GETP ,HERE ,P?ACTION> ,M-ENTERING>
|
|
<COND (<NOT <EQUAL? ,HERE .WHERE>>
|
|
<RTRUE>)>
|
|
<COND (<ZERO? ,LIT?>
|
|
<MARK-DIR>)>
|
|
<SETG LAST-PSEUDO-LOC <>>
|
|
<MAKE ,PSEUDO-OBJECT ,NOARTICLE>
|
|
<UNMAKE ,PSEUDO-OBJECT ,VOWEL>
|
|
<UNMAKE ,PSEUDO-OBJECT ,TRYTAKE>
|
|
<SETG LAST-MONSTER <>>
|
|
<SETG LAST-MONSTER-DIR <>>
|
|
<SETG P-IT-OBJECT ,NOT-HERE-OBJECT>
|
|
<SETG P-THEM-OBJECT ,NOT-HERE-OBJECT>
|
|
<SETG P-HIM-OBJECT ,NOT-HERE-OBJECT>
|
|
<SETG P-HER-OBJECT ,NOT-HERE-OBJECT>
|
|
<V-LOOK <>>
|
|
<APPLY <GETP ,HERE ,P?ACTION> ,M-ENTERED>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE MARK-DIR ("OPT" (DIR ,P-WALK-DIR) "AUX" TBL WRD TYPE LEN)
|
|
<COND (<L? .DIR ,P?DOWN>
|
|
<RFALSE>)>
|
|
<SET TBL <GETP ,HERE <GETB ,XPDIR-LIST <- 0 <- .DIR ,P?NORTH>>>>>
|
|
<COND (<ZERO? .TBL>
|
|
<RFALSE>)>
|
|
<SET WRD <GET .TBL ,XTYPE>>
|
|
<COND (<BTST .WRD ,MARKBIT>
|
|
<RTRUE>)>
|
|
<SET TYPE <MSB .WRD>>
|
|
<SET LEN <BAND .WRD 127>>
|
|
<COND (<OR <EQUAL? .TYPE ,CONNECT ,SCONNECT ,X-EXIT>
|
|
<AND <EQUAL? .TYPE ,FCONNECT>
|
|
<T? .LEN>>
|
|
<AND <EQUAL? .TYPE ,DCONNECT>
|
|
<IS? <GET .TBL ,XDATA> ,OPENED>>>
|
|
<PUT .TBL ,XTYPE <+ .WRD ,MARKBIT>>
|
|
<RTRUE>)>
|
|
<RFALSE>>
|
|
|
|
<ROUTINE DO-WALK (DIR1 "OPT" (DIR2 <>) (DIR3 <>) "AUX" X)
|
|
<SETG P-WALK-DIR .DIR1>
|
|
<SET X <PERFORM ,V?WALK .DIR1>>
|
|
<COND (<EQUAL? .X ,M-FATAL>
|
|
<RFATAL>)
|
|
(<T? .DIR2>
|
|
<CRLF>
|
|
<SETG P-WALK-DIR .DIR2>
|
|
<SET X <PERFORM ,V?WALK .DIR2>>
|
|
<COND (<EQUAL? .X ,M-FATAL>
|
|
<RFATAL>)
|
|
(<T? .DIR3>
|
|
<CRLF>
|
|
<SETG P-WALK-DIR .DIR3>
|
|
<SET X <PERFORM ,V?WALK .DIR3>>)>)>
|
|
<RETURN .X>>
|
|
|
|
<ROUTINE V-WALK ("AUX" TBL TYPE DATA)
|
|
<COND (<ZERO? ,P-WALK-DIR>
|
|
<COND (<T? ,PRSO>
|
|
<PRINT "[Presumably, you mean ">
|
|
<TELL "WALK TO " THEO>
|
|
<PRINTC %<ASCII !\.>>
|
|
<PRINT ,BRACKET>
|
|
<PERFORM ,V?WALK-TO ,PRSO>
|
|
<RTRUE>)>
|
|
<V-WALK-AROUND>
|
|
<RTRUE>)
|
|
(<AND <IN? ,PLAYER ,SADDLE>
|
|
<IN? ,SADDLE ,DACT>>
|
|
<RETURN <NEXT-SKY>>)
|
|
(<HERE? APLANE>
|
|
<RETURN <NEXT-APLANE>>)>
|
|
<SET TBL <GETP ,HERE ,PRSO>>
|
|
<COND (<ZERO? .TBL>
|
|
<NO-EXIT-THAT-WAY>
|
|
<RFATAL>)>
|
|
<SET TYPE <MSB <GET .TBL ,XTYPE>>>
|
|
|
|
<COND (<EQUAL? .TYPE ,NO-EXIT ,SHADOW-EXIT>
|
|
<NO-EXIT-THAT-WAY>
|
|
<RFATAL>)>
|
|
|
|
<COND (<AND <NOT <EQUAL? ,LAST-MONSTER <> ,DORN ,MAMA>>
|
|
<IN? ,LAST-MONSTER ,HERE>
|
|
<IN? ,WINNER ,HERE>
|
|
<IS? ,LAST-MONSTER ,LIVING>
|
|
<NOT <IS? ,LAST-MONSTER ,SLEEPING>>
|
|
<EQUAL? ,LAST-MONSTER-DIR ,P-WALK-DIR>
|
|
<T? ,LIT?>>
|
|
<TELL CTHE ,LAST-MONSTER " block">
|
|
<COND (<OR <ZERO? ,LIT?>
|
|
<NOT <IS? ,LAST-MONSTER ,PLURAL>>>
|
|
<TELL "s">)>
|
|
<TELL " your path!" CR>
|
|
<RTRUE>)>
|
|
|
|
<SET DATA <GET .TBL ,XROOM>>
|
|
<COND (<EQUAL? .TYPE ,CONNECT ,X-EXIT>
|
|
<GOTO .DATA>
|
|
<RTRUE>)
|
|
(<EQUAL? .TYPE ,SORRY-EXIT>
|
|
<TELL .DATA CR>
|
|
<RFATAL>)
|
|
; (<EQUAL? .TYPE ,FSORRY-EXIT>
|
|
<SET TYPE <GET .TBL ,XDATA>>
|
|
<COND (<ZERO? .TYPE>
|
|
<SET DATA <APPLY .DATA>>
|
|
<RFATAL>)>
|
|
<SET DATA <APPLY .DATA .TYPE>>
|
|
<RFATAL>)
|
|
(<EQUAL? .TYPE ,SCONNECT>
|
|
<TELL <GET .TBL ,XDATA> CR>
|
|
<COND (<T? ,VERBOSITY>
|
|
<CRLF>)>
|
|
<GOTO .DATA>
|
|
<RTRUE>)
|
|
(<EQUAL? .TYPE ,FCONNECT>
|
|
<SET DATA <APPLY .DATA>>
|
|
<COND (<T? .DATA>
|
|
<GOTO .DATA>
|
|
<RTRUE>)>
|
|
<RFATAL>)
|
|
(<EQUAL? .TYPE ,DCONNECT>
|
|
<SET TYPE <GET .TBL ,XDATA>>
|
|
<COND (<IS? .TYPE ,OPENED>
|
|
<GOTO .DATA>
|
|
<RTRUE>)>
|
|
<ITS-CLOSED .TYPE>
|
|
<RFATAL>)>
|
|
; <SAY-ERROR "V-WALK">
|
|
<RFATAL>>
|
|
|
|
<ROUTINE NO-EXIT-THAT-WAY ("AUX" STR)
|
|
<SET STR <GETP ,HERE ,P?EXIT-STR>>
|
|
<COND (<EQUAL? ,P-WALK-DIR <> ,P?UP ,P?DOWN>)
|
|
(<EQUAL? ,P-WALK-DIR ,P?IN ,P?OUT>)
|
|
(<T? .STR>
|
|
<TELL .STR CR>
|
|
<RTRUE>)>
|
|
<TELL "There's no exit that way." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE NEXT-OVER ("AUX" (CNT 0) DIR BITS TBL XTBL TYPE DATA)
|
|
<SET XTBL <GET ,FLY-TABLES ,ABOVE>>
|
|
<SET BITS <GETB .XTBL 0>>
|
|
<SET DIR ,I-NORTH>
|
|
<REPEAT ()
|
|
<SET TBL <GETP ,HERE <GETB ,PDIR-LIST .DIR>>>
|
|
<SET DATA 0>
|
|
<COND (<BTST .BITS <GETB ,DBIT-LIST .DIR>>
|
|
<SET TYPE %<+ ,CONNECT 9 ,MARKBIT>>
|
|
<INC CNT>
|
|
<SET DATA <GETB .XTBL .CNT>>
|
|
<COND (<AND <HERE? IN-SKY>
|
|
<EQUAL? .DATA ,OPLAIN>>
|
|
<SET TYPE %<+ ,FCONNECT 9 ,MARKBIT>>)
|
|
(<AND <HERE? APLANE>
|
|
<EQUAL? .DATA ,OCAVES>>
|
|
<SET TYPE ,NO-EXIT>
|
|
<SET DATA 0>)>)
|
|
(<HERE? IN-SKY>
|
|
<SET TYPE %<+ ,FCONNECT 9 ,MARKBIT>>)
|
|
(T
|
|
<SET TYPE ,NO-EXIT>)>
|
|
<PUT .TBL ,XTYPE .TYPE>
|
|
<PUT .TBL ,XDATA .DATA>
|
|
<COND (<IGRTR? DIR ,I-NW>
|
|
<RFALSE>)>>>
|
|
|
|
<ROUTINE NEXT-SKY ("AUX" DIR IDIR D1 D2 D3 TBL DATA X)
|
|
<COND (<OR <T? ,DACT-SLEEP>
|
|
<IS? ,DACT ,SLEEPING>
|
|
<IS? ,DACT ,MUNGED>
|
|
<NOT <IS? ,DACT ,LIVING>>>
|
|
<TELL CTHE ,DACT " is in no condition to move around." CR>
|
|
<RFATAL>)>
|
|
<SET DIR ,P-WALK-DIR>
|
|
<SETG P-WALK-DIR <>>
|
|
<COND (<EQUAL? .DIR ,P?UP>
|
|
<COND (<HERE? IN-SKY>
|
|
<TELL CTHE ,DACT
|
|
" puffs and strains, but cannot lift you any higher." CR>
|
|
<RFATAL>)>
|
|
<SET X <GETP ,HERE ,P?FNUM>>
|
|
<COND (<ZERO? .X>
|
|
<TELL ,CANT "fly here." CR>
|
|
<RFATAL>)>
|
|
<TELL CTHE ,DACT>
|
|
<COND (<AND <HERE? IN-GARDEN>
|
|
<T? ,PTIMER>>
|
|
<TELL " cocks his head, hesitating." CR>
|
|
<RTRUE>)>
|
|
<TELL " spreads his leathery wings and ">
|
|
<COND (<AND <IN? ,PARASOL ,PLAYER>
|
|
<IS? ,PARASOL ,OPENED>>
|
|
<TELL "tries to take off. But your open " 'PARASOL
|
|
" seems to be dragging him down." CR>
|
|
<RTRUE>)>
|
|
<SETG ABOVE .X>
|
|
<PUTP ,IN-SKY ,P?FNUM ,ABOVE>
|
|
<TELL "rises into the sky." CR>
|
|
<COND (<T? ,VERBOSITY>
|
|
<CRLF>)>
|
|
<GOTO ,IN-SKY>
|
|
<CHECK-BREEZE>
|
|
<RTRUE>)
|
|
(<EQUAL? .DIR ,P?DOWN>
|
|
<COND (<NOT <HERE? IN-SKY>>
|
|
<TELL CTHE ,DACT " is already on " THE ,GROUND
|
|
,PERIOD>
|
|
<RFATAL>)>
|
|
<SET X <DOWN-TO?>>
|
|
<COND (<ZERO? .X>
|
|
<COND (<EQUAL? ,ABOVE ,OTHRIFF>
|
|
<TELL CTHE ,DACT
|
|
" tries his best to land, but " THE ,GROUND
|
|
" below is completely choked with " 'XTREES ,PERIOD>)>
|
|
<RFATAL>)>
|
|
<TELL CTHE ,DACT " glides earthward." CR>
|
|
<COND (<T? ,VERBOSITY>
|
|
<CRLF>)>
|
|
<GOTO .X>
|
|
<RTRUE>)
|
|
(<EQUAL? .DIR <> ,P?IN ,P?OUT>
|
|
<PUZZLED-DACT>
|
|
<RFATAL>)
|
|
(<NOT <HERE? IN-SKY>>
|
|
<SETG P-WALK-DIR <>>
|
|
<TELL "It's hard enough for a " 'DACT
|
|
" to walk, even when there's not an adventurer riding his back." CR>
|
|
<RFATAL>)>
|
|
|
|
<SET TBL <GETP ,HERE .DIR>>
|
|
<SET DATA <GET .TBL ,XDATA>>
|
|
<COND (<EQUAL? <GET .TBL ,XTYPE> %<+ ,FCONNECT 9 ,MARKBIT>>
|
|
<TELL "The sky is filled with impenetrable ">
|
|
<COND (<EQUAL? .DATA ,OPLAIN>
|
|
<TELL "funnel ">)>
|
|
<TELL "clouds in that " 'INTDIR ,PERIOD>
|
|
<RFATAL>)>
|
|
|
|
; "D1-D3 are IDIRs favored by the wind."
|
|
|
|
<SET D1 <+ ,WINDIR 4>>
|
|
<COND (<G? .D1 ,I-NW>
|
|
<SET D1 <- .D1 8>>)>
|
|
<SET D2 <+ .D1 1>>
|
|
<COND (<G? .D2 ,I-NW>
|
|
<SET D2 ,I-NORTH>)>
|
|
<SET D3 <- .D1 1>>
|
|
<COND (<L? .D3 ,I-NORTH>
|
|
<SET D3 ,I-NW>)>
|
|
<SET IDIR <- 0 <- .DIR ,P?NORTH>>>
|
|
<COND (<EQUAL? .IDIR .D1 .D2 .D3>
|
|
<UNMAKE ,BREEZE ,SEEN>
|
|
<TELL CTHE ,DACT>
|
|
<TELL " banks smoothly to the "
|
|
B <GET ,DIR-NAMES .IDIR> ,PERIOD>
|
|
<FLYOVER .DATA>
|
|
<RTRUE>)>
|
|
|
|
; "Check for crosswinds."
|
|
|
|
<MAKE ,BREEZE ,SEEN>
|
|
<SET D1 <- ,WINDIR 2>>
|
|
<COND (<L? .D1 ,I-NORTH>
|
|
<SET D1 <+ .D1 8>>)>
|
|
<COND (<EQUAL? .IDIR .D1>
|
|
<SET D2 <- ,WINDIR 3>>
|
|
<COND (<L? .D2 ,I-NORTH>
|
|
<SET D2 <+ .D2 8>>)>
|
|
<RETURN <DO-CROSSWIND .IDIR .D2>>)>
|
|
|
|
<SET D1 <+ ,WINDIR 2>>
|
|
<COND (<G? .D1 ,I-NW>
|
|
<SET D1 <- .D1 8>>)>
|
|
<COND (<EQUAL? .IDIR .D1>
|
|
<SET D2 <+ ,WINDIR 3>>
|
|
<COND (<G? .D2 ,I-NW>
|
|
<SET D2 <- .D2 8>>)>
|
|
<RETURN <DO-CROSSWIND .IDIR .D2>>)>
|
|
|
|
<TELL CTHE ,DACT
|
|
" does his best to fly into the wind, but fails." CR>
|
|
<RFATAL>>
|
|
|
|
<ROUTINE DO-CROSSWIND (IDIR D2 "AUX" TBL DATA)
|
|
<SET TBL <GETP ,IN-SKY <GETB ,PDIR-LIST .D2>>>
|
|
<SET DATA <GET .TBL ,XDATA>>
|
|
<COND (<OR <EQUAL? .DATA 0 ,OPLAIN ,OCAVES>
|
|
<EQUAL? <GET .TBL ,XTYPE> %<+ ,FCONNECT 9 ,MARKBIT>>
|
|
<PROB 50>>
|
|
<TELL
|
|
"A strong crosswind prevents " THE ,DACT " from flying that way." CR>
|
|
<RFATAL>)>
|
|
<TELL CTHE ,DACT>
|
|
<TELL " banks to the " B <GET ,DIR-NAMES .IDIR>
|
|
", but a strong crosswind blows him off course." CR>
|
|
<FLYOVER .DATA>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE FLYOVER (DATA)
|
|
<SETG ABOVE .DATA>
|
|
<PUTP ,IN-SKY ,P?FNUM ,ABOVE>
|
|
<NEXT-OVER>
|
|
<RELOOK T>
|
|
<CHECK-BREEZE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE CHECK-BREEZE ()
|
|
<COND (<OR <AND <EQUAL? ,ABOVE ,OTHRIFF>
|
|
<EQUAL? ,WINDIR ,I-EAST ,I-SE ,I-SOUTH>>
|
|
<AND <EQUAL? ,ABOVE ,OXROADS>
|
|
<EQUAL? ,WINDIR ,I-NORTH ,I-NE ,I-EAST>>>
|
|
<SETG WINDIR <NEXT-WINDIR?>>
|
|
<MAKE ,BREEZE ,SEEN>
|
|
<TELL ,TAB <PICK-NEXT ,WIND-ALERTS> ,PERIOD>)>
|
|
<RFALSE>>
|
|
|
|
<ROUTINE NEXT-APLANE ("AUX" DIR TBL DATA NEW X)
|
|
<SET DIR ,P-WALK-DIR>
|
|
<SETG P-WALK-DIR <>>
|
|
<SET X <LOC ,PLAYER>>
|
|
<COND (<OR <EQUAL? .DIR ,P?UP ,P?DOWN>
|
|
<EQUAL? .DIR ,P?IN ,P?OUT>>
|
|
<TELL "Such " 'INTDIR "s have no meaning here." CR>
|
|
<RFATAL>)
|
|
(<EQUAL? .X ,APLANE>)
|
|
(<IS? .X ,VEHICLE>
|
|
<COND (<EQUAL? <PERFORM ,V?EXIT .X> ,M-FATAL>
|
|
<RFATAL>)>
|
|
<TELL ,TAB>)>
|
|
<SET TBL <GETP ,HERE .DIR>>
|
|
<SET DATA <GET .TBL ,XTYPE>>
|
|
<COND (<EQUAL? .DATA ,NO-EXIT>
|
|
<TELL "The local geometry does not extend in that "
|
|
'INTDIR ,PERIOD>
|
|
<RFATAL>)
|
|
(<EQUAL? ,ABOVE ,OPLAIN>
|
|
<COND (<T? ,IMPSAY>
|
|
<PERMISSION>
|
|
<RFATAL>)>
|
|
<EXIT-IMPS>)>
|
|
<SET NEW <GET .TBL ,XDATA>>
|
|
<COND (<EQUAL? .NEW ,OPLAIN>
|
|
<COND (<IS? ,SHAPE ,LIVING>
|
|
<COND (<NOT <IN? ,SHAPE ,APLANE>>
|
|
<WINDOW ,SHOWING-ROOM>
|
|
<MOVE ,SHAPE ,APLANE>
|
|
<SETG LAST-MONSTER ,SHAPE>
|
|
<SETG LAST-MONSTER-DIR <>>
|
|
<SETG P-IT-OBJECT ,SHAPE>
|
|
<TELL
|
|
"The space before you flexes in on itself, twists sideways and reopens into "
|
|
A ,SHAPE ", stretched across your path like the skin of a drum." CR>
|
|
<RFATAL>)>
|
|
<TELL CTHE ,SHAPE
|
|
" stretches itself tighter across your path." CR>
|
|
<RFATAL>)
|
|
(<ZERO? ,IMPSAY>
|
|
<KERBLAM>
|
|
<TELL "A bolt of " B ,W?LIGHTNING
|
|
" blocks your path." CR>
|
|
<RFATAL>)>)>
|
|
<COND (<EQUAL? ,ABOVE ,OACCARDI ,OCITY ,OMIZNIA>
|
|
<REMOVE ,CURTAIN>)>
|
|
<COND (<IN? ,SHAPE ,APLANE>
|
|
<REMOVE ,SHAPE>
|
|
<SETG LAST-MONSTER <>>
|
|
<SETG P-IT-OBJECT ,NOT-HERE-OBJECT>
|
|
<TELL CTHE ,SHAPE " disincorporates as you retreat." CR>
|
|
<COND (<T? ,VERBOSITY>
|
|
<CRLF>)>)>
|
|
<SETG ABOVE .NEW>
|
|
<GET-APLANE-THINGS>
|
|
<NEXT-OVER>
|
|
<V-LOOK>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PERMISSION ()
|
|
<TELL
|
|
"\"We didn't say you could leave yet,\" notes an Implementor dryly." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE EXIT-IMPS ()
|
|
<REMOVE ,IMPTAB>
|
|
<REMOVE ,IMPS>
|
|
<DEQUEUE ,I-IMPS>
|
|
<RFALSE>>
|
|
|
|
<ROUTINE GET-APLANE-THINGS ()
|
|
<COND (<EQUAL? ,ABOVE ,OCITY ,OMIZNIA ,OACCARDI>
|
|
<COND (<NOT <IN? ,CURTAIN ,APLANE>>
|
|
<MOVE ,CURTAIN ,APLANE>
|
|
<UNMAKE ,CURTAIN ,NODESC>)>
|
|
<RTRUE>)
|
|
(<AND <EQUAL? ,ABOVE ,OPLAIN>
|
|
<NOT <IN? ,IMPS ,APLANE>>>
|
|
<MOVE ,IMPTAB ,APLANE>
|
|
<MOVE ,IMPS ,APLANE>
|
|
<QUEUE ,I-IMPS>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE ANY-TOUCHED? (TBL "OPT" EXCLUDED "AUX" LEN RM CNT)
|
|
<SET LEN <GETB .TBL 0>>
|
|
<SET CNT 1>
|
|
<REPEAT ()
|
|
<SET RM <GETB .TBL .LEN>>
|
|
<COND (<AND <IS? .RM ,TOUCHED>
|
|
<OR <NOT <ASSIGNED? EXCLUDED>>
|
|
<NOT <IS? .RM .EXCLUDED>>>>
|
|
<INC CNT>
|
|
<PUT ,AUX-TABLE .CNT .RM>)>
|
|
<COND (<DLESS? LEN 1>
|
|
<RETURN>)>>
|
|
<COND (<EQUAL? .CNT 1>
|
|
<RFALSE>)
|
|
(<EQUAL? .CNT 2>
|
|
<RETURN <GET ,AUX-TABLE 2>>)>
|
|
<PUT ,AUX-TABLE 0 .CNT>
|
|
<PUT ,AUX-TABLE 1 0>
|
|
<RETURN <PICK-ONE ,AUX-TABLE>>>
|
|
|
|
<ROUTINE DOWN-TO? ("AUX" (RM 0) X)
|
|
<COND (<EQUAL? ,ABOVE ,ORUINS>
|
|
<SET RM <ANY-TOUCHED? ,RUIN-ROOMS>>
|
|
<COND (<AND <ZERO? .RM>
|
|
<SETUP-RUINS?>>
|
|
<SET RM <RANDOM-ROOM? ,RUIN-ROOMS>>)>
|
|
<RETURN .RM>)
|
|
(<EQUAL? ,ABOVE ,OBRIDGE>
|
|
<SETG BRIDGE-DIR 0>
|
|
<SETG ZTOP 1>
|
|
<SETG ZBOT 2>
|
|
<RETURN ,ON-BRIDGE>)
|
|
(<EQUAL? ,ABOVE ,OFOREST>
|
|
<SET RM <ANY-TOUCHED? ,FOREST-ROOMS>>
|
|
<COND (<AND <ZERO? .RM>
|
|
<SETUP-FOREST?>>
|
|
<SET RM <RANDOM-ROOM? ,FOREST-ROOMS>>)>
|
|
<RETURN .RM>)
|
|
(<EQUAL? ,ABOVE ,OACCARDI>
|
|
<SET RM ,IN-ACCARDI>
|
|
<COND (<AND <IS? ,AT-GATE ,TOUCHED>
|
|
<PROB 50>>
|
|
<SET RM ,AT-GATE>)>
|
|
<RETURN .RM>)
|
|
(<EQUAL? ,ABOVE ,OCITY>
|
|
<SET RM ,IN-GURTH>
|
|
<COND (<IS? ,AT-MAGICK ,TOUCHED>
|
|
<SET RM ,AT-MAGICK>)>
|
|
<RETURN .RM>)
|
|
(<EQUAL? ,ABOVE ,OSHORE>
|
|
<SET RM <ANY-TOUCHED? ,SHORE-ROOMS>>
|
|
<COND (<ZERO? .RM>
|
|
<SET RM ,AT-LEDGE>)>
|
|
<RETURN .RM>)
|
|
(<EQUAL? ,ABOVE ,OXROADS>
|
|
<RETURN ,XROADS>)
|
|
(<EQUAL? ,ABOVE ,OPLAIN>
|
|
<RFALSE>)
|
|
(<EQUAL? ,ABOVE ,OGRUBBO>
|
|
<RETURN ,HILLTOP>)
|
|
(<EQUAL? ,ABOVE ,OCAVES>
|
|
<RETURN ,IN-GARDEN>)
|
|
(<EQUAL? ,ABOVE ,OMOOR>
|
|
<SET RM <ANY-TOUCHED? ,MOOR-ROOMS>>
|
|
<COND (<AND <ZERO? .RM>
|
|
<SETUP-MOOR?>>
|
|
<SET RM <RANDOM-ROOM? ,MOOR-ROOMS>>)>
|
|
<RETURN .RM>)
|
|
(<EQUAL? ,ABOVE ,OJUNGLE>
|
|
<SET RM <ANY-TOUCHED? ,JUNGLE-ROOMS>>
|
|
<COND (<AND <ZERO? .RM>
|
|
<SETUP-JUNGLE?>>
|
|
<SET RM <RANDOM-ROOM? ,JUNGLE-ROOMS>>)>
|
|
<RETURN .RM>)
|
|
(<EQUAL? ,ABOVE ,OMIZNIA>
|
|
<SET RM <ANY-TOUCHED? ,MIZNIA-ROOMS>>
|
|
<COND (<ZERO? .RM>
|
|
<SET RM ,IN-PORT>)>
|
|
<RETURN .RM>)
|
|
(<EQUAL? ,ABOVE ,OTHRIFF>
|
|
<SET RM ,IN-THRIFF>
|
|
<COND (<IS? ,IN-THRIFF ,MUNGED>
|
|
<SET RM ,IN-PASTURE>)>
|
|
<RETURN .RM>)
|
|
(T
|
|
; <SAY-ERROR "DOWN-TO?">
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE RANDOM-ROOM? (TBL "AUX" OHERE RM X)
|
|
<SET RM <GETB .TBL <RANDOM <GETB .TBL 0>>>>
|
|
<COND (<NOT <IS? .RM ,TOUCHED>>
|
|
<SET OHERE ,HERE>
|
|
<SETG HERE .RM>
|
|
<SET X <APPLY <GETP .RM ,P?ACTION> ,M-ENTERING>>
|
|
<SETG HERE .OHERE>
|
|
<MAKE .RM ,TOUCHED>)>
|
|
<RETURN .RM>>
|
|
|
|
<ROUTINE PRE-TAKE ("AUX" L LL WHO X X2)
|
|
<SET L <LOC ,PRSO>>
|
|
<COND (<T? .L>
|
|
<SET LL <LOC .L>>)>
|
|
<COND (<AND <ZERO? ,LIT?>
|
|
<NOT <EQUAL? ,WINNER .L .LL>>>
|
|
<TOO-DARK>
|
|
<RTRUE>)
|
|
(<EQUAL? .L ,GLOBAL-OBJECTS>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<EQUAL? .L ,WINNER>
|
|
<THIS-IS-IT ,PRSO>
|
|
<TELL ,ALREADY>
|
|
<COND (<IS? ,PRSO ,WORN>
|
|
<TELL B ,W?WEAR>)
|
|
(T
|
|
<TELL B ,W?HOLD>)>
|
|
<TELL "ing " THEO ,PERIOD>
|
|
<RTRUE>)
|
|
(<AND <NOT <EQUAL? .L <> ,BROG>>
|
|
<IS? .L ,CONTAINER>
|
|
<IS? .L ,TRANSPARENT>
|
|
<NOT <IS? .L ,OPENED>>>
|
|
<CANT-REACH-INTO .L>
|
|
<RTRUE>)
|
|
(<AND <NOT <EQUAL? .LL <> ,BROG>>
|
|
<IS? .LL ,CONTAINER>
|
|
<IS? .LL ,TRANSPARENT>
|
|
<NOT <IS? .LL ,OPENED>>>
|
|
<CANT-REACH-INTO .LL>
|
|
<RTRUE>)
|
|
(<T? ,PRSI>
|
|
<COND (<PRSO? PRSI>
|
|
<SET X <GET ,P-NAMW 0>>
|
|
<SET X2 <GET ,P-ADJW 0>>
|
|
<COND (<OR <EQUAL? .X <GET ,P-NAMW 1>>
|
|
<EQUAL? .X2 <GET ,P-ADJW 1>>>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)>)
|
|
(<PRSI? ME>
|
|
<COND (<EQUAL? ,WINNER ,PLAYER>
|
|
<NOBODY-TO-ASK>
|
|
<RTRUE>)
|
|
(<NOT <EQUAL? .L ,WINNER>>
|
|
<TELL CTHE ,WINNER " doesn't have "
|
|
THEO ,PERIOD>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>)
|
|
(<NOT <EQUAL? .L ,PRSI>>
|
|
<COND (<AND <EQUAL? .L ,ON-MCASE ,ON-WCASE ,ON-BCASE>
|
|
<PRSI? MCASE WCASE BCASE>>
|
|
<RFALSE>)>
|
|
<TELL CTHEO>
|
|
<ISNT-ARENT>
|
|
<ON-IN ,PRSI>
|
|
<TELL ,PERIOD>
|
|
<RTRUE>)>
|
|
<RFALSE>)
|
|
(<EQUAL? ,PRSO <LOC ,WINNER>>
|
|
<COND (<PRSO? BUSH POOL>
|
|
<RFALSE>)>
|
|
<TELL "Difficult. You're">
|
|
<ON-IN>
|
|
<TELL ,PERIOD>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE CANT-REACH-INTO (L)
|
|
<TELL ,CANT "reach into " THE .L ". It's closed." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-TAKE ("AUX" L)
|
|
<SET L <ITAKE>>
|
|
<COND (<ZERO? .L>
|
|
<RTRUE>)
|
|
(<SPARK? <>>
|
|
<TELL ,TAB>)>
|
|
<COND (<OR <T? ,P-MULT?>
|
|
<EQUAL? .L ,UNDERUG ,UNDERPEW ,LAMPHOUSE>
|
|
<AND <T? ,STATIC>
|
|
<IS? ,PRSO ,FERRIC>>>
|
|
<TAKEN>
|
|
<RTRUE>)
|
|
(<OR <IS? .L ,CONTAINER>
|
|
<IS? .L ,SURFACE>
|
|
<IS? .L ,PERSON>
|
|
<IS? .L ,LIVING>>
|
|
<TELL "You take " THEO>
|
|
<OUT-OF-LOC .L>
|
|
<TELL ,PERIOD>
|
|
<RTRUE>)
|
|
(<PROB 50>
|
|
<TAKEN>
|
|
<RTRUE>)>
|
|
<TELL ,CYOU>
|
|
<COND (<EQUAL? ,P-PRSA-WORD ,W?GRAB ,W?SEIZE ,W?SNATCH>
|
|
<TELL B ,P-PRSA-WORD>)
|
|
(<PROB 50>
|
|
<TELL "pick up">)
|
|
(T
|
|
<TELL B ,W?TAKE>)>
|
|
<TELL C ,SP THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE TAKEN ()
|
|
<TELL "Taken." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE FIRST-TAKE? ()
|
|
<COND (<AND <VERB? TAKE>
|
|
<NOT <IS? ,PRSO ,TOUCHED>>>
|
|
<COND (<ITAKE>
|
|
<PUTP ,PRSO ,P?DESCFCN 0>
|
|
<TAKEN>)>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE ITAKE ("OPT" (VB T) "AUX" (CNT 0) OBJ L X MAX)
|
|
<COND (<OR <ZERO? ,PRSO>
|
|
<NOT <SET L <LOC ,PRSO>>>>
|
|
<CANT-SEE-ANY>
|
|
<RFALSE>)>
|
|
<THIS-IS-IT ,PRSO>
|
|
<COND (<NOT <IS? ,PRSO ,TAKEABLE>>
|
|
<COND (<T? .VB>
|
|
<IMPOSSIBLE>)>
|
|
<RFALSE>)
|
|
(<AND <IS? .L ,CONTAINER>
|
|
<IS? .L ,OPENABLE>
|
|
<NOT <IS? .L ,OPENED>>
|
|
<NOT <EQUAL? .L <LOC ,WINNER>>>>
|
|
<COND (<T? .VB>
|
|
<YOUD-HAVE-TO "open" .L>)>
|
|
<RFALSE>)>
|
|
<COND (<AND <EQUAL? ,WINNER ,UNICORN>
|
|
<SET X <FIRST? ,WINNER>>>
|
|
<MOVE .X <LOC ,WINNER>>
|
|
<TELL "[putting down " THE .X " first" ,BRACKET>)
|
|
(<EQUAL? ,WINNER ,PLAYER>
|
|
<COND (<IN? ,ONION ,PLAYER>
|
|
<COND (<T? .VB>
|
|
<YOUD-HAVE-TO "put down" ,ONION>)>
|
|
<RFALSE>)>
|
|
<SET X <WEIGHT ,PRSO>>
|
|
<SET MAX <+ ,LOAD-ALLOWED </ <GET ,STATS ,STRENGTH> 10>>>
|
|
<COND (<AND <NOT <IN? .L ,WINNER>>
|
|
<G? <+ .X <WEIGHT ,WINNER>> .MAX>>
|
|
<COND (<T? .VB>
|
|
<COND (<SET X <FIRST? ,WINNER>>
|
|
<TELL "Your load is ">)
|
|
(T
|
|
<TELL CTHEO>
|
|
<IS-ARE>)>
|
|
<TELL "too heavy." CR>)>
|
|
<RFALSE>)>
|
|
|
|
<COND (<SET OBJ <FIRST? ,WINNER>>
|
|
<REPEAT ()
|
|
<COND (<IS? .OBJ ,NODESC>)
|
|
(<IS? .OBJ ,WORN>)
|
|
(<IS? .OBJ ,TAKEABLE>
|
|
<INC CNT>)>
|
|
<COND (<NOT <SET OBJ <NEXT? .OBJ>>>
|
|
<RETURN>)>>)>
|
|
<SET MAX <+ ,FUMBLE-NUMBER </ <GET ,STATS ,DEXTERITY> 10>>>
|
|
<COND (<G? .CNT .MAX>
|
|
<COND (<T? .VB>
|
|
<TELL "Your hands are full." CR>)>
|
|
<RFALSE>)>)>
|
|
|
|
<WINDOW ,SHOWING-ALL>
|
|
<MAKE ,PRSO ,TOUCHED>
|
|
<UNMAKE ,PRSO ,NODESC>
|
|
<UNMAKE ,PRSO ,NOALL>
|
|
<MOVE ,PRSO ,WINNER>
|
|
<RETURN .L>> "So that .L an be analyzed."
|
|
|
|
"Return total weight of objects in THING."
|
|
|
|
<ROUTINE WEIGHT (THING "AUX" (WT 0) OBJ)
|
|
<COND (<SET OBJ <FIRST? .THING>>
|
|
<REPEAT ()
|
|
<COND (<AND <EQUAL? .THING ,WINNER>
|
|
<IS? .OBJ ,WORN>>
|
|
<INC WT>)
|
|
(T
|
|
<SET WT <+ .WT <WEIGHT .OBJ>>>)>
|
|
<COND (<NOT <SET OBJ <NEXT? .OBJ>>>
|
|
<RETURN>)>>)>
|
|
<RETURN <+ .WT <GETP .THING ,P?SIZE>>>>
|
|
|
|
<ROUTINE V-WIELD ("AUX" OBJ)
|
|
<COND (<NOT <IS? ,PRSO ,TAKEABLE>>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<NOT <IN? ,PRSO ,WINNER>>
|
|
<MUST-HOLD ,PRSO>
|
|
<TELL " before you can wield it." CR>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,WORN>
|
|
<YOUD-HAVE-TO "take off" ,PRSO>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,WIELDED>
|
|
<TELL ,ALREADY "wielding " THEO ,PERIOD>
|
|
<RTRUE>)>
|
|
<COND (<SET OBJ <FIRST? ,WINNER>>
|
|
<REPEAT ()
|
|
<COND (<IS? .OBJ ,WIELDED>
|
|
<UNMAKE .OBJ ,WIELDED>
|
|
<TELL "[setting aside " THE .OBJ " first" ,BRACKET>
|
|
<RETURN>)>
|
|
<COND (<NOT <SET OBJ <NEXT? .OBJ>>>
|
|
<RETURN>)>>)>
|
|
<WINDOW ,SHOWING-INV>
|
|
<MAKE ,PRSO ,WIELDED>
|
|
<TELL "You wield " THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-UNWIELD ()
|
|
<COND (<NOT <IS? ,PRSO ,TAKEABLE>>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<NOT <IS? ,PRSO ,WIELDED>>
|
|
<TELL "You're not wielding " THEO ,PERIOD>
|
|
<RTRUE>)>
|
|
<WINDOW ,SHOWING-INV>
|
|
<UNMAKE ,PRSO ,WIELDED>
|
|
<TELL "You set aside " THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE SPARK? ("OPT" (INDENT T) (OBJ ,PRSO))
|
|
<COND (<NO-SPARK? .OBJ>
|
|
<RFALSE>)
|
|
(<T? .INDENT>
|
|
<TELL ,TAB>)>
|
|
<ITALICIZE "Snap">
|
|
<TELL "! You feel a ">
|
|
<COND (<G? ,STATIC 2>
|
|
<TELL "painful ">)>
|
|
<TELL "spark as you touch " THE .OBJ ,PERIOD>
|
|
<UPDATE-STAT <- 0 ,STATIC>>
|
|
<SPARK-OBJ .OBJ>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE SPARK-TO? ("OPT" (OBJ1 ,PRSO) (OBJ2 ,PRSI))
|
|
<COND (<NO-SPARK? .OBJ2>
|
|
<RFALSE>)
|
|
(<EQUAL? .OBJ1 ,HANDS ,FEET ,ME>)
|
|
(<NOT <IS? .OBJ1 ,FERRIC>>
|
|
<RFALSE>)>
|
|
<SAY-SNAP>
|
|
<SAY-YOUR .OBJ1>
|
|
<TELL ,AND THE .OBJ2 "!" CR>
|
|
<COND (<NOT <IS? .OBJ1 ,FERRIC>>
|
|
<UPDATE-STAT <- 0 ,STATIC>>)>
|
|
<SPARK-OBJ .OBJ2>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE SAY-SNAP ()
|
|
<ITALICIZE "Snap">
|
|
<TELL "! A ">
|
|
<COND (<G? ,STATIC 3>
|
|
<TELL "painful ">)>
|
|
<TELL "spark leaps between ">
|
|
<RFALSE>>
|
|
|
|
<ROUTINE NO-SPARK? (OBJ "AUX" L)
|
|
<COND (<ZERO? ,STATIC>
|
|
<RTRUE>)>
|
|
<SET L <LOC .OBJ>>
|
|
<COND (<EQUAL? .L <> ,LOCAL-GLOBALS ,GLOBAL-OBJECTS>
|
|
<RTRUE>)
|
|
(<EQUAL? ,PLAYER .L <LOC .L>>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE SPARK-OBJ (OBJ)
|
|
<COND (<NOT <IS? .OBJ ,LIVING>>)
|
|
(<EQUAL? .OBJ ,DUST>
|
|
<VANISH ,DUST>
|
|
<DEQUEUE ,I-DUST>
|
|
<MOVE ,RING ,HERE>
|
|
<SETG P-IT-OBJECT ,RING>
|
|
<SETG P-THEM-OBJECT ,NOT-HERE-OBJECT>
|
|
<TELL " A bright blue ">
|
|
<ITALICIZE "snap">
|
|
<TELL " of electricity lights the room! ">
|
|
<BLINK ,DUST>
|
|
<TELL " draw">
|
|
<COND (<EQUAL? ,BUNNIES 1>
|
|
<TELL "s itself">)
|
|
(T
|
|
<TELL " themselves">)>
|
|
<TELL
|
|
" together into a hard ring of particles, which falls with a clatter to your feet." CR>
|
|
<UPDATE-STAT <GETP ,DUST ,P?VALUE> ,EXPERIENCE>)
|
|
(<IS? .OBJ ,MONSTER>
|
|
<MAKE .OBJ ,STRICKEN>
|
|
<PUTP .OBJ ,P?ENDURANCE
|
|
<- <GETP .OBJ ,P?ENDURANCE> ,STATIC>>)
|
|
(T
|
|
<TELL ,TAB CTHE .OBJ " looks at you reproachfully." CR>
|
|
<COND (<EQUAL? .OBJ ,UNICORN>
|
|
<UPDATE-STAT -5 ,LUCK T>)>)>
|
|
<SETG STATIC 0>
|
|
<RFALSE>>
|
|
|
|
<ROUTINE BLINK (OBJ)
|
|
<TELL "In the blink of an eye, " THE .OBJ>
|
|
<RFALSE>>
|
|
|
|
"Takes monster OBJ and NEGATIVE damage, returns net damage."
|
|
|
|
<ROUTINE MSPARK? (OBJ DAMAGE "AUX" X)
|
|
<COND (<ZERO? ,STATIC>
|
|
<RETURN .DAMAGE>)>
|
|
<SET X <+ <GETP .OBJ ,P?ENDURANCE> .DAMAGE>>
|
|
<TELL ,TAB>
|
|
<SAY-SNAP>
|
|
<TELL "you and " THE .OBJ>
|
|
<COND (<L? .X 1>
|
|
<SET X 1>
|
|
<TELL ", leaving it nearly stunned">)>
|
|
<TELL ,PERIOD>
|
|
<PUTP .OBJ ,P?ENDURANCE .X>
|
|
<SET DAMAGE <- .DAMAGE ,STATIC>>
|
|
<SETG STATIC 0>
|
|
<RETURN .DAMAGE>>
|
|
|
|
<ROUTINE V-DROP ()
|
|
<COND (<IDROP>
|
|
<SAY-DROPPED>)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE SAY-DROPPED ()
|
|
<COND (<OR <T? ,P-MULT?>
|
|
<PROB 50>>
|
|
<TELL "Dropped." CR>
|
|
<RTRUE>)>
|
|
<TELL ,CYOU>
|
|
<COND (<PROB 50>
|
|
<TELL "drop ">)
|
|
(T
|
|
<TELL "put down ">)>
|
|
<TELL THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE IDROP ("AUX" L)
|
|
<SET L <LOC ,PRSO>>
|
|
<COND (<OR <EQUAL? .L <> ,LOCAL-GLOBALS ,GLOBAL-OBJECTS>
|
|
<PRSO? WINNER ME>>
|
|
<IMPOSSIBLE>
|
|
<RFALSE>)
|
|
(<NOT <EQUAL? .L ,WINNER>>
|
|
<COND (<EQUAL? ,WINNER ,PLAYER>
|
|
<TELL "You'd ">)
|
|
(T
|
|
<TELL CTHE ,WINNER " would ">)>
|
|
<TELL "have to take " THEO>
|
|
<OUT-OF-LOC .L>
|
|
<TELL ,SFIRST>
|
|
<RFALSE>)
|
|
(<AND <IS? ,PRSO ,WORN>
|
|
<IN? ,PRSO ,WINNER>>
|
|
<COND (<TAKE-OFF-PRSO-FIRST?>
|
|
<RTRUE>)>)
|
|
(<PRSO? MINX>
|
|
<UNMAKE ,PRSO ,SEEN>
|
|
<UNMAKE ,PRSO ,TOUCHED>
|
|
<UNMAKE ,PRSO ,TRYTAKE>)
|
|
(<PRSO? TRUFFLE>
|
|
<UNMAKE ,MINX ,SEEN>)>
|
|
<UNMAKE ,PRSO ,WIELDED>
|
|
<WINDOW ,SHOWING-ALL>
|
|
<SET L <LOC ,WINNER>>
|
|
<COND (<OR <HERE? IN-SKY ON-BRIDGE APLANE>
|
|
<EQUAL? .L ,SADDLE>>
|
|
<TELL CTHEO C ,SP>
|
|
<FALLS>
|
|
<RFALSE>)>
|
|
<MOVE ,PRSO .L>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PRSO-SLIDES-OFF-PRSI ()
|
|
<TELL CTHEO " slide">
|
|
<COND (<NOT <IS? ,PRSO ,PLURAL>>
|
|
<TELL "s">)>
|
|
<TELL " off " THEI ,AND>
|
|
<FALLS>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE FALLS ("OPT" (OBJ ,PRSO) (V T) "AUX" S L X)
|
|
<SET S "s ">
|
|
<COND (<IS? .OBJ ,PLURAL>
|
|
<SET S " ">)>
|
|
<SET L <LOC ,WINNER>>
|
|
<WINDOW ,SHOWING-ALL>
|
|
<UNMAKE .OBJ ,WIELDED>
|
|
<UNMAKE .OBJ ,WORN>
|
|
<COND (<HERE? ON-BRIDGE>
|
|
<VANISH .OBJ>
|
|
<COND (<T? .V>
|
|
<TELL "slip" .S B ,W?BETWEEN " the ropes and ">)>
|
|
<TELL "fall" .S "out of sight." CR>
|
|
<RTRUE>)
|
|
(<HERE? IN-SKY APLANE>
|
|
<SET X <DOWN-TO?>>
|
|
<COND (<ZERO? .X>
|
|
<REMOVE .OBJ>)
|
|
(T
|
|
<MOVE .OBJ .X>)>
|
|
<COND (<HERE? IN-SKY>
|
|
<TELL "fall" .S "out of sight." CR>
|
|
<RTRUE>)>
|
|
<COND (<EQUAL? .OBJ ,PHASE>
|
|
<MUNG-PHASE>)>
|
|
<TELL "disappear" .S "in a spectral flash." CR>
|
|
<RTRUE>)
|
|
(<EQUAL? .L ,SADDLE>
|
|
<SET X <LOC .L>>
|
|
<COND (<IS? .X ,VEHICLE>
|
|
<MOVE .OBJ <LOC .X>>)
|
|
(T
|
|
<MOVE .OBJ .X>)>
|
|
<COND (<T? .V>
|
|
<TELL "slide" .S "off " THE .L ,AND>)>)
|
|
(T
|
|
<MOVE .OBJ .L>)>
|
|
<TELL "land" .S "on the ">
|
|
<GROUND-WORD>
|
|
<TELL ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-CASH ()
|
|
<COND (<ZERO? ,LOOT>
|
|
<PRINT "You're broke.|">
|
|
<RTRUE>)>
|
|
<SAY-CASH>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-INVENTORY ()
|
|
<COND (<OR <ZERO? ,DMODE>
|
|
<EQUAL? ,PRIOR ,SHOWING-ROOM ,SHOWING-STATS>>
|
|
<PRINT-INVENTORY>)
|
|
(T
|
|
<TELL "You take stock of your possessions." CR>
|
|
<SETG DBOX-TOP 0>
|
|
<UPDATE-INVENTORY>
|
|
<COND (<BTST <LOWCORE FLAGS> 1>
|
|
<DIROUT ,D-SCREEN-OFF>
|
|
<CRLF>
|
|
<PRINT-INVENTORY>
|
|
<DIROUT ,D-SCREEN-ON>)>)>
|
|
<COND (<NOT <IS? ,MONEY ,TOUCHED>>
|
|
<MAKE ,MONEY ,TOUCHED>
|
|
<TELL ,TAB>
|
|
<NYMPH-APPEARS "financial">
|
|
<TELL
|
|
"By the way, you can check the amount of cash you're holding at any time with the CASH command. Or, just type a $ followed by [RETURN]">
|
|
<PRINT ". Bye!\"| She disappears with a wink.|">)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE UPDATE-INVENTORY ()
|
|
<SETG IN-DBOX ,SHOWING-INV>
|
|
<SETUP-DBOX>
|
|
<PRINT-INVENTORY>
|
|
<JUSTIFY-DBOX>
|
|
<DISPLAY-DBOX>
|
|
<RFALSE>>
|
|
|
|
<OBJECT WEARING>
|
|
<OBJECT HOLDING>
|
|
|
|
<GLOBAL INV-PRINTING?:FLAG <>>
|
|
|
|
<ROUTINE PRINT-INVENTORY ("AUX" (HOLDS 0) (WORNS 0) (ANY 0) (B 0) OBJ NXT)
|
|
<COND (<NOT <SET OBJ <FIRST? ,WINNER>>>
|
|
<NUTHIN>
|
|
<RTRUE>)>
|
|
<SETG INV-PRINTING? T>
|
|
<REPEAT ()
|
|
<SET NXT <NEXT? .OBJ>>
|
|
<COND (<OR <IS? .OBJ ,NODESC>
|
|
<NOT <IS? .OBJ ,TAKEABLE>>>
|
|
<MOVE .OBJ ,DUMMY-OBJECT>)
|
|
(<AND <IS? .OBJ ,CLOTHING>
|
|
<IS? .OBJ ,WORN>>
|
|
<INC WORNS>
|
|
<MOVE .OBJ ,WEARING>)
|
|
(<AND <EQUAL? .OBJ ,GOBLET>
|
|
<IN? ,BFLY .OBJ>
|
|
<IS? ,BFLY ,LIVING>>
|
|
<INC B>
|
|
<MAKE ,BFLY ,NODESC>)>
|
|
<COND (<AND <SEE-INSIDE? .OBJ>
|
|
<SEE-ANYTHING-IN? .OBJ>>
|
|
<INC HOLDS>
|
|
<MOVE .OBJ ,HOLDING>)>
|
|
<SET OBJ .NXT>
|
|
<COND (<ZERO? .OBJ>
|
|
<RETURN>)>>
|
|
|
|
<COND (<SET OBJ <FIRST? ,WINNER>>
|
|
<REPEAT ()
|
|
<SET NXT <NEXT? .OBJ>>
|
|
<COND (<IS? .OBJ ,WIELDED>
|
|
<REMOVE .OBJ>
|
|
<MOVE .OBJ ,WINNER>)>
|
|
<SET OBJ .NXT>
|
|
<COND (<ZERO? .OBJ>
|
|
<RETURN>)>>
|
|
<INC ANY>
|
|
<TELL "You're carrying ">
|
|
<CONTENTS ,WINNER>
|
|
<PRINT ,PERIOD>)>
|
|
|
|
<COND (<T? .HOLDS>
|
|
<COND (<T? .ANY>
|
|
<TELL ,TAB "You're also ">)
|
|
(T
|
|
<TELL "You're ">)>
|
|
<INC ANY>
|
|
<TELL "carrying ">
|
|
<CONTENTS ,HOLDING>
|
|
<COND (<SET OBJ <FIRST? ,HOLDING>>
|
|
<REPEAT ()
|
|
<TELL ". ">
|
|
<COND (<EQUAL? .OBJ ,GURDY>
|
|
<TELL "Within">)
|
|
(<IS? .OBJ ,CONTAINER>
|
|
<TELL "Inside">)
|
|
(T
|
|
<TELL "Upon">)>
|
|
<TELL C ,SP THE .OBJ " you see ">
|
|
<CONTENTS .OBJ>
|
|
<COND (<NOT <SET OBJ <NEXT? .OBJ>>>
|
|
<RETURN>)>>)>
|
|
<TELL ,PERIOD>
|
|
<MOVE-ALL ,HOLDING ,WINNER>)>
|
|
|
|
<COND (<T? .WORNS>
|
|
<COND (<T? .ANY>
|
|
<TELL ,TAB>)>
|
|
<INC ANY>
|
|
<TELL "You're wearing ">
|
|
<CONTENTS ,WEARING>
|
|
<COND (<SET OBJ <FIRST? ,WEARING>>
|
|
<REPEAT ()
|
|
<COND (<AND <SEE-INSIDE? .OBJ>
|
|
<SEE-ANYTHING-IN? .OBJ>>
|
|
<TELL ". ">
|
|
<COND (<IS? .OBJ ,CONTAINER>
|
|
<TELL "Inside">)
|
|
(T
|
|
<TELL "Upon">)>
|
|
<TELL C ,SP THE .OBJ " you see ">
|
|
<CONTENTS .OBJ>)>
|
|
<COND (<NOT <SET OBJ <NEXT? .OBJ>>>
|
|
<RETURN>)>>)>
|
|
<TELL ,PERIOD>
|
|
<MOVE-ALL ,WEARING ,WINNER>)>
|
|
|
|
<MOVE-ALL ,DUMMY-OBJECT ,WINNER>
|
|
<COND (<ZERO? .ANY>
|
|
<NUTHIN>)
|
|
(<T? ,LOOT>
|
|
<TELL ,TAB>
|
|
<SAY-CASH>)>
|
|
<COND (<T? .B>
|
|
<UNMAKE ,BFLY ,NODESC>)>
|
|
<SETG INV-PRINTING? <>>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE NUTHIN ()
|
|
<TELL ,DONT "have anything">
|
|
<COND (<T? ,LOOT>
|
|
<TELL " except ">
|
|
<SAY-LOOT>)>
|
|
<PRINT ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PRE-EXAMINE ()
|
|
<COND (<ZERO? ,LIT?>
|
|
<TOO-DARK>
|
|
<RFATAL>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE V-EXAMINE ()
|
|
<COND (<IS? ,PRSO ,OPENABLE>
|
|
<TELL "It looks as if " THEO>
|
|
<IS-ARE>
|
|
<COND (<IS? ,PRSO ,OPENED>
|
|
<PRINTB ,W?OPEN>)
|
|
(T
|
|
<PRINTB ,W?CLOSED>)>
|
|
<PRINT ,PERIOD>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,PLACE>
|
|
<CANT-SEE-MUCH>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,READABLE>
|
|
<TELL "There appears to be something written on it." CR>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,SURFACE>
|
|
<TELL ,YOU-SEE>
|
|
<CONTENTS>
|
|
<TELL ,SON THEO>
|
|
<PRINT ,PERIOD>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,CONTAINER>
|
|
<COND (<OR <IS? ,PRSO ,OPENED>
|
|
<IS? ,PRSO ,TRANSPARENT>>
|
|
<V-LOOK-INSIDE>
|
|
<RTRUE>)>
|
|
<ITS-CLOSED>
|
|
<RTRUE>)
|
|
(<LOOK-INTDIR?>
|
|
<RTRUE>)
|
|
(<AND <IS? ,PRSO ,PERSON>
|
|
<SEE-ANYTHING-IN?>>
|
|
<TELL CTHEO " has ">
|
|
<CONTENTS>
|
|
<PRINT ,PERIOD>
|
|
<RTRUE>)>
|
|
<NOTHING-INTERESTING>
|
|
<TELL " about " THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE NOTHING-INTERESTING ()
|
|
<TELL ,YOU-SEE "nothing " <PICK-NEXT ,YAWNS>>
|
|
<RFALSE>>
|
|
|
|
<GLOBAL CAN-UNDO:NUMBER 0>
|
|
|
|
<ROUTINE V-UNDO ("AUX" X)
|
|
<COND (<CANT-SAVE?>
|
|
<RTRUE>)>
|
|
<SETG OLD-HERE <>>
|
|
<SET X <IRESTORE>>
|
|
<COND (<EQUAL? .X -1>
|
|
<NOT-AVAILABLE>
|
|
<RTRUE>)>
|
|
<FAILED "UNDO">
|
|
<RTRUE>>
|
|
|
|
<ROUTINE CANT-SAVE? ("AUX" OBJ NXT X)
|
|
<COND (<T? ,CHOKE>
|
|
<MUMBLAGE ,SKELETON>
|
|
<RTRUE>)
|
|
(<SET OBJ <FIRST? ,HERE>>
|
|
<REPEAT ()
|
|
<COND (<AND <IS? .OBJ ,MONSTER>
|
|
<IS? .OBJ ,LIVING>
|
|
<NOT <IS? .OBJ ,SLEEPING>>>
|
|
<MUMBLAGE .OBJ>
|
|
<RTRUE>)
|
|
(<NOT <SET OBJ <NEXT? .OBJ>>>
|
|
<RFALSE>)>>)>
|
|
<RFALSE>>
|
|
|
|
<ROUTINE MUMBLAGE (OBJ)
|
|
<PCLEAR>
|
|
<TELL "You begin to mumble the Spell of ">
|
|
<COND (<VERB? SAVE>
|
|
<TELL "Sav">)
|
|
(T
|
|
<TELL "Undo">)>
|
|
<TELL "ing, but the ">
|
|
<COND (<T? ,LIT?>
|
|
<TELL "sight of " THE .OBJ " makes">)
|
|
(T
|
|
<TELL "noises in the darkness make">)>
|
|
<TELL " your mind wander." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-USE ()
|
|
<COND (<IS? ,PRSO ,PERSON>
|
|
<TELL CTHEO " might resent that." CR>
|
|
<RTRUE>)>
|
|
<HOW?>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-BITE ()
|
|
<COND (<NOT <SPARK? <>>>
|
|
<HACK-HACK "Biting">)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-BLOW-INTO ()
|
|
<COND (<IS? ,PRSO ,PERSON>
|
|
<SETG P-PRSA-WORD ,W?USE>
|
|
<PERFORM ,V?USE ,PRSO>
|
|
<RTRUE>)>
|
|
<HACK-HACK "Blowing">
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LIGHT-ON ()
|
|
<TELL ,CANT "light " THEO " on anything." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LIGHT-WITH ()
|
|
<V-BURN-WITH>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-BURN-WITH ()
|
|
<COND (<T? ,PRSI>
|
|
<TELL "With " A ,PRSI "? ">)>
|
|
<TELL <PICK-NEXT ,YUKS> ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE ALREADY-HAVE ("OPT" (OBJ ,PRSO))
|
|
<COND (<EQUAL? ,WINNER ,PLAYER>
|
|
<TELL "You already have ">)
|
|
(T
|
|
<TELL CTHE ,WINNER " already has ">)>
|
|
<TELL A .OBJ ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
; <ROUTINE NO-MONEY ()
|
|
<TELL ,DONT "have any money." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-CLEAN ()
|
|
<COND (<NOT <SPARK? <>>>
|
|
<HACK-HACK "Cleaning">)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-CLEAN-OFF ()
|
|
<COND (<PRSO? PRSI>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)>
|
|
<TELL ,CANT B ,P-PRSA-WORD C ,SP THEO ,SON THEI ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-CLIMB-DOWN ()
|
|
<COND (<OR <EQUAL? ,P-PRSA-WORD ,W?JUMP ,W?LEAP ,W?HURDLE>
|
|
<EQUAL? ,P-PRSA-WORD ,W?VAULT ,W?BOUND>>
|
|
<PERFORM ,V?DIVE ,PRSO>
|
|
<RTRUE>)
|
|
(<PRSO? ROOMS>
|
|
<DO-WALK ,P?DOWN>
|
|
<RTRUE>)>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-CLIMB-ON ()
|
|
<COND (<EQUAL? ,P-PRSA-WORD ,W?TAKE>
|
|
<PERFORM ,V?HIT ,PRSO>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,VEHICLE>
|
|
<PERFORM ,V?ENTER ,PRSO>
|
|
<RTRUE>)>
|
|
<TELL ,CANT B ,P-PRSA-WORD " onto that." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-CLIMB-OVER ()
|
|
<COND (<PRSO? ROOMS>
|
|
<V-WALK-AROUND>
|
|
<RTRUE>)>
|
|
<TELL ,CANT>
|
|
<TELL "climb over that." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-CLIMB-UP ()
|
|
<COND (<PRSO? ROOMS>
|
|
<DO-WALK ,P?UP>
|
|
<RTRUE>)>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-OPEN-WITH ()
|
|
<COND (<NOT <IS? ,PRSO ,OPENABLE>>
|
|
<CANT-OPEN-PRSO>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,OPENED>
|
|
<ITS-ALREADY "open">
|
|
<RTRUE>)>
|
|
<TELL ,CANT B ,P-PRSA-WORD C ,SP THEO ,WITH THEI ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE CANT-OPEN-PRSO ()
|
|
<TELL ,IMPOSSIBLY "open " AO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-OPEN ("AUX" X)
|
|
<COND (<NOT <IS? ,PRSO ,OPENABLE>>
|
|
<CANT-OPEN-PRSO>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,OPENED>
|
|
<ITS-ALREADY "open">
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,LOCKED>
|
|
<TELL CTHEO " seems to be locked." CR>
|
|
<RTRUE>)>
|
|
<COND (<SPARK?>
|
|
<TELL ,TAB>)>
|
|
<TELL "You open " THEO ,PERIOD>
|
|
<IOPEN>
|
|
<COND (<AND <PRSO? CELLAR-DOOR>
|
|
<NOT <IS? ,ONION ,TOUCHED>>>
|
|
<TELL ,TAB>
|
|
<COOK-MENTIONS-ONION>)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE IOPEN ("OPT" (OBJ ,PRSO))
|
|
<WINDOW ,SHOWING-ALL>
|
|
<MAKE .OBJ ,OPENED>
|
|
<COND (<AND <IS? .OBJ ,DOORLIKE>
|
|
<IN? .OBJ ,LOCAL-GLOBALS>>
|
|
<MARK-EXITS>
|
|
<COND (<ZERO? ,DMODE>
|
|
<LOWER-SLINE>
|
|
<RFALSE>)>
|
|
<DRAW-MAP>
|
|
<SHOW-MAP>
|
|
<RFALSE>)
|
|
(<IS? .OBJ ,CONTAINER>
|
|
<COND (<IS? .OBJ ,TRANSPARENT>
|
|
<RFALSE>)
|
|
(<NOT <SEE-ANYTHING-IN? .OBJ>>
|
|
<RFALSE>)>
|
|
<TELL ,TAB>
|
|
<PRINT "Peering inside, you see ">
|
|
<CONTENTS .OBJ>
|
|
<PRINT ,PERIOD>)>
|
|
<RFALSE>>
|
|
|
|
<ROUTINE ICLOSE ("OPT" (OBJ ,PRSO))
|
|
<WINDOW ,SHOWING-ALL>
|
|
<UNMAKE .OBJ ,OPENED>
|
|
<COND (<AND <IS? .OBJ ,DOORLIKE>
|
|
<IN? .OBJ ,LOCAL-GLOBALS>>
|
|
<COND (<ZERO? ,DMODE>
|
|
<LOWER-SLINE>
|
|
<RFALSE>)>
|
|
<DRAW-MAP>
|
|
<SHOW-MAP>)>
|
|
<RFALSE>>
|
|
|
|
<ROUTINE V-CLOSE ()
|
|
<COND (<IS? ,PRSO ,OPENABLE>
|
|
<COND (<IS? ,PRSO ,OPENED>
|
|
<COND (<SPARK?>
|
|
<TELL ,TAB>)>
|
|
<TELL "You close " THEO ,PERIOD>
|
|
<ICLOSE>
|
|
<RTRUE>)>
|
|
<ITS-ALREADY "closed">
|
|
<RTRUE>)>
|
|
<TELL ,CANT>
|
|
<TELL "close " AO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-COUNT ()
|
|
<COND (<IS? ,PRSO ,PLURAL>
|
|
<TELL "Your mind wanders, and you lose count." CR>
|
|
<RTRUE>)>
|
|
<ONLY-ONE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE ONLY-ONE ()
|
|
<TELL "You only see one." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-COVER ()
|
|
<PERFORM ,V?PUT-ON ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-HOLD-OVER ()
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-CROSS ()
|
|
<TELL ,CANT>
|
|
<TELL "cross that." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-CUT ()
|
|
<COND (<PRSI? DAGGER SWORD AXE>
|
|
<NYMPH-APPEARS "safety">
|
|
<TELL "Careful with that " 'PRSI
|
|
"!\" she scolds, wagging a tiny finger. \"You might hurt " 'ME>
|
|
<PRINT ". Bye!\"| She disappears with a wink.|">
|
|
<RTRUE>)>
|
|
<V-RIP>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-RIP ()
|
|
<TELL ,IMPOSSIBLY B ,P-PRSA-WORD C ,SP THEO>
|
|
<COND (<NOT <PRSI? HANDS>>
|
|
<TELL ,WITH THEI>)>
|
|
<PRINT ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-DEFLATE ()
|
|
<IMPOSSIBLE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-DETONATE ()
|
|
<IMPOSSIBLE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PRE-DIG-UNDER ()
|
|
<RETURN <PRE-DIG>>>
|
|
|
|
<ROUTINE PRE-DIG ()
|
|
<COND (<PRSO? PRSI>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<ZERO? ,LIT?>
|
|
<TOO-DARK>
|
|
<RTRUE>)
|
|
(<T? ,PRSI>
|
|
<RFALSE>)>
|
|
<SETG PRSI ,HANDS>
|
|
<COND (<IN? ,SPADE ,PLAYER>
|
|
<SETG PRSI ,SPADE>)>
|
|
<TELL "[with " THEI ,BRACKET>
|
|
<RFALSE>>
|
|
|
|
<ROUTINE V-DIG-UNDER ()
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-DIG ()
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SDIG ()
|
|
<PERFORM ,V?DIG ,PRSI ,PRSO>
|
|
<RFATAL>>
|
|
|
|
<ROUTINE V-DRINK ("OPT" (FROM? <>))
|
|
<TELL ,CANT>
|
|
<TELL "drink ">
|
|
<COND (<T? .FROM?>
|
|
<TELL "from ">)>
|
|
<TELL D ,NOT-HERE-OBJECT ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-DRINK-FROM ()
|
|
<V-DRINK T>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-EAT ()
|
|
<COND (<EQUAL? ,WINNER ,PLAYER>
|
|
<NOT-LIKELY>
|
|
<TELL " would agree with you." CR>
|
|
<RTRUE>)>
|
|
<TELL "\"It" <PICK-NEXT ,LIKELIES>
|
|
" that " THEO " would agree with me.\"" CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-ENTER ("AUX" X)
|
|
<COND (<IS? ,PRSO ,VEHICLE>
|
|
<COND (<IN? ,PLAYER ,PRSO>
|
|
<TELL "You're already">
|
|
<ON-IN>
|
|
<TELL ,PERIOD>
|
|
<RTRUE>)
|
|
(<NOT <EQUAL? <LOC ,PRSO> ,HERE ,LOCAL-GLOBALS>>
|
|
<CANT-FROM-HERE>
|
|
<RTRUE>)
|
|
(<DROP-ONION-FIRST?>
|
|
<RTRUE>)>
|
|
<SETG OLD-HERE <>>
|
|
<WINDOW ,SHOWING-ROOM>
|
|
<MOVE ,PLAYER ,PRSO>
|
|
<TELL "You get">
|
|
<ON-IN>
|
|
<RELOOK>
|
|
<RTRUE>)
|
|
(<PRSO? ROOMS>
|
|
<SET X <FIND-IN? ,HERE ,VEHICLE>>
|
|
<COND (<T? .X>
|
|
<SETG P-PRSA-WORD ,W?ENTER>
|
|
<PERFORM ,V?ENTER .X>
|
|
<RTRUE>)>
|
|
<DO-WALK ,P?IN>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,CLOTHING>
|
|
<PRINT "[Presumably, you mean ">
|
|
<TELL "WEAR " THEO>
|
|
<PRINTC %<ASCII !\.>>
|
|
<PRINT ,BRACKET>
|
|
<SETG P-PRSA-WORD ,W?WEAR>
|
|
<PERFORM ,V?WEAR ,PRSO>
|
|
<RTRUE>)>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-ESCAPE ()
|
|
<COND (<IS? ,PRSO ,PLACE>
|
|
<NOT-IN>
|
|
<RTRUE>)>
|
|
<V-WALK-AROUND>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PRE-DUMB-EXAMINE ()
|
|
<COND (<ZERO? ,LIT?>
|
|
<TOO-DARK>
|
|
<RTRUE>)
|
|
(<LOOK-INTDIR?>
|
|
<RTRUE>)>
|
|
<COND (<NOT <IS? ,EYES ,SEEN>>
|
|
<MAKE ,EYES ,SEEN>
|
|
<PRINT "[Presumably, you mean ">
|
|
<TELL "LOOK AT " THEO
|
|
", not LOOK INSIDE or LOOK UNDER or LOOK BEHIND " THEO>
|
|
<PRINTC %<ASCII !\.>>
|
|
<PRINT ,BRACKET>)>
|
|
<PERFORM ,V?EXAMINE ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-DUMB-EXAMINE ()
|
|
<V-EXAMINE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE LOOK-INTDIR? ("AUX" X)
|
|
<COND (<PRSO? RIGHT LEFT>)
|
|
(<NOT <PRSO? INTDIR>>
|
|
<RFALSE>)>
|
|
<SET X <GETP ,HERE ,P?SEE-ALL>>
|
|
<COND (<T? .X>
|
|
<THIS-IS-IT .X>
|
|
<TELL ,YOU-SEE>
|
|
<COND (<AND <NOT <IS? .X ,NOARTICLE>>
|
|
<NOT <IS? .X ,PLURAL>>>
|
|
<TELL ,LTHE>)>
|
|
<TELL D .X " that way." CR>
|
|
<RTRUE>)>
|
|
<NOTHING-INTERESTING>
|
|
<TELL ,SIN D ,RIGHT ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PRE-EXAMINE-IN ("AUX" L)
|
|
<COND (<ZERO? ,LIT?>
|
|
<TOO-DARK>
|
|
<RFATAL>)
|
|
(<PRSO? PRSI>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<IN? ,PRSI ,GLOBAL-OBJECTS>
|
|
<RFALSE>)
|
|
(<AND <IN? ,PRSI ,LOCAL-GLOBALS>
|
|
<IS? ,PRSI ,PLACE>>
|
|
<RFALSE>)>
|
|
<SET L <LOC ,PRSO>>
|
|
<COND (<EQUAL? .L ,PRSI>
|
|
<RFALSE>)
|
|
(<IN? .L ,PRSI>
|
|
<RFALSE>)>
|
|
<TELL CTHEO>
|
|
<ISNT-ARENT>
|
|
<ON-IN ,PRSI>
|
|
<TELL ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-EXAMINE-IN ()
|
|
<V-EXAMINE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-EXIT ("AUX" L)
|
|
<COND (<PRSO? ROOMS>
|
|
<SET L <LOC ,WINNER>>
|
|
<COND (<IS? .L ,VEHICLE>
|
|
<PERFORM ,V?EXIT .L>
|
|
<RTRUE>)>
|
|
<DO-WALK ,P?OUT>
|
|
<RTRUE>)
|
|
(<AND <T? ,PRSO>
|
|
<IS? ,PRSO ,VEHICLE>>
|
|
<COND (<NOT <IN? ,WINNER ,PRSO>>
|
|
<TELL "You're not">
|
|
<ON-IN>
|
|
<TELL ,PERIOD>
|
|
<RTRUE>)>
|
|
<SETG OLD-HERE <>>
|
|
<WINDOW ,SHOWING-ROOM>
|
|
<MOVE ,WINNER <LOC ,PRSO>>
|
|
<TELL "You get">
|
|
<OUT-OF-LOC ,PRSO>
|
|
<RELOOK>
|
|
<RTRUE>)>
|
|
<SET L <LOC ,PRSO>>
|
|
<COND (<IS? ,PRSO ,PLACE>
|
|
<NOT-IN>
|
|
<RTRUE>)
|
|
(<AND <IS? .L ,CONTAINER>
|
|
<VISIBLE? ,PRSO>>
|
|
<TELL "[from " D .L ,BRACKET>
|
|
<PERFORM ,V?TAKE ,PRSO>
|
|
<RTRUE>)>
|
|
<DO-WALK ,P?OUT>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-FILL-FROM ()
|
|
<V-FILL>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-FILL ()
|
|
<COND (<AND <PRSO? VIAL GOBLET>
|
|
<VISIBLE? ,POOL>>
|
|
<TELL "[from " THE ,POOL ,BRACKET>
|
|
<SETG P-PRSA-WORD ,W?GET>
|
|
<PERFORM ,V?FILL-FROM ,PRSO ,POOL>
|
|
<RTRUE>)>
|
|
<TELL ,CANT B ,P-PRSA-WORD C ,SP THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SUBMERGE ()
|
|
<COND (<AND <PRSO? CIRCLET>
|
|
<VISIBLE? ,JAR>>
|
|
<TELL "[into " THE ,JAR ,BRACKET>
|
|
<DIP-CIRCLET>
|
|
<RTRUE>)
|
|
(<IN? ,POOL ,HERE>
|
|
<TELL "[in " THE ,POOL ,BRACKET>
|
|
<COND (<PRSO? VIAL GOBLET>
|
|
<PERFORM ,V?FILL-FROM ,PRSO ,POOL>
|
|
<RTRUE>)>
|
|
<PERFORM ,V?PUT-UNDER ,PRSO ,POOL>
|
|
<RTRUE>)>
|
|
<TELL ,NOTHING "here in which to " B ,P-PRSA-WORD
|
|
C ,SP THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-FIND ("AUX" L)
|
|
<SET L <LOC ,PRSO>>
|
|
<COND (<ZERO? .L>)
|
|
(<PRSO? ME HANDS WINNER>
|
|
<PRINT "You're right here.|">
|
|
<RTRUE>)
|
|
(<IN? ,PRSO ,WINNER>
|
|
<TELL "You're holding it." CR>
|
|
<RTRUE>)
|
|
(<OR <IN? ,PRSO ,HERE>
|
|
<AND <IN? ,PRSO ,LOCAL-GLOBALS>
|
|
<GLOBAL-IN? ,HERE ,PRSO>>
|
|
<IN? ,PRSO <LOC ,WINNER>>>
|
|
<ITS-RIGHT-HERE>
|
|
<RTRUE>)
|
|
(<AND <OR <IS? .L ,PERSON>
|
|
<IS? .L ,LIVING>>
|
|
<VISIBLE? .L>>
|
|
<TELL CTHE .L " has it." CR>
|
|
<RTRUE>)
|
|
(<AND <SEE-INSIDE? .L>
|
|
<VISIBLE? .L>>
|
|
<SAY-ITS>
|
|
<ON-IN .L>
|
|
<TELL ,PERIOD>
|
|
<RTRUE>)>
|
|
<DO-IT-YOURSELF>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE DO-IT-YOURSELF ()
|
|
<TELL "You'll have to do that " D ,ME ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE ITS-RIGHT-HERE ()
|
|
<SAY-ITS>
|
|
<TELL " right here in front of you." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE SAY-ITS ()
|
|
<COND (<IS? ,PRSO ,PLURAL>
|
|
<TELL "They're">
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,FEMALE>
|
|
<TELL "She's">
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,PERSON>
|
|
<TELL "He's">
|
|
<RTRUE>)>
|
|
<TELL "It's">
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LAND ()
|
|
<COND (<HERE? IN-SKY>
|
|
<DO-WALK ,P?DOWN>
|
|
<RTRUE>)>
|
|
<NOT-FLYING>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE NOT-FLYING ()
|
|
<TELL "You're not flying" ,AT-MOMENT>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LAND-ON ()
|
|
<COND (<NOT <HERE? IN-SKY>>
|
|
<NOT-FLYING>
|
|
<RTRUE>)
|
|
(<PRSO? GROUND FLOOR>
|
|
<DO-WALK ,P?DOWN>
|
|
<RTRUE>)>
|
|
<V-WALK-AROUND>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-BANK ()
|
|
<COND (<AND <PRSO? INTDIR>
|
|
<T? ,P-DIRECTION>
|
|
<HERE? IN-SKY>>
|
|
<V-WALK>
|
|
<RTRUE>)>
|
|
<NOT-FLYING>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-FLY ()
|
|
<COND (<AND <PRSO? ROOMS>
|
|
<IN? ,PLAYER ,SADDLE>
|
|
<IN? ,SADDLE ,DACT>>
|
|
<COND (<HERE? IN-SKY>
|
|
<TELL "Try looking down." CR>
|
|
<RTRUE>)>
|
|
<DO-WALK ,P?UP>
|
|
<RTRUE>)>
|
|
<TELL "Psst! Guess what? " ,CANT "fly unassisted." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-FLY-UP ()
|
|
<COND (<AND <PRSO? ROOMS>
|
|
<IN? ,PLAYER ,SADDLE>
|
|
<IN? ,SADDLE ,DACT>>
|
|
<DO-WALK ,P?UP>
|
|
<RTRUE>)>
|
|
<V-FLY>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-FLY-DOWN ()
|
|
<COND (<AND <PRSO? ROOMS>
|
|
<IN? ,PLAYER ,SADDLE>
|
|
<IN? ,SADDLE ,DACT>>
|
|
<DO-WALK ,P?DOWN>
|
|
<RTRUE>)>
|
|
<V-FLY>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-FOLD ()
|
|
<IMPOSSIBLE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-FOLLOW ()
|
|
<COND (<ZERO? ,PRSO>
|
|
<CANT-SEE-ANY>
|
|
<RFATAL>)>
|
|
<TELL "But ">
|
|
<COND (<PRSO? ME WINNER>
|
|
<COND (<EQUAL? ,WINNER ,PLAYER>
|
|
<TELL "you're">)
|
|
(T
|
|
<TELL THE ,WINNER " is">)>
|
|
<PRINT " right here.|">
|
|
<RTRUE>)
|
|
(T
|
|
<TELL THEO>
|
|
<COND (<IS? ,PRSO ,PLURAL>
|
|
<TELL " are">)
|
|
(T
|
|
<TELL " is">)>
|
|
<COND (<OR <VISIBLE? ,PRSO>
|
|
<IN? ,PRSO ,GLOBAL-OBJECTS>>
|
|
<PRINT " right here.|">
|
|
<RTRUE>)>)>
|
|
<TELL "n't visible" ,AT-MOMENT>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PRE-FEED ()
|
|
<COND (<PRE-GIVE T>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE V-FEED ()
|
|
<COND (<PRSI? ME WINNER>
|
|
<COND (<EQUAL? ,WINNER ,PLAYER>
|
|
<TELL "You">)
|
|
(T
|
|
<TELL CTHE ,WINNER>)>)
|
|
(T
|
|
<TELL CTHEI>)>
|
|
<TELL " can't eat that." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SFEED ()
|
|
<PERFORM ,V?FEED ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PRE-GIVE ("OPT" (FEED? <>))
|
|
<COND (<OR <ZERO? ,PRSO>
|
|
<ZERO? ,PRSI>>
|
|
<REFERRING>
|
|
<RTRUE>)
|
|
(<ZERO? ,LIT?>
|
|
<TOO-DARK>
|
|
<RTRUE>)
|
|
(<EQUAL? ,PRSO ,PRSI>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<IN? ,PRSI ,GLOBAL-OBJECTS>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<NOT <IS? ,PRSI ,LIVING>>
|
|
<TELL ,CANT>
|
|
<COND (<T? .FEED?>
|
|
<TELL "feed ">)
|
|
(T
|
|
<TELL "give ">)>
|
|
<TELL "anything to " A ,PRSI ,PERIOD>
|
|
<RTRUE>)
|
|
(<PRSO? MONEY INTNUM>
|
|
<RFALSE>)
|
|
(<PRSI? ME WINNER>
|
|
<COND (<IN? ,PRSO ,WINNER>
|
|
<ALREADY-HAVE>
|
|
<RTRUE>)>)
|
|
(<DONT-HAVE?>
|
|
<RTRUE>)>
|
|
<COND (<AND <IS? ,PRSO ,WORN>
|
|
<IN? ,PRSO ,WINNER>>
|
|
<RETURN <TAKE-OFF-PRSO-FIRST?>>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE V-SGIVE ()
|
|
<PERFORM ,V?GIVE ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-GIVE ()
|
|
<COND (<PRSI? ME>
|
|
<NOBODY-TO-ASK>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,PERSON>
|
|
<TELL CTHEI " shows little interest in your offer." CR>
|
|
<RTRUE>)>
|
|
<NOT-LIKELY ,PRSI>
|
|
<TELL " would accept your offer." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PRE-SHOW ()
|
|
<COND (<OR <ZERO? ,PRSO>
|
|
<ZERO? ,PRSI>>
|
|
<REFERRING>
|
|
<RTRUE>)
|
|
(<ZERO? ,LIT?>
|
|
<TOO-DARK>
|
|
<RTRUE>)
|
|
(<EQUAL? ,PRSO ,PRSI>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<IN? ,PRSI ,GLOBAL-OBJECTS>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<NOT <IS? ,PRSI ,LIVING>>
|
|
<TELL ,CANT>
|
|
<TELL "show things to " A ,PRSI ,PERIOD>
|
|
<RTRUE>)
|
|
(<PRSO? MONEY INTNUM>
|
|
<RFALSE>)
|
|
(<PRSI? ME WINNER>
|
|
<COND (<IN? ,PRSO ,WINNER>
|
|
<ALREADY-HAVE>
|
|
<RTRUE>)>
|
|
<RFALSE>)
|
|
(<DONT-HAVE?>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE V-SSHOW ()
|
|
<PERFORM ,V?SHOW ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SHOW ()
|
|
<TELL CTHEI " glance">
|
|
<COND (<NOT <IS? ,PRSI ,PLURAL>>
|
|
<TELL "s">)>
|
|
<TELL " at " THEO ", but make">
|
|
<COND (<NOT <IS? ,PRSI ,PLURAL>>
|
|
<TELL "s">)>
|
|
<TELL " no comment." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-REFUSE ()
|
|
<COND (<NOT <IS? ,PRSO ,TAKEABLE>>
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>)>
|
|
<TELL "How could you turn down such a tempting " D ,PRSO "?" CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-HIDE ()
|
|
<COND (<HERE? <LOC ,ARCH>>
|
|
<TELL "[under " THE ,ARCH ,BRACKET>
|
|
<ENTER-ARCH>
|
|
<RTRUE>)
|
|
(<HERE? IN-GARDEN>
|
|
<TELL "[behind " THE ,BUSH ,BRACKET>
|
|
<ENTER-BUSH>
|
|
<RTRUE>)>
|
|
<TELL "There aren't any good hiding places here." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-KICK ()
|
|
<COND (<SPARK? <>>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,MONSTER>
|
|
<PERFORM ,V?HIT ,PRSO ,FEET>
|
|
<RTRUE>)>
|
|
<HACK-HACK "Kicking">
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-BOUNCE ()
|
|
<COND (<PRSO? ROOMS>
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>)>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-KNOCK ()
|
|
<COND (<SPARK? <>>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,DOORLIKE>
|
|
<COND (<IS? ,PRSO ,OPENED>
|
|
<ITS-ALREADY "open">
|
|
<RTRUE>)>
|
|
<TELL "There's no answer." CR>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,PERSON>
|
|
<PERFORM ,V?USE ,PRSO>
|
|
<RTRUE>)>
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-KISS ()
|
|
<COND (<NOT <SPARK? <>>>
|
|
<WASTE-OF-TIME>)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LAMP-OFF ()
|
|
<COND (<PRSO? ROOMS>
|
|
<COND (<EQUAL? ,WINNER ,PLAYER>
|
|
<TELL "You pause">)
|
|
(T
|
|
<TELL CTHE ,WINNER " pauses">)>
|
|
<TELL " for a moment." CR>
|
|
<RTRUE>)>
|
|
<V-LAMP-ON T>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LAMP-ON ("OPT" (OFF? <>))
|
|
<TELL ,IMPOSSIBLY "turn that ">
|
|
<COND (<T? .OFF?>
|
|
<TELL "off">)
|
|
(T
|
|
<TELL "on">)>
|
|
<COND (<NOT <EQUAL? ,PRSI <> ,HANDS>>
|
|
<TELL ", " D ,PRSI " or no " D ,PRSI>)>
|
|
<PRINT ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LEAP ()
|
|
<COND (<NOT <PRSO? ROOMS>>
|
|
<TELL "That'd be a cute trick." CR>
|
|
<RTRUE>)
|
|
(<HERE? OVER-JUNGLE>
|
|
<JUNGLE-JUMP>
|
|
<RTRUE>)
|
|
(<HERE? ON-BRIDGE>
|
|
<JUMP-OFF-BRIDGE>
|
|
<RTRUE>)>
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LEAVE ()
|
|
<COND (<IS? ,PRSO ,PLACE>
|
|
<NOT-IN>
|
|
<RTRUE>)
|
|
(<OR <PRSO? ROOMS>
|
|
<NOT <IS? ,PRSO ,TAKEABLE>>>
|
|
<DO-WALK ,P?OUT>
|
|
<RTRUE>)
|
|
(<DONT-HAVE?>
|
|
<RTRUE>)>
|
|
<PERFORM ,V?DROP ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SLEEP ()
|
|
<V-LIE-DOWN>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LIE-DOWN ()
|
|
<TELL "This is no time for that." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LISTEN ("AUX" (OBJ <>))
|
|
<COND (<PRSO? ROOMS SOUND>
|
|
<SET OBJ <GETP ,HERE ,P?HEAR>>
|
|
<COND (<ZERO? .OBJ>
|
|
<TELL ,DONT "hear anything "
|
|
<PICK-NEXT ,YAWNS> ,PERIOD>
|
|
<RTRUE>)>
|
|
<PERFORM ,V?LISTEN .OBJ>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,LIVING>
|
|
<TELL "No doubt " THEO " appreciate">
|
|
<COND (<NOT <IS? ,PRSO ,PLURAL>>
|
|
<TELL "s">)>
|
|
<TELL " your attention." CR>
|
|
<RTRUE>)>
|
|
<TELL "At the moment, " THEO>
|
|
<IS-ARE>
|
|
<TELL "silent." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LOCK ()
|
|
<COND (<OR <IS? ,PRSO ,OPENABLE>
|
|
<IS? ,PRSO ,CONTAINER>>
|
|
<COND (<IS? ,PRSO ,OPENED>
|
|
<YOUD-HAVE-TO "close">
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,LOCKED>
|
|
<TELL CTHEO>
|
|
<IS-ARE>
|
|
<TELL "already locked." CR>
|
|
<RTRUE>)>
|
|
<THING-WONT-LOCK ,PRSI ,PRSO>
|
|
<RTRUE>)>
|
|
<CANT-LOCK>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-UNLOCK ()
|
|
<COND (<OR <IS? ,PRSO ,OPENABLE>
|
|
<IS? ,PRSO ,CONTAINER>>
|
|
<COND (<OR <IS? ,PRSO ,OPENED>
|
|
<NOT <IS? ,PRSO ,LOCKED>>>
|
|
<TELL CTHEO>
|
|
<ISNT-ARENT>
|
|
<TELL " locked." CR>
|
|
<RTRUE>)>
|
|
<THING-WONT-LOCK ,PRSI ,PRSO T>
|
|
<RTRUE>)>
|
|
<CANT-LOCK T>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE CANT-LOCK ("OPT" (UN? <>))
|
|
<TELL ,CANT>
|
|
<COND (<T? .UN?>
|
|
<TELL "un">)>
|
|
<TELL "lock " AO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE THING-WONT-LOCK (THING CLOSED-THING "OPT" (UN? <>))
|
|
<NOT-LIKELY .THING>
|
|
<TELL " could ">
|
|
<COND (<T? .UN?>
|
|
<TELL "un">)>
|
|
<TELL "lock " THE .CLOSED-THING ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
; <ROUTINE V-SCREW-WITH ()
|
|
<NOT-LIKELY ,PRSI>
|
|
<TELL " could help you do that." CR>
|
|
<RTRUE>>
|
|
|
|
; <ROUTINE V-UNSCREW ()
|
|
<TELL ,CANT "unscrew " THEO>
|
|
<COND (<NOT <PRSI? HANDS>>
|
|
<TELL ", with or without " THEI>)>
|
|
<PRINT ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
; <ROUTINE V-UNSCREW-FROM ()
|
|
<COND (<PRSO? PRSI>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<NOT <IN? ,PRSO ,PRSI>>
|
|
<COND (<IS? ,PRSI ,LIVING>
|
|
<TELL CTHEI " doesn't have " THEO ,PERIOD>
|
|
<RTRUE>)>
|
|
<TELL CTHEO>
|
|
<ISNT-ARENT>
|
|
<ON-IN ,PRSI>
|
|
<TELL ,PERIOD>
|
|
<RTRUE>)>
|
|
<TELL ,CANT "unscrew " THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-UNTIE ()
|
|
<TELL ,CANT B ,P-PRSA-WORD C ,SP AO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LOOK-ON ()
|
|
<COND (<ZERO? ,LIT?>
|
|
<TOO-DARK>
|
|
<RFATAL>)
|
|
(<IS? ,PRSO ,SURFACE>
|
|
<TELL ,YOU-SEE>
|
|
<CONTENTS>
|
|
<TELL ,SON THEO ,PERIOD>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,READABLE>
|
|
<TELL CTHEO>
|
|
<IS-ARE>
|
|
<TELL "undecipherable." CR>
|
|
<RTRUE>)>
|
|
<NOTHING-INTERESTING>
|
|
<TELL ,SON THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LOOK-BEHIND ()
|
|
<COND (<ZERO? ,LIT?>
|
|
<TOO-DARK>
|
|
<RFATAL>)
|
|
(<IS? ,PRSO ,DOORLIKE>
|
|
<COND (<IS? ,PRSO ,OPENED>
|
|
<CANT-SEE-MUCH>
|
|
<RTRUE>)>
|
|
<ITS-CLOSED>
|
|
<RTRUE>)>
|
|
<TELL ,NOTHING "behind " THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LOOK-DOWN ("AUX" X)
|
|
<COND (<ZERO? ,LIT?>
|
|
<TOO-DARK>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,PLACE>
|
|
<CANT-SEE-MUCH>
|
|
<RTRUE>)
|
|
(<PRSO? ROOMS>
|
|
<SET X <GETP ,HERE ,P?BELOW>>
|
|
<COND (<T? .X>
|
|
<PERFORM ,V?EXAMINE .X>
|
|
<RTRUE>)
|
|
(<IS? ,HERE ,INDOORS>
|
|
<PERFORM ,V?EXAMINE ,FLOOR>
|
|
<RTRUE>)>
|
|
<PERFORM ,V?EXAMINE ,GROUND>
|
|
<RTRUE>)>
|
|
<PERFORM ,V?LOOK-INSIDE ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LOOK-UP ("AUX" (X <>))
|
|
<COND (<ZERO? ,LIT?>
|
|
<TOO-DARK>
|
|
<RFATAL>)
|
|
(<PRSO? ROOMS>
|
|
<SET X <GETP ,HERE ,P?OVERHEAD>>
|
|
<COND (<T? .X>
|
|
<PERFORM ,V?EXAMINE .X>
|
|
<RTRUE>)>
|
|
<NOTHING-INTERESTING>
|
|
<PRINT ,PERIOD>
|
|
<RTRUE>)>
|
|
<TELL ,CANT "look up " AO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LOOK-INSIDE ()
|
|
<COND (<ZERO? ,LIT?>
|
|
<TOO-DARK>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,PLACE>
|
|
<CANT-SEE-MUCH>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,PERSON>
|
|
<NOT-A "surgeon">
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,LIVING>
|
|
<NOT-A "veterinarian">
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,CONTAINER>
|
|
<COND (<AND <NOT <IS? ,PRSO ,OPENED>>
|
|
<NOT <IS? ,PRSO ,TRANSPARENT>>>
|
|
<ITS-CLOSED>
|
|
<RTRUE>)
|
|
(<SEE-ANYTHING-IN?>
|
|
<TELL ,YOU-SEE>
|
|
<CONTENTS>
|
|
<TELL ,SIN THEO ,PERIOD>
|
|
<RTRUE>)>
|
|
<TELL CTHEO " is empty." CR>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,DOORLIKE>
|
|
<COND (<IS? ,PRSO ,OPENED>
|
|
<CANT-SEE-MUCH>
|
|
<RTRUE>)>
|
|
<ITS-CLOSED>
|
|
<RTRUE>)>
|
|
<TELL ,CANT "look inside " AO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LOOK-OUTSIDE ()
|
|
<COND (<ZERO? ,LIT?>
|
|
<TOO-DARK>
|
|
<RTRUE>)
|
|
(<PRSO? ROOMS>
|
|
<COND (<IS? ,HERE ,INDOORS>
|
|
<NOTHING-INTERESTING>
|
|
<TELL C ,SP>)
|
|
(T
|
|
<TELL ,ALREADY>)>
|
|
<TELL B ,W?OUTSIDE ,PERIOD>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,DOORLIKE>
|
|
<COND (<IS? ,PRSO ,OPENED>
|
|
<CANT-SEE-MUCH>
|
|
<RTRUE>)>
|
|
<ITS-CLOSED>
|
|
<RTRUE>)>
|
|
<TELL ,CANT "look out of " AO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SLOOK-THRU ()
|
|
<PERFORM ,V?LOOK-THRU ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LOOK-THRU ()
|
|
<COND (<ZERO? ,LIT?>
|
|
<TOO-DARK>
|
|
<RFATAL>)
|
|
(<AND <T? ,PRSI>
|
|
<NOT <IS? ,PRSI ,TRANSPARENT>>>
|
|
<TELL ,CANT "look through that." CR>
|
|
<RTRUE>)>
|
|
<NOTHING-INTERESTING>
|
|
<PRINT ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LOOK-UNDER ()
|
|
<COND (<ZERO? ,LIT?>
|
|
<TOO-DARK>
|
|
<RFATAL>)>
|
|
<NOTHING-INTERESTING>
|
|
<TELL " under " THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-WEDGE ()
|
|
<PERFORM ,V?LOOSEN ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LOOSEN ()
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LOWER ()
|
|
<COND (<PRSO? ROOMS>
|
|
<DO-WALK ,P?DOWN>
|
|
<RTRUE>)>
|
|
<V-RAISE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-MAKE ()
|
|
<HOW?>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-MELT ()
|
|
<HOW?>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-MOVE ()
|
|
<COND (<PRSO? ROOMS>
|
|
<V-WALK-AROUND>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,TAKEABLE>
|
|
<TELL "Moving " THEO " would" <PICK-NEXT ,HO-HUM>
|
|
,PERIOD>
|
|
<RTRUE>)>
|
|
<TELL ,IMPOSSIBLY B ,P-PRSA-WORD C ,SP THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-MUNG ()
|
|
<COND (<IS? ,PRSO ,MONSTER>
|
|
<PERFORM ,V?HIT ,PRSO ,PRSI>
|
|
<RTRUE>)
|
|
(<NOT <SPARK? <>>>
|
|
<HACK-HACK "Trying to destroy">)>
|
|
<RTRUE>>
|
|
|
|
|
|
<ROUTINE V-PICK ()
|
|
<COND (<IS? ,PRSO ,OPENABLE>
|
|
<NOT-A "locksmith">
|
|
<RTRUE>)>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-POINT ()
|
|
<COND (<T? ,PRSI>
|
|
<COND (<IS? ,PRSI ,PERSON>
|
|
<TELL CTHEI>
|
|
<COND (<PRSO? PRSI>
|
|
<TELL " looks confused." CR>
|
|
<RTRUE>)>
|
|
<TELL ,GLANCES-AT THEO ", but doesn't respond." CR>
|
|
<RTRUE>)>
|
|
<NOT-LIKELY ,PRSI>
|
|
<PRINT " would respond.|">
|
|
<RTRUE>)>
|
|
<TELL "You point at " THEO>
|
|
<NOTHING-HAPPENS>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE NOTHING-HAPPENS ("OPT" (BUT T))
|
|
<COND (<ZERO? .BUT>
|
|
<PRINTC %<ASCII !\N>>)
|
|
(T
|
|
<TELL ", but n">)>
|
|
<TELL "othing " <PICK-NEXT ,YAWNS> " happens." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SPOINT-AT ()
|
|
<PERFORM ,V?POINT-AT ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PRE-POINT-AT ()
|
|
<COND (<AND <ZERO? ,LIT?>
|
|
<NOT <EQUAL? ,PRSI <> ,ME>>>
|
|
<TOO-DARK>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE V-POINT-AT ()
|
|
<COND (<PRSO? ME HANDS>
|
|
<V-POINT>
|
|
<RTRUE>)>
|
|
<TELL ,CYOU B ,P-PRSA-WORD C ,SP THEO " at " THEI>
|
|
<NOTHING-HAPPENS>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-POP ()
|
|
<TELL ,CANT B ,P-PRSA-WORD C ,SP AO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-POUR ()
|
|
<COND (<PRSO? HANDS>
|
|
<TELL "[To do that, just DROP EVERYTHING.]" CR>
|
|
<RFATAL>)
|
|
(<IS? ,PRSO ,SURFACE>
|
|
<EMPTY-PRSO ,GROUND>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,CONTAINER>
|
|
<COND (<IS? ,PRSO ,OPENED>
|
|
<EMPTY-PRSO ,GROUND>
|
|
<RTRUE>)>
|
|
<ITS-CLOSED>
|
|
<RTRUE>)>
|
|
<TELL ,CANT "empty that." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-POUR-FROM ()
|
|
<COND (<PRSO? PRSI>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<PRSI? HANDS>
|
|
<PERFORM ,V?DROP ,PRSO>
|
|
<RTRUE>)
|
|
(<AND <NOT <IS? ,PRSI ,CONTAINER>>
|
|
<NOT <IS? ,PRSI ,SURFACE>>>
|
|
<TELL ,CANT B ,P-PRSA-WORD " things from " A ,PRSI ,PERIOD>
|
|
<RTRUE>)
|
|
(<AND <IS? ,PRSI ,CONTAINER>
|
|
<NOT <IS? ,PRSI ,OPENED>>>
|
|
<ITS-CLOSED ,PRSI>
|
|
<RTRUE>)
|
|
(<IN? ,PRSO ,PRSI>
|
|
<COND (<IS? ,PRSO ,TAKEABLE>
|
|
<TELL CTHEO C ,SP>
|
|
<FALLS>
|
|
<RTRUE>)>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)>
|
|
<TELL CTHEO " isn't in " THEI ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-EMPTY-INTO ()
|
|
<COND (<PRSI? HANDS ME>
|
|
<V-EMPTY>
|
|
<RTRUE>)
|
|
(<PRSI? GROUND FLOOR GLOBAL-ROOM>
|
|
<COND (<HERE? IN-SKY>
|
|
<CANT-FROM-HERE>
|
|
<RTRUE>)>
|
|
<V-EMPTY <LOC ,WINNER>>
|
|
<RTRUE>)
|
|
(<IS? ,PRSI ,SURFACE>
|
|
<V-EMPTY ,PRSI>
|
|
<RTRUE>)
|
|
(<IS? ,PRSI ,CONTAINER>
|
|
<COND (<IS? ,PRSI ,OPENED>
|
|
<V-EMPTY ,PRSI>
|
|
<RTRUE>)>
|
|
<ITS-CLOSED ,PRSI>
|
|
<RTRUE>)>
|
|
<TELL ,CANT "empty " THEO>
|
|
<ON-IN ,PRSI>
|
|
<TELL ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-EMPTY ("OPT" (DEST 0))
|
|
<COND (<IS? ,PRSO ,PERSON>)
|
|
(<IS? ,PRSO ,LIVING>)
|
|
(<IS? ,PRSO ,MONSTER>)
|
|
(<IS? ,PRSO ,SURFACE>
|
|
<EMPTY-PRSO .DEST>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,CONTAINER>
|
|
<COND (<IS? ,PRSO ,OPENED>
|
|
<EMPTY-PRSO .DEST>
|
|
<RTRUE>)>
|
|
<ITS-CLOSED>
|
|
<RTRUE>)>
|
|
<TELL ,IMPOSSIBLY "empty " THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE EMPTY-PRSO (DEST "AUX" (ANY 0) OBJ NXT X ICAP ILOAD OSIZE)
|
|
<COND (<T? .DEST>
|
|
<SET X <LOC .DEST>>
|
|
<COND (<OR <ZERO? .X>
|
|
<EQUAL? ,PRSO .DEST>>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<OR <EQUAL? .X ,PRSO>
|
|
<IN? .X ,PRSO>>
|
|
<YOUD-HAVE-TO "remove" .DEST>
|
|
<RTRUE>)>)
|
|
(T
|
|
<SET DEST ,WINNER>)>
|
|
<COND (<NOT <SEE-ANYTHING-IN?>>
|
|
<TELL "There's nothing">
|
|
<ON-IN>
|
|
<TELL ,PERIOD>
|
|
<RTRUE>)>
|
|
<SETG P-MULT? T>
|
|
<COND (<NOT <EQUAL? .DEST ,WINNER <LOC ,WINNER>>>
|
|
<SET ILOAD <WEIGHT .DEST>>
|
|
<SET ILOAD <- .ILOAD <GETP .DEST ,P?SIZE>>>
|
|
<SET ICAP <GETP .DEST ,P?CAPACITY>>)>
|
|
<COND (<SET OBJ <FIRST? ,PRSO>>
|
|
<REPEAT ()
|
|
<SET NXT <NEXT? .OBJ>>
|
|
<COND (<NOT <IS? .OBJ ,TAKEABLE>>)
|
|
(<NOT <IS? .OBJ ,NODESC>>
|
|
<INC ANY>
|
|
<SET OSIZE <GETP .OBJ ,P?SIZE>>
|
|
<COND (<NOT <IS? .OBJ ,NOARTICLE>>
|
|
<TELL ,XTHE>)>
|
|
<TELL D .OBJ ": ">
|
|
<COND (<EQUAL? .DEST ,WINNER>
|
|
<SET X <PERFORM ,V?TAKE .OBJ ,PRSO>>
|
|
<COND (<EQUAL? .X ,M-FATAL>
|
|
<RETURN>)>)
|
|
(<EQUAL? .DEST <LOC ,WINNER>>
|
|
<COND (<IS? .OBJ ,PLURAL>
|
|
<TELL "They ">)
|
|
(T
|
|
<TELL "It ">)>
|
|
<FALLS .OBJ>)
|
|
(<G? .OSIZE .ICAP>
|
|
<TELL CTHE .OBJ>
|
|
<IS-ARE .OBJ>
|
|
<TELL "too big to fit in "
|
|
THE .DEST ,PERIOD>)
|
|
(<G? <+ .ILOAD .OSIZE> .ICAP>
|
|
<NO-ROOM-IN .DEST>)
|
|
(T
|
|
<UNMAKE .OBJ ,WIELDED>
|
|
<MOVE .OBJ .DEST>
|
|
<TELL "Done." CR>)>)>
|
|
<SET OBJ .NXT>
|
|
<COND (<ZERO? .OBJ>
|
|
<RETURN>)>>)>
|
|
<WINDOW ,SHOWING-ALL>
|
|
<SETG P-MULT? <>>
|
|
<COND (<ZERO? .ANY>
|
|
<TELL ,NOTHING "you can take." CR>)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-PULL ()
|
|
<COND (<NOT <SPARK? <>>>
|
|
<HACK-HACK "Pulling on">)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-PUSH ()
|
|
<COND (<NOT <SPARK? <>>>
|
|
<HACK-HACK "Pushing around">)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-PUSH-TO ()
|
|
<COND (<AND <PRSO? HANDS>
|
|
<T? ,PRSI>>
|
|
<PERFORM ,V?REACH-IN ,PRSI>
|
|
<RTRUE>)>
|
|
<PUSHOVER>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PUSHOVER ()
|
|
<TELL ,CANT "push " THEO " around like that." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-PUSH-UP ()
|
|
<COND (<AND <PRSO? HANDS>
|
|
<T? ,PRSI>>
|
|
<PERFORM ,V?RAISE ,PRSI>
|
|
<RTRUE>)>
|
|
<PUSHOVER>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-PUSH-DOWN ()
|
|
<COND (<AND <PRSO? HANDS>
|
|
<T? ,PRSI>>
|
|
<PERFORM ,V?LOWER ,PRSI>
|
|
<RTRUE>)>
|
|
<PUSHOVER>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PRE-PUT ("AUX" L)
|
|
<SET L <LOC ,PRSO>>
|
|
<COND (<PRSO? PRSI>
|
|
<HOW?>
|
|
<RTRUE>)
|
|
(<PRSI? INTDIR RIGHT LEFT>
|
|
<NYMPH-APPEARS>
|
|
<TELL "You really must specify an object">
|
|
<PRINT ". Bye!\"| She disappears with a wink.|">
|
|
<RTRUE>)
|
|
(<PRSI? HANDS HEAD>
|
|
<COND (<AND <PRSI? HEAD>
|
|
<PRSO? HELM>>
|
|
<PERFORM ,V?WEAR ,PRSO>
|
|
<RTRUE>)>
|
|
<NOT-LIKELY>
|
|
<TELL " would fit very well." CR>
|
|
<RTRUE>)
|
|
(<OR <EQUAL? ,FEET ,PRSO ,PRSI>
|
|
<EQUAL? ,HEAD ,PRSO ,PRSI>>
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>)
|
|
(<ZERO? ,LIT?>
|
|
<COND (<AND <PRSI? GRUE URGRUE>
|
|
<WEARING-MAGIC? ,HELM>>)
|
|
(<IN? ,PRSI ,WINNER>)
|
|
(T
|
|
<TOO-DARK>
|
|
<RTRUE>)>)>
|
|
<COND (<PRSO? MONEY INTNUM>
|
|
<BENJAMIN>
|
|
<RTRUE>)
|
|
(<PRSI? GROUND FLOOR>
|
|
<PERFORM ,V?DROP ,PRSO>
|
|
<RTRUE>)
|
|
(<IN? ,PRSI ,GLOBAL-OBJECTS>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<PRSO? HANDS>
|
|
<PERFORM ,V?REACH-IN ,PRSI>
|
|
<RTRUE>)
|
|
(<EQUAL? .L ,PRSI>
|
|
<TELL CTHEO>
|
|
<IS-ARE>
|
|
<TELL "already">
|
|
<ON-IN ,PRSI>
|
|
<TELL ,PERIOD>
|
|
<RTRUE>)
|
|
(<OR <EQUAL? ,PRSO ,PRSI>
|
|
<EQUAL? .L ,GLOBAL-OBJECTS>
|
|
<NOT <IS? ,PRSO ,TAKEABLE>>>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<NOT <ACCESSIBLE? ,PRSI>>
|
|
<CANT-SEE-ANY ,PRSI>
|
|
<RTRUE>)
|
|
(<AND <IS? ,PRSO ,WORN>
|
|
<EQUAL? .L ,WINNER>
|
|
<NOT <PRSI? ME WINNER>>>
|
|
<RETURN <TAKE-OFF-PRSO-FIRST?>>)
|
|
(<AND <IN? .L ,WINNER>
|
|
<VISIBLE? ,PRSO>>
|
|
<TAKING-OBJ-FIRST ,PRSO>
|
|
<COND (<ITAKE>
|
|
<RFALSE>)>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE TAKE-OFF-PRSO-FIRST? ("AUX" X)
|
|
<SET X <GETP ,PRSO ,P?EFFECT>>
|
|
<COND (<ZERO? .X>)
|
|
(<PRSO? CLOAK>)
|
|
(<AND <IN? ,CLOAK ,PLAYER>
|
|
<IS? ,CLOAK ,WORN>>
|
|
<YOUD-HAVE-TO "take off" ,CLOAK>
|
|
<RTRUE>)>
|
|
<UNMAKE ,PRSO ,WORN>
|
|
<WINDOW ,SHOWING-INV>
|
|
<TELL "[taking off " THEO " first]" CR>
|
|
<COND (<AND <PRSO? AMULET>
|
|
<T? ,AMULET-TIMER>>
|
|
<NORMAL-STRENGTH>
|
|
<RTRUE>)
|
|
(<HOTFOOT? T>
|
|
<RTRUE>)
|
|
(<AND <PRSO? HELM>
|
|
<NOT <IS? ,PRSO ,NEUTRALIZED>>>
|
|
<NORMAL-IQ>)>
|
|
<COND (<T? .X>
|
|
<UPDATE-STAT <- 0 .X> ,ARMOR-CLASS>)>
|
|
<TELL ,TAB>
|
|
<RFALSE>>
|
|
|
|
<ROUTINE PRE-PUT-ON ()
|
|
<COND (<PRE-PUT>
|
|
<RTRUE>)
|
|
(<PRSI? CHEST>
|
|
<RFALSE>)
|
|
(<NOT <IS? ,PRSI ,SURFACE>>
|
|
<NO-GOOD-SURFACE>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE NO-GOOD-SURFACE ("OPT" (OBJ ,PRSI))
|
|
<TELL "There's no good surface on " THE .OBJ ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-PUT-ON ()
|
|
<COND (<PRSI? ME>
|
|
<PERFORM ,V?WEAR ,PRSO>
|
|
<RTRUE>)>
|
|
<V-PUT>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-PUT ("AUX" OL ICAP ILOAD OSIZE)
|
|
<SET OL <LOC ,PRSO>>
|
|
<COND (<OR <ZERO? .OL>
|
|
<AND <T? ,PRSI>
|
|
<NOT <IS? ,PRSI ,SURFACE>>
|
|
<NOT <IS? ,PRSI ,CONTAINER>>>>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<AND <NOT <IS? ,PRSI ,OPENED>>
|
|
<NOT <IS? ,PRSI ,SURFACE>>>
|
|
<THIS-IS-IT ,PRSI>
|
|
<TELL CTHEI>
|
|
<ISNT-ARENT ,PRSI>
|
|
<TELL " open." CR>
|
|
<RTRUE>)
|
|
(<NOT <EQUAL? .OL ,WINNER>>
|
|
<TELL "Maybe you should take " THEO>
|
|
<OUT-OF-LOC .OL>
|
|
<TELL ,SFIRST>
|
|
<RTRUE>)>
|
|
<SET ILOAD <WEIGHT ,PRSI>>
|
|
<SET ILOAD <- .ILOAD <GETP ,PRSI ,P?SIZE>>>
|
|
<SET ICAP <GETP ,PRSI ,P?CAPACITY>>
|
|
<SET OSIZE <GETP ,PRSO ,P?SIZE>>
|
|
<COND (<G? .OSIZE .ICAP>
|
|
<TELL CTHEO>
|
|
<IS-ARE>
|
|
<TELL "too big to fit">
|
|
<ON-IN ,PRSI>
|
|
<TELL ,PERIOD>
|
|
<RTRUE>)
|
|
(<G? <+ .ILOAD .OSIZE> .ICAP>
|
|
<NO-ROOM-IN ,PRSI>
|
|
<RTRUE>)>
|
|
<WINDOW ,SHOWING-ALL>
|
|
<UNMAKE ,PRSO ,WIELDED>
|
|
<MOVE ,PRSO ,PRSI>
|
|
<MAKE ,PRSO ,TOUCHED>
|
|
<COND (<T? ,P-MULT?>
|
|
<TELL "Done." CR>
|
|
<RTRUE>)>
|
|
<TELL "You put " THEO>
|
|
<ON-IN ,PRSI>
|
|
<TELL ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE NO-ROOM-IN (OBJ)
|
|
<TELL "There isn't enough room">
|
|
<ON-IN .OBJ>
|
|
<TELL ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
; <ROUTINE V-SCREW ()
|
|
<TELL ,CANT "screw ">
|
|
<O-INTO-I>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-PLUG-IN ()
|
|
<TELL ,CANT B ,P-PRSA-WORD C ,SP>
|
|
<O-INTO-I>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE NEVER-FIT ()
|
|
<TELL "You'd never fit ">
|
|
<O-INTO-I>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE O-INTO-I ("OPT" NOCR)
|
|
<TELL THEO ,SINTO THEI>
|
|
<COND (<NOT <ASSIGNED? NOCR>>
|
|
<TELL ,PERIOD>)>
|
|
<RFALSE>>
|
|
|
|
<ROUTINE V-UNPLUG ()
|
|
<TELL CTHEO>
|
|
<ISNT-ARENT>
|
|
<TELL " connected to ">
|
|
<COND (<T? ,PRSI>
|
|
<TELL THEI>)
|
|
(T
|
|
<TELL "anything">)>
|
|
<PRINT ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-PUT-BEHIND ()
|
|
<TELL "That hiding place is too obvious." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-PUT-UNDER ()
|
|
<TELL ,CANT "put anything under that." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-RAPE ()
|
|
<TELL "What a wholesome idea." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-RAISE ()
|
|
<COND (<PRSO? ROOMS>
|
|
<V-STAND>
|
|
<RTRUE>)
|
|
(<NOT <SPARK? <>>>
|
|
<HACK-HACK "Toying in this way with">)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-REACH-IN ("AUX" OBJ)
|
|
<SET OBJ <FIRST? ,PRSO>>
|
|
<COND (<OR <IS? ,PRSO ,PERSON>
|
|
<IS? ,PRSO ,LIVING>>
|
|
<NOT-A "surgeon">
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,DOORLIKE>
|
|
<COND (<IS? ,PRSO ,OPENED>
|
|
<REACH-INTO-PRSO>
|
|
<TELL ", but experience nothing "
|
|
<PICK-NEXT ,YAWNS> ,PERIOD>
|
|
<RTRUE>)>
|
|
<ITS-CLOSED>
|
|
<RTRUE>)
|
|
(<NOT <IS? ,PRSO ,CONTAINER>>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<NOT <IS? ,PRSO ,OPENED>>
|
|
<TELL "It's not open." CR>
|
|
<RTRUE>)
|
|
(<AND <IN? ,PRSO ,PLAYER>
|
|
<IS? ,PRSO ,WORN>>
|
|
<YOUD-HAVE-TO "take off">
|
|
<RTRUE>)
|
|
(<OR <ZERO? .OBJ>
|
|
<NOT <IS? .OBJ ,TAKEABLE>>>
|
|
<PRINT "It's empty.|">
|
|
<RTRUE>)>
|
|
<THIS-IS-IT .OBJ>
|
|
<REACH-INTO-PRSO>
|
|
<TELL " and feel " B ,W?SOMETHING ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE REACH-INTO-PRSO ()
|
|
<TELL "You reach into " THEO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-READ ()
|
|
<COND (<ZERO? ,LIT?>
|
|
<TOO-DARK>
|
|
<RFATAL>)
|
|
(<NOT <IS? ,PRSO ,READABLE>>
|
|
<HOW-READ>
|
|
<TELL "?" CR>
|
|
<RTRUE>)>
|
|
<TELL ,NOTHING "written on it." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-READ-TO ()
|
|
<COND (<ZERO? ,LIT?>
|
|
<TOO-DARK>
|
|
<RFATAL>)
|
|
(<NOT <IS? ,PRSO ,READABLE>>
|
|
<HOW-READ>
|
|
<TELL ,STO A ,PRSI "?" CR>
|
|
<RTRUE>)
|
|
(<EQUAL? ,WINNER ,PLAYER>
|
|
<NOT-LIKELY ,PRSI>
|
|
<TELL " would appreciate your reading." CR>
|
|
<RTRUE>)>
|
|
<TELL "Maybe you ought to do it." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE HOW-READ ()
|
|
<TELL "How can you read " AO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-RELEASE ()
|
|
<COND (<IN? ,PRSO ,WINNER>
|
|
<PERFORM ,V?DROP ,PRSO>
|
|
<RTRUE>)>
|
|
<COND (<PRSO? ME>
|
|
<TELL "You aren't">)
|
|
(T
|
|
<TELL CTHEO>
|
|
<ISNT-ARENT>)>
|
|
<TELL " being held by anything." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-REPLACE ()
|
|
<COND (<PRSO? ME>
|
|
<TELL "Easily done." CR>
|
|
<RTRUE>)>
|
|
<TELL CTHEO " doesn't need replacement." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-REPAIR ()
|
|
<COND (<PRSO? ME>
|
|
<TELL "You aren't">)
|
|
(T
|
|
<TELL CTHEO>
|
|
<ISNT-ARENT>)>
|
|
<TELL " in need of repair." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-HELP ()
|
|
<TELL
|
|
"[If you're really stuck, maps and InvisiClues(TM) Hint Booklets are available at most Infocom dealers, or use the order form included in your game package.]" CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-RESCUE ()
|
|
<COND (<PRSO? ME>
|
|
<COND (<EQUAL? ,WINNER ,PLAYER>
|
|
<V-HELP>
|
|
<RTRUE>)>
|
|
<HOW?>
|
|
<RTRUE>)>
|
|
<TELL CTHEO>
|
|
<COND (<IS? ,PRSO ,PLURAL>
|
|
<TELL " do">)
|
|
(T
|
|
<TELL " does">)>
|
|
<TELL "n't need any help." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-RIDE ()
|
|
<COND (<IS? ,PRSO ,LIVING>
|
|
<NOT-LIKELY>
|
|
<TELL " wants to play piggyback." CR>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,VEHICLE>
|
|
<PERFORM ,V?ENTER ,PRSO>
|
|
<RTRUE>)>
|
|
<TELL ,CANT "ride that." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-TOUCH ()
|
|
<COND (<NOT <SPARK? <>>>
|
|
<HACK-HACK "Fiddling with">)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-STOUCH-TO ()
|
|
<PERFORM ,V?TOUCH-TO ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-TOUCH-TO ()
|
|
<COND (<SPARK-TO?>
|
|
<RTRUE>)>
|
|
<TELL ,CYOU B ,P-PRSA-WORD C ,SP THEO " against " THEI>
|
|
<NOTHING-HAPPENS>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SCRATCH ()
|
|
<COND (<NOT <SPARK? <>>>
|
|
<TELL ,CYOU B ,P-PRSA-WORD " your fingers across " THEO>
|
|
<BUT-NOTHING-HAPPENS>)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE BUT-NOTHING-HAPPENS ()
|
|
<TELL ", but nothing " <PICK-NEXT ,YAWNS> " happens." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE BUT-FIND-NOTHING ()
|
|
<TELL ", but nothing " <PICK-NEXT ,YAWNS> " turns up." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-PEEL ()
|
|
<TELL ,CANT B ,P-PRSA-WORD C ,SP THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SCRAPE-ON ()
|
|
<COND (<SPARK-TO?>
|
|
<RTRUE>)
|
|
(<PRSO? HANDS>
|
|
<PERFORM ,V?TOUCH ,PRSI>
|
|
<RTRUE>)
|
|
(<PRSO? FEET>
|
|
<PERFORM ,V?KICK ,PRSI>
|
|
<RTRUE>)>
|
|
<TELL ,CYOU B ,P-PRSA-WORD C ,SP THEO>
|
|
<COND (<NOT <EQUAL? ,PRSI <> ,HANDS>>
|
|
<TELL ,SON THEI>)>
|
|
<NOTHING-HAPPENS>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-BOW ()
|
|
<HACK-HACK "Paying respect to">
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SEARCH ()
|
|
<COND (<IS? ,PRSO ,PLACE>
|
|
<CANT-SEE-MUCH>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,CONTAINER>
|
|
<COND (<AND <NOT <IS? ,PRSO ,OPENED>>
|
|
<NOT <IS? ,PRSO ,TRANSPARENT>>>
|
|
<YOUD-HAVE-TO "open">
|
|
<RTRUE>)>
|
|
<TELL ,YOU-SEE>
|
|
<CONTENTS>
|
|
<TELL " inside " THEO ,PERIOD>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,SURFACE>
|
|
<TELL ,YOU-SEE>
|
|
<CONTENTS>
|
|
<TELL ,SON THEO ,PERIOD>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,PERSON>
|
|
<PERFORM ,V?USE ,PRSO>
|
|
<RTRUE>)>
|
|
<NOTHING-INTERESTING>
|
|
<PRINT ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SHAKE ()
|
|
<COND (<SPARK? <>>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,PERSON>
|
|
<PERFORM ,V?ALARM ,PRSO>
|
|
<RTRUE>)
|
|
(<AND <NOT <IS? ,PRSO ,TAKEABLE>>
|
|
<NOT <IS? ,PRSO ,TRYTAKE>>>
|
|
<HACK-HACK "Shaking">
|
|
<RTRUE>)>
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SFIRE-AT ()
|
|
<PERFORM ,V?FIRE-AT ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-FIRE-AT ()
|
|
<TELL ,CANT B ,P-PRSA-WORD C ,SP THEO " at anything." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-ZAP-WITH ()
|
|
<TELL ,CANT "zap things with " A ,PRSI ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SIT ()
|
|
<COND (<PRSO? ROOMS>
|
|
<COND (<HERE? IN-CHAPEL>
|
|
<ENTER-PEW>
|
|
<RTRUE>)>)>
|
|
<NO-PLACE-TO-PRSA>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE NO-PLACE-TO-PRSA ()
|
|
<TELL "There's no place to " B ,P-PRSA-WORD " here." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SMELL ("AUX" X)
|
|
<COND (<PRSO? ROOMS>
|
|
<SET X <GETP ,HERE ,P?ODOR>>
|
|
<COND (<ZERO? .X>
|
|
<TELL ,DONT "smell anything "
|
|
<PICK-NEXT ,YAWNS> ,PERIOD>
|
|
<RTRUE>)>
|
|
<PERFORM ,V?SMELL .X>
|
|
<RTRUE>)
|
|
(<NOT <IS? ,PRSO ,LIVING>>
|
|
<TELL "It">)
|
|
(<IS? ,PRSO ,FEMALE>
|
|
<TELL "She">)
|
|
(T
|
|
<TELL "He">)>
|
|
<TELL " smells just like " AO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-PLANT ()
|
|
<IMPOSSIBLE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-UPROOT ()
|
|
<TELL CTHEO " isn't rooted anywhere." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SPIN ()
|
|
<COND (<PRSO? ROOMS ME>
|
|
<TELL "You begin to feel a little dizzy." CR>
|
|
<RTRUE>)>
|
|
<TELL ,CANT "spin that." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SQUEEZE ()
|
|
<COND (<NOT <SPARK? <>>>
|
|
<WASTE-OF-TIME>)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-DUCK ()
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-STAND ()
|
|
<COND (<PRSO? ROOMS>
|
|
<COND (<IN? ,PLAYER ,PEW>
|
|
<EXIT-PEW>
|
|
<RTRUE>)>)>
|
|
<ALREADY-STANDING>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE ALREADY-STANDING ()
|
|
<TELL ,ALREADY "standing." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-STAND-ON ()
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-STAND-UNDER ()
|
|
<IMPOSSIBLE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SWING ()
|
|
<COND (<ZERO? ,PRSI>
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>)>
|
|
<PERFORM ,V?HIT ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-DIVE ()
|
|
<COND (<PRSO? ROOMS>
|
|
<COND (<HERE? IN-SKY>
|
|
<DISMOUNT-DACT>
|
|
<RTRUE>)>)>
|
|
<V-SWIM>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SWIM ()
|
|
<COND (<PRSO? ROOMS>
|
|
<COND (<HERE? ON-BRIDGE>
|
|
<JUMP-OFF-BRIDGE>
|
|
<RTRUE>)
|
|
(<HERE? JUN0>
|
|
<ENTER-QUICKSAND>
|
|
<RTRUE>)
|
|
(<HERE? ON-WHARF AT-LEDGE AT-BRINE>
|
|
<DO-WALK ,P?DOWN>
|
|
<RTRUE>)>
|
|
<NO-PLACE-TO-PRSA>
|
|
<RTRUE>)
|
|
(<AND <PRSO? INTDIR>
|
|
<T? ,P-DIRECTION>
|
|
<EQUAL? ,WINNER ,PLAYER>>
|
|
<TELL ,CANT B ,P-PRSA-WORD " that way from here." CR>
|
|
<RTRUE>)>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SGET-FOR ()
|
|
<PERFORM ,V?TAKE ,PRSI>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-GET-FOR ()
|
|
<PERFORM ,V?TAKE ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-TAKE-WITH ()
|
|
<HOW?>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-TAKE-OFF ("AUX" X)
|
|
<COND (<PRSO? ROOMS>
|
|
<SET X <LOC ,WINNER>>
|
|
<COND (<AND <EQUAL? ,P-PRSA-WORD ,W?GET>
|
|
<NOT <EQUAL? .X ,HERE>>
|
|
<IS? .X ,VEHICLE>>
|
|
<PERFORM ,V?EXIT .X>
|
|
<RTRUE>)>
|
|
<V-WALK-AROUND>
|
|
<RTRUE>)
|
|
(<PRSO? HANDS FEET>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,PLACE>
|
|
<NOT-IN>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,TAKEABLE>
|
|
<SET X <LOC ,PRSO>>
|
|
<COND (<ZERO? .X>
|
|
<REFERRING>
|
|
<RTRUE>)
|
|
(<AND <EQUAL? .X ,WINNER>
|
|
<IS? ,PRSO ,CLOTHING>>
|
|
<COND (<IS? ,PRSO ,WORN>
|
|
<COND (<HOTFOOT?>
|
|
<RTRUE>)>
|
|
<TAKEOFF>
|
|
<SET X <GETP ,PRSO ,P?EFFECT>>
|
|
<COND (<T? .X>
|
|
<UPDATE-STAT <- 0 .X> ,ARMOR-CLASS>)>
|
|
<RTRUE>)>
|
|
<PRINT "You're not wearing ">
|
|
<TELL THEO ,PERIOD>
|
|
<RTRUE>)
|
|
(<NOT <IS? .X ,SURFACE>>
|
|
<TELL CTHEO " isn't \"on\" anything." CR>
|
|
<RTRUE>)>
|
|
<PERFORM ,V?TAKE ,PRSO>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,VEHICLE>
|
|
<PERFORM ,V?EXIT ,PRSO>
|
|
<RTRUE>)>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE TAKEOFF ()
|
|
<WINDOW ,SHOWING-INV>
|
|
<UNMAKE ,PRSO ,WORN>
|
|
<TELL "You take off " THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE HOTFOOT? ("OPT" INDENT)
|
|
<COND (<AND <PRSO? RING>
|
|
<T? ,MAGMA-TIMER>
|
|
<HERE? FOREST-EDGE ON-TRAIL ON-PEAK>>
|
|
<COND (<ASSIGNED? INDENT>
|
|
<TELL ,TAB>)>
|
|
<TELL "You slip " THEO " off " 'HANDS ,PTAB>
|
|
<ITALICIZE "Whoosh">
|
|
<TELL
|
|
"! Your flesh bakes in the volcanic heat of the lava underfoot">
|
|
<JIGS-UP>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE V-TASTE ()
|
|
<PERFORM ,V?EAT ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-ADJUST ()
|
|
<COND (<NOT <SPARK? <>>>
|
|
<TELL CTHEO " doesn't need adjustment." CR>)>
|
|
<RTRUE>>
|
|
|
|
"*** CHARACTER INTERACTION DEFAULTS ***"
|
|
|
|
<ROUTINE SILLY-SPEAK? ()
|
|
<COND (<EQUAL? ,PRSO <> ,ROOMS>
|
|
<RFALSE>)
|
|
(<NOT <IS? ,PRSO ,PERSON>>
|
|
<NOT-LIKELY>
|
|
<PRINT " would respond.|">
|
|
<PCLEAR>
|
|
<RTRUE>)
|
|
(<PRSO? ME PRSI WINNER>
|
|
<WASTE-OF-TIME>
|
|
<PCLEAR>
|
|
<RTRUE>)
|
|
(T
|
|
<THIS-IS-IT ,PRSO>
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE V-ASK-ABOUT ()
|
|
<COND (<SILLY-SPEAK?>
|
|
<RFATAL>)
|
|
(<EQUAL? ,WINNER ,PRSI>
|
|
<WASTE-OF-TIME>
|
|
<RFATAL>)
|
|
(<OR <PRSO? ME>
|
|
<EQUAL? ,WINNER ,PLAYER>>
|
|
<TALK-TO-SELF>
|
|
<RTRUE>)>
|
|
<NO-RESPONSE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-REPLY ("AUX" WHO)
|
|
<COND (<SILLY-SPEAK?>
|
|
<RFATAL>)>
|
|
<NO-RESPONSE ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-QUESTION ()
|
|
<COND (<EQUAL? ,WINNER ,PLAYER>
|
|
<TO-DO-THING-USE "ask about" "ASK CHARACTER ABOUT">
|
|
<RFATAL>)>
|
|
<NO-RESPONSE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-ALARM ()
|
|
<COND (<SILLY-SPEAK?>
|
|
<RFATAL>)>
|
|
<COND (<PRSO? ROOMS ME>
|
|
<TELL ,ALREADY "wide awake." CR>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,LIVING>
|
|
<TELL CTHEO>
|
|
<IS-ARE>
|
|
<TELL "already wide awake." CR>
|
|
<RTRUE>)>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-YELL ()
|
|
<COND (<PRSO? ROOMS>
|
|
<TELL "You begin to get a sore throat." CR>
|
|
<COND (<HERE? ON-WHARF>
|
|
<TELL ,TAB>
|
|
<NOT-DEAF>)>
|
|
<RTRUE>)>
|
|
<V-SAY>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LAUGH ()
|
|
<COND (<PRSO? ROOMS>
|
|
<TELL
|
|
"There's a place for people who " B ,P-PRSA-WORD " without reason." CR>
|
|
<RTRUE>)
|
|
(<EQUAL? ,P-PRSA-WORD ,W?INSULT ,W?OFFEND>
|
|
<COND (<IS? ,PRSO ,MONSTER>
|
|
<TELL CTHEO " look">
|
|
<COND (<NOT <IS? ,PRSO ,PLURAL>>
|
|
<TELL "s">)>
|
|
<TELL " mad enough already." CR>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,LIVING>
|
|
<TELL CTHEO " remain">
|
|
<COND (<NOT <IS? ,PRSO ,PLURAL>>
|
|
<TELL "s">)>
|
|
<TELL " silent. Maybe you should too." CR>
|
|
<RTRUE>)>
|
|
<NOT-LIKELY>
|
|
<TELL " would be offended.">
|
|
<RTRUE>)>
|
|
<V-SAY>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PRE-NAME ()
|
|
<COND (<ZERO? ,PRSI>
|
|
<SEE-MANUAL "name things">
|
|
<RTRUE>)
|
|
(<NOT <PRSI? QWORD>>
|
|
<HOLLOW-VOICE "reserved by the Implementors">
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE V-NAME ("OPT" (OBJ ,PRSO)
|
|
"AUX" TBL WORD BASE LEN PTR CHAR COMPLEX BAD ANY X)
|
|
<PCLEAR>
|
|
<SET TBL <GETP .OBJ ,P?NAME-TABLE>>
|
|
<COND (<OR <NOT <IS? .OBJ ,NAMEABLE>>
|
|
<ZERO? .TBL>>
|
|
<TELL "Alas; " THE .OBJ>
|
|
<COND (<IS? ,PRSO ,PERSON>
|
|
<TELL " already ha">
|
|
<COND (<IS? ,PRSO ,PLURAL>
|
|
<TELL "ve">)
|
|
(T
|
|
<TELL "s">)>
|
|
<TELL " a Name." CR>
|
|
<RTRUE>)>
|
|
<TELL " cannot be Named." CR>
|
|
<RTRUE>)
|
|
(<IS? .OBJ ,NAMED>
|
|
<TELL "You've already assigned a Name to " THE .OBJ
|
|
". To alter that Name, you must first Unmake ">
|
|
<PRONOUN .OBJ T>
|
|
<TELL
|
|
", a dangerous procedure requiring years of magical training. Someday, perhaps..." CR>
|
|
<RTRUE>)>
|
|
|
|
<COPYT .TBL 0 %<+ ,NAMES-LENGTH 1>>
|
|
|
|
; "Convert word typed into a byte LTABLE in AUX-TABLE."
|
|
|
|
<SET BASE <REST ,P-LEXV <* ,P-QWORD 2>>>
|
|
<SET LEN <GETB .BASE 2>> ; "Length of word typed."
|
|
<PUTB ,AUX-TABLE 0 .LEN> ; "Save it here."
|
|
<SET BASE <REST ,P-INBUF <GETB .BASE 3>>> ; "And start"
|
|
<COPYT .BASE <REST ,AUX-TABLE 1> .LEN>
|
|
<PUTB ,AUX-TABLE <+ .LEN 1> 0> ; "Zero-terminate."
|
|
|
|
; "Scan for obviously silly names."
|
|
|
|
<SET PTR .LEN>
|
|
<SET BAD 0>
|
|
<SET ANY 0>
|
|
<REPEAT ()
|
|
<SET CHAR <GETB ,AUX-TABLE .PTR>>
|
|
<COND (<AND <G? .CHAR %<- <ASCII !\a> 1>>
|
|
<L? .CHAR %<+ <ASCII !\z> 1>>>
|
|
<INC ANY>)
|
|
(T
|
|
<INC BAD>
|
|
<RETURN>)>
|
|
<COND (<DLESS? PTR 1>
|
|
<RETURN>)>>
|
|
<COND (<OR <ZERO? .ANY>
|
|
<T? .BAD>>
|
|
<HOLLOW-VOICE "too complex">
|
|
<RTRUE>)
|
|
(<G? .LEN %<- ,NAMES-LENGTH 1>>
|
|
<HOLLOW-VOICE "too long">
|
|
<RTRUE>)>
|
|
|
|
; "Copy AUX-TABLE into TBL w/appropriate caps."
|
|
|
|
<SET PTR 1>
|
|
<REPEAT ()
|
|
<SET CHAR <GETB ,AUX-TABLE .PTR>>
|
|
<COND (<EQUAL? .PTR 1>
|
|
<SET CHAR <- .CHAR 32>>)>
|
|
<PUTB .TBL .PTR .CHAR>
|
|
<COND (<IGRTR? PTR .LEN>
|
|
<RETURN>)>>
|
|
<PUTB .TBL 0 .LEN>
|
|
<PUTB .TBL <+ .LEN 1> 0> ; "Zero-terminate."
|
|
|
|
<SET WORD <ADD-VOCAB ,AUX-TABLE .OBJ>>
|
|
<ADD-CAP? .WORD>
|
|
<MAKE .OBJ ,NAMED>
|
|
<MAKE .OBJ ,NOARTICLE>
|
|
<MAKE .OBJ ,PROPER>
|
|
<WINDOW ,SHOWING-ALL>
|
|
<TELL "You invoke the Spell of Naming, and the ">
|
|
<COND (<AND <EQUAL? .OBJ ,BFLY>
|
|
<IS? ,BFLY ,MUNGED>>
|
|
<PRINT "caterpillar">)
|
|
(<AND <EQUAL? .OBJ ,PHASE>
|
|
<NOT <HERE? APLANE>>>
|
|
<TELL B ,W?OUTLINE>)
|
|
(T
|
|
<PRINTD .OBJ>)>
|
|
<TELL
|
|
" basks in the glow of a new-forged synonym. Henceforth, you may refer to ">
|
|
<PRONOUN .OBJ T>
|
|
<TELL " as \"">
|
|
<PRINT-TABLE .TBL>
|
|
<TELL ,PERQ>
|
|
<RTRUE>>
|
|
|
|
"Adds the ASCII byte-LTABLE string at TBL to the alternate charset, using
|
|
the PS? field of synonym .WRD. Returns base address of new word."
|
|
|
|
<ROUTINE ADD-VOCAB (TBL OBJ "AUX" WRD SYNS SIBS ELEN CNT BASE LEN)
|
|
<SET SYNS <GETPT .OBJ ,P?SYNONYM>>
|
|
<SET WRD <GET .SYNS 0>>
|
|
<SET SIBS <GETB ,VOCAB2 0>> ; "Size of SIB table."
|
|
<SET ELEN <GETB <REST ,VOCAB2 <+ .SIBS 1>> 0>> ; "Entry length."
|
|
<SET CNT <GET <REST ,VOCAB2 <+ .SIBS 2>> 0>> ; "# entries."
|
|
|
|
<SET BASE <REST ,VOCAB2 <+ .SIBS 4>>>
|
|
<COND (<T? .CNT>
|
|
<SET BASE <REST .BASE <* .ELEN <- 0 .CNT>>>>)>
|
|
|
|
<ZWSTR .TBL <GETB .TBL 0> 1 .BASE>
|
|
|
|
<SET TBL <REST .WRD 6>> ; "Point to PS? field of synonym."
|
|
<SET LEN <- .ELEN 6>> ; "Length of PS? field."
|
|
<COPYT .TBL <REST .BASE 6> .LEN> ; "Copy PS? field of synonym."
|
|
|
|
<DEC CNT> ; "List is unsorted, so CNT is negative."
|
|
<PUT <REST ,VOCAB2 <+ .SIBS 2>> 0 .CNT> ; "Update count."
|
|
<PUT .SYNS 1 .BASE>
|
|
<RETURN .BASE>>
|
|
|
|
<ROUTINE V-GOODBYE ()
|
|
<V-HELLO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-HELLO ()
|
|
<COND (<SILLY-SPEAK?>
|
|
<RFATAL>)
|
|
(<PRSO? ROOMS>
|
|
<TALK-TO-SELF>
|
|
<RTRUE>)>
|
|
<NO-RESPONSE ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-WAVE-AT ()
|
|
<V-WHAT>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-REQUEST ("AUX" L)
|
|
<SET L <LOC ,PRSO>>
|
|
<COND (<NOT <VISIBLE? .L>>
|
|
<CANT-SEE-ANY>
|
|
<RTRUE>)
|
|
(<IS? .L ,PERSON>
|
|
<SPOKEN-TO .L>
|
|
<PERFORM ,V?ASK-FOR .L ,PRSO>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,TAKEABLE>)
|
|
(<IS? ,PRSO ,TRYTAKE>)
|
|
(T
|
|
<NOT-LIKELY>
|
|
<TELL " could be moved." CR>
|
|
<RTRUE>)>
|
|
<TELL ,DONT "have to ask for " THEO ". Just take ">
|
|
<COND (<IS? ,PRSO ,PLURAL>
|
|
<TELL B ,W?THEM>)
|
|
(T
|
|
<TELL B ,W?IT>)>
|
|
<COND (<OR <IS? .L ,SURFACE>
|
|
<IS? .L ,CONTAINER>>
|
|
<OUT-OF-LOC .L>)>
|
|
<TELL ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SASK-FOR ()
|
|
<PERFORM ,V?ASK-FOR ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-ASK-FOR ()
|
|
<COND (<SILLY-SPEAK?>
|
|
<RFATAL>)
|
|
(<OR <EQUAL? ,WINNER ,PRSI>
|
|
<NOT <IS? ,PRSI ,TAKEABLE>>>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)>
|
|
<NO-RESPONSE ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-TELL ()
|
|
<COND (<SILLY-SPEAK?>
|
|
<RFATAL>)
|
|
(<PRSO? ME>
|
|
<COND (<EQUAL? ,WINNER ,PLAYER>
|
|
<TALK-TO-SELF>
|
|
<RTRUE>)>)
|
|
(T
|
|
<SEE-CHARACTER ,PRSO>
|
|
<COND (<T? ,P-CONT>
|
|
<SETG WINNER ,PRSO>
|
|
<RTRUE>)>)>
|
|
<NO-RESPONSE ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-TELL-ABOUT ()
|
|
<COND (<NOT <EQUAL? ,WINNER ,PLAYER>>
|
|
<TELL CTHE ,WINNER>
|
|
<COND (<PRSO? ME>
|
|
<TELL
|
|
" shrugs. \"I don't know anything about " THEI " you don't know." CR>
|
|
<RTRUE>)>
|
|
<TELL " snorts. \"Don't be ridiculous.\"" CR>
|
|
<RTRUE>)>
|
|
<V-WHAT>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-THANK ()
|
|
<COND (<SILLY-SPEAK?>
|
|
<RFATAL>)
|
|
(<EQUAL? ,WINNER ,PLAYER>
|
|
<COND (<PRSO? ME>
|
|
<TELL "Self-congratulations">
|
|
<WONT-HELP>
|
|
<RTRUE>)>
|
|
<TELL "There's no need to thank " THEO ,PERIOD>
|
|
<RTRUE>)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-WHO ()
|
|
<COND (<EQUAL? ,WINNER ,PLAYER>
|
|
<TELL "Who, indeed?" CR>
|
|
<RTRUE>)>
|
|
<NO-RESPONSE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-WHERE ()
|
|
<COND (<EQUAL? ,WINNER ,PLAYER>
|
|
<COND (<VISIBLE? ,PRSO>
|
|
<COND (<IS? ,PRSO ,PLURAL>
|
|
<TELL "They're ">)
|
|
(<IS? ,PRSO ,FEMALE>
|
|
<TELL "She's ">)
|
|
(<IS? ,PRSO ,PERSON>
|
|
<TELL "He's ">)
|
|
(T
|
|
<TELL "It's ">)>
|
|
<TELL "right here." CR>
|
|
<RTRUE>)>
|
|
<TELL "Where, indeed?" CR>
|
|
<RTRUE>)>
|
|
<NO-RESPONSE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-WHAT ()
|
|
<COND (<EQUAL? ,WINNER ,PLAYER>
|
|
<TELL "What, indeed?" CR>
|
|
<RTRUE>)>
|
|
<NO-RESPONSE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE NO-RESPONSE ("OPT" (OBJ ,WINNER))
|
|
<PCLEAR>
|
|
<SEE-CHARACTER .OBJ>
|
|
<TELL CTHE .OBJ>
|
|
<PRINT " looks at you expectantly. ">
|
|
<CRLF>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-THROUGH ("AUX" X)
|
|
<COND (<PRSO? ROOMS>
|
|
<SET X <LOC ,PLAYER>>
|
|
<COND (<IS? .X ,VEHICLE>
|
|
<PERFORM ,V?ENTER .X>
|
|
<RTRUE>)>
|
|
<DO-WALK ,P?IN>
|
|
<RTRUE>)
|
|
; (<IS? ,PRSO ,OPENABLE>
|
|
<DO-WALK <OTHER-SIDE ,PRSO>>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,VEHICLE>
|
|
<PERFORM ,V?ENTER ,PRSO>
|
|
<RTRUE>)
|
|
; (<IN? ,PRSO ,WINNER>
|
|
<TELL "That would involve quite a contortion." CR>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,LIVING>
|
|
<V-RAPE>
|
|
<RTRUE>)
|
|
; (<NOT <IS? ,PRSO ,TAKEABLE>>
|
|
<TELL "You hit " 'HEAD " against " THEO
|
|
" as you attempt this feat." CR>
|
|
<RTRUE>)>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-STHROW ()
|
|
<PERFORM ,V?THROW ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PRE-THROW-OVER ()
|
|
<RETURN <PRE-PUT>>>
|
|
|
|
<ROUTINE V-THROW-OVER ()
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PRE-THROW ()
|
|
<RETURN <PRE-PUT>>>
|
|
|
|
<ROUTINE V-THROW ()
|
|
<COND (<IS? ,PRSI ,DOORLIKE>
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>)
|
|
(<IDROP>
|
|
<TELL "Thrown" ,PTAB CTHEO " lands on the ">
|
|
<COND (<IS? ,HERE ,INDOORS>
|
|
<TELL 'FLOOR>)
|
|
(T
|
|
<TELL 'GROUND>)>
|
|
<TELL " nearby." CR>)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-TIE ()
|
|
<TELL ,IMPOSSIBLY "tie " THEO>
|
|
<COND (<T? ,PRSI>
|
|
<TELL ,STO THEI>)>
|
|
<PRINT ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-TIE-UP ()
|
|
<TELL ,CANT "tie anything with that." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-TURN ()
|
|
<COND (<AND <NOT <IS? ,PRSO ,TAKEABLE>>
|
|
<NOT <IS? ,PRSO ,TRYTAKE>>>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<SPARK? <>>
|
|
<RTRUE>)>
|
|
<HACK-HACK "Turning">
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-TURN-TO ()
|
|
<COND (<VISIBLE? ,PRSO>
|
|
<PERFORM ,V?EXAMINE ,PRSO>
|
|
<RTRUE>)>
|
|
<TELL ,DONT "see " THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-WALK-AROUND ()
|
|
<PCLEAR>
|
|
<TELL "Which way do you want to go?" CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-WALK-TO ()
|
|
<COND (<PRSO? ROOMS>
|
|
<V-WALK-AROUND>
|
|
<RTRUE>)
|
|
(<PRSO? INTDIR>
|
|
<DO-WALK ,P-DIRECTION>
|
|
<RTRUE>)
|
|
(<PRSO? RIGHT LEFT>
|
|
<MORE-SPECIFIC>
|
|
<RTRUE>)>
|
|
<V-FOLLOW>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-WAIT ("OPT" (N 3) "AUX" (X <>))
|
|
<TELL "Time passes." CR>
|
|
<REPEAT ()
|
|
<COND (<OR <T? .X>
|
|
<L? .N 1>>
|
|
<RTRUE>)
|
|
(<CLOCKER>
|
|
<SET X T>
|
|
<SETG CLOCK-WAIT? T>)>
|
|
<DEC N>>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-WAIT-FOR ()
|
|
<COND (<PRSO? INTNUM>
|
|
<COND (<ZERO? ,P-NUMBER>
|
|
<SETG CLOCK-WAIT? T>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<G? ,P-NUMBER 120>
|
|
<SETG CLOCK-WAIT? T>
|
|
<TELL "[That's too long to WAIT.]" CR>
|
|
<RTRUE>)>
|
|
<V-WAIT <- ,P-NUMBER 1>>
|
|
<RTRUE>)
|
|
(<VISIBLE? ,PRSO>
|
|
<TELL CTHEO>
|
|
<IS-ARE>
|
|
<TELL "already here." CR>
|
|
<RTRUE>)>
|
|
<TELL "You may be waiting quite a while." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-WEAR ("AUX" X)
|
|
<COND (<AND <IN? ,PRSO ,WINNER>
|
|
<IS? ,PRSO ,WORN>>
|
|
<TELL ,ALREADY "wearing " THEO ,PERIOD>
|
|
<RTRUE>)
|
|
(<NOT <IS? ,PRSO ,CLOTHING>>
|
|
<TELL ,CANT "wear " THEO ,PERIOD>
|
|
<RTRUE>)
|
|
(<DONT-HAVE?>
|
|
<RTRUE>)>
|
|
<PUTON>
|
|
<SET X <GETP ,PRSO ,P?EFFECT>>
|
|
<COND (<T? .X>
|
|
<UPDATE-STAT .X ,ARMOR-CLASS>)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PUTON ()
|
|
<WINDOW ,SHOWING-INV>
|
|
<MAKE ,PRSO ,WORN>
|
|
<TELL "You put on " THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE WEARING-MAGIC? (OBJ)
|
|
<COND (<AND <IN? .OBJ ,PLAYER>
|
|
<IS? .OBJ ,WORN>
|
|
<NOT <IS? .OBJ ,NEUTRALIZED>>>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE V-WIND ()
|
|
<TELL ,CANT "wind " AO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE YOU-CLIMB-UP ("OPT" (NOCR 0))
|
|
<TELL ,CYOU>
|
|
<COND (<PROB 33>
|
|
<TELL B ,W?ASCEND>)
|
|
(T
|
|
<COND (<PROB 50>
|
|
<TELL B ,W?CLAMBER>)
|
|
(T
|
|
<TELL B ,W?CLIMB>)>
|
|
<TELL " up">)>
|
|
<TELL " the steps." CR>
|
|
<COND (<T? .NOCR>
|
|
<RTRUE>)
|
|
(<T? ,VERBOSITY>
|
|
<CRLF>)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE HACK-HACK (STR)
|
|
<TELL .STR C ,SP THEO " would" <PICK-NEXT ,HO-HUM> ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE IMPOSSIBLE ()
|
|
<TELL <PICK-NEXT ,YUKS> ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE TOO-DARK ()
|
|
<PCLEAR>
|
|
<TELL "It's too dark to see." CR>
|
|
<RTRUE>>
|
|
|
|
; <ROUTINE CANT-GO ()
|
|
<COND (<IS? ,HERE ,INDOORS>
|
|
<TELL "There's no exit ">)
|
|
(T
|
|
<TELL ,CANT "go ">)>
|
|
<TELL "that way." CR>
|
|
<RTRUE>>
|
|
|
|
; <ROUTINE ALREADY-OPEN ()
|
|
<ITS-ALREADY "open">
|
|
<RTRUE>>
|
|
|
|
; <ROUTINE ALREADY-CLOSED ()
|
|
<ITS-ALREADY "closed">
|
|
<RTRUE>>
|
|
|
|
<ROUTINE ITS-ALREADY (STR)
|
|
<TELL "It's already " .STR ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE REFERRING ()
|
|
<TELL "[To what are you referring?]" CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE MORE-SPECIFIC ()
|
|
<NYMPH-APPEARS>
|
|
<TELL "You really must be more specific">
|
|
<PRINT ". Bye!\"| She disappears with a wink.|">
|
|
<RTRUE>>
|
|
|
|
<ROUTINE WASTE-OF-TIME ()
|
|
<TELL <PICK-NEXT ,POINTLESS> ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE WHAT-TALK? (WHO OBJ)
|
|
<MAKE .WHO ,SEEN>
|
|
<COND (<VISIBLE? .OBJ>
|
|
<RFALSE>)>
|
|
<PERPLEXED .WHO>
|
|
<TELL "I'm afraid I'm not sure">
|
|
<WHO-WHAT .OBJ>
|
|
<TELL "you're talking about.\"" CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PERPLEXED (WHO "AUX" STR X)
|
|
<PCLEAR>
|
|
<SET STR <PICK-NEXT ,PUZZLES>>
|
|
<TELL CTHE .WHO>
|
|
<SET X <RANDOM 100>>
|
|
<COND (<L? .X 33>
|
|
<TELL " gives you a " .STR "ed look">)
|
|
(<L? .X 67>
|
|
<COND (<PROB 50>
|
|
<TELL " look">)
|
|
(T
|
|
<TELL " appear">)>
|
|
<TELL "s ">
|
|
<COND (<PROB 50>
|
|
<COND (<PROB 50>
|
|
<TELL "somewhat ">)
|
|
(T
|
|
<TELL "a bit ">)>)>
|
|
<TELL .STR "ed">)
|
|
(T
|
|
<TELL " looks at you with a " .STR
|
|
"ed expression">)>
|
|
<TELL ". \"">
|
|
<RTRUE>>
|
|
|
|
<ROUTINE WHO-WHAT (OBJ)
|
|
<TELL " wh">
|
|
<COND (<IS? .OBJ ,PERSON>
|
|
<TELL "o ">
|
|
<RTRUE>)
|
|
(<IS? .OBJ ,PLACE>
|
|
<TELL "ere ">
|
|
<RTRUE>)>
|
|
<TELL "at ">
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SWRAP ()
|
|
<PERFORM ,V?WRAP-AROUND ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-WRAP-AROUND ()
|
|
<TELL ,IMPOSSIBLY B ,P-PRSA-WORD C ,SP THEO
|
|
" around " THEI ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-DRESS ()
|
|
<COND (<PRSO? ROOMS ME>
|
|
<TELL "Try putting " B ,W?SOMETHING " on." CR>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,PERSON>
|
|
<TELL CTHEO " has all the clothing ">
|
|
<COND (<IS? ,PRSO ,FEMALE>
|
|
<TELL "s">)>
|
|
<TELL "he needs." CR>
|
|
<RTRUE>)>
|
|
<TELL ,CANT "dress " AO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-UNDRESS ("AUX" (ANY <>) X OBJ NXT)
|
|
<COND (<PRSO? ROOMS ME WINNER>
|
|
<SET OBJ <FIRST? ,WINNER>>
|
|
<REPEAT ()
|
|
<COND (<ZERO? .OBJ>
|
|
<RETURN>)>
|
|
<SET NXT <NEXT? .OBJ>>
|
|
<COND (<IS? .OBJ ,WORN>
|
|
<SET ANY T>
|
|
<SETG P-MULT? T>
|
|
<SET X <PERFORM ,V?TAKE-OFF .OBJ>>
|
|
<COND (<EQUAL? .X ,M-FATAL>
|
|
<RETURN>)>)>
|
|
<SET OBJ .NXT>>
|
|
<COND (<T? .ANY>
|
|
<SETG P-MULT? <>>
|
|
<COND (<ZERO? .X>
|
|
<RTRUE>)>
|
|
<RETURN .X>)>
|
|
<PRINT "You're not wearing ">
|
|
<TELL "anything unusual." CR>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,PERSON>
|
|
<INAPPROPRIATE>
|
|
<RTRUE>)>
|
|
<TELL ,CANT B ,P-PRSA-WORD C ,SP AO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-HANG ("AUX" X)
|
|
<COND (<HERE? OUTSIDE-PUB ON-BRIDGE>
|
|
<SET X ,PUB-SIGN>
|
|
<COND (<HERE? ON-BRIDGE>
|
|
<SET X ,ZBRIDGE>)>
|
|
<TELL "[on " THE .X ,BRACKET>
|
|
<PERFORM ,V?HANG-ON ,PRSO .X>
|
|
<RTRUE>)>
|
|
<TELL ,NOTHING "here on which to "
|
|
B ,P-PRSA-WORD C ,SP THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-HANG-ON ()
|
|
<TELL CTHEI>
|
|
<IS-ARE ,PRSI>
|
|
<TELL "hardly suitable for " B ,P-PRSA-WORD "ing things." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-LURK ()
|
|
<TELL "Leave the " B ,P-PRSA-WORD "ing to the grues." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SAY ()
|
|
<COND (<NOT <MAGICWORD? <GET ,P-LEXV ,P-CONT>>>
|
|
<TALK-TO-SELF>)>
|
|
<PCLEAR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-MAGIC ()
|
|
<COND (<MAGICWORD?>
|
|
<RTRUE>)
|
|
(<EQUAL? ,P-PRSA-WORD ,W?DISPEL>
|
|
<HOW?>
|
|
<RTRUE>)>
|
|
<NOTHING-HAPPENS <>>
|
|
<RTRUE>>
|
|
|
|
; <ROUTINE YOU-CANT ()
|
|
<SAY-YOU>
|
|
<TELL " can't ">
|
|
<RTRUE>>
|
|
|
|
; <ROUTINE SAY-YOU ()
|
|
<COND (<EQUAL? ,WINNER ,PLAYER>
|
|
<TELL "You">
|
|
<RTRUE>)>
|
|
<TELL CTHE ,WINNER>
|
|
<RTRUE>>
|
|
|
|
; <ROUTINE YOURE ()
|
|
<COND (<EQUAL? ,WINNER ,PLAYER>
|
|
<TELL "You're ">
|
|
<RTRUE>)>
|
|
<TELL CTHE ,WINNER ,SIS>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-ERASE-WITH ()
|
|
<TELL ,CANT B ,P-PRSA-WORD C ,SP THEO>
|
|
<COND (<NOT <PRSI? HANDS>>
|
|
<TELL ,WITH THEI>)>
|
|
<PRINT ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-WRITE-ON ()
|
|
<TELL "It would be difficult to " B ,P-PRSA-WORD C ,SP AO
|
|
,SON THEI ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-WRITE-WITH ()
|
|
<NOT-LIKELY ,PRSI>
|
|
<TELL " could " B ,P-PRSA-WORD " anything on " THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-CRANK ()
|
|
<COND (<PRSO? ROOMS>
|
|
<COND (<VISIBLE? ,GURDY>
|
|
<PRINTC %<ASCII !\[>>
|
|
<TELL THE ,GURDY ,BRACKET>
|
|
<SETG LAST-CRANK-DIR <>>
|
|
<TURN-GURDY>
|
|
<RTRUE>)>
|
|
<TELL ,NOTHING "here to crank." CR>
|
|
<RTRUE>)>
|
|
<TELL ,CANT "crank " THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-UNMAKE ()
|
|
<TELL "Such magic lies far beyond your meager abilities." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SPELLS ()
|
|
<TELL ,DONT "know any. Few ">
|
|
<ANNOUNCE-RANK>
|
|
<TELL "s do." CR>
|
|
<RTRUE>>
|
|
|
|
"*** BARTERING ***"
|
|
|
|
<OBJECT MONEY
|
|
(LOC GLOBAL-OBJECTS)
|
|
(DESC "foo")
|
|
(SDESC DESCRIBE-MONEY)
|
|
(FLAGS NODESC NOARTICLE NOALL)
|
|
(SYNONYM MONEY ZORKMIDS ZORKMID ZM CASH LOOT
|
|
ASSETS COINS COIN CREDIT LINE)
|
|
(ADJECTIVE INTNUM MY PERSONAL CREDIT)
|
|
(ACTION MONEY-F)>
|
|
|
|
<GLOBAL LOOT:NUMBER 1>
|
|
|
|
<ROUTINE DESCRIBE-MONEY (OBJ)
|
|
<TELL "your zorkmid">
|
|
<COND (<NOT <EQUAL? ,LOOT 1>>
|
|
<TELL "s">)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE MONEY-F ("AUX" X)
|
|
<COND (<THIS-PRSI?>
|
|
<COND (<AND <VERB? TRADE-FOR>
|
|
<HERE? IN-MAGICK IN-BOUTIQUE IN-WEAPON>>
|
|
<TRADE-FOR-LOOT ,PRSO>
|
|
<RTRUE>)>
|
|
<RFALSE>)
|
|
(<VERB? SPEND>
|
|
<RTRUE>)
|
|
(<VERB? FIND BUY>
|
|
<TELL "Good luck." CR>
|
|
<RTRUE>)
|
|
(<ZERO? ,LOOT>
|
|
<PRINT "You're broke.|">
|
|
<RFATAL>)
|
|
(<VERB? EXAMINE COUNT>
|
|
<SAY-CASH>
|
|
<RTRUE>)
|
|
(<VERB? WHAT>
|
|
<TELL "Zorkmids are the local unit of currency." CR>
|
|
<RTRUE>)
|
|
(<OR <VERB? DROP EMPTY>
|
|
<SET X <PUTTING?>>>
|
|
<BENJAMIN>
|
|
<RTRUE>)>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE SAY-CASH ()
|
|
<TELL "You have ">
|
|
<SAY-LOOT>
|
|
<PRINT ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE NOT-ENOUGH-LOOT? (AMT)
|
|
<COND (<G? .AMT ,LOOT>
|
|
<TELL "You only have ">
|
|
<SAY-LOOT>
|
|
<TELL ,PERIOD>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE SAY-LOOT ("OPT" (VAL ,LOOT))
|
|
<TELL N .VAL " zorkmid">
|
|
<COND (<NOT <EQUAL? .VAL 1>>
|
|
<TELL "s">)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE BENJAMIN ()
|
|
<TELL "A zorkmid saved is a zorkmid earned." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE GIVING-LOOT? (OBJ WHO)
|
|
<COND (<NOT <EQUAL? .OBJ ,MONEY ,INTNUM>>
|
|
<RFALSE>)
|
|
(<ZERO? ,LOOT>
|
|
<PRINT "You're broke.|">
|
|
<RTRUE>)>
|
|
<SET OBJ ,LOOT>
|
|
<COND (<NOT <EQUAL? ,P-NUMBER -1>>
|
|
<COND (<NOT-ENOUGH-LOOT? ,P-NUMBER>
|
|
<RTRUE>)>
|
|
<SET OBJ ,P-NUMBER>)>
|
|
<TELL CTHE .WHO
|
|
" gives you a bewildered look, shrugs, and accepts " D ,MONEY>
|
|
<SETG LOOT <- ,LOOT .OBJ>>
|
|
<TELL " without question." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PRE-BUY ()
|
|
<COND (<ZERO? ,LIT?>
|
|
<TOO-DARK>
|
|
<RTRUE>)
|
|
(<ZERO? ,PRSI>
|
|
<SETG PRSI ,MONEY>
|
|
<TELL "[with " D ,PRSI ,BRACKET>
|
|
<RFALSE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE V-SBUY ()
|
|
<PERFORM ,V?BUY ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-BUY ()
|
|
<COND (<NOT <VISIBLE? ,PRSO>>
|
|
<NONE-FOR-SALE>
|
|
<RFATAL>)
|
|
(<HELD?>
|
|
<ALREADY-HAVE>
|
|
<RTRUE>)
|
|
(<HERE? IN-MAGICK IN-WEAPON IN-BOUTIQUE>
|
|
<BUY-X-WITH-Y>
|
|
<RTRUE>)>
|
|
<NOT-LIKELY>
|
|
<TELL " is for sale." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE NONE-FOR-SALE ()
|
|
<TELL "There are none here to buy." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SPEND ()
|
|
<COND (<PRSO? ROOMS MONEY INTNUM>
|
|
<TELL "Easily done">
|
|
<COND (<HERE? IN-MAGICK IN-BOUTIQUE IN-WEAPON>
|
|
<TELL ", especially here">)>
|
|
<PRINT ,PERIOD>
|
|
<RTRUE>)>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-PAY ()
|
|
<PERFORM ,V?GIVE ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-BUY-FROM ()
|
|
<COND (<NOT <VISIBLE? ,PRSO>>
|
|
<NONE-FOR-SALE>
|
|
<RFATAL>)
|
|
(<HELD?>
|
|
<ALREADY-HAVE>
|
|
<RTRUE>)
|
|
(<PRSI? OWOMAN MCASE BCASE WCASE>
|
|
<BUY-X-WITH-Y>
|
|
<RTRUE>)>
|
|
<NOT-LIKELY ,PRSI>
|
|
<TELL " could sell you " THEO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PRE-TRADE-FOR ()
|
|
<COND (<PRE-SELL-TO>
|
|
<RTRUE>)
|
|
(<IN? ,PRSI ,WINNER>
|
|
<ALREADY-HAVE ,PRSI>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE V-TRADE-FOR ("AUX" L)
|
|
<SET L <LOC ,PRSI>>
|
|
<COND (<ZERO? .L>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<HERE? IN-MAGICK IN-BOUTIQUE IN-WEAPON>
|
|
<BUY-X-WITH-Y ,PRSI ,PRSO>
|
|
<RTRUE>)
|
|
(<IS? .L ,PERSON>
|
|
<TELL CTHE .L " seems reluctant to give up " THEI ,PERIOD>
|
|
<RTRUE>)>
|
|
<TELL "Why not just pick up " THEI " instead?" CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PRE-SELL-TO ()
|
|
<COND (<ZERO? ,PRSI>
|
|
<COND (<IN? ,OWOMAN ,HERE>
|
|
<PERFORM ,PRSA ,PRSO ,OWOMAN>
|
|
<RTRUE>)>)>
|
|
<COND (<EQUAL? <> ,PRSO ,PRSI>
|
|
<REFERRING>
|
|
<RTRUE>)
|
|
(<ZERO? ,LIT?>
|
|
<TOO-DARK>
|
|
<RTRUE>)
|
|
(<PRSO? PRSI>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<PRSI? MONEY INTNUM>
|
|
<RFALSE>)
|
|
(<OR <IN? ,PRSI ,GLOBAL-OBJECTS>
|
|
<AND <NOT <IS? ,PRSO ,TAKEABLE>>
|
|
<NOT <IS? ,PRSO ,TRYTAKE>>>>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<AND <IS? ,PRSO ,WORN>
|
|
<IN? ,PRSO ,WINNER>>
|
|
<RETURN <TAKE-OFF-PRSO-FIRST?>>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE V-SELL-TO ()
|
|
<COND (<NOT <EQUAL? ,WINNER ,PLAYER>>
|
|
<NOT-LIKELY ,WINNER>
|
|
<IS-ARE>
|
|
<TELL "interested in selling anything">
|
|
<RTRUE>)
|
|
(<PRSI? PRSO ME WINNER>
|
|
<IMPOSSIBLE>
|
|
<RTRUE>)
|
|
(<NOT <IS? ,PRSI ,PERSON>>
|
|
<NOT-LIKELY ,PRSI>
|
|
<TELL " would buy anything." CR>
|
|
<RTRUE>)>
|
|
<NOT-A "salesperson">
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SSELL-TO ()
|
|
<PERFORM ,V?SELL-TO ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE BUY-X-WITH-Y ("OPT" (X ,PRSO) (Y ,PRSI)
|
|
"AUX" CASE VAL OFFER CHANGE)
|
|
<SET CASE <GETP ,HERE ,P?THIS-CASE>>
|
|
<COND (<NOT <VISIBLE? .X>>
|
|
<TELL "\"I don't have any for sale,\" admits "
|
|
THE ,OWOMAN ,PERIOD>
|
|
<RTRUE>)
|
|
(<NOT <IN? .X .CASE>>
|
|
<TELL "\"Only the items in " THE .CASE
|
|
" are for sale.\"" CR>
|
|
<RTRUE>)>
|
|
<SET VAL <GETP .X ,P?VALUE>>
|
|
<COND (<L? .VAL 1>
|
|
<NO-WORTH .X>
|
|
<RTRUE>)
|
|
(<EQUAL? .Y <> ,MONEY ,INTNUM>
|
|
<SET OFFER ,P-NUMBER>
|
|
<COND (<ZERO? ,LOOT>
|
|
<PRINT "You're broke.|">
|
|
<RTRUE>)
|
|
(<OR <ZERO? .Y>
|
|
<EQUAL? ,P-NUMBER -1>>
|
|
<SET OFFER ,LOOT>)
|
|
(<NOT-ENOUGH-LOOT? .OFFER>
|
|
<RTRUE>)>
|
|
<COND (<L? .OFFER .VAL>
|
|
<TELL ,CTHELADY
|
|
" shakes her head firmly. \"My price is ">
|
|
<SAY-LOOT .VAL>
|
|
<TELL ", dear.\"" CR>
|
|
<RTRUE>)>
|
|
<PUTP .X ,P?VALUE </ .VAL 2>>
|
|
<COND (<AND <NOT <EQUAL? ,P-NUMBER -1>>
|
|
<G? .OFFER .VAL>>
|
|
<SETG LOOT <- ,LOOT ,P-NUMBER>>
|
|
<PRINT "\"You are too kind">)
|
|
(T
|
|
<SETG LOOT <- .OFFER .VAL>>
|
|
<TELL "\"Done">)>
|
|
<TELL ",\" says " THE ,OWOMAN ", taking your zorkmid">
|
|
<COND (<NOT <EQUAL? .VAL 1>>
|
|
<TELL "s">)>
|
|
<SOLD .X>
|
|
<RTRUE>)
|
|
(<NO-DEAL? .Y>
|
|
<RTRUE>)
|
|
(<IN? .Y ,GLOBAL-OBJECTS>
|
|
<TELL "\"Don't be silly.\"" CR>
|
|
<RTRUE>)>
|
|
<SET OFFER <GETP .Y ,P?VALUE>>
|
|
<COND (<ZERO? .OFFER>
|
|
<NO-WORTH .Y>
|
|
<RTRUE>)
|
|
(<L? .OFFER .VAL>
|
|
<WORTHLESS .Y>
|
|
<TELL " only worth ">
|
|
<SAY-LOOT .OFFER>
|
|
<TELL ". This " D .X " is valued at ">
|
|
<SAY-LOOT .VAL>
|
|
<TELL "!\"" CR>
|
|
<RTRUE>)>
|
|
<WINDOW ,SHOWING-ALL>
|
|
<MOVE .Y .CASE>
|
|
<MAKE .Y ,USED>
|
|
<PUTP .Y ,P?VALUE <+ .OFFER .OFFER>>
|
|
<PUTP .X ,P?VALUE </ .VAL 2>>
|
|
<COND (<G? .OFFER .VAL>
|
|
<PRINT "\"You are too kind">)
|
|
(T
|
|
<TELL "\"Done">)>
|
|
<TELL ",\" says " THE ,OWOMAN ", taking ">
|
|
<SAY-YOUR .Y>
|
|
<COND (<G? .OFFER .VAL>
|
|
<SET CHANGE <- .OFFER .VAL>>
|
|
<SETG LOOT <+ ,LOOT .CHANGE>>
|
|
<SOLD .X .CHANGE>
|
|
<PRINT " and handing you ">
|
|
<SAY-LOOT .CHANGE>
|
|
<TELL " in change." CR>
|
|
<RTRUE>)>
|
|
<SOLD .X>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE SOLD (OBJ "OPT" (CHANGE 0))
|
|
<WINDOW ,SHOWING-ALL>
|
|
<THIS-IS-IT .OBJ>
|
|
<MAKE .OBJ ,USED>
|
|
<COND (<T? .CHANGE>
|
|
<TELL ", ">)
|
|
(T
|
|
<TELL ,AND>)>
|
|
<COND (<ITAKE <>>
|
|
<MOVE .OBJ ,PLAYER>
|
|
<TELL "handing you " THE .OBJ>)
|
|
(T
|
|
<MOVE .OBJ <GETP <GETP ,HERE ,P?THIS-CASE> ,P?DNUM>>
|
|
<TELL "setting " THE .OBJ ,SON THE ,MCASE>)>
|
|
<COND (<ZERO? .CHANGE>
|
|
<PRINT ,PERIOD>)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE NO-WORTH (OBJ)
|
|
<WORTHLESS .OBJ>
|
|
<TELL " not worth anything here.\"" CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE WORTHLESS (OBJ)
|
|
<TELL ,CTHELADY ,GLANCES-AT THE .OBJ
|
|
" and shakes her head. \"">
|
|
<COND (<IS? .OBJ ,FEMALE>
|
|
<TELL "She's">)
|
|
(<IS? .OBJ ,LIVING>
|
|
<TELL "He's">)
|
|
(<IS? .OBJ ,PLURAL>
|
|
<TELL "They're">)
|
|
(T
|
|
<TELL "That's">)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE NO-DEAL? (OBJ)
|
|
<COND (<EQUAL? .OBJ ,HELM ,RUG ,CAKE>
|
|
<TELL "\"No,\" replies " THE ,OWOMAN
|
|
", shaking her head firmly. \"I don't think I want to carry this.\"" CR>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE TRADE-FOR-LOOT (OBJ "AUX" VAL CASE)
|
|
<COND (<NOT <IN? .OBJ ,PLAYER>>
|
|
<TAKE-FIRST .OBJ <LOC .OBJ>>
|
|
<RTRUE>)>
|
|
<COND (<NO-DEAL? .OBJ>
|
|
<RTRUE>)>
|
|
<SET VAL <GETP .OBJ ,P?VALUE>>
|
|
<SET CASE <GETP ,HERE ,P?THIS-CASE>>
|
|
<TELL ,CTHELADY " examines " THE .OBJ>
|
|
<COND (<ZERO? .VAL>
|
|
<TELL
|
|
" and hands it back to you with a shrug. \"Worthless.\"" CR>
|
|
<RTRUE>)>
|
|
<WINDOW ,SHOWING-ALL>
|
|
<SETG LOOT <+ .VAL ,LOOT>>
|
|
<TELL " critically. \"Okay,\" she agrees, ">
|
|
<COND (<EQUAL? .OBJ ,TRUFFLE>
|
|
<VANISH .OBJ>
|
|
<TELL "popping " THE .OBJ " in her mouth">)
|
|
(T
|
|
<PUTP .OBJ ,P?VALUE <+ .VAL .VAL>>
|
|
<MOVE .OBJ .CASE>
|
|
<TELL "stashing it away in " THE .CASE>)>
|
|
<PRINT " and handing you ">
|
|
<SAY-LOOT .VAL>
|
|
<TELL " in return." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-ZOOM ("AUX" WRD)
|
|
<COND (<NOT <PRSO? ROOMS>>
|
|
<BAD-COMMAND "ZOOM" "that way">
|
|
<RTRUE>)
|
|
(<ZERO? ,DMODE>
|
|
<BAD-COMMAND "ZOOM" "in this display mode">
|
|
<RTRUE>)
|
|
(<EQUAL? ,MAP-ROUTINE ,CLOSE-MAP>
|
|
<SETG MAP-ROUTINE ,FAR-MAP>
|
|
<SET WRD ,W?OUT>)
|
|
(T
|
|
<SETG MAP-ROUTINE ,CLOSE-MAP>
|
|
<SET WRD ,W?IN>)>
|
|
<SETG SAME-COORDS <>>
|
|
<TELL "[Zooming " B .WRD ".]" CR>
|
|
<NEW-MAP>
|
|
<SHOW-MAP>
|
|
<RTRUE>>
|
|
|
|
<GLOBAL PRIOR:NUMBER 0>
|
|
|
|
<ROUTINE V-PRIORITY-ON ()
|
|
<COND (<BAD-PRIOR?>
|
|
<RTRUE>)
|
|
(<EQUAL? ,PRIOR ,IN-DBOX>
|
|
<TELL "already ">)
|
|
(T
|
|
<SETG PRIOR ,IN-DBOX>
|
|
<TELL "now ">)>
|
|
<TELL "set to ">
|
|
<SAY-PRIORITY>
|
|
<TELL ".]" CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE SAY-PRIORITY ()
|
|
<COND (<EQUAL? ,PRIOR ,SHOWING-ROOM>
|
|
<TELL "Room Descriptions">
|
|
<RTRUE>)
|
|
(<EQUAL? ,PRIOR ,SHOWING-INV>
|
|
<TELL "Inventory">
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "Player Status">
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE V-PRIORITY-OFF ()
|
|
<COND (<BAD-PRIOR?>
|
|
<RTRUE>)
|
|
(<ZERO? ,PRIOR>
|
|
<TELL "already ">)
|
|
(T
|
|
<SETG PRIOR 0>
|
|
<TELL "now ">)>
|
|
<TELL "disabled.]" CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE BAD-PRIOR? ()
|
|
<COND (<NOT <PRSO? ROOMS>>
|
|
<BAD-COMMAND "PRIORITY" "that way">
|
|
<RTRUE>)
|
|
(<ZERO? ,DMODE>
|
|
<BAD-COMMAND "PRIORITY" "in this display mode">
|
|
<RTRUE>)>
|
|
<TELL "[Display priority is ">
|
|
<RFALSE>>
|
|
|
|
<ROUTINE BAD-COMMAND (STR1 STR2)
|
|
<TELL "[" ,CANT "use the " .STR1 " command " .STR2 ".]" CR>
|
|
<RTRUE>>
|
|
|
|
<GLOBAL DMODE:FLAG T> "T = enhanced, <> = normal."
|
|
|
|
<ROUTINE V-MODE ("AUX" STR)
|
|
<SET STR "Normal">
|
|
<COND (<ZERO? ,DMODE>
|
|
<SET STR "Enhanced">
|
|
<SETG DMODE T>)
|
|
(T
|
|
<SETG DMODE <>>)>
|
|
<V-REFRESH>
|
|
<CRLF>
|
|
<PRINTC %<ASCII !\[>>
|
|
<TELL .STR " display mode.]" CR CR>
|
|
<RTRUE>>
|
|
|
|
<GLOBAL VERBOSITY:NUMBER 1> "0 = super, 1 = brief, 2 = verbose."
|
|
|
|
<ROUTINE V-VERBOSE ()
|
|
<SETG VERBOSITY 2>
|
|
<TELL "[Maximum verbosity">
|
|
<FOR-SCRIPTING>
|
|
<COND (<ZERO? ,DMODE>
|
|
<CRLF>
|
|
<V-LOOK>)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-BRIEF ()
|
|
<SETG VERBOSITY 1>
|
|
<TELL "[Brief descriptions">
|
|
<FOR-SCRIPTING>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SUPER-BRIEF ()
|
|
<SETG VERBOSITY 0>
|
|
<TELL "[Superbrief descriptions">
|
|
<FOR-SCRIPTING>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE FOR-SCRIPTING ()
|
|
<COND (<T? ,DMODE>
|
|
<TELL " for transcripting">)>
|
|
<TELL ".]" CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-QUIT ()
|
|
<PRINT "Are you sure you want to ">
|
|
<TELL "leave the story now?">
|
|
<COND (<YES?>
|
|
<CRLF>
|
|
<QUIT>
|
|
<RTRUE>)>
|
|
<CONTINUING>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE CONTINUING ()
|
|
<TELL CR "[Continuing.]" CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-RESTART ()
|
|
<V-SCORE>
|
|
<CRLF>
|
|
<PRINT "Are you sure you want to ">
|
|
<TELL "restart the story?">
|
|
<COND (<YES?>
|
|
<RESTART>
|
|
<FAILED "RESTART">)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-RESTORE ("AUX" X)
|
|
<SETG OLD-HERE <>>
|
|
<SET X <RESTORE>>
|
|
<COND (<ZERO? .X>
|
|
<INITVARS>
|
|
<V-REFRESH>
|
|
<FAILED "RESTORE">)>
|
|
<RTRUE>>
|
|
|
|
<GLOBAL CHECKSUM:NUMBER 0>
|
|
|
|
<ROUTINE V-SAVE ("AUX" X STAT)
|
|
<COND (<CANT-SAVE?>
|
|
<RTRUE>)>
|
|
<TELL "You mumble the Spell of Saving." CR>
|
|
<PCLEAR>
|
|
<SETG OLD-HERE <>>
|
|
<PUTB ,OOPS-INBUF 1 0> ; "Retrofix #50"
|
|
|
|
<SET STAT ,ENDURANCE>
|
|
<SETG CHECKSUM 0>
|
|
<REPEAT ()
|
|
<SETG CHECKSUM <+ ,CHECKSUM <GET ,STATS .STAT>>>
|
|
<COND (<IGRTR? STAT ,EXPERIENCE>
|
|
<RETURN>)>>
|
|
<SET STAT ,ENDURANCE>
|
|
<REPEAT ()
|
|
<SETG CHECKSUM <+ ,CHECKSUM <GET ,MAXSTATS .STAT>>>
|
|
<COND (<IGRTR? STAT ,EXPERIENCE>
|
|
<RETURN>)>>
|
|
<SETG CHECKSUM <- 0 ,CHECKSUM>>
|
|
|
|
<SET X <SAVE>>
|
|
|
|
<COND (<OR <EQUAL? .X 2>
|
|
<BTST <LOWCORE FLAGS> 4>>
|
|
<INITVARS>
|
|
<V-REFRESH>)>
|
|
|
|
<COND (<ZERO? .X>
|
|
<FAILED "SAVE">
|
|
<RFATAL>)
|
|
(<EQUAL? .X 1>
|
|
<COMPLETED "SAVE">
|
|
<RFATAL>)>
|
|
|
|
<COMPLETED "RESTORE">
|
|
<CRLF>
|
|
<V-LOOK>
|
|
|
|
<SET STAT ,ENDURANCE>
|
|
<SET X 0>
|
|
<REPEAT ()
|
|
<SET X <+ .X <GET ,STATS .STAT>>>
|
|
<COND (<IGRTR? STAT ,EXPERIENCE>
|
|
<RETURN>)>>
|
|
<SET STAT ,ENDURANCE>
|
|
<REPEAT ()
|
|
<SET X <+ .X <GET ,MAXSTATS .STAT>>>
|
|
<COND (<IGRTR? STAT ,EXPERIENCE>
|
|
<RETURN>)>>
|
|
<COND (<NOT <EQUAL? <- 0 ,CHECKSUM> .X>>
|
|
<CHEATER>)>
|
|
<RFATAL>>
|
|
|
|
<ROUTINE COMPLETED (STR)
|
|
<TELL CR "[" .STR " completed.]" CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE FAILED (STR)
|
|
<TELL CR "[" .STR " failed.]" CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SCORE ()
|
|
<TELL "[Your rank is ">
|
|
<ANNOUNCE-RANK>
|
|
<TELL ", achieved in " N ,MOVES " move">
|
|
<COND (<NOT <EQUAL? ,MOVES 1>>
|
|
<TELL "s">)>
|
|
<TELL ".]" CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-DIAGNOSE ()
|
|
<COND (<PRSO? ME ROOMS>
|
|
<NYMPH-APPEARS "medical">
|
|
<TELL "Please use the STATUS command to monitor your health">
|
|
<PRINT ". Bye!\"| She disappears with a wink.|">
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,MONSTER>
|
|
<DIAGNOSE-MONSTER>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,LIVING>
|
|
<TELL CTHEO " seem">
|
|
<COND (<NOT <IS? ,PRSO ,PLURAL>>
|
|
<TELL "s">)>
|
|
<TELL " well enough." CR>
|
|
<RTRUE>)
|
|
(<IS? ,PRSO ,PERSON>
|
|
<TELL CTHEO>
|
|
<ISNT-ARENT>
|
|
<TELL " looking well." CR>
|
|
<RTRUE>)>
|
|
<TELL ,CANT B ,P-PRSA-WORD C ,SP AO ,PERIOD>
|
|
<RTRUE>>
|
|
|
|
<GLOBAL SAY-STAT:FLAG <>>
|
|
|
|
<ROUTINE V-NOTIFY ()
|
|
<TELL "[Status notification is now o">
|
|
<COND (<T? ,SAY-STAT>
|
|
<SETG SAY-STAT <>>
|
|
<TELL "ff">)
|
|
(T
|
|
<SETG SAY-STAT T>
|
|
<TELL "n">)>
|
|
<TELL ".]" CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-TIME ()
|
|
<TELL "This is a timeless tale." CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SCRIPT ()
|
|
<PRINT "[Transcripting o">
|
|
<TELL "n.]" CR>
|
|
<DIROUT ,D-PRINTER-ON>
|
|
<TRANSCRIPT "begin">
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-UNSCRIPT ()
|
|
<TRANSCRIPT "end">
|
|
<DIROUT ,D-PRINTER-OFF>
|
|
<PRINT "[Transcripting o">
|
|
<TELL "ff.]" CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE TRANSCRIPT (STR)
|
|
<DIROUT ,D-SCREEN-OFF>
|
|
<TELL CR "Here " .STR "s a transcript of interaction with" CR>
|
|
<V-VERSION>
|
|
<DIROUT ,D-SCREEN-ON>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-VERSION ("AUX" X)
|
|
<CRLF>
|
|
<COND (<T? ,COLORS?>
|
|
<COLOR ,INCOLOR ,BGND>)
|
|
(<NOT <EQUAL? ,HOST ,MACINTOSH>>
|
|
<HLIGHT ,H-BOLD>)>
|
|
<TELL "BEYOND ZORK: ">
|
|
<PRINT "The Coconut of Quendor">
|
|
<CRLF>
|
|
<COLOR ,FORE ,BGND>
|
|
<HLIGHT ,H-NORMAL>
|
|
<PRINT "Copyright (C)1987 Infocom, Inc. All rights reserved.">
|
|
<CRLF>
|
|
<TRADEMARK>
|
|
<CRLF>
|
|
<TELL "Release ">
|
|
<PRINTN <BAND <LOWCORE ZORKID> *3777*>>
|
|
<TELL " / Serial Number ">
|
|
<LOWCORE-TABLE SERIAL 6 PRINTC>
|
|
<CRLF>
|
|
<INTERPRETER-ID>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-$VERIFY ()
|
|
; <COND (<T? ,PRSO>
|
|
<COND (<AND <PRSO? INTNUM>
|
|
<EQUAL? ,P-NUMBER 105>>
|
|
<TELL N ,SERIAL CR>
|
|
<RTRUE>)>
|
|
<DONT-UNDERSTAND>
|
|
<RTRUE>)>
|
|
<INTERPRETER-ID>
|
|
<TELL CR "[Verifying.]" CR>
|
|
<COND (<VERIFY>
|
|
<NYMPH-APPEARS>
|
|
<TELL "Your disk is correct">
|
|
<PRINT ". Bye!\"| She disappears with a wink.|">
|
|
<RTRUE>)>
|
|
<FAILED "$VERIFY">
|
|
<RTRUE>>
|
|
|
|
<ROUTINE INTERPRETER-ID ()
|
|
<COND (<L? ,HOST 1>
|
|
<TELL "XZIP">)
|
|
(<G? ,HOST <GET ,MACHINES 0>>
|
|
<TELL "Interpreter " N ,HOST>)
|
|
(T
|
|
<TELL <GET ,MACHINES ,HOST>>)>
|
|
<COND (<T? ,COLORS?>
|
|
<TELL " Color">)>
|
|
<TELL " Version " C <LOWCORE INTVR> CR>
|
|
<RTRUE>>
|
|
|
|
<GLOBAL POTENTIAL:NUMBER 0>
|
|
<GLOBAL STATS:TABLE <TABLE 0 0 0 0 0 0 0 0>>
|
|
<GLOBAL MAXSTATS:TABLE <TABLE 0 0 0 0 0 0 0 0>>
|
|
|
|
<ROUTINE V-STATUS ("AUX" (CNT 0) X)
|
|
<COND (<AND <T? ,DMODE>
|
|
<T? ,VT220>
|
|
<NOT <EQUAL? ,IN-DBOX ,SHOWING-STATS>>
|
|
<ZERO? ,PRIOR>>
|
|
<TELL "[Displaying status.]" CR>
|
|
<SHOW-RANK>
|
|
<DISPLAY-STATS>)
|
|
(T
|
|
<STANDARD-STATS>)>
|
|
<COND (<BTST <LOWCORE FLAGS> 1>
|
|
<DIROUT ,D-SCREEN-OFF>
|
|
<STANDARD-STATS>
|
|
<DIROUT ,D-SCREEN-ON>)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE STANDARD-STATS ()
|
|
<PRINT-TABLE ,CHARNAME>
|
|
<PRINTC %<ASCII !\/>>
|
|
<ANNOUNCE-RANK>
|
|
<CRLF>
|
|
<TEXT-STATS>
|
|
<CRLF>
|
|
<RTRUE>>
|
|
|
|
<GLOBAL BMODE:FLAG <>> "Battle display mode flag."
|
|
<GLOBAL AUTO:FLAG T> "Automatic display mode flag."
|
|
|
|
<ROUTINE V-MONITOR ("AUX" X)
|
|
<COND (<ZERO? ,VT220>
|
|
<NOT-AVAILABLE>
|
|
<RTRUE>)
|
|
(<ZERO? ,DMODE>
|
|
<TELL
|
|
"[That command works only in Enhanced display mode.]" CR>
|
|
<RTRUE>)
|
|
(<ZERO? ,AUTO>
|
|
<SETG AUTO T>
|
|
<SET X <GET ,STATS ,ENDURANCE>>
|
|
<COND (<L? .X <GET ,MAXSTATS ,ENDURANCE>>
|
|
<BMODE-ON>)>
|
|
<PRINT "[Combat monitor o">
|
|
<TELL "n.]" CR>
|
|
<RTRUE>)>
|
|
<SETG AUTO 0>
|
|
<COND (<T? ,BMODE>
|
|
<BATTLE-MODE-OFF>)>
|
|
<PRINT "[Combat monitor o">
|
|
<TELL "ff.]" CR>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE BMODE-OFF ("AUX" X)
|
|
<COND (<OR <ZERO? ,BMODE>
|
|
<ZERO? ,VT220>>
|
|
<RFALSE>)>
|
|
<SET X <GET ,STATS ,ENDURANCE>>
|
|
<COND (<NOT <L? .X <GET ,MAXSTATS ,ENDURANCE>>>
|
|
<BATTLE-MODE-OFF>)>
|
|
<RFALSE>>
|
|
|
|
<ROUTINE BATTLE-MODE-OFF ()
|
|
<SETG BMODE 0>
|
|
<WINDOW ,SHOWING-ALL>
|
|
<SETG DHEIGHT ,MAX-DHEIGHT>
|
|
<TO-TOP-WINDOW>
|
|
<DO-CURSET <+ ,DHEIGHT <- 11 ,MAX-DHEIGHT>> 2>
|
|
<PRINT-SPACES ,DWIDTH>
|
|
<TO-BOTTOM-WINDOW>
|
|
<RFALSE>>
|
|
|
|
<ROUTINE BMODE-ON ()
|
|
<COND (<OR <ZERO? ,DMODE>
|
|
<T? ,BMODE>
|
|
<ZERO? ,VT220>
|
|
<EQUAL? ,SHOWING-STATS ,IN-DBOX ,NEW-DBOX>>
|
|
<RFALSE>)>
|
|
<BATTLE-MODE-ON>
|
|
<RFALSE>>
|
|
|
|
<ROUTINE BATTLE-MODE-ON ("AUX" Y)
|
|
<SETG BMODE T>
|
|
<WINDOW ,SHOWING-ALL>
|
|
<SET Y <+ ,DHEIGHT <- 11 ,MAX-DHEIGHT>>>
|
|
<TO-TOP-WINDOW>
|
|
<DO-CURSET .Y 2>
|
|
<PRINT-SPACES ,DWIDTH>
|
|
<TO-BOTTOM-WINDOW>
|
|
<STATBARS .Y 0 0>
|
|
<SETG DHEIGHT <- ,MAX-DHEIGHT 1>>
|
|
<RFALSE>>
|
|
|
|
<ROUTINE V-DEFINE ("AUX" KEYS TOP LTBL LMARGIN
|
|
DKEY TBL TBL2 LEN HIT X Y)
|
|
|
|
; "Set up routine constants."
|
|
|
|
<SET KEYS 9>
|
|
<COND (<EQUAL? ,HOST ,C128 ,C64>
|
|
<SET KEYS 7>)>
|
|
<SET TOP </ <- ,HEIGHT <+ .KEYS 7>> 2>>
|
|
<SET LTBL ,KEY-LABELS>
|
|
<COND (<OR <EQUAL? ,HOST ,APPLE-2E ,APPLE-2C ,APPLE-2GS>
|
|
<EQUAL? ,HOST ,MACINTOSH>>
|
|
<SET LTBL ,APPLE-LABELS>)>
|
|
<SET LMARGIN </ <- ,WIDTH <+ ,SOFT-LEN 4>> 2>>
|
|
|
|
; "Init screen."
|
|
|
|
<COLOR ,GCOLOR ,BGND>
|
|
<CLEAR -1>
|
|
<SPLIT 20>
|
|
<TO-TOP-WINDOW>
|
|
|
|
; "Set up image of SOFT-KEYS in DBOX."
|
|
|
|
<DO-CURSET .TOP <+ 8 .LMARGIN>>
|
|
<TELL "Function Key Definitions">
|
|
|
|
<SOFTS-TO-DBOX .KEYS>
|
|
<SET X <+ .LMARGIN 4>>
|
|
<DO-CURSET <+ .TOP 2> .X>
|
|
<HLIGHT ,H-INVERSE>
|
|
<PRINTT ,DBOX ,SOFT-LEN <+ .KEYS 1>>
|
|
|
|
; "Print key labels."
|
|
|
|
<COND (<OR <ZERO? ,COLORS?>
|
|
<EQUAL? ,FORE ,GCOLOR>>
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>)>
|
|
<SET X 0>
|
|
<REPEAT ()
|
|
<DO-CURSET <+ <+ .TOP .X> 2> .LMARGIN>
|
|
<TELL <GET .LTBL .X>>
|
|
<COND (<IGRTR? X .KEYS>
|
|
<RETURN>)>>
|
|
|
|
<SET X <+ .LMARGIN 4>>
|
|
<DO-CURSET <+ <+ .KEYS 4> .TOP> .X>
|
|
<TELL " Restore Defaults ">
|
|
<DO-CURSET <+ <+ .KEYS 6> .TOP> .X>
|
|
<PRINT " Exit ">
|
|
|
|
<SET DKEY 0>
|
|
<REPEAT ()
|
|
<SET Y <+ <+ .DKEY .TOP> 2>>
|
|
<COLOR ,FORE ,BGND>
|
|
<HLIGHT ,H-INVERSE>
|
|
|
|
<COND (<EQUAL? .DKEY <+ .KEYS 1>>
|
|
<SET X <+ .LMARGIN 4>>
|
|
<DO-CURSET <+ <+ .KEYS 4> .TOP> .X>
|
|
<TELL " Restore Defaults ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<SCREEN ,S-TEXT>
|
|
<REPEAT ()
|
|
<SET HIT <DO-INPUT>>
|
|
<COND (<EQUAL? .HIT ,EOL ,LF>
|
|
<COND (<MAKE-SURE?>
|
|
<DEFAULT-SOFTS>
|
|
<SOFTS-TO-DBOX .KEYS>
|
|
<SCREEN ,S-WINDOW>
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<HLIGHT ,H-INVERSE>
|
|
<COLOR ,GCOLOR ,BGND>
|
|
<SET X <+ .LMARGIN 4>>
|
|
<DO-CURSET <+ .TOP 2> .X>
|
|
<PRINTT ,DBOX ,SOFT-LEN <+ .KEYS 1>>
|
|
<RETURN>)>
|
|
<SET HIT ,DOWN-ARROW>)>
|
|
<COND (<EQUAL? .HIT ,UP-ARROW ,DOWN-ARROW>
|
|
<SET DKEY <+ .KEYS 2>>
|
|
<COND (<EQUAL? .HIT ,UP-ARROW>
|
|
<SET DKEY .KEYS>)>
|
|
<SCREEN ,S-WINDOW>
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<COLOR ,GCOLOR ,BGND>
|
|
<COND (<AND <T? ,COLORS?>
|
|
<NOT <EQUAL? ,FORE ,GCOLOR>>>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<SET X <+ .LMARGIN 4>>
|
|
<DO-CURSET <+ <+ .KEYS 4> .TOP> .X>
|
|
<TELL " Restore Defaults ">
|
|
<RETURN>)>
|
|
<SOUND ,S-BOOP>>
|
|
<AGAIN>)
|
|
(<EQUAL? .DKEY <+ .KEYS 2>>
|
|
<SET X <+ .LMARGIN 4>>
|
|
<DO-CURSET <+ <+ .KEYS 6> .TOP> .X>
|
|
<PRINT " Exit ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<SCREEN ,S-TEXT>
|
|
<REPEAT ()
|
|
<SET HIT <DO-INPUT>>
|
|
<COND (<EQUAL? .HIT ,EOL ,LF>
|
|
<COND (<OR <NOT <EQUAL? ,HOST ,MACINTOSH>>
|
|
<MAKE-SURE?>>
|
|
<V-REFRESH>
|
|
<CONTINUING>
|
|
<RTRUE>)>
|
|
<SET HIT ,DOWN-ARROW>)>
|
|
<COND (<EQUAL? .HIT ,UP-ARROW ,DOWN-ARROW>
|
|
<SET DKEY 0>
|
|
<COND (<EQUAL? .HIT ,UP-ARROW>
|
|
<SET DKEY <+ .KEYS 1>>)>
|
|
<SCREEN ,S-WINDOW>
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<COLOR ,GCOLOR ,BGND>
|
|
<COND (<AND <T? ,COLORS?>
|
|
<NOT <EQUAL? ,FORE ,GCOLOR>>>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<SET X <+ .LMARGIN 4>>
|
|
<DO-CURSET <+ <+ .KEYS 6> .TOP> .X>
|
|
<PRINT " Exit ">
|
|
<RETURN>)>
|
|
<SOUND ,S-BOOP>>
|
|
<AGAIN>)>
|
|
|
|
<DO-CURSET .Y .LMARGIN>
|
|
<TELL <GET .LTBL .DKEY>>
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<PUTB ,DBOX 0 ,SP>
|
|
<COPYT ,DBOX <REST ,DBOX 1> ,NSOFT-LEN>
|
|
<SET TBL <GET ,SOFT-KEYS .DKEY>>
|
|
<SET LEN <GETB .TBL 1>>
|
|
<COND (<T? .LEN>
|
|
<COPYT <REST .TBL 2> ,DBOX .LEN>)>
|
|
<DO-CURSET .Y <+ .LMARGIN 4>>
|
|
<COLOR ,INCOLOR ,BGND>
|
|
<PRINTT ,DBOX ,SOFT-LEN>
|
|
|
|
<DO-CURSET .Y <+ <+ .LMARGIN .LEN> 4>>
|
|
<REPEAT ()
|
|
<SET HIT <READ .TBL 0>>
|
|
<COND (<OR <EQUAL? .HIT ,EOL ,LF>
|
|
<EQUAL? .HIT ,UP-ARROW ,DOWN-ARROW ,MAC-UP-ARROW
|
|
,MAC-DOWN-ARROW>>
|
|
<RETURN>)>
|
|
<SOUND ,S-BOOP>>
|
|
<PUTB ,DBOX 0 ,SP>
|
|
<COPYT ,DBOX <REST ,DBOX 1> ,NSOFT-LEN>
|
|
<SET LEN <GETB .TBL 1>>
|
|
<COND (<ZERO? .LEN>
|
|
<PUTB .TBL 0 ,SP>
|
|
<COPYT .TBL <REST .TBL 1> ,NSOFT-LEN>
|
|
<SET TBL2 <GET ,KEY-DEFAULTS .DKEY>>
|
|
<SET LEN <GETB .TBL2 0>>
|
|
<PUTB .TBL 0 ,SOFT-LEN>
|
|
<PUTB .TBL 1 .LEN>
|
|
<SET X <REST .TBL2 1>>
|
|
<COPYT .X <REST .TBL 2> .LEN>
|
|
<COND (<NOT <EQUAL? ,HOST ,C128 ,C64>>)
|
|
(<SET X <INTBL? %<ASCII !\|> <REST .TBL 2> .LEN 1>>
|
|
<PUTB .X 0 %<ASCII !\!>>)>)>
|
|
<COPYT <REST .TBL 2> ,DBOX .LEN>
|
|
|
|
<DO-CURSET .Y <+ .LMARGIN 4>>
|
|
<COLOR ,GCOLOR ,BGND>
|
|
<HLIGHT ,H-INVERSE>
|
|
<PRINTT ,DBOX ,SOFT-LEN>
|
|
|
|
<SET Y <+ <+ .DKEY 2> .TOP>>
|
|
<DO-CURSET .Y .LMARGIN>
|
|
<COND (<OR <ZERO? ,COLORS?>
|
|
<EQUAL? ,FORE ,GCOLOR>>
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>)>
|
|
<COLOR ,GCOLOR ,BGND>
|
|
<TELL <GET .LTBL .DKEY>>
|
|
|
|
<COND (<EQUAL? .HIT ,EOL ,DOWN-ARROW ,LF ,MAC-DOWN-ARROW>
|
|
<INC DKEY>)
|
|
(<DLESS? DKEY 0>
|
|
<SET DKEY <+ .KEYS 2>>)>>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE MAKE-SURE? ("AUX" X)
|
|
<TELL CR "Are you sure? (Y/N) >">
|
|
<SET X <INPUT 1>>
|
|
<CRLF>
|
|
<CLEAR ,S-TEXT>
|
|
<COND (<EQUAL? .X %<ASCII !\Y> %<ASCII !\y>>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE DEFAULT-SOFTS ("AUX" (CNT 0) TBL X LEN)
|
|
<REPEAT ()
|
|
<SET TBL <GET ,SOFT-KEYS .CNT>>
|
|
<PUTB .TBL 0 ,SOFT-LEN>
|
|
<SET TBL <REST .TBL 1>>
|
|
<SET X <GET ,KEY-DEFAULTS .CNT>>
|
|
<SET LEN <+ <GETB .X 0> 1>>
|
|
<COPYT .X .TBL .LEN>
|
|
<COND (<AND <EQUAL? ,HOST ,C128 ,C64>
|
|
<SET X <INTBL? %<ASCII !\|> .TBL .LEN 1>>>
|
|
<PUTB .X 0 %<ASCII !\!>>)>
|
|
<COND (<IGRTR? CNT 9>
|
|
<RFALSE>)>>>
|
|
|
|
<ROUTINE SOFTS-TO-DBOX (KEYS "AUX" X TBL TBL2 LEN)
|
|
<PUTB ,DBOX 0 ,SP>
|
|
<COPYT ,DBOX <REST ,DBOX 1> %<- 0 <- ,DBOX-LENGTH 1>>>
|
|
<SET X 0>
|
|
<REPEAT ()
|
|
<SET TBL2 <REST ,DBOX <* .X ,SOFT-LEN>>>
|
|
<SET TBL <GET ,SOFT-KEYS .X>>
|
|
<SET LEN <GETB .TBL 1>>
|
|
<COND (<T? .LEN>
|
|
<COPYT <REST .TBL 2> .TBL2 .LEN>)>
|
|
<COND (<IGRTR? X .KEYS>
|
|
<RFALSE>)>>>
|
|
|
|
<ROUTINE V-SETTINGS ("AUX" TOP LMARGIN LINE X KEY)
|
|
<SET TOP </ <- ,HEIGHT 19> 2>>
|
|
<SET LMARGIN </ <- ,WIDTH 52> 2>>
|
|
<COLOR ,GCOLOR ,BGND>
|
|
<CLEAR -1>
|
|
<SPLIT 22>
|
|
<TO-TOP-WINDOW>
|
|
<DO-CURSET .TOP <+ .LMARGIN 18>>
|
|
<COLOR ,FORE ,BGND>
|
|
<TELL "Display Settings">
|
|
|
|
<SET LINE 0>
|
|
<REPEAT ()
|
|
<SHOW-SETLINE .LINE .TOP .LMARGIN>
|
|
<COND (<IGRTR? LINE 8>
|
|
<RETURN>)>>
|
|
|
|
<SET LINE 0>
|
|
<REPEAT ()
|
|
<SHOW-SETLINE .LINE .TOP .LMARGIN 1>
|
|
<HLIGHT ,H-NORMAL>
|
|
<SCREEN ,S-TEXT>
|
|
<COND (<EQUAL? .LINE 7> ; "Restore."
|
|
<REPEAT ()
|
|
<SET KEY <DO-INPUT>>
|
|
<COND (<EQUAL? .KEY ,EOL ,LF>
|
|
<COND (<MAKE-SURE?>
|
|
<COND (<ZERO? ,DMODE>
|
|
<SETG DMODE T>
|
|
<SHOW-SETLINE 0 .TOP .LMARGIN>
|
|
<SETG MAP-ROUTINE ,CLOSE-MAP>
|
|
<COND (<ZERO? ,VT220>
|
|
<SETG MAP-ROUTINE
|
|
,FAR-MAP>)>
|
|
<SETG IN-DBOX ,SHOWING-ROOM>
|
|
<SHOW-SETLINE 4 .TOP .LMARGIN>
|
|
<SETG PRIOR 0>
|
|
<SHOW-SETLINE 5 .TOP .LMARGIN>
|
|
<SETG AUTO T>
|
|
<SHOW-SETLINE 6 .TOP .LMARGIN>)>
|
|
<COND (<NOT <EQUAL? ,VERBOSITY 1>>
|
|
<SETG VERBOSITY 1>
|
|
<SHOW-SETLINE 1 .TOP .LMARGIN>)>
|
|
<COND (<BTST <LOWCORE FLAGS> 1>
|
|
<DIROUT ,D-PRINTER-OFF>
|
|
<SHOW-SETLINE 2 .TOP .LMARGIN>)>
|
|
<COND (<ZERO? ,SAY-STAT>
|
|
<SETG SAY-STAT T>
|
|
<SHOW-SETLINE 3 .TOP .LMARGIN>)>
|
|
<COND (<AND <T? ,VT220>
|
|
<EQUAL? ,MAP-ROUTINE
|
|
,FAR-MAP>>
|
|
<SETG MAP-ROUTINE ,CLOSE-MAP>
|
|
<SHOW-SETLINE 4 .TOP .LMARGIN>)
|
|
(<AND <ZERO? ,VT220>
|
|
<EQUAL? ,MAP-ROUTINE
|
|
,CLOSE-MAP>>
|
|
<SETG MAP-ROUTINE ,FAR-MAP>
|
|
<SHOW-SETLINE 4 .TOP .LMARGIN>)>
|
|
<COND (<T? ,PRIOR>
|
|
<SETG PRIOR 0>
|
|
<SHOW-SETLINE 5 .TOP .LMARGIN>)>
|
|
<COND (<ZERO? ,AUTO>
|
|
<SETG AUTO T>
|
|
<SHOW-SETLINE 6 .TOP .LMARGIN>)>
|
|
; <RETURN>)>
|
|
<SET KEY ,DOWN-ARROW>)>
|
|
<COND (<EQUAL? .KEY ,UP-ARROW ,DOWN-ARROW
|
|
,MAC-UP-ARROW ,MAC-DOWN-ARROW>
|
|
<SET LINE 8>
|
|
<COND (<EQUAL? .KEY ,UP-ARROW ,MAC-UP-ARROW>
|
|
<SET LINE 6>
|
|
<COND (<ZERO? ,DMODE>
|
|
<SET LINE 3>)>)>
|
|
<SHOW-SETLINE 7 .TOP .LMARGIN>
|
|
<RETURN>)>
|
|
<SOUND ,S-BOOP>>
|
|
<AGAIN>)
|
|
(<EQUAL? .LINE 8> ; "Exit"
|
|
<REPEAT ()
|
|
<SET KEY <DO-INPUT>>
|
|
<COND (<EQUAL? .KEY ,EOL ,LF>
|
|
<COND (<OR <NOT <EQUAL? ,HOST ,MACINTOSH>>
|
|
<MAKE-SURE?>>
|
|
<V-REFRESH>
|
|
<CONTINUING>
|
|
<RTRUE>)>
|
|
<SET KEY ,DOWN-ARROW>)>
|
|
<COND (<EQUAL? .KEY ,UP-ARROW ,DOWN-ARROW>
|
|
<SET LINE 0>
|
|
<COND (<EQUAL? .KEY ,UP-ARROW>
|
|
<SET LINE 7>)>
|
|
<SHOW-SETLINE 8 .TOP .LMARGIN>
|
|
<RETURN>)>
|
|
<SOUND ,S-BOOP>>
|
|
<AGAIN>)>
|
|
<REPEAT ()
|
|
<SET KEY <DO-INPUT>>
|
|
<COND (<EQUAL? .KEY ,UP-ARROW>
|
|
<SHOW-SETLINE .LINE .TOP .LMARGIN>
|
|
<COND (<DLESS? LINE 0>
|
|
<SET LINE 8>)>
|
|
<RETURN>)
|
|
(<EQUAL? .KEY ,DOWN-ARROW ,EOL ,LF>
|
|
<SHOW-SETLINE .LINE .TOP .LMARGIN>
|
|
<COND (<AND <ZERO? ,DMODE>
|
|
<EQUAL? .LINE 3>>
|
|
<SET LINE 7>
|
|
<RETURN>)>
|
|
<INC LINE>
|
|
<RETURN>)
|
|
(<EQUAL? .KEY ,RIGHT-ARROW ,LEFT-ARROW ,SP>
|
|
<COND (<ZERO? .LINE>
|
|
<COND (<ZERO? ,DMODE>
|
|
<INC DMODE>)
|
|
(T
|
|
<SETG DMODE 0>)>
|
|
<SHOW-SETLINE 4 .TOP .LMARGIN>
|
|
<SHOW-SETLINE 5 .TOP .LMARGIN>
|
|
<SHOW-SETLINE 6 .TOP .LMARGIN>)
|
|
(<EQUAL? .LINE 2>
|
|
<COND (<BTST <LOWCORE FLAGS> 1>
|
|
<DIROUT ,D-PRINTER-OFF>)
|
|
(T
|
|
<DIROUT ,D-PRINTER-ON>)>)
|
|
(<EQUAL? .LINE 3>
|
|
<COND (<ZERO? ,SAY-STAT>
|
|
<INC SAY-STAT>)
|
|
(T
|
|
<SETG SAY-STAT 0>)>)
|
|
(<EQUAL? .LINE 4>
|
|
<COND (<EQUAL? ,MAP-ROUTINE ,CLOSE-MAP>
|
|
<SETG MAP-ROUTINE ,FAR-MAP>)
|
|
(T
|
|
<SETG MAP-ROUTINE ,CLOSE-MAP>)>)
|
|
(<EQUAL? .LINE 6>
|
|
<COND (<ZERO? ,AUTO>
|
|
<INC AUTO>)
|
|
(T
|
|
<SETG AUTO 0>)>)
|
|
(<EQUAL? .KEY ,RIGHT-ARROW ,SP>
|
|
<COND (<EQUAL? .LINE 1>
|
|
<COND (<IGRTR? VERBOSITY 2>
|
|
<SETG VERBOSITY 0>)>)
|
|
(<EQUAL? .LINE 5>
|
|
<COND (<ZERO? ,PRIOR>
|
|
<SETG PRIOR ,SHOWING-ROOM>
|
|
<SETG IN-DBOX ,SHOWING-ROOM>)
|
|
(<EQUAL? ,PRIOR ,SHOWING-ROOM>
|
|
<SETG PRIOR ,SHOWING-INV>
|
|
<SETG IN-DBOX ,SHOWING-INV>)
|
|
(<AND <EQUAL? ,PRIOR
|
|
,SHOWING-INV>
|
|
<NOT <EQUAL? ,STAT-ROUTINE
|
|
,BAR-NUMBER>>>
|
|
<SETG PRIOR ,SHOWING-STATS>
|
|
<SETG IN-DBOX ,SHOWING-STATS>)
|
|
(T
|
|
<SETG PRIOR 0>)>)>)
|
|
(T
|
|
<COND (<EQUAL? .LINE 1>
|
|
<COND (<DLESS? VERBOSITY 0>
|
|
<SETG VERBOSITY 2>)>)
|
|
(<EQUAL? .LINE 5>
|
|
<COND (<ZERO? ,PRIOR>
|
|
<SETG PRIOR ,SHOWING-STATS>
|
|
<SETG IN-DBOX ,SHOWING-STATS>
|
|
<COND (<EQUAL? ,STAT-ROUTINE
|
|
,BAR-NUMBER>
|
|
<SETG PRIOR ,SHOWING-INV>
|
|
<SETG IN-DBOX
|
|
,SHOWING-INV>)>)
|
|
(<EQUAL? ,PRIOR ,SHOWING-ROOM>
|
|
<SETG PRIOR 0>)
|
|
(<EQUAL? ,PRIOR ,SHOWING-INV>
|
|
<SETG PRIOR ,SHOWING-ROOM>
|
|
<SETG IN-DBOX ,SHOWING-ROOM>)
|
|
(<NOT <EQUAL? ,STAT-ROUTINE
|
|
,BAR-NUMBER>>
|
|
<SETG PRIOR ,SHOWING-INV>
|
|
<SETG IN-DBOX ,SHOWING-INV>)>)>)>
|
|
<RETURN>)>
|
|
<SOUND ,S-BOOP>>>>
|
|
|
|
<ROUTINE SHOW-SETLINE (LINE TOP LMARGIN "OPT" (HL 0) "AUX" X)
|
|
<SCREEN ,S-WINDOW>
|
|
<SET TOP <+ .TOP 2>>
|
|
<SET X <+ <GETB ,SETOFFS .LINE> .LMARGIN>>
|
|
<DO-CURSET <+ <* .LINE 2> .TOP> .X>
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<COLOR ,FORE ,BGND>
|
|
<COND (<T? .HL>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<PRINT <GET ,SNAMES .LINE>>
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<PRINTC ,SP>
|
|
<COND (<EQUAL? .LINE 7 8>
|
|
<RTRUE>)
|
|
(<ZERO? .LINE>
|
|
<COND (<T? ,DMODE>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<TELL " Enhanced ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<PRINTC ,SP>
|
|
<COND (<ZERO? ,DMODE>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<TELL " Standard ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<RTRUE>)
|
|
(<EQUAL? .LINE 1>
|
|
<COND (<ZERO? ,VERBOSITY>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<TELL " Superbrief ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<PRINTC ,SP>
|
|
<COND (<EQUAL? ,VERBOSITY 1>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<TELL " Brief ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<PRINTC ,SP>
|
|
<COND (<EQUAL? ,VERBOSITY 2>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<TELL " Verbose ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<RTRUE>)
|
|
(<EQUAL? .LINE 2>
|
|
<SET X <BAND <LOWCORE FLAGS> 1>>
|
|
<COND (<ZERO? .X>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<TELL " Off ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<PRINTC ,SP>
|
|
<COND (<T? .X>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<TELL " On ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<RTRUE>)
|
|
(<EQUAL? .LINE 3>
|
|
<COND (<ZERO? ,SAY-STAT>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<TELL " Off ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<PRINTC ,SP>
|
|
<COND (<T? ,SAY-STAT>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<TELL " On ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<RTRUE>)
|
|
(<EQUAL? .LINE 4>
|
|
<COND (<ZERO? ,DMODE>)
|
|
(<EQUAL? ,MAP-ROUTINE ,CLOSE-MAP>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<TELL " Normal ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<PRINTC ,SP>
|
|
<COND (<ZERO? ,DMODE>)
|
|
(<EQUAL? ,MAP-ROUTINE ,FAR-MAP>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<TELL " Wide ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<RTRUE>)
|
|
(<EQUAL? .LINE 5>
|
|
<COND (<ZERO? ,DMODE>)
|
|
(<ZERO? ,PRIOR>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<TELL " Off ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<PRINTC ,SP>
|
|
<COND (<ZERO? ,DMODE>)
|
|
(<EQUAL? ,PRIOR ,SHOWING-ROOM>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<TELL " Room ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<PRINTC ,SP>
|
|
<COND (<ZERO? ,DMODE>)
|
|
(<EQUAL? ,PRIOR ,SHOWING-INV>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<TELL " Inventory ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<COND (<NOT <EQUAL? ,STAT-ROUTINE ,BAR-NUMBER>>
|
|
<PRINTC ,SP>
|
|
<COND (<ZERO? ,DMODE>)
|
|
(<EQUAL? ,PRIOR ,SHOWING-STATS>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<TELL " Status ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>)>
|
|
<RTRUE>)
|
|
(<EQUAL? .LINE 6>
|
|
<COND (<ZERO? ,DMODE>)
|
|
(<T? ,AUTO>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<TELL " Automatic ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<PRINTC ,SP>
|
|
<COND (<ZERO? ,DMODE>)
|
|
(<ZERO? ,AUTO>
|
|
<HLIGHT ,H-INVERSE>)>
|
|
<TELL " Off ">
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-MONO>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
|
|
|