6086 lines
109 KiB
Plaintext
6086 lines
109 KiB
Plaintext
|
|
|
|
.FUNCT GOTO,WHERE,CR,WHO,X,L,OLIT
|
|
SET 'OLIT,LIT?
|
|
SET 'WHO,WINNER
|
|
LOC WINNER >L
|
|
EQUAL? L,SADDLE \?CCL3
|
|
IN? L,DACT \?CCL3
|
|
SET 'WHO,DACT
|
|
JUMP ?CND1
|
|
?CCL3: EQUAL? L,HERE /?CND1
|
|
FSET? L,VEHICLE \?CND1
|
|
CALL PERFORM,V?EXIT,L
|
|
EQUAL? STACK,M-FATAL \?CND9
|
|
SET 'P-WALK-DIR,FALSE-VALUE
|
|
RTRUE
|
|
?CND9: SET 'P-WALK-DIR,FALSE-VALUE
|
|
SET 'OLD-HERE,FALSE-VALUE
|
|
INC 'CR
|
|
?CND1: GETP HERE,P?ACTION
|
|
CALL STACK,M-EXIT >X
|
|
EQUAL? X,M-FATAL \?CCL13
|
|
SET 'P-WALK-DIR,FALSE-VALUE
|
|
RTRUE
|
|
?CCL13: ZERO? X /?CND11
|
|
ZERO? CR /?CND15
|
|
PRINT TAB
|
|
?CND15: INC 'CR
|
|
?CND11: EQUAL? WHO,WINNER \?CND17
|
|
IN? DACT,HERE \?CND17
|
|
FSET? DACT,LIVING \?CND17
|
|
FSET? DACT,MUNGED /?CND17
|
|
FSET? DACT,SLEEPING /?CND17
|
|
REMOVE DACT
|
|
EQUAL? WHERE,APLANE,DEATH /?CND17
|
|
ZERO? CR /?CND26
|
|
PRINT TAB
|
|
?CND26: INC 'CR
|
|
PRINTI "A shadow passes over "
|
|
PRINTD HEAD
|
|
PRINTI " as you leave."
|
|
CRLF
|
|
?CND17: ZERO? CR /?CND28
|
|
ZERO? VERBOSITY /?CND28
|
|
CRLF
|
|
?CND28: SET 'HERE,WHERE
|
|
MOVE WHO,WHERE
|
|
CALL1 IS-LIT? >LIT?
|
|
ZERO? OLIT \?CND32
|
|
ZERO? LIT? \?CND32
|
|
ZERO? CR /?CND36
|
|
PRINT TAB
|
|
?CND36: PRINT CYOU
|
|
CALL2 PICK-NEXT,DARK-WALKS
|
|
PRINT STACK
|
|
CALL1 GRUE-ROOM?
|
|
ZERO? STACK \?CND38
|
|
RANDOM 100
|
|
LESS? 50,STACK /?CND38
|
|
PRINTI ", straight into the jaws of a deadly presence lurking in the darkness"
|
|
ICALL1 JIGS-UP
|
|
RTRUE
|
|
?CND38: PRINT PERIOD
|
|
ZERO? VERBOSITY /?CND32
|
|
CRLF
|
|
?CND32: GETP HERE,P?ACTION
|
|
ICALL STACK,M-ENTERING
|
|
EQUAL? HERE,WHERE \TRUE
|
|
ZERO? LIT? \?CND45
|
|
ICALL1 MARK-DIR
|
|
?CND45: SET 'LAST-PSEUDO-LOC,FALSE-VALUE
|
|
FSET PSEUDO-OBJECT,NOARTICLE
|
|
FCLEAR PSEUDO-OBJECT,VOWEL
|
|
FCLEAR PSEUDO-OBJECT,TRYTAKE
|
|
SET 'LAST-MONSTER,FALSE-VALUE
|
|
SET 'LAST-MONSTER-DIR,FALSE-VALUE
|
|
SET 'P-IT-OBJECT,NOT-HERE-OBJECT
|
|
SET 'P-THEM-OBJECT,NOT-HERE-OBJECT
|
|
SET 'P-HIM-OBJECT,NOT-HERE-OBJECT
|
|
SET 'P-HER-OBJECT,NOT-HERE-OBJECT
|
|
ICALL2 V-LOOK,FALSE-VALUE
|
|
GETP HERE,P?ACTION
|
|
ICALL STACK,M-ENTERED
|
|
RTRUE
|
|
|
|
|
|
.FUNCT MARK-DIR,DIR,TBL,WRD,TYPE,LEN
|
|
ASSIGNED? 'DIR /?CND1
|
|
SET 'DIR,P-WALK-DIR
|
|
?CND1: LESS? DIR,P?DOWN /FALSE
|
|
SUB DIR,P?NORTH
|
|
SUB 0,STACK
|
|
GETB XPDIR-LIST,STACK
|
|
GETP HERE,STACK >TBL
|
|
ZERO? TBL /FALSE
|
|
GET TBL,XTYPE >WRD
|
|
BTST WRD,MARKBIT /TRUE
|
|
BAND WRD,65280 >TYPE
|
|
BAND WRD,127 >LEN
|
|
EQUAL? TYPE,CONNECT,SCONNECT,X-EXIT /?CCL10
|
|
EQUAL? TYPE,FCONNECT \?PRD13
|
|
ZERO? LEN \?CCL10
|
|
?PRD13: EQUAL? TYPE,DCONNECT \FALSE
|
|
GET TBL,XDATA
|
|
FSET? STACK,OPENED \FALSE
|
|
?CCL10: ADD WRD,MARKBIT
|
|
PUT TBL,XTYPE,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DO-WALK,DIR1,DIR2,DIR3,X
|
|
SET 'P-WALK-DIR,DIR1
|
|
CALL PERFORM,V?WALK,DIR1 >X
|
|
EQUAL? X,M-FATAL \?CCL3
|
|
RETURN 2
|
|
?CCL3: ZERO? DIR2 /?CND1
|
|
CRLF
|
|
SET 'P-WALK-DIR,DIR2
|
|
CALL PERFORM,V?WALK,DIR2 >X
|
|
EQUAL? X,M-FATAL \?CCL9
|
|
RETURN 2
|
|
?CCL9: ZERO? DIR3 /?CND1
|
|
CRLF
|
|
SET 'P-WALK-DIR,DIR3
|
|
CALL PERFORM,V?WALK,DIR3 >X
|
|
?CND1: RETURN X
|
|
|
|
|
|
.FUNCT V-WALK,TBL,TYPE,DATA
|
|
ZERO? P-WALK-DIR \?CCL3
|
|
ZERO? PRSO /?CND4
|
|
PRINT STR?517
|
|
PRINTI "WALK TO "
|
|
ICALL1 THE-PRINT
|
|
PRINTC 46
|
|
PRINT BRACKET
|
|
ICALL PERFORM,V?WALK-TO,PRSO
|
|
RTRUE
|
|
?CND4: ICALL1 V-WALK-AROUND
|
|
RTRUE
|
|
?CCL3: IN? PLAYER,SADDLE \?CCL7
|
|
IN? SADDLE,DACT \?CCL7
|
|
CALL1 NEXT-SKY
|
|
RSTACK
|
|
?CCL7: EQUAL? HERE,APLANE \?CND1
|
|
CALL1 NEXT-APLANE
|
|
RSTACK
|
|
?CND1: GETP HERE,PRSO >TBL
|
|
ZERO? TBL \?CND11
|
|
ICALL1 NO-EXIT-THAT-WAY
|
|
RETURN 2
|
|
?CND11: GET TBL,XTYPE
|
|
BAND STACK,65280 >TYPE
|
|
EQUAL? TYPE,NO-EXIT,SHADOW-EXIT \?CND15
|
|
ICALL1 NO-EXIT-THAT-WAY
|
|
RETURN 2
|
|
?CND15: EQUAL? LAST-MONSTER,FALSE-VALUE,DORN,MAMA /?CND19
|
|
IN? LAST-MONSTER,HERE \?CND19
|
|
IN? WINNER,HERE \?CND19
|
|
FSET? LAST-MONSTER,LIVING \?CND19
|
|
FSET? LAST-MONSTER,SLEEPING /?CND19
|
|
EQUAL? LAST-MONSTER-DIR,P-WALK-DIR \?CND19
|
|
ZERO? LIT? /?CND19
|
|
ICALL2 CTHE-PRINT,LAST-MONSTER
|
|
PRINTI " block"
|
|
ZERO? LIT? /?CCL29
|
|
FSET? LAST-MONSTER,PLURAL /?CND28
|
|
?CCL29: PRINTC 115
|
|
?CND28: PRINTR " your path!"
|
|
?CND19: GET TBL,XROOM >DATA
|
|
EQUAL? TYPE,CONNECT,X-EXIT \?CCL34
|
|
ICALL2 GOTO,DATA
|
|
RTRUE
|
|
?CCL34: EQUAL? TYPE,SORRY-EXIT \?CCL36
|
|
PRINT DATA
|
|
CRLF
|
|
RETURN 2
|
|
?CCL36: EQUAL? TYPE,SCONNECT \?CCL40
|
|
GET TBL,XDATA
|
|
PRINT STACK
|
|
CRLF
|
|
ZERO? VERBOSITY /?CND41
|
|
CRLF
|
|
?CND41: ICALL2 GOTO,DATA
|
|
RTRUE
|
|
?CCL40: EQUAL? TYPE,FCONNECT \?CCL44
|
|
CALL DATA >DATA
|
|
ZERO? DATA /?PRG47
|
|
ICALL2 GOTO,DATA
|
|
RTRUE
|
|
?PRG47: RETURN 2
|
|
?CCL44: EQUAL? TYPE,DCONNECT \?PRG54
|
|
GET TBL,XDATA >TYPE
|
|
FSET? TYPE,OPENED \?CND50
|
|
ICALL2 GOTO,DATA
|
|
RTRUE
|
|
?CND50: ICALL2 ITS-CLOSED,TYPE
|
|
RETURN 2
|
|
?PRG54: RETURN 2
|
|
|
|
|
|
.FUNCT NO-EXIT-THAT-WAY,STR
|
|
GETP HERE,P?EXIT-STR >STR
|
|
EQUAL? P-WALK-DIR,FALSE-VALUE,P?UP,P?DOWN /?CND1
|
|
EQUAL? P-WALK-DIR,P?IN,P?OUT /?CND1
|
|
ZERO? STR /?CND1
|
|
PRINT STR
|
|
CRLF
|
|
RTRUE
|
|
?CND1: PRINTR "There's no exit that way."
|
|
|
|
|
|
.FUNCT NEXT-OVER,CNT,DIR,BITS,TBL,XTBL,TYPE,DATA
|
|
GET FLY-TABLES,ABOVE >XTBL
|
|
GETB XTBL,0 >BITS
|
|
SET 'DIR,I-NORTH
|
|
?PRG1: GETB PDIR-LIST,DIR
|
|
GETP HERE,STACK >TBL
|
|
SET 'DATA,0
|
|
GETB DBIT-LIST,DIR
|
|
BTST BITS,STACK \?CCL5
|
|
SET 'TYPE,649
|
|
INC 'CNT
|
|
GETB XTBL,CNT >DATA
|
|
EQUAL? HERE,IN-SKY \?CCL8
|
|
EQUAL? DATA,OPLAIN \?CCL8
|
|
SET 'TYPE,1161
|
|
JUMP ?CND3
|
|
?CCL8: EQUAL? HERE,APLANE \?CND3
|
|
EQUAL? DATA,OCAVES \?CND3
|
|
SET 'TYPE,NO-EXIT
|
|
SET 'DATA,0
|
|
JUMP ?CND3
|
|
?CCL5: EQUAL? HERE,IN-SKY \?CCL15
|
|
SET 'TYPE,1161
|
|
JUMP ?CND3
|
|
?CCL15: SET 'TYPE,NO-EXIT
|
|
?CND3: PUT TBL,XTYPE,TYPE
|
|
PUT TBL,XDATA,DATA
|
|
IGRTR? 'DIR,I-NW \?PRG1
|
|
RFALSE
|
|
|
|
|
|
.FUNCT NEXT-SKY,DIR,IDIR,D1,D2,D3,TBL,DATA,X
|
|
ZERO? DACT-SLEEP \?CCL2
|
|
FSET? DACT,SLEEPING /?CCL2
|
|
FSET? DACT,MUNGED /?CCL2
|
|
FSET? DACT,LIVING /?CND1
|
|
?CCL2: ICALL2 CTHE-PRINT,DACT
|
|
PRINTI " is in no condition to move around."
|
|
CRLF
|
|
RETURN 2
|
|
?CND1: SET 'DIR,P-WALK-DIR
|
|
SET 'P-WALK-DIR,FALSE-VALUE
|
|
EQUAL? DIR,P?UP \?CCL11
|
|
EQUAL? HERE,IN-SKY \?CND12
|
|
ICALL2 CTHE-PRINT,DACT
|
|
PRINTI " puffs and strains, but cannot lift you any higher."
|
|
CRLF
|
|
RETURN 2
|
|
?CND12: GETP HERE,P?FNUM >X
|
|
ZERO? X \?CND16
|
|
PRINT CANT
|
|
PRINTI "fly here."
|
|
CRLF
|
|
RETURN 2
|
|
?CND16: ICALL2 CTHE-PRINT,DACT
|
|
EQUAL? HERE,IN-GARDEN \?CND20
|
|
ZERO? PTIMER /?CND20
|
|
PRINTR " cocks his head, hesitating."
|
|
?CND20: PRINTI " spreads his leathery wings and "
|
|
IN? PARASOL,PLAYER \?CND24
|
|
FSET? PARASOL,OPENED \?CND24
|
|
PRINTI "tries to take off. But your open "
|
|
PRINTD PARASOL
|
|
PRINTR " seems to be dragging him down."
|
|
?CND24: SET 'ABOVE,X
|
|
PUTP IN-SKY,P?FNUM,ABOVE
|
|
PRINTI "rises into the sky."
|
|
CRLF
|
|
ZERO? VERBOSITY /?CND28
|
|
CRLF
|
|
?CND28: ICALL2 GOTO,IN-SKY
|
|
ICALL1 CHECK-BREEZE
|
|
RTRUE
|
|
?CCL11: EQUAL? DIR,P?DOWN \?CCL31
|
|
EQUAL? HERE,IN-SKY /?CND32
|
|
ICALL2 CTHE-PRINT,DACT
|
|
PRINTI " is already on "
|
|
ICALL2 THE-PRINT,GROUND
|
|
PRINT PERIOD
|
|
RETURN 2
|
|
?CND32: CALL1 DOWN-TO? >X
|
|
ZERO? X \?CND36
|
|
EQUAL? ABOVE,OTHRIFF \?PRG40
|
|
ICALL2 CTHE-PRINT,DACT
|
|
PRINTI " tries his best to land, but "
|
|
ICALL2 THE-PRINT,GROUND
|
|
PRINTI " below is completely choked with "
|
|
PRINTD XTREES
|
|
PRINT PERIOD
|
|
?PRG40: RETURN 2
|
|
?CND36: ICALL2 CTHE-PRINT,DACT
|
|
PRINTI " glides earthward."
|
|
CRLF
|
|
ZERO? VERBOSITY /?CND42
|
|
CRLF
|
|
?CND42: ICALL2 GOTO,X
|
|
RTRUE
|
|
?CCL31: EQUAL? DIR,FALSE-VALUE,P?IN,P?OUT \?CCL45
|
|
ICALL1 PUZZLED-DACT
|
|
RETURN 2
|
|
?CCL45: EQUAL? HERE,IN-SKY /?CND9
|
|
SET 'P-WALK-DIR,FALSE-VALUE
|
|
PRINTI "It's hard enough for a "
|
|
PRINTD DACT
|
|
PRINTI " to walk, even when there's not an adventurer riding his back."
|
|
CRLF
|
|
RETURN 2
|
|
?CND9: GETP HERE,DIR >TBL
|
|
GET TBL,XDATA >DATA
|
|
GET TBL,XTYPE
|
|
EQUAL? STACK,1161 \?CND51
|
|
PRINTI "The sky is filled with impenetrable "
|
|
EQUAL? DATA,OPLAIN \?CND53
|
|
PRINTI "funnel "
|
|
?CND53: PRINTI "clouds in that "
|
|
PRINTD INTDIR
|
|
PRINT PERIOD
|
|
RETURN 2
|
|
?CND51: ADD WINDIR,4 >D1
|
|
GRTR? D1,I-NW \?CND57
|
|
SUB D1,8 >D1
|
|
?CND57: ADD D1,1 >D2
|
|
GRTR? D2,I-NW \?CND59
|
|
SET 'D2,I-NORTH
|
|
?CND59: SUB D1,1 >D3
|
|
LESS? D3,I-NORTH \?CND61
|
|
SET 'D3,I-NW
|
|
?CND61: SUB DIR,P?NORTH
|
|
SUB 0,STACK >IDIR
|
|
EQUAL? IDIR,D1,D2,D3 \?CND63
|
|
FCLEAR BREEZE,SEEN
|
|
ICALL2 CTHE-PRINT,DACT
|
|
PRINTI " banks smoothly to the "
|
|
GET DIR-NAMES,IDIR
|
|
PRINTB STACK
|
|
PRINT PERIOD
|
|
ICALL2 FLYOVER,DATA
|
|
RTRUE
|
|
?CND63: FSET BREEZE,SEEN
|
|
SUB WINDIR,2 >D1
|
|
LESS? D1,I-NORTH \?CND65
|
|
ADD D1,8 >D1
|
|
?CND65: EQUAL? IDIR,D1 \?CND67
|
|
SUB WINDIR,3 >D2
|
|
LESS? D2,I-NORTH \?CND69
|
|
ADD D2,8 >D2
|
|
?CND69: CALL DO-CROSSWIND,IDIR,D2
|
|
RSTACK
|
|
?CND67: ADD WINDIR,2 >D1
|
|
GRTR? D1,I-NW \?CND71
|
|
SUB D1,8 >D1
|
|
?CND71: EQUAL? IDIR,D1 \?CND73
|
|
ADD WINDIR,3 >D2
|
|
GRTR? D2,I-NW \?CND75
|
|
SUB D2,8 >D2
|
|
?CND75: CALL DO-CROSSWIND,IDIR,D2
|
|
RSTACK
|
|
?CND73: ICALL2 CTHE-PRINT,DACT
|
|
PRINTI " does his best to fly into the wind, but fails."
|
|
CRLF
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT DO-CROSSWIND,IDIR,D2,TBL,DATA
|
|
GETB PDIR-LIST,D2
|
|
GETP IN-SKY,STACK >TBL
|
|
GET TBL,XDATA >DATA
|
|
EQUAL? DATA,0,OPLAIN,OCAVES /?CCL2
|
|
GET TBL,XTYPE
|
|
EQUAL? STACK,1161 /?CCL2
|
|
RANDOM 100
|
|
LESS? 50,STACK /?CND1
|
|
?CCL2: PRINTI "A strong crosswind prevents "
|
|
ICALL2 THE-PRINT,DACT
|
|
PRINTI " from flying that way."
|
|
CRLF
|
|
RETURN 2
|
|
?CND1: ICALL2 CTHE-PRINT,DACT
|
|
PRINTI " banks to the "
|
|
GET DIR-NAMES,IDIR
|
|
PRINTB STACK
|
|
PRINTI ", but a strong crosswind blows him off course."
|
|
CRLF
|
|
ICALL2 FLYOVER,DATA
|
|
RTRUE
|
|
|
|
|
|
.FUNCT FLYOVER,DATA
|
|
SET 'ABOVE,DATA
|
|
PUTP IN-SKY,P?FNUM,ABOVE
|
|
ICALL1 NEXT-OVER
|
|
ICALL2 RELOOK,TRUE-VALUE
|
|
ICALL1 CHECK-BREEZE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CHECK-BREEZE
|
|
EQUAL? ABOVE,OTHRIFF \?PRD4
|
|
EQUAL? WINDIR,I-EAST,I-SE,I-SOUTH /?CCL2
|
|
?PRD4: EQUAL? ABOVE,OXROADS \FALSE
|
|
EQUAL? WINDIR,I-NORTH,I-NE,I-EAST \FALSE
|
|
?CCL2: CALL1 NEXT-WINDIR? >WINDIR
|
|
FSET BREEZE,SEEN
|
|
PRINT TAB
|
|
CALL2 PICK-NEXT,WIND-ALERTS
|
|
PRINT STACK
|
|
PRINT PERIOD
|
|
RFALSE
|
|
|
|
|
|
.FUNCT NEXT-APLANE,DIR,TBL,DATA,NEW,X
|
|
SET 'DIR,P-WALK-DIR
|
|
SET 'P-WALK-DIR,FALSE-VALUE
|
|
LOC PLAYER >X
|
|
EQUAL? DIR,P?UP,P?DOWN /?CTR2
|
|
EQUAL? DIR,P?IN,P?OUT \?CCL3
|
|
?CTR2: PRINTI "Such "
|
|
PRINTD INTDIR
|
|
PRINTI "s have no meaning here."
|
|
CRLF
|
|
RETURN 2
|
|
?CCL3: EQUAL? X,APLANE /?CND1
|
|
FSET? X,VEHICLE \?CND1
|
|
CALL PERFORM,V?EXIT,X
|
|
EQUAL? STACK,M-FATAL \?CND10
|
|
RETURN 2
|
|
?CND10: PRINT TAB
|
|
?CND1: GETP HERE,DIR >TBL
|
|
GET TBL,XTYPE >DATA
|
|
EQUAL? DATA,NO-EXIT \?CCL16
|
|
PRINTI "The local geometry does not extend in that "
|
|
PRINTD INTDIR
|
|
PRINT PERIOD
|
|
RETURN 2
|
|
?CCL16: EQUAL? ABOVE,OPLAIN \?CND14
|
|
ZERO? IMPSAY /?CND20
|
|
ICALL1 PERMISSION
|
|
RETURN 2
|
|
?CND20: ICALL1 EXIT-IMPS
|
|
?CND14: GET TBL,XDATA >NEW
|
|
EQUAL? NEW,OPLAIN \?CND24
|
|
FSET? SHAPE,LIVING \?CCL28
|
|
IN? SHAPE,APLANE /?CND29
|
|
BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
|
|
MOVE SHAPE,APLANE
|
|
SET 'LAST-MONSTER,SHAPE
|
|
SET 'LAST-MONSTER-DIR,FALSE-VALUE
|
|
SET 'P-IT-OBJECT,SHAPE
|
|
PRINTI "The space before you flexes in on itself, twists sideways and reopens into "
|
|
ICALL2 PRINTA,SHAPE
|
|
PRINTI ", stretched across your path like the skin of a drum."
|
|
CRLF
|
|
RETURN 2
|
|
?CND29: ICALL2 CTHE-PRINT,SHAPE
|
|
PRINTI " stretches itself tighter across your path."
|
|
CRLF
|
|
RETURN 2
|
|
?CCL28: ZERO? IMPSAY \?CND24
|
|
ICALL1 KERBLAM
|
|
PRINTI "A bolt of "
|
|
PRINTB W?LIGHTNING
|
|
PRINTI " blocks your path."
|
|
CRLF
|
|
RETURN 2
|
|
?CND24: EQUAL? ABOVE,OACCARDI,OCITY,OMIZNIA \?CND38
|
|
REMOVE CURTAIN
|
|
?CND38: IN? SHAPE,APLANE \?CND40
|
|
REMOVE SHAPE
|
|
SET 'LAST-MONSTER,FALSE-VALUE
|
|
SET 'P-IT-OBJECT,NOT-HERE-OBJECT
|
|
ICALL2 CTHE-PRINT,SHAPE
|
|
PRINTI " disincorporates as you retreat."
|
|
CRLF
|
|
ZERO? VERBOSITY /?CND40
|
|
CRLF
|
|
?CND40: SET 'ABOVE,NEW
|
|
ICALL1 GET-APLANE-THINGS
|
|
ICALL1 NEXT-OVER
|
|
ICALL1 V-LOOK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PERMISSION
|
|
PRINTR """We didn't say you could leave yet,"" notes an Implementor dryly."
|
|
|
|
|
|
.FUNCT EXIT-IMPS
|
|
REMOVE IMPTAB
|
|
REMOVE IMPS
|
|
ICALL2 DEQUEUE,I-IMPS
|
|
RFALSE
|
|
|
|
|
|
.FUNCT GET-APLANE-THINGS
|
|
EQUAL? ABOVE,OCITY,OMIZNIA,OACCARDI \?CCL3
|
|
IN? CURTAIN,APLANE /TRUE
|
|
MOVE CURTAIN,APLANE
|
|
FCLEAR CURTAIN,NODESC
|
|
RTRUE
|
|
?CCL3: EQUAL? ABOVE,OPLAIN \FALSE
|
|
IN? IMPS,APLANE /FALSE
|
|
MOVE IMPTAB,APLANE
|
|
MOVE IMPS,APLANE
|
|
ICALL2 QUEUE,I-IMPS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT ANY-TOUCHED?,TBL,EXCLUDED,LEN,RM,CNT
|
|
GETB TBL,0 >LEN
|
|
SET 'CNT,1
|
|
?PRG1: GETB TBL,LEN >RM
|
|
FSET? RM,TOUCHED \?CND3
|
|
ASSIGNED? 'EXCLUDED \?CCL4
|
|
FSET? RM,EXCLUDED /?CND3
|
|
?CCL4: INC 'CNT
|
|
PUT AUX-TABLE,CNT,RM
|
|
?CND3: DLESS? 'LEN,1 \?PRG1
|
|
EQUAL? CNT,1 /FALSE
|
|
EQUAL? CNT,2 \?CND11
|
|
GET AUX-TABLE,2
|
|
RSTACK
|
|
?CND11: PUT AUX-TABLE,0,CNT
|
|
PUT AUX-TABLE,1,0
|
|
CALL2 PICK-ONE,AUX-TABLE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DOWN-TO?,RM,X
|
|
EQUAL? ABOVE,ORUINS \?CCL3
|
|
CALL2 ANY-TOUCHED?,RUIN-ROOMS >RM
|
|
ZERO? RM /?PRD7
|
|
RETURN RM
|
|
?PRD7: CALL1 SETUP-RUINS?
|
|
ZERO? STACK /?CND4
|
|
CALL2 RANDOM-ROOM?,RUIN-ROOMS >RM
|
|
?CND4: RETURN RM
|
|
?CCL3: EQUAL? ABOVE,OBRIDGE \?CCL9
|
|
SET 'BRIDGE-DIR,0
|
|
SET 'ZTOP,1
|
|
SET 'ZBOT,2
|
|
RETURN ON-BRIDGE
|
|
?CCL9: EQUAL? ABOVE,OFOREST \?CCL11
|
|
CALL2 ANY-TOUCHED?,FOREST-ROOMS >RM
|
|
ZERO? RM /?PRD15
|
|
RETURN RM
|
|
?PRD15: CALL1 SETUP-FOREST?
|
|
ZERO? STACK /?CND12
|
|
CALL2 RANDOM-ROOM?,FOREST-ROOMS >RM
|
|
?CND12: RETURN RM
|
|
?CCL11: EQUAL? ABOVE,OACCARDI \?CCL17
|
|
SET 'RM,IN-ACCARDI
|
|
FSET? AT-GATE,TOUCHED /?PRD21
|
|
RETURN RM
|
|
?PRD21: RANDOM 100
|
|
LESS? 50,STACK /?CND18
|
|
SET 'RM,AT-GATE
|
|
?CND18: RETURN RM
|
|
?CCL17: EQUAL? ABOVE,OCITY \?CCL23
|
|
SET 'RM,IN-GURTH
|
|
FSET? AT-MAGICK,TOUCHED /?CCL25
|
|
RETURN RM
|
|
?CCL25: SET 'RM,AT-MAGICK
|
|
RETURN RM
|
|
?CCL23: EQUAL? ABOVE,OSHORE \?CCL27
|
|
CALL2 ANY-TOUCHED?,SHORE-ROOMS >RM
|
|
ZERO? RM /?CCL29
|
|
RETURN RM
|
|
?CCL29: SET 'RM,AT-LEDGE
|
|
RETURN RM
|
|
?CCL27: EQUAL? ABOVE,OXROADS \?CCL31
|
|
RETURN XROADS
|
|
?CCL31: EQUAL? ABOVE,OPLAIN /FALSE
|
|
EQUAL? ABOVE,OGRUBBO \?CCL35
|
|
RETURN HILLTOP
|
|
?CCL35: EQUAL? ABOVE,OCAVES \?CCL37
|
|
RETURN IN-GARDEN
|
|
?CCL37: EQUAL? ABOVE,OMOOR \?CCL39
|
|
CALL2 ANY-TOUCHED?,MOOR-ROOMS >RM
|
|
ZERO? RM /?PRD43
|
|
RETURN RM
|
|
?PRD43: CALL1 SETUP-MOOR?
|
|
ZERO? STACK /?CND40
|
|
CALL2 RANDOM-ROOM?,MOOR-ROOMS >RM
|
|
?CND40: RETURN RM
|
|
?CCL39: EQUAL? ABOVE,OJUNGLE \?CCL45
|
|
CALL2 ANY-TOUCHED?,JUNGLE-ROOMS >RM
|
|
ZERO? RM /?PRD49
|
|
RETURN RM
|
|
?PRD49: CALL1 SETUP-JUNGLE?
|
|
ZERO? STACK /?CND46
|
|
CALL2 RANDOM-ROOM?,JUNGLE-ROOMS >RM
|
|
?CND46: RETURN RM
|
|
?CCL45: EQUAL? ABOVE,OMIZNIA \?CCL51
|
|
CALL2 ANY-TOUCHED?,MIZNIA-ROOMS >RM
|
|
ZERO? RM /?CCL53
|
|
RETURN RM
|
|
?CCL53: SET 'RM,IN-PORT
|
|
RETURN RM
|
|
?CCL51: EQUAL? ABOVE,OTHRIFF \FALSE
|
|
SET 'RM,IN-THRIFF
|
|
FSET? IN-THRIFF,MUNGED /?CCL57
|
|
RETURN RM
|
|
?CCL57: SET 'RM,IN-PASTURE
|
|
RETURN RM
|
|
|
|
|
|
.FUNCT RANDOM-ROOM?,TBL,OHERE,RM,X
|
|
GETB TBL,0
|
|
RANDOM STACK
|
|
GETB TBL,STACK >RM
|
|
FSET? RM,TOUCHED /?CND1
|
|
SET 'OHERE,HERE
|
|
SET 'HERE,RM
|
|
GETP RM,P?ACTION
|
|
CALL STACK,M-ENTERING >X
|
|
SET 'HERE,OHERE
|
|
FSET RM,TOUCHED
|
|
?CND1: RETURN RM
|
|
|
|
|
|
.FUNCT PRE-TAKE,L,LL,WHO,X,X2
|
|
LOC PRSO >L
|
|
ZERO? L /?CND1
|
|
LOC L >LL
|
|
?CND1: ZERO? LIT? \?CCL5
|
|
EQUAL? WINNER,L,LL /?CCL5
|
|
ICALL1 TOO-DARK
|
|
RTRUE
|
|
?CCL5: EQUAL? L,GLOBAL-OBJECTS \?CCL9
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL9: EQUAL? L,WINNER \?CCL11
|
|
ICALL2 THIS-IS-IT,PRSO
|
|
PRINT ALREADY
|
|
FSET? PRSO,WORN \?CCL14
|
|
PRINTB W?WEAR
|
|
JUMP ?CND12
|
|
?CCL14: PRINTB W?HOLD
|
|
?CND12: PRINTI "ing "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL11: EQUAL? L,FALSE-VALUE,BROG /?CCL16
|
|
FSET? L,CONTAINER \?CCL16
|
|
FSET? L,TRANSPARENT \?CCL16
|
|
FSET? L,OPENED /?CCL16
|
|
ICALL2 CANT-REACH-INTO,L
|
|
RTRUE
|
|
?CCL16: EQUAL? LL,FALSE-VALUE,BROG /?CCL22
|
|
FSET? LL,CONTAINER \?CCL22
|
|
FSET? LL,TRANSPARENT \?CCL22
|
|
FSET? LL,OPENED /?CCL22
|
|
ICALL2 CANT-REACH-INTO,LL
|
|
RTRUE
|
|
?CCL22: ZERO? PRSI /?CCL28
|
|
EQUAL? PRSO,PRSI \?CCL31
|
|
GET P-NAMW,0 >X
|
|
GET P-ADJW,0 >X2
|
|
GET P-NAMW,1
|
|
EQUAL? X,STACK /?CCL33
|
|
GET P-ADJW,1
|
|
EQUAL? X2,STACK \FALSE
|
|
?CCL33: ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL31: EQUAL? PRSI,ME \?CCL37
|
|
EQUAL? WINNER,PLAYER \?CCL40
|
|
ICALL1 NOBODY-TO-ASK
|
|
RTRUE
|
|
?CCL40: EQUAL? L,WINNER /FALSE
|
|
ICALL2 CTHE-PRINT,WINNER
|
|
PRINTI " doesn't have "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL37: EQUAL? L,PRSI /FALSE
|
|
EQUAL? L,ON-MCASE,ON-WCASE,ON-BCASE \?CND44
|
|
EQUAL? PRSI,MCASE,WCASE,BCASE /FALSE
|
|
?CND44: ICALL1 CTHE-PRINT
|
|
ICALL1 ISNT-ARENT
|
|
ICALL2 ON-IN,PRSI
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL28: LOC WINNER
|
|
EQUAL? PRSO,STACK \FALSE
|
|
EQUAL? PRSO,BUSH,POOL /FALSE
|
|
PRINTI "Difficult. You're"
|
|
ICALL1 ON-IN
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CANT-REACH-INTO,L
|
|
PRINT CANT
|
|
PRINTI "reach into "
|
|
ICALL2 THE-PRINT,L
|
|
PRINTR ". It's closed."
|
|
|
|
|
|
.FUNCT V-TAKE,L
|
|
CALL1 ITAKE >L
|
|
ZERO? L /TRUE
|
|
CALL2 SPARK?,FALSE-VALUE
|
|
ZERO? STACK /?CND1
|
|
PRINT TAB
|
|
?CND1: ZERO? P-MULT? \?CTR6
|
|
EQUAL? L,UNDERUG,UNDERPEW,LAMPHOUSE /?CTR6
|
|
ZERO? STATIC /?CCL7
|
|
FSET? PRSO,FERRIC \?CCL7
|
|
?CTR6: ICALL1 TAKEN
|
|
RTRUE
|
|
?CCL7: FSET? L,CONTAINER /?CTR13
|
|
FSET? L,SURFACE /?CTR13
|
|
FSET? L,PERSON /?CTR13
|
|
FSET? L,LIVING \?CCL14
|
|
?CTR13: PRINTI "You take "
|
|
ICALL1 THE-PRINT
|
|
ICALL2 OUT-OF-LOC,L
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL14: RANDOM 100
|
|
LESS? 50,STACK /?CND5
|
|
ICALL1 TAKEN
|
|
RTRUE
|
|
?CND5: PRINT CYOU
|
|
EQUAL? P-PRSA-WORD,W?GRAB,W?SEIZE,W?SNATCH \?CCL22
|
|
PRINTB P-PRSA-WORD
|
|
JUMP ?CND20
|
|
?CCL22: RANDOM 100
|
|
LESS? 50,STACK /?CCL24
|
|
PRINTI "pick up"
|
|
JUMP ?CND20
|
|
?CCL24: PRINTB W?TAKE
|
|
?CND20: PRINTC SP
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TAKEN
|
|
PRINTR "Taken."
|
|
|
|
|
|
.FUNCT FIRST-TAKE?
|
|
EQUAL? PRSA,V?TAKE \FALSE
|
|
FSET? PRSO,TOUCHED /FALSE
|
|
CALL1 ITAKE
|
|
ZERO? STACK /TRUE
|
|
PUTP PRSO,P?DESCFCN,0
|
|
ICALL1 TAKEN
|
|
RTRUE
|
|
|
|
|
|
.FUNCT ITAKE,VB,CNT,OBJ,L,X,MAX
|
|
ASSIGNED? 'VB /?CND1
|
|
SET 'VB,TRUE-VALUE
|
|
?CND1: ZERO? PRSO /?CCL4
|
|
LOC PRSO >L
|
|
ZERO? L \?CND3
|
|
?CCL4: ICALL1 CANT-SEE-ANY
|
|
RFALSE
|
|
?CND3: ICALL2 THIS-IS-IT,PRSO
|
|
FSET? PRSO,TAKEABLE /?CCL9
|
|
ZERO? VB /FALSE
|
|
ICALL1 IMPOSSIBLE
|
|
RFALSE
|
|
?CCL9: FSET? L,CONTAINER \?CND7
|
|
FSET? L,OPENABLE \?CND7
|
|
FSET? L,OPENED /?CND7
|
|
LOC WINNER
|
|
EQUAL? L,STACK /?CND7
|
|
ZERO? VB /FALSE
|
|
ICALL YOUD-HAVE-TO,STR?518,L
|
|
RFALSE
|
|
?CND7: EQUAL? WINNER,UNICORN \?CCL21
|
|
FIRST? WINNER >X \?CCL21
|
|
LOC WINNER
|
|
MOVE X,STACK
|
|
PRINTI "[putting down "
|
|
ICALL2 THE-PRINT,X
|
|
PRINTI " first"
|
|
PRINT BRACKET
|
|
JUMP ?CND19
|
|
?CCL21: EQUAL? WINNER,PLAYER \?CND19
|
|
IN? ONION,PLAYER \?CND25
|
|
ZERO? VB /FALSE
|
|
ICALL YOUD-HAVE-TO,STR?519,ONION
|
|
RFALSE
|
|
?CND25: CALL2 WEIGHT,PRSO >X
|
|
GET STATS,STRENGTH
|
|
DIV STACK,10
|
|
ADD LOAD-ALLOWED,STACK >MAX
|
|
IN? L,WINNER /?CND29
|
|
CALL2 WEIGHT,WINNER
|
|
ADD X,STACK
|
|
GRTR? STACK,MAX \?CND29
|
|
ZERO? VB /FALSE
|
|
FIRST? WINNER >X \?CCL37
|
|
PRINTI "Your load is "
|
|
JUMP ?CND35
|
|
?CCL37: ICALL1 CTHE-PRINT
|
|
ICALL1 IS-ARE
|
|
?CND35: PRINTI "too heavy."
|
|
CRLF
|
|
RFALSE
|
|
?CND29: FIRST? WINNER >OBJ \?CND38
|
|
?PRG40: FSET? OBJ,NODESC /?CND42
|
|
FSET? OBJ,WORN /?CND42
|
|
FSET? OBJ,TAKEABLE \?CND42
|
|
INC 'CNT
|
|
?CND42: NEXT? OBJ >OBJ /?PRG40
|
|
?CND38: GET STATS,DEXTERITY
|
|
DIV STACK,10
|
|
ADD FUMBLE-NUMBER,STACK >MAX
|
|
GRTR? CNT,MAX \?CND19
|
|
ZERO? VB /FALSE
|
|
PRINTI "Your hands are full."
|
|
CRLF
|
|
RFALSE
|
|
?CND19: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
|
|
FSET PRSO,TOUCHED
|
|
FCLEAR PRSO,NODESC
|
|
FCLEAR PRSO,NOALL
|
|
MOVE PRSO,WINNER
|
|
RETURN L
|
|
|
|
|
|
.FUNCT WEIGHT,THING,WT,OBJ
|
|
FIRST? THING >OBJ \?CND1
|
|
?PRG3: EQUAL? THING,WINNER \?CCL7
|
|
FSET? OBJ,WORN \?CCL7
|
|
INC 'WT
|
|
JUMP ?CND5
|
|
?CCL7: CALL2 WEIGHT,OBJ
|
|
ADD WT,STACK >WT
|
|
?CND5: NEXT? OBJ >OBJ /?PRG3
|
|
?CND1: GETP THING,P?SIZE
|
|
ADD WT,STACK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WIELD,OBJ
|
|
FSET? PRSO,TAKEABLE /?CCL3
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL3: IN? PRSO,WINNER /?CCL5
|
|
ICALL2 MUST-HOLD,PRSO
|
|
PRINTR " before you can wield it."
|
|
?CCL5: FSET? PRSO,WORN \?CCL7
|
|
ICALL YOUD-HAVE-TO,STR?520,PRSO
|
|
RTRUE
|
|
?CCL7: FSET? PRSO,WIELDED \?CND1
|
|
PRINT ALREADY
|
|
PRINTI "wielding "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CND1: FIRST? WINNER >OBJ \?CND9
|
|
?PRG11: FSET? OBJ,WIELDED \?CND13
|
|
FCLEAR OBJ,WIELDED
|
|
PRINTI "[setting aside "
|
|
ICALL2 THE-PRINT,OBJ
|
|
PRINTI " first"
|
|
PRINT BRACKET
|
|
JUMP ?CND9
|
|
?CND13: NEXT? OBJ >OBJ /?PRG11
|
|
?CND9: BOR NEW-DBOX,SHOWING-INV >NEW-DBOX
|
|
FSET PRSO,WIELDED
|
|
PRINTI "You wield "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-UNWIELD
|
|
FSET? PRSO,TAKEABLE /?CCL3
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,WIELDED /?CND1
|
|
PRINTI "You're not wielding "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CND1: BOR NEW-DBOX,SHOWING-INV >NEW-DBOX
|
|
FCLEAR PRSO,WIELDED
|
|
PRINTI "You set aside "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SPARK?,INDENT,OBJ
|
|
ASSIGNED? 'INDENT /?CND1
|
|
SET 'INDENT,TRUE-VALUE
|
|
?CND1: ASSIGNED? 'OBJ /?CND3
|
|
SET 'OBJ,PRSO
|
|
?CND3: CALL2 NO-SPARK?,OBJ
|
|
ZERO? STACK \FALSE
|
|
ZERO? INDENT /?CND5
|
|
PRINT TAB
|
|
?CND5: ICALL2 ITALICIZE,STR?521
|
|
PRINTI "! You feel a "
|
|
GRTR? STATIC,2 \?CND9
|
|
PRINTI "painful "
|
|
?CND9: PRINTI "spark as you touch "
|
|
ICALL2 THE-PRINT,OBJ
|
|
PRINT PERIOD
|
|
SUB 0,STATIC
|
|
ICALL2 UPDATE-STAT,STACK
|
|
ICALL2 SPARK-OBJ,OBJ
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SPARK-TO?,OBJ1,OBJ2
|
|
ASSIGNED? 'OBJ1 /?CND1
|
|
SET 'OBJ1,PRSO
|
|
?CND1: ASSIGNED? 'OBJ2 /?CND3
|
|
SET 'OBJ2,PRSI
|
|
?CND3: CALL2 NO-SPARK?,OBJ2
|
|
ZERO? STACK \FALSE
|
|
EQUAL? OBJ1,HANDS,FEET,ME /?CND5
|
|
FSET? OBJ1,FERRIC \FALSE
|
|
?CND5: ICALL1 SAY-SNAP
|
|
ICALL2 SAY-YOUR,OBJ1
|
|
PRINT AND
|
|
ICALL2 THE-PRINT,OBJ2
|
|
PRINTC 33
|
|
CRLF
|
|
FSET? OBJ1,FERRIC /?CND10
|
|
SUB 0,STATIC
|
|
ICALL2 UPDATE-STAT,STACK
|
|
?CND10: ICALL2 SPARK-OBJ,OBJ2
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SAY-SNAP
|
|
ICALL2 ITALICIZE,STR?521
|
|
PRINTI "! A "
|
|
GRTR? STATIC,3 \?CND1
|
|
PRINTI "painful "
|
|
?CND1: PRINTI "spark leaps between "
|
|
RFALSE
|
|
|
|
|
|
.FUNCT NO-SPARK?,OBJ,L
|
|
ZERO? STATIC /TRUE
|
|
LOC OBJ >L
|
|
EQUAL? L,FALSE-VALUE,LOCAL-GLOBALS,GLOBAL-OBJECTS /TRUE
|
|
LOC L
|
|
EQUAL? PLAYER,L,STACK /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT SPARK-OBJ,OBJ
|
|
FSET? OBJ,LIVING \?CND1
|
|
EQUAL? OBJ,DUST \?CCL4
|
|
ICALL2 VANISH,DUST
|
|
ICALL2 DEQUEUE,I-DUST
|
|
MOVE RING,HERE
|
|
SET 'P-IT-OBJECT,RING
|
|
SET 'P-THEM-OBJECT,NOT-HERE-OBJECT
|
|
PRINTI " A bright blue "
|
|
ICALL2 ITALICIZE,STR?522
|
|
PRINTI " of electricity lights the room! "
|
|
ICALL2 BLINK,DUST
|
|
PRINTI " draw"
|
|
EQUAL? BUNNIES,1 \?CCL7
|
|
PRINTI "s itself"
|
|
JUMP ?CND5
|
|
?CCL7: PRINTI " themselves"
|
|
?CND5: PRINTI " together into a hard ring of particles, which falls with a clatter to your feet."
|
|
CRLF
|
|
GETP DUST,P?VALUE
|
|
ICALL UPDATE-STAT,STACK,EXPERIENCE
|
|
JUMP ?CND1
|
|
?CCL4: FSET? OBJ,MONSTER \?CCL9
|
|
FSET OBJ,STRICKEN
|
|
GETP OBJ,P?ENDURANCE
|
|
SUB STACK,STATIC
|
|
PUTP OBJ,P?ENDURANCE,STACK
|
|
JUMP ?CND1
|
|
?CCL9: PRINT TAB
|
|
ICALL2 CTHE-PRINT,OBJ
|
|
PRINTI " looks at you reproachfully."
|
|
CRLF
|
|
EQUAL? OBJ,UNICORN \?CND1
|
|
ICALL UPDATE-STAT,-5,LUCK,TRUE-VALUE
|
|
?CND1: SET 'STATIC,0
|
|
RFALSE
|
|
|
|
|
|
.FUNCT BLINK,OBJ
|
|
PRINTI "In the blink of an eye, "
|
|
ICALL2 THE-PRINT,OBJ
|
|
RFALSE
|
|
|
|
|
|
.FUNCT MSPARK?,OBJ,DAMAGE,X
|
|
ZERO? STATIC \?CND1
|
|
RETURN DAMAGE
|
|
?CND1: GETP OBJ,P?ENDURANCE
|
|
ADD STACK,DAMAGE >X
|
|
PRINT TAB
|
|
ICALL1 SAY-SNAP
|
|
PRINTI "you and "
|
|
ICALL2 THE-PRINT,OBJ
|
|
LESS? X,1 \?CND3
|
|
SET 'X,1
|
|
PRINTI ", leaving it nearly stunned"
|
|
?CND3: PRINT PERIOD
|
|
PUTP OBJ,P?ENDURANCE,X
|
|
SUB DAMAGE,STATIC >DAMAGE
|
|
SET 'STATIC,0
|
|
RETURN DAMAGE
|
|
|
|
|
|
.FUNCT V-DROP
|
|
CALL1 IDROP
|
|
ZERO? STACK /TRUE
|
|
ICALL1 SAY-DROPPED
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SAY-DROPPED
|
|
ZERO? P-MULT? \?CCL2
|
|
RANDOM 100
|
|
LESS? 50,STACK /?CND1
|
|
?CCL2: PRINTR "Dropped."
|
|
?CND1: PRINT CYOU
|
|
RANDOM 100
|
|
LESS? 50,STACK /?CCL7
|
|
PRINTI "drop "
|
|
JUMP ?CND5
|
|
?CCL7: PRINTI "put down "
|
|
?CND5: ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT IDROP,L
|
|
LOC PRSO >L
|
|
EQUAL? L,FALSE-VALUE,LOCAL-GLOBALS,GLOBAL-OBJECTS /?CTR2
|
|
EQUAL? PRSO,WINNER,ME \?CCL3
|
|
?CTR2: ICALL1 IMPOSSIBLE
|
|
RFALSE
|
|
?CCL3: EQUAL? L,WINNER /?CCL7
|
|
EQUAL? WINNER,PLAYER \?CCL10
|
|
PRINTI "You'd "
|
|
JUMP ?CND8
|
|
?CCL10: ICALL2 CTHE-PRINT,WINNER
|
|
PRINTI " would "
|
|
?CND8: PRINTI "have to take "
|
|
ICALL1 THE-PRINT
|
|
ICALL2 OUT-OF-LOC,L
|
|
PRINT SFIRST
|
|
RFALSE
|
|
?CCL7: FSET? PRSO,WORN \?CCL12
|
|
IN? PRSO,WINNER \?CCL12
|
|
CALL1 TAKE-OFF-PRSO-FIRST?
|
|
ZERO? STACK /?CND1
|
|
RTRUE
|
|
?CCL12: EQUAL? PRSO,MINX \?CCL18
|
|
FCLEAR PRSO,SEEN
|
|
FCLEAR PRSO,TOUCHED
|
|
FCLEAR PRSO,TRYTAKE
|
|
JUMP ?CND1
|
|
?CCL18: EQUAL? PRSO,TRUFFLE \?CND1
|
|
FCLEAR MINX,SEEN
|
|
?CND1: FCLEAR PRSO,WIELDED
|
|
BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
|
|
LOC WINNER >L
|
|
EQUAL? HERE,IN-SKY,ON-BRIDGE,APLANE /?CCL21
|
|
EQUAL? L,SADDLE \?CND20
|
|
?CCL21: ICALL1 CTHE-PRINT
|
|
PRINTC SP
|
|
ICALL1 FALLS
|
|
RFALSE
|
|
?CND20: MOVE PRSO,L
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRSO-SLIDES-OFF-PRSI
|
|
ICALL1 CTHE-PRINT
|
|
PRINTI " slide"
|
|
FSET? PRSO,PLURAL /?CND1
|
|
PRINTC 115
|
|
?CND1: PRINTI " off "
|
|
ICALL1 THEI-PRINT
|
|
PRINT AND
|
|
ICALL1 FALLS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT FALLS,OBJ,V,S,L,X
|
|
ASSIGNED? 'OBJ /?CND1
|
|
SET 'OBJ,PRSO
|
|
?CND1: ASSIGNED? 'V /?CND3
|
|
SET 'V,TRUE-VALUE
|
|
?CND3: SET 'S,STR?523
|
|
FSET? OBJ,PLURAL \?CND5
|
|
SET 'S,STR?524
|
|
?CND5: LOC WINNER >L
|
|
BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
|
|
FCLEAR OBJ,WIELDED
|
|
FCLEAR OBJ,WORN
|
|
EQUAL? HERE,ON-BRIDGE \?CCL9
|
|
ICALL2 VANISH,OBJ
|
|
ZERO? V /?CND10
|
|
PRINTI "slip"
|
|
PRINT S
|
|
PRINTB W?BETWEEN
|
|
PRINTI " the ropes and "
|
|
?CND10: PRINTI "fall"
|
|
PRINT S
|
|
PRINTR "out of sight."
|
|
?CCL9: EQUAL? HERE,IN-SKY,APLANE \?CCL13
|
|
CALL1 DOWN-TO? >X
|
|
ZERO? X \?CCL16
|
|
REMOVE OBJ
|
|
JUMP ?CND14
|
|
?CCL16: MOVE OBJ,X
|
|
?CND14: EQUAL? HERE,IN-SKY \?CND17
|
|
PRINTI "fall"
|
|
PRINT S
|
|
PRINTR "out of sight."
|
|
?CND17: EQUAL? OBJ,PHASE \?CND19
|
|
ICALL1 MUNG-PHASE
|
|
?CND19: PRINTI "disappear"
|
|
PRINT S
|
|
PRINTR "in a spectral flash."
|
|
?CCL13: EQUAL? L,SADDLE \?CCL22
|
|
LOC L >X
|
|
FSET? X,VEHICLE \?CCL25
|
|
LOC X
|
|
MOVE OBJ,STACK
|
|
JUMP ?CND23
|
|
?CCL25: MOVE OBJ,X
|
|
?CND23: ZERO? V /?CND7
|
|
PRINTI "slide"
|
|
PRINT S
|
|
PRINTI "off "
|
|
ICALL2 THE-PRINT,L
|
|
PRINT AND
|
|
JUMP ?CND7
|
|
?CCL22: MOVE OBJ,L
|
|
?CND7: PRINTI "land"
|
|
PRINT S
|
|
PRINTI "on the "
|
|
ICALL1 GROUND-WORD
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-CASH
|
|
ZERO? LOOT \?CND1
|
|
PRINT STR?525
|
|
RTRUE
|
|
?CND1: ICALL1 SAY-CASH
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-INVENTORY
|
|
ZERO? DMODE /?CTR2
|
|
EQUAL? PRIOR,SHOWING-ROOM,SHOWING-STATS \?CCL3
|
|
?CTR2: ICALL1 PRINT-INVENTORY
|
|
JUMP ?CND1
|
|
?CCL3: PRINTI "You take stock of your possessions."
|
|
CRLF
|
|
SET 'DBOX-TOP,0
|
|
ICALL1 UPDATE-INVENTORY
|
|
GET 0,8
|
|
BTST STACK,1 \?CND1
|
|
DIROUT D-SCREEN-OFF
|
|
CRLF
|
|
ICALL1 PRINT-INVENTORY
|
|
DIROUT D-SCREEN-ON
|
|
?CND1: FSET? MONEY,TOUCHED /TRUE
|
|
FSET MONEY,TOUCHED
|
|
PRINT TAB
|
|
ICALL2 NYMPH-APPEARS,STR?526
|
|
PRINTI "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 STR?515
|
|
RTRUE
|
|
|
|
|
|
.FUNCT UPDATE-INVENTORY
|
|
SET 'IN-DBOX,SHOWING-INV
|
|
ICALL1 SETUP-DBOX
|
|
ICALL1 PRINT-INVENTORY
|
|
ICALL1 JUSTIFY-DBOX
|
|
ICALL1 DISPLAY-DBOX
|
|
RFALSE
|
|
|
|
|
|
.FUNCT PRINT-INVENTORY,HOLDS,WORNS,ANY,B,OBJ,NXT
|
|
FIRST? WINNER >OBJ /?CND1
|
|
ICALL1 NUTHIN
|
|
RTRUE
|
|
?CND1: SET 'INV-PRINTING?,TRUE-VALUE
|
|
?PRG3: NEXT? OBJ >NXT /?BOGUS5
|
|
?BOGUS5: FSET? OBJ,NODESC /?CTR7
|
|
FSET? OBJ,TAKEABLE /?CCL8
|
|
?CTR7: MOVE OBJ,DUMMY-OBJECT
|
|
JUMP ?CND6
|
|
?CCL8: FSET? OBJ,CLOTHING \?CCL12
|
|
FSET? OBJ,WORN \?CCL12
|
|
INC 'WORNS
|
|
MOVE OBJ,WEARING
|
|
JUMP ?CND6
|
|
?CCL12: EQUAL? OBJ,GOBLET \?CND6
|
|
IN? BFLY,OBJ \?CND6
|
|
FSET? BFLY,LIVING \?CND6
|
|
INC 'B
|
|
FSET BFLY,NODESC
|
|
?CND6: CALL2 SEE-INSIDE?,OBJ
|
|
ZERO? STACK /?CND19
|
|
CALL2 SEE-ANYTHING-IN?,OBJ
|
|
ZERO? STACK /?CND19
|
|
INC 'HOLDS
|
|
MOVE OBJ,HOLDING
|
|
?CND19: SET 'OBJ,NXT
|
|
ZERO? OBJ \?PRG3
|
|
FIRST? WINNER >OBJ \?CND25
|
|
?PRG27: NEXT? OBJ >NXT /?BOGUS29
|
|
?BOGUS29: FSET? OBJ,WIELDED \?CND30
|
|
REMOVE OBJ
|
|
MOVE OBJ,WINNER
|
|
?CND30: SET 'OBJ,NXT
|
|
ZERO? OBJ \?PRG27
|
|
INC 'ANY
|
|
PRINTI "You're carrying "
|
|
ICALL2 CONTENTS,WINNER
|
|
PRINT PERIOD
|
|
?CND25: ZERO? HOLDS /?CND34
|
|
ZERO? ANY /?CCL38
|
|
PRINT TAB
|
|
PRINTI "You're also "
|
|
JUMP ?CND36
|
|
?CCL38: PRINTI "You're "
|
|
?CND36: INC 'ANY
|
|
PRINTI "carrying "
|
|
ICALL2 CONTENTS,HOLDING
|
|
FIRST? HOLDING >OBJ \?CND39
|
|
?PRG41: PRINTI ". "
|
|
EQUAL? OBJ,GURDY \?CCL45
|
|
PRINTI "Within"
|
|
JUMP ?CND43
|
|
?CCL45: FSET? OBJ,CONTAINER \?CCL47
|
|
PRINTI "Inside"
|
|
JUMP ?CND43
|
|
?CCL47: PRINTI "Upon"
|
|
?CND43: PRINTC SP
|
|
ICALL2 THE-PRINT,OBJ
|
|
PRINTI " you see "
|
|
ICALL2 CONTENTS,OBJ
|
|
NEXT? OBJ >OBJ /?PRG41
|
|
?CND39: PRINT PERIOD
|
|
ICALL MOVE-ALL,HOLDING,WINNER
|
|
?CND34: ZERO? WORNS /?CND50
|
|
ZERO? ANY /?CND52
|
|
PRINT TAB
|
|
?CND52: INC 'ANY
|
|
PRINTI "You're wearing "
|
|
ICALL2 CONTENTS,WEARING
|
|
FIRST? WEARING >OBJ \?CND54
|
|
?PRG56: CALL2 SEE-INSIDE?,OBJ
|
|
ZERO? STACK /?CND58
|
|
CALL2 SEE-ANYTHING-IN?,OBJ
|
|
ZERO? STACK /?CND58
|
|
PRINTI ". "
|
|
FSET? OBJ,CONTAINER \?CCL64
|
|
PRINTI "Inside"
|
|
JUMP ?CND62
|
|
?CCL64: PRINTI "Upon"
|
|
?CND62: PRINTC SP
|
|
ICALL2 THE-PRINT,OBJ
|
|
PRINTI " you see "
|
|
ICALL2 CONTENTS,OBJ
|
|
?CND58: NEXT? OBJ >OBJ /?PRG56
|
|
?CND54: PRINT PERIOD
|
|
ICALL MOVE-ALL,WEARING,WINNER
|
|
?CND50: ICALL MOVE-ALL,DUMMY-OBJECT,WINNER
|
|
ZERO? ANY \?CCL69
|
|
ICALL1 NUTHIN
|
|
JUMP ?CND67
|
|
?CCL69: ZERO? LOOT /?CND67
|
|
PRINT TAB
|
|
ICALL1 SAY-CASH
|
|
?CND67: ZERO? B /?CND71
|
|
FCLEAR BFLY,NODESC
|
|
?CND71: SET 'INV-PRINTING?,FALSE-VALUE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT NUTHIN
|
|
PRINT DONT
|
|
PRINTI "have anything"
|
|
ZERO? LOOT /?CND1
|
|
PRINTI " except "
|
|
ICALL1 SAY-LOOT
|
|
?CND1: PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-EXAMINE
|
|
ZERO? LIT? \FALSE
|
|
ICALL1 TOO-DARK
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT V-EXAMINE
|
|
FSET? PRSO,OPENABLE \?CCL3
|
|
PRINTI "It looks as if "
|
|
ICALL1 THE-PRINT
|
|
ICALL1 IS-ARE
|
|
FSET? PRSO,OPENED \?CCL6
|
|
PRINTB W?OPEN
|
|
JUMP ?CND4
|
|
?CCL6: PRINTB W?CLOSED
|
|
?CND4: PRINT PERIOD
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,PLACE \?CCL8
|
|
ICALL1 CANT-SEE-MUCH
|
|
RTRUE
|
|
?CCL8: FSET? PRSO,READABLE \?CCL10
|
|
PRINTR "There appears to be something written on it."
|
|
?CCL10: FSET? PRSO,SURFACE \?CCL12
|
|
PRINT YOU-SEE
|
|
ICALL1 CONTENTS
|
|
PRINT SON
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL12: FSET? PRSO,CONTAINER \?CCL14
|
|
FSET? PRSO,OPENED /?CCL16
|
|
FSET? PRSO,TRANSPARENT \?CND15
|
|
?CCL16: ICALL1 V-LOOK-INSIDE
|
|
RTRUE
|
|
?CND15: ICALL1 ITS-CLOSED
|
|
RTRUE
|
|
?CCL14: CALL1 LOOK-INTDIR?
|
|
ZERO? STACK \TRUE
|
|
FSET? PRSO,PERSON \?CND1
|
|
CALL1 SEE-ANYTHING-IN?
|
|
ZERO? STACK /?CND1
|
|
ICALL1 CTHE-PRINT
|
|
PRINTI " has "
|
|
ICALL1 CONTENTS
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CND1: ICALL1 NOTHING-INTERESTING
|
|
PRINTI " about "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT NOTHING-INTERESTING
|
|
PRINT YOU-SEE
|
|
PRINTI "nothing "
|
|
CALL2 PICK-NEXT,YAWNS
|
|
PRINT STACK
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-UNDO,X
|
|
CALL1 CANT-SAVE?
|
|
ZERO? STACK \TRUE
|
|
SET 'OLD-HERE,FALSE-VALUE
|
|
IRESTORE >X
|
|
EQUAL? X,-1 \?CND3
|
|
ICALL1 NOT-AVAILABLE
|
|
RTRUE
|
|
?CND3: ICALL2 FAILED,STR?508
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CANT-SAVE?,OBJ,NXT,X
|
|
ZERO? CHOKE /?CCL3
|
|
ICALL2 MUMBLAGE,SKELETON
|
|
RTRUE
|
|
?CCL3: FIRST? HERE >OBJ \FALSE
|
|
?PRG5: FSET? OBJ,MONSTER \?CCL9
|
|
FSET? OBJ,LIVING \?CCL9
|
|
FSET? OBJ,SLEEPING /?CCL9
|
|
ICALL2 MUMBLAGE,OBJ
|
|
RTRUE
|
|
?CCL9: NEXT? OBJ >OBJ /?PRG5
|
|
RFALSE
|
|
|
|
|
|
.FUNCT MUMBLAGE,OBJ
|
|
ICALL1 PCLEAR
|
|
PRINTI "You begin to mumble the Spell of "
|
|
EQUAL? PRSA,V?SAVE \?CCL3
|
|
PRINTI "Sav"
|
|
JUMP ?CND1
|
|
?CCL3: PRINTI "Undo"
|
|
?CND1: PRINTI "ing, but the "
|
|
ZERO? LIT? /?CCL6
|
|
PRINTI "sight of "
|
|
ICALL2 THE-PRINT,OBJ
|
|
PRINTI " makes"
|
|
JUMP ?CND4
|
|
?CCL6: PRINTI "noises in the darkness make"
|
|
?CND4: PRINTR " your mind wander."
|
|
|
|
|
|
.FUNCT V-USE
|
|
FSET? PRSO,PERSON \?CND1
|
|
ICALL1 CTHE-PRINT
|
|
PRINTR " might resent that."
|
|
?CND1: ICALL1 HOW?
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-BITE
|
|
CALL2 SPARK?,FALSE-VALUE
|
|
ZERO? STACK \TRUE
|
|
ICALL2 HACK-HACK,STR?527
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-BLOW-INTO
|
|
FSET? PRSO,PERSON \?CND1
|
|
SET 'P-PRSA-WORD,W?USE
|
|
ICALL PERFORM,V?USE,PRSO
|
|
RTRUE
|
|
?CND1: ICALL2 HACK-HACK,STR?528
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LIGHT-ON
|
|
PRINT CANT
|
|
PRINTI "light "
|
|
ICALL1 THE-PRINT
|
|
PRINTR " on anything."
|
|
|
|
|
|
.FUNCT V-LIGHT-WITH
|
|
ICALL1 V-BURN-WITH
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-BURN-WITH
|
|
ZERO? PRSI /?CND1
|
|
PRINTI "With "
|
|
ICALL2 PRINTA,PRSI
|
|
PRINTI "? "
|
|
?CND1: CALL2 PICK-NEXT,YUKS
|
|
PRINT STACK
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT ALREADY-HAVE,OBJ
|
|
ASSIGNED? 'OBJ /?CND1
|
|
SET 'OBJ,PRSO
|
|
?CND1: EQUAL? WINNER,PLAYER \?CCL5
|
|
PRINTI "You already have "
|
|
JUMP ?CND3
|
|
?CCL5: ICALL2 CTHE-PRINT,WINNER
|
|
PRINTI " already has "
|
|
?CND3: ICALL2 PRINTA,OBJ
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-CLEAN
|
|
CALL2 SPARK?,FALSE-VALUE
|
|
ZERO? STACK \TRUE
|
|
ICALL2 HACK-HACK,STR?529
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-CLEAN-OFF
|
|
EQUAL? PRSO,PRSI \?CND1
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CND1: PRINT CANT
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 THE-PRINT
|
|
PRINT SON
|
|
ICALL1 THEI-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-CLIMB-DOWN
|
|
EQUAL? P-PRSA-WORD,W?JUMP,W?LEAP,W?HURDLE /?CTR2
|
|
EQUAL? P-PRSA-WORD,W?VAULT,W?BOUND \?CCL3
|
|
?CTR2: ICALL PERFORM,V?DIVE,PRSO
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,ROOMS \?CND1
|
|
ICALL2 DO-WALK,P?DOWN
|
|
RTRUE
|
|
?CND1: ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-CLIMB-ON
|
|
EQUAL? P-PRSA-WORD,W?TAKE \?CCL3
|
|
ICALL PERFORM,V?HIT,PRSO
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,VEHICLE \?CND1
|
|
ICALL PERFORM,V?ENTER,PRSO
|
|
RTRUE
|
|
?CND1: PRINT CANT
|
|
PRINTB P-PRSA-WORD
|
|
PRINTR " onto that."
|
|
|
|
|
|
.FUNCT V-CLIMB-OVER
|
|
EQUAL? PRSO,ROOMS \?CND1
|
|
ICALL1 V-WALK-AROUND
|
|
RTRUE
|
|
?CND1: PRINT CANT
|
|
PRINTR "climb over that."
|
|
|
|
|
|
.FUNCT V-CLIMB-UP
|
|
EQUAL? PRSO,ROOMS \?CND1
|
|
ICALL2 DO-WALK,P?UP
|
|
RTRUE
|
|
?CND1: ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-OPEN-WITH
|
|
FSET? PRSO,OPENABLE /?CCL3
|
|
ICALL1 CANT-OPEN-PRSO
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,OPENED \?CND1
|
|
ICALL2 ITS-ALREADY,STR?518
|
|
RTRUE
|
|
?CND1: PRINT CANT
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 THE-PRINT
|
|
PRINT WITH
|
|
ICALL1 THEI-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CANT-OPEN-PRSO
|
|
PRINT IMPOSSIBLY
|
|
PRINTI "open "
|
|
ICALL1 PRINTA
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-OPEN,X
|
|
FSET? PRSO,OPENABLE /?CCL3
|
|
ICALL1 CANT-OPEN-PRSO
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,OPENED \?CCL5
|
|
ICALL2 ITS-ALREADY,STR?518
|
|
RTRUE
|
|
?CCL5: FSET? PRSO,LOCKED \?CND1
|
|
ICALL1 CTHE-PRINT
|
|
PRINTR " seems to be locked."
|
|
?CND1: CALL1 SPARK?
|
|
ZERO? STACK /?CND7
|
|
PRINT TAB
|
|
?CND7: PRINTI "You open "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
ICALL1 IOPEN
|
|
EQUAL? PRSO,CELLAR-DOOR \TRUE
|
|
FSET? ONION,TOUCHED /TRUE
|
|
PRINT TAB
|
|
ICALL1 COOK-MENTIONS-ONION
|
|
RTRUE
|
|
|
|
|
|
.FUNCT IOPEN,OBJ
|
|
ASSIGNED? 'OBJ /?CND1
|
|
SET 'OBJ,PRSO
|
|
?CND1: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
|
|
FSET OBJ,OPENED
|
|
FSET? OBJ,DOORLIKE \?CCL5
|
|
IN? OBJ,LOCAL-GLOBALS \?CCL5
|
|
ICALL1 MARK-EXITS
|
|
ZERO? DMODE \?CND8
|
|
ICALL1 LOWER-SLINE
|
|
RFALSE
|
|
?CND8: ICALL1 DRAW-MAP
|
|
ICALL1 SHOW-MAP
|
|
RFALSE
|
|
?CCL5: FSET? OBJ,CONTAINER \FALSE
|
|
FSET? OBJ,TRANSPARENT /FALSE
|
|
CALL2 SEE-ANYTHING-IN?,OBJ
|
|
ZERO? STACK /FALSE
|
|
PRINT TAB
|
|
PRINT STR?530
|
|
ICALL2 CONTENTS,OBJ
|
|
PRINT PERIOD
|
|
RFALSE
|
|
|
|
|
|
.FUNCT ICLOSE,OBJ
|
|
ASSIGNED? 'OBJ /?CND1
|
|
SET 'OBJ,PRSO
|
|
?CND1: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
|
|
FCLEAR OBJ,OPENED
|
|
FSET? OBJ,DOORLIKE \FALSE
|
|
IN? OBJ,LOCAL-GLOBALS \FALSE
|
|
ZERO? DMODE \?CND7
|
|
ICALL1 LOWER-SLINE
|
|
RFALSE
|
|
?CND7: ICALL1 DRAW-MAP
|
|
ICALL1 SHOW-MAP
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-CLOSE
|
|
FSET? PRSO,OPENABLE \?CND1
|
|
FSET? PRSO,OPENED \?CND3
|
|
CALL1 SPARK?
|
|
ZERO? STACK /?CND5
|
|
PRINT TAB
|
|
?CND5: PRINTI "You close "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
ICALL1 ICLOSE
|
|
RTRUE
|
|
?CND3: ICALL2 ITS-ALREADY,STR?531
|
|
RTRUE
|
|
?CND1: PRINT CANT
|
|
PRINTI "close "
|
|
ICALL1 PRINTA
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-COUNT
|
|
FSET? PRSO,PLURAL \?CND1
|
|
PRINTR "Your mind wanders, and you lose count."
|
|
?CND1: ICALL1 ONLY-ONE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT ONLY-ONE
|
|
PRINTR "You only see one."
|
|
|
|
|
|
.FUNCT V-COVER
|
|
ICALL PERFORM,V?PUT-ON,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-HOLD-OVER
|
|
ICALL1 WASTE-OF-TIME
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-CROSS
|
|
PRINT CANT
|
|
PRINTR "cross that."
|
|
|
|
|
|
.FUNCT V-CUT
|
|
EQUAL? PRSI,DAGGER,SWORD,AXE \?CND1
|
|
ICALL2 NYMPH-APPEARS,STR?532
|
|
PRINTI "Careful with that "
|
|
PRINTD PRSI
|
|
PRINTI "!"" she scolds, wagging a tiny finger. ""You might hurt "
|
|
PRINTD ME
|
|
PRINT STR?515
|
|
RTRUE
|
|
?CND1: ICALL1 V-RIP
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-RIP
|
|
PRINT IMPOSSIBLY
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 THE-PRINT
|
|
EQUAL? PRSI,HANDS /?CND1
|
|
PRINT WITH
|
|
ICALL1 THEI-PRINT
|
|
?CND1: PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-DEFLATE
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-DETONATE
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-DIG-UNDER
|
|
CALL1 PRE-DIG
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-DIG
|
|
EQUAL? PRSO,PRSI \?CCL3
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL3: ZERO? LIT? \?CCL5
|
|
ICALL1 TOO-DARK
|
|
RTRUE
|
|
?CCL5: ZERO? PRSI \FALSE
|
|
SET 'PRSI,HANDS
|
|
IN? SPADE,PLAYER \?CND7
|
|
SET 'PRSI,SPADE
|
|
?CND7: PRINTI "[with "
|
|
ICALL1 THEI-PRINT
|
|
PRINT BRACKET
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-DIG-UNDER
|
|
ICALL1 WASTE-OF-TIME
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-DIG
|
|
ICALL1 WASTE-OF-TIME
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SDIG
|
|
ICALL PERFORM,V?DIG,PRSI,PRSO
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT V-DRINK,FROM?
|
|
PRINT CANT
|
|
PRINTI "drink "
|
|
ZERO? FROM? /?CND1
|
|
PRINTI "from "
|
|
?CND1: ICALL2 DPRINT,NOT-HERE-OBJECT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-DRINK-FROM
|
|
ICALL2 V-DRINK,TRUE-VALUE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-EAT
|
|
EQUAL? WINNER,PLAYER \?CND1
|
|
ICALL1 NOT-LIKELY
|
|
PRINTR " would agree with you."
|
|
?CND1: PRINTI """It"
|
|
CALL2 PICK-NEXT,LIKELIES
|
|
PRINT STACK
|
|
PRINTI " that "
|
|
ICALL1 THE-PRINT
|
|
PRINTR " would agree with me."""
|
|
|
|
|
|
.FUNCT V-ENTER,X
|
|
FSET? PRSO,VEHICLE \?CCL3
|
|
IN? PLAYER,PRSO \?CCL6
|
|
PRINTI "You're already"
|
|
ICALL1 ON-IN
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL6: LOC PRSO
|
|
EQUAL? STACK,HERE,LOCAL-GLOBALS /?CCL8
|
|
ICALL1 CANT-FROM-HERE
|
|
RTRUE
|
|
?CCL8: CALL1 DROP-ONION-FIRST?
|
|
ZERO? STACK \TRUE
|
|
SET 'OLD-HERE,FALSE-VALUE
|
|
BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
|
|
MOVE PLAYER,PRSO
|
|
PRINTI "You get"
|
|
ICALL1 ON-IN
|
|
ICALL1 RELOOK
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,ROOMS \?CCL11
|
|
CALL FIND-IN?,HERE,VEHICLE >X
|
|
ZERO? X /?CND12
|
|
SET 'P-PRSA-WORD,W?ENTER
|
|
ICALL PERFORM,V?ENTER,X
|
|
RTRUE
|
|
?CND12: ICALL2 DO-WALK,P?IN
|
|
RTRUE
|
|
?CCL11: FSET? PRSO,CLOTHING \?CND1
|
|
PRINT STR?517
|
|
PRINTI "WEAR "
|
|
ICALL1 THE-PRINT
|
|
PRINTC 46
|
|
PRINT BRACKET
|
|
SET 'P-PRSA-WORD,W?WEAR
|
|
ICALL PERFORM,V?WEAR,PRSO
|
|
RTRUE
|
|
?CND1: ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-ESCAPE
|
|
FSET? PRSO,PLACE \?CND1
|
|
ICALL1 NOT-IN
|
|
RTRUE
|
|
?CND1: ICALL1 V-WALK-AROUND
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-DUMB-EXAMINE
|
|
ZERO? LIT? \?CCL3
|
|
ICALL1 TOO-DARK
|
|
RTRUE
|
|
?CCL3: CALL1 LOOK-INTDIR?
|
|
ZERO? STACK \TRUE
|
|
FSET? EYES,SEEN /?CND5
|
|
FSET EYES,SEEN
|
|
PRINT STR?517
|
|
PRINTI "LOOK AT "
|
|
ICALL1 THE-PRINT
|
|
PRINTI ", not LOOK INSIDE or LOOK UNDER or LOOK BEHIND "
|
|
ICALL1 THE-PRINT
|
|
PRINTC 46
|
|
PRINT BRACKET
|
|
?CND5: ICALL PERFORM,V?EXAMINE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-DUMB-EXAMINE
|
|
ICALL1 V-EXAMINE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT LOOK-INTDIR?,X
|
|
EQUAL? PRSO,RIGHT,LEFT /?CND1
|
|
EQUAL? PRSO,INTDIR \FALSE
|
|
?CND1: GETP HERE,P?SEE-ALL >X
|
|
ZERO? X /?CND4
|
|
ICALL2 THIS-IS-IT,X
|
|
PRINT YOU-SEE
|
|
FSET? X,NOARTICLE /?CND6
|
|
FSET? X,PLURAL /?CND6
|
|
PRINT LTHE
|
|
?CND6: ICALL2 DPRINT,X
|
|
PRINTR " that way."
|
|
?CND4: ICALL1 NOTHING-INTERESTING
|
|
PRINT SIN
|
|
ICALL2 DPRINT,RIGHT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-EXAMINE-IN,L
|
|
ZERO? LIT? \?CCL3
|
|
ICALL1 TOO-DARK
|
|
RETURN 2
|
|
?CCL3: EQUAL? PRSO,PRSI \?CCL7
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL7: IN? PRSI,GLOBAL-OBJECTS /FALSE
|
|
IN? PRSI,LOCAL-GLOBALS \?CND1
|
|
FSET? PRSI,PLACE /FALSE
|
|
?CND1: LOC PRSO >L
|
|
EQUAL? L,PRSI /FALSE
|
|
IN? L,PRSI /FALSE
|
|
ICALL1 CTHE-PRINT
|
|
ICALL1 ISNT-ARENT
|
|
ICALL2 ON-IN,PRSI
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-EXAMINE-IN
|
|
ICALL1 V-EXAMINE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-EXIT,L
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
LOC WINNER >L
|
|
FSET? L,VEHICLE \?CND4
|
|
ICALL PERFORM,V?EXIT,L
|
|
RTRUE
|
|
?CND4: ICALL2 DO-WALK,P?OUT
|
|
RTRUE
|
|
?CCL3: ZERO? PRSO /?CND1
|
|
FSET? PRSO,VEHICLE \?CND1
|
|
IN? WINNER,PRSO /?CND9
|
|
PRINTI "You're not"
|
|
ICALL1 ON-IN
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CND9: SET 'OLD-HERE,FALSE-VALUE
|
|
BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
|
|
LOC PRSO
|
|
MOVE WINNER,STACK
|
|
PRINTI "You get"
|
|
ICALL2 OUT-OF-LOC,PRSO
|
|
ICALL1 RELOOK
|
|
RTRUE
|
|
?CND1: LOC PRSO >L
|
|
FSET? PRSO,PLACE \?CCL13
|
|
ICALL1 NOT-IN
|
|
RTRUE
|
|
?CCL13: FSET? L,CONTAINER \?CND11
|
|
CALL2 VISIBLE?,PRSO
|
|
ZERO? STACK /?CND11
|
|
PRINTI "[from "
|
|
ICALL2 DPRINT,L
|
|
PRINT BRACKET
|
|
ICALL PERFORM,V?TAKE,PRSO
|
|
RTRUE
|
|
?CND11: ICALL2 DO-WALK,P?OUT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-FILL-FROM
|
|
ICALL1 V-FILL
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-FILL
|
|
EQUAL? PRSO,VIAL,GOBLET \?CND1
|
|
CALL2 VISIBLE?,POOL
|
|
ZERO? STACK /?CND1
|
|
PRINTI "[from "
|
|
ICALL2 THE-PRINT,POOL
|
|
PRINT BRACKET
|
|
SET 'P-PRSA-WORD,W?GET
|
|
ICALL PERFORM,V?FILL-FROM,PRSO,POOL
|
|
RTRUE
|
|
?CND1: PRINT CANT
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SUBMERGE
|
|
EQUAL? PRSO,CIRCLET \?CCL3
|
|
CALL2 VISIBLE?,JAR
|
|
ZERO? STACK /?CCL3
|
|
PRINTI "[into "
|
|
ICALL2 THE-PRINT,JAR
|
|
PRINT BRACKET
|
|
ICALL1 DIP-CIRCLET
|
|
RTRUE
|
|
?CCL3: IN? POOL,HERE \?CND1
|
|
PRINTI "[in "
|
|
ICALL2 THE-PRINT,POOL
|
|
PRINT BRACKET
|
|
EQUAL? PRSO,VIAL,GOBLET \?CND7
|
|
ICALL PERFORM,V?FILL-FROM,PRSO,POOL
|
|
RTRUE
|
|
?CND7: ICALL PERFORM,V?PUT-UNDER,PRSO,POOL
|
|
RTRUE
|
|
?CND1: PRINT NOTHING
|
|
PRINTI "here in which to "
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-FIND,L
|
|
LOC PRSO >L
|
|
ZERO? L /?CND1
|
|
EQUAL? PRSO,ME,HANDS,WINNER \?CCL4
|
|
PRINT STR?533
|
|
RTRUE
|
|
?CCL4: IN? PRSO,WINNER \?CCL6
|
|
PRINTR "You're holding it."
|
|
?CCL6: IN? PRSO,HERE /?CTR7
|
|
IN? PRSO,LOCAL-GLOBALS \?PRD11
|
|
CALL GLOBAL-IN?,HERE,PRSO
|
|
ZERO? STACK \?CTR7
|
|
?PRD11: LOC WINNER
|
|
IN? PRSO,STACK \?CCL8
|
|
?CTR7: ICALL1 ITS-RIGHT-HERE
|
|
RTRUE
|
|
?CCL8: FSET? L,PERSON /?PRD17
|
|
FSET? L,LIVING \?CCL15
|
|
?PRD17: CALL2 VISIBLE?,L
|
|
ZERO? STACK /?CCL15
|
|
ICALL2 CTHE-PRINT,L
|
|
PRINTR " has it."
|
|
?CCL15: CALL2 SEE-INSIDE?,L
|
|
ZERO? STACK /?CND1
|
|
CALL2 VISIBLE?,L
|
|
ZERO? STACK /?CND1
|
|
ICALL1 SAY-ITS
|
|
ICALL2 ON-IN,L
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CND1: ICALL1 DO-IT-YOURSELF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DO-IT-YOURSELF
|
|
PRINTI "You'll have to do that "
|
|
ICALL2 DPRINT,ME
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT ITS-RIGHT-HERE
|
|
ICALL1 SAY-ITS
|
|
PRINTR " right here in front of you."
|
|
|
|
|
|
.FUNCT SAY-ITS
|
|
FSET? PRSO,PLURAL \?CCL3
|
|
PRINTI "They're"
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,FEMALE \?CCL5
|
|
PRINTI "She's"
|
|
RTRUE
|
|
?CCL5: FSET? PRSO,PERSON \?CND1
|
|
PRINTI "He's"
|
|
RTRUE
|
|
?CND1: PRINTI "It's"
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LAND
|
|
EQUAL? HERE,IN-SKY \?CND1
|
|
ICALL2 DO-WALK,P?DOWN
|
|
RTRUE
|
|
?CND1: ICALL1 NOT-FLYING
|
|
RTRUE
|
|
|
|
|
|
.FUNCT NOT-FLYING
|
|
PRINTI "You're not flying"
|
|
PRINT AT-MOMENT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LAND-ON
|
|
EQUAL? HERE,IN-SKY /?CCL3
|
|
ICALL1 NOT-FLYING
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,GROUND,FLOOR \?CND1
|
|
ICALL2 DO-WALK,P?DOWN
|
|
RTRUE
|
|
?CND1: ICALL1 V-WALK-AROUND
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-BANK
|
|
EQUAL? PRSO,INTDIR \?CND1
|
|
ZERO? P-DIRECTION /?CND1
|
|
EQUAL? HERE,IN-SKY \?CND1
|
|
ICALL1 V-WALK
|
|
RTRUE
|
|
?CND1: ICALL1 NOT-FLYING
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-FLY
|
|
EQUAL? PRSO,ROOMS \?CND1
|
|
IN? PLAYER,SADDLE \?CND1
|
|
IN? SADDLE,DACT \?CND1
|
|
EQUAL? HERE,IN-SKY \?CND6
|
|
PRINTR "Try looking down."
|
|
?CND6: ICALL2 DO-WALK,P?UP
|
|
RTRUE
|
|
?CND1: PRINTI "Psst! Guess what? "
|
|
PRINT CANT
|
|
PRINTR "fly unassisted."
|
|
|
|
|
|
.FUNCT V-FLY-UP
|
|
EQUAL? PRSO,ROOMS \?CND1
|
|
IN? PLAYER,SADDLE \?CND1
|
|
IN? SADDLE,DACT \?CND1
|
|
ICALL2 DO-WALK,P?UP
|
|
RTRUE
|
|
?CND1: ICALL1 V-FLY
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-FLY-DOWN
|
|
EQUAL? PRSO,ROOMS \?CND1
|
|
IN? PLAYER,SADDLE \?CND1
|
|
IN? SADDLE,DACT \?CND1
|
|
ICALL2 DO-WALK,P?DOWN
|
|
RTRUE
|
|
?CND1: ICALL1 V-FLY
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-FOLD
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-FOLLOW
|
|
ZERO? PRSO \?CND1
|
|
ICALL1 CANT-SEE-ANY
|
|
RETURN 2
|
|
?CND1: PRINTI "But "
|
|
EQUAL? PRSO,ME,WINNER \?CCL7
|
|
EQUAL? WINNER,PLAYER \?CCL10
|
|
PRINTI "you're"
|
|
JUMP ?CND8
|
|
?CCL10: ICALL2 THE-PRINT,WINNER
|
|
PRINTI " is"
|
|
?CND8: PRINT STR?534
|
|
RTRUE
|
|
?CCL7: ICALL1 THE-PRINT
|
|
FSET? PRSO,PLURAL \?CCL13
|
|
PRINTI " are"
|
|
JUMP ?CND11
|
|
?CCL13: PRINTI " is"
|
|
?CND11: CALL2 VISIBLE?,PRSO
|
|
ZERO? STACK \?CCL15
|
|
IN? PRSO,GLOBAL-OBJECTS \?CND5
|
|
?CCL15: PRINT STR?534
|
|
RTRUE
|
|
?CND5: PRINTI "n't visible"
|
|
PRINT AT-MOMENT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-FEED
|
|
CALL2 PRE-GIVE,TRUE-VALUE
|
|
ZERO? STACK /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-FEED
|
|
EQUAL? PRSI,ME,WINNER \?CCL3
|
|
EQUAL? WINNER,PLAYER \?CCL6
|
|
PRINTI "You"
|
|
JUMP ?CND1
|
|
?CCL6: ICALL2 CTHE-PRINT,WINNER
|
|
JUMP ?CND1
|
|
?CCL3: ICALL1 CTHEI-PRINT
|
|
?CND1: PRINTR " can't eat that."
|
|
|
|
|
|
.FUNCT V-SFEED
|
|
ICALL PERFORM,V?FEED,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-GIVE,FEED?
|
|
ZERO? PRSO /?CTR2
|
|
ZERO? PRSI \?CCL3
|
|
?CTR2: ICALL1 REFERRING
|
|
RTRUE
|
|
?CCL3: ZERO? LIT? \?CCL7
|
|
ICALL1 TOO-DARK
|
|
RTRUE
|
|
?CCL7: EQUAL? PRSO,PRSI \?CCL9
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL9: IN? PRSI,GLOBAL-OBJECTS \?CCL11
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL11: FSET? PRSI,LIVING /?CCL13
|
|
PRINT CANT
|
|
ZERO? FEED? /?CCL16
|
|
PRINTI "feed "
|
|
JUMP ?CND14
|
|
?CCL16: PRINTI "give "
|
|
?CND14: PRINTI "anything to "
|
|
ICALL2 PRINTA,PRSI
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL13: EQUAL? PRSO,MONEY,INTNUM /FALSE
|
|
EQUAL? PRSI,ME,WINNER \?CCL20
|
|
IN? PRSO,WINNER \?CND1
|
|
ICALL1 ALREADY-HAVE
|
|
RTRUE
|
|
?CCL20: CALL1 DONT-HAVE?
|
|
ZERO? STACK \TRUE
|
|
?CND1: FSET? PRSO,WORN \FALSE
|
|
IN? PRSO,WINNER \FALSE
|
|
CALL1 TAKE-OFF-PRSO-FIRST?
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SGIVE
|
|
ICALL PERFORM,V?GIVE,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-GIVE
|
|
EQUAL? PRSI,ME \?CCL3
|
|
ICALL1 NOBODY-TO-ASK
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,PERSON \?CND1
|
|
ICALL1 CTHEI-PRINT
|
|
PRINTR " shows little interest in your offer."
|
|
?CND1: ICALL2 NOT-LIKELY,PRSI
|
|
PRINTR " would accept your offer."
|
|
|
|
|
|
.FUNCT PRE-SHOW
|
|
ZERO? PRSO /?CTR2
|
|
ZERO? PRSI \?CCL3
|
|
?CTR2: ICALL1 REFERRING
|
|
RTRUE
|
|
?CCL3: ZERO? LIT? \?CCL7
|
|
ICALL1 TOO-DARK
|
|
RTRUE
|
|
?CCL7: EQUAL? PRSO,PRSI \?CCL9
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL9: IN? PRSI,GLOBAL-OBJECTS \?CCL11
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL11: FSET? PRSI,LIVING /?CCL13
|
|
PRINT CANT
|
|
PRINTI "show things to "
|
|
ICALL2 PRINTA,PRSI
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL13: EQUAL? PRSO,MONEY,INTNUM /FALSE
|
|
EQUAL? PRSI,ME,WINNER \?CCL17
|
|
IN? PRSO,WINNER \FALSE
|
|
ICALL1 ALREADY-HAVE
|
|
RTRUE
|
|
?CCL17: CALL1 DONT-HAVE?
|
|
ZERO? STACK /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SSHOW
|
|
ICALL PERFORM,V?SHOW,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SHOW
|
|
ICALL1 CTHEI-PRINT
|
|
PRINTI " glance"
|
|
FSET? PRSI,PLURAL /?CND1
|
|
PRINTC 115
|
|
?CND1: PRINTI " at "
|
|
ICALL1 THE-PRINT
|
|
PRINTI ", but make"
|
|
FSET? PRSI,PLURAL /?CND3
|
|
PRINTC 115
|
|
?CND3: PRINTR " no comment."
|
|
|
|
|
|
.FUNCT V-REFUSE
|
|
FSET? PRSO,TAKEABLE /?CND1
|
|
ICALL1 WASTE-OF-TIME
|
|
RTRUE
|
|
?CND1: PRINTI "How could you turn down such a tempting "
|
|
ICALL2 DPRINT,PRSO
|
|
PRINTR "?"
|
|
|
|
|
|
.FUNCT V-HIDE
|
|
LOC ARCH
|
|
EQUAL? HERE,STACK \?CCL3
|
|
PRINTI "[under "
|
|
ICALL2 THE-PRINT,ARCH
|
|
PRINT BRACKET
|
|
ICALL1 ENTER-ARCH
|
|
RTRUE
|
|
?CCL3: EQUAL? HERE,IN-GARDEN \?CND1
|
|
PRINTI "[behind "
|
|
ICALL2 THE-PRINT,BUSH
|
|
PRINT BRACKET
|
|
ICALL1 ENTER-BUSH
|
|
RTRUE
|
|
?CND1: PRINTR "There aren't any good hiding places here."
|
|
|
|
|
|
.FUNCT V-KICK
|
|
CALL2 SPARK?,FALSE-VALUE
|
|
ZERO? STACK \TRUE
|
|
FSET? PRSO,MONSTER \?CND1
|
|
ICALL PERFORM,V?HIT,PRSO,FEET
|
|
RTRUE
|
|
?CND1: ICALL2 HACK-HACK,STR?535
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-BOUNCE
|
|
EQUAL? PRSO,ROOMS \?CND1
|
|
ICALL1 WASTE-OF-TIME
|
|
RTRUE
|
|
?CND1: ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-KNOCK
|
|
CALL2 SPARK?,FALSE-VALUE
|
|
ZERO? STACK \TRUE
|
|
FSET? PRSO,DOORLIKE \?CCL5
|
|
FSET? PRSO,OPENED \?CND6
|
|
ICALL2 ITS-ALREADY,STR?518
|
|
RTRUE
|
|
?CND6: PRINTR "There's no answer."
|
|
?CCL5: FSET? PRSO,PERSON \?CND1
|
|
ICALL PERFORM,V?USE,PRSO
|
|
RTRUE
|
|
?CND1: ICALL1 WASTE-OF-TIME
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-KISS
|
|
CALL2 SPARK?,FALSE-VALUE
|
|
ZERO? STACK \TRUE
|
|
ICALL1 WASTE-OF-TIME
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LAMP-OFF
|
|
EQUAL? PRSO,ROOMS \?CND1
|
|
EQUAL? WINNER,PLAYER \?CCL5
|
|
PRINTI "You pause"
|
|
JUMP ?CND3
|
|
?CCL5: ICALL2 CTHE-PRINT,WINNER
|
|
PRINTI " pauses"
|
|
?CND3: PRINTR " for a moment."
|
|
?CND1: ICALL2 V-LAMP-ON,TRUE-VALUE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LAMP-ON,OFF?
|
|
PRINT IMPOSSIBLY
|
|
PRINTI "turn that "
|
|
ZERO? OFF? /?CCL3
|
|
PRINTI "off"
|
|
JUMP ?CND1
|
|
?CCL3: PRINTI "on"
|
|
?CND1: EQUAL? PRSI,FALSE-VALUE,HANDS /?CND4
|
|
PRINTI ", "
|
|
ICALL2 DPRINT,PRSI
|
|
PRINTI " or no "
|
|
ICALL2 DPRINT,PRSI
|
|
?CND4: PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LEAP
|
|
EQUAL? PRSO,ROOMS /?CCL3
|
|
PRINTR "That'd be a cute trick."
|
|
?CCL3: EQUAL? HERE,OVER-JUNGLE \?CCL5
|
|
ICALL1 JUNGLE-JUMP
|
|
RTRUE
|
|
?CCL5: EQUAL? HERE,ON-BRIDGE \?CND1
|
|
ICALL1 JUMP-OFF-BRIDGE
|
|
RTRUE
|
|
?CND1: ICALL1 WASTE-OF-TIME
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LEAVE
|
|
FSET? PRSO,PLACE \?CCL3
|
|
ICALL1 NOT-IN
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,ROOMS /?CTR4
|
|
FSET? PRSO,TAKEABLE /?CCL5
|
|
?CTR4: ICALL2 DO-WALK,P?OUT
|
|
RTRUE
|
|
?CCL5: CALL1 DONT-HAVE?
|
|
ZERO? STACK \TRUE
|
|
ICALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SLEEP
|
|
ICALL1 V-LIE-DOWN
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LIE-DOWN
|
|
PRINTR "This is no time for that."
|
|
|
|
|
|
.FUNCT V-LISTEN,OBJ
|
|
EQUAL? PRSO,ROOMS,SOUND \?CCL3
|
|
GETP HERE,P?HEAR >OBJ
|
|
ZERO? OBJ \?CND4
|
|
PRINT DONT
|
|
PRINTI "hear anything "
|
|
CALL2 PICK-NEXT,YAWNS
|
|
PRINT STACK
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CND4: ICALL PERFORM,V?LISTEN,OBJ
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,LIVING \?CND1
|
|
PRINTI "No doubt "
|
|
ICALL1 THE-PRINT
|
|
PRINTI " appreciate"
|
|
FSET? PRSO,PLURAL /?CND7
|
|
PRINTC 115
|
|
?CND7: PRINTR " your attention."
|
|
?CND1: PRINTI "At the moment, "
|
|
ICALL1 THE-PRINT
|
|
ICALL1 IS-ARE
|
|
PRINTR "silent."
|
|
|
|
|
|
.FUNCT V-LOCK
|
|
FSET? PRSO,OPENABLE /?CCL2
|
|
FSET? PRSO,CONTAINER \?CND1
|
|
?CCL2: FSET? PRSO,OPENED \?CCL7
|
|
ICALL2 YOUD-HAVE-TO,STR?536
|
|
RTRUE
|
|
?CCL7: FSET? PRSO,LOCKED \?CND5
|
|
ICALL1 CTHE-PRINT
|
|
ICALL1 IS-ARE
|
|
PRINTR "already locked."
|
|
?CND5: ICALL THING-WONT-LOCK,PRSI,PRSO
|
|
RTRUE
|
|
?CND1: ICALL1 CANT-LOCK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-UNLOCK
|
|
FSET? PRSO,OPENABLE /?CCL2
|
|
FSET? PRSO,CONTAINER \?CND1
|
|
?CCL2: FSET? PRSO,OPENED /?CCL6
|
|
FSET? PRSO,LOCKED /?CND5
|
|
?CCL6: ICALL1 CTHE-PRINT
|
|
ICALL1 ISNT-ARENT
|
|
PRINTR " locked."
|
|
?CND5: ICALL THING-WONT-LOCK,PRSI,PRSO,TRUE-VALUE
|
|
RTRUE
|
|
?CND1: ICALL2 CANT-LOCK,TRUE-VALUE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CANT-LOCK,UN?
|
|
PRINT CANT
|
|
ZERO? UN? /?CND1
|
|
PRINTI "un"
|
|
?CND1: PRINTI "lock "
|
|
ICALL1 PRINTA
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT THING-WONT-LOCK,THING,CLOSED-THING,UN?
|
|
ICALL2 NOT-LIKELY,THING
|
|
PRINTI " could "
|
|
ZERO? UN? /?CND1
|
|
PRINTI "un"
|
|
?CND1: PRINTI "lock "
|
|
ICALL2 THE-PRINT,CLOSED-THING
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-UNTIE
|
|
PRINT CANT
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 PRINTA
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK-ON
|
|
ZERO? LIT? \?CCL3
|
|
ICALL1 TOO-DARK
|
|
RETURN 2
|
|
?CCL3: FSET? PRSO,SURFACE \?CCL7
|
|
PRINT YOU-SEE
|
|
ICALL1 CONTENTS
|
|
PRINT SON
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL7: FSET? PRSO,READABLE \?CND1
|
|
ICALL1 CTHE-PRINT
|
|
ICALL1 IS-ARE
|
|
PRINTR "undecipherable."
|
|
?CND1: ICALL1 NOTHING-INTERESTING
|
|
PRINT SON
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK-BEHIND
|
|
ZERO? LIT? \?CCL3
|
|
ICALL1 TOO-DARK
|
|
RETURN 2
|
|
?CCL3: FSET? PRSO,DOORLIKE \?CND1
|
|
FSET? PRSO,OPENED \?CND7
|
|
ICALL1 CANT-SEE-MUCH
|
|
RTRUE
|
|
?CND7: ICALL1 ITS-CLOSED
|
|
RTRUE
|
|
?CND1: PRINT NOTHING
|
|
PRINTI "behind "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK-DOWN,X
|
|
ZERO? LIT? \?CCL3
|
|
ICALL1 TOO-DARK
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,PLACE \?CCL5
|
|
ICALL1 CANT-SEE-MUCH
|
|
RTRUE
|
|
?CCL5: EQUAL? PRSO,ROOMS \?CND1
|
|
GETP HERE,P?BELOW >X
|
|
ZERO? X /?CCL9
|
|
ICALL PERFORM,V?EXAMINE,X
|
|
RTRUE
|
|
?CCL9: FSET? HERE,INDOORS \?CND7
|
|
ICALL PERFORM,V?EXAMINE,FLOOR
|
|
RTRUE
|
|
?CND7: ICALL PERFORM,V?EXAMINE,GROUND
|
|
RTRUE
|
|
?CND1: ICALL PERFORM,V?LOOK-INSIDE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK-UP,X
|
|
ZERO? LIT? \?CCL3
|
|
ICALL1 TOO-DARK
|
|
RETURN 2
|
|
?CCL3: EQUAL? PRSO,ROOMS \?CND1
|
|
GETP HERE,P?OVERHEAD >X
|
|
ZERO? X /?CND7
|
|
ICALL PERFORM,V?EXAMINE,X
|
|
RTRUE
|
|
?CND7: ICALL1 NOTHING-INTERESTING
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CND1: PRINT CANT
|
|
PRINTI "look up "
|
|
ICALL1 PRINTA
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK-INSIDE
|
|
ZERO? LIT? \?CCL3
|
|
ICALL1 TOO-DARK
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,PLACE \?CCL5
|
|
ICALL1 CANT-SEE-MUCH
|
|
RTRUE
|
|
?CCL5: FSET? PRSO,PERSON \?CCL7
|
|
ICALL2 NOT-A,STR?537
|
|
RTRUE
|
|
?CCL7: FSET? PRSO,LIVING \?CCL9
|
|
ICALL2 NOT-A,STR?538
|
|
RTRUE
|
|
?CCL9: FSET? PRSO,CONTAINER \?CCL11
|
|
FSET? PRSO,OPENED /?CCL14
|
|
FSET? PRSO,TRANSPARENT /?CCL14
|
|
ICALL1 ITS-CLOSED
|
|
RTRUE
|
|
?CCL14: CALL1 SEE-ANYTHING-IN?
|
|
ZERO? STACK /?CND12
|
|
PRINT YOU-SEE
|
|
ICALL1 CONTENTS
|
|
PRINT SIN
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CND12: ICALL1 CTHE-PRINT
|
|
PRINTR " is empty."
|
|
?CCL11: FSET? PRSO,DOORLIKE \?CND1
|
|
FSET? PRSO,OPENED \?CND19
|
|
ICALL1 CANT-SEE-MUCH
|
|
RTRUE
|
|
?CND19: ICALL1 ITS-CLOSED
|
|
RTRUE
|
|
?CND1: PRINT CANT
|
|
PRINTI "look inside "
|
|
ICALL1 PRINTA
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK-OUTSIDE
|
|
ZERO? LIT? \?CCL3
|
|
ICALL1 TOO-DARK
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,ROOMS \?CCL5
|
|
FSET? HERE,INDOORS \?CCL8
|
|
ICALL1 NOTHING-INTERESTING
|
|
PRINTC SP
|
|
JUMP ?CND6
|
|
?CCL8: PRINT ALREADY
|
|
?CND6: PRINTB W?OUTSIDE
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL5: FSET? PRSO,DOORLIKE \?CND1
|
|
FSET? PRSO,OPENED \?CND10
|
|
ICALL1 CANT-SEE-MUCH
|
|
RTRUE
|
|
?CND10: ICALL1 ITS-CLOSED
|
|
RTRUE
|
|
?CND1: PRINT CANT
|
|
PRINTI "look out of "
|
|
ICALL1 PRINTA
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SLOOK-THRU
|
|
ICALL PERFORM,V?LOOK-THRU,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK-THRU
|
|
ZERO? LIT? \?CCL3
|
|
ICALL1 TOO-DARK
|
|
RETURN 2
|
|
?CCL3: ZERO? PRSI /?CND1
|
|
FSET? PRSI,TRANSPARENT /?CND1
|
|
PRINT CANT
|
|
PRINTR "look through that."
|
|
?CND1: ICALL1 NOTHING-INTERESTING
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK-UNDER
|
|
ZERO? LIT? \?CND1
|
|
ICALL1 TOO-DARK
|
|
RETURN 2
|
|
?CND1: ICALL1 NOTHING-INTERESTING
|
|
PRINTI " under "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-WEDGE
|
|
ICALL PERFORM,V?LOOSEN,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOSEN
|
|
ICALL1 WASTE-OF-TIME
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOWER
|
|
EQUAL? PRSO,ROOMS \?CND1
|
|
ICALL2 DO-WALK,P?DOWN
|
|
RTRUE
|
|
?CND1: ICALL1 V-RAISE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-MAKE
|
|
ICALL1 HOW?
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-MELT
|
|
ICALL1 HOW?
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-MOVE
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
ICALL1 V-WALK-AROUND
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,TAKEABLE \?CND1
|
|
PRINTI "Moving "
|
|
ICALL1 THE-PRINT
|
|
PRINTI " would"
|
|
CALL2 PICK-NEXT,HO-HUM
|
|
PRINT STACK
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CND1: PRINT IMPOSSIBLY
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-MUNG
|
|
FSET? PRSO,MONSTER \?CCL3
|
|
ICALL PERFORM,V?HIT,PRSO,PRSI
|
|
RTRUE
|
|
?CCL3: CALL2 SPARK?,FALSE-VALUE
|
|
ZERO? STACK \TRUE
|
|
ICALL2 HACK-HACK,STR?539
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-PICK
|
|
FSET? PRSO,OPENABLE \?CND1
|
|
ICALL2 NOT-A,STR?540
|
|
RTRUE
|
|
?CND1: ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-POINT
|
|
ZERO? PRSI /?CND1
|
|
FSET? PRSI,PERSON \?CND3
|
|
ICALL1 CTHEI-PRINT
|
|
EQUAL? PRSO,PRSI \?CND5
|
|
PRINTR " looks confused."
|
|
?CND5: PRINT GLANCES-AT
|
|
ICALL1 THE-PRINT
|
|
PRINTR ", but doesn't respond."
|
|
?CND3: ICALL2 NOT-LIKELY,PRSI
|
|
PRINT STR?509
|
|
RTRUE
|
|
?CND1: PRINTI "You point at "
|
|
ICALL1 THE-PRINT
|
|
ICALL1 NOTHING-HAPPENS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT NOTHING-HAPPENS,BUT
|
|
ASSIGNED? 'BUT /?CND1
|
|
SET 'BUT,TRUE-VALUE
|
|
?CND1: ZERO? BUT \?CCL5
|
|
PRINTC 78
|
|
JUMP ?CND3
|
|
?CCL5: PRINTI ", but n"
|
|
?CND3: PRINTI "othing "
|
|
CALL2 PICK-NEXT,YAWNS
|
|
PRINT STACK
|
|
PRINTR " happens."
|
|
|
|
|
|
.FUNCT V-SPOINT-AT
|
|
ICALL PERFORM,V?POINT-AT,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-POINT-AT
|
|
ZERO? LIT? \FALSE
|
|
EQUAL? PRSI,FALSE-VALUE,ME /FALSE
|
|
ICALL1 TOO-DARK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-POINT-AT
|
|
EQUAL? PRSO,ME,HANDS \?CND1
|
|
ICALL1 V-POINT
|
|
RTRUE
|
|
?CND1: PRINT CYOU
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 THE-PRINT
|
|
PRINTI " at "
|
|
ICALL1 THEI-PRINT
|
|
ICALL1 NOTHING-HAPPENS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-POP
|
|
PRINT CANT
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 PRINTA
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-POUR
|
|
EQUAL? PRSO,HANDS \?CCL3
|
|
PRINTI "[To do that, just DROP EVERYTHING.]"
|
|
CRLF
|
|
RETURN 2
|
|
?CCL3: FSET? PRSO,SURFACE \?CCL7
|
|
ICALL2 EMPTY-PRSO,GROUND
|
|
RTRUE
|
|
?CCL7: FSET? PRSO,CONTAINER \?CND1
|
|
FSET? PRSO,OPENED \?CND9
|
|
ICALL2 EMPTY-PRSO,GROUND
|
|
RTRUE
|
|
?CND9: ICALL1 ITS-CLOSED
|
|
RTRUE
|
|
?CND1: PRINT CANT
|
|
PRINTR "empty that."
|
|
|
|
|
|
.FUNCT V-POUR-FROM
|
|
EQUAL? PRSO,PRSI \?CCL3
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSI,HANDS \?CCL5
|
|
ICALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
?CCL5: FSET? PRSI,CONTAINER /?CCL7
|
|
FSET? PRSI,SURFACE /?CCL7
|
|
PRINT CANT
|
|
PRINTB P-PRSA-WORD
|
|
PRINTI " things from "
|
|
ICALL2 PRINTA,PRSI
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL7: FSET? PRSI,CONTAINER \?CCL11
|
|
FSET? PRSI,OPENED /?CCL11
|
|
ICALL2 ITS-CLOSED,PRSI
|
|
RTRUE
|
|
?CCL11: IN? PRSO,PRSI \?CND1
|
|
FSET? PRSO,TAKEABLE \?CND15
|
|
ICALL1 CTHE-PRINT
|
|
PRINTC SP
|
|
ICALL1 FALLS
|
|
RTRUE
|
|
?CND15: ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CND1: ICALL1 CTHE-PRINT
|
|
PRINTI " isn't in "
|
|
ICALL1 THEI-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-EMPTY-INTO
|
|
EQUAL? PRSI,HANDS,ME \?CCL3
|
|
ICALL1 V-EMPTY
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSI,GROUND,FLOOR,GLOBAL-ROOM \?CCL5
|
|
EQUAL? HERE,IN-SKY \?CND6
|
|
ICALL1 CANT-FROM-HERE
|
|
RTRUE
|
|
?CND6: LOC WINNER
|
|
ICALL2 V-EMPTY,STACK
|
|
RTRUE
|
|
?CCL5: FSET? PRSI,SURFACE \?CCL9
|
|
ICALL2 V-EMPTY,PRSI
|
|
RTRUE
|
|
?CCL9: FSET? PRSI,CONTAINER \?CND1
|
|
FSET? PRSI,OPENED \?CND11
|
|
ICALL2 V-EMPTY,PRSI
|
|
RTRUE
|
|
?CND11: ICALL2 ITS-CLOSED,PRSI
|
|
RTRUE
|
|
?CND1: PRINT CANT
|
|
PRINTI "empty "
|
|
ICALL1 THE-PRINT
|
|
ICALL2 ON-IN,PRSI
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-EMPTY,DEST
|
|
FSET? PRSO,PERSON /?CND1
|
|
FSET? PRSO,LIVING /?CND1
|
|
FSET? PRSO,MONSTER /?CND1
|
|
FSET? PRSO,SURFACE \?CCL6
|
|
ICALL2 EMPTY-PRSO,DEST
|
|
RTRUE
|
|
?CCL6: FSET? PRSO,CONTAINER \?CND1
|
|
FSET? PRSO,OPENED \?CND8
|
|
ICALL2 EMPTY-PRSO,DEST
|
|
RTRUE
|
|
?CND8: ICALL1 ITS-CLOSED
|
|
RTRUE
|
|
?CND1: PRINT IMPOSSIBLY
|
|
PRINTI "empty "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT EMPTY-PRSO,DEST,ANY,OBJ,NXT,X,ICAP,ILOAD,OSIZE
|
|
ZERO? DEST /?CCL3
|
|
LOC DEST >X
|
|
ZERO? X /?CTR5
|
|
EQUAL? PRSO,DEST \?CCL6
|
|
?CTR5: ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL6: EQUAL? X,PRSO /?CCL9
|
|
IN? X,PRSO \?CND1
|
|
?CCL9: ICALL YOUD-HAVE-TO,STR?541,DEST
|
|
RTRUE
|
|
?CCL3: SET 'DEST,WINNER
|
|
?CND1: CALL1 SEE-ANYTHING-IN?
|
|
ZERO? STACK \?CND12
|
|
PRINTI "There's nothing"
|
|
ICALL1 ON-IN
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CND12: SET 'P-MULT?,TRUE-VALUE
|
|
LOC WINNER
|
|
EQUAL? DEST,WINNER,STACK /?CND14
|
|
CALL2 WEIGHT,DEST >ILOAD
|
|
GETP DEST,P?SIZE
|
|
SUB ILOAD,STACK >ILOAD
|
|
GETP DEST,P?CAPACITY >ICAP
|
|
?CND14: FIRST? PRSO >OBJ \?CND16
|
|
?PRG18: NEXT? OBJ >NXT /?BOGUS20
|
|
?BOGUS20: FSET? OBJ,TAKEABLE \?CND21
|
|
FSET? OBJ,NODESC /?CND21
|
|
INC 'ANY
|
|
GETP OBJ,P?SIZE >OSIZE
|
|
FSET? OBJ,NOARTICLE /?CND24
|
|
PRINT XTHE
|
|
?CND24: ICALL2 DPRINT,OBJ
|
|
PRINTI ": "
|
|
EQUAL? DEST,WINNER \?CCL28
|
|
CALL PERFORM,V?TAKE,OBJ,PRSO >X
|
|
EQUAL? X,M-FATAL /?CND16
|
|
JUMP ?CND21
|
|
?CCL28: LOC WINNER
|
|
EQUAL? DEST,STACK \?CCL32
|
|
FSET? OBJ,PLURAL \?CCL35
|
|
PRINTI "They "
|
|
JUMP ?CND33
|
|
?CCL35: PRINTI "It "
|
|
?CND33: ICALL2 FALLS,OBJ
|
|
JUMP ?CND21
|
|
?CCL32: GRTR? OSIZE,ICAP \?CCL37
|
|
ICALL2 CTHE-PRINT,OBJ
|
|
ICALL2 IS-ARE,OBJ
|
|
PRINTI "too big to fit in "
|
|
ICALL2 THE-PRINT,DEST
|
|
PRINT PERIOD
|
|
JUMP ?CND21
|
|
?CCL37: ADD ILOAD,OSIZE
|
|
GRTR? STACK,ICAP \?CCL39
|
|
ICALL2 NO-ROOM-IN,DEST
|
|
JUMP ?CND21
|
|
?CCL39: FCLEAR OBJ,WIELDED
|
|
MOVE OBJ,DEST
|
|
PRINTI "Done."
|
|
CRLF
|
|
?CND21: SET 'OBJ,NXT
|
|
ZERO? OBJ \?PRG18
|
|
?CND16: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
|
|
SET 'P-MULT?,FALSE-VALUE
|
|
ZERO? ANY \TRUE
|
|
PRINT NOTHING
|
|
PRINTR "you can take."
|
|
|
|
|
|
.FUNCT V-PULL
|
|
CALL2 SPARK?,FALSE-VALUE
|
|
ZERO? STACK \TRUE
|
|
ICALL2 HACK-HACK,STR?542
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-PUSH
|
|
CALL2 SPARK?,FALSE-VALUE
|
|
ZERO? STACK \TRUE
|
|
ICALL2 HACK-HACK,STR?543
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-PUSH-TO
|
|
EQUAL? PRSO,HANDS \?CND1
|
|
ZERO? PRSI /?CND1
|
|
ICALL PERFORM,V?REACH-IN,PRSI
|
|
RTRUE
|
|
?CND1: ICALL1 PUSHOVER
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PUSHOVER
|
|
PRINT CANT
|
|
PRINTI "push "
|
|
ICALL1 THE-PRINT
|
|
PRINTR " around like that."
|
|
|
|
|
|
.FUNCT V-PUSH-UP
|
|
EQUAL? PRSO,HANDS \?CND1
|
|
ZERO? PRSI /?CND1
|
|
ICALL PERFORM,V?RAISE,PRSI
|
|
RTRUE
|
|
?CND1: ICALL1 PUSHOVER
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-PUSH-DOWN
|
|
EQUAL? PRSO,HANDS \?CND1
|
|
ZERO? PRSI /?CND1
|
|
ICALL PERFORM,V?LOWER,PRSI
|
|
RTRUE
|
|
?CND1: ICALL1 PUSHOVER
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-PUT,L
|
|
LOC PRSO >L
|
|
EQUAL? PRSO,PRSI \?CCL3
|
|
ICALL1 HOW?
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSI,INTDIR,RIGHT,LEFT \?CCL5
|
|
ICALL1 NYMPH-APPEARS
|
|
PRINTI "You really must specify an object"
|
|
PRINT STR?515
|
|
RTRUE
|
|
?CCL5: EQUAL? PRSI,HANDS,HEAD \?CCL7
|
|
EQUAL? PRSI,HEAD \?CND8
|
|
EQUAL? PRSO,HELM \?CND8
|
|
ICALL PERFORM,V?WEAR,PRSO
|
|
RTRUE
|
|
?CND8: ICALL1 NOT-LIKELY
|
|
PRINTR " would fit very well."
|
|
?CCL7: EQUAL? FEET,PRSO,PRSI /?CTR12
|
|
EQUAL? HEAD,PRSO,PRSI \?CCL13
|
|
?CTR12: ICALL1 WASTE-OF-TIME
|
|
RTRUE
|
|
?CCL13: ZERO? LIT? \?CND1
|
|
EQUAL? PRSI,GRUE,URGRUE \?CCL18
|
|
CALL2 WEARING-MAGIC?,HELM
|
|
ZERO? STACK \?CND1
|
|
?CCL18: IN? PRSI,WINNER /?CND1
|
|
ICALL1 TOO-DARK
|
|
RTRUE
|
|
?CND1: EQUAL? PRSO,MONEY,INTNUM \?CCL24
|
|
ICALL1 BENJAMIN
|
|
RTRUE
|
|
?CCL24: EQUAL? PRSI,GROUND,FLOOR \?CCL26
|
|
ICALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
?CCL26: IN? PRSI,GLOBAL-OBJECTS \?CCL28
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL28: EQUAL? PRSO,HANDS \?CCL30
|
|
ICALL PERFORM,V?REACH-IN,PRSI
|
|
RTRUE
|
|
?CCL30: EQUAL? L,PRSI \?CCL32
|
|
ICALL1 CTHE-PRINT
|
|
ICALL1 IS-ARE
|
|
PRINTI "already"
|
|
ICALL2 ON-IN,PRSI
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL32: EQUAL? PRSO,PRSI /?CTR33
|
|
EQUAL? L,GLOBAL-OBJECTS /?CTR33
|
|
FSET? PRSO,TAKEABLE /?CCL34
|
|
?CTR33: ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL34: CALL2 ACCESSIBLE?,PRSI
|
|
ZERO? STACK \?CCL39
|
|
ICALL2 CANT-SEE-ANY,PRSI
|
|
RTRUE
|
|
?CCL39: FSET? PRSO,WORN \?CCL41
|
|
EQUAL? L,WINNER \?CCL41
|
|
EQUAL? PRSI,ME,WINNER /?CCL41
|
|
CALL1 TAKE-OFF-PRSO-FIRST?
|
|
RSTACK
|
|
?CCL41: IN? L,WINNER \FALSE
|
|
CALL2 VISIBLE?,PRSO
|
|
ZERO? STACK /FALSE
|
|
ICALL2 TAKING-OBJ-FIRST,PRSO
|
|
CALL1 ITAKE
|
|
ZERO? STACK /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT TAKE-OFF-PRSO-FIRST?,X
|
|
GETP PRSO,P?EFFECT >X
|
|
ZERO? X /?CND1
|
|
EQUAL? PRSO,CLOAK /?CND1
|
|
IN? CLOAK,PLAYER \?CND1
|
|
FSET? CLOAK,WORN \?CND1
|
|
ICALL YOUD-HAVE-TO,STR?520,CLOAK
|
|
RTRUE
|
|
?CND1: FCLEAR PRSO,WORN
|
|
BOR NEW-DBOX,SHOWING-INV >NEW-DBOX
|
|
PRINTI "[taking off "
|
|
ICALL1 THE-PRINT
|
|
PRINTI " first]"
|
|
CRLF
|
|
EQUAL? PRSO,AMULET \?CCL9
|
|
ZERO? AMULET-TIMER /?CCL9
|
|
ICALL1 NORMAL-STRENGTH
|
|
RTRUE
|
|
?CCL9: CALL2 HOTFOOT?,TRUE-VALUE
|
|
ZERO? STACK \TRUE
|
|
EQUAL? PRSO,HELM \?CND7
|
|
FSET? PRSO,NEUTRALIZED /?CND7
|
|
ICALL1 NORMAL-IQ
|
|
?CND7: ZERO? X /?CND17
|
|
SUB 0,X
|
|
ICALL UPDATE-STAT,STACK,ARMOR-CLASS
|
|
?CND17: PRINT TAB
|
|
RFALSE
|
|
|
|
|
|
.FUNCT PRE-PUT-ON
|
|
CALL1 PRE-PUT
|
|
ZERO? STACK \TRUE
|
|
EQUAL? PRSI,CHEST /FALSE
|
|
FSET? PRSI,SURFACE /FALSE
|
|
ICALL1 NO-GOOD-SURFACE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT NO-GOOD-SURFACE,OBJ
|
|
ASSIGNED? 'OBJ /?CND1
|
|
SET 'OBJ,PRSI
|
|
?CND1: PRINTI "There's no good surface on "
|
|
ICALL2 THE-PRINT,OBJ
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-PUT-ON
|
|
EQUAL? PRSI,ME \?CND1
|
|
ICALL PERFORM,V?WEAR,PRSO
|
|
RTRUE
|
|
?CND1: ICALL1 V-PUT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-PUT,OL,ICAP,ILOAD,OSIZE
|
|
LOC PRSO >OL
|
|
ZERO? OL /?CTR2
|
|
ZERO? PRSI /?CCL3
|
|
FSET? PRSI,SURFACE /?CCL3
|
|
FSET? PRSI,CONTAINER /?CCL3
|
|
?CTR2: ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL3: FSET? PRSI,OPENED /?CCL10
|
|
FSET? PRSI,SURFACE /?CCL10
|
|
ICALL2 THIS-IS-IT,PRSI
|
|
ICALL1 CTHEI-PRINT
|
|
ICALL2 ISNT-ARENT,PRSI
|
|
PRINTR " open."
|
|
?CCL10: EQUAL? OL,WINNER /?CND1
|
|
PRINTI "Maybe you should take "
|
|
ICALL1 THE-PRINT
|
|
ICALL2 OUT-OF-LOC,OL
|
|
PRINT SFIRST
|
|
RTRUE
|
|
?CND1: CALL2 WEIGHT,PRSI >ILOAD
|
|
GETP PRSI,P?SIZE
|
|
SUB ILOAD,STACK >ILOAD
|
|
GETP PRSI,P?CAPACITY >ICAP
|
|
GETP PRSO,P?SIZE >OSIZE
|
|
GRTR? OSIZE,ICAP \?CCL16
|
|
ICALL1 CTHE-PRINT
|
|
ICALL1 IS-ARE
|
|
PRINTI "too big to fit"
|
|
ICALL2 ON-IN,PRSI
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL16: ADD ILOAD,OSIZE
|
|
GRTR? STACK,ICAP \?CND14
|
|
ICALL2 NO-ROOM-IN,PRSI
|
|
RTRUE
|
|
?CND14: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
|
|
FCLEAR PRSO,WIELDED
|
|
MOVE PRSO,PRSI
|
|
FSET PRSO,TOUCHED
|
|
ZERO? P-MULT? /?CND18
|
|
PRINTR "Done."
|
|
?CND18: PRINTI "You put "
|
|
ICALL1 THE-PRINT
|
|
ICALL2 ON-IN,PRSI
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT NO-ROOM-IN,OBJ
|
|
PRINTI "There isn't enough room"
|
|
ICALL2 ON-IN,OBJ
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-PLUG-IN
|
|
PRINT CANT
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 O-INTO-I
|
|
RTRUE
|
|
|
|
|
|
.FUNCT NEVER-FIT
|
|
PRINTI "You'd never fit "
|
|
ICALL1 O-INTO-I
|
|
RTRUE
|
|
|
|
|
|
.FUNCT O-INTO-I,NOCR
|
|
ICALL1 THE-PRINT
|
|
PRINT SINTO
|
|
ICALL1 THEI-PRINT
|
|
ASSIGNED? 'NOCR /FALSE
|
|
PRINT PERIOD
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-UNPLUG
|
|
ICALL1 CTHE-PRINT
|
|
ICALL1 ISNT-ARENT
|
|
PRINTI " connected to "
|
|
ZERO? PRSI /?CCL3
|
|
ICALL1 THEI-PRINT
|
|
JUMP ?CND1
|
|
?CCL3: PRINTI "anything"
|
|
?CND1: PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-PUT-BEHIND
|
|
PRINTR "That hiding place is too obvious."
|
|
|
|
|
|
.FUNCT V-PUT-UNDER
|
|
PRINT CANT
|
|
PRINTR "put anything under that."
|
|
|
|
|
|
.FUNCT V-RAPE
|
|
PRINTR "What a wholesome idea."
|
|
|
|
|
|
.FUNCT V-RAISE
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
ICALL1 V-STAND
|
|
RTRUE
|
|
?CCL3: CALL2 SPARK?,FALSE-VALUE
|
|
ZERO? STACK \TRUE
|
|
ICALL2 HACK-HACK,STR?544
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-REACH-IN,OBJ
|
|
FIRST? PRSO >OBJ /?BOGUS1
|
|
?BOGUS1: FSET? PRSO,PERSON /?CTR3
|
|
FSET? PRSO,LIVING \?CCL4
|
|
?CTR3: ICALL2 NOT-A,STR?537
|
|
RTRUE
|
|
?CCL4: FSET? PRSO,DOORLIKE \?CCL8
|
|
FSET? PRSO,OPENED \?CND9
|
|
ICALL1 REACH-INTO-PRSO
|
|
PRINTI ", but experience nothing "
|
|
CALL2 PICK-NEXT,YAWNS
|
|
PRINT STACK
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CND9: ICALL1 ITS-CLOSED
|
|
RTRUE
|
|
?CCL8: FSET? PRSO,CONTAINER /?CCL12
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL12: FSET? PRSO,OPENED /?CCL14
|
|
PRINTR "It's not open."
|
|
?CCL14: IN? PRSO,PLAYER \?CCL16
|
|
FSET? PRSO,WORN \?CCL16
|
|
ICALL2 YOUD-HAVE-TO,STR?520
|
|
RTRUE
|
|
?CCL16: ZERO? OBJ /?CCL19
|
|
FSET? OBJ,TAKEABLE /?CND2
|
|
?CCL19: PRINT STR?545
|
|
RTRUE
|
|
?CND2: ICALL2 THIS-IS-IT,OBJ
|
|
ICALL1 REACH-INTO-PRSO
|
|
PRINTI " and feel "
|
|
PRINTB W?SOMETHING
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT REACH-INTO-PRSO
|
|
PRINTI "You reach into "
|
|
ICALL1 THE-PRINT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-READ
|
|
ZERO? LIT? \?CCL3
|
|
ICALL1 TOO-DARK
|
|
RETURN 2
|
|
?CCL3: FSET? PRSO,READABLE /?CND1
|
|
ICALL1 HOW-READ
|
|
PRINTR "?"
|
|
?CND1: PRINT NOTHING
|
|
PRINTR "written on it."
|
|
|
|
|
|
.FUNCT V-READ-TO
|
|
ZERO? LIT? \?CCL3
|
|
ICALL1 TOO-DARK
|
|
RETURN 2
|
|
?CCL3: FSET? PRSO,READABLE /?CCL7
|
|
ICALL1 HOW-READ
|
|
PRINT STO
|
|
ICALL2 PRINTA,PRSI
|
|
PRINTR "?"
|
|
?CCL7: EQUAL? WINNER,PLAYER \?CND1
|
|
ICALL2 NOT-LIKELY,PRSI
|
|
PRINTR " would appreciate your reading."
|
|
?CND1: PRINTR "Maybe you ought to do it."
|
|
|
|
|
|
.FUNCT HOW-READ
|
|
PRINTI "How can you read "
|
|
ICALL1 PRINTA
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-RELEASE
|
|
IN? PRSO,WINNER \?CND1
|
|
ICALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
?CND1: EQUAL? PRSO,ME \?CCL5
|
|
PRINTI "You aren't"
|
|
JUMP ?CND3
|
|
?CCL5: ICALL1 CTHE-PRINT
|
|
ICALL1 ISNT-ARENT
|
|
?CND3: PRINTR " being held by anything."
|
|
|
|
|
|
.FUNCT V-REPLACE
|
|
EQUAL? PRSO,ME \?CND1
|
|
PRINTR "Easily done."
|
|
?CND1: ICALL1 CTHE-PRINT
|
|
PRINTR " doesn't need replacement."
|
|
|
|
|
|
.FUNCT V-REPAIR
|
|
EQUAL? PRSO,ME \?CCL3
|
|
PRINTI "You aren't"
|
|
JUMP ?CND1
|
|
?CCL3: ICALL1 CTHE-PRINT
|
|
ICALL1 ISNT-ARENT
|
|
?CND1: PRINTR " in need of repair."
|
|
|
|
|
|
.FUNCT V-HELP
|
|
PRINTR "[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.]"
|
|
|
|
|
|
.FUNCT V-RESCUE
|
|
EQUAL? PRSO,ME \?CND1
|
|
EQUAL? WINNER,PLAYER \?CND3
|
|
ICALL1 V-HELP
|
|
RTRUE
|
|
?CND3: ICALL1 HOW?
|
|
RTRUE
|
|
?CND1: ICALL1 CTHE-PRINT
|
|
FSET? PRSO,PLURAL \?CCL7
|
|
PRINTI " do"
|
|
JUMP ?CND5
|
|
?CCL7: PRINTI " does"
|
|
?CND5: PRINTR "n't need any help."
|
|
|
|
|
|
.FUNCT V-RIDE
|
|
FSET? PRSO,LIVING \?CCL3
|
|
ICALL1 NOT-LIKELY
|
|
PRINTR " wants to play piggyback."
|
|
?CCL3: FSET? PRSO,VEHICLE \?CND1
|
|
ICALL PERFORM,V?ENTER,PRSO
|
|
RTRUE
|
|
?CND1: PRINT CANT
|
|
PRINTR "ride that."
|
|
|
|
|
|
.FUNCT V-TOUCH
|
|
CALL2 SPARK?,FALSE-VALUE
|
|
ZERO? STACK \TRUE
|
|
ICALL2 HACK-HACK,STR?546
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-STOUCH-TO
|
|
ICALL PERFORM,V?TOUCH-TO,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-TOUCH-TO
|
|
CALL1 SPARK-TO?
|
|
ZERO? STACK \TRUE
|
|
PRINT CYOU
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 THE-PRINT
|
|
PRINTI " against "
|
|
ICALL1 THEI-PRINT
|
|
ICALL1 NOTHING-HAPPENS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SCRATCH
|
|
CALL2 SPARK?,FALSE-VALUE
|
|
ZERO? STACK \TRUE
|
|
PRINT CYOU
|
|
PRINTB P-PRSA-WORD
|
|
PRINTI " your fingers across "
|
|
ICALL1 THE-PRINT
|
|
ICALL1 BUT-NOTHING-HAPPENS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT BUT-NOTHING-HAPPENS
|
|
PRINTI ", but nothing "
|
|
CALL2 PICK-NEXT,YAWNS
|
|
PRINT STACK
|
|
PRINTR " happens."
|
|
|
|
|
|
.FUNCT BUT-FIND-NOTHING
|
|
PRINTI ", but nothing "
|
|
CALL2 PICK-NEXT,YAWNS
|
|
PRINT STACK
|
|
PRINTR " turns up."
|
|
|
|
|
|
.FUNCT V-PEEL
|
|
PRINT CANT
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SCRAPE-ON
|
|
CALL1 SPARK-TO?
|
|
ZERO? STACK \TRUE
|
|
EQUAL? PRSO,HANDS \?CCL5
|
|
ICALL PERFORM,V?TOUCH,PRSI
|
|
RTRUE
|
|
?CCL5: EQUAL? PRSO,FEET \?CND1
|
|
ICALL PERFORM,V?KICK,PRSI
|
|
RTRUE
|
|
?CND1: PRINT CYOU
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 THE-PRINT
|
|
EQUAL? PRSI,FALSE-VALUE,HANDS /?CND7
|
|
PRINT SON
|
|
ICALL1 THEI-PRINT
|
|
?CND7: ICALL1 NOTHING-HAPPENS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-BOW
|
|
ICALL2 HACK-HACK,STR?547
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SEARCH
|
|
FSET? PRSO,PLACE \?CCL3
|
|
ICALL1 CANT-SEE-MUCH
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,CONTAINER \?CCL5
|
|
FSET? PRSO,OPENED /?CND6
|
|
FSET? PRSO,TRANSPARENT /?CND6
|
|
ICALL2 YOUD-HAVE-TO,STR?518
|
|
RTRUE
|
|
?CND6: PRINT YOU-SEE
|
|
ICALL1 CONTENTS
|
|
PRINTI " inside "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL5: FSET? PRSO,SURFACE \?CCL11
|
|
PRINT YOU-SEE
|
|
ICALL1 CONTENTS
|
|
PRINT SON
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL11: FSET? PRSO,PERSON \?CND1
|
|
ICALL PERFORM,V?USE,PRSO
|
|
RTRUE
|
|
?CND1: ICALL1 NOTHING-INTERESTING
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SHAKE
|
|
CALL2 SPARK?,FALSE-VALUE
|
|
ZERO? STACK \TRUE
|
|
FSET? PRSO,PERSON \?CCL5
|
|
ICALL PERFORM,V?ALARM,PRSO
|
|
RTRUE
|
|
?CCL5: FSET? PRSO,TAKEABLE /?CND1
|
|
FSET? PRSO,TRYTAKE /?CND1
|
|
ICALL2 HACK-HACK,STR?548
|
|
RTRUE
|
|
?CND1: ICALL1 WASTE-OF-TIME
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SFIRE-AT
|
|
ICALL PERFORM,V?FIRE-AT,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-FIRE-AT
|
|
PRINT CANT
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 THE-PRINT
|
|
PRINTR " at anything."
|
|
|
|
|
|
.FUNCT V-ZAP-WITH
|
|
PRINT CANT
|
|
PRINTI "zap things with "
|
|
ICALL2 PRINTA,PRSI
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SIT
|
|
EQUAL? PRSO,ROOMS \?CND1
|
|
EQUAL? HERE,IN-CHAPEL \?CND1
|
|
ICALL1 ENTER-PEW
|
|
RTRUE
|
|
?CND1: ICALL1 NO-PLACE-TO-PRSA
|
|
RTRUE
|
|
|
|
|
|
.FUNCT NO-PLACE-TO-PRSA
|
|
PRINTI "There's no place to "
|
|
PRINTB P-PRSA-WORD
|
|
PRINTR " here."
|
|
|
|
|
|
.FUNCT V-SMELL,X
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
GETP HERE,P?ODOR >X
|
|
ZERO? X \?CND4
|
|
PRINT DONT
|
|
PRINTI "smell anything "
|
|
CALL2 PICK-NEXT,YAWNS
|
|
PRINT STACK
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CND4: ICALL PERFORM,V?SMELL,X
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,LIVING /?CCL7
|
|
PRINTI "It"
|
|
JUMP ?CND1
|
|
?CCL7: FSET? PRSO,FEMALE \?CCL9
|
|
PRINTI "She"
|
|
JUMP ?CND1
|
|
?CCL9: PRINTI "He"
|
|
?CND1: PRINTI " smells just like "
|
|
ICALL1 PRINTA
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-PLANT
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-UPROOT
|
|
ICALL1 CTHE-PRINT
|
|
PRINTR " isn't rooted anywhere."
|
|
|
|
|
|
.FUNCT V-SPIN
|
|
EQUAL? PRSO,ROOMS,ME \?CND1
|
|
PRINTR "You begin to feel a little dizzy."
|
|
?CND1: PRINT CANT
|
|
PRINTR "spin that."
|
|
|
|
|
|
.FUNCT V-SQUEEZE
|
|
CALL2 SPARK?,FALSE-VALUE
|
|
ZERO? STACK \TRUE
|
|
ICALL1 WASTE-OF-TIME
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-DUCK
|
|
ICALL1 WASTE-OF-TIME
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-STAND
|
|
EQUAL? PRSO,ROOMS \?CND1
|
|
IN? PLAYER,PEW \?CND1
|
|
ICALL1 EXIT-PEW
|
|
RTRUE
|
|
?CND1: ICALL1 ALREADY-STANDING
|
|
RTRUE
|
|
|
|
|
|
.FUNCT ALREADY-STANDING
|
|
PRINT ALREADY
|
|
PRINTR "standing."
|
|
|
|
|
|
.FUNCT V-STAND-ON
|
|
ICALL1 WASTE-OF-TIME
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-STAND-UNDER
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SWING
|
|
ZERO? PRSI \?CND1
|
|
ICALL1 WASTE-OF-TIME
|
|
RTRUE
|
|
?CND1: ICALL PERFORM,V?HIT,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-DIVE
|
|
EQUAL? PRSO,ROOMS \?CND1
|
|
EQUAL? HERE,IN-SKY \?CND1
|
|
ICALL1 DISMOUNT-DACT
|
|
RTRUE
|
|
?CND1: ICALL1 V-SWIM
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SWIM
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
EQUAL? HERE,ON-BRIDGE \?CCL6
|
|
ICALL1 JUMP-OFF-BRIDGE
|
|
RTRUE
|
|
?CCL6: EQUAL? HERE,JUN0 \?CCL8
|
|
ICALL1 ENTER-QUICKSAND
|
|
RTRUE
|
|
?CCL8: EQUAL? HERE,ON-WHARF,AT-LEDGE,AT-BRINE \?CND4
|
|
ICALL2 DO-WALK,P?DOWN
|
|
RTRUE
|
|
?CND4: ICALL1 NO-PLACE-TO-PRSA
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,INTDIR \?CND1
|
|
ZERO? P-DIRECTION /?CND1
|
|
EQUAL? WINNER,PLAYER \?CND1
|
|
PRINT CANT
|
|
PRINTB P-PRSA-WORD
|
|
PRINTR " that way from here."
|
|
?CND1: ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SGET-FOR
|
|
ICALL PERFORM,V?TAKE,PRSI
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-GET-FOR
|
|
ICALL PERFORM,V?TAKE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-TAKE-WITH
|
|
ICALL1 HOW?
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-TAKE-OFF,X
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
LOC WINNER >X
|
|
EQUAL? P-PRSA-WORD,W?GET \?CND4
|
|
EQUAL? X,HERE /?CND4
|
|
FSET? X,VEHICLE \?CND4
|
|
ICALL PERFORM,V?EXIT,X
|
|
RTRUE
|
|
?CND4: ICALL1 V-WALK-AROUND
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,HANDS,FEET \?CCL10
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL10: FSET? PRSO,PLACE \?CCL12
|
|
ICALL1 NOT-IN
|
|
RTRUE
|
|
?CCL12: FSET? PRSO,TAKEABLE \?CCL14
|
|
LOC PRSO >X
|
|
ZERO? X \?CCL17
|
|
ICALL1 REFERRING
|
|
RTRUE
|
|
?CCL17: EQUAL? X,WINNER \?CCL19
|
|
FSET? PRSO,CLOTHING \?CCL19
|
|
FSET? PRSO,WORN \?CND22
|
|
CALL1 HOTFOOT?
|
|
ZERO? STACK \TRUE
|
|
ICALL1 TAKEOFF
|
|
GETP PRSO,P?EFFECT >X
|
|
ZERO? X /TRUE
|
|
SUB 0,X
|
|
ICALL UPDATE-STAT,STACK,ARMOR-CLASS
|
|
RTRUE
|
|
?CND22: PRINT STR?549
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL19: FSET? X,SURFACE /?CND15
|
|
ICALL1 CTHE-PRINT
|
|
PRINTR " isn't ""on"" anything."
|
|
?CND15: ICALL PERFORM,V?TAKE,PRSO
|
|
RTRUE
|
|
?CCL14: FSET? PRSO,VEHICLE \?CND1
|
|
ICALL PERFORM,V?EXIT,PRSO
|
|
RTRUE
|
|
?CND1: ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TAKEOFF
|
|
BOR NEW-DBOX,SHOWING-INV >NEW-DBOX
|
|
FCLEAR PRSO,WORN
|
|
PRINTI "You take off "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT HOTFOOT?,INDENT
|
|
EQUAL? PRSO,RING \FALSE
|
|
ZERO? MAGMA-TIMER /FALSE
|
|
EQUAL? HERE,FOREST-EDGE,ON-TRAIL,ON-PEAK \FALSE
|
|
ASSIGNED? 'INDENT \?CND7
|
|
PRINT TAB
|
|
?CND7: PRINTI "You slip "
|
|
ICALL1 THE-PRINT
|
|
PRINTI " off "
|
|
PRINTD HANDS
|
|
PRINT PTAB
|
|
ICALL2 ITALICIZE,STR?500
|
|
PRINTI "! Your flesh bakes in the volcanic heat of the lava underfoot"
|
|
ICALL1 JIGS-UP
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-TASTE
|
|
ICALL PERFORM,V?EAT,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-ADJUST
|
|
CALL2 SPARK?,FALSE-VALUE
|
|
ZERO? STACK \TRUE
|
|
ICALL1 CTHE-PRINT
|
|
PRINTR " doesn't need adjustment."
|
|
|
|
|
|
.FUNCT SILLY-SPEAK?
|
|
EQUAL? PRSO,FALSE-VALUE,ROOMS /FALSE
|
|
FSET? PRSO,PERSON /?CCL5
|
|
ICALL1 NOT-LIKELY
|
|
PRINT STR?509
|
|
ICALL1 PCLEAR
|
|
RTRUE
|
|
?CCL5: EQUAL? PRSO,ME,PRSI,WINNER \?CCL7
|
|
ICALL1 WASTE-OF-TIME
|
|
ICALL1 PCLEAR
|
|
RTRUE
|
|
?CCL7: ICALL2 THIS-IS-IT,PRSO
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-ASK-ABOUT
|
|
CALL1 SILLY-SPEAK?
|
|
ZERO? STACK /?CCL3
|
|
RETURN 2
|
|
?CCL3: EQUAL? WINNER,PRSI \?CCL7
|
|
ICALL1 WASTE-OF-TIME
|
|
RETURN 2
|
|
?CCL7: EQUAL? PRSO,ME /?CCL10
|
|
EQUAL? WINNER,PLAYER \?CND1
|
|
?CCL10: ICALL1 TALK-TO-SELF
|
|
RTRUE
|
|
?CND1: ICALL1 NO-RESPONSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-REPLY,WHO
|
|
CALL1 SILLY-SPEAK?
|
|
ZERO? STACK /?CND1
|
|
RETURN 2
|
|
?CND1: ICALL2 NO-RESPONSE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-QUESTION
|
|
EQUAL? WINNER,PLAYER \?CND1
|
|
ICALL TO-DO-THING-USE,STR?510,STR?511
|
|
RETURN 2
|
|
?CND1: ICALL1 NO-RESPONSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-ALARM
|
|
CALL1 SILLY-SPEAK?
|
|
ZERO? STACK /?CND1
|
|
RETURN 2
|
|
?CND1: EQUAL? PRSO,ROOMS,ME \?CCL7
|
|
PRINT ALREADY
|
|
PRINTR "wide awake."
|
|
?CCL7: FSET? PRSO,LIVING \?CND5
|
|
ICALL1 CTHE-PRINT
|
|
ICALL1 IS-ARE
|
|
PRINTR "already wide awake."
|
|
?CND5: ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-YELL
|
|
EQUAL? PRSO,ROOMS \?CND1
|
|
PRINTI "You begin to get a sore throat."
|
|
CRLF
|
|
EQUAL? HERE,ON-WHARF \TRUE
|
|
PRINT TAB
|
|
ICALL1 NOT-DEAF
|
|
RTRUE
|
|
?CND1: ICALL1 V-SAY
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LAUGH
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
PRINTI "There's a place for people who "
|
|
PRINTB P-PRSA-WORD
|
|
PRINTR " without reason."
|
|
?CCL3: EQUAL? P-PRSA-WORD,W?INSULT,W?OFFEND \?CND1
|
|
FSET? PRSO,MONSTER \?CCL7
|
|
ICALL1 CTHE-PRINT
|
|
PRINTI " look"
|
|
FSET? PRSO,PLURAL /?CND8
|
|
PRINTC 115
|
|
?CND8: PRINTR " mad enough already."
|
|
?CCL7: FSET? PRSO,LIVING \?CND5
|
|
ICALL1 CTHE-PRINT
|
|
PRINTI " remain"
|
|
FSET? PRSO,PLURAL /?CND11
|
|
PRINTC 115
|
|
?CND11: PRINTR " silent. Maybe you should too."
|
|
?CND5: ICALL1 NOT-LIKELY
|
|
PRINTI " would be offended."
|
|
RTRUE
|
|
?CND1: ICALL1 V-SAY
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-NAME
|
|
ZERO? PRSI \?CCL3
|
|
ICALL2 SEE-MANUAL,STR?550
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSI,QWORD /FALSE
|
|
ICALL2 HOLLOW-VOICE,STR?516
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-NAME,OBJ,TBL,WORD,BASE,LEN,PTR,CHAR,COMPLEX,BAD,ANY,X
|
|
ASSIGNED? 'OBJ /?CND1
|
|
SET 'OBJ,PRSO
|
|
?CND1: ICALL1 PCLEAR
|
|
GETP OBJ,P?NAME-TABLE >TBL
|
|
FSET? OBJ,NAMEABLE \?CTR4
|
|
ZERO? TBL \?CCL5
|
|
?CTR4: PRINTI "Alas; "
|
|
ICALL2 THE-PRINT,OBJ
|
|
FSET? PRSO,PERSON \?CND8
|
|
PRINTI " already ha"
|
|
FSET? PRSO,PLURAL \?CCL12
|
|
PRINTI "ve"
|
|
JUMP ?CND10
|
|
?CCL12: PRINTC 115
|
|
?CND10: PRINTR " a Name."
|
|
?CND8: PRINTR " cannot be Named."
|
|
?CCL5: FSET? OBJ,NAMED \?CND3
|
|
PRINTI "You've already assigned a Name to "
|
|
ICALL2 THE-PRINT,OBJ
|
|
PRINTI ". To alter that Name, you must first Unmake "
|
|
ICALL PRONOUN,OBJ,TRUE-VALUE
|
|
PRINTR ", a dangerous procedure requiring years of magical training. Someday, perhaps..."
|
|
?CND3: COPYT TBL,0,13
|
|
MUL P-QWORD,2
|
|
ADD P-LEXV,STACK >BASE
|
|
GETB BASE,2 >LEN
|
|
PUTB AUX-TABLE,0,LEN
|
|
GETB BASE,3
|
|
ADD P-INBUF,STACK >BASE
|
|
ADD AUX-TABLE,1
|
|
COPYT BASE,STACK,LEN
|
|
ADD LEN,1
|
|
PUTB AUX-TABLE,STACK,0
|
|
SET 'PTR,LEN
|
|
SET 'BAD,0
|
|
SET 'ANY,0
|
|
?PRG14: GETB AUX-TABLE,PTR >CHAR
|
|
GRTR? CHAR,96 \?CCL18
|
|
LESS? CHAR,123 \?CCL18
|
|
INC 'ANY
|
|
DLESS? 'PTR,1 \?PRG14
|
|
?REP15: ZERO? ANY /?CTR24
|
|
ZERO? BAD /?CCL25
|
|
?CTR24: ICALL2 HOLLOW-VOICE,STR?551
|
|
RTRUE
|
|
?CCL18: INC 'BAD
|
|
JUMP ?REP15
|
|
?CCL25: GRTR? LEN,11 \?CND23
|
|
ICALL2 HOLLOW-VOICE,STR?552
|
|
RTRUE
|
|
?CND23: SET 'PTR,1
|
|
?PRG29: GETB AUX-TABLE,PTR >CHAR
|
|
EQUAL? PTR,1 \?CND31
|
|
SUB CHAR,32 >CHAR
|
|
?CND31: PUTB TBL,PTR,CHAR
|
|
IGRTR? 'PTR,LEN \?PRG29
|
|
PUTB TBL,0,LEN
|
|
ADD LEN,1
|
|
PUTB TBL,STACK,0
|
|
CALL ADD-VOCAB,AUX-TABLE,OBJ >WORD
|
|
ICALL2 ADD-CAP?,WORD
|
|
FSET OBJ,NAMED
|
|
FSET OBJ,NOARTICLE
|
|
FSET OBJ,PROPER
|
|
BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
|
|
PRINTI "You invoke the Spell of Naming, and the "
|
|
EQUAL? OBJ,BFLY \?CCL37
|
|
FSET? BFLY,MUNGED \?CCL37
|
|
PRINT STR?496
|
|
JUMP ?CND35
|
|
?CCL37: EQUAL? OBJ,PHASE \?CCL41
|
|
EQUAL? HERE,APLANE /?CCL41
|
|
PRINTB W?OUTLINE
|
|
JUMP ?CND35
|
|
?CCL41: PRINTD OBJ
|
|
?CND35: PRINTI " basks in the glow of a new-forged synonym. Henceforth, you may refer to "
|
|
ICALL PRONOUN,OBJ,TRUE-VALUE
|
|
PRINTI " as """
|
|
ICALL2 PRINT-TABLE,TBL
|
|
PRINT PERQ
|
|
RTRUE
|
|
|
|
|
|
.FUNCT ADD-VOCAB,TBL,OBJ,WRD,SYNS,SIBS,ELEN,CNT,BASE,LEN
|
|
GETPT OBJ,P?SYNONYM >SYNS
|
|
GET SYNS,0 >WRD
|
|
GETB VOCAB2,0 >SIBS
|
|
ADD SIBS,1
|
|
ADD VOCAB2,STACK
|
|
GETB STACK,0 >ELEN
|
|
ADD SIBS,2
|
|
ADD VOCAB2,STACK
|
|
GET STACK,0 >CNT
|
|
ADD SIBS,4
|
|
ADD VOCAB2,STACK >BASE
|
|
ZERO? CNT /?CND1
|
|
SUB 0,CNT
|
|
MUL ELEN,STACK
|
|
ADD BASE,STACK >BASE
|
|
?CND1: GETB TBL,0
|
|
ZWSTR TBL,STACK,1,BASE
|
|
ADD WRD,6 >TBL
|
|
SUB ELEN,6 >LEN
|
|
ADD BASE,6
|
|
COPYT TBL,STACK,LEN
|
|
DEC 'CNT
|
|
ADD SIBS,2
|
|
ADD VOCAB2,STACK
|
|
PUT STACK,0,CNT
|
|
PUT SYNS,1,BASE
|
|
RETURN BASE
|
|
|
|
|
|
.FUNCT V-GOODBYE
|
|
ICALL1 V-HELLO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-HELLO
|
|
CALL1 SILLY-SPEAK?
|
|
ZERO? STACK /?CCL3
|
|
RETURN 2
|
|
?CCL3: EQUAL? PRSO,ROOMS \?CND1
|
|
ICALL1 TALK-TO-SELF
|
|
RTRUE
|
|
?CND1: ICALL2 NO-RESPONSE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-WAVE-AT
|
|
ICALL1 V-WHAT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-REQUEST,L
|
|
LOC PRSO >L
|
|
CALL2 VISIBLE?,L
|
|
ZERO? STACK \?CCL3
|
|
ICALL1 CANT-SEE-ANY
|
|
RTRUE
|
|
?CCL3: FSET? L,PERSON \?CCL5
|
|
ICALL2 SPOKEN-TO,L
|
|
ICALL PERFORM,V?ASK-FOR,L,PRSO
|
|
RTRUE
|
|
?CCL5: FSET? PRSO,TAKEABLE /?CND1
|
|
FSET? PRSO,TRYTAKE /?CND1
|
|
ICALL1 NOT-LIKELY
|
|
PRINTR " could be moved."
|
|
?CND1: PRINT DONT
|
|
PRINTI "have to ask for "
|
|
ICALL1 THE-PRINT
|
|
PRINTI ". Just take "
|
|
FSET? PRSO,PLURAL \?CCL10
|
|
PRINTB W?THEM
|
|
JUMP ?CND8
|
|
?CCL10: PRINTB W?IT
|
|
?CND8: FSET? L,SURFACE /?CCL12
|
|
FSET? L,CONTAINER \?CND11
|
|
?CCL12: ICALL2 OUT-OF-LOC,L
|
|
?CND11: PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SASK-FOR
|
|
ICALL PERFORM,V?ASK-FOR,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-ASK-FOR
|
|
CALL1 SILLY-SPEAK?
|
|
ZERO? STACK /?CCL3
|
|
RETURN 2
|
|
?CCL3: EQUAL? WINNER,PRSI /?CCL6
|
|
FSET? PRSI,TAKEABLE /?CND1
|
|
?CCL6: ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CND1: ICALL2 NO-RESPONSE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-TELL
|
|
CALL1 SILLY-SPEAK?
|
|
ZERO? STACK /?CCL3
|
|
RETURN 2
|
|
?CCL3: EQUAL? PRSO,ME \?CCL7
|
|
EQUAL? WINNER,PLAYER \?CND1
|
|
ICALL1 TALK-TO-SELF
|
|
RTRUE
|
|
?CCL7: ICALL2 SEE-CHARACTER,PRSO
|
|
ZERO? P-CONT /?CND1
|
|
SET 'WINNER,PRSO
|
|
RTRUE
|
|
?CND1: ICALL2 NO-RESPONSE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-TELL-ABOUT
|
|
EQUAL? WINNER,PLAYER /?CND1
|
|
ICALL2 CTHE-PRINT,WINNER
|
|
EQUAL? PRSO,ME \?CND3
|
|
PRINTI " shrugs. ""I don't know anything about "
|
|
ICALL1 THEI-PRINT
|
|
PRINTR " you don't know."
|
|
?CND3: PRINTR " snorts. ""Don't be ridiculous."""
|
|
?CND1: ICALL1 V-WHAT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-THANK
|
|
CALL1 SILLY-SPEAK?
|
|
ZERO? STACK /?CCL3
|
|
RETURN 2
|
|
?CCL3: EQUAL? WINNER,PLAYER \TRUE
|
|
EQUAL? PRSO,ME \?CND7
|
|
PRINTI "Self-congratulations"
|
|
ICALL1 WONT-HELP
|
|
RTRUE
|
|
?CND7: PRINTI "There's no need to thank "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-WHO
|
|
EQUAL? WINNER,PLAYER \?CND1
|
|
PRINTR "Who, indeed?"
|
|
?CND1: ICALL1 NO-RESPONSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-WHERE
|
|
EQUAL? WINNER,PLAYER \?CND1
|
|
CALL2 VISIBLE?,PRSO
|
|
ZERO? STACK /?CND3
|
|
FSET? PRSO,PLURAL \?CCL7
|
|
PRINTI "They're "
|
|
JUMP ?CND5
|
|
?CCL7: FSET? PRSO,FEMALE \?CCL9
|
|
PRINTI "She's "
|
|
JUMP ?CND5
|
|
?CCL9: FSET? PRSO,PERSON \?CCL11
|
|
PRINTI "He's "
|
|
JUMP ?CND5
|
|
?CCL11: PRINTI "It's "
|
|
?CND5: PRINTR "right here."
|
|
?CND3: PRINTR "Where, indeed?"
|
|
?CND1: ICALL1 NO-RESPONSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-WHAT
|
|
EQUAL? WINNER,PLAYER \?CND1
|
|
PRINTR "What, indeed?"
|
|
?CND1: ICALL1 NO-RESPONSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT NO-RESPONSE,OBJ
|
|
ASSIGNED? 'OBJ /?CND1
|
|
SET 'OBJ,WINNER
|
|
?CND1: ICALL1 PCLEAR
|
|
ICALL2 SEE-CHARACTER,OBJ
|
|
ICALL2 CTHE-PRINT,OBJ
|
|
PRINT STR?553
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-THROUGH,X
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
LOC PLAYER >X
|
|
FSET? X,VEHICLE \?CND4
|
|
ICALL PERFORM,V?ENTER,X
|
|
RTRUE
|
|
?CND4: ICALL2 DO-WALK,P?IN
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,VEHICLE \?CCL7
|
|
ICALL PERFORM,V?ENTER,PRSO
|
|
RTRUE
|
|
?CCL7: FSET? PRSO,LIVING \?CND1
|
|
ICALL1 V-RAPE
|
|
RTRUE
|
|
?CND1: ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-STHROW
|
|
ICALL PERFORM,V?THROW,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-THROW-OVER
|
|
CALL1 PRE-PUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-THROW-OVER
|
|
ICALL1 WASTE-OF-TIME
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-THROW
|
|
CALL1 PRE-PUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-THROW
|
|
FSET? PRSI,DOORLIKE \?CCL3
|
|
ICALL1 WASTE-OF-TIME
|
|
RTRUE
|
|
?CCL3: CALL1 IDROP
|
|
ZERO? STACK /TRUE
|
|
PRINTI "Thrown"
|
|
PRINT PTAB
|
|
ICALL1 CTHE-PRINT
|
|
PRINTI " lands on the "
|
|
FSET? HERE,INDOORS \?CCL7
|
|
PRINTD FLOOR
|
|
JUMP ?CND5
|
|
?CCL7: PRINTD GROUND
|
|
?CND5: PRINTR " nearby."
|
|
|
|
|
|
.FUNCT V-TIE
|
|
PRINT IMPOSSIBLY
|
|
PRINTI "tie "
|
|
ICALL1 THE-PRINT
|
|
ZERO? PRSI /?CND1
|
|
PRINT STO
|
|
ICALL1 THEI-PRINT
|
|
?CND1: PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-TIE-UP
|
|
PRINT CANT
|
|
PRINTR "tie anything with that."
|
|
|
|
|
|
.FUNCT V-TURN
|
|
FSET? PRSO,TAKEABLE /?CCL3
|
|
FSET? PRSO,TRYTAKE /?CCL3
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL3: CALL2 SPARK?,FALSE-VALUE
|
|
ZERO? STACK \TRUE
|
|
ICALL2 HACK-HACK,STR?554
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-TURN-TO
|
|
CALL2 VISIBLE?,PRSO
|
|
ZERO? STACK /?CND1
|
|
ICALL PERFORM,V?EXAMINE,PRSO
|
|
RTRUE
|
|
?CND1: PRINT DONT
|
|
PRINTI "see "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-WALK-AROUND
|
|
ICALL1 PCLEAR
|
|
PRINTR "Which way do you want to go?"
|
|
|
|
|
|
.FUNCT V-WALK-TO
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
ICALL1 V-WALK-AROUND
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,INTDIR \?CCL5
|
|
ICALL2 DO-WALK,P-DIRECTION
|
|
RTRUE
|
|
?CCL5: EQUAL? PRSO,RIGHT,LEFT \?CND1
|
|
ICALL1 MORE-SPECIFIC
|
|
RTRUE
|
|
?CND1: ICALL1 V-FOLLOW
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-WAIT,N,X
|
|
ASSIGNED? 'N /?CND1
|
|
SET 'N,3
|
|
?CND1: PRINTI "Time passes."
|
|
CRLF
|
|
?PRG3: ZERO? X \TRUE
|
|
LESS? N,1 /TRUE
|
|
CALL1 CLOCKER
|
|
ZERO? STACK /?CND5
|
|
SET 'X,TRUE-VALUE
|
|
SET 'CLOCK-WAIT?,TRUE-VALUE
|
|
?CND5: DEC 'N
|
|
JUMP ?PRG3
|
|
|
|
|
|
.FUNCT V-WAIT-FOR
|
|
EQUAL? PRSO,INTNUM \?CCL3
|
|
ZERO? P-NUMBER \?CCL6
|
|
SET 'CLOCK-WAIT?,TRUE-VALUE
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL6: GRTR? P-NUMBER,120 \?CND4
|
|
SET 'CLOCK-WAIT?,TRUE-VALUE
|
|
PRINTR "[That's too long to WAIT.]"
|
|
?CND4: SUB P-NUMBER,1
|
|
ICALL2 V-WAIT,STACK
|
|
RTRUE
|
|
?CCL3: CALL2 VISIBLE?,PRSO
|
|
ZERO? STACK /?CND1
|
|
ICALL1 CTHE-PRINT
|
|
ICALL1 IS-ARE
|
|
PRINTR "already here."
|
|
?CND1: PRINTR "You may be waiting quite a while."
|
|
|
|
|
|
.FUNCT V-WEAR,X
|
|
IN? PRSO,WINNER \?CCL3
|
|
FSET? PRSO,WORN \?CCL3
|
|
PRINT ALREADY
|
|
PRINTI "wearing "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,CLOTHING /?CCL7
|
|
PRINT CANT
|
|
PRINTI "wear "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL7: CALL1 DONT-HAVE?
|
|
ZERO? STACK \TRUE
|
|
ICALL1 PUTON
|
|
GETP PRSO,P?EFFECT >X
|
|
ZERO? X /TRUE
|
|
ICALL UPDATE-STAT,X,ARMOR-CLASS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PUTON
|
|
BOR NEW-DBOX,SHOWING-INV >NEW-DBOX
|
|
FSET PRSO,WORN
|
|
PRINTI "You put on "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT WEARING-MAGIC?,OBJ
|
|
IN? OBJ,PLAYER \FALSE
|
|
FSET? OBJ,WORN \FALSE
|
|
FSET? OBJ,NEUTRALIZED /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-WIND
|
|
PRINT CANT
|
|
PRINTI "wind "
|
|
ICALL1 PRINTA
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT YOU-CLIMB-UP,NOCR
|
|
PRINT CYOU
|
|
RANDOM 100
|
|
LESS? 33,STACK /?CCL3
|
|
PRINTB W?ASCEND
|
|
JUMP ?CND1
|
|
?CCL3: RANDOM 100
|
|
LESS? 50,STACK /?CCL6
|
|
PRINTB W?CLAMBER
|
|
JUMP ?CND4
|
|
?CCL6: PRINTB W?CLIMB
|
|
?CND4: PRINTI " up"
|
|
?CND1: PRINTI " the steps."
|
|
CRLF
|
|
ZERO? NOCR \TRUE
|
|
ZERO? VERBOSITY /TRUE
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT HACK-HACK,STR
|
|
PRINT STR
|
|
PRINTC SP
|
|
ICALL1 THE-PRINT
|
|
PRINTI " would"
|
|
CALL2 PICK-NEXT,HO-HUM
|
|
PRINT STACK
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT IMPOSSIBLE
|
|
CALL2 PICK-NEXT,YUKS
|
|
PRINT STACK
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TOO-DARK
|
|
ICALL1 PCLEAR
|
|
PRINTR "It's too dark to see."
|
|
|
|
|
|
.FUNCT ITS-ALREADY,STR
|
|
PRINTI "It's already "
|
|
PRINT STR
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT REFERRING
|
|
PRINTR "[To what are you referring?]"
|
|
|
|
|
|
.FUNCT MORE-SPECIFIC
|
|
ICALL1 NYMPH-APPEARS
|
|
PRINTI "You really must be more specific"
|
|
PRINT STR?515
|
|
RTRUE
|
|
|
|
|
|
.FUNCT WASTE-OF-TIME
|
|
CALL2 PICK-NEXT,POINTLESS
|
|
PRINT STACK
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT WHAT-TALK?,WHO,OBJ
|
|
FSET WHO,SEEN
|
|
CALL2 VISIBLE?,OBJ
|
|
ZERO? STACK \FALSE
|
|
ICALL2 PERPLEXED,WHO
|
|
PRINTI "I'm afraid I'm not sure"
|
|
ICALL2 WHO-WHAT,OBJ
|
|
PRINTR "you're talking about."""
|
|
|
|
|
|
.FUNCT PERPLEXED,WHO,STR,X
|
|
ICALL1 PCLEAR
|
|
CALL2 PICK-NEXT,PUZZLES >STR
|
|
ICALL2 CTHE-PRINT,WHO
|
|
RANDOM 100 >X
|
|
LESS? X,33 \?CCL3
|
|
PRINTI " gives you a "
|
|
PRINT STR
|
|
PRINTI "ed look"
|
|
JUMP ?CND1
|
|
?CCL3: LESS? X,67 \?CCL5
|
|
RANDOM 100
|
|
LESS? 50,STACK /?CCL8
|
|
PRINTI " look"
|
|
JUMP ?CND6
|
|
?CCL8: PRINTI " appear"
|
|
?CND6: PRINTI "s "
|
|
RANDOM 100
|
|
LESS? 50,STACK /?CND9
|
|
RANDOM 100
|
|
LESS? 50,STACK /?CCL13
|
|
PRINTI "somewhat "
|
|
JUMP ?CND9
|
|
?CCL13: PRINTI "a bit "
|
|
?CND9: PRINT STR
|
|
PRINTI "ed"
|
|
JUMP ?CND1
|
|
?CCL5: PRINTI " looks at you with a "
|
|
PRINT STR
|
|
PRINTI "ed expression"
|
|
?CND1: PRINTI ". """
|
|
RTRUE
|
|
|
|
|
|
.FUNCT WHO-WHAT,OBJ
|
|
PRINTI " wh"
|
|
FSET? OBJ,PERSON \?CCL3
|
|
PRINTI "o "
|
|
RTRUE
|
|
?CCL3: FSET? OBJ,PLACE \?CND1
|
|
PRINTI "ere "
|
|
RTRUE
|
|
?CND1: PRINTI "at "
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SWRAP
|
|
ICALL PERFORM,V?WRAP-AROUND,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-WRAP-AROUND
|
|
PRINT IMPOSSIBLY
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 THE-PRINT
|
|
PRINTI " around "
|
|
ICALL1 THEI-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-DRESS
|
|
EQUAL? PRSO,ROOMS,ME \?CCL3
|
|
PRINTI "Try putting "
|
|
PRINTB W?SOMETHING
|
|
PRINTR " on."
|
|
?CCL3: FSET? PRSO,PERSON \?CND1
|
|
ICALL1 CTHE-PRINT
|
|
PRINTI " has all the clothing "
|
|
FSET? PRSO,FEMALE \?CND5
|
|
PRINTC 115
|
|
?CND5: PRINTR "he needs."
|
|
?CND1: PRINT CANT
|
|
PRINTI "dress "
|
|
ICALL1 PRINTA
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-UNDRESS,ANY,X,OBJ,NXT
|
|
EQUAL? PRSO,ROOMS,ME,WINNER \?CCL3
|
|
FIRST? WINNER >OBJ /?PRG5
|
|
?PRG5: ZERO? OBJ /?REP6
|
|
NEXT? OBJ >NXT /?BOGUS9
|
|
?BOGUS9: FSET? OBJ,WORN \?CND10
|
|
SET 'ANY,TRUE-VALUE
|
|
SET 'P-MULT?,TRUE-VALUE
|
|
CALL PERFORM,V?TAKE-OFF,OBJ >X
|
|
EQUAL? X,M-FATAL /?REP6
|
|
?CND10: SET 'OBJ,NXT
|
|
JUMP ?PRG5
|
|
?REP6: ZERO? ANY /?CND14
|
|
SET 'P-MULT?,FALSE-VALUE
|
|
ZERO? X /TRUE
|
|
RETURN X
|
|
?CND14: PRINT STR?549
|
|
PRINTR "anything unusual."
|
|
?CCL3: FSET? PRSO,PERSON \?CND1
|
|
ICALL1 INAPPROPRIATE
|
|
RTRUE
|
|
?CND1: PRINT CANT
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 PRINTA
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-HANG,X
|
|
EQUAL? HERE,OUTSIDE-PUB,ON-BRIDGE \?CND1
|
|
SET 'X,PUB-SIGN
|
|
EQUAL? HERE,ON-BRIDGE \?CND3
|
|
SET 'X,ZBRIDGE
|
|
?CND3: PRINTI "[on "
|
|
ICALL2 THE-PRINT,X
|
|
PRINT BRACKET
|
|
ICALL PERFORM,V?HANG-ON,PRSO,X
|
|
RTRUE
|
|
?CND1: PRINT NOTHING
|
|
PRINTI "here on which to "
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-HANG-ON
|
|
ICALL1 CTHEI-PRINT
|
|
ICALL2 IS-ARE,PRSI
|
|
PRINTI "hardly suitable for "
|
|
PRINTB P-PRSA-WORD
|
|
PRINTR "ing things."
|
|
|
|
|
|
.FUNCT V-LURK
|
|
PRINTI "Leave the "
|
|
PRINTB P-PRSA-WORD
|
|
PRINTR "ing to the grues."
|
|
|
|
|
|
.FUNCT V-SAY
|
|
GET P-LEXV,P-CONT
|
|
CALL2 MAGICWORD?,STACK
|
|
ZERO? STACK \?CND1
|
|
ICALL1 TALK-TO-SELF
|
|
?CND1: ICALL1 PCLEAR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-MAGIC
|
|
CALL1 MAGICWORD?
|
|
ZERO? STACK \TRUE
|
|
EQUAL? P-PRSA-WORD,W?DISPEL \?CND1
|
|
ICALL1 HOW?
|
|
RTRUE
|
|
?CND1: ICALL2 NOTHING-HAPPENS,FALSE-VALUE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-ERASE-WITH
|
|
PRINT CANT
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 THE-PRINT
|
|
EQUAL? PRSI,HANDS /?CND1
|
|
PRINT WITH
|
|
ICALL1 THEI-PRINT
|
|
?CND1: PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-WRITE-ON
|
|
PRINTI "It would be difficult to "
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 PRINTA
|
|
PRINT SON
|
|
ICALL1 THEI-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-WRITE-WITH
|
|
ICALL2 NOT-LIKELY,PRSI
|
|
PRINTI " could "
|
|
PRINTB P-PRSA-WORD
|
|
PRINTI " anything on "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-CRANK
|
|
EQUAL? PRSO,ROOMS \?CND1
|
|
CALL2 VISIBLE?,GURDY
|
|
ZERO? STACK /?CND3
|
|
PRINTC 91
|
|
ICALL2 THE-PRINT,GURDY
|
|
PRINT BRACKET
|
|
SET 'LAST-CRANK-DIR,FALSE-VALUE
|
|
ICALL1 TURN-GURDY
|
|
RTRUE
|
|
?CND3: PRINT NOTHING
|
|
PRINTR "here to crank."
|
|
?CND1: PRINT CANT
|
|
PRINTI "crank "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-UNMAKE
|
|
PRINTR "Such magic lies far beyond your meager abilities."
|
|
|
|
|
|
.FUNCT V-SPELLS
|
|
PRINT DONT
|
|
PRINTI "know any. Few "
|
|
ICALL1 ANNOUNCE-RANK
|
|
PRINTR "s do."
|
|
|
|
|
|
.FUNCT DESCRIBE-MONEY,OBJ
|
|
PRINTI "your zorkmid"
|
|
EQUAL? LOOT,1 /TRUE
|
|
PRINTC 115
|
|
RTRUE
|
|
|
|
|
|
.FUNCT MONEY-F,X
|
|
ZERO? NOW-PRSI? /?CCL3
|
|
EQUAL? PRSA,V?TRADE-FOR \FALSE
|
|
EQUAL? HERE,IN-MAGICK,IN-BOUTIQUE,IN-WEAPON \FALSE
|
|
ICALL2 TRADE-FOR-LOOT,PRSO
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSA,V?SPEND /TRUE
|
|
EQUAL? PRSA,V?FIND,V?BUY \?CCL11
|
|
PRINTR "Good luck."
|
|
?CCL11: ZERO? LOOT \?CCL13
|
|
PRINT STR?525
|
|
RETURN 2
|
|
?CCL13: EQUAL? PRSA,V?EXAMINE,V?COUNT \?CCL17
|
|
ICALL1 SAY-CASH
|
|
RTRUE
|
|
?CCL17: EQUAL? PRSA,V?WHAT \?CCL19
|
|
PRINTR "Zorkmids are the local unit of currency."
|
|
?CCL19: EQUAL? PRSA,V?DROP,V?EMPTY /?CCL20
|
|
INTBL? PRSA,PUTVERBS,NUMPUTS >X \?CND1
|
|
?CCL20: ICALL1 BENJAMIN
|
|
RTRUE
|
|
?CND1: ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SAY-CASH
|
|
PRINTI "You have "
|
|
ICALL1 SAY-LOOT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT NOT-ENOUGH-LOOT?,AMT
|
|
GRTR? AMT,LOOT \FALSE
|
|
PRINTI "You only have "
|
|
ICALL1 SAY-LOOT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SAY-LOOT,VAL
|
|
ASSIGNED? 'VAL /?CND1
|
|
SET 'VAL,LOOT
|
|
?CND1: PRINTN VAL
|
|
PRINTI " zorkmid"
|
|
EQUAL? VAL,1 /TRUE
|
|
PRINTC 115
|
|
RTRUE
|
|
|
|
|
|
.FUNCT BENJAMIN
|
|
PRINTR "A zorkmid saved is a zorkmid earned."
|
|
|
|
|
|
.FUNCT GIVING-LOOT?,OBJ,WHO
|
|
EQUAL? OBJ,MONEY,INTNUM \FALSE
|
|
ZERO? LOOT \?CND1
|
|
PRINT STR?525
|
|
RTRUE
|
|
?CND1: SET 'OBJ,LOOT
|
|
EQUAL? P-NUMBER,-1 /?CND5
|
|
CALL2 NOT-ENOUGH-LOOT?,P-NUMBER
|
|
ZERO? STACK \TRUE
|
|
SET 'OBJ,P-NUMBER
|
|
?CND5: ICALL2 CTHE-PRINT,WHO
|
|
PRINTI " gives you a bewildered look, shrugs, and accepts "
|
|
ICALL2 DPRINT,MONEY
|
|
SUB LOOT,OBJ >LOOT
|
|
PRINTR " without question."
|
|
|
|
|
|
.FUNCT PRE-BUY
|
|
ZERO? LIT? \?CCL3
|
|
ICALL1 TOO-DARK
|
|
RTRUE
|
|
?CCL3: ZERO? PRSI \FALSE
|
|
SET 'PRSI,MONEY
|
|
PRINTI "[with "
|
|
ICALL2 DPRINT,PRSI
|
|
PRINT BRACKET
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-SBUY
|
|
ICALL PERFORM,V?BUY,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-BUY
|
|
CALL2 VISIBLE?,PRSO
|
|
ZERO? STACK \?CCL3
|
|
ICALL1 NONE-FOR-SALE
|
|
RETURN 2
|
|
?CCL3: CALL1 HELD?
|
|
ZERO? STACK /?CCL7
|
|
ICALL1 ALREADY-HAVE
|
|
RTRUE
|
|
?CCL7: EQUAL? HERE,IN-MAGICK,IN-WEAPON,IN-BOUTIQUE \?CND1
|
|
ICALL1 BUY-X-WITH-Y
|
|
RTRUE
|
|
?CND1: ICALL1 NOT-LIKELY
|
|
PRINTR " is for sale."
|
|
|
|
|
|
.FUNCT NONE-FOR-SALE
|
|
PRINTR "There are none here to buy."
|
|
|
|
|
|
.FUNCT V-SPEND
|
|
EQUAL? PRSO,ROOMS,MONEY,INTNUM \?CND1
|
|
PRINTI "Easily done"
|
|
EQUAL? HERE,IN-MAGICK,IN-BOUTIQUE,IN-WEAPON \?CND3
|
|
PRINTI ", especially here"
|
|
?CND3: PRINT PERIOD
|
|
RTRUE
|
|
?CND1: ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-PAY
|
|
ICALL PERFORM,V?GIVE,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-BUY-FROM
|
|
CALL2 VISIBLE?,PRSO
|
|
ZERO? STACK \?CCL3
|
|
ICALL1 NONE-FOR-SALE
|
|
RETURN 2
|
|
?CCL3: CALL1 HELD?
|
|
ZERO? STACK /?CCL7
|
|
ICALL1 ALREADY-HAVE
|
|
RTRUE
|
|
?CCL7: EQUAL? PRSI,OWOMAN,MCASE,BCASE /?CCL8
|
|
EQUAL? PRSI,WCASE \?CND1
|
|
?CCL8: ICALL1 BUY-X-WITH-Y
|
|
RTRUE
|
|
?CND1: ICALL2 NOT-LIKELY,PRSI
|
|
PRINTI " could sell you "
|
|
ICALL1 THE-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-TRADE-FOR
|
|
CALL1 PRE-SELL-TO
|
|
ZERO? STACK \TRUE
|
|
IN? PRSI,WINNER \FALSE
|
|
ICALL2 ALREADY-HAVE,PRSI
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-TRADE-FOR,L
|
|
LOC PRSI >L
|
|
ZERO? L \?CCL3
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL3: EQUAL? HERE,IN-MAGICK,IN-BOUTIQUE,IN-WEAPON \?CCL5
|
|
ICALL BUY-X-WITH-Y,PRSI,PRSO
|
|
RTRUE
|
|
?CCL5: FSET? L,PERSON \?CND1
|
|
ICALL2 CTHE-PRINT,L
|
|
PRINTI " seems reluctant to give up "
|
|
ICALL1 THEI-PRINT
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CND1: PRINTI "Why not just pick up "
|
|
ICALL1 THEI-PRINT
|
|
PRINTR " instead?"
|
|
|
|
|
|
.FUNCT PRE-SELL-TO
|
|
ZERO? PRSI \?CND1
|
|
IN? OWOMAN,HERE \?CND1
|
|
ICALL PERFORM,PRSA,PRSO,OWOMAN
|
|
RTRUE
|
|
?CND1: EQUAL? FALSE-VALUE,PRSO,PRSI \?CCL7
|
|
ICALL1 REFERRING
|
|
RTRUE
|
|
?CCL7: ZERO? LIT? \?CCL9
|
|
ICALL1 TOO-DARK
|
|
RTRUE
|
|
?CCL9: EQUAL? PRSO,PRSI \?CCL11
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL11: EQUAL? PRSI,MONEY,INTNUM /FALSE
|
|
IN? PRSI,GLOBAL-OBJECTS /?CTR14
|
|
FSET? PRSO,TAKEABLE /?CCL15
|
|
FSET? PRSO,TRYTAKE /?CCL15
|
|
?CTR14: ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL15: FSET? PRSO,WORN \FALSE
|
|
IN? PRSO,WINNER \FALSE
|
|
CALL1 TAKE-OFF-PRSO-FIRST?
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SELL-TO
|
|
EQUAL? WINNER,PLAYER /?CCL3
|
|
ICALL2 NOT-LIKELY,WINNER
|
|
ICALL1 IS-ARE
|
|
PRINTI "interested in selling anything"
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSI,PRSO,ME,WINNER \?CCL5
|
|
ICALL1 IMPOSSIBLE
|
|
RTRUE
|
|
?CCL5: FSET? PRSI,PERSON /?CND1
|
|
ICALL2 NOT-LIKELY,PRSI
|
|
PRINTR " would buy anything."
|
|
?CND1: ICALL2 NOT-A,STR?555
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SSELL-TO
|
|
ICALL PERFORM,V?SELL-TO,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT BUY-X-WITH-Y,X,Y,CASE,VAL,OFFER,CHANGE
|
|
ASSIGNED? 'X /?CND1
|
|
SET 'X,PRSO
|
|
?CND1: ASSIGNED? 'Y /?CND3
|
|
SET 'Y,PRSI
|
|
?CND3: GETP HERE,P?THIS-CASE >CASE
|
|
CALL2 VISIBLE?,X
|
|
ZERO? STACK \?CCL7
|
|
PRINTI """I don't have any for sale,"" admits "
|
|
ICALL2 THE-PRINT,OWOMAN
|
|
PRINT PERIOD
|
|
RTRUE
|
|
?CCL7: IN? X,CASE /?CND5
|
|
PRINTI """Only the items in "
|
|
ICALL2 THE-PRINT,CASE
|
|
PRINTR " are for sale."""
|
|
?CND5: GETP X,P?VALUE >VAL
|
|
LESS? VAL,1 \?CCL11
|
|
ICALL2 NO-WORTH,X
|
|
RTRUE
|
|
?CCL11: EQUAL? Y,FALSE-VALUE,MONEY,INTNUM \?CCL13
|
|
SET 'OFFER,P-NUMBER
|
|
ZERO? LOOT \?CCL16
|
|
PRINT STR?525
|
|
RTRUE
|
|
?CCL16: ZERO? Y /?CTR17
|
|
EQUAL? P-NUMBER,-1 \?CCL18
|
|
?CTR17: SET 'OFFER,LOOT
|
|
JUMP ?CND14
|
|
?CCL18: CALL2 NOT-ENOUGH-LOOT?,OFFER
|
|
ZERO? STACK \TRUE
|
|
?CND14: LESS? OFFER,VAL \?CND22
|
|
PRINT CTHELADY
|
|
PRINTI " shakes her head firmly. ""My price is "
|
|
ICALL2 SAY-LOOT,VAL
|
|
PRINTR ", dear."""
|
|
?CND22: DIV VAL,2
|
|
PUTP X,P?VALUE,STACK
|
|
EQUAL? P-NUMBER,-1 /?CCL26
|
|
GRTR? OFFER,VAL \?CCL26
|
|
SUB LOOT,P-NUMBER >LOOT
|
|
PRINT STR?556
|
|
JUMP ?CND24
|
|
?CCL26: SUB OFFER,VAL >LOOT
|
|
PRINTI """Done"
|
|
?CND24: PRINTI ","" says "
|
|
ICALL2 THE-PRINT,OWOMAN
|
|
PRINTI ", taking your zorkmid"
|
|
EQUAL? VAL,1 /?CND29
|
|
PRINTC 115
|
|
?CND29: ICALL2 SOLD,X
|
|
RTRUE
|
|
?CCL13: CALL2 NO-DEAL?,Y
|
|
ZERO? STACK \TRUE
|
|
IN? Y,GLOBAL-OBJECTS \?CND9
|
|
PRINTR """Don't be silly."""
|
|
?CND9: GETP Y,P?VALUE >OFFER
|
|
ZERO? OFFER \?CCL36
|
|
ICALL2 NO-WORTH,Y
|
|
RTRUE
|
|
?CCL36: LESS? OFFER,VAL \?CND34
|
|
ICALL2 WORTHLESS,Y
|
|
PRINTI " only worth "
|
|
ICALL2 SAY-LOOT,OFFER
|
|
PRINTI ". This "
|
|
ICALL2 DPRINT,X
|
|
PRINTI " is valued at "
|
|
ICALL2 SAY-LOOT,VAL
|
|
PRINTR "!"""
|
|
?CND34: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
|
|
MOVE Y,CASE
|
|
FSET Y,USED
|
|
ADD OFFER,OFFER
|
|
PUTP Y,P?VALUE,STACK
|
|
DIV VAL,2
|
|
PUTP X,P?VALUE,STACK
|
|
GRTR? OFFER,VAL \?CCL40
|
|
PRINT STR?556
|
|
JUMP ?CND38
|
|
?CCL40: PRINTI """Done"
|
|
?CND38: PRINTI ","" says "
|
|
ICALL2 THE-PRINT,OWOMAN
|
|
PRINTI ", taking "
|
|
ICALL2 SAY-YOUR,Y
|
|
GRTR? OFFER,VAL \?CND41
|
|
SUB OFFER,VAL >CHANGE
|
|
ADD LOOT,CHANGE >LOOT
|
|
ICALL SOLD,X,CHANGE
|
|
PRINT STR?557
|
|
ICALL2 SAY-LOOT,CHANGE
|
|
PRINTR " in change."
|
|
?CND41: ICALL2 SOLD,X
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SOLD,OBJ,CHANGE
|
|
BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
|
|
ICALL2 THIS-IS-IT,OBJ
|
|
FSET OBJ,USED
|
|
ZERO? CHANGE /?CCL3
|
|
PRINTI ", "
|
|
JUMP ?CND1
|
|
?CCL3: PRINT AND
|
|
?CND1: CALL2 ITAKE,FALSE-VALUE
|
|
ZERO? STACK /?CCL6
|
|
MOVE OBJ,PLAYER
|
|
PRINTI "handing you "
|
|
ICALL2 THE-PRINT,OBJ
|
|
JUMP ?CND4
|
|
?CCL6: GETP HERE,P?THIS-CASE
|
|
GETP STACK,P?DNUM
|
|
MOVE OBJ,STACK
|
|
PRINTI "setting "
|
|
ICALL2 THE-PRINT,OBJ
|
|
PRINT SON
|
|
ICALL2 THE-PRINT,MCASE
|
|
?CND4: ZERO? CHANGE \TRUE
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT NO-WORTH,OBJ
|
|
ICALL2 WORTHLESS,OBJ
|
|
PRINTR " not worth anything here."""
|
|
|
|
|
|
.FUNCT WORTHLESS,OBJ
|
|
PRINT CTHELADY
|
|
PRINT GLANCES-AT
|
|
ICALL2 THE-PRINT,OBJ
|
|
PRINTI " and shakes her head. """
|
|
FSET? OBJ,FEMALE \?CCL3
|
|
PRINTI "She's"
|
|
RTRUE
|
|
?CCL3: FSET? OBJ,LIVING \?CCL5
|
|
PRINTI "He's"
|
|
RTRUE
|
|
?CCL5: FSET? OBJ,PLURAL \?CCL7
|
|
PRINTI "They're"
|
|
RTRUE
|
|
?CCL7: PRINTI "That's"
|
|
RTRUE
|
|
|
|
|
|
.FUNCT NO-DEAL?,OBJ
|
|
EQUAL? OBJ,HELM,RUG,CAKE \FALSE
|
|
PRINTI """No,"" replies "
|
|
ICALL2 THE-PRINT,OWOMAN
|
|
PRINTR ", shaking her head firmly. ""I don't think I want to carry this."""
|
|
|
|
|
|
.FUNCT TRADE-FOR-LOOT,OBJ,VAL,CASE
|
|
IN? OBJ,PLAYER /?CND1
|
|
LOC OBJ
|
|
ICALL TAKE-FIRST,OBJ,STACK
|
|
RTRUE
|
|
?CND1: CALL2 NO-DEAL?,OBJ
|
|
ZERO? STACK \TRUE
|
|
GETP OBJ,P?VALUE >VAL
|
|
GETP HERE,P?THIS-CASE >CASE
|
|
PRINT CTHELADY
|
|
PRINTI " examines "
|
|
ICALL2 THE-PRINT,OBJ
|
|
ZERO? VAL \?CND5
|
|
PRINTR " and hands it back to you with a shrug. ""Worthless."""
|
|
?CND5: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
|
|
ADD VAL,LOOT >LOOT
|
|
PRINTI " critically. ""Okay,"" she agrees, "
|
|
EQUAL? OBJ,TRUFFLE \?CCL9
|
|
ICALL2 VANISH,OBJ
|
|
PRINTI "popping "
|
|
ICALL2 THE-PRINT,OBJ
|
|
PRINTI " in her mouth"
|
|
JUMP ?CND7
|
|
?CCL9: ADD VAL,VAL
|
|
PUTP OBJ,P?VALUE,STACK
|
|
MOVE OBJ,CASE
|
|
PRINTI "stashing it away in "
|
|
ICALL2 THE-PRINT,CASE
|
|
?CND7: PRINT STR?557
|
|
ICALL2 SAY-LOOT,VAL
|
|
PRINTR " in return."
|
|
|
|
|
|
.FUNCT V-ZOOM,WRD
|
|
EQUAL? PRSO,ROOMS /?CCL3
|
|
ICALL BAD-COMMAND,STR?558,STR?559
|
|
RTRUE
|
|
?CCL3: ZERO? DMODE \?CCL5
|
|
ICALL BAD-COMMAND,STR?558,STR?560
|
|
RTRUE
|
|
?CCL5: EQUAL? MAP-ROUTINE,CLOSE-MAP \?CCL7
|
|
SET 'MAP-ROUTINE,FAR-MAP
|
|
SET 'WRD,W?OUT
|
|
JUMP ?CND1
|
|
?CCL7: SET 'MAP-ROUTINE,CLOSE-MAP
|
|
SET 'WRD,W?IN
|
|
?CND1: SET 'SAME-COORDS,FALSE-VALUE
|
|
PRINTI "[Zooming "
|
|
PRINTB WRD
|
|
PRINTI ".]"
|
|
CRLF
|
|
ICALL1 NEW-MAP
|
|
ICALL1 SHOW-MAP
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-PRIORITY-ON
|
|
CALL1 BAD-PRIOR?
|
|
ZERO? STACK \TRUE
|
|
EQUAL? PRIOR,IN-DBOX \?CCL5
|
|
PRINTI "already "
|
|
JUMP ?CND1
|
|
?CCL5: SET 'PRIOR,IN-DBOX
|
|
PRINTI "now "
|
|
?CND1: PRINTI "set to "
|
|
ICALL1 SAY-PRIORITY
|
|
PRINTR ".]"
|
|
|
|
|
|
.FUNCT SAY-PRIORITY
|
|
EQUAL? PRIOR,SHOWING-ROOM \?CCL3
|
|
PRINTI "Room Descriptions"
|
|
RTRUE
|
|
?CCL3: EQUAL? PRIOR,SHOWING-INV \?CCL5
|
|
PRINTI "Inventory"
|
|
RTRUE
|
|
?CCL5: PRINTI "Player Status"
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-PRIORITY-OFF
|
|
CALL1 BAD-PRIOR?
|
|
ZERO? STACK \TRUE
|
|
ZERO? PRIOR \?CCL5
|
|
PRINTI "already "
|
|
JUMP ?CND1
|
|
?CCL5: SET 'PRIOR,0
|
|
PRINTI "now "
|
|
?CND1: PRINTR "disabled.]"
|
|
|
|
|
|
.FUNCT BAD-PRIOR?
|
|
EQUAL? PRSO,ROOMS /?CCL3
|
|
ICALL BAD-COMMAND,STR?561,STR?559
|
|
RTRUE
|
|
?CCL3: ZERO? DMODE \?CND1
|
|
ICALL BAD-COMMAND,STR?561,STR?560
|
|
RTRUE
|
|
?CND1: PRINTI "[Display priority is "
|
|
RFALSE
|
|
|
|
|
|
.FUNCT BAD-COMMAND,STR1,STR2
|
|
PRINTC 91
|
|
PRINT CANT
|
|
PRINTI "use the "
|
|
PRINT STR1
|
|
PRINTI " command "
|
|
PRINT STR2
|
|
PRINTR ".]"
|
|
|
|
|
|
.FUNCT V-MODE,STR
|
|
SET 'STR,STR?562
|
|
ZERO? DMODE \?CCL3
|
|
SET 'STR,STR?563
|
|
SET 'DMODE,TRUE-VALUE
|
|
JUMP ?CND1
|
|
?CCL3: SET 'DMODE,FALSE-VALUE
|
|
?CND1: ICALL1 V-REFRESH
|
|
CRLF
|
|
PRINTC 91
|
|
PRINT STR
|
|
PRINTI " display mode.]"
|
|
CRLF
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-VERBOSE
|
|
SET 'VERBOSITY,2
|
|
PRINTI "[Maximum verbosity"
|
|
ICALL1 FOR-SCRIPTING
|
|
ZERO? DMODE \TRUE
|
|
CRLF
|
|
ICALL1 V-LOOK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-BRIEF
|
|
SET 'VERBOSITY,1
|
|
PRINTI "[Brief descriptions"
|
|
ICALL1 FOR-SCRIPTING
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SUPER-BRIEF
|
|
SET 'VERBOSITY,0
|
|
PRINTI "[Superbrief descriptions"
|
|
ICALL1 FOR-SCRIPTING
|
|
RTRUE
|
|
|
|
|
|
.FUNCT FOR-SCRIPTING
|
|
ZERO? DMODE /?CND1
|
|
PRINTI " for transcripting"
|
|
?CND1: PRINTR ".]"
|
|
|
|
|
|
.FUNCT V-QUIT
|
|
PRINT STR?564
|
|
PRINTI "leave the story now?"
|
|
CALL1 YES?
|
|
ZERO? STACK /?CND1
|
|
CRLF
|
|
QUIT
|
|
RTRUE
|
|
?CND1: ICALL1 CONTINUING
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CONTINUING
|
|
CRLF
|
|
PRINTR "[Continuing.]"
|
|
|
|
|
|
.FUNCT V-RESTART
|
|
ICALL1 V-SCORE
|
|
CRLF
|
|
PRINT STR?564
|
|
PRINTI "restart the story?"
|
|
CALL1 YES?
|
|
ZERO? STACK /TRUE
|
|
RESTART
|
|
ICALL2 FAILED,STR?565
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-RESTORE,X
|
|
SET 'OLD-HERE,FALSE-VALUE
|
|
RESTORE >X
|
|
ZERO? X \TRUE
|
|
ICALL1 INITVARS
|
|
ICALL1 V-REFRESH
|
|
ICALL2 FAILED,STR?566
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SAVE,X,STAT
|
|
CALL1 CANT-SAVE?
|
|
ZERO? STACK \TRUE
|
|
PRINTI "You mumble the Spell of Saving."
|
|
CRLF
|
|
ICALL1 PCLEAR
|
|
SET 'OLD-HERE,FALSE-VALUE
|
|
PUTB OOPS-INBUF,1,0
|
|
SET 'STAT,ENDURANCE
|
|
SET 'CHECKSUM,0
|
|
?PRG3: GET STATS,STAT
|
|
ADD CHECKSUM,STACK >CHECKSUM
|
|
IGRTR? 'STAT,EXPERIENCE \?PRG3
|
|
SET 'STAT,ENDURANCE
|
|
?PRG7: GET MAXSTATS,STAT
|
|
ADD CHECKSUM,STACK >CHECKSUM
|
|
IGRTR? 'STAT,EXPERIENCE \?PRG7
|
|
SUB 0,CHECKSUM >CHECKSUM
|
|
SAVE >X
|
|
EQUAL? X,2 /?CCL12
|
|
GET 0,8
|
|
BTST STACK,4 \?CND11
|
|
?CCL12: ICALL1 INITVARS
|
|
ICALL1 V-REFRESH
|
|
?CND11: ZERO? X \?CCL17
|
|
ICALL2 FAILED,STR?567
|
|
RETURN 2
|
|
?CCL17: EQUAL? X,1 \?CND15
|
|
ICALL2 COMPLETED,STR?567
|
|
RETURN 2
|
|
?CND15: ICALL2 COMPLETED,STR?566
|
|
CRLF
|
|
ICALL1 V-LOOK
|
|
SET 'STAT,ENDURANCE
|
|
SET 'X,0
|
|
?PRG23: GET STATS,STAT
|
|
ADD X,STACK >X
|
|
IGRTR? 'STAT,EXPERIENCE \?PRG23
|
|
SET 'STAT,ENDURANCE
|
|
?PRG27: GET MAXSTATS,STAT
|
|
ADD X,STACK >X
|
|
IGRTR? 'STAT,EXPERIENCE \?PRG27
|
|
SUB 0,CHECKSUM
|
|
EQUAL? STACK,X /?PRG33
|
|
ICALL1 CHEATER
|
|
?PRG33: RETURN 2
|
|
|
|
|
|
.FUNCT COMPLETED,STR
|
|
CRLF
|
|
PRINTC 91
|
|
PRINT STR
|
|
PRINTR " completed.]"
|
|
|
|
|
|
.FUNCT FAILED,STR
|
|
CRLF
|
|
PRINTC 91
|
|
PRINT STR
|
|
PRINTR " failed.]"
|
|
|
|
|
|
.FUNCT V-SCORE
|
|
PRINTI "[Your rank is "
|
|
ICALL1 ANNOUNCE-RANK
|
|
PRINTI ", achieved in "
|
|
PRINTN MOVES
|
|
PRINTI " move"
|
|
EQUAL? MOVES,1 /?CND1
|
|
PRINTC 115
|
|
?CND1: PRINTR ".]"
|
|
|
|
|
|
.FUNCT V-DIAGNOSE
|
|
EQUAL? PRSO,ME,ROOMS \?CCL3
|
|
ICALL2 NYMPH-APPEARS,STR?568
|
|
PRINTI "Please use the STATUS command to monitor your health"
|
|
PRINT STR?515
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,MONSTER \?CCL5
|
|
ICALL1 DIAGNOSE-MONSTER
|
|
RTRUE
|
|
?CCL5: FSET? PRSO,LIVING \?CCL7
|
|
ICALL1 CTHE-PRINT
|
|
PRINTI " seem"
|
|
FSET? PRSO,PLURAL /?CND8
|
|
PRINTC 115
|
|
?CND8: PRINTR " well enough."
|
|
?CCL7: FSET? PRSO,PERSON \?CND1
|
|
ICALL1 CTHE-PRINT
|
|
ICALL1 ISNT-ARENT
|
|
PRINTR " looking well."
|
|
?CND1: PRINT CANT
|
|
PRINTB P-PRSA-WORD
|
|
PRINTC SP
|
|
ICALL1 PRINTA
|
|
PRINT PERIOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-NOTIFY
|
|
PRINTI "[Status notification is now o"
|
|
ZERO? SAY-STAT /?CCL3
|
|
SET 'SAY-STAT,FALSE-VALUE
|
|
PRINTI "ff"
|
|
JUMP ?CND1
|
|
?CCL3: SET 'SAY-STAT,TRUE-VALUE
|
|
PRINTC 110
|
|
?CND1: PRINTR ".]"
|
|
|
|
|
|
.FUNCT V-TIME
|
|
PRINTR "This is a timeless tale."
|
|
|
|
|
|
.FUNCT V-SCRIPT
|
|
PRINT STR?569
|
|
PRINTI "n.]"
|
|
CRLF
|
|
DIROUT D-PRINTER-ON
|
|
ICALL2 TRANSCRIPT,STR?570
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-UNSCRIPT
|
|
ICALL2 TRANSCRIPT,STR?571
|
|
DIROUT D-PRINTER-OFF
|
|
PRINT STR?569
|
|
PRINTR "ff.]"
|
|
|
|
|
|
.FUNCT TRANSCRIPT,STR
|
|
DIROUT D-SCREEN-OFF
|
|
CRLF
|
|
PRINTI "Here "
|
|
PRINT STR
|
|
PRINTI "s a transcript of interaction with"
|
|
CRLF
|
|
ICALL1 V-VERSION
|
|
DIROUT D-SCREEN-ON
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-VERSION,X,IDX
|
|
SET 'IDX,18
|
|
CRLF
|
|
ZERO? COLORS? /?CCL3
|
|
COLOR INCOLOR,BGND
|
|
JUMP ?CND1
|
|
?CCL3: EQUAL? HOST,MACINTOSH /?CND1
|
|
HLIGHT H-BOLD
|
|
?CND1: PRINTI "BEYOND ZORK: "
|
|
PRINT STR?572
|
|
CRLF
|
|
COLOR FORE,BGND
|
|
HLIGHT H-NORMAL
|
|
PRINT STR?573
|
|
CRLF
|
|
ICALL1 TRADEMARK
|
|
CRLF
|
|
PRINTI "Release "
|
|
GET 0,1
|
|
BAND STACK,2047
|
|
PRINTN STACK
|
|
PRINTI " / Serial Number "
|
|
?PRG5: GETB 0,IDX
|
|
PRINTC STACK
|
|
IGRTR? 'IDX,23 \?PRG5
|
|
CRLF
|
|
ICALL1 INTERPRETER-ID
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-$VERIFY
|
|
ICALL1 INTERPRETER-ID
|
|
CRLF
|
|
PRINTI "[Verifying.]"
|
|
CRLF
|
|
VERIFY \?CND1
|
|
ICALL1 NYMPH-APPEARS
|
|
PRINTI "Your disk is correct"
|
|
PRINT STR?515
|
|
RTRUE
|
|
?CND1: ICALL2 FAILED,STR?574
|
|
RTRUE
|
|
|
|
|
|
.FUNCT INTERPRETER-ID
|
|
LESS? HOST,1 \?CCL3
|
|
PRINTI "XZIP"
|
|
JUMP ?CND1
|
|
?CCL3: GET MACHINES,0
|
|
GRTR? HOST,STACK \?CCL5
|
|
PRINTI "Interpreter "
|
|
PRINTN HOST
|
|
JUMP ?CND1
|
|
?CCL5: GET MACHINES,HOST
|
|
PRINT STACK
|
|
?CND1: ZERO? COLORS? /?CND6
|
|
PRINTI " Color"
|
|
?CND6: PRINTI " Version "
|
|
GETB 0,31
|
|
PRINTC STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-STATUS,CNT,X
|
|
ZERO? DMODE /?CCL3
|
|
ZERO? VT220 /?CCL3
|
|
EQUAL? IN-DBOX,SHOWING-STATS /?CCL3
|
|
ZERO? PRIOR \?CCL3
|
|
PRINTI "[Displaying status.]"
|
|
CRLF
|
|
ICALL1 SHOW-RANK
|
|
ICALL1 DISPLAY-STATS
|
|
JUMP ?CND1
|
|
?CCL3: ICALL1 STANDARD-STATS
|
|
?CND1: GET 0,8
|
|
BTST STACK,1 \TRUE
|
|
DIROUT D-SCREEN-OFF
|
|
ICALL1 STANDARD-STATS
|
|
DIROUT D-SCREEN-ON
|
|
RTRUE
|
|
|
|
|
|
.FUNCT STANDARD-STATS
|
|
ICALL2 PRINT-TABLE,CHARNAME
|
|
PRINTC 47
|
|
ICALL1 ANNOUNCE-RANK
|
|
CRLF
|
|
ICALL1 TEXT-STATS
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-MONITOR,X
|
|
ZERO? VT220 \?CCL3
|
|
ICALL1 NOT-AVAILABLE
|
|
RTRUE
|
|
?CCL3: ZERO? DMODE \?CCL5
|
|
PRINTR "[That command works only in Enhanced display mode.]"
|
|
?CCL5: ZERO? AUTO \?CND1
|
|
SET 'AUTO,TRUE-VALUE
|
|
GET STATS,ENDURANCE >X
|
|
GET MAXSTATS,ENDURANCE
|
|
LESS? X,STACK \?CND7
|
|
ICALL1 BMODE-ON
|
|
?CND7: PRINT STR?575
|
|
PRINTR "n.]"
|
|
?CND1: SET 'AUTO,0
|
|
ZERO? BMODE /?CND9
|
|
ICALL1 BATTLE-MODE-OFF
|
|
?CND9: PRINT STR?575
|
|
PRINTR "ff.]"
|
|
|
|
|
|
.FUNCT BMODE-OFF,X
|
|
ZERO? BMODE /FALSE
|
|
ZERO? VT220 /FALSE
|
|
GET STATS,ENDURANCE >X
|
|
GET MAXSTATS,ENDURANCE
|
|
LESS? X,STACK /FALSE
|
|
ICALL1 BATTLE-MODE-OFF
|
|
RFALSE
|
|
|
|
|
|
.FUNCT BATTLE-MODE-OFF
|
|
SET 'BMODE,0
|
|
BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
|
|
SET 'DHEIGHT,MAX-DHEIGHT
|
|
ICALL1 TO-TOP-WINDOW
|
|
SUB 11,MAX-DHEIGHT
|
|
ADD DHEIGHT,STACK
|
|
ICALL DO-CURSET,STACK,2
|
|
ICALL2 PRINT-SPACES,DWIDTH
|
|
ICALL1 TO-BOTTOM-WINDOW
|
|
RFALSE
|
|
|
|
|
|
.FUNCT BMODE-ON
|
|
ZERO? DMODE /FALSE
|
|
ZERO? BMODE \FALSE
|
|
ZERO? VT220 /FALSE
|
|
EQUAL? SHOWING-STATS,IN-DBOX,NEW-DBOX /FALSE
|
|
ICALL1 BATTLE-MODE-ON
|
|
RFALSE
|
|
|
|
|
|
.FUNCT BATTLE-MODE-ON,Y
|
|
SET 'BMODE,TRUE-VALUE
|
|
BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
|
|
SUB 11,MAX-DHEIGHT
|
|
ADD DHEIGHT,STACK >Y
|
|
ICALL1 TO-TOP-WINDOW
|
|
ICALL DO-CURSET,Y,2
|
|
ICALL2 PRINT-SPACES,DWIDTH
|
|
ICALL1 TO-BOTTOM-WINDOW
|
|
ICALL STATBARS,Y,0,0
|
|
SUB MAX-DHEIGHT,1 >DHEIGHT
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-DEFINE,KEYS,TOP,LTBL,LMARGIN,DKEY,TBL,TBL2,LEN,HIT,X,Y
|
|
SET 'KEYS,9
|
|
EQUAL? HOST,C128,C64 \?CND1
|
|
SET 'KEYS,7
|
|
?CND1: ADD KEYS,7
|
|
SUB HEIGHT,STACK
|
|
DIV STACK,2 >TOP
|
|
SET 'LTBL,KEY-LABELS
|
|
EQUAL? HOST,APPLE-2E,APPLE-2C,APPLE-2GS /?CCL4
|
|
EQUAL? HOST,MACINTOSH \?CND3
|
|
?CCL4: SET 'LTBL,APPLE-LABELS
|
|
?CND3: SUB WIDTH,40
|
|
DIV STACK,2 >LMARGIN
|
|
COLOR GCOLOR,BGND
|
|
CLEAR -1
|
|
SPLIT 20
|
|
ICALL1 TO-TOP-WINDOW
|
|
ADD 8,LMARGIN
|
|
ICALL DO-CURSET,TOP,STACK
|
|
PRINTI "Function Key Definitions"
|
|
ICALL2 SOFTS-TO-DBOX,KEYS
|
|
ADD LMARGIN,4 >X
|
|
ADD TOP,2
|
|
ICALL DO-CURSET,STACK,X
|
|
HLIGHT H-INVERSE
|
|
ADD KEYS,1
|
|
PRINTT DBOX,SOFT-LEN,STACK
|
|
ZERO? COLORS? /?CCL8
|
|
EQUAL? FORE,GCOLOR \?CND7
|
|
?CCL8: HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
?CND7: SET 'X,0
|
|
?PRG11: ADD TOP,X
|
|
ADD STACK,2
|
|
ICALL DO-CURSET,STACK,LMARGIN
|
|
GET LTBL,X
|
|
PRINT STACK
|
|
IGRTR? 'X,KEYS \?PRG11
|
|
ADD LMARGIN,4 >X
|
|
ADD KEYS,4
|
|
ADD STACK,TOP
|
|
ICALL DO-CURSET,STACK,X
|
|
PRINTI " Restore Defaults "
|
|
ADD KEYS,6
|
|
ADD STACK,TOP
|
|
ICALL DO-CURSET,STACK,X
|
|
PRINT STR?97
|
|
SET 'DKEY,0
|
|
?PRG15: ADD DKEY,TOP
|
|
ADD STACK,2 >Y
|
|
COLOR FORE,BGND
|
|
HLIGHT H-INVERSE
|
|
ADD KEYS,1
|
|
EQUAL? DKEY,STACK \?CCL19
|
|
ADD LMARGIN,4 >X
|
|
ADD KEYS,4
|
|
ADD STACK,TOP
|
|
ICALL DO-CURSET,STACK,X
|
|
PRINTI " Restore Defaults "
|
|
HLIGHT H-NORMAL
|
|
SCREEN S-TEXT
|
|
?PRG20: CALL1 DO-INPUT >HIT
|
|
EQUAL? HIT,EOL,LF \?CND22
|
|
CALL1 MAKE-SURE?
|
|
ZERO? STACK /?CND24
|
|
ICALL1 DEFAULT-SOFTS
|
|
ICALL2 SOFTS-TO-DBOX,KEYS
|
|
SCREEN S-WINDOW
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
HLIGHT H-INVERSE
|
|
COLOR GCOLOR,BGND
|
|
ADD LMARGIN,4 >X
|
|
ADD TOP,2
|
|
ICALL DO-CURSET,STACK,X
|
|
ADD KEYS,1
|
|
PRINTT DBOX,SOFT-LEN,STACK
|
|
JUMP ?PRG15
|
|
?CND24: SET 'HIT,DOWN-ARROW
|
|
?CND22: EQUAL? HIT,UP-ARROW,DOWN-ARROW \?CND26
|
|
ADD KEYS,2 >DKEY
|
|
EQUAL? HIT,UP-ARROW \?CND28
|
|
SET 'DKEY,KEYS
|
|
?CND28: SCREEN S-WINDOW
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
COLOR GCOLOR,BGND
|
|
ZERO? COLORS? /?CND30
|
|
EQUAL? FORE,GCOLOR /?CND30
|
|
HLIGHT H-INVERSE
|
|
?CND30: ADD LMARGIN,4 >X
|
|
ADD KEYS,4
|
|
ADD STACK,TOP
|
|
ICALL DO-CURSET,STACK,X
|
|
PRINTI " Restore Defaults "
|
|
JUMP ?PRG15
|
|
?CND26: SOUND S-BOOP
|
|
JUMP ?PRG20
|
|
?CCL19: ADD KEYS,2
|
|
EQUAL? DKEY,STACK \?CND17
|
|
ADD LMARGIN,4 >X
|
|
ADD KEYS,6
|
|
ADD STACK,TOP
|
|
ICALL DO-CURSET,STACK,X
|
|
PRINT STR?97
|
|
HLIGHT H-NORMAL
|
|
SCREEN S-TEXT
|
|
?PRG35: CALL1 DO-INPUT >HIT
|
|
EQUAL? HIT,EOL,LF \?CND37
|
|
EQUAL? HOST,MACINTOSH \?CCL40
|
|
CALL1 MAKE-SURE?
|
|
ZERO? STACK /?CND39
|
|
?CCL40: ICALL1 V-REFRESH
|
|
ICALL1 CONTINUING
|
|
RTRUE
|
|
?CND39: SET 'HIT,DOWN-ARROW
|
|
?CND37: EQUAL? HIT,UP-ARROW,DOWN-ARROW \?CND43
|
|
SET 'DKEY,0
|
|
EQUAL? HIT,UP-ARROW \?CND45
|
|
ADD KEYS,1 >DKEY
|
|
?CND45: SCREEN S-WINDOW
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
COLOR GCOLOR,BGND
|
|
ZERO? COLORS? /?CND47
|
|
EQUAL? FORE,GCOLOR /?CND47
|
|
HLIGHT H-INVERSE
|
|
?CND47: ADD LMARGIN,4 >X
|
|
ADD KEYS,6
|
|
ADD STACK,TOP
|
|
ICALL DO-CURSET,STACK,X
|
|
PRINT STR?97
|
|
JUMP ?PRG15
|
|
?CND43: SOUND S-BOOP
|
|
JUMP ?PRG35
|
|
?CND17: ICALL DO-CURSET,Y,LMARGIN
|
|
GET LTBL,DKEY
|
|
PRINT STACK
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
PUTB DBOX,0,SP
|
|
COPYT DBOX,DBOX+1,NSOFT-LEN
|
|
GET SOFT-KEYS,DKEY >TBL
|
|
GETB TBL,1 >LEN
|
|
ZERO? LEN /?CND51
|
|
ADD TBL,2
|
|
COPYT STACK,DBOX,LEN
|
|
?CND51: ADD LMARGIN,4
|
|
ICALL DO-CURSET,Y,STACK
|
|
COLOR INCOLOR,BGND
|
|
PRINTT DBOX,SOFT-LEN
|
|
ADD LMARGIN,LEN
|
|
ADD STACK,4
|
|
ICALL DO-CURSET,Y,STACK
|
|
?PRG53: READ TBL,0 >HIT
|
|
EQUAL? HIT,EOL,LF /?REP54
|
|
EQUAL? HIT,UP-ARROW,DOWN-ARROW,MAC-UP-ARROW /?REP54
|
|
EQUAL? HIT,MAC-DOWN-ARROW /?REP54
|
|
SOUND S-BOOP
|
|
JUMP ?PRG53
|
|
?REP54: PUTB DBOX,0,SP
|
|
COPYT DBOX,DBOX+1,NSOFT-LEN
|
|
GETB TBL,1 >LEN
|
|
ZERO? LEN \?CND60
|
|
PUTB TBL,0,SP
|
|
ADD TBL,1
|
|
COPYT TBL,STACK,NSOFT-LEN
|
|
GET KEY-DEFAULTS,DKEY >TBL2
|
|
GETB TBL2,0 >LEN
|
|
PUTB TBL,0,SOFT-LEN
|
|
PUTB TBL,1,LEN
|
|
ADD TBL2,1 >X
|
|
ADD TBL,2
|
|
COPYT X,STACK,LEN
|
|
EQUAL? HOST,C128,C64 \?CND60
|
|
ADD TBL,2
|
|
INTBL? 124,STACK,LEN,1 >X \?CND60
|
|
PUTB X,0,33
|
|
?CND60: ADD TBL,2
|
|
COPYT STACK,DBOX,LEN
|
|
ADD LMARGIN,4
|
|
ICALL DO-CURSET,Y,STACK
|
|
COLOR GCOLOR,BGND
|
|
HLIGHT H-INVERSE
|
|
PRINTT DBOX,SOFT-LEN
|
|
ADD DKEY,2
|
|
ADD STACK,TOP >Y
|
|
ICALL DO-CURSET,Y,LMARGIN
|
|
ZERO? COLORS? /?CCL66
|
|
EQUAL? FORE,GCOLOR \?CND65
|
|
?CCL66: HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
?CND65: COLOR GCOLOR,BGND
|
|
GET LTBL,DKEY
|
|
PRINT STACK
|
|
EQUAL? HIT,EOL,DOWN-ARROW,LF /?CTR70
|
|
EQUAL? HIT,MAC-DOWN-ARROW \?CCL71
|
|
?CTR70: INC 'DKEY
|
|
JUMP ?PRG15
|
|
?CCL71: DLESS? 'DKEY,0 \?PRG15
|
|
ADD KEYS,2 >DKEY
|
|
JUMP ?PRG15
|
|
|
|
|
|
.FUNCT MAKE-SURE?,X
|
|
CRLF
|
|
PRINTI "Are you sure? (Y/N) >"
|
|
INPUT 1 >X
|
|
CRLF
|
|
CLEAR S-TEXT
|
|
EQUAL? X,89,121 /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT DEFAULT-SOFTS,CNT,TBL,X,LEN
|
|
?PRG1: GET SOFT-KEYS,CNT >TBL
|
|
PUTB TBL,0,SOFT-LEN
|
|
INC 'TBL
|
|
GET KEY-DEFAULTS,CNT >X
|
|
GETB X,0
|
|
ADD STACK,1 >LEN
|
|
COPYT X,TBL,LEN
|
|
EQUAL? HOST,C128,C64 \?CND3
|
|
INTBL? 124,TBL,LEN,1 >X \?CND3
|
|
PUTB X,0,33
|
|
?CND3: IGRTR? 'CNT,9 \?PRG1
|
|
RFALSE
|
|
|
|
|
|
.FUNCT SOFTS-TO-DBOX,KEYS,X,TBL,TBL2,LEN
|
|
PUTB DBOX,0,SP
|
|
COPYT DBOX,DBOX+1,-1551
|
|
SET 'X,0
|
|
?PRG1: MUL X,SOFT-LEN
|
|
ADD DBOX,STACK >TBL2
|
|
GET SOFT-KEYS,X >TBL
|
|
GETB TBL,1 >LEN
|
|
ZERO? LEN /?CND3
|
|
ADD TBL,2
|
|
COPYT STACK,TBL2,LEN
|
|
?CND3: IGRTR? 'X,KEYS \?PRG1
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-SETTINGS,TOP,LMARGIN,LINE,X,KEY
|
|
SUB HEIGHT,19
|
|
DIV STACK,2 >TOP
|
|
SUB WIDTH,52
|
|
DIV STACK,2 >LMARGIN
|
|
COLOR GCOLOR,BGND
|
|
CLEAR -1
|
|
SPLIT 22
|
|
ICALL1 TO-TOP-WINDOW
|
|
ADD LMARGIN,18
|
|
ICALL DO-CURSET,TOP,STACK
|
|
COLOR FORE,BGND
|
|
PRINTI "Display Settings"
|
|
SET 'LINE,0
|
|
?PRG1: ICALL SHOW-SETLINE,LINE,TOP,LMARGIN
|
|
IGRTR? 'LINE,8 \?PRG1
|
|
SET 'LINE,0
|
|
?PRG5: ICALL SHOW-SETLINE,LINE,TOP,LMARGIN,1
|
|
HLIGHT H-NORMAL
|
|
SCREEN S-TEXT
|
|
EQUAL? LINE,7 \?CCL9
|
|
?PRG10: CALL1 DO-INPUT >KEY
|
|
EQUAL? KEY,EOL,LF \?CND12
|
|
CALL1 MAKE-SURE?
|
|
ZERO? STACK /?CND14
|
|
ZERO? DMODE \?CND16
|
|
SET 'DMODE,TRUE-VALUE
|
|
ICALL SHOW-SETLINE,0,TOP,LMARGIN
|
|
SET 'MAP-ROUTINE,CLOSE-MAP
|
|
ZERO? VT220 \?CND18
|
|
SET 'MAP-ROUTINE,FAR-MAP
|
|
?CND18: SET 'IN-DBOX,SHOWING-ROOM
|
|
ICALL SHOW-SETLINE,4,TOP,LMARGIN
|
|
SET 'PRIOR,0
|
|
ICALL SHOW-SETLINE,5,TOP,LMARGIN
|
|
SET 'AUTO,TRUE-VALUE
|
|
ICALL SHOW-SETLINE,6,TOP,LMARGIN
|
|
?CND16: EQUAL? VERBOSITY,1 /?CND20
|
|
SET 'VERBOSITY,1
|
|
ICALL SHOW-SETLINE,1,TOP,LMARGIN
|
|
?CND20: GET 0,8
|
|
BTST STACK,1 \?CND22
|
|
DIROUT D-PRINTER-OFF
|
|
ICALL SHOW-SETLINE,2,TOP,LMARGIN
|
|
?CND22: ZERO? SAY-STAT \?CND24
|
|
SET 'SAY-STAT,TRUE-VALUE
|
|
ICALL SHOW-SETLINE,3,TOP,LMARGIN
|
|
?CND24: ZERO? VT220 /?CCL28
|
|
EQUAL? MAP-ROUTINE,FAR-MAP \?CCL28
|
|
SET 'MAP-ROUTINE,CLOSE-MAP
|
|
ICALL SHOW-SETLINE,4,TOP,LMARGIN
|
|
JUMP ?CND26
|
|
?CCL28: ZERO? VT220 \?CND26
|
|
EQUAL? MAP-ROUTINE,CLOSE-MAP \?CND26
|
|
SET 'MAP-ROUTINE,FAR-MAP
|
|
ICALL SHOW-SETLINE,4,TOP,LMARGIN
|
|
?CND26: ZERO? PRIOR /?CND34
|
|
SET 'PRIOR,0
|
|
ICALL SHOW-SETLINE,5,TOP,LMARGIN
|
|
?CND34: ZERO? AUTO \?CND14
|
|
SET 'AUTO,TRUE-VALUE
|
|
ICALL SHOW-SETLINE,6,TOP,LMARGIN
|
|
?CND14: SET 'KEY,DOWN-ARROW
|
|
?CND12: EQUAL? KEY,UP-ARROW,DOWN-ARROW,MAC-UP-ARROW /?CCL39
|
|
EQUAL? KEY,MAC-DOWN-ARROW \?CND38
|
|
?CCL39: SET 'LINE,8
|
|
EQUAL? KEY,UP-ARROW,MAC-UP-ARROW \?CND42
|
|
SET 'LINE,6
|
|
ZERO? DMODE \?CND42
|
|
SET 'LINE,3
|
|
?CND42: ICALL SHOW-SETLINE,7,TOP,LMARGIN
|
|
JUMP ?PRG5
|
|
?CND38: SOUND S-BOOP
|
|
JUMP ?PRG10
|
|
?CCL9: EQUAL? LINE,8 \?PRG59
|
|
?PRG47: CALL1 DO-INPUT >KEY
|
|
EQUAL? KEY,EOL,LF \?CND49
|
|
EQUAL? HOST,MACINTOSH \?CCL52
|
|
CALL1 MAKE-SURE?
|
|
ZERO? STACK /?CND51
|
|
?CCL52: ICALL1 V-REFRESH
|
|
ICALL1 CONTINUING
|
|
RTRUE
|
|
?CND51: SET 'KEY,DOWN-ARROW
|
|
?CND49: EQUAL? KEY,UP-ARROW,DOWN-ARROW \?CND55
|
|
SET 'LINE,0
|
|
EQUAL? KEY,UP-ARROW \?CND57
|
|
SET 'LINE,7
|
|
?CND57: ICALL SHOW-SETLINE,8,TOP,LMARGIN
|
|
JUMP ?PRG5
|
|
?CND55: SOUND S-BOOP
|
|
JUMP ?PRG47
|
|
?PRG59: CALL1 DO-INPUT >KEY
|
|
EQUAL? KEY,UP-ARROW \?CCL63
|
|
ICALL SHOW-SETLINE,LINE,TOP,LMARGIN
|
|
DLESS? 'LINE,0 \?PRG5
|
|
SET 'LINE,8
|
|
JUMP ?PRG5
|
|
?CCL63: EQUAL? KEY,DOWN-ARROW,EOL,LF \?CCL67
|
|
ICALL SHOW-SETLINE,LINE,TOP,LMARGIN
|
|
ZERO? DMODE \?CND68
|
|
EQUAL? LINE,3 \?CND68
|
|
SET 'LINE,7
|
|
JUMP ?PRG5
|
|
?CND68: INC 'LINE
|
|
JUMP ?PRG5
|
|
?CCL67: EQUAL? KEY,RIGHT-ARROW,LEFT-ARROW,SP \?CND61
|
|
ZERO? LINE \?CCL75
|
|
ZERO? DMODE \?CCL78
|
|
INC 'DMODE
|
|
JUMP ?CND76
|
|
?CCL78: SET 'DMODE,0
|
|
?CND76: ICALL SHOW-SETLINE,4,TOP,LMARGIN
|
|
ICALL SHOW-SETLINE,5,TOP,LMARGIN
|
|
ICALL SHOW-SETLINE,6,TOP,LMARGIN
|
|
JUMP ?PRG5
|
|
?CCL75: EQUAL? LINE,2 \?CCL80
|
|
GET 0,8
|
|
BTST STACK,1 \?CCL83
|
|
DIROUT D-PRINTER-OFF
|
|
JUMP ?PRG5
|
|
?CCL83: DIROUT D-PRINTER-ON
|
|
JUMP ?PRG5
|
|
?CCL80: EQUAL? LINE,3 \?CCL85
|
|
ZERO? SAY-STAT \?CCL88
|
|
INC 'SAY-STAT
|
|
JUMP ?PRG5
|
|
?CCL88: SET 'SAY-STAT,0
|
|
JUMP ?PRG5
|
|
?CCL85: EQUAL? LINE,4 \?CCL90
|
|
EQUAL? MAP-ROUTINE,CLOSE-MAP \?CCL93
|
|
SET 'MAP-ROUTINE,FAR-MAP
|
|
JUMP ?PRG5
|
|
?CCL93: SET 'MAP-ROUTINE,CLOSE-MAP
|
|
JUMP ?PRG5
|
|
?CCL90: EQUAL? LINE,6 \?CCL95
|
|
ZERO? AUTO \?CCL98
|
|
INC 'AUTO
|
|
JUMP ?PRG5
|
|
?CCL98: SET 'AUTO,0
|
|
JUMP ?PRG5
|
|
?CCL95: EQUAL? KEY,RIGHT-ARROW,SP \?CCL100
|
|
EQUAL? LINE,1 \?CCL103
|
|
IGRTR? 'VERBOSITY,2 \?PRG5
|
|
SET 'VERBOSITY,0
|
|
JUMP ?PRG5
|
|
?CCL103: EQUAL? LINE,5 \?PRG5
|
|
ZERO? PRIOR \?CCL109
|
|
SET 'PRIOR,SHOWING-ROOM
|
|
SET 'IN-DBOX,SHOWING-ROOM
|
|
JUMP ?PRG5
|
|
?CCL109: EQUAL? PRIOR,SHOWING-ROOM \?CCL111
|
|
SET 'PRIOR,SHOWING-INV
|
|
SET 'IN-DBOX,SHOWING-INV
|
|
JUMP ?PRG5
|
|
?CCL111: EQUAL? PRIOR,SHOWING-INV \?CCL113
|
|
EQUAL? STAT-ROUTINE,BAR-NUMBER /?CCL113
|
|
SET 'PRIOR,SHOWING-STATS
|
|
SET 'IN-DBOX,SHOWING-STATS
|
|
JUMP ?PRG5
|
|
?CCL113: SET 'PRIOR,0
|
|
JUMP ?PRG5
|
|
?CCL100: EQUAL? LINE,1 \?CCL118
|
|
DLESS? 'VERBOSITY,0 \?PRG5
|
|
SET 'VERBOSITY,2
|
|
JUMP ?PRG5
|
|
?CCL118: EQUAL? LINE,5 \?PRG5
|
|
ZERO? PRIOR \?CCL124
|
|
SET 'PRIOR,SHOWING-STATS
|
|
SET 'IN-DBOX,SHOWING-STATS
|
|
EQUAL? STAT-ROUTINE,BAR-NUMBER \?PRG5
|
|
SET 'PRIOR,SHOWING-INV
|
|
SET 'IN-DBOX,SHOWING-INV
|
|
JUMP ?PRG5
|
|
?CCL124: EQUAL? PRIOR,SHOWING-ROOM \?CCL128
|
|
SET 'PRIOR,0
|
|
JUMP ?PRG5
|
|
?CCL128: EQUAL? PRIOR,SHOWING-INV \?CCL130
|
|
SET 'PRIOR,SHOWING-ROOM
|
|
SET 'IN-DBOX,SHOWING-ROOM
|
|
JUMP ?PRG5
|
|
?CCL130: EQUAL? STAT-ROUTINE,BAR-NUMBER /?PRG5
|
|
SET 'PRIOR,SHOWING-INV
|
|
SET 'IN-DBOX,SHOWING-INV
|
|
JUMP ?PRG5
|
|
?CND61: SOUND S-BOOP
|
|
JUMP ?PRG59
|
|
|
|
|
|
.FUNCT SHOW-SETLINE,LINE,TOP,LMARGIN,HL,X
|
|
SCREEN S-WINDOW
|
|
ADD TOP,2 >TOP
|
|
GETB SETOFFS,LINE
|
|
ADD STACK,LMARGIN >X
|
|
MUL LINE,2
|
|
ADD STACK,TOP
|
|
ICALL DO-CURSET,STACK,X
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
COLOR FORE,BGND
|
|
ZERO? HL /?CND1
|
|
HLIGHT H-INVERSE
|
|
?CND1: GET SNAMES,LINE
|
|
PRINT STACK
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
PRINTC SP
|
|
EQUAL? LINE,7,8 /TRUE
|
|
ZERO? LINE \?CCL7
|
|
ZERO? DMODE /?CND8
|
|
HLIGHT H-INVERSE
|
|
?CND8: PRINTI " Enhanced "
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
PRINTC SP
|
|
ZERO? DMODE \?CND10
|
|
HLIGHT H-INVERSE
|
|
?CND10: PRINTI " Standard "
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
RTRUE
|
|
?CCL7: EQUAL? LINE,1 \?CCL13
|
|
ZERO? VERBOSITY \?CND14
|
|
HLIGHT H-INVERSE
|
|
?CND14: PRINTI " Superbrief "
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
PRINTC SP
|
|
EQUAL? VERBOSITY,1 \?CND16
|
|
HLIGHT H-INVERSE
|
|
?CND16: PRINTI " Brief "
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
PRINTC SP
|
|
EQUAL? VERBOSITY,2 \?CND18
|
|
HLIGHT H-INVERSE
|
|
?CND18: PRINTI " Verbose "
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
RTRUE
|
|
?CCL13: EQUAL? LINE,2 \?CCL21
|
|
GET 0,8
|
|
BAND STACK,1 >X
|
|
ZERO? X \?CND22
|
|
HLIGHT H-INVERSE
|
|
?CND22: PRINTI " Off "
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
PRINTC SP
|
|
ZERO? X /?CND24
|
|
HLIGHT H-INVERSE
|
|
?CND24: PRINTI " On "
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
RTRUE
|
|
?CCL21: EQUAL? LINE,3 \?CCL27
|
|
ZERO? SAY-STAT \?CND28
|
|
HLIGHT H-INVERSE
|
|
?CND28: PRINTI " Off "
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
PRINTC SP
|
|
ZERO? SAY-STAT /?CND30
|
|
HLIGHT H-INVERSE
|
|
?CND30: PRINTI " On "
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
RTRUE
|
|
?CCL27: EQUAL? LINE,4 \?CCL33
|
|
ZERO? DMODE /?CND34
|
|
EQUAL? MAP-ROUTINE,CLOSE-MAP \?CND34
|
|
HLIGHT H-INVERSE
|
|
?CND34: PRINTI " Normal "
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
PRINTC SP
|
|
ZERO? DMODE /?CND37
|
|
EQUAL? MAP-ROUTINE,FAR-MAP \?CND37
|
|
HLIGHT H-INVERSE
|
|
?CND37: PRINTI " Wide "
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
RTRUE
|
|
?CCL33: EQUAL? LINE,5 \?CCL41
|
|
ZERO? DMODE /?CND42
|
|
ZERO? PRIOR \?CND42
|
|
HLIGHT H-INVERSE
|
|
?CND42: PRINTI " Off "
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
PRINTC SP
|
|
ZERO? DMODE /?CND45
|
|
EQUAL? PRIOR,SHOWING-ROOM \?CND45
|
|
HLIGHT H-INVERSE
|
|
?CND45: PRINTI " Room "
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
PRINTC SP
|
|
ZERO? DMODE /?CND48
|
|
EQUAL? PRIOR,SHOWING-INV \?CND48
|
|
HLIGHT H-INVERSE
|
|
?CND48: PRINTI " Inventory "
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
EQUAL? STAT-ROUTINE,BAR-NUMBER /TRUE
|
|
PRINTC SP
|
|
ZERO? DMODE /?CND53
|
|
EQUAL? PRIOR,SHOWING-STATS \?CND53
|
|
HLIGHT H-INVERSE
|
|
?CND53: PRINTI " Status "
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
RTRUE
|
|
?CCL41: EQUAL? LINE,6 \FALSE
|
|
ZERO? DMODE /?CND58
|
|
ZERO? AUTO /?CND58
|
|
HLIGHT H-INVERSE
|
|
?CND58: PRINTI " Automatic "
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
PRINTC SP
|
|
ZERO? DMODE /?CND61
|
|
ZERO? AUTO \?CND61
|
|
HLIGHT H-INVERSE
|
|
?CND61: PRINTI " Off "
|
|
HLIGHT H-NORMAL
|
|
HLIGHT H-MONO
|
|
RTRUE
|
|
|
|
.ENDI
|