abyss/global.zap

148 lines
3.0 KiB
Plaintext

.FUNCT RT-GLOBAL-HERE:ANY:0:1,CONTEXT,P
ZERO? HERE /FALSE
GETP HERE,P?ACTION >P
ZERO? P /FALSE
CALL P,CONTEXT
RSTACK
.FUNCT RT-YOU:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
ZERO? NOW-PRSI /?CCL5
CALL PERFORM,PRSA,PRSO,WINNER
RSTACK
?CCL5: CALL PERFORM,PRSA,WINNER,PRSI
RSTACK
.FUNCT RT-TH-HUMAN-BODY:ANY:0:1,CONTEXT,TMP,PERSON
EQUAL? CONTEXT,M-OBJDESC \?CCL3
PRINTI "their body"
RTRUE
?CCL3: ZERO? CONTEXT \FALSE
CALL1 GET-NP
GET STACK,1 >TMP
ZERO? TMP /?CND6
GET TMP,2 >PERSON
?CND6: ZERO? PERSON /?CCL10
CALL2 VISIBLE?,PERSON
ZERO? STACK \?CCL10
ICALL1 NP-CANT-SEE
RETURN 2
?CCL10: PRINT K-NO-REFER-MSG
PRINTI "any"
PRINTI " part of"
ZERO? PERSON /?CCL16
ICALL RT-PRINT-OBJ,PERSON,K-ART-THE
PRINTC 39
FSET? PERSON,FL-PLURAL \?CCL18
FSET? PERSON,FL-COLLECTIVE \?CND14
?CCL18: PRINTC 115
JUMP ?CND14
?CCL16: PRINTI " their"
?CND14: PRINTI " body.]"
CRLF
RETURN 2
.FUNCT RT-GN-BODY:ANY:2:2,TBL,FINDER,PART,PTR,N
ADD TBL,8 >PTR
GET TBL,1 >N
?PRG1: DLESS? 'N,0 /FALSE
GET PTR,0 >PART
ZERO? PART /?CND3
FSET? PART,FL-YOUR /?REP2
EQUAL? PART,TH-PLAYER-BODY /?REP2
EQUAL? PART,TH-HUMAN-BODY /?CND3
RETURN PART
?CND3: ADD PTR,2 >PTR
JUMP ?PRG1
?REP2: RETURN PART
.FUNCT RT-TH-PLAYER-BODY:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
PRINT K-NO-REFER-MSG
PRINTI "that part of your body.]"
CRLF
RETURN 2
.FUNCT RT-TH-GROUND:ANY:0:3,CONTEXT,ART,CAP?
EQUAL? CONTEXT,M-OBJDESC \?CCL3
ZERO? ART /?CND4
ICALL RT-PRINT-ARTICLE,TH-GROUND,ART,CAP?
?CND4: EQUAL? ART,FALSE-VALUE,K-ART-THE,K-ART-A /?CCL8
EQUAL? ART,K-ART-ANY \FALSE
?CCL8: ZERO? ART /?CND11
PRINTC 32
?CND11: FSET? HERE,FL-INDOORS \?CCL15
PRINTI "floor"
RTRUE
?CCL15: PRINTI "ground"
RTRUE
?CCL3: ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?LOOK-ON,V?EXAMINE \FALSE
CALL2 RT-SEE-ANYTHING-IN?,HERE
ZERO? STACK /FALSE
PRINTI "You see"
ICALL2 RT-PRINT-CONTENTS,HERE
PRINTI " on"
ICALL RT-PRINT-OBJ,TH-GROUND,K-ART-THE
PRINTC 46
CRLF
RTRUE
.FUNCT RT-TH-SKY:ANY:0:3,CONTEXT,ART,CAP?,RM
EQUAL? CONTEXT,M-OBJDESC \?CCL3
ZERO? ART /?CND4
ICALL RT-PRINT-ARTICLE,TH-SKY,ART,CAP?
?CND4: EQUAL? ART,FALSE-VALUE,K-ART-THE,K-ART-A /?CCL8
EQUAL? ART,K-ART-ANY \FALSE
?CCL8: ZERO? ART /?CND11
PRINTC 32
?CND11: FSET? HERE,FL-INDOORS \?CCL15
PRINTI "ceiling"
RTRUE
?CCL15: PRINTI "sky"
RTRUE
?CCL3: ZERO? CONTEXT \FALSE
ZERO? NOW-PRSI /?CCL22
PUSH 2
JUMP ?CND20
?CCL22: PUSH 1
?CND20: CALL2 EVERYWHERE-VERB?,STACK
ZERO? STACK \FALSE
FSET? HERE,FL-INDOORS \?CCL25
CALL NOUN-USED?,TH-SKY,W?SKY
ZERO? STACK /FALSE
CALL1 NP-CANT-SEE
RSTACK
?CCL25: CALL NOUN-USED?,TH-SKY,W?CEILING
ZERO? STACK /FALSE
CALL1 NP-CANT-SEE
RSTACK
.FUNCT RT-LG-DEEPCORE:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "It looks like Deepcore."
.FUNCT RT-LG-TROUGH:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "It looks like the Cayman trough."
.FUNCT RT-LG-MONTANA:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "It looks like the Montana."
.ENDI