.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