Release 296
commit
8b3579aab4
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,144 @@
|
|||
|
||||
<BEGIN-SEGMENT FENSHIRE>
|
||||
<GLOBAL RANK 2>
|
||||
<GLOBAL FILE 5>
|
||||
<GLOBAL PLAIN-LOC 12>
|
||||
<ROOM PLAIN (LOC ROOMS) (REGION "Region: Unknown") (DESC "Plain") (NORTH PER
|
||||
PLAIN-MOVEMENT-F) (NE PER PLAIN-MOVEMENT-F) (EAST PER PLAIN-MOVEMENT-F) (SE PER
|
||||
PLAIN-MOVEMENT-F) (SOUTH PER PLAIN-MOVEMENT-F) (SW PER PLAIN-MOVEMENT-F) (WEST
|
||||
PER PLAIN-MOVEMENT-F) (NW PER PLAIN-MOVEMENT-F) (FLAGS RLANDBIT OUTSIDEBIT
|
||||
ONBIT) (VALUE 16) (ACTION PLAIN-F)>
|
||||
<DEFINE-ROUTINE PLAIN-F>
|
||||
<DEFINE-ROUTINE PLAIN-MOVEMENT-F>
|
||||
<OBJECT BLACK-KNIGHT (DESC "mounted soldier") (LDESC
|
||||
"There is a soldier on horseback here. His armor is made of the dullest
|
||||
metals, and his steed is darker than the night.") (SYNONYM SOLDIER KNIGHT HORSE
|
||||
MAN) (ADJECTIVE MOUNTED BLACK) (FLAGS ACTORBIT CONTBIT OPENBIT SEARCHBIT
|
||||
BLACKBIT) (ACTION PIECE-F)>
|
||||
<OBJECT WHITE-KNIGHT (DESC "mounted soldier") (LDESC
|
||||
"There is a soldier on horseback here. His armor is made of the shiniest
|
||||
metals, and his steed is lighter than drifted snow.") (SYNONYM SOLDIER KNIGHT
|
||||
HORSE MAN) (ADJECTIVE MOUNTED WHITE) (FLAGS ACTORBIT CONTBIT OPENBIT SEARCHBIT
|
||||
WHITEBIT) (ACTION PIECE-F)>
|
||||
<OBJECT BLACK-PAWN (DESC "foot soldier") (LDESC
|
||||
"You spot a solitary, bored-looking foot soldier. His face is smudged with
|
||||
coal dust, his uniform is sewn from deeply dyed wool, and the handle of his
|
||||
sword is solid obsidian.") (SYNONYM SOLDIER PAWN MAN) (ADJECTIVE FOOT BLACK) (
|
||||
FLAGS ACTORBIT CONTBIT OPENBIT SEARCHBIT BLACKBIT) (ACTION PIECE-F)>
|
||||
<OBJECT BLACK-QUEEN (DESC "queen") (LDESC
|
||||
"A regal woman proudly surveys the landscape in all directions. Her skin
|
||||
is dark; her royal garments even darker.") (SYNONYM QUEEN WOMAN) (ADJECTIVE
|
||||
REGAL PROUD DARK BLACK) (FLAGS ACTORBIT FEMALEBIT CONTBIT OPENBIT SEARCHBIT
|
||||
BLACKBIT) (ACTION PIECE-F)>
|
||||
<OBJECT WHITE-CASTLE (DESC "man atop a castle tower") (LDESC
|
||||
"Nearby rises a small tower keep, made of creamy marble. Between the
|
||||
crenellations of the parapet you spot a man, dressed in an ivory chain
|
||||
mail and carrying a crossbow made of birch.") (SYNONYM MAN TOWER CASTLE ROOK) (
|
||||
ADJECTIVE CASTLE WHITE) (FLAGS ACTORBIT CONTBIT OPENBIT SEARCHBIT WHITEBIT) (
|
||||
ACTION PIECE-F)>
|
||||
<OBJECT BLACK-BISHOP (DESC "high priest") (LDESC
|
||||
"You hear a sing-song prayer chant and turn to see a high priest of some sort.
|
||||
His tall, ebony headpiece bears a religious cipher, and his vestments seem to
|
||||
soak up all light.") (SYNONYM PRIEST BISHOP MAN) (ADJECTIVE HIGH BLACK) (FLAGS
|
||||
ACTORBIT CONTBIT OPENBIT SEARCHBIT BLACKBIT) (ACTION PIECE-F)>
|
||||
<OBJECT WHITE-PAWN (DESC "foot soldier") (LDESC
|
||||
"You spot a solitary, bored-looking foot soldier. His face is smudged with
|
||||
flour, his uniform is sewn from pure undyed cotton, and the handle of his
|
||||
sword is solid quartz.") (SYNONYM SOLDIER PAWN MAN) (ADJECTIVE WHITE FOOT) (
|
||||
FLAGS ACTORBIT CONTBIT OPENBIT SEARCHBIT WHITEBIT) (ACTION PIECE-F)>
|
||||
<OBJECT WHITE-QUEEN (DESC "queen") (LDESC
|
||||
"A regal woman proudly surveys the landscape in all directions. Her royal
|
||||
garments are as white as her pale complexion.") (SYNONYM QUEEN WOMAN) (
|
||||
ADJECTIVE REGAL PROUD WHITE) (FLAGS ACTORBIT FEMALEBIT CONTBIT OPENBIT
|
||||
SEARCHBIT WHITEBIT) (ACTION PIECE-F)>
|
||||
<OBJECT WHITE-KING (DESC "royal leader") (LDESC
|
||||
"A tall man wearing princely robes stands nearby. His bearing indicates that
|
||||
this is a man accustomed to command. His linen robes are trimmed with ermine,
|
||||
and his crown is studded with diamonds and opals.") (SYNONYM LEADER KING MAN) (
|
||||
ADJECTIVE ROYAL WHITE TALL) (FLAGS ACTORBIT CONTBIT OPENBIT SEARCHBIT WHITEBIT)
|
||||
(ACTION PIECE-F)>
|
||||
<OBJECT WHITE-KING-CROWN (LOC WHITE-KING) (DESC "crown") (SYNONYM CROWN) (FLAGS
|
||||
NDESCBIT)>
|
||||
<OBJECT WHITE-KING-ROBE (LOC WHITE-KING) (DESC "robe") (SYNONYM ROBE) (FLAGS
|
||||
NDESCBIT)>
|
||||
<OBJECT BLACK-KING (DESC "royal leader") (LDESC
|
||||
"A tall man wearing princely robes stands nearby. His bearing indicates that
|
||||
this is a man accustomed to command. His velvet robes are trimmed with mink,
|
||||
and his crown is studded with polished onyx.") (SYNONYM LEADER KING MAN) (
|
||||
ADJECTIVE ROYAL BLACK TALL) (FLAGS ACTORBIT CONTBIT OPENBIT SEARCHBIT BLACKBIT)
|
||||
(ACTION PIECE-F)>
|
||||
<OBJECT BLACK-KING-ROBE (LOC BLACK-KING) (DESC "robe") (SYNONYM ROBE) (FLAGS
|
||||
NDESCBIT)>
|
||||
<OBJECT BLACK-KING-CROWN (LOC BLACK-KING) (DESC "crown") (SYNONYM CROWN) (FLAGS
|
||||
NDESCBIT)>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<GLOBAL DIR-CNT 0>
|
||||
<DEFINE-ROUTINE PIECE-F>
|
||||
<DEFINE-ROUTINE PIECE-TAKES-PIGEON>
|
||||
<CONSTANT PIECE-MOVE-TABLE <TABLE 0 0 0 0 0 0 0 0>>
|
||||
<DEFINE-ROUTINE MOVE-PIECE>
|
||||
<DEFINE-ROUTINE DIR-TO-STRING>
|
||||
<DEFINE-ROUTINE PIECE-SNARF>
|
||||
<DEFINE-ROUTINE TAKE-PIECE?>
|
||||
<DEFINE-ROUTINE ILLEGAL-MOVE?>
|
||||
<DEFINE-ROUTINE PIECE-AT-NEW-LOC?>
|
||||
<DEFINE-ROUTINE OBSTRUCTION>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT LOWER>
|
||||
<ROOM FIELD-OFFICE (LOC ROOMS) (DESC "Field Office") (REGION "Flatheadia") (
|
||||
LDESC "This is a temporary headquarters for a construction site to the west.
|
||||
Another exit leads east.") (EAST TO EXIT) (WEST PER CONSTRUCTION-ENTER-F) (
|
||||
FLAGS RLANDBIT UNDERGROUNDBIT) (MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-7
|
||||
MAP-GEN-X-4>)>
|
||||
<DEFINE-ROUTINE CONSTRUCTION-ENTER-F>
|
||||
<OBJECT BLUEPRINT (LOC FIELD-OFFICE) (DESC "blueprint") (SYNONYM BLUEPRINT) (
|
||||
FLAGS TAKEBIT BURNBIT READBIT) (SIZE 2) (TEXT
|
||||
"[This is the blueprint from your ZORK ZERO package.]")>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT HAMMER (DESC "hammer") (SYNONYM HAMMER) (FLAGS TAKEBIT) (SIZE 16) (
|
||||
ACTION HAMMER-F)>
|
||||
<DEFINE-ROUTINE HAMMER-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT LOWER>
|
||||
<ROOM CONSTRUCTION (LOC ROOMS) (DESC "Construction") (REGION "Flatheadia") (
|
||||
NORTH PER CONSTRUCTION-MOVEMENT-F) (NE PER CONSTRUCTION-MOVEMENT-F) (EAST PER
|
||||
CONSTRUCTION-MOVEMENT-F) (SE PER CONSTRUCTION-MOVEMENT-F) (SOUTH PER
|
||||
CONSTRUCTION-MOVEMENT-F) (SW PER CONSTRUCTION-MOVEMENT-F) (WEST PER
|
||||
CONSTRUCTION-MOVEMENT-F) (NW PER CONSTRUCTION-MOVEMENT-F) (FLAGS RLANDBIT
|
||||
UNDERGROUNDBIT) (ACTION CONSTRUCTION-F)>
|
||||
<DEFINE-ROUTINE CONSTRUCTION-F>
|
||||
<DEFINE-ROUTINE AND-OR-COMMA>
|
||||
<DEFINE-ROUTINE CONSTRUCTION-MOVEMENT-F>
|
||||
<GLOBAL CONSTRUCTION-LOC 47>
|
||||
<CONSTANT NORTH-EXITS <TABLE 99 20 33 37 40 46 48 50 55 59 61>>
|
||||
<CONSTANT NE-EXITS <TABLE 12 13 14 20 22 27 28 29 33 36 41 43 46 49 50 53 54>>
|
||||
<CONSTANT EAST-EXITS <TABLE 5 6 12 22 26 30 34 38 42 44 51 56 57 61 62>>
|
||||
<CONSTANT SE-EXITS <TABLE 99 17 40 43 48 51 54>>
|
||||
<OBJECT HARDHAT (DESC "hardhat") (SYNONYM HARDHAT HAT) (ADJECTIVE HARD) (FLAGS
|
||||
TAKEBIT WEARBIT) (GENERIC G-HAT-F) (VALUE 25)>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<DEFINE-ROUTINE REMOVE-ANY-PIECE>
|
||||
<CONSTANT STORAGE-TABLE <TABLE 301 BLACK-KNIGHT 314 BLACK-PAWN 315 WHITE-KNIGHT
|
||||
328 BLACK-BISHOP 337 BLACK-KING 349 WHITE-PAWN 357 WHITE-KING 363 WHITE-CASTLE
|
||||
400 HARDHAT 461 HAMMER 1004 MEMO 3019 T-SQUARE 4193 INSTRUCTION-BOOKLET 0 0 0 0
|
||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
0 0 0 0 0 0 0 0 0 0>>
|
||||
<CONSTANT PLAIN-OFFSET 300>
|
||||
<CONSTANT CONSTRUCTION-OFFSET 400>
|
||||
<CONSTANT OFFICES-OFFSET 1000>
|
||||
<CONSTANT OFFICES-N-OFFSET 2000>
|
||||
<CONSTANT OFFICES-S-OFFSET 3000>
|
||||
<CONSTANT OFFICES-E-OFFSET 4000>
|
||||
<CONSTANT OFFICES-W-OFFSET 5000>
|
||||
<CONSTANT STORAGE-TABLE-LENGTH 200>
|
||||
<DEFINE-ROUTINE PUT-IN-STORAGE>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT LOWER>
|
||||
<BEGIN-SEGMENT FENSHIRE>
|
||||
<BEGIN-SEGMENT VILLAGE>
|
||||
<DEFINE-ROUTINE STORE>
|
||||
<DEFINE-ROUTINE UNSTORE>
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,753 @@
|
|||
|
||||
.SEGMENT "FENSHIRE"
|
||||
|
||||
|
||||
.FUNCT PLAIN-F,RARG,PIECE
|
||||
EQUAL? RARG,M-LOOK \?CCL3
|
||||
PRINTI "You are on an amazingly flat plain of "
|
||||
ADD RANK,FILE
|
||||
MOD STACK,2
|
||||
ZERO? STACK \?CCL6
|
||||
PRINTI "sun-bleached sand"
|
||||
JUMP ?CND4
|
||||
?CCL6: PRINTI "deep, rich loam"
|
||||
?CND4: PRINTI ". The plain seems to stretch endlessly in all directions"
|
||||
EQUAL? RANK,1,8 /?CCL8
|
||||
EQUAL? FILE,1,8 \?CND7
|
||||
?CCL8: PRINTI ", except to the "
|
||||
EQUAL? RANK,1 \?CCL13
|
||||
PRINTI "north"
|
||||
EQUAL? FILE,1 \?CCL16
|
||||
PRINTI " and west"
|
||||
JUMP ?CND11
|
||||
?CCL16: EQUAL? FILE,8 \?CND11
|
||||
PRINTI " and east"
|
||||
JUMP ?CND11
|
||||
?CCL13: EQUAL? RANK,8 \?CCL19
|
||||
PRINTI "south"
|
||||
EQUAL? FILE,1 \?CCL22
|
||||
PRINTI " and west"
|
||||
JUMP ?CND11
|
||||
?CCL22: EQUAL? FILE,8 \?CND11
|
||||
PRINTI " and east"
|
||||
JUMP ?CND11
|
||||
?CCL19: EQUAL? FILE,1 \?CCL25
|
||||
PRINTI "west"
|
||||
JUMP ?CND11
|
||||
?CCL25: PRINTI "east"
|
||||
?CND11: PRINTI ", where the world seems to end in a gray void"
|
||||
?CND7: PRINTC 46
|
||||
RTRUE
|
||||
?CCL3: EQUAL? RARG,M-END \FALSE
|
||||
CALL FIND-IN,HERE,BLACKBIT >PIECE
|
||||
ZERO? PIECE \?PEN31
|
||||
CALL FIND-IN,HERE,WHITEBIT >PIECE
|
||||
?PEN31: ZERO? PIECE /FALSE
|
||||
FSET? PIECE,TOUCHBIT /FALSE
|
||||
FSET PIECE,TOUCHBIT
|
||||
RANDOM 100
|
||||
LESS? 30,STACK /FALSE
|
||||
PRINTI " The "
|
||||
ICALL2 DPRINT,PIECE
|
||||
PRINTR " notices your cloak and bows gracefully. ""Greetings, Lordship. It's been a long time between moves -- I'll bet you've got a great one planned!"""
|
||||
|
||||
|
||||
.FUNCT PLAIN-MOVEMENT-F,RARG
|
||||
ZERO? RARG \FALSE
|
||||
EQUAL? RANK,1 \?PRD6
|
||||
EQUAL? PRSO,P?NW,P?NE,P?NORTH /?CCL4
|
||||
?PRD6: EQUAL? RANK,8 \?PRD9
|
||||
EQUAL? PRSO,P?SW,P?SE,P?SOUTH /?CCL4
|
||||
?PRD9: EQUAL? FILE,8 \?PRD12
|
||||
EQUAL? PRSO,P?SE,P?NE,P?EAST /?CCL4
|
||||
?PRD12: EQUAL? FILE,1 \?CND1
|
||||
EQUAL? PRSO,P?SW,P?NW,P?WEST \?CND1
|
||||
?CCL4: PRINTI "The world ends at a gray void in that direction."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CND1: EQUAL? PRSO,P?NW,P?NE,P?NORTH \?CND17
|
||||
DEC 'RANK
|
||||
?CND17: EQUAL? PRSO,P?SW,P?SE,P?SOUTH \?CND19
|
||||
INC 'RANK
|
||||
?CND19: EQUAL? PRSO,P?NE,P?SE,P?EAST \?CND21
|
||||
INC 'FILE
|
||||
?CND21: EQUAL? PRSO,P?NW,P?SW,P?WEST \?CND23
|
||||
DEC 'FILE
|
||||
?CND23: ICALL STORE,PLAIN-OFFSET,PLAIN-LOC
|
||||
SUB RANK,1
|
||||
MUL STACK,8
|
||||
ADD STACK,FILE
|
||||
SUB STACK,1 >PLAIN-LOC
|
||||
ICALL UNSTORE,PLAIN-OFFSET,PLAIN-LOC
|
||||
RETURN PLAIN
|
||||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT PIECE-F,ARG,CNT
|
||||
FSET? WINNER,BLACKBIT /?CTR2
|
||||
FSET? WINNER,WHITEBIT \?CCL3
|
||||
?CTR2: ZERO? TIME-STOPPED /?CCL8
|
||||
SET 'P-CONT,-1
|
||||
PRINTI "Seemingly frozen,"
|
||||
ICALL2 TPRINT,WINNER
|
||||
PRINTR " is unresponsive."
|
||||
?CCL8: EQUAL? PRSA,V?WALK \?CCL10
|
||||
EQUAL? PRSO,P?UP,P?OUT,P?IN /?CTR9
|
||||
EQUAL? PRSO,P?DOWN \?CCL10
|
||||
?CTR9: SET 'DIR-CNT,0
|
||||
PRINT CANNOT-TRAVEL
|
||||
ICALL1 STOP
|
||||
RTRUE
|
||||
?CCL10: EQUAL? PRSA,V?WALK \?PRD18
|
||||
ZERO? P-WALK-DIR \?CCL16
|
||||
?PRD18: EQUAL? PRSA,V?MOVE \?CTR15
|
||||
EQUAL? PRSO,INTDIR /?CCL16
|
||||
?CTR15: SET 'DIR-CNT,0
|
||||
EQUAL? PRSA,V?WALK \?CCL25
|
||||
CALL NOUN-USED?,PRSO,W?ONE
|
||||
ZERO? STACK /?CCL25
|
||||
PRINTI "[The proper way to ask"
|
||||
ICALL2 TPRINT,WINNER
|
||||
PRINTR " to move is simply to tell the direction(s), as in >CHARACTER, NW.NW]"
|
||||
?CCL25: SET 'P-CONT,-1
|
||||
PRINTR """You can tell me directions. That's it."""
|
||||
?CCL16: EQUAL? HERE,PLAIN,CONSTRUCTION /?CCL29
|
||||
SET 'P-CONT,-1
|
||||
PRINTR """The terrain is strange and unfamiliar; I am too terrified to move!"""
|
||||
?CCL29: EQUAL? DIR-CNT,7 \?CCL31
|
||||
SET 'DIR-CNT,0
|
||||
SET 'P-CONT,-1
|
||||
PRINTR """Too many directions!"""
|
||||
?CCL31: EQUAL? PRSA,V?MOVE \?CND32
|
||||
CALL1 DIRECTION-CONVERSION >PRSO
|
||||
?CND32: PUT PIECE-MOVE-TABLE,DIR-CNT,PRSO
|
||||
IGRTR? 'DIR-CNT,1 \?CCL36
|
||||
EQUAL? WINNER,WHITE-KNIGHT,BLACK-KNIGHT /?CCL36
|
||||
SUB DIR-CNT,2
|
||||
GET PIECE-MOVE-TABLE,STACK
|
||||
EQUAL? PRSO,STACK /?CCL36
|
||||
SET 'DIR-CNT,0
|
||||
COPYT PIECE-MOVE-TABLE,0,16
|
||||
PRINT CANNOT-TRAVEL
|
||||
ICALL1 STOP
|
||||
RTRUE
|
||||
?CCL36: ZERO? P-CONT \?CTR40
|
||||
ZERO? M-PTR /?CCL41
|
||||
?CTR40: SET 'CLOCK-WAIT,TRUE-VALUE
|
||||
RTRUE
|
||||
?CCL41: SET 'DIR-CNT,0
|
||||
ICALL1 MOVE-PIECE
|
||||
RTRUE
|
||||
?CCL3: EQUAL? PRSA,V?ENTER \?CCL45
|
||||
EQUAL? PRSO,WHITE-CASTLE \?CCL45
|
||||
CALL NOUN-USED?,WHITE-CASTLE,W?MAN
|
||||
ZERO? STACK \?CCL45
|
||||
PRINTR "Oddly, there doesn't seem to be any entrance."
|
||||
?CCL45: EQUAL? PRSA,V?ENTER \?CCL50
|
||||
EQUAL? PRSO,BLACK-KNIGHT,WHITE-KNIGHT \?CCL50
|
||||
CALL NOUN-USED?,PRSO,W?HORSE
|
||||
ZERO? STACK /?CCL50
|
||||
PRINTR "The horse isn't large enough for two riders."
|
||||
?CCL50: EQUAL? PRSA,V?MOVE \?CCL55
|
||||
PRINTI "Perhaps you should tell"
|
||||
ICALL1 TPRINT-PRSO
|
||||
PRINTR " the direction(s)."
|
||||
?CCL55: EQUAL? PRSA,V?GIVE \?CCL57
|
||||
FSET? PRSO,TRYTAKEBIT /?CCL57
|
||||
CALL FIND-IN,PRSO,TRYTAKEBIT
|
||||
ZERO? STACK \?CCL57
|
||||
FSET? PRSI,WHITEBIT /?CTR56
|
||||
FSET? PRSI,BLACKBIT \?CCL57
|
||||
?CTR56: ZERO? TIME-STOPPED /?CND64
|
||||
ICALL PERFORM,V?TELL,PRSI
|
||||
RTRUE
|
||||
?CND64: MOVE PRSO,PRSI
|
||||
PRINTI "The "
|
||||
ICALL2 DPRINT,PRSI
|
||||
PRINTI " takes"
|
||||
ICALL1 TPRINT-PRSO
|
||||
PRINTC 46
|
||||
EQUAL? PRSO,PIGEON \?CCL68
|
||||
CALL2 META-LOC,PERCH
|
||||
EQUAL? HERE,STACK /?CCL68
|
||||
EQUAL? HERE,OUBLIETTE \?CTR67
|
||||
EQUAL? REMOVED-PERCH-LOC,OUBLIETTE /?CCL68
|
||||
?CTR67: CALL2 PIECE-TAKES-PIGEON,PRSI
|
||||
RSTACK
|
||||
?CCL68: PRINTR " ""Your graciousness is not unappreciated, your Lordship."""
|
||||
?CCL57: EQUAL? PRSA,V?ASK-FOR \FALSE
|
||||
LOC PRSI
|
||||
FSET? STACK,WHITEBIT /?CCL75
|
||||
LOC PRSI
|
||||
FSET? STACK,BLACKBIT \FALSE
|
||||
?CCL75: ICALL PERFORM,V?TAKE,PRSI
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT PIECE-TAKES-PIGEON,PIECE,DO-CR
|
||||
ASSIGNED? 'DO-CR /?CND1
|
||||
SET 'DO-CR,TRUE-VALUE
|
||||
?CND1: ICALL2 MOVE-TO-PERCH,PIECE
|
||||
PRINTI " Instantly,"
|
||||
EQUAL? PIECE,WHITE-CASTLE \?CCL5
|
||||
PRINTI " the tower"
|
||||
JUMP ?CND3
|
||||
?CCL5: ICALL2 TPRINT,PIECE
|
||||
?CND3: PRINTI " seems to grow more distant without moving. Within seconds,"
|
||||
EQUAL? PIECE,WHITE-CASTLE \?CCL8
|
||||
PRINTI " the tower"
|
||||
JUMP ?CND6
|
||||
?CCL8: ICALL2 TPRINT,PIECE
|
||||
?CND6: PRINTI " is gone."
|
||||
ZERO? DO-CR /TRUE
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT MOVE-PIECE,CNT,DIR,NEW-RANK,NEW-FILE,NEW-LOC,X,OFFSET,BLOCK,?TMP1
|
||||
SET 'NEW-RANK,RANK
|
||||
SET 'NEW-FILE,FILE
|
||||
SUB NEW-RANK,1
|
||||
MUL STACK,8 >?TMP1
|
||||
SUB NEW-FILE,1
|
||||
ADD ?TMP1,STACK >NEW-LOC
|
||||
SET 'CNT,0
|
||||
?PRG1: GET PIECE-MOVE-TABLE,CNT >DIR
|
||||
EQUAL? DIR,FALSE-VALUE /?REP2
|
||||
EQUAL? DIR,P?NORTH,P?NE,P?NW \?CND5
|
||||
DEC 'NEW-RANK
|
||||
?CND5: EQUAL? DIR,P?EAST,P?NE,P?SE \?CND7
|
||||
INC 'NEW-FILE
|
||||
?CND7: EQUAL? DIR,P?SOUTH,P?SE,P?SW \?CND9
|
||||
INC 'NEW-RANK
|
||||
?CND9: EQUAL? DIR,P?WEST,P?SW,P?NW \?CND11
|
||||
DEC 'NEW-FILE
|
||||
?CND11: INC 'CNT
|
||||
EQUAL? HERE,CONSTRUCTION \?CND13
|
||||
EQUAL? WINNER,BLACK-KNIGHT,WHITE-KNIGHT /?CND13
|
||||
CALL OBSTRUCTION,NEW-LOC,DIR
|
||||
ZERO? STACK /?CND13
|
||||
SET 'BLOCK,TRUE-VALUE
|
||||
EQUAL? DIR,P?EAST \?CCL20
|
||||
EQUAL? NEW-LOC,47 \?CCL20
|
||||
PRINTI """Appearances deceive you -- such a move would send me off the edge of the world!"""
|
||||
CRLF
|
||||
JUMP ?REP2
|
||||
?CCL20: PRINTI """My word! There appears to be a wall in the way!"""
|
||||
CRLF
|
||||
JUMP ?REP2
|
||||
?CND13: SUB NEW-RANK,1
|
||||
MUL STACK,8 >?TMP1
|
||||
SUB NEW-FILE,1
|
||||
ADD ?TMP1,STACK >NEW-LOC
|
||||
GET PIECE-MOVE-TABLE,CNT
|
||||
ZERO? STACK /?PRG1
|
||||
EQUAL? WINNER,BLACK-KNIGHT,WHITE-KNIGHT /?PRG1
|
||||
CALL2 PIECE-AT-NEW-LOC?,NEW-LOC
|
||||
ZERO? STACK /?PRG1
|
||||
SET 'BLOCK,TRUE-VALUE
|
||||
PRINTI """Alas, the path between here and there is not unobstructed."""
|
||||
CRLF
|
||||
?REP2: GET PIECE-MOVE-TABLE,0
|
||||
CALL2 DIR-TO-STRING,STACK >DIR
|
||||
COPYT PIECE-MOVE-TABLE,0,16
|
||||
ZERO? BLOCK \TRUE
|
||||
CALL ILLEGAL-MOVE?,NEW-LOC,NEW-RANK,NEW-FILE >X
|
||||
EQUAL? X,M-FATAL \?CCL32
|
||||
PRINTR """That land is occupied!"""
|
||||
?CCL32: ZERO? X /?CCL34
|
||||
PRINT CANNOT-TRAVEL
|
||||
CALL1 STOP
|
||||
RSTACK
|
||||
?CCL34: GRTR? NEW-RANK,8 /?CTR35
|
||||
GRTR? NEW-FILE,8 /?CTR35
|
||||
LESS? NEW-RANK,1 /?CTR35
|
||||
LESS? NEW-FILE,1 \?CCL36
|
||||
?CTR35: PRINTI """You would have me plunge off the end of the world"
|
||||
EQUAL? HERE,CONSTRUCTION \?CND41
|
||||
PRINTI " -- or whatever passes for the end of the world in this forsaken badland"
|
||||
?CND41: PRINTR "!"""
|
||||
?CCL36: CALL2 TAKE-PIECE?,NEW-LOC
|
||||
ZERO? STACK \FALSE
|
||||
REMOVE WINNER
|
||||
PRINTI """I'm off!"" The "
|
||||
PRINTD WINNER
|
||||
EQUAL? WINNER,WHITE-KNIGHT,BLACK-KNIGHT \?CCL47
|
||||
PRINTI " and his steed jump high into the air and vanish! A moment later, you hear a proud whinny in the distance."
|
||||
JUMP ?CND45
|
||||
?CCL47: PRINTI " moves out of sight to the "
|
||||
PRINT DIR
|
||||
PRINTC 46
|
||||
?CND45: CRLF
|
||||
EQUAL? WINNER,WHITE-PAWN \?CCL50
|
||||
EQUAL? HERE,PLAIN \?CCL50
|
||||
LESS? NEW-LOC,8 \?CCL50
|
||||
ICALL ROB,WHITE-PAWN,WHITE-QUEEN
|
||||
SET 'WINNER,WHITE-QUEEN
|
||||
JUMP ?CND48
|
||||
?CCL50: EQUAL? WINNER,BLACK-PAWN \?CND48
|
||||
EQUAL? HERE,PLAIN \?CND48
|
||||
GRTR? NEW-LOC,55 \?CND48
|
||||
ICALL ROB,BLACK-PAWN,BLACK-QUEEN
|
||||
SET 'WINNER,BLACK-QUEEN
|
||||
?CND48: EQUAL? HERE,PLAIN \?CCL60
|
||||
SET 'OFFSET,PLAIN-OFFSET
|
||||
JUMP ?CND58
|
||||
?CCL60: SET 'OFFSET,CONSTRUCTION-OFFSET
|
||||
?CND58: ADD NEW-LOC,OFFSET
|
||||
ICALL PIECE-SNARF,STACK,WINNER
|
||||
CALL PUT-IN-STORAGE,OFFSET,WINNER,NEW-LOC
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT DIR-TO-STRING,DIR
|
||||
EQUAL? DIR,P?UP \?CCL3
|
||||
RETURN STR?912
|
||||
?CCL3: EQUAL? DIR,P?DOWN \?CCL5
|
||||
RETURN STR?913
|
||||
?CCL5: EQUAL? DIR,P?NORTH \?CCL7
|
||||
RETURN STR?198
|
||||
?CCL7: EQUAL? DIR,P?NE \?CCL9
|
||||
RETURN STR?828
|
||||
?CCL9: EQUAL? DIR,P?EAST \?CCL11
|
||||
RETURN STR?827
|
||||
?CCL11: EQUAL? DIR,P?SE \?CCL13
|
||||
RETURN STR?263
|
||||
?CCL13: EQUAL? DIR,P?SOUTH \?CCL15
|
||||
RETURN STR?199
|
||||
?CCL15: EQUAL? DIR,P?SW \?CCL17
|
||||
RETURN STR?826
|
||||
?CCL17: EQUAL? DIR,P?WEST \?CCL19
|
||||
RETURN STR?824
|
||||
?CCL19: EQUAL? DIR,P?NW \FALSE
|
||||
RETURN STR?825
|
||||
|
||||
|
||||
.FUNCT PIECE-SNARF,NEW-LOC,SNARFER,OBJ,CNT,TOOK-PIGEON
|
||||
?PRG1: LESS? CNT,STORAGE-TABLE-LENGTH \?REP2
|
||||
GET STORAGE-TABLE,CNT
|
||||
EQUAL? STACK,NEW-LOC \?CND3
|
||||
ADD CNT,1
|
||||
GET STORAGE-TABLE,STACK >OBJ
|
||||
FSET? OBJ,TAKEBIT \?CND3
|
||||
FSET? OBJ,TRYTAKEBIT /?CND3
|
||||
CALL FIND-IN,OBJ,TRYTAKEBIT
|
||||
ZERO? STACK \?CND3
|
||||
EQUAL? OBJ,PIGEON \?CND12
|
||||
SET 'TOOK-PIGEON,TRUE-VALUE
|
||||
?CND12: MOVE OBJ,SNARFER
|
||||
PUT STORAGE-TABLE,CNT,0
|
||||
ADD CNT,1
|
||||
PUT STORAGE-TABLE,STACK,0
|
||||
?CND3: ADD CNT,2 >CNT
|
||||
JUMP ?PRG1
|
||||
?REP2: ZERO? TOOK-PIGEON /FALSE
|
||||
CALL2 MOVE-TO-PERCH,SNARFER
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT TAKE-PIECE?,NEW-LOC,TAKEE,VAL
|
||||
CALL2 PIECE-AT-NEW-LOC?,NEW-LOC >TAKEE
|
||||
ZERO? TAKEE \?CCL3
|
||||
RETURN VAL
|
||||
?CCL3: FSET? TAKEE,WHITEBIT \?PRD7
|
||||
FSET? WINNER,WHITEBIT /?CTR4
|
||||
?PRD7: FSET? TAKEE,BLACKBIT \?CCL5
|
||||
FSET? WINNER,BLACKBIT \?CCL5
|
||||
?CTR4: PRINTI """I cannot attack one of my own side!"""
|
||||
CRLF
|
||||
SET 'VAL,TRUE-VALUE
|
||||
RETURN VAL
|
||||
?CCL5: ICALL PIECE-AT-NEW-LOC?,NEW-LOC,TRUE-VALUE
|
||||
RETURN VAL
|
||||
|
||||
|
||||
.FUNCT ILLEGAL-MOVE?,NEW-LOC,NEW-RANK,NEW-FILE,TAKEE,OLD-LOC
|
||||
EQUAL? HERE,PLAIN \?CCL3
|
||||
SET 'OLD-LOC,PLAIN-LOC
|
||||
JUMP ?CND1
|
||||
?CCL3: SET 'OLD-LOC,CONSTRUCTION-LOC
|
||||
?CND1: EQUAL? WINNER,WHITE-KNIGHT,BLACK-KNIGHT \?CCL6
|
||||
SUB OLD-LOC,NEW-LOC
|
||||
EQUAL? STACK,6,10,15 /FALSE
|
||||
SUB OLD-LOC,NEW-LOC
|
||||
EQUAL? STACK,17,-6,-10 /FALSE
|
||||
SUB OLD-LOC,NEW-LOC
|
||||
EQUAL? STACK,-15,-17 /FALSE
|
||||
RTRUE
|
||||
?CCL6: EQUAL? WINNER,WHITE-KING,BLACK-KING \?CCL14
|
||||
SUB OLD-LOC,NEW-LOC
|
||||
EQUAL? STACK,1,7,8 /FALSE
|
||||
SUB OLD-LOC,NEW-LOC
|
||||
EQUAL? STACK,9,-1,-7 /FALSE
|
||||
SUB OLD-LOC,NEW-LOC
|
||||
EQUAL? STACK,-8,-9 /FALSE
|
||||
RTRUE
|
||||
?CCL14: EQUAL? WINNER,BLACK-BISHOP \?CCL22
|
||||
GRTR? OLD-LOC,NEW-LOC \?CCL25
|
||||
SUB OLD-LOC,NEW-LOC
|
||||
MOD STACK,7
|
||||
ZERO? STACK /FALSE
|
||||
SUB OLD-LOC,NEW-LOC
|
||||
MOD STACK,9
|
||||
ZERO? STACK /FALSE
|
||||
RTRUE
|
||||
?CCL25: SUB NEW-LOC,OLD-LOC
|
||||
MOD STACK,7
|
||||
ZERO? STACK /FALSE
|
||||
SUB NEW-LOC,OLD-LOC
|
||||
MOD STACK,9
|
||||
ZERO? STACK /FALSE
|
||||
RTRUE
|
||||
?CCL22: EQUAL? WINNER,WHITE-CASTLE \?CCL37
|
||||
EQUAL? RANK,NEW-RANK /FALSE
|
||||
EQUAL? FILE,NEW-FILE /FALSE
|
||||
RTRUE
|
||||
?CCL37: EQUAL? WINNER,WHITE-QUEEN,BLACK-QUEEN \?CCL44
|
||||
EQUAL? RANK,NEW-RANK /FALSE
|
||||
EQUAL? FILE,NEW-FILE /FALSE
|
||||
GRTR? NEW-LOC,OLD-LOC \?CCL51
|
||||
SUB NEW-LOC,OLD-LOC
|
||||
MOD STACK,7
|
||||
ZERO? STACK /FALSE
|
||||
SUB NEW-LOC,OLD-LOC
|
||||
MOD STACK,9
|
||||
ZERO? STACK /FALSE
|
||||
?CCL51: GRTR? OLD-LOC,NEW-LOC \TRUE
|
||||
SUB OLD-LOC,NEW-LOC
|
||||
MOD STACK,7
|
||||
ZERO? STACK /FALSE
|
||||
SUB OLD-LOC,NEW-LOC
|
||||
MOD STACK,9
|
||||
ZERO? STACK /FALSE
|
||||
RTRUE
|
||||
?CCL44: EQUAL? WINNER,BLACK-PAWN \?CCL63
|
||||
CALL2 PIECE-AT-NEW-LOC?,NEW-LOC >TAKEE
|
||||
EQUAL? OLD-LOC,14 \?CCL66
|
||||
EQUAL? NEW-LOC,30 \?CCL66
|
||||
ZERO? TAKEE /FALSE
|
||||
RETURN 2
|
||||
?CCL66: SUB NEW-LOC,OLD-LOC
|
||||
EQUAL? STACK,7,9 \?CCL75
|
||||
ZERO? TAKEE \FALSE
|
||||
RTRUE
|
||||
?CCL75: SUB NEW-LOC,OLD-LOC
|
||||
EQUAL? STACK,8 \TRUE
|
||||
ZERO? TAKEE /FALSE
|
||||
RETURN 2
|
||||
?CCL63: EQUAL? WINNER,WHITE-PAWN \?CCL87
|
||||
CALL2 PIECE-AT-NEW-LOC?,NEW-LOC >TAKEE
|
||||
EQUAL? OLD-LOC,49 \?CCL90
|
||||
EQUAL? NEW-LOC,33 \?CCL90
|
||||
ZERO? TAKEE /FALSE
|
||||
RETURN 2
|
||||
?CCL90: SUB OLD-LOC,NEW-LOC
|
||||
EQUAL? STACK,7,9 \?CCL99
|
||||
ZERO? TAKEE \FALSE
|
||||
RTRUE
|
||||
?CCL99: SUB OLD-LOC,NEW-LOC
|
||||
EQUAL? STACK,8 \TRUE
|
||||
ZERO? TAKEE /FALSE
|
||||
RETURN 2
|
||||
?CCL87: PRINTR "Bug7"
|
||||
|
||||
|
||||
.FUNCT PIECE-AT-NEW-LOC?,NEW-LOC,TAKE-PIECE,CNT,TAKEE
|
||||
EQUAL? HERE,CONSTRUCTION \?CCL3
|
||||
PUSH CONSTRUCTION-OFFSET
|
||||
JUMP ?CND1
|
||||
?CCL3: PUSH PLAIN-OFFSET
|
||||
?CND1: ADD NEW-LOC,STACK >NEW-LOC
|
||||
?PRG4: GET STORAGE-TABLE,CNT
|
||||
EQUAL? NEW-LOC,STACK \?CND6
|
||||
ADD CNT,1
|
||||
GET STORAGE-TABLE,STACK >TAKEE
|
||||
FSET? TAKEE,WHITEBIT /?CCL9
|
||||
FSET? TAKEE,BLACKBIT \?CND6
|
||||
?CCL9: ZERO? TAKE-PIECE /?REP5
|
||||
ICALL ROB,TAKEE,WINNER
|
||||
PUT STORAGE-TABLE,CNT,0
|
||||
JUMP ?REP5
|
||||
?CND6: ADD CNT,2 >CNT
|
||||
LESS? CNT,STORAGE-TABLE-LENGTH /?PRG4
|
||||
?REP5: ZERO? TAKEE /FALSE
|
||||
FSET? TAKEE,WHITEBIT /?CTR19
|
||||
FSET? TAKEE,BLACKBIT \FALSE
|
||||
?CTR19: RETURN TAKEE
|
||||
|
||||
|
||||
.FUNCT OBSTRUCTION,L,DIR,CALLED-BY-EXIT-F,CHANGE
|
||||
EQUAL? DIR,P?NORTH \?CCL3
|
||||
INTBL? L,NORTH-EXITS,11 /?CTR2
|
||||
ADD L,100
|
||||
INTBL? STACK,NORTH-EXITS,11 \?CCL3
|
||||
?CTR2: SET 'CHANGE,-8
|
||||
JUMP ?CND1
|
||||
?CCL3: EQUAL? DIR,P?NE \?CCL9
|
||||
INTBL? L,NE-EXITS,17 \?CCL9
|
||||
SET 'CHANGE,-7
|
||||
JUMP ?CND1
|
||||
?CCL9: EQUAL? DIR,P?EAST \?CCL13
|
||||
EQUAL? L,47 \?CCL16
|
||||
ZERO? CALLED-BY-EXIT-F /?CCL16
|
||||
SET 'CHANGE,100
|
||||
JUMP ?CND1
|
||||
?CCL16: INTBL? L,EAST-EXITS,15 \?CND1
|
||||
SET 'CHANGE,1
|
||||
JUMP ?CND1
|
||||
?CCL13: EQUAL? DIR,P?SE \?CCL21
|
||||
INTBL? L,SE-EXITS,7 /?CTR20
|
||||
ADD L,100
|
||||
INTBL? STACK,SE-EXITS,7 \?CCL21
|
||||
?CTR20: SET 'CHANGE,9
|
||||
JUMP ?CND1
|
||||
?CCL21: EQUAL? DIR,P?SOUTH \?CCL27
|
||||
ADD L,8
|
||||
INTBL? STACK,NORTH-EXITS,11 /?CTR26
|
||||
ADD L,108
|
||||
INTBL? STACK,NORTH-EXITS,11 \?CCL27
|
||||
?CTR26: SET 'CHANGE,8
|
||||
JUMP ?CND1
|
||||
?CCL27: EQUAL? DIR,P?SW \?CCL33
|
||||
ADD L,7
|
||||
INTBL? STACK,NE-EXITS,17 \?CCL33
|
||||
SET 'CHANGE,7
|
||||
JUMP ?CND1
|
||||
?CCL33: EQUAL? DIR,P?WEST \?CCL37
|
||||
SUB L,1
|
||||
INTBL? STACK,EAST-EXITS,15 \?CCL37
|
||||
SET 'CHANGE,-1
|
||||
JUMP ?CND1
|
||||
?CCL37: EQUAL? DIR,P?NW \?CND1
|
||||
SUB L,9
|
||||
INTBL? STACK,SE-EXITS,7 /?CCL40
|
||||
ADD L,91
|
||||
INTBL? STACK,SE-EXITS,7 \?CND1
|
||||
?CCL40: SET 'CHANGE,-9
|
||||
?CND1: ZERO? CALLED-BY-EXIT-F /?CCL47
|
||||
RETURN CHANGE
|
||||
?CCL47: ZERO? CHANGE /TRUE
|
||||
RFALSE
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "LOWER"
|
||||
|
||||
|
||||
.FUNCT CONSTRUCTION-ENTER-F,RARG
|
||||
ZERO? RARG \FALSE
|
||||
SET 'CONSTRUCTION-LOC,47
|
||||
RETURN CONSTRUCTION
|
||||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT HAMMER-F
|
||||
EQUAL? PRSA,V?KILL \?CCL3
|
||||
EQUAL? PRSI,HAMMER \?CCL3
|
||||
ICALL PERFORM,V?MUNG,PRSO,HAMMER
|
||||
RTRUE
|
||||
?CCL3: EQUAL? PRSA,V?MUNG \FALSE
|
||||
EQUAL? PRSI,HAMMER \FALSE
|
||||
FSET? PRSO,ANIMATEDBIT \FALSE
|
||||
PRINTI "Fortunately,"
|
||||
ICALL1 TPRINT-PRSO
|
||||
PRINTR " evades your blow."
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "LOWER"
|
||||
|
||||
|
||||
.FUNCT CONSTRUCTION-F,RARG,CNT
|
||||
EQUAL? RARG,M-LOOK \?CCL3
|
||||
INTBL? CONSTRUCTION-LOC,NORTH-EXITS,11 \?CND4
|
||||
INC 'CNT
|
||||
?CND4: INTBL? CONSTRUCTION-LOC,NE-EXITS,17 \?CND6
|
||||
INC 'CNT
|
||||
?CND6: INTBL? CONSTRUCTION-LOC,EAST-EXITS,15 \?CND8
|
||||
INC 'CNT
|
||||
?CND8: INTBL? CONSTRUCTION-LOC,SE-EXITS,7 \?CND10
|
||||
INC 'CNT
|
||||
?CND10: ADD CONSTRUCTION-LOC,8
|
||||
INTBL? STACK,NORTH-EXITS,11 \?CND12
|
||||
INC 'CNT
|
||||
?CND12: ADD CONSTRUCTION-LOC,7
|
||||
INTBL? STACK,NE-EXITS,17 \?CND14
|
||||
INC 'CNT
|
||||
?CND14: SUB CONSTRUCTION-LOC,1
|
||||
INTBL? STACK,EAST-EXITS,15 \?CND16
|
||||
INC 'CNT
|
||||
?CND16: SUB CONSTRUCTION-LOC,9
|
||||
INTBL? STACK,SE-EXITS,7 \?CND18
|
||||
INC 'CNT
|
||||
?CND18: PRINTI "You are in an abandoned underground construction site, roughly octagonal in shape. "
|
||||
GRTR? CNT,0 \?CND20
|
||||
PRINTI "There "
|
||||
EQUAL? CNT,1 \?CCL24
|
||||
PRINTI "is an exit"
|
||||
JUMP ?CND22
|
||||
?CCL24: PRINTI "are exits"
|
||||
?CND22: PRINTI " to the "
|
||||
INTBL? CONSTRUCTION-LOC,NORTH-EXITS,11 \?CND25
|
||||
PRINTI "north"
|
||||
DEC 'CNT
|
||||
ICALL2 AND-OR-COMMA,CNT
|
||||
?CND25: INTBL? CONSTRUCTION-LOC,NE-EXITS,17 \?CND27
|
||||
PRINTI "northeast"
|
||||
DEC 'CNT
|
||||
ICALL2 AND-OR-COMMA,CNT
|
||||
?CND27: INTBL? CONSTRUCTION-LOC,EAST-EXITS,15 \?CND29
|
||||
PRINTI "east"
|
||||
DEC 'CNT
|
||||
ICALL2 AND-OR-COMMA,CNT
|
||||
?CND29: INTBL? CONSTRUCTION-LOC,SE-EXITS,7 \?CND31
|
||||
PRINTI "southeast"
|
||||
DEC 'CNT
|
||||
ICALL2 AND-OR-COMMA,CNT
|
||||
?CND31: ADD CONSTRUCTION-LOC,8
|
||||
INTBL? STACK,NORTH-EXITS,11 \?CND33
|
||||
PRINTI "south"
|
||||
DEC 'CNT
|
||||
ICALL2 AND-OR-COMMA,CNT
|
||||
?CND33: ADD CONSTRUCTION-LOC,7
|
||||
INTBL? STACK,NE-EXITS,17 \?CND35
|
||||
PRINTI "southwest"
|
||||
DEC 'CNT
|
||||
ICALL2 AND-OR-COMMA,CNT
|
||||
?CND35: SUB CONSTRUCTION-LOC,1
|
||||
INTBL? STACK,EAST-EXITS,15 \?CND37
|
||||
PRINTI "west"
|
||||
DEC 'CNT
|
||||
ICALL2 AND-OR-COMMA,CNT
|
||||
?CND37: SUB CONSTRUCTION-LOC,9
|
||||
INTBL? STACK,SE-EXITS,7 \?CND39
|
||||
PRINTI "northwest"
|
||||
DEC 'CNT
|
||||
ICALL2 AND-OR-COMMA,CNT
|
||||
?CND39: PRINTI ". "
|
||||
?CND20: EQUAL? CONSTRUCTION-LOC,47 \?CND41
|
||||
PRINTI "Also, a heavily used passage leads east. "
|
||||
?CND41: PRINTI "Engraved on the wall is the number "
|
||||
PRINTN CONSTRUCTION-LOC
|
||||
PRINTC 46
|
||||
RTRUE
|
||||
?CCL3: EQUAL? RARG,M-ENTER \FALSE
|
||||
DIV CONSTRUCTION-LOC,8
|
||||
ADD STACK,1 >RANK
|
||||
MOD CONSTRUCTION-LOC,8
|
||||
ADD STACK,1 >FILE
|
||||
CALL UNSTORE,CONSTRUCTION-OFFSET,CONSTRUCTION-LOC
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT AND-OR-COMMA,CNT
|
||||
EQUAL? CNT,1 \?CCL3
|
||||
PRINTI " and "
|
||||
RTRUE
|
||||
?CCL3: GRTR? CNT,1 \FALSE
|
||||
PRINTI ", "
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT CONSTRUCTION-MOVEMENT-F,RARG,CHANGE
|
||||
ZERO? RARG \FALSE
|
||||
ICALL STORE,CONSTRUCTION-OFFSET,CONSTRUCTION-LOC
|
||||
CALL OBSTRUCTION,CONSTRUCTION-LOC,PRSO,TRUE-VALUE >CHANGE
|
||||
EQUAL? CHANGE,100 \?CND3
|
||||
RETURN FIELD-OFFICE
|
||||
?CND3: DIV CONSTRUCTION-LOC,8
|
||||
ADD STACK,1 >RANK
|
||||
MOD CONSTRUCTION-LOC,8
|
||||
ADD STACK,1 >FILE
|
||||
ZERO? CHANGE \?CCL7
|
||||
ICALL UNSTORE,CONSTRUCTION-OFFSET,CONSTRUCTION-LOC
|
||||
ICALL1 CANT-GO
|
||||
RFALSE
|
||||
?CCL7: ADD CONSTRUCTION-LOC,CHANGE >CONSTRUCTION-LOC
|
||||
ICALL UNSTORE,CONSTRUCTION-OFFSET,CONSTRUCTION-LOC
|
||||
RETURN CONSTRUCTION
|
||||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT REMOVE-ANY-PIECE,L,TAKER,TAKEE,CNT
|
||||
?PRG1: LESS? CNT,STORAGE-TABLE-LENGTH \TRUE
|
||||
GET STORAGE-TABLE,CNT
|
||||
EQUAL? STACK,L \?CND3
|
||||
ADD CNT,1
|
||||
GET STORAGE-TABLE,STACK >TAKEE
|
||||
FSET? TAKEE,WHITEBIT /?CCL8
|
||||
FSET? TAKEE,BLACKBIT \?CND3
|
||||
?CCL8: ICALL ROB,TAKEE,TAKER
|
||||
PUT STORAGE-TABLE,CNT,0
|
||||
ADD CNT,1
|
||||
PUT STORAGE-TABLE,STACK,0
|
||||
?CND3: ADD CNT,2 >CNT
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT PUT-IN-STORAGE,OFFSET,OBJ,L,CNT
|
||||
?PRG1: GET STORAGE-TABLE,CNT
|
||||
ZERO? STACK \?CCL5
|
||||
ADD L,OFFSET
|
||||
PUT STORAGE-TABLE,CNT,STACK
|
||||
ADD CNT,1
|
||||
PUT STORAGE-TABLE,STACK,OBJ
|
||||
RTRUE
|
||||
?CCL5: ADD CNT,2 >CNT
|
||||
JUMP ?PRG1
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "VILLAGE"
|
||||
|
||||
.SEGMENT "FENSHIRE"
|
||||
|
||||
.SEGMENT "LOWER"
|
||||
|
||||
|
||||
.FUNCT STORE,OFFSET,L,RM,CNT,F,N
|
||||
ASSIGNED? 'RM /?CND1
|
||||
SET 'RM,HERE
|
||||
?CND1: FIRST? RM >F /?PRG4
|
||||
?PRG4: ZERO? F /TRUE
|
||||
NEXT? F >N /?CND6
|
||||
?CND6: EQUAL? F,PROTAGONIST /?CND10
|
||||
?PRG12: EQUAL? F,JESTER \?CCL16
|
||||
ICALL1 REMOVE-J
|
||||
JUMP ?CND10
|
||||
?CCL16: GET STORAGE-TABLE,CNT
|
||||
ZERO? STACK \?CCL18
|
||||
ADD L,OFFSET
|
||||
PUT STORAGE-TABLE,CNT,STACK
|
||||
ADD CNT,1
|
||||
PUT STORAGE-TABLE,STACK,F
|
||||
ADD CNT,2 >CNT
|
||||
REMOVE F
|
||||
?CND10: SET 'F,N
|
||||
JUMP ?PRG4
|
||||
?CCL18: ADD CNT,2 >CNT
|
||||
JUMP ?PRG12
|
||||
|
||||
|
||||
.FUNCT UNSTORE,OFFSET,L,RM,CNT,?TMP1
|
||||
ASSIGNED? 'RM /?PRG3
|
||||
SET 'RM,HERE
|
||||
?PRG3: LESS? CNT,STORAGE-TABLE-LENGTH \TRUE
|
||||
GET STORAGE-TABLE,CNT >?TMP1
|
||||
ADD L,OFFSET
|
||||
EQUAL? ?TMP1,STACK \?CND5
|
||||
ADD CNT,1
|
||||
GET STORAGE-TABLE,STACK
|
||||
MOVE STACK,RM
|
||||
PUT STORAGE-TABLE,CNT,0
|
||||
ADD CNT,1
|
||||
PUT STORAGE-TABLE,STACK,0
|
||||
?CND5: ADD CNT,2 >CNT
|
||||
JUMP ?PRG3
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.ENDI
|
|
@ -0,0 +1,937 @@
|
|||
"CHESS for
|
||||
|
||||
ZORK ZERO
|
||||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<BEGIN-SEGMENT FENSHIRE>
|
||||
|
||||
<GLOBAL RANK 2> ;"used for both Plain and Construction"
|
||||
|
||||
<GLOBAL FILE 5> ;"used for both Plain and Construction"
|
||||
|
||||
<GLOBAL PLAIN-LOC 12>
|
||||
|
||||
<ROOM PLAIN
|
||||
(LOC ROOMS)
|
||||
(REGION "Region: Unknown")
|
||||
(DESC "Plain")
|
||||
(NORTH PER PLAIN-MOVEMENT-F)
|
||||
(NE PER PLAIN-MOVEMENT-F)
|
||||
(EAST PER PLAIN-MOVEMENT-F)
|
||||
(SE PER PLAIN-MOVEMENT-F)
|
||||
(SOUTH PER PLAIN-MOVEMENT-F)
|
||||
(SW PER PLAIN-MOVEMENT-F)
|
||||
(WEST PER PLAIN-MOVEMENT-F)
|
||||
(NW PER PLAIN-MOVEMENT-F)
|
||||
(FLAGS RLANDBIT OUTSIDEBIT ONBIT)
|
||||
(VALUE 16)
|
||||
(ACTION PLAIN-F)>
|
||||
|
||||
;"if the sum of RANK and FILE is even, you're on a white square. If the sum
|
||||
is odd, you're on a black square."
|
||||
|
||||
<ROUTINE PLAIN-F ("OPT" (RARG <>) "AUX" PIECE)
|
||||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||||
<TELL "You are on an amazingly flat plain of ">
|
||||
<COND (<EQUAL? <MOD <+ ,RANK ,FILE> 2> 0>
|
||||
<TELL "sun-bleached sand">)
|
||||
(T
|
||||
<TELL "deep, rich loam">)>
|
||||
<TELL
|
||||
". The plain seems to stretch endlessly in all directions">
|
||||
<COND (<OR <EQUAL? ,RANK 1 8>
|
||||
<EQUAL? ,FILE 1 8>>
|
||||
<TELL ", except to the ">
|
||||
<COND (<EQUAL? ,RANK 1>
|
||||
<TELL "north">
|
||||
<COND (<EQUAL? ,FILE 1>
|
||||
<TELL " and west">)
|
||||
(<EQUAL? ,FILE 8>
|
||||
<TELL " and east">)>)
|
||||
(<EQUAL? ,RANK 8>
|
||||
<TELL "south">
|
||||
<COND (<EQUAL? ,FILE 1>
|
||||
<TELL " and west">)
|
||||
(<EQUAL? ,FILE 8>
|
||||
<TELL " and east">)>)
|
||||
(<EQUAL? ,FILE 1>
|
||||
<TELL "west">)
|
||||
(T
|
||||
<TELL "east">)>
|
||||
<TELL ", where the world seems to end in a gray void">)>
|
||||
<TELL ".">)
|
||||
(<AND <EQUAL? .RARG ,M-END>
|
||||
<SET PIECE <OR <FIND-IN ,HERE ,BLACKBIT>
|
||||
<FIND-IN ,HERE ,WHITEBIT>>>
|
||||
<NOT <FSET? .PIECE ,TOUCHBIT>>>
|
||||
<FSET .PIECE ,TOUCHBIT>
|
||||
<COND (<PROB 30>
|
||||
<TELL
|
||||
" The " D .PIECE " notices your cloak and bows gracefully. \"Greetings,
|
||||
Lordship. It's been a long time between moves -- I'll bet you've got a great
|
||||
one planned!\"" CR>)>)>>
|
||||
|
||||
<ROUTINE PLAIN-MOVEMENT-F ("OPTIONAL" (RARG <>)) ;"called by NEXT-ROOM?"
|
||||
<COND (.RARG
|
||||
<RFALSE>)
|
||||
(<OR <AND <EQUAL? ,RANK 1>
|
||||
<PRSO? ,P?NORTH ,P?NE ,P?NW>>
|
||||
<AND <EQUAL? ,RANK 8>
|
||||
<PRSO? ,P?SOUTH ,P?SE ,P?SW>>
|
||||
<AND <EQUAL? ,FILE 8>
|
||||
<PRSO? ,P?EAST ,P?NE ,P?SE>>
|
||||
<AND <EQUAL? ,FILE 1>
|
||||
<PRSO? ,P?WEST ,P?NW ,P?SW>>>
|
||||
<TELL "The world ends at a gray void in that direction." CR>
|
||||
<RFALSE>)>
|
||||
<COND (<PRSO? ,P?NORTH ,P?NE ,P?NW>
|
||||
<SETG RANK <- ,RANK 1>>)>
|
||||
<COND (<PRSO? ,P?SOUTH ,P?SE ,P?SW>
|
||||
<SETG RANK <+ ,RANK 1>>)>
|
||||
<COND (<PRSO? ,P?EAST ,P?SE ,P?NE>
|
||||
<SETG FILE <+ ,FILE 1>>)>
|
||||
<COND (<PRSO? ,P?WEST ,P?SW ,P?NW>
|
||||
<SETG FILE <- ,FILE 1>>)>
|
||||
<STORE ,PLAIN-OFFSET ,PLAIN-LOC>
|
||||
<SETG PLAIN-LOC <- <+ <* <- ,RANK 1> 8> ,FILE> 1>>
|
||||
<UNSTORE ,PLAIN-OFFSET ,PLAIN-LOC>
|
||||
,PLAIN>
|
||||
|
||||
<OBJECT BLACK-KNIGHT
|
||||
(DESC "mounted soldier")
|
||||
(LDESC
|
||||
"There is a soldier on horseback here. His armor is made of the dullest
|
||||
metals, and his steed is darker than the night.")
|
||||
(SYNONYM SOLDIER KNIGHT HORSE MAN)
|
||||
(ADJECTIVE MOUNTED BLACK)
|
||||
(FLAGS ACTORBIT CONTBIT OPENBIT SEARCHBIT BLACKBIT)
|
||||
(ACTION PIECE-F)>
|
||||
|
||||
<OBJECT WHITE-KNIGHT
|
||||
(DESC "mounted soldier")
|
||||
(LDESC
|
||||
"There is a soldier on horseback here. His armor is made of the shiniest
|
||||
metals, and his steed is lighter than drifted snow.")
|
||||
(SYNONYM SOLDIER KNIGHT HORSE MAN)
|
||||
(ADJECTIVE MOUNTED WHITE)
|
||||
(FLAGS ACTORBIT CONTBIT OPENBIT SEARCHBIT WHITEBIT)
|
||||
(ACTION PIECE-F)>
|
||||
|
||||
<OBJECT BLACK-PAWN
|
||||
(DESC "foot soldier")
|
||||
(LDESC
|
||||
"You spot a solitary, bored-looking foot soldier. His face is smudged with
|
||||
coal dust, his uniform is sewn from deeply dyed wool, and the handle of his
|
||||
sword is solid obsidian.")
|
||||
(SYNONYM SOLDIER PAWN MAN)
|
||||
(ADJECTIVE FOOT BLACK)
|
||||
(FLAGS ACTORBIT CONTBIT OPENBIT SEARCHBIT BLACKBIT)
|
||||
(ACTION PIECE-F)>
|
||||
|
||||
<OBJECT BLACK-QUEEN
|
||||
(DESC "queen")
|
||||
(LDESC
|
||||
"A regal woman proudly surveys the landscape in all directions. Her skin
|
||||
is dark; her royal garments even darker.")
|
||||
(SYNONYM QUEEN WOMAN)
|
||||
(ADJECTIVE REGAL PROUD DARK BLACK)
|
||||
(FLAGS ACTORBIT FEMALEBIT CONTBIT OPENBIT SEARCHBIT BLACKBIT)
|
||||
(ACTION PIECE-F)>
|
||||
|
||||
<OBJECT WHITE-CASTLE
|
||||
(DESC "man atop a castle tower")
|
||||
(LDESC
|
||||
"Nearby rises a small tower keep, made of creamy marble. Between the
|
||||
crenellations of the parapet you spot a man, dressed in an ivory chain
|
||||
mail and carrying a crossbow made of birch.")
|
||||
(SYNONYM MAN TOWER CASTLE ROOK)
|
||||
(ADJECTIVE CASTLE WHITE)
|
||||
(FLAGS ACTORBIT CONTBIT OPENBIT SEARCHBIT WHITEBIT)
|
||||
(ACTION PIECE-F)>
|
||||
|
||||
<OBJECT BLACK-BISHOP
|
||||
(DESC "high priest")
|
||||
(LDESC
|
||||
"You hear a sing-song prayer chant and turn to see a high priest of some sort.
|
||||
His tall, ebony headpiece bears a religious cipher, and his vestments seem to
|
||||
soak up all light.")
|
||||
(SYNONYM PRIEST BISHOP MAN)
|
||||
(ADJECTIVE HIGH BLACK)
|
||||
(FLAGS ACTORBIT CONTBIT OPENBIT SEARCHBIT BLACKBIT)
|
||||
(ACTION PIECE-F)>
|
||||
|
||||
<OBJECT WHITE-PAWN
|
||||
(DESC "foot soldier")
|
||||
(LDESC
|
||||
"You spot a solitary, bored-looking foot soldier. His face is smudged with
|
||||
flour, his uniform is sewn from pure undyed cotton, and the handle of his
|
||||
sword is solid quartz.")
|
||||
(SYNONYM SOLDIER PAWN MAN)
|
||||
(ADJECTIVE WHITE FOOT)
|
||||
(FLAGS ACTORBIT CONTBIT OPENBIT SEARCHBIT WHITEBIT)
|
||||
(ACTION PIECE-F)>
|
||||
|
||||
<OBJECT WHITE-QUEEN
|
||||
(DESC "queen")
|
||||
(LDESC
|
||||
"A regal woman proudly surveys the landscape in all directions. Her royal
|
||||
garments are as white as her pale complexion.")
|
||||
(SYNONYM QUEEN WOMAN)
|
||||
(ADJECTIVE REGAL PROUD WHITE)
|
||||
(FLAGS ACTORBIT FEMALEBIT CONTBIT OPENBIT SEARCHBIT WHITEBIT)
|
||||
(ACTION PIECE-F)>
|
||||
|
||||
<OBJECT WHITE-KING
|
||||
(DESC "royal leader")
|
||||
(LDESC
|
||||
"A tall man wearing princely robes stands nearby. His bearing indicates that
|
||||
this is a man accustomed to command. His linen robes are trimmed with ermine,
|
||||
and his crown is studded with diamonds and opals.")
|
||||
(SYNONYM LEADER KING MAN)
|
||||
(ADJECTIVE ROYAL WHITE TALL)
|
||||
(FLAGS ACTORBIT CONTBIT OPENBIT SEARCHBIT WHITEBIT)
|
||||
(ACTION PIECE-F)>
|
||||
|
||||
<OBJECT WHITE-KING-CROWN
|
||||
(LOC WHITE-KING)
|
||||
(DESC "crown")
|
||||
(SYNONYM CROWN)
|
||||
(FLAGS NDESCBIT)>
|
||||
|
||||
<OBJECT WHITE-KING-ROBE
|
||||
(LOC WHITE-KING)
|
||||
(DESC "robe")
|
||||
(SYNONYM ROBE)
|
||||
(FLAGS NDESCBIT)>
|
||||
|
||||
<OBJECT BLACK-KING
|
||||
(DESC "royal leader")
|
||||
(LDESC
|
||||
"A tall man wearing princely robes stands nearby. His bearing indicates that
|
||||
this is a man accustomed to command. His velvet robes are trimmed with mink,
|
||||
and his crown is studded with polished onyx.")
|
||||
(SYNONYM LEADER KING MAN)
|
||||
(ADJECTIVE ROYAL BLACK TALL)
|
||||
(FLAGS ACTORBIT CONTBIT OPENBIT SEARCHBIT BLACKBIT)
|
||||
(ACTION PIECE-F)>
|
||||
|
||||
<OBJECT BLACK-KING-ROBE
|
||||
(LOC BLACK-KING)
|
||||
(DESC "robe")
|
||||
(SYNONYM ROBE)
|
||||
(FLAGS NDESCBIT)>
|
||||
|
||||
<OBJECT BLACK-KING-CROWN
|
||||
(LOC BLACK-KING)
|
||||
(DESC "crown")
|
||||
(SYNONYM CROWN)
|
||||
(FLAGS NDESCBIT)>
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
;<BEGIN-SEGMENT VILLAGE>
|
||||
;<BEGIN-SEGMENT LOWER>
|
||||
|
||||
<GLOBAL DIR-CNT 0>
|
||||
|
||||
<ROUTINE PIECE-F ("OPT" (ARG <>) "AUX" CNT)
|
||||
<COND (<OR <FSET? ,WINNER ,BLACKBIT>
|
||||
<FSET? ,WINNER ,WHITEBIT>>
|
||||
<COND (,TIME-STOPPED
|
||||
<SETG P-CONT -1>
|
||||
<TELL
|
||||
"Seemingly frozen," T ,WINNER " is unresponsive." CR>)
|
||||
(<AND <VERB? WALK>
|
||||
<PRSO? ,P?IN ,P?OUT ,P?UP ,P?DOWN>>
|
||||
<SETG DIR-CNT 0>
|
||||
<TELL ,CANNOT-TRAVEL>
|
||||
<STOP>)
|
||||
(<AND <NOT <AND <VERB? WALK>
|
||||
<T? ,P-WALK-DIR>>>
|
||||
<NOT <AND <VERB? MOVE>
|
||||
<PRSO? ,INTDIR>>>>
|
||||
<SETG DIR-CNT 0>
|
||||
<COND (<AND <VERB? WALK> ;"as in >ROOK, GO SOUTH ONE"
|
||||
;<PRSO? ,WALL>
|
||||
<NOUN-USED? ,PRSO ,W?ONE>>
|
||||
<TELL
|
||||
"[The proper way to ask" T ,WINNER " to move is simply to tell
|
||||
the direction(s), as in >CHARACTER, NW.NW]" CR>)
|
||||
(T
|
||||
<SETG P-CONT -1>
|
||||
<TELL
|
||||
"\"You can tell me directions. That's it.\"" CR>)>)
|
||||
(<NOT <EQUAL? ,HERE ,PLAIN ,CONSTRUCTION>>
|
||||
<SETG P-CONT -1>
|
||||
<TELL
|
||||
"\"The terrain is strange and unfamiliar; I am too terrified to move!\"" CR>)
|
||||
(<EQUAL? ,DIR-CNT 7>
|
||||
<SETG DIR-CNT 0>
|
||||
<SETG P-CONT -1>
|
||||
<TELL "\"Too many directions!\"" CR>)
|
||||
(T
|
||||
<COND (<VERB? MOVE>
|
||||
<SETG PRSO <DIRECTION-CONVERSION>>)>
|
||||
<PUT ,PIECE-MOVE-TABLE ,DIR-CNT ,PRSO>
|
||||
<SETG DIR-CNT <+ ,DIR-CNT 1>>
|
||||
<COND (<AND <G? ,DIR-CNT 1>
|
||||
<NOT <EQUAL? ,WINNER
|
||||
,WHITE-KNIGHT
|
||||
,BLACK-KNIGHT>>
|
||||
<NOT <EQUAL? ,PRSO
|
||||
<GET ,PIECE-MOVE-TABLE
|
||||
<- ,DIR-CNT 2>>>>>
|
||||
;"checks to make sure that all directions given
|
||||
are the same, except in the case of knights"
|
||||
<SETG DIR-CNT 0>
|
||||
<COPYT ,PIECE-MOVE-TABLE 0 16>
|
||||
<TELL ,CANNOT-TRAVEL>
|
||||
<STOP>)
|
||||
(<OR ,P-CONT ,M-PTR>
|
||||
<SETG CLOCK-WAIT T>)
|
||||
(T
|
||||
<SETG DIR-CNT 0>
|
||||
<MOVE-PIECE>)>)>
|
||||
<RTRUE>)
|
||||
(<AND <VERB? ENTER>
|
||||
<PRSO? ,WHITE-CASTLE>
|
||||
<NOT <NOUN-USED? ,WHITE-CASTLE ,W?MAN>>>
|
||||
<TELL "Oddly, there doesn't seem to be any entrance." CR>)
|
||||
(<AND <VERB? ENTER>
|
||||
<PRSO? ,WHITE-KNIGHT ,BLACK-KNIGHT>
|
||||
<NOUN-USED? ,PRSO ,W?HORSE>>
|
||||
<TELL "The horse isn't large enough for two riders." CR>)
|
||||
(<VERB? MOVE>
|
||||
<TELL
|
||||
"Perhaps you should tell" T ,PRSO " the direction(s)." CR>)
|
||||
(<AND <VERB? GIVE>
|
||||
<NOT <FSET? ,PRSO ,TRYTAKEBIT>>
|
||||
<NOT <FIND-IN ,PRSO ,TRYTAKEBIT>>
|
||||
<OR <FSET? ,PRSI ,WHITEBIT>
|
||||
<FSET? ,PRSI ,BLACKBIT>>>
|
||||
<COND (,TIME-STOPPED
|
||||
<PERFORM ,V?TELL ,PRSI>
|
||||
<RTRUE>)>
|
||||
<MOVE ,PRSO ,PRSI>
|
||||
<TELL "The " D ,PRSI " takes" T ,PRSO ".">
|
||||
<COND (<AND <PRSO? ,PIGEON>
|
||||
<NOT <EQUAL? ,HERE <META-LOC ,PERCH>>>
|
||||
<OR <NOT <EQUAL? ,HERE ,OUBLIETTE>>
|
||||
<NOT <EQUAL? ,REMOVED-PERCH-LOC ,OUBLIETTE>>>>
|
||||
<PIECE-TAKES-PIGEON ,PRSI>)
|
||||
(T
|
||||
<TELL
|
||||
" \"Your graciousness is not unappreciated, your Lordship.\"" CR>)>)
|
||||
(<AND <VERB? ASK-FOR>
|
||||
<OR <FSET? <LOC ,PRSI> ,WHITEBIT>
|
||||
<FSET? <LOC ,PRSI> ,BLACKBIT>>>
|
||||
<PERFORM ,V?TAKE ,PRSI>
|
||||
<RTRUE>)>>
|
||||
|
||||
<ROUTINE PIECE-TAKES-PIGEON (PIECE "OPTIONAL" (DO-CR T))
|
||||
<MOVE-TO-PERCH .PIECE>
|
||||
<TELL " Instantly,">
|
||||
<COND (<EQUAL? .PIECE ,WHITE-CASTLE>
|
||||
<TELL " the tower">)
|
||||
(T
|
||||
<TELL T .PIECE>)>
|
||||
<TELL " seems to grow more distant without moving. Within seconds,">
|
||||
<COND (<EQUAL? .PIECE ,WHITE-CASTLE>
|
||||
<TELL " the tower">)
|
||||
(T
|
||||
<TELL T .PIECE>)>
|
||||
<TELL " is gone.">
|
||||
<COND (.DO-CR
|
||||
<CRLF>)>
|
||||
<RTRUE>>
|
||||
|
||||
<CONSTANT PIECE-MOVE-TABLE
|
||||
<TABLE 0 0 0 0 0 0 0 0>>
|
||||
|
||||
<ROUTINE MOVE-PIECE
|
||||
("AUX" CNT DIR NEW-RANK NEW-FILE NEW-LOC X OFFSET BLOCK)
|
||||
<SET NEW-RANK ,RANK>
|
||||
<SET NEW-FILE ,FILE>
|
||||
<SET NEW-LOC <+ <* <- .NEW-RANK 1> 8> <- .NEW-FILE 1>>>
|
||||
<SET CNT 0>
|
||||
<REPEAT ()
|
||||
<SET DIR <GET ,PIECE-MOVE-TABLE .CNT>>
|
||||
<COND (<EQUAL? .DIR <>>
|
||||
<RETURN>)>
|
||||
<COND (<EQUAL? .DIR ,P?NORTH ,P?NE ,P?NW>
|
||||
<SET NEW-RANK <- .NEW-RANK 1>>)>
|
||||
<COND (<EQUAL? .DIR ,P?EAST ,P?NE ,P?SE>
|
||||
<SET NEW-FILE <+ .NEW-FILE 1>>)>
|
||||
<COND (<EQUAL? .DIR ,P?SOUTH ,P?SE ,P?SW>
|
||||
<SET NEW-RANK <+ .NEW-RANK 1>>)>
|
||||
<COND (<EQUAL? .DIR ,P?WEST ,P?SW ,P?NW>
|
||||
<SET NEW-FILE <- .NEW-FILE 1>>)>
|
||||
<SET CNT <+ .CNT 1>>
|
||||
<COND (<AND <EQUAL? ,HERE ,CONSTRUCTION>
|
||||
<NOT <EQUAL? ,WINNER ,BLACK-KNIGHT ,WHITE-KNIGHT>>
|
||||
<OBSTRUCTION .NEW-LOC .DIR>>
|
||||
<SET BLOCK T>
|
||||
<COND (<AND <EQUAL? .DIR ,P?EAST>
|
||||
<EQUAL? .NEW-LOC 47>>
|
||||
<TELL
|
||||
"\"Appearances deceive you -- such a move would send me
|
||||
off the edge of the world!\"" CR>)
|
||||
(T
|
||||
<TELL
|
||||
"\"My word! There appears to be a wall in the way!\"" CR>)>
|
||||
<RETURN>)>
|
||||
<SET NEW-LOC <+ <* <- .NEW-RANK 1> 8> <- .NEW-FILE 1>>>
|
||||
<COND (<AND <GET ,PIECE-MOVE-TABLE .CNT>
|
||||
<NOT <EQUAL? ,WINNER ,BLACK-KNIGHT ,WHITE-KNIGHT>>
|
||||
<PIECE-AT-NEW-LOC? .NEW-LOC>>
|
||||
<SET BLOCK T>
|
||||
<TELL
|
||||
"\"Alas, the path between here and there is not unobstructed.\"" CR>
|
||||
<RETURN>)>>
|
||||
<SET DIR <DIR-TO-STRING <GET ,PIECE-MOVE-TABLE 0>>>
|
||||
;"for later use, after chess piece says 'I'm off!'"
|
||||
<COPYT ,PIECE-MOVE-TABLE 0 16>
|
||||
<COND (.BLOCK ;"obstructed path to new square"
|
||||
<RTRUE>)>
|
||||
<SET X <ILLEGAL-MOVE? .NEW-LOC .NEW-RANK .NEW-FILE>>
|
||||
<COND (<EQUAL? .X ,M-FATAL> ;"pawn blocked by another piece"
|
||||
<TELL "\"That land is occupied!\"" CR>
|
||||
<RTRUE>)
|
||||
(.X
|
||||
<TELL ,CANNOT-TRAVEL>
|
||||
<STOP>)
|
||||
(<OR <G? .NEW-RANK 8>
|
||||
<G? .NEW-FILE 8>
|
||||
<L? .NEW-RANK 1>
|
||||
<L? .NEW-FILE 1>>
|
||||
<TELL
|
||||
"\"You would have me plunge off the end of the world">
|
||||
<COND (<EQUAL? ,HERE ,CONSTRUCTION>
|
||||
<TELL
|
||||
" -- or whatever passes for the end of the world in this forsaken badland">)>
|
||||
<TELL "!\"" CR>)
|
||||
(<NOT <TAKE-PIECE? .NEW-LOC>>
|
||||
<REMOVE ,WINNER>
|
||||
<TELL "\"I'm off!\" The " 'WINNER>
|
||||
<COND (<EQUAL? ,WINNER ,WHITE-KNIGHT ,BLACK-KNIGHT>
|
||||
<TELL
|
||||
" and his steed jump high into the air and vanish! A moment later, you hear
|
||||
a proud whinny in the distance.">)
|
||||
(T
|
||||
<TELL " moves out of sight to the " .DIR ".">)>
|
||||
<CRLF>
|
||||
<COND (<AND <EQUAL? ,WINNER ,WHITE-PAWN>
|
||||
<EQUAL? ,HERE ,PLAIN>
|
||||
<L? .NEW-LOC 8>> ;"promote pawn to queen"
|
||||
<ROB ,WHITE-PAWN ,WHITE-QUEEN>
|
||||
<SETG WINNER ,WHITE-QUEEN>)
|
||||
(<AND <EQUAL? ,WINNER ,BLACK-PAWN>
|
||||
<EQUAL? ,HERE ,PLAIN>
|
||||
<G? .NEW-LOC 55>> ;"promote pawn to queen"
|
||||
<ROB ,BLACK-PAWN ,BLACK-QUEEN>
|
||||
<SETG WINNER ,BLACK-QUEEN>)>
|
||||
<COND (<EQUAL? ,HERE ,PLAIN>
|
||||
<SET OFFSET ,PLAIN-OFFSET>)
|
||||
(T
|
||||
<SET OFFSET ,CONSTRUCTION-OFFSET>)>
|
||||
<PIECE-SNARF <+ .NEW-LOC .OFFSET> ,WINNER>
|
||||
<PUT-IN-STORAGE .OFFSET ,WINNER .NEW-LOC>)>>
|
||||
|
||||
<ROUTINE DIR-TO-STRING (DIR)
|
||||
<COND (<EQUAL? .DIR ,P?UP>
|
||||
<RETURN "up">)
|
||||
(<EQUAL? .DIR ,P?DOWN>
|
||||
<RETURN "down">)
|
||||
(<EQUAL? .DIR ,P?NORTH>
|
||||
<RETURN "north">)
|
||||
(<EQUAL? .DIR ,P?NE>
|
||||
<RETURN "northeast">)
|
||||
(<EQUAL? .DIR ,P?EAST>
|
||||
<RETURN "east">)
|
||||
(<EQUAL? .DIR ,P?SE>
|
||||
<RETURN "southeast">)
|
||||
(<EQUAL? .DIR ,P?SOUTH>
|
||||
<RETURN "south">)
|
||||
(<EQUAL? .DIR ,P?SW>
|
||||
<RETURN "southwest">)
|
||||
(<EQUAL? .DIR ,P?WEST>
|
||||
<RETURN "west">)
|
||||
(<EQUAL? .DIR ,P?NW>
|
||||
<RETURN "northwest">)>>
|
||||
|
||||
<ROUTINE PIECE-SNARF (NEW-LOC SNARFER "AUX" OBJ (CNT 0) (TOOK-PIGEON <>))
|
||||
<REPEAT ()
|
||||
<COND (<NOT <L? .CNT ,STORAGE-TABLE-LENGTH>>
|
||||
<RETURN>)
|
||||
(<EQUAL? <GET ,STORAGE-TABLE .CNT> .NEW-LOC>
|
||||
<SET OBJ <GET ,STORAGE-TABLE <+ .CNT 1>>>
|
||||
<COND (<AND <FSET? .OBJ ,TAKEBIT>
|
||||
<NOT <FSET? .OBJ ,TRYTAKEBIT>>
|
||||
<NOT <FIND-IN .OBJ ,TRYTAKEBIT>>>
|
||||
<COND (<EQUAL? .OBJ ,PIGEON>
|
||||
<SET TOOK-PIGEON T>)>
|
||||
<MOVE .OBJ .SNARFER>
|
||||
<PUT ,STORAGE-TABLE .CNT 0>
|
||||
<PUT ,STORAGE-TABLE <+ .CNT 1> 0>)>)>
|
||||
<SET CNT <+ .CNT 2>>>
|
||||
<COND (.TOOK-PIGEON
|
||||
<MOVE-TO-PERCH .SNARFER>)>>
|
||||
|
||||
<ROUTINE TAKE-PIECE? (NEW-LOC "AUX" (TAKEE <>) (VAL <>))
|
||||
<SET TAKEE <PIECE-AT-NEW-LOC? .NEW-LOC>>
|
||||
<COND (<NOT .TAKEE>
|
||||
T)
|
||||
(<OR <AND <FSET? .TAKEE ,WHITEBIT>
|
||||
<FSET? ,WINNER ,WHITEBIT>>
|
||||
<AND <FSET? .TAKEE ,BLACKBIT>
|
||||
<FSET? ,WINNER ,BLACKBIT>>>
|
||||
<TELL "\"I cannot attack one of my own side!\"" CR>
|
||||
<SET VAL T>)
|
||||
(T ;"take the TAKEE"
|
||||
<PIECE-AT-NEW-LOC? .NEW-LOC T>)>
|
||||
<RETURN .VAL> ;"this routine is called by a predicate">
|
||||
|
||||
<ROUTINE ILLEGAL-MOVE? (NEW-LOC NEW-RANK NEW-FILE "AUX" (TAKEE <>) OLD-LOC)
|
||||
<SET OLD-LOC <COND (<EQUAL? ,HERE ,PLAIN>
|
||||
,PLAIN-LOC)
|
||||
(T
|
||||
,CONSTRUCTION-LOC)>>
|
||||
<COND (<EQUAL? ,WINNER ,WHITE-KNIGHT ,BLACK-KNIGHT>
|
||||
<COND (<EQUAL? <- .OLD-LOC .NEW-LOC>
|
||||
6 10 15 17 -6 -10 -15 -17>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<RTRUE>)>)
|
||||
(<EQUAL? ,WINNER ,WHITE-KING ,BLACK-KING>
|
||||
<COND (<EQUAL? <- .OLD-LOC .NEW-LOC>
|
||||
1 7 8 9 -1 -7 -8 -9>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<RTRUE>)>)
|
||||
(<EQUAL? ,WINNER ,BLACK-BISHOP>
|
||||
<COND (<G? .OLD-LOC .NEW-LOC>
|
||||
<COND (<EQUAL? <MOD <- .OLD-LOC .NEW-LOC> 7> 0>
|
||||
<RFALSE>)
|
||||
(<EQUAL? <MOD <- .OLD-LOC .NEW-LOC> 9> 0>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<RTRUE>)>)
|
||||
(T
|
||||
<COND (<EQUAL? <MOD <- .NEW-LOC .OLD-LOC> 7> 0>
|
||||
<RFALSE>)
|
||||
(<EQUAL? <MOD <- .NEW-LOC .OLD-LOC> 9> 0>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<RTRUE>)>)>)
|
||||
(<EQUAL? ,WINNER ,WHITE-CASTLE>
|
||||
<COND (<AND <NOT <EQUAL? ,RANK .NEW-RANK>>
|
||||
<NOT <EQUAL? ,FILE .NEW-FILE>>>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<RFALSE>)>)
|
||||
(<EQUAL? ,WINNER ,WHITE-QUEEN ,BLACK-QUEEN>
|
||||
<COND (<OR <EQUAL? ,RANK .NEW-RANK>
|
||||
<EQUAL? ,FILE .NEW-FILE>>
|
||||
<RFALSE>)
|
||||
(<AND <G? .NEW-LOC .OLD-LOC>
|
||||
<OR <EQUAL? <MOD <- .NEW-LOC .OLD-LOC> 7> 0>
|
||||
<EQUAL? <MOD <- .NEW-LOC .OLD-LOC> 9> 0>>>
|
||||
<RFALSE>)
|
||||
(<AND <G? .OLD-LOC .NEW-LOC>
|
||||
<OR <EQUAL? <MOD <- .OLD-LOC .NEW-LOC> 7> 0>
|
||||
<EQUAL? <MOD <- .OLD-LOC .NEW-LOC> 9> 0>>>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<RTRUE>)>)
|
||||
(<EQUAL? ,WINNER ,BLACK-PAWN>
|
||||
<SET TAKEE <PIECE-AT-NEW-LOC? .NEW-LOC>>
|
||||
<COND (<AND <EQUAL? .OLD-LOC 14>
|
||||
<EQUAL? .NEW-LOC 30>>
|
||||
;"pawn can move two spaces on first move"
|
||||
<COND (.TAKEE
|
||||
<RFATAL>)
|
||||
(T
|
||||
<RFALSE>)>)
|
||||
(<EQUAL? <- .NEW-LOC .OLD-LOC> 7 9>
|
||||
<COND (<NOT .TAKEE>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<RFALSE>)>)
|
||||
(<EQUAL? <- .NEW-LOC .OLD-LOC> 8>
|
||||
<COND (.TAKEE
|
||||
<RFATAL>)
|
||||
(T
|
||||
<RFALSE>)>)
|
||||
(T
|
||||
<RTRUE>)>)
|
||||
(<EQUAL? ,WINNER ,WHITE-PAWN>
|
||||
<SET TAKEE <PIECE-AT-NEW-LOC? .NEW-LOC>>
|
||||
<COND (<AND <EQUAL? .OLD-LOC 49>
|
||||
<EQUAL? .NEW-LOC 33>>
|
||||
;"pawn can move two spaces on first move"
|
||||
<COND (.TAKEE
|
||||
<RFATAL>)
|
||||
(T
|
||||
<RFALSE>)>)
|
||||
(<EQUAL? <- .OLD-LOC .NEW-LOC> 7 9>
|
||||
<COND (.TAKEE
|
||||
<RFALSE>)
|
||||
(T
|
||||
<RTRUE>)>)
|
||||
(<EQUAL? <- .OLD-LOC .NEW-LOC> 8>
|
||||
<COND (.TAKEE
|
||||
<RFATAL>)
|
||||
(T
|
||||
<RFALSE>)>)
|
||||
(T
|
||||
<RTRUE>)>)
|
||||
(T
|
||||
<TELL "Bug7" CR>)>>
|
||||
|
||||
<ROUTINE PIECE-AT-NEW-LOC?
|
||||
(NEW-LOC "OPTIONAL" (TAKE-PIECE <>) "AUX" (CNT 0) (TAKEE <>))
|
||||
<SET NEW-LOC <+ .NEW-LOC <COND (<EQUAL? ,HERE ,CONSTRUCTION>
|
||||
,CONSTRUCTION-OFFSET)
|
||||
(T
|
||||
,PLAIN-OFFSET)>>>
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? .NEW-LOC <GET ,STORAGE-TABLE .CNT>>
|
||||
<SET TAKEE <GET ,STORAGE-TABLE <+ .CNT 1>>>
|
||||
<COND (<OR <FSET? .TAKEE ,WHITEBIT>
|
||||
<FSET? .TAKEE ,BLACKBIT>>
|
||||
<COND (.TAKE-PIECE
|
||||
<ROB .TAKEE ,WINNER>
|
||||
<PUT ,STORAGE-TABLE .CNT 0>)>
|
||||
<RETURN>)>)>
|
||||
<SET CNT <+ .CNT 2>>
|
||||
<COND (<NOT <L? .CNT ,STORAGE-TABLE-LENGTH>>
|
||||
<RETURN>)>>
|
||||
<COND (<NOT .TAKEE>
|
||||
<RFALSE>)
|
||||
(<OR <FSET? .TAKEE ,WHITEBIT>
|
||||
<FSET? .TAKEE ,BLACKBIT>>
|
||||
<RETURN .TAKEE>)
|
||||
(T
|
||||
<RFALSE>)>>
|
||||
|
||||
<ROUTINE OBSTRUCTION (L DIR "OPT" (CALLED-BY-EXIT-F <>) "AUX" (CHANGE 0))
|
||||
<COND (<AND <EQUAL? .DIR ,P?NORTH>
|
||||
<OR <INTBL? .L ,NORTH-EXITS 11>
|
||||
<INTBL? <+ .L 100> ,NORTH-EXITS 11>>>
|
||||
<SET CHANGE -8>)
|
||||
(<AND <EQUAL? .DIR ,P?NE>
|
||||
<INTBL? .L ,NE-EXITS 17>>
|
||||
<SET CHANGE -7>)
|
||||
(<EQUAL? .DIR ,P?EAST>
|
||||
<COND (<AND <EQUAL? .L 47>
|
||||
.CALLED-BY-EXIT-F>
|
||||
<SET CHANGE 100> ;"kludge")
|
||||
(<INTBL? .L ,EAST-EXITS 15>
|
||||
<SET CHANGE 1>)>)
|
||||
(<AND <EQUAL? .DIR ,P?SE>
|
||||
<OR <INTBL? .L ,SE-EXITS 7>
|
||||
<INTBL? <+ .L 100> ,SE-EXITS 7>>>
|
||||
<SET CHANGE 9>)
|
||||
(<AND <EQUAL? .DIR ,P?SOUTH>
|
||||
<OR <INTBL? <+ .L 8> ,NORTH-EXITS 11>
|
||||
<INTBL? <+ .L 108> ,NORTH-EXITS 11>>>
|
||||
<SET CHANGE 8>)
|
||||
(<AND <EQUAL? .DIR ,P?SW>
|
||||
<INTBL? <+ .L 7> ,NE-EXITS 17>>
|
||||
<SET CHANGE 7>)
|
||||
(<AND <EQUAL? .DIR ,P?WEST>
|
||||
<INTBL? <- .L 1> ,EAST-EXITS 15>>
|
||||
<SET CHANGE -1>)
|
||||
(<AND <EQUAL? .DIR ,P?NW>
|
||||
<OR <INTBL? <- .L 9> ,SE-EXITS 7>
|
||||
<INTBL? <+ .L 91> ,SE-EXITS 7>>>
|
||||
<SET CHANGE -9>)>
|
||||
<COND (.CALLED-BY-EXIT-F
|
||||
<RETURN .CHANGE>)
|
||||
(<EQUAL? .CHANGE 0>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<RFALSE>)>>
|
||||
|
||||
<END-SEGMENT>
|
||||
|
||||
<BEGIN-SEGMENT LOWER>
|
||||
|
||||
<ROOM FIELD-OFFICE
|
||||
(LOC ROOMS)
|
||||
(DESC "Field Office")
|
||||
(REGION "Flatheadia")
|
||||
(LDESC
|
||||
"This is a temporary headquarters for a construction site to the west.
|
||||
Another exit leads east.")
|
||||
(EAST TO EXIT)
|
||||
(WEST PER CONSTRUCTION-ENTER-F)
|
||||
(FLAGS RLANDBIT UNDERGROUNDBIT)
|
||||
(MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-4>)>
|
||||
|
||||
<ROUTINE CONSTRUCTION-ENTER-F ("OPTIONAL" (RARG <>)) ;"called by NEXT-ROOM?"
|
||||
<COND (.RARG
|
||||
<RFALSE>)>
|
||||
<SETG CONSTRUCTION-LOC 47>
|
||||
,CONSTRUCTION>
|
||||
|
||||
<OBJECT BLUEPRINT
|
||||
(LOC FIELD-OFFICE)
|
||||
(DESC "blueprint")
|
||||
(SYNONYM BLUEPRINT)
|
||||
(FLAGS TAKEBIT BURNBIT READBIT)
|
||||
(SIZE 2)
|
||||
(TEXT "[This is the blueprint from your ZORK ZERO package.]")>
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
<OBJECT HAMMER ;"in table, at Construction room #61"
|
||||
(DESC "hammer")
|
||||
(SYNONYM HAMMER)
|
||||
(FLAGS TAKEBIT)
|
||||
(SIZE 16)
|
||||
(ACTION HAMMER-F)>
|
||||
|
||||
<ROUTINE HAMMER-F ()
|
||||
<COND (<AND <VERB? KILL>
|
||||
<PRSI? ,HAMMER>> ;"hit object with hammer"
|
||||
<PERFORM ,V?MUNG ,PRSO ,HAMMER>
|
||||
<RTRUE>)
|
||||
(<AND <VERB? MUNG>
|
||||
<PRSI? ,HAMMER>
|
||||
<FSET? ,PRSO ,ANIMATEDBIT>>
|
||||
<TELL "Fortunately," T ,PRSO " evades your blow." CR>)>>
|
||||
|
||||
<END-SEGMENT>
|
||||
|
||||
<BEGIN-SEGMENT LOWER>
|
||||
|
||||
<ROOM CONSTRUCTION
|
||||
(LOC ROOMS)
|
||||
(DESC "Construction")
|
||||
(REGION "Flatheadia")
|
||||
(NORTH PER CONSTRUCTION-MOVEMENT-F)
|
||||
(NE PER CONSTRUCTION-MOVEMENT-F)
|
||||
(EAST PER CONSTRUCTION-MOVEMENT-F)
|
||||
(SE PER CONSTRUCTION-MOVEMENT-F)
|
||||
(SOUTH PER CONSTRUCTION-MOVEMENT-F)
|
||||
(SW PER CONSTRUCTION-MOVEMENT-F)
|
||||
(WEST PER CONSTRUCTION-MOVEMENT-F)
|
||||
(NW PER CONSTRUCTION-MOVEMENT-F)
|
||||
(FLAGS RLANDBIT UNDERGROUNDBIT)
|
||||
(ACTION CONSTRUCTION-F)>
|
||||
|
||||
<ROUTINE CONSTRUCTION-F ("OPT" (RARG <>) "AUX" (CNT 0))
|
||||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||||
<COND (<INTBL? ,CONSTRUCTION-LOC ,NORTH-EXITS 11>
|
||||
<SET CNT <+ .CNT 1>>)>
|
||||
<COND (<INTBL? ,CONSTRUCTION-LOC ,NE-EXITS 17>
|
||||
<SET CNT <+ .CNT 1>>)>
|
||||
<COND (<INTBL? ,CONSTRUCTION-LOC ,EAST-EXITS 15>
|
||||
<SET CNT <+ .CNT 1>>)>
|
||||
<COND (<INTBL? ,CONSTRUCTION-LOC ,SE-EXITS 7>
|
||||
<SET CNT <+ .CNT 1>>)>
|
||||
<COND (<INTBL? <+ ,CONSTRUCTION-LOC 8> ,NORTH-EXITS 11>
|
||||
<SET CNT <+ .CNT 1>>)>
|
||||
<COND (<INTBL? <+ ,CONSTRUCTION-LOC 7> ,NE-EXITS 17>
|
||||
<SET CNT <+ .CNT 1>>)>
|
||||
<COND (<INTBL? <- ,CONSTRUCTION-LOC 1> ,EAST-EXITS 15>
|
||||
<SET CNT <+ .CNT 1>>)>
|
||||
<COND (<INTBL? <- ,CONSTRUCTION-LOC 9> ,SE-EXITS 7>
|
||||
<SET CNT <+ .CNT 1>>)>
|
||||
<TELL
|
||||
"You are in an abandoned underground construction site, roughly
|
||||
octagonal in shape. ">
|
||||
<COND (<G? .CNT 0>
|
||||
<TELL "There ">
|
||||
<COND (<EQUAL? .CNT 1>
|
||||
<TELL "is an exit">)
|
||||
(T
|
||||
<TELL "are exits">)>
|
||||
<TELL " to the ">
|
||||
<COND (<INTBL? ,CONSTRUCTION-LOC ,NORTH-EXITS 11>
|
||||
<TELL "north">
|
||||
<SET CNT <- .CNT 1>>
|
||||
<AND-OR-COMMA .CNT>)>
|
||||
<COND (<INTBL? ,CONSTRUCTION-LOC ,NE-EXITS 17>
|
||||
<TELL "northeast">
|
||||
<SET CNT <- .CNT 1>>
|
||||
<AND-OR-COMMA .CNT>)>
|
||||
<COND (<INTBL? ,CONSTRUCTION-LOC ,EAST-EXITS 15>
|
||||
<TELL "east">
|
||||
<SET CNT <- .CNT 1>>
|
||||
<AND-OR-COMMA .CNT>)>
|
||||
<COND (<INTBL? ,CONSTRUCTION-LOC ,SE-EXITS 7>
|
||||
<TELL "southeast">
|
||||
<SET CNT <- .CNT 1>>
|
||||
<AND-OR-COMMA .CNT>)>
|
||||
<COND (<INTBL? <+ ,CONSTRUCTION-LOC 8> ,NORTH-EXITS 11>
|
||||
<TELL "south">
|
||||
<SET CNT <- .CNT 1>>
|
||||
<AND-OR-COMMA .CNT>)>
|
||||
<COND (<INTBL? <+ ,CONSTRUCTION-LOC 7> ,NE-EXITS 17>
|
||||
<TELL "southwest">
|
||||
<SET CNT <- .CNT 1>>
|
||||
<AND-OR-COMMA .CNT>)>
|
||||
<COND (<INTBL? <- ,CONSTRUCTION-LOC 1> ,EAST-EXITS 15>
|
||||
<TELL "west">
|
||||
<SET CNT <- .CNT 1>>
|
||||
<AND-OR-COMMA .CNT>)>
|
||||
<COND (<INTBL? <- ,CONSTRUCTION-LOC 9> ,SE-EXITS 7>
|
||||
<TELL "northwest">
|
||||
<SET CNT <- .CNT 1>>
|
||||
<AND-OR-COMMA .CNT>)>
|
||||
<TELL ". ">)>
|
||||
<COND (<EQUAL? ,CONSTRUCTION-LOC 47>
|
||||
<TELL "Also, a heavily used passage leads east. ">)>
|
||||
<TELL
|
||||
"Engraved on the wall is the number " N ,CONSTRUCTION-LOC ".">)
|
||||
(<EQUAL? .RARG ,M-ENTER>
|
||||
<SETG RANK <+ </ ,CONSTRUCTION-LOC 8> 1>>
|
||||
<SETG FILE <+ <MOD ,CONSTRUCTION-LOC 8> 1>>
|
||||
<UNSTORE ,CONSTRUCTION-OFFSET ,CONSTRUCTION-LOC>)>>
|
||||
|
||||
<ROUTINE AND-OR-COMMA (CNT)
|
||||
<COND (<EQUAL? .CNT 1>
|
||||
<TELL " and ">)
|
||||
(<G? .CNT 1>
|
||||
<TELL ", ">)>>
|
||||
|
||||
<ROUTINE CONSTRUCTION-MOVEMENT-F ("OPT" (RARG <>) "AUX" (CHANGE 0))
|
||||
<COND (.RARG
|
||||
<RFALSE>)>
|
||||
<STORE ,CONSTRUCTION-OFFSET ,CONSTRUCTION-LOC>
|
||||
<SET CHANGE <OBSTRUCTION ,CONSTRUCTION-LOC ,PRSO T>>
|
||||
<COND (<EQUAL? .CHANGE 100>
|
||||
<RETURN ,FIELD-OFFICE>)>
|
||||
<SETG RANK <+ </ ,CONSTRUCTION-LOC 8> 1>>
|
||||
<SETG FILE <+ <MOD ,CONSTRUCTION-LOC 8> 1>>
|
||||
<COND (<EQUAL? .CHANGE 0>
|
||||
<UNSTORE ,CONSTRUCTION-OFFSET ,CONSTRUCTION-LOC>
|
||||
<CANT-GO>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<SETG CONSTRUCTION-LOC <+ ,CONSTRUCTION-LOC .CHANGE>>
|
||||
<UNSTORE ,CONSTRUCTION-OFFSET ,CONSTRUCTION-LOC>
|
||||
,CONSTRUCTION)>>
|
||||
|
||||
<GLOBAL CONSTRUCTION-LOC 47>
|
||||
|
||||
<CONSTANT NORTH-EXITS ;"10 rooms plus placeholder for FM passage = 11 entries"
|
||||
<TABLE 99 ;"placeholder" 20 33 37 40 46 48 50 55 59 61>>
|
||||
|
||||
<CONSTANT NE-EXITS ;"17 rooms"
|
||||
<TABLE 12 13 14 20 22 27 28 29 33 36 41 43 46 49 50 53 54>>
|
||||
|
||||
<CONSTANT EAST-EXITS ;"15 rooms"
|
||||
<TABLE 5 6 12 22 26 30 34 38 42 44 51 56 57 61 62>>
|
||||
|
||||
<CONSTANT SE-EXITS ;"6 rooms plus one placeholder = 7 entries"
|
||||
<TABLE 99 ;"placeholder" 17 40 43 48 51 54>>
|
||||
|
||||
<OBJECT HARDHAT ;"in table, at Construction room #0"
|
||||
(DESC "hardhat")
|
||||
(SYNONYM HARDHAT HAT)
|
||||
(ADJECTIVE HARD)
|
||||
(FLAGS TAKEBIT WEARBIT)
|
||||
(GENERIC G-HAT-F)
|
||||
(VALUE 25)>
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
<ROUTINE REMOVE-ANY-PIECE (L TAKER "AUX" TAKEE (CNT 0))
|
||||
<REPEAT ()
|
||||
<COND (<NOT <L? .CNT ,STORAGE-TABLE-LENGTH>>
|
||||
<RETURN>)
|
||||
(<EQUAL? <GET ,STORAGE-TABLE .CNT> .L>
|
||||
<SET TAKEE <GET ,STORAGE-TABLE <+ .CNT 1>>>
|
||||
<COND (<OR <FSET? .TAKEE ,WHITEBIT>
|
||||
<FSET? .TAKEE ,BLACKBIT>>
|
||||
<ROB .TAKEE .TAKER>
|
||||
<PUT ,STORAGE-TABLE .CNT 0>
|
||||
<PUT ,STORAGE-TABLE <+ .CNT 1> 0>)>)>
|
||||
<SET CNT <+ .CNT 2>>>>
|
||||
|
||||
;"codes for putting items in storage in fake rooms, shared by Plain,
|
||||
Construction, and all five FrobozzCo Building fake rooms"
|
||||
|
||||
<CONSTANT STORAGE-TABLE
|
||||
<TABLE 301 BLACK-KNIGHT
|
||||
314 BLACK-PAWN
|
||||
315 WHITE-KNIGHT
|
||||
328 BLACK-BISHOP
|
||||
337 BLACK-KING
|
||||
349 WHITE-PAWN
|
||||
357 WHITE-KING
|
||||
363 WHITE-CASTLE
|
||||
400 HARDHAT
|
||||
461 HAMMER
|
||||
1004 MEMO
|
||||
3019 T-SQUARE
|
||||
4193 INSTRUCTION-BOOKLET
|
||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0>>
|
||||
|
||||
<CONSTANT PLAIN-OFFSET 300>
|
||||
<CONSTANT CONSTRUCTION-OFFSET 400>
|
||||
<CONSTANT OFFICES-OFFSET 1000>
|
||||
<CONSTANT OFFICES-N-OFFSET 2000>
|
||||
<CONSTANT OFFICES-S-OFFSET 3000>
|
||||
<CONSTANT OFFICES-E-OFFSET 4000>
|
||||
<CONSTANT OFFICES-W-OFFSET 5000>
|
||||
|
||||
<CONSTANT STORAGE-TABLE-LENGTH 200>
|
||||
|
||||
<ROUTINE PUT-IN-STORAGE (OFFSET OBJ L "AUX" (CNT 0))
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? <GET ,STORAGE-TABLE .CNT> 0>
|
||||
<PUT ,STORAGE-TABLE .CNT <+ .L .OFFSET>>
|
||||
<PUT ,STORAGE-TABLE <+ .CNT 1> .OBJ>
|
||||
<RETURN>)
|
||||
(T
|
||||
<SET CNT <+ .CNT 2>>)>>>
|
||||
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT LOWER>
|
||||
<BEGIN-SEGMENT FENSHIRE>
|
||||
<BEGIN-SEGMENT VILLAGE>
|
||||
|
||||
<ROUTINE STORE (OFFSET L "OPT" (RM ,HERE) "AUX" (CNT 0) F N)
|
||||
<SET F <FIRST? .RM>>
|
||||
<REPEAT ()
|
||||
<COND (.F
|
||||
<SET N <NEXT? .F>>)
|
||||
(T
|
||||
<RETURN>)>
|
||||
<COND (<NOT <EQUAL? .F ,PROTAGONIST>>
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? .F ,JESTER>
|
||||
<REMOVE-J>
|
||||
<RETURN>)
|
||||
(<EQUAL? <GET ,STORAGE-TABLE .CNT> 0>
|
||||
<PUT ,STORAGE-TABLE .CNT <+ .L .OFFSET>>
|
||||
<PUT ,STORAGE-TABLE <+ .CNT 1> .F>
|
||||
<SET CNT <+ .CNT 2>>
|
||||
<REMOVE .F>
|
||||
<RETURN>)
|
||||
(T
|
||||
<SET CNT <+ .CNT 2>>)>>)>
|
||||
<SET F .N>>>
|
||||
|
||||
<ROUTINE UNSTORE (OFFSET L "OPT" (RM ,HERE) "AUX" (CNT 0))
|
||||
<REPEAT ()
|
||||
<COND (<NOT <L? .CNT ,STORAGE-TABLE-LENGTH>>
|
||||
<RETURN>)
|
||||
(<EQUAL? <GET ,STORAGE-TABLE .CNT> <+ .L .OFFSET>>
|
||||
<MOVE <GET ,STORAGE-TABLE <+ .CNT 1>> .RM>
|
||||
<PUT ,STORAGE-TABLE .CNT 0>
|
||||
<PUT ,STORAGE-TABLE <+ .CNT 1> 0>)>
|
||||
<SET CNT <+ .CNT 2>>>>
|
||||
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,505 @@
|
|||
|
||||
.SEGMENT "HINTS"
|
||||
|
||||
|
||||
.FUNCT DO-HINTS,Q,WIN,FCLR,WCLR,CHR,TMP,MAXC,?TMP1
|
||||
HLIGHT H-NORMAL
|
||||
CALL1 INIT-HINT-SCREEN >WIN
|
||||
WINGET -3,WFSIZE
|
||||
SHIFT STACK,-8 >Q
|
||||
WINGET -3,WTOP
|
||||
SUB STACK,1
|
||||
DIV STACK,Q
|
||||
ADD 1,STACK >TOP-HINT-LINE
|
||||
WINGET -3,WHIGH
|
||||
DIV STACK,Q
|
||||
SUB STACK,1 >BOTTOM-HINT-NUM
|
||||
WINGET -3,WFSIZE
|
||||
BAND STACK,255 >Q
|
||||
WINGET -3,WLEFT
|
||||
SUB STACK,1
|
||||
DIV STACK,Q
|
||||
ADD 2,STACK >LEFT-HINT-COLUMN
|
||||
?PRG1: CLEAR S-TEXT
|
||||
SCREEN WIN
|
||||
WINGET WIN,WCOLOR >WCLR
|
||||
GET 0,0
|
||||
BTST STACK,1 \?CCL5
|
||||
ICALL CCURSET,2,9
|
||||
COLOR 1,-1
|
||||
JUMP ?CND3
|
||||
?CCL5: COLOR 1,1
|
||||
?CND3: ICALL HINT-TITLE,INVISICLUES,WIN
|
||||
SCREEN S-FULL
|
||||
WINGET S-FULL,WCOLOR >FCLR
|
||||
WINGET S-TEXT,WCOLOR
|
||||
BAND STACK,255 >?TMP1
|
||||
WINGET S-TEXT,WCOLOR
|
||||
SHIFT STACK,-8
|
||||
COLOR ?TMP1,STACK
|
||||
DIROUT D-TABLE-ON,SLINE
|
||||
DIROUT D-TABLE-OFF
|
||||
SET 'GET-HINT-ROUTINE,H-CHAPT-NAME
|
||||
GET HINTS,0
|
||||
ICALL2 H-PUT-UP-FROBS,STACK
|
||||
ICALL2 H-NEW-CURSOR,H-CHAPT-NUM
|
||||
GET HINTS,0 >MAXC
|
||||
?PRG6: ZERO? DEMO-VERSION? /?CCL10
|
||||
CALL2 INPUT-DEMO,1 >CHR
|
||||
JUMP ?CND8
|
||||
?CCL10: INPUT 1 >CHR
|
||||
?CND8: EQUAL? CHR,CLICK1,CLICK2 \?CND11
|
||||
CALL1 SELECT-HINT-BY-MOUSE >TMP
|
||||
GRTR? TMP,0 /?CND11
|
||||
EQUAL? TMP,-1 \?CCL17
|
||||
SET 'CHR,78
|
||||
JUMP ?CND11
|
||||
?CCL17: EQUAL? TMP,-2 \?CCL19
|
||||
SET 'CHR,80
|
||||
JUMP ?CND11
|
||||
?CCL19: EQUAL? TMP,-3 \?CCL21
|
||||
SET 'CHR,13
|
||||
JUMP ?CND11
|
||||
?CCL21: EQUAL? TMP,-4 \?CCL23
|
||||
SET 'CHR,81
|
||||
?CND11: EQUAL? CHR,77,109,81 /?CTR25
|
||||
EQUAL? CHR,113 \?CCL26
|
||||
?CTR25: SET 'Q,TRUE-VALUE
|
||||
JUMP ?REP7
|
||||
?CCL23: SOUND S-BEEP
|
||||
JUMP ?PRG6
|
||||
?CCL26: EQUAL? CHR,78,110,DOWN-ARROW \?CCL30
|
||||
ICALL H-NEW-CURSOR,H-CHAPT-NUM,TRUE-VALUE
|
||||
EQUAL? H-CHAPT-NUM,MAXC \?CCL33
|
||||
SET 'H-CHAPT-NUM,1
|
||||
JUMP ?CND31
|
||||
?CCL33: INC 'H-CHAPT-NUM
|
||||
?CND31: SET 'H-QUEST-NUM,1
|
||||
ICALL2 H-NEW-CURSOR,H-CHAPT-NUM
|
||||
JUMP ?PRG6
|
||||
?CCL30: EQUAL? CHR,80,112,UP-ARROW \?CCL35
|
||||
ICALL H-NEW-CURSOR,H-CHAPT-NUM,TRUE-VALUE
|
||||
EQUAL? H-CHAPT-NUM,1 \?CCL38
|
||||
SET 'H-CHAPT-NUM,MAXC
|
||||
JUMP ?CND36
|
||||
?CCL38: DEC 'H-CHAPT-NUM
|
||||
?CND36: SET 'H-QUEST-NUM,1
|
||||
ICALL2 H-NEW-CURSOR,H-CHAPT-NUM
|
||||
JUMP ?PRG6
|
||||
?CCL35: EQUAL? CHR,13,10,32 \?CCL40
|
||||
CALL1 H-PICK-QUESTION >Q
|
||||
JUMP ?REP7
|
||||
?CCL40: EQUAL? CHR,CLICK1,CLICK2 \?CCL42
|
||||
GRTR? TMP,MAXC \?CCL45
|
||||
SOUND S-BEEP
|
||||
JUMP ?PRG6
|
||||
?CCL45: ICALL H-NEW-CURSOR,H-CHAPT-NUM,TRUE-VALUE
|
||||
SET 'H-CHAPT-NUM,TMP
|
||||
SET 'H-QUEST-NUM,1
|
||||
ICALL2 H-NEW-CURSOR,H-CHAPT-NUM
|
||||
EQUAL? CHR,CLICK2 \?PRG6
|
||||
CALL1 H-PICK-QUESTION >Q
|
||||
?REP7: ZERO? Q /?PRG1
|
||||
CLEAR -1
|
||||
SCREEN WIN
|
||||
BAND WCLR,255 >?TMP1
|
||||
SHIFT WCLR,-8
|
||||
COLOR ?TMP1,STACK
|
||||
SCREEN S-FULL
|
||||
BAND FCLR,255 >?TMP1
|
||||
SHIFT FCLR,-8
|
||||
COLOR ?TMP1,STACK
|
||||
SCREEN S-TEXT
|
||||
HLIGHT H-NORMAL
|
||||
ICALL1 INIT-STATUS-LINE
|
||||
PRINTI "Back to the story..."
|
||||
CRLF
|
||||
RETURN 2
|
||||
?CCL42: SOUND S-BEEP
|
||||
JUMP ?PRG6
|
||||
|
||||
|
||||
.FUNCT H-PICK-QUESTION,CHR,MAXQ,Q,WID,TMP
|
||||
?FCN: CATCH >PARSE-SENTENCE-ACTIVATION
|
||||
HLIGHT H-NORMAL
|
||||
CLEAR S-TEXT
|
||||
GET HINTS,H-CHAPT-NUM
|
||||
GET STACK,1
|
||||
ICALL HINT-TITLE,STACK,S-WINDOW
|
||||
CALL CENTER-LINE,M-MAIN-HINT-MENU,2 >WID
|
||||
GET HINTS,H-CHAPT-NUM
|
||||
GET STACK,0
|
||||
SUB STACK,1 >MAXQ
|
||||
SCREEN S-FULL
|
||||
SET 'GET-HINT-ROUTINE,H-GET-QUEST
|
||||
GET HINTS,H-CHAPT-NUM
|
||||
GET STACK,0
|
||||
SUB STACK,1
|
||||
ICALL2 H-PUT-UP-FROBS,STACK
|
||||
ICALL2 H-NEW-CURSOR,H-QUEST-NUM
|
||||
?PRG1: ZERO? DEMO-VERSION? /?CCL5
|
||||
CALL2 INPUT-DEMO,1 >CHR
|
||||
JUMP ?CND3
|
||||
?CCL5: INPUT 1 >CHR
|
||||
?CND3: EQUAL? CHR,CLICK1,CLICK2 \?CND6
|
||||
CALL2 SELECT-HINT-BY-MOUSE,WID >TMP
|
||||
GRTR? TMP,0 /?CND6
|
||||
EQUAL? TMP,-1 \?CCL12
|
||||
SET 'CHR,78
|
||||
JUMP ?CND6
|
||||
?CCL12: EQUAL? TMP,-2 \?CCL14
|
||||
SET 'CHR,80
|
||||
JUMP ?CND6
|
||||
?CCL14: EQUAL? TMP,-3 \?CCL16
|
||||
SET 'CHR,13
|
||||
JUMP ?CND6
|
||||
?CCL16: EQUAL? TMP,-4 \?CCL18
|
||||
SET 'CHR,81
|
||||
JUMP ?CND6
|
||||
?CCL18: EQUAL? TMP,-5 \?CCL20
|
||||
SET 'CHR,77
|
||||
?CND6: EQUAL? CHR,81,113 /TRUE
|
||||
EQUAL? CHR,77,109 \?CCL25
|
||||
SET 'Q,TRUE-VALUE
|
||||
JUMP ?REP2
|
||||
?CCL20: SOUND S-BEEP
|
||||
JUMP ?PRG1
|
||||
?CCL25: EQUAL? CHR,78,110,DOWN-ARROW \?CCL27
|
||||
ICALL H-NEW-CURSOR,H-QUEST-NUM,TRUE-VALUE
|
||||
EQUAL? H-QUEST-NUM,MAXQ \?CCL30
|
||||
SET 'H-QUEST-NUM,1
|
||||
JUMP ?CND28
|
||||
?CCL30: INC 'H-QUEST-NUM
|
||||
?CND28: ICALL2 H-NEW-CURSOR,H-QUEST-NUM
|
||||
JUMP ?PRG1
|
||||
?CCL27: EQUAL? CHR,80,112,UP-ARROW \?CCL32
|
||||
ICALL H-NEW-CURSOR,H-QUEST-NUM,TRUE-VALUE
|
||||
EQUAL? H-QUEST-NUM,1 \?CCL35
|
||||
SET 'H-QUEST-NUM,MAXQ
|
||||
JUMP ?CND33
|
||||
?CCL35: DEC 'H-QUEST-NUM
|
||||
?CND33: ICALL2 H-NEW-CURSOR,H-QUEST-NUM
|
||||
JUMP ?PRG1
|
||||
?CCL32: EQUAL? CHR,CLICK1,CLICK2 \?CCL37
|
||||
GRTR? TMP,MAXQ \?CCL40
|
||||
SOUND S-BEEP
|
||||
JUMP ?PRG1
|
||||
?CCL40: ICALL H-NEW-CURSOR,H-QUEST-NUM,TRUE-VALUE
|
||||
SET 'H-QUEST-NUM,TMP
|
||||
ICALL2 H-NEW-CURSOR,H-QUEST-NUM
|
||||
EQUAL? CHR,CLICK2 \?PRG1
|
||||
ICALL1 DISPLAY-HINT
|
||||
JUMP ?REP2
|
||||
?CCL37: EQUAL? CHR,13,10,32 \?CCL44
|
||||
ICALL1 DISPLAY-HINT
|
||||
?REP2: ZERO? Q /?FCN
|
||||
RFALSE
|
||||
?CCL44: SOUND S-BEEP
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT H-NEW-CURSOR,POS,OFF?,Y,X
|
||||
ADD TOP-HINT-LINE,POS >Y
|
||||
SET 'X,LEFT-HINT-COLUMN
|
||||
GRTR? POS,BOTTOM-HINT-NUM \?CND1
|
||||
SUB Y,BOTTOM-HINT-NUM >Y
|
||||
GETB 0,33
|
||||
DIV STACK,2 >X
|
||||
?CND1: ICALL CCURSET,Y,X
|
||||
ZERO? OFF? \?CCL5
|
||||
HLIGHT H-INVERSE
|
||||
JUMP ?CND3
|
||||
?CCL5: HLIGHT H-NORMAL
|
||||
?CND3: CALL GET-HINT-ROUTINE,POS
|
||||
PRINT STACK
|
||||
PRINTC 32
|
||||
ZERO? OFF? \FALSE
|
||||
HLIGHT H-NORMAL
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT SELECT-HINT-BY-MOUSE,WID,VAL,MID,X,Y,?TMP1
|
||||
WINGET -3,WFSIZE
|
||||
SHIFT STACK,-8 >VAL
|
||||
GET 0,27
|
||||
GET STACK,2 >Y
|
||||
GET 0,27
|
||||
GET STACK,1 >X
|
||||
SUB Y,1
|
||||
DIV STACK,VAL >VAL
|
||||
GETB 0,33 >?TMP1
|
||||
WINGET -3,WFSIZE
|
||||
BAND STACK,255
|
||||
MUL ?TMP1,STACK
|
||||
DIV STACK,2 >MID
|
||||
SUB TOP-HINT-LINE,1
|
||||
LESS? VAL,STACK \?CCL3
|
||||
EQUAL? VAL,1 \?CCL6
|
||||
DIV WID,2 >VAL
|
||||
ZERO? VAL /?CCL9
|
||||
SUB MID,VAL
|
||||
GRTR? X,STACK \?CCL9
|
||||
ADD MID,VAL
|
||||
LESS? X,STACK \?CCL9
|
||||
RETURN -5
|
||||
?CCL9: GRTR? X,MID /?CCL14
|
||||
RETURN -1
|
||||
?CCL14: RETURN -3
|
||||
?CCL6: EQUAL? VAL,2 \FALSE
|
||||
GRTR? X,MID /?CCL19
|
||||
RETURN -2
|
||||
?CCL19: RETURN -4
|
||||
?CCL3: ADD 1,VAL
|
||||
SUB STACK,TOP-HINT-LINE >VAL
|
||||
GRTR? X,MID \?CND21
|
||||
ADD VAL,BOTTOM-HINT-NUM >VAL
|
||||
?CND21: RETURN VAL
|
||||
|
||||
|
||||
.FUNCT INVERSE-LINE,LN,INV
|
||||
ASSIGNED? 'INV /?CND1
|
||||
SET 'INV,H-INVERSE
|
||||
?CND1: ZERO? LN /?CND3
|
||||
ICALL CCURSET,LN,1
|
||||
?CND3: HLIGHT INV
|
||||
ZERO? INV \?CCL7
|
||||
ERASE 1
|
||||
RTRUE
|
||||
?CCL7: FONT 4
|
||||
GETB 0,39 >LN
|
||||
WINGET -3,WWIDE
|
||||
ADD LN,STACK
|
||||
DIV STACK,LN
|
||||
ICALL2 PRINT-SPACES,STACK
|
||||
FONT 1
|
||||
HLIGHT H-NORMAL
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT DISPLAY-HINT,H,MX,CNT,CV,SHIFT?,COUNT-OFFS,WID,CURCX,CURC,FLG,?TMP1
|
||||
SET 'CNT,2
|
||||
HLIGHT H-NORMAL
|
||||
CLEAR S-TEXT
|
||||
SCREEN S-WINDOW
|
||||
ICALL INVERSE-LINE,3,H-NORMAL
|
||||
ICALL RIGHT-LINE,Q-RESUME-STORY,3
|
||||
ICALL INVERSE-LINE,2,H-NORMAL
|
||||
ICALL RIGHT-LINE,RETURN-SEE-NEW-HINT,2
|
||||
GET 0,8
|
||||
BTST STACK,32 \?CND1
|
||||
ICALL CENTER-LINE,H-OR-USE-MOUSE,3
|
||||
?CND1: ICALL INVERSE-LINE,1,H-NORMAL
|
||||
HLIGHT H-BOLD
|
||||
GET HINTS,H-CHAPT-NUM >?TMP1
|
||||
ADD H-QUEST-NUM,1
|
||||
GET ?TMP1,STACK >H
|
||||
SUB H-CHAPT-NUM,1
|
||||
GET HINT-COUNTS,STACK >CV
|
||||
GET H,1
|
||||
ICALL CENTER-LINE,STACK,1,H-INVERSE
|
||||
HLIGHT H-NORMAL
|
||||
CALL CENTER-LINE,M-SEE-HINT-MENU,2 >WID
|
||||
GET H,0 >MX
|
||||
SCREEN S-TEXT
|
||||
CURSET 1,1
|
||||
MOD H-QUEST-NUM,2 >SHIFT?
|
||||
SUB H-QUEST-NUM,1
|
||||
DIV STACK,2 >COUNT-OFFS
|
||||
GETB CV,COUNT-OFFS >CURCX
|
||||
ZERO? SHIFT? /?CCL5
|
||||
SHIFT CURCX,-4
|
||||
JUMP ?CND3
|
||||
?CCL5: PUSH CURCX
|
||||
?CND3: BAND STACK,15
|
||||
ADD 2,STACK >CURC
|
||||
?PRG6: EQUAL? CNT,CURC /?REP7
|
||||
PRINTC 9
|
||||
GET H,CNT
|
||||
PRINT STACK
|
||||
CRLF
|
||||
INC 'CNT
|
||||
JUMP ?PRG6
|
||||
?REP7: SET 'FLG,TRUE-VALUE
|
||||
?PRG11: ZERO? FLG /?CND13
|
||||
SET 'FLG,FALSE-VALUE
|
||||
GRTR? CNT,MX \?CCL17
|
||||
PRINT NO-MORE-HINTS
|
||||
CRLF
|
||||
SCREEN S-WINDOW
|
||||
ICALL INVERSE-LINE,2,H-NORMAL
|
||||
ICALL CENTER-LINE,M-SEE-HINT-MENU,2
|
||||
SCREEN S-TEXT
|
||||
JUMP ?CND13
|
||||
?CCL17: SUB MX,CNT
|
||||
ADD STACK,1
|
||||
PRINTN STACK
|
||||
PRINTI "> "
|
||||
?CND13: ZERO? DEMO-VERSION? /?CCL20
|
||||
CALL2 INPUT-DEMO,1 >CURC
|
||||
JUMP ?CND18
|
||||
?CCL20: INPUT 1 >CURC
|
||||
?CND18: EQUAL? CURC,CLICK1,CLICK2 \?CND21
|
||||
CALL2 SELECT-HINT-BY-MOUSE,WID >CURCX
|
||||
GRTR? CURCX,0 /?CND21
|
||||
EQUAL? CURCX,-3 \?CCL27
|
||||
SET 'CURC,13
|
||||
JUMP ?CND21
|
||||
?CCL27: EQUAL? CURCX,-4 \?CCL29
|
||||
SET 'CURC,81
|
||||
JUMP ?CND21
|
||||
?CCL29: EQUAL? CURCX,-5 \?CCL31
|
||||
SET 'CURC,77
|
||||
?CND21: EQUAL? CURC,77,109,81 /?CTR33
|
||||
EQUAL? CURC,113 \?CCL34
|
||||
?CTR33: ZERO? SHIFT? /?CCL39
|
||||
GETB CV,COUNT-OFFS
|
||||
BAND STACK,15 >?TMP1
|
||||
SUB CNT,2
|
||||
SHIFT STACK,4
|
||||
BOR ?TMP1,STACK
|
||||
PUTB CV,COUNT-OFFS,STACK
|
||||
JUMP ?CND37
|
||||
?CCL31: SOUND S-BEEP
|
||||
JUMP ?PRG11
|
||||
?CCL39: GETB CV,COUNT-OFFS
|
||||
BAND STACK,240 >?TMP1
|
||||
SUB CNT,2
|
||||
BOR ?TMP1,STACK
|
||||
PUTB CV,COUNT-OFFS,STACK
|
||||
?CND37: EQUAL? CURC,81,113 \TRUE
|
||||
THROW TRUE-VALUE,PARSE-SENTENCE-ACTIVATION
|
||||
JUMP ?PRG11
|
||||
?CCL34: EQUAL? CURC,13,10 \?CCL44
|
||||
GRTR? CNT,MX /?CCL47
|
||||
SET 'FLG,TRUE-VALUE
|
||||
GET H,CNT
|
||||
PRINT STACK
|
||||
CRLF
|
||||
IGRTR? 'CNT,MX \?PRG11
|
||||
SET 'FLG,FALSE-VALUE
|
||||
PRINT NO-MORE-HINTS
|
||||
CRLF
|
||||
SCREEN S-WINDOW
|
||||
ICALL INVERSE-LINE,2,H-NORMAL
|
||||
ICALL CENTER-LINE,M-SEE-HINT-MENU,2
|
||||
SCREEN S-TEXT
|
||||
JUMP ?PRG11
|
||||
?CCL47: SOUND S-BEEP
|
||||
JUMP ?PRG11
|
||||
?CCL44: SOUND S-BEEP
|
||||
JUMP ?PRG11
|
||||
|
||||
|
||||
.FUNCT H-CHAPT-NAME,N
|
||||
GET HINTS,N
|
||||
GET STACK,1
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT H-GET-QUEST,N,?TMP1
|
||||
GET HINTS,H-CHAPT-NUM >?TMP1
|
||||
ADD N,1
|
||||
GET ?TMP1,STACK
|
||||
GET STACK,1
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT H-PUT-UP-FROBS,MX,ST,X,Y
|
||||
HLIGHT H-NORMAL
|
||||
SET 'X,LEFT-HINT-COLUMN
|
||||
SET 'Y,TOP-HINT-LINE
|
||||
?PRG1: IGRTR? 'ST,MX /TRUE
|
||||
INC 'Y
|
||||
ICALL CCURSET,Y,X
|
||||
CALL GET-HINT-ROUTINE,ST
|
||||
PRINT STACK
|
||||
EQUAL? ST,BOTTOM-HINT-NUM \?PRG1
|
||||
SET 'Y,TOP-HINT-LINE
|
||||
GETB 0,33
|
||||
DIV STACK,2 >X
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT INIT-HINT-SCREEN
|
||||
CLEAR -1
|
||||
SCREEN S-FULL
|
||||
ZERO? BORDER-ON /?CND1
|
||||
DISPLAY HINT-BORDER,1,1
|
||||
?CND1: ICALL2 SPLIT-BY-PICTURE,TEXT-WINDOW-PIC-LOC
|
||||
SCREEN S-TEXT
|
||||
RETURN S-WINDOW
|
||||
|
||||
|
||||
.FUNCT HINT-TITLE,TITLE,WIN,THIRD
|
||||
ASSIGNED? 'THIRD /?CND1
|
||||
SET 'THIRD,TRUE-VALUE
|
||||
?CND1: SCREEN WIN
|
||||
ICALL INVERSE-LINE,1,H-NORMAL
|
||||
ICALL INVERSE-LINE,2,H-NORMAL
|
||||
ICALL INVERSE-LINE,3,H-NORMAL
|
||||
HLIGHT H-BOLD
|
||||
ICALL CENTER-LINE,TITLE,1,H-INVERSE
|
||||
HLIGHT H-NORMAL
|
||||
ICALL LEFT-LINE,2,NEXT-HINT
|
||||
GET 0,8
|
||||
BTST STACK,32 \?CND3
|
||||
ICALL CENTER-LINE,H-OR-USE-MOUSE,3
|
||||
?CND3: ICALL LEFT-LINE,3,PREVIOUS-HINT
|
||||
ZERO? THIRD /FALSE
|
||||
ICALL RIGHT-LINE,RETURN-SEE-HINT,2
|
||||
CALL RIGHT-LINE,Q-RESUME-STORY,3
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT LEFT-LINE,LN,STR,INV
|
||||
ICALL CCURSET,LN,1
|
||||
ZERO? INV /?CND1
|
||||
HLIGHT INV
|
||||
?CND1: PRINT STR
|
||||
ZERO? INV /FALSE
|
||||
HLIGHT H-NORMAL
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RIGHT-LINE,STR,LN,INV,LEN
|
||||
CALL JUSTIFIED-LINE,STR,LN,INV,LEN,1
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT CENTER-LINE,STR,LN,INV,LEN
|
||||
CALL JUSTIFIED-LINE,STR,LN,INV,LEN,2
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT JUSTIFIED-LINE,STR,LN,INV,LEN,CTR
|
||||
ZERO? LN \?CCL3
|
||||
CURGET SLINE
|
||||
GET SLINE,0 >LN
|
||||
JUMP ?CND1
|
||||
?CCL3: DEC 'LN
|
||||
WINGET -3,WFSIZE
|
||||
SHIFT STACK,-8
|
||||
MUL LN,STACK
|
||||
ADD 1,STACK >LN
|
||||
?CND1: ZERO? LEN \?CND4
|
||||
DIROUT D-TABLE-ON,SLINE
|
||||
PRINT STR
|
||||
PRINTC 32
|
||||
DIROUT D-TABLE-OFF
|
||||
GET 0,24 >LEN
|
||||
?CND4: WINGET -3,WWIDE
|
||||
SUB STACK,LEN
|
||||
DIV STACK,CTR
|
||||
CURSET LN,STACK
|
||||
ZERO? INV /?CND6
|
||||
HLIGHT INV
|
||||
?CND6: PRINT STR
|
||||
PRINTC 32
|
||||
ZERO? INV \?CCL9
|
||||
RETURN LEN
|
||||
?CCL9: HLIGHT H-NORMAL
|
||||
RETURN LEN
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.ENDI
|
|
@ -0,0 +1,538 @@
|
|||
"CLUES for LIBRARY
|
||||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
"To install:
|
||||
Add <XFLOAD <ZILLIB>CLUES> to your GAME.ZIL file.
|
||||
Modify ROUTINE FINISH in VERBS to include Hint.
|
||||
Add HINT syntaxes (be careful -- you might already have some variety).
|
||||
Add verb routines for V-HINT and V-HINTS-OFF.
|
||||
Add HINT to list of verbs in CLOCKER-VERB (a.k.a. GAME-VERB?).
|
||||
Make sure flag in V-HINTS-OFF syntax is correct (RLANDBIT, KLUDGEBIT, etc.)."
|
||||
|
||||
<FILE-FLAGS CLEAN-STACK? MDL-ZIL? ;ZAP-TO-SOURCE-DIRECTORY?>
|
||||
|
||||
<DEFAULTS-DEFINED
|
||||
FIRST-HINT-POS
|
||||
INIT-HINT-SCREEN>
|
||||
|
||||
<BEGIN-SEGMENT HINTS>
|
||||
|
||||
<CONSTANT RETURN-SEE-HINT "Hit Return to see hints.">
|
||||
<CONSTANT RETURN-SEE-NEW-HINT "Hit Return to see a hint.">
|
||||
<CONSTANT INVISICLUES "InvisiClues (tm)">
|
||||
<CONSTANT M-MAIN-HINT-MENU "Hit M to see main menu.">
|
||||
<CONSTANT M-SEE-HINT-MENU "Hit M to see hint menu.">
|
||||
<CONSTANT PREVIOUS-HINT "Hit P for previous item.">
|
||||
<CONSTANT NEXT-HINT "Hit N for next item.">
|
||||
<CONSTANT Q-RESUME-STORY "Hit Q to resume story.">
|
||||
<CONSTANT H-OR-USE-MOUSE "(Or use your mouse.)">
|
||||
<CONSTANT NO-MORE-HINTS "[No more hints.]">
|
||||
|
||||
"If the first argument is non-false, build a parallel impure table
|
||||
for storing the count of answers already seen; make it a constant
|
||||
under the given name."
|
||||
|
||||
<DEFINE20 CONSTRUCT-HINTS (COUNT-NAME "TUPLE" STUFF "AUX" (SS <>)
|
||||
(HL (T)) (HLL .HL) V
|
||||
(CL (T)) (CLL .CL)
|
||||
TCL TCLL)
|
||||
<REPEAT ((CT 0))
|
||||
<COND (<OR <EMPTY? .STUFF>
|
||||
<TYPE? <1 .STUFF> STRING>>
|
||||
;"Chapter break"
|
||||
<COND
|
||||
(<NOT .SS>
|
||||
;"First one, just do setup"
|
||||
<SET SS .STUFF>
|
||||
<SET TCL (T)>
|
||||
<SET TCLL .TCL>
|
||||
<SET CT 0>)
|
||||
(T
|
||||
<SET V <SUBSTRUC .SS 0 <- <LENGTH .SS> <LENGTH .STUFF>>>>
|
||||
;"One chapter's worth"
|
||||
<COND (<L? 17 <LENGTH .V>>
|
||||
<WARN!-ZILCH!-PACKAGE!- "Too many answers for: " <1 .V>>)>
|
||||
<SET HLL <REST <PUTREST .HLL (<EVAL <FORM PLTABLE !.V>>)>>>
|
||||
<COND (.COUNT-NAME
|
||||
<SET CLL <REST <PUTREST .CLL
|
||||
(<EVAL <FORM TABLE (BYTE)
|
||||
!<REST .TCL>>>)>>>
|
||||
<SET TCL (T)>
|
||||
<SET TCLL .TCL>
|
||||
<SET CT 0>)>
|
||||
<SET SS .STUFF>)>
|
||||
<COND (<EMPTY? .STUFF> <RETURN>)>
|
||||
<SET STUFF <REST .STUFF>>)
|
||||
(T
|
||||
<COND (.COUNT-NAME
|
||||
<COND (<1? <MOD <SET CT <+ .CT 1>> 2>>
|
||||
<SET TCLL <REST <PUTREST .TCLL
|
||||
(0)>>>)>)>
|
||||
<SET STUFF <REST .STUFF>>)>>
|
||||
<COND (.COUNT-NAME
|
||||
<EVAL <FORM CONSTANT .COUNT-NAME
|
||||
<EVAL <FORM PTABLE !<REST .CL>>>>>)>
|
||||
<EVAL <FORM PLTABLE !<REST .HL>>>>
|
||||
|
||||
"Longest hint topic and longest question can be one line, unless it shares
|
||||
a line with another such in the other column. Each question can have up to
|
||||
16 answers but no more."
|
||||
|
||||
;<CONSTANT HINTS
|
||||
<CONSTRUCT-HINTS HINT-COUNTS ;"Put topics in Quotes - followed by PLTABLEs
|
||||
of Questions and Answers in quotes"
|
||||
;"17 character wide"
|
||||
;"this set of quotes is 36 chars. wide"
|
||||
"Topic/Chapter"
|
||||
<PLTABLE "Question"
|
||||
"Hint 1"
|
||||
"Hint 2">>>
|
||||
|
||||
<GLOBAL H-QUEST-NUM 1> "shows in HINTS LTABLE which question it's on"
|
||||
|
||||
<GLOBAL H-CHAPT-NUM 1> "shows in HINTS LTABLE which chapter it's on"
|
||||
|
||||
<DEFAULT-DEFINITION FIRST-HINT-POS
|
||||
<CONSTANT FIRST-HINT-LINE 5>
|
||||
<CONSTANT FIRST-HINT-COLUMN 4>>
|
||||
|
||||
<GLOBAL BOTTOM-HINT-NUM:NUMBER 0>
|
||||
<GLOBAL TOP-HINT-LINE:NUMBER 0>
|
||||
<GLOBAL LEFT-HINT-COLUMN:NUMBER 0>
|
||||
|
||||
<GLOBAL GET-HINT-ROUTINE 0> "APPLY this to get pointer to text"
|
||||
|
||||
<DEFINE DO-HINTS ("AUX" Q WIN FCLR WCLR)
|
||||
<IF-SOUND <SETG SOUND-QUEUED? <>>
|
||||
<KILL-SOUNDS>>
|
||||
<HLIGHT ,H-NORMAL>
|
||||
<SET WIN <INIT-HINT-SCREEN>>
|
||||
;<WINATTR -3 ,A-SCRIPT ,O-CLEAR>
|
||||
<SET Q <SHIFT <WINGET -3 ,WFSIZE> -8>> ;"height"
|
||||
<SETG TOP-HINT-LINE <+ 1 </ <- <WINGET -3 ,WTOP> 1> .Q>>>
|
||||
<SETG BOTTOM-HINT-NUM <- </ <WINGET -3 ,WHIGH> .Q> 1>>
|
||||
<SET Q <BAND <WINGET -3 ,WFSIZE> *377*>>
|
||||
<SETG LEFT-HINT-COLUMN <+ 2 </ <- <WINGET -3 ,WLEFT> 1> .Q>>>
|
||||
<PROG ()
|
||||
<CLEAR ,S-TEXT>
|
||||
<SCREEN .WIN>
|
||||
<SET WCLR <WINGET .WIN ,WCOLOR>>
|
||||
<COND (<BAND 1 <LOWCORE ZVERSION>> ;"colors visible?"
|
||||
<CCURSET 2 9> ;<CURSET 1 1>
|
||||
<COLOR 1 -1>)
|
||||
(T
|
||||
<COLOR 1 1>)>
|
||||
<HINT-TITLE ,INVISICLUES .WIN>
|
||||
<SCREEN ,S-FULL>
|
||||
<SET FCLR <WINGET ,S-FULL ,WCOLOR>>
|
||||
<COLOR <BAND <WINGET ,S-TEXT ,WCOLOR> *377*>;"Match colors with text screen."
|
||||
<SHIFT <WINGET ,S-TEXT ,WCOLOR> -8>>
|
||||
<DIROUT ,D-TABLE-ON ,SLINE ;-80>
|
||||
<DIROUT ,D-TABLE-OFF> ;"flush TWID"
|
||||
<SETG GET-HINT-ROUTINE ,H-CHAPT-NAME>
|
||||
<H-PUT-UP-FROBS <GET ,HINTS 0>>
|
||||
<H-NEW-CURSOR ,H-CHAPT-NUM>
|
||||
<REPEAT (CHR TMP (MAXC <GET ,HINTS 0>))
|
||||
<COND (,DEMO-VERSION?
|
||||
<SET CHR <INPUT-DEMO 1>>)
|
||||
(T
|
||||
<SET CHR <INPUT 1>>)>
|
||||
<COND (<EQUAL? .CHR ,CLICK1 ,CLICK2>
|
||||
<SET TMP <SELECT-HINT-BY-MOUSE>>
|
||||
<COND (<L=? .TMP 0>
|
||||
<COND (<EQUAL? .TMP -1>
|
||||
<SET CHR !\N>)
|
||||
(<EQUAL? .TMP -2>
|
||||
<SET CHR !\P>)
|
||||
(<EQUAL? .TMP -3>
|
||||
<SET CHR 13>)
|
||||
(<EQUAL? .TMP -4>
|
||||
<SET CHR !\Q>)
|
||||
(T
|
||||
<SOUND ,S-BEEP>
|
||||
<AGAIN>)>)>)
|
||||
;(T
|
||||
<CCURSET ,BOTTOM-HINT-NUM 1>
|
||||
<TELL "[CHR=" N .CHR "]">)>
|
||||
<COND (<EQUAL? .CHR !\M !\m !\Q !\q ;,ESCAPE-KEY>
|
||||
<SET Q T>
|
||||
<RETURN>)
|
||||
(<EQUAL? .CHR !\N !\n ,DOWN-ARROW>
|
||||
<H-NEW-CURSOR ,H-CHAPT-NUM T>
|
||||
<COND (<EQUAL? ,H-CHAPT-NUM .MAXC>
|
||||
<SETG H-CHAPT-NUM 1>)
|
||||
(T
|
||||
<SETG H-CHAPT-NUM <+ ,H-CHAPT-NUM 1>>)>
|
||||
<SETG H-QUEST-NUM 1>
|
||||
<H-NEW-CURSOR ,H-CHAPT-NUM>)
|
||||
(<EQUAL? .CHR !\P !\p ,UP-ARROW>
|
||||
<H-NEW-CURSOR ,H-CHAPT-NUM T>
|
||||
<COND (<EQUAL? ,H-CHAPT-NUM 1>
|
||||
<SETG H-CHAPT-NUM .MAXC>)
|
||||
(T
|
||||
<SETG H-CHAPT-NUM <- ,H-CHAPT-NUM 1>>)>
|
||||
<SETG H-QUEST-NUM 1>
|
||||
<H-NEW-CURSOR ,H-CHAPT-NUM>)
|
||||
(<EQUAL? .CHR 13 10 32>
|
||||
<SET Q <H-PICK-QUESTION>>
|
||||
<RETURN>)
|
||||
(<EQUAL? .CHR ,CLICK1 ,CLICK2>
|
||||
<COND (<G? .TMP .MAXC>
|
||||
<SOUND ,S-BEEP>)
|
||||
;(<EQUAL? ,H-CHAPT-NUM .TMP>
|
||||
<SET Q <H-PICK-QUESTION>>
|
||||
<RETURN>) ;"not like Mac"
|
||||
(T
|
||||
<H-NEW-CURSOR ,H-CHAPT-NUM T>
|
||||
<SETG H-CHAPT-NUM .TMP>
|
||||
<SETG H-QUEST-NUM 1>
|
||||
<H-NEW-CURSOR ,H-CHAPT-NUM>
|
||||
<COND (<EQUAL? .CHR ,CLICK2>
|
||||
<SET Q <H-PICK-QUESTION>>
|
||||
<RETURN>)>)>)
|
||||
(T
|
||||
<SOUND ,S-BEEP>)>>
|
||||
<COND (<NOT .Q>
|
||||
<AGAIN>)>>
|
||||
<CLEAR -1>
|
||||
<SCREEN .WIN>
|
||||
<COLOR <BAND .WCLR 255> <SHIFT .WCLR -8>>
|
||||
<SCREEN ,S-FULL>
|
||||
<COLOR <BAND .FCLR 255> <SHIFT .FCLR -8>>
|
||||
<SCREEN ,S-TEXT>
|
||||
<HLIGHT ,H-NORMAL>
|
||||
;<WINATTR -3 ,A-SCRIPT ,O-SET>
|
||||
<INIT-STATUS-LINE>
|
||||
<TELL "Back to the story..." CR>
|
||||
<IF-SOUND <COND (,SOUND-ON?
|
||||
<CHECK-LOOPING>)>>
|
||||
<RFATAL>>
|
||||
|
||||
<DEFINE H-PICK-QUESTION ("AUX" CHR MAXQ (Q <>) ;WIN WID)
|
||||
<SETG PARSE-SENTENCE-ACTIVATION <CATCH>> ;"for Q command"
|
||||
<HLIGHT ,H-NORMAL>
|
||||
<CLEAR ,S-TEXT>
|
||||
;<SET WIN <INIT-HINT-SCREEN>>
|
||||
<HINT-TITLE <GET <GET ,HINTS ,H-CHAPT-NUM> 1> ,S-WINDOW ;.WIN>
|
||||
<SET WID <CENTER-LINE ,M-MAIN-HINT-MENU 2 ;,H-INVERSE>>
|
||||
<SET MAXQ <- <GET <GET ,HINTS ,H-CHAPT-NUM> 0> 1>>
|
||||
<SCREEN ,S-FULL>
|
||||
<SETG GET-HINT-ROUTINE ,H-GET-QUEST>
|
||||
<H-PUT-UP-FROBS <- <GET <GET ,HINTS ,H-CHAPT-NUM> 0> 1>>
|
||||
<H-NEW-CURSOR ,H-QUEST-NUM>
|
||||
<REPEAT (TMP)
|
||||
<COND (,DEMO-VERSION?
|
||||
<SET CHR <INPUT-DEMO 1>>)
|
||||
(T
|
||||
<SET CHR <INPUT 1>>)>
|
||||
<COND (<EQUAL? .CHR ,CLICK1 ,CLICK2>
|
||||
<SET TMP <SELECT-HINT-BY-MOUSE .WID>>
|
||||
<COND (<L=? .TMP 0>
|
||||
<COND (<EQUAL? .TMP -1>
|
||||
<SET CHR !\N>)
|
||||
(<EQUAL? .TMP -2>
|
||||
<SET CHR !\P>)
|
||||
(<EQUAL? .TMP -3>
|
||||
<SET CHR 13>)
|
||||
(<EQUAL? .TMP -4>
|
||||
<SET CHR !\Q>)
|
||||
(<EQUAL? .TMP -5>
|
||||
<SET CHR !\M>)
|
||||
(T
|
||||
<SOUND ,S-BEEP>
|
||||
<AGAIN>)>)>)
|
||||
;(T
|
||||
<CCURSET ,BOTTOM-HINT-NUM 1>
|
||||
<TELL "[CHR=" N .CHR "]">)>
|
||||
<COND (<EQUAL? .CHR !\Q !\q ;,ESCAPE-KEY>
|
||||
<RTRUE>)
|
||||
(<EQUAL? .CHR !\M !\m>
|
||||
<SET Q T>
|
||||
<RETURN>)
|
||||
(<EQUAL? .CHR !\N !\n ,DOWN-ARROW>
|
||||
<H-NEW-CURSOR ,H-QUEST-NUM T>
|
||||
<COND (<EQUAL? ,H-QUEST-NUM .MAXQ>
|
||||
<SETG H-QUEST-NUM 1>)
|
||||
(T
|
||||
<SETG H-QUEST-NUM <+ ,H-QUEST-NUM 1>>)>
|
||||
<H-NEW-CURSOR ,H-QUEST-NUM>)
|
||||
(<EQUAL? .CHR !\P !\p ,UP-ARROW>
|
||||
<H-NEW-CURSOR ,H-QUEST-NUM T>
|
||||
<COND (<EQUAL? ,H-QUEST-NUM 1>
|
||||
<SETG H-QUEST-NUM .MAXQ>)
|
||||
(T
|
||||
<SETG H-QUEST-NUM <- ,H-QUEST-NUM 1>>)>
|
||||
<H-NEW-CURSOR ,H-QUEST-NUM>)
|
||||
(<EQUAL? .CHR ,CLICK1 ,CLICK2>
|
||||
<COND (<G? .TMP .MAXQ>
|
||||
<SOUND ,S-BEEP>)
|
||||
;(<EQUAL? ,H-QUEST-NUM .TMP>
|
||||
<DISPLAY-HINT>
|
||||
<RETURN>) ;"not like Mac"
|
||||
(T
|
||||
<H-NEW-CURSOR ,H-QUEST-NUM T>
|
||||
<SETG H-QUEST-NUM .TMP>
|
||||
<H-NEW-CURSOR ,H-QUEST-NUM>
|
||||
<COND (<EQUAL? .CHR ,CLICK2>
|
||||
<DISPLAY-HINT>
|
||||
<RETURN>)>)>)
|
||||
(<EQUAL? .CHR 13 10 32>
|
||||
<DISPLAY-HINT>
|
||||
<RETURN>)
|
||||
(T
|
||||
<SOUND ,S-BEEP>)>>
|
||||
<COND (<NOT .Q>
|
||||
<AGAIN>)>>
|
||||
|
||||
<DEFINE H-NEW-CURSOR (POS "OPT" (OFF? <>) "AUX" Y X)
|
||||
<SET Y <+ ,TOP-HINT-LINE .POS>>
|
||||
<SET X ,LEFT-HINT-COLUMN>
|
||||
<COND (<G? .POS ,BOTTOM-HINT-NUM>
|
||||
<SET Y <- .Y ,BOTTOM-HINT-NUM>>
|
||||
<SET X </ <LOWCORE SCRH> ;<WINGET -3 ,WWIDE> 2>>)>
|
||||
<CCURSET .Y .X>
|
||||
<COND (<NOT .OFF?>
|
||||
<HLIGHT ,H-INVERSE>)
|
||||
(T
|
||||
<HLIGHT ,H-NORMAL>)>
|
||||
<TELL <ZAPPLY ,GET-HINT-ROUTINE .POS> !\ >
|
||||
<COND (<NOT .OFF?>
|
||||
<HLIGHT ,H-NORMAL>)>>
|
||||
|
||||
<DEFINE SELECT-HINT-BY-MOUSE ("OPT" (WID 0) "AUX" VAL MID X Y)
|
||||
<SET VAL <SHIFT <WINGET -3 ,WFSIZE> -8>>
|
||||
<SET Y <LOWCORE MSLOCY>>
|
||||
<SET X <LOWCORE MSLOCX>>
|
||||
;<CCURSET ,BOTTOM-HINT-NUM 1>
|
||||
;<TELL "[">
|
||||
<SET VAL </ <- .Y 1> .VAL>>
|
||||
<SET MID </ <* <LOWCORE SCRH> <BAND <WINGET -3 ,WFSIZE> *377*>>
|
||||
;<WINGET -3 ,WWIDE>
|
||||
2>>
|
||||
;<TELL "LN=" N .VAL " FHL=" N ,TOP-HINT-LINE " X=" N .X " MID=" N .MID " TWID=" N .WID>
|
||||
<COND (<L? .VAL <- ,TOP-HINT-LINE 1>>
|
||||
<COND (<EQUAL? .VAL 1>
|
||||
<COND (<AND <SET VAL </ .WID 2>>
|
||||
<G? .X <- .MID .VAL>>
|
||||
<L? .X <+ .MID .VAL>>>
|
||||
;<TELL " VAL=-5">
|
||||
<RETURN -5>)
|
||||
(<L=? .X .MID>
|
||||
;<TELL " VAL=-1">
|
||||
<RETURN -1>)
|
||||
(T
|
||||
;<TELL " VAL=-3">
|
||||
<RETURN -3>)>)
|
||||
(<EQUAL? .VAL 2>
|
||||
<COND (<L=? .X .MID>
|
||||
;<TELL " VAL=-2">
|
||||
<RETURN -2>)
|
||||
(T
|
||||
;<TELL " VAL=-4">
|
||||
<RETURN -4>)>)
|
||||
(T
|
||||
<COND (T
|
||||
;<TELL " VAL=0">
|
||||
<RETURN 0>)>)>)
|
||||
(T
|
||||
<SET VAL <- <+ 1 .VAL> ,TOP-HINT-LINE>>
|
||||
;<TELL " VAL=" N .VAL>
|
||||
<COND (<G? .X .MID>
|
||||
<SET VAL <+ .VAL ,BOTTOM-HINT-NUM>>
|
||||
;<TELL " -> " N .VAL>)>
|
||||
;<TELL "]|">
|
||||
.VAL)>>
|
||||
|
||||
<DEFINE INVERSE-LINE ("OPT" (LN 0) (INV ,H-INVERSE))
|
||||
<COND (<T? .LN>
|
||||
<CCURSET .LN 1>)>
|
||||
<HLIGHT .INV>
|
||||
<COND (<EQUAL? .INV ,H-NORMAL>
|
||||
<ERASE 1>)
|
||||
(T
|
||||
<FONT 4>
|
||||
<SET LN <LOWCORE (FWRD 1)>>
|
||||
<PRINT-SPACES </ <+ .LN <WINGET -3 ,WWIDE>> .LN>>
|
||||
<FONT 1>
|
||||
<HLIGHT ,H-NORMAL>)>>
|
||||
|
||||
<DEFINE DISPLAY-HINT ("AUX" H MX (CNT 2) CV SHIFT? COUNT-OFFS ;WIN WID)
|
||||
<HLIGHT ,H-NORMAL>
|
||||
<CLEAR ,S-TEXT>
|
||||
;<SET WIN <INIT-HINT-SCREEN>>
|
||||
<SCREEN ,S-WINDOW ;.WIN>
|
||||
<INVERSE-LINE 3 ,H-NORMAL>
|
||||
<RIGHT-LINE ,Q-RESUME-STORY 3 ;,H-INVERSE>
|
||||
<INVERSE-LINE 2 ,H-NORMAL>
|
||||
<RIGHT-LINE ,RETURN-SEE-NEW-HINT 2 ;,H-INVERSE>
|
||||
<COND (<NOT <EQUAL? <BAND <LOWCORE FLAGS> 32> 0>>
|
||||
<CENTER-LINE ,H-OR-USE-MOUSE 3 ;,H-INVERSE>)>
|
||||
<INVERSE-LINE 1 ,H-NORMAL>
|
||||
<HLIGHT ,H-BOLD>
|
||||
<SET H <GET <GET ,HINTS ,H-CHAPT-NUM> <+ ,H-QUEST-NUM 1>>>
|
||||
;"Byte table to use for showing questions already seen.
|
||||
Actually a nibble table. The high four bits of each byte are for
|
||||
H-QUEST-NUM odd; the low four bits are for H-QUEST-NUM even. See SHIFT?
|
||||
and COUNT-OFFS."
|
||||
<SET CV <GET ,HINT-COUNTS <- ,H-CHAPT-NUM 1>>>
|
||||
<CENTER-LINE <GET .H 1> 1 ,H-INVERSE>
|
||||
<HLIGHT ,H-NORMAL>
|
||||
<SET WID <CENTER-LINE ,M-SEE-HINT-MENU 2 ;,H-INVERSE>>
|
||||
<SET MX <GET .H 0>>
|
||||
<SCREEN ,S-TEXT>
|
||||
<CURSET 1 1>
|
||||
;<WINATTR -3 ,A-SCRIPT ,O-SET>
|
||||
;<PRINT <GET .H 1>>
|
||||
;<CRLF>
|
||||
<SET SHIFT? <MOD ,H-QUEST-NUM 2>>
|
||||
<SET COUNT-OFFS </ <- ,H-QUEST-NUM 1> 2>>
|
||||
<REPEAT ((CURCX <GETB .CV .COUNT-OFFS>)
|
||||
(CURC <+ 2 <ANDB <COND (.SHIFT? <LSH .CURCX -4>)
|
||||
(T .CURCX)> *17*>>))
|
||||
<COND (<==? .CNT .CURC>
|
||||
<RETURN>)
|
||||
(T
|
||||
<TELL C 9 <GET .H .CNT> CR>
|
||||
<SET CNT <+ .CNT 1>>)>>
|
||||
<REPEAT (CHR ;N TMP (FLG T))
|
||||
<COND (.FLG
|
||||
<SET FLG <>>
|
||||
<COND (<G? .CNT .MX>
|
||||
<PRINT ,NO-MORE-HINTS>
|
||||
<CRLF>
|
||||
<SCREEN ,S-WINDOW ;.WIN>
|
||||
<INVERSE-LINE 2 ,H-NORMAL>
|
||||
<CENTER-LINE ,M-SEE-HINT-MENU 2 ;,H-INVERSE>
|
||||
<SCREEN ,S-TEXT>)
|
||||
(T
|
||||
<TELL ;"[" N <+ <- .MX .CNT> 1> ;" hint">
|
||||
;<COND (<NOT <EQUAL? .N 1>>
|
||||
<TELL "s">)>
|
||||
<TELL ;" left.] -" "> ">)>)>
|
||||
<COND (,DEMO-VERSION?
|
||||
<SET CHR <INPUT-DEMO 1>>)
|
||||
(T
|
||||
<SET CHR <INPUT 1>>)>
|
||||
<COND (<EQUAL? .CHR ,CLICK1 ,CLICK2>
|
||||
<SET TMP <SELECT-HINT-BY-MOUSE .WID>>
|
||||
<COND (<L=? .TMP 0>
|
||||
<COND (<EQUAL? .TMP -3>
|
||||
<SET CHR 13>)
|
||||
(<EQUAL? .TMP -4>
|
||||
<SET CHR !\Q>)
|
||||
(<EQUAL? .TMP -5>
|
||||
<SET CHR !\M>)
|
||||
(T
|
||||
<SOUND ,S-BEEP>
|
||||
<AGAIN>)>)>)
|
||||
;(T
|
||||
<CCURSET ,BOTTOM-HINT-NUM 1>
|
||||
<TELL "[CHR=" N .CHR "]">)>
|
||||
<COND (<EQUAL? .CHR !\M !\m !\Q !\q ;,ESCAPE-KEY>
|
||||
<COND (.SHIFT?
|
||||
<PUTB .CV .COUNT-OFFS
|
||||
<ORB <ANDB <GETB .CV .COUNT-OFFS> *17*>
|
||||
<LSH <- .CNT 2> 4>>>)
|
||||
(T
|
||||
<PUTB .CV .COUNT-OFFS
|
||||
<ORB <ANDB <GETB .CV .COUNT-OFFS> *360*>
|
||||
<- .CNT 2>>>)>
|
||||
<COND (<EQUAL? .CHR !\Q !\q ;,ESCAPE-KEY>
|
||||
<THROW T ,PARSE-SENTENCE-ACTIVATION>)
|
||||
(T
|
||||
;<WINATTR -3 ,A-SCRIPT ,O-CLEAR>
|
||||
<RETURN>)>)
|
||||
(<EQUAL? .CHR 13 10 ;"32 ,CLICK1 ,CLICK2">
|
||||
<COND (<L=? .CNT .MX>
|
||||
<SET FLG T> ;"CNT starts as 2"
|
||||
<TELL <GET .H .CNT> CR>
|
||||
;"3rd = line 7, 4th = line 9, etc."
|
||||
<COND (<G? <SET CNT <+ .CNT 1>> .MX>
|
||||
<SET FLG <>>
|
||||
<PRINT ,NO-MORE-HINTS>
|
||||
<CRLF>
|
||||
<SCREEN ,S-WINDOW ;.WIN>
|
||||
<INVERSE-LINE 2 ,H-NORMAL>
|
||||
<CENTER-LINE ,M-SEE-HINT-MENU 2 ;,H-INVERSE>
|
||||
<SCREEN ,S-TEXT>)>)
|
||||
(T
|
||||
<SOUND ,S-BEEP>)>)
|
||||
(T
|
||||
<SOUND ,S-BEEP>)>>>
|
||||
|
||||
<DEFINE H-CHAPT-NAME (N)
|
||||
<GET <GET ,HINTS .N> 1>>
|
||||
|
||||
<DEFINE H-GET-QUEST (N)
|
||||
<GET <GET <GET ,HINTS ,H-CHAPT-NUM> <+ .N 1>> 1>>
|
||||
|
||||
<DEFINE H-PUT-UP-FROBS (MX)
|
||||
<HLIGHT ,H-NORMAL>
|
||||
<REPEAT ((ST 0) (X ,LEFT-HINT-COLUMN) (Y ,TOP-HINT-LINE))
|
||||
<COND (<G? <SET ST <+ .ST 1>> .MX>
|
||||
<RETURN>)>
|
||||
<SET Y <+ 1 .Y>>
|
||||
<CCURSET .Y .X>
|
||||
<TELL <ZAPPLY ,GET-HINT-ROUTINE .ST>>
|
||||
<COND (<EQUAL? .ST ,BOTTOM-HINT-NUM>
|
||||
<SET Y ,TOP-HINT-LINE>
|
||||
<SET X </ <LOWCORE SCRH> ;<WINGET -3 ,WWIDE> 2>>)>>>
|
||||
|
||||
<DEFAULT-DEFINITION INIT-HINT-SCREEN
|
||||
<DEFINE INIT-HINT-SCREEN ()
|
||||
<CLEAR -1>
|
||||
<CSPLIT 4>
|
||||
<SCREEN ,S-TEXT>
|
||||
,S-WINDOW>>
|
||||
|
||||
<DEFINE HINT-TITLE (TITLE WIN "OPTIONAL" (THIRD T))
|
||||
<SCREEN .WIN>
|
||||
<INVERSE-LINE 1 ,H-NORMAL>
|
||||
<INVERSE-LINE 2 ,H-NORMAL>
|
||||
<INVERSE-LINE 3 ,H-NORMAL>
|
||||
<HLIGHT ,H-BOLD>
|
||||
<CENTER-LINE .TITLE 1 ,H-INVERSE>
|
||||
<HLIGHT ,H-NORMAL>
|
||||
<LEFT-LINE 2 ,NEXT-HINT ;,H-INVERSE>
|
||||
<COND (<NOT <EQUAL? <BAND <LOWCORE FLAGS> 32> 0>>
|
||||
<CENTER-LINE ,H-OR-USE-MOUSE 3 ;,H-INVERSE>)>
|
||||
<LEFT-LINE 3 ,PREVIOUS-HINT ;,H-INVERSE>
|
||||
<COND (.THIRD
|
||||
<RIGHT-LINE ,RETURN-SEE-HINT 2 ;,H-INVERSE>
|
||||
<RIGHT-LINE ,Q-RESUME-STORY 3 ;,H-INVERSE>)>>
|
||||
|
||||
<DEFINE LEFT-LINE (LN STR "OPTIONAL" (INV <>))
|
||||
<CCURSET .LN 1>
|
||||
<COND (.INV
|
||||
<HLIGHT .INV>)>
|
||||
<TELL .STR>
|
||||
<COND (.INV
|
||||
<HLIGHT ,H-NORMAL>)>>
|
||||
|
||||
<DEFINE RIGHT-LINE (STR "OPTIONAL" (LN 0) (INV <>) (LEN 0))
|
||||
<JUSTIFIED-LINE .STR .LN .INV .LEN 1>>
|
||||
|
||||
<DEFINE CENTER-LINE (STR "OPTIONAL" (LN 0) (INV <>) (LEN 0))
|
||||
<JUSTIFIED-LINE .STR .LN .INV .LEN 2>>
|
||||
|
||||
<DEFINE JUSTIFIED-LINE (STR LN INV LEN CTR)
|
||||
<COND (<ZERO? .LN>
|
||||
<CURGET ,SLINE>
|
||||
<SET LN <GET ,SLINE 0>>)
|
||||
(T
|
||||
<SET LN <- .LN 1>>
|
||||
<SET LN <+ 1 <* .LN <SHIFT <WINGET -3 ,WFSIZE> -8>>>>)>
|
||||
<COND (<ZERO? .LEN>
|
||||
<DIROUT ,D-TABLE-ON ,SLINE ;-80>
|
||||
<TELL .STR !\ >
|
||||
<DIROUT ,D-TABLE-OFF>
|
||||
<SET LEN <LOWCORE TWID>>)>
|
||||
<CURSET .LN </ <- <WINGET -3 ,WWIDE> .LEN> .CTR>>
|
||||
<COND (.INV
|
||||
<HLIGHT .INV>)>
|
||||
<TELL .STR !\ >
|
||||
<COND (.INV
|
||||
<HLIGHT ,H-NORMAL>)>
|
||||
.LEN>
|
||||
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,208 @@
|
|||
"CONSTANTS for
|
||||
Library
|
||||
Copyright (C)1988 Infocom, Inc. All rights reserved."
|
||||
|
||||
"what rfatal returns"
|
||||
|
||||
<CONSTANT M-FATAL 2>
|
||||
|
||||
"context names"
|
||||
|
||||
<CONSTANT M-BEG 1>
|
||||
<CONSTANT M-END 2>
|
||||
<CONSTANT M-ENTER 3>
|
||||
<CONSTANT M-LEAVE 4>
|
||||
<CONSTANT M-LOOK 5>
|
||||
<CONSTANT M-FLASH 6>
|
||||
<CONSTANT M-OBJDESC 7>
|
||||
<CONSTANT M-CONTAINER 8>
|
||||
<CONSTANT M-OBJDESC? 9>
|
||||
<CONSTANT M-SCENE-SETUP 10>
|
||||
<CONSTANT M-WINNER 11>
|
||||
<CONSTANT M-SUBJ 12>
|
||||
|
||||
"machines"
|
||||
|
||||
<CONSTANT DEC-20 1>
|
||||
<CONSTANT APPLE-2E 2>
|
||||
<CONSTANT MACINTOSH 3>
|
||||
<CONSTANT AMIGA 4>
|
||||
<CONSTANT ATARI-ST 5>
|
||||
<CONSTANT IBM 6>
|
||||
<CONSTANT C128 7>
|
||||
<CONSTANT C64 8>
|
||||
<CONSTANT APPLE-2C 9>
|
||||
<CONSTANT APPLE-2GS 10>
|
||||
|
||||
"fonts"
|
||||
|
||||
<CONSTANT F-OLD 0>
|
||||
<CONSTANT F-DEFAULT 1>
|
||||
<CONSTANT F-PICTURES 2>
|
||||
<CONSTANT F-NEWFONT 3>
|
||||
|
||||
"screens"
|
||||
|
||||
<CONSTANT S-TEXT 0>
|
||||
<CONSTANT S-WINDOW 1>
|
||||
|
||||
"yzip screen attribute offsets"
|
||||
|
||||
<CONSTANT WTOP 0>
|
||||
<CONSTANT WLEFT 1>
|
||||
<CONSTANT WHIGH 2>
|
||||
<CONSTANT WWIDE 3>
|
||||
<CONSTANT WYPOS 4>
|
||||
<CONSTANT WXPOS 5>
|
||||
<CONSTANT WLMARGIN 6>
|
||||
<CONSTANT WRMARGIN 7>
|
||||
<CONSTANT WCRFUNC 8>
|
||||
<CONSTANT WCRCNT 9>
|
||||
<CONSTANT WHLIGHT 10>
|
||||
<CONSTANT WCOLOR 11>
|
||||
<CONSTANT WFONT 12>
|
||||
<CONSTANT WFSIZE 13>
|
||||
<CONSTANT WATTRS 14>
|
||||
<CONSTANT WLCNT 15>
|
||||
|
||||
"screen attribute bits"
|
||||
|
||||
<CONSTANT A-WRAP 1> ;"screen wrapping attribute"
|
||||
<CONSTANT A-SCROLL 2> ;"screen scrolling attribute"
|
||||
<CONSTANT A-SCRIPT 4> ;"screen scripting attribute"
|
||||
<CONSTANT A-BUFFER 8> ;"screen buffereing attribute"
|
||||
|
||||
"screen attribute operations"
|
||||
|
||||
<CONSTANT O-MOVE 0> ;"change all attributes"
|
||||
<CONSTANT O-SET 1> ;"set selected attributes"
|
||||
<CONSTANT O-CLEAR 2> ;"clear selected attributes"
|
||||
<CONSTANT O-COMP 3> ;"complement selected attributes"
|
||||
|
||||
"sounds"
|
||||
|
||||
<CONSTANT S-BEEP 1>
|
||||
<CONSTANT S-BOOP 2>
|
||||
|
||||
"sound operations"
|
||||
|
||||
<CONSTANT S-INIT 1>
|
||||
<CONSTANT S-START 2>
|
||||
<CONSTANT S-STOP 3>
|
||||
<CONSTANT S-CLEANUP 4>
|
||||
|
||||
"highlighting modes"
|
||||
|
||||
<CONSTANT H-NORMAL 0>
|
||||
<CONSTANT H-INVERSE 1>
|
||||
<CONSTANT H-BOLD 2>
|
||||
<CONSTANT H-ITALIC 4>
|
||||
<CONSTANT H-UNDER 4>
|
||||
<CONSTANT H-MONO 8>
|
||||
|
||||
"device control"
|
||||
|
||||
<CONSTANT D-KEYBOARD 0>
|
||||
<CONSTANT D-COMMAND-FILE 1>
|
||||
|
||||
<CONSTANT D-SCREEN 1>
|
||||
<CONSTANT D-SCREEN-ON 1>
|
||||
<CONSTANT D-SCREEN-OFF -1>
|
||||
<CONSTANT D-PRINTER 2>
|
||||
<CONSTANT D-PRINTER-ON 2>
|
||||
<CONSTANT D-PRINTER-OFF -2>
|
||||
<CONSTANT D-TABLE 3>
|
||||
<CONSTANT D-TABLE-ON 3>
|
||||
<CONSTANT D-TABLE-OFF -3>
|
||||
<CONSTANT D-RECORD 4>
|
||||
<CONSTANT D-RECORD-ON 4>
|
||||
<CONSTANT D-RECORD-OFF -4>
|
||||
|
||||
"colors"
|
||||
|
||||
<CONSTANT C-HERE -1>
|
||||
<CONSTANT C-SAME 0>
|
||||
<CONSTANT C-DEFAULT 1>
|
||||
<CONSTANT C-BLACK 2>
|
||||
<CONSTANT C-RED 3>
|
||||
<CONSTANT C-GREEN 4>
|
||||
<CONSTANT C-YELLOW 5>
|
||||
<CONSTANT C-BLUE 6>
|
||||
<CONSTANT C-MAGENTA 7>
|
||||
<CONSTANT C-CYAN 8>
|
||||
<CONSTANT C-WHITE 9>
|
||||
|
||||
"function keys"
|
||||
|
||||
<CONSTANT UP-ARROW 129>
|
||||
<CONSTANT DOWN-ARROW 130>
|
||||
<CONSTANT LEFT-ARROW 131>
|
||||
<CONSTANT RIGHT-ARROW 132>
|
||||
|
||||
<CONSTANT F1 133>
|
||||
<CONSTANT F2 134>
|
||||
<CONSTANT F3 135>
|
||||
<CONSTANT F4 136>
|
||||
<CONSTANT F5 137>
|
||||
<CONSTANT F6 138>
|
||||
<CONSTANT F7 139>
|
||||
<CONSTANT F8 140>
|
||||
<CONSTANT F9 141>
|
||||
<CONSTANT F10 142>
|
||||
<CONSTANT F11 143>
|
||||
<CONSTANT F12 144>
|
||||
|
||||
<CONSTANT PAD0 145>
|
||||
<CONSTANT PAD1 146>
|
||||
<CONSTANT PAD2 147>
|
||||
<CONSTANT PAD3 148>
|
||||
<CONSTANT PAD4 149>
|
||||
<CONSTANT PAD5 150>
|
||||
<CONSTANT PAD6 151>
|
||||
<CONSTANT PAD7 152>
|
||||
<CONSTANT PAD8 153>
|
||||
<CONSTANT PAD9 154>
|
||||
|
||||
<CONSTANT CLICKM 252> ;"mouse clicked on a menu item"
|
||||
<CONSTANT CLICK2 253> ;"mouse second/double click"
|
||||
<CONSTANT CLICK1 254> ;"mouse first/single click"
|
||||
|
||||
"MODE byte bits"
|
||||
|
||||
<CONSTANT M-COLOR 1>
|
||||
<CONSTANT M-DISPLAY 2>
|
||||
<CONSTANT M-BOLD 4>
|
||||
<CONSTANT M-UNDERLINE 8>
|
||||
<CONSTANT M-MONOSPACE 16>
|
||||
<CONSTANT M-SOUND 32>
|
||||
|
||||
<DEFMAC MODE-ON? ('F)
|
||||
<FORM NOT <FORM ZERO? <FORM BAND <FORM LOWCORE MODE> .F>>>>
|
||||
|
||||
"FLAGS word bits"
|
||||
|
||||
<CONSTANT F-SCRIPT 1>
|
||||
<CONSTANT F-FIXED 2>
|
||||
<CONSTANT F-STATUS 4>
|
||||
<CONSTANT F-REFRESH 4>
|
||||
<CONSTANT F-DISPLAY 8>
|
||||
<CONSTANT F-UNDO 16>
|
||||
<CONSTANT F-MOUSE 32>
|
||||
<CONSTANT F-COLOR 64>
|
||||
<CONSTANT F-SOUND 128>
|
||||
<CONSTANT F-MENU 256>
|
||||
|
||||
<DEFMAC FLAG-ON? ('F)
|
||||
<FORM NOT <FORM ZERO? <FORM BAND <FORM LOWCORE FLAGS> .F>>>>
|
||||
|
||||
<DEFMAC HIGH-BYTE ('W)
|
||||
<FORM SHIFT .W -8>>
|
||||
|
||||
<DEFMAC LOW-BYTE ('W)
|
||||
<FORM BAND .W 255>>
|
||||
|
||||
<DEFMAC SET-HIGH-BYTE ('W 'B)
|
||||
<FORM BOR <FORM SHIFT .B 8> <FORM BAND .W 255>>>
|
||||
|
||||
<DEFMAC SET-LOW-BYTE ('W 'B)
|
||||
<FORM BOR <FORM BAND .W 65280> .W>>
|
|
@ -0,0 +1,132 @@
|
|||
"DEFS to replace parser's versions for
|
||||
|
||||
ZORK ZERO
|
||||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
<INCLUDE "SYMBOLS">
|
||||
|
||||
<COMPILATION-FLAG P-DEBUGGING-PARSER <>>
|
||||
|
||||
<ADD-TELL-TOKENS D * <DPRINT .X>>
|
||||
|
||||
<DELAY-DEFINITION CAPITAL-NOUN?>
|
||||
|
||||
<REPLACE-DEFINITION FIRST-HINT-POS
|
||||
<CONSTANT FIRST-HINT-LINE 5>
|
||||
<CONSTANT FIRST-HINT-COLUMN 7>>
|
||||
|
||||
<DELAY-DEFINITION READ-INPUT>
|
||||
<DELAY-DEFINITION GAME-VERB?>
|
||||
<DELAY-DEFINITION LIT?>
|
||||
|
||||
<REPLACE-DEFINITION NO-M-WINNER-VERB?
|
||||
<DEFMAC NO-M-WINNER-VERB? ()
|
||||
'<VERB? ASK-ABOUT ;MAKE-WITH SRIDE-DIR SSEARCH-OBJECT-FOR
|
||||
;SGIVE SPUT-ON SSHOW STHROW SWRAP ;TELL-ABOUT STOUCH>>>
|
||||
|
||||
<REPLACE-DEFINITION NOT-HERE-VERB?
|
||||
<ROUTINE NOT-HERE-VERB? (V)
|
||||
<EQUAL? .V ,V?WALK-TO ,V?RESEARCH>>>
|
||||
|
||||
<REPLACE-DEFINITION OWNERS
|
||||
<CONSTANT OWNERS <TABLE (PURE LENGTH) JESTER WALL>>>
|
||||
<REPLACE-DEFINITION PARSER-REPORT <CONSTANT PARSER-REPORT <>>>
|
||||
|
||||
<REPLACE-DEFINITION PERSONBIT <CONSTANT PERSONBIT ACTORBIT>>
|
||||
<REPLACE-DEFINITION PLAYER <CONSTANT PLAYER PROTAGONIST>>
|
||||
<REPLACE-DEFINITION PRINT-INTQUOTE <CONSTANT PRINT-INTQUOTE 0>>
|
||||
<DELAY-DEFINITION REFRESH>
|
||||
<REPLACE-DEFINITION ROOMSBIT <CONSTANT ROOMSBIT KLUDGEBIT>>
|
||||
|
||||
<REPLACE-DEFINITION SEE-VERB?
|
||||
<ROUTINE SEE-VERB? ()
|
||||
<VERB? CHASTISE COUNT EXAMINE FIND TAKE
|
||||
;INVENTORY LOOK LOOK-BEHIND LOOK-DOWN LOOK-INSIDE
|
||||
LOOK-UNDER READ SEARCH>>>
|
||||
|
||||
<COMPILATION-FLAG P-APOSTROPHE-BREAKS-WORDS <>>
|
||||
<REPLACE-DEFINITION SIBREAKS <SETG20 SIBREAKS ".,\"!?">>
|
||||
|
||||
<REPLACE-DEFINITION SETUP-ORPHAN-NP <CONSTANT SETUP-ORPHAN-NP 0>>
|
||||
|
||||
<REPLACE-DEFINITION SPEAKING-VERB?
|
||||
<ROUTINE SPEAKING-VERB? ("OPT" (A ,PRSA))
|
||||
<COND (<EQUAL? .A ;,V?ANSWER ,V?ASK-ABOUT ,V?ASK-FOR ,V?HELLO
|
||||
,V?NO ;,V?REPLY ,V?TELL ,V?TELL-ABOUT ,V?YES>
|
||||
<RTRUE>)>>>
|
||||
|
||||
<DELAY-DEFINITION STATUS-LINE>
|
||||
|
||||
<REPLACE-DEFINITION TELL-TOO-DARK
|
||||
<ROUTINE TELL-TOO-DARK ()
|
||||
<SETG P-CONT -1> ;<RFATAL>
|
||||
<TELL ,TOO-DARK>
|
||||
<COND (<VERB? LOOK>
|
||||
<GRUE-PIT-WARNING>)
|
||||
(T
|
||||
<CRLF>)>>>
|
||||
|
||||
<COMPILATION-FLAG P-TITLE-ABBRS T>
|
||||
|
||||
<REPLACE-DEFINITION TITLE-ABBR?
|
||||
<DEFMAC TITLE-ABBR?!- ('WRD) <FORM EQUAL? .WRD ',W?ST ',W?D ',W?J ',W?A>>>
|
||||
|
||||
<DELAY-DEFINITION VERB-ALL-TEST>
|
||||
<REPLACE-DEFINITION YES? <CONSTANT YES? 0>>
|
||||
|
||||
<COMPILATION-FLAG P-PS-ADV T>
|
||||
<COMPILATION-FLAG P-PS-COMMA T>
|
||||
<COMPILATION-FLAG P-PS-OFWORD T>
|
||||
;<COMPILATION-FLAG P-PS-THEWORD T>
|
||||
<COMPILATION-FLAG P-PS-QUOTE T>
|
||||
<TERMINALS VERB NOUN ADJ ;"keep these three in order! -- SWG"
|
||||
DIR
|
||||
PARTICLE PREP ;"keep these two in order! -- SWG"
|
||||
ASKWORD ;7
|
||||
OFWORD ;ARTICLE QUOTE COMMA
|
||||
ADV QUANT MISCWORD>
|
||||
|
||||
<PROPDEF DIRECTIONS <>
|
||||
(DIR TO R:ROOM =
|
||||
(UEXIT 1) ;444 #SEMI "UNCONDITIONAL EXIT"
|
||||
(REXIT <ROOM .R>) #SEMI "TO ROOM")
|
||||
(DIR S:STRING =
|
||||
(NEXIT 2) ;99 #SEMI "IMPOSSIBLE EXIT"
|
||||
(NEXITSTR <STRING .S>) #SEMI "FAILURE MESSAGE")
|
||||
(DIR SORRY S:STRING =
|
||||
(NEXIT 2) #SEMI "IMPOSSIBLE EXIT"
|
||||
(NEXITSTR <STRING .S>) #SEMI "FAILURE MESSAGE")
|
||||
(DIR PER F:FCN =
|
||||
(FEXIT 3) ;53 #SEMI "CONDITIONAL EXIT"
|
||||
(FEXITFCN <WORD .F>) #SEMI "PER FUNCTION"
|
||||
<BYTE 0>)
|
||||
(DIR TO R:ROOM IF F:GLOBAL "OPT" ELSE S:STRING =
|
||||
(CEXIT 4) ;7 #SEMI "CONDITIONAL EXIT"
|
||||
(REXIT <ROOM .R>) #SEMI "TO ROOM"
|
||||
(CEXITFLAG <GLOBAL .F>) #SEMI "IF FLAG IS TRUE"
|
||||
(CEXITSTR <STRING .S>) #SEMI "FAILURE MESSAGE")
|
||||
(DIR TO R:ROOM IF O:OBJECT IS OPEN "OPT" ELSE S:STRING =
|
||||
(DEXIT 5) ;15 #SEMI "CONDITIONAL EXIT"
|
||||
(DEXITOBJ <OBJECT .O>) #SEMI "IF DOOR IS OPEN"
|
||||
(DEXITSTR <STRING .S>) #SEMI "FAILURE MESSAGE"
|
||||
(DEXITRM <ROOM .R>) #SEMI "TO ROOM")>
|
||||
|
||||
;<REPLACE-DEFINITION GET-DEXITOBJ
|
||||
<ROUTINE GET-DEXITOBJ (PT) <ZGET <REST .PT> ,DEXITOBJ>>>
|
||||
|
||||
<DIRECTIONS NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT>
|
||||
|
||||
<OBJECT INTDIR
|
||||
(LOC GLOBAL-OBJECTS)
|
||||
(DESC "direction")
|
||||
(SYNONYM NORTH NE EAST SE SOUTH SW WEST NW ;UP ;DOWN)>
|
||||
|
||||
;<CONSTANT M-OBJDESC? 10>
|
||||
|
||||
<ZSTART GO> ;"else, ZIL gets confused between verb-word GO and routine GO"
|
||||
|
||||
<CONSTANT S-FULL 7>
|
||||
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,69 @@
|
|||
|
||||
<BEGIN-SEGMENT 0>
|
||||
<INCLUDE "BASEDEFS" "PBITDEFS" "PDEFS">
|
||||
<NEW-ADD-WORD "CAGES" NOUN <VOC "CAGE"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "STALLS" NOUN <VOC "STALL"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "DOORS" NOUN <VOC "DOOR"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "BUTTONS" NOUN <VOC "BUTTON"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "ORBS" NOUN <VOC "ORB"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "SLABS" NOUN <VOC "SLAB"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "WEIGHTS" NOUN <VOC "WEIGHT"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "ANIMALS" NOUN <VOC "ANIMAL"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "SNAKES" NOUN <VOC "SNAKE"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "KEYS" NOUN <VOC "KEY"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "PEGS" NOUN <VOC "PEG"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "POSTS" NOUN <VOC "POST"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "SHELLS" NOUN <VOC "SHELL"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "FLIES" NOUN <VOC "FLY"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "VIALS" NOUN <VOC "VIAL"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "TREES" NOUN <VOC "TREE"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "ELMS" NOUN <VOC "ELM"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "OAKS" NOUN <VOC "OAK"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "PINES" NOUN <VOC "PINE"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "WITCHES" NOUN <VOC "WITCH"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "PASSAGES" NOUN <VOC "PASSAGE"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "FLOWERS" NOUN <VOC "FLOWER"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "BOARDS" NOUN <VOC "BOARD"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "SHUTTERS" NOUN <VOC "SHUTTER"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "DIMWIT'S" ADJ DIMWIT ,POSSESSIVE>
|
||||
<NEW-ADD-WORD "JESTER'S" ADJ JESTER ,POSSESSIVE>
|
||||
<DEFINE-ROUTINE DIRECTION-CONVERSION>
|
||||
<REPLACE-DEFINITION MOBY-FIND? <ROUTINE MOBY-FIND? (SEARCH) <COND (<OR <NOT <0?
|
||||
<ANDB .SEARCH ,SEARCH-MOBY>>> <EQUAL? ,WINNER ,EXECUTIONER>> T)>>>
|
||||
<REPLACE-DEFINITION WHICH-LIST? <ROUTINE WHICH-LIST? (NP SR "AUX" (CT <
|
||||
FIND-RES-COUNT .SR>) (V <REST-TO-SLOT .SR FIND-RES-OBJ1>)) <COND (<G? .CT <
|
||||
FIND-RES-SIZE .SR>> <RFALSE>) (<AND <SET NP <INTBL? ,PSEUDO-OBJECT .V .CT>> <
|
||||
INTBL? ,PSEUDO-OBJECT <REST .NP 2> <- .CT </ <+ 2 <- .NP .V>> 2>>>> <RFALSE>)>
|
||||
<REPEAT () <COND (<L? <SET CT <- .CT 1>> 0> <RFALSE>) (<ACCESSIBLE? <ZGET .V 0>
|
||||
> <RTRUE>) (T <SET V <ZREST .V 2>>)>>>>
|
||||
<REPLACE-DEFINITION PSEUDO-OBJECTS <PUTPROP THINGS PROPSPEC HACK-PSEUDOS> <
|
||||
DEFINE20 HACK-PSEUDOS (LIST "AUX" (N 0) (CT 0) NL) <SET LIST <REST .LIST>> <SET
|
||||
LIST <MAPF ,LIST <FUNCTION (X) <COND (<0? .N> <SET CT <+ .CT 1>> <SET N 1> <
|
||||
COND (<TYPE? .X ATOM> <TABLE (PURE) 1 <VOC <SPNAME .X> ADJ>>) (<TYPE? .X LIST>
|
||||
<EVAL <CHTYPE (TABLE (PURE) <LENGTH .X> !<MAPF ,LIST <FUNCTION (Y) <VOC <SPNAME
|
||||
.Y> ADJ>> .X!>) FORM>>) (T 0)>) (<1? .N> <SET N 2> <COND (<TYPE? .X ATOM> <
|
||||
TABLE (PURE) 1 <VOC <SPNAME .X> NOUN>>) (<TYPE? .X LIST> <EVAL <CHTYPE (TABLE (
|
||||
PURE) <LENGTH .X> !<MAPF ,LIST <FUNCTION (Y) <VOC <SPNAME .Y> NOUN>> .X!>) FORM
|
||||
>>) (T 0)>) (T <SET N 0> .X)>> .LIST>> (<> <EVAL <CHTYPE (TABLE (PURE) .CT !.
|
||||
LIST) FORM>>)> <DEFINE TEST-THINGS (RM F "AUX" CT (RMG <GETP .RM ,P?THINGS>) (
|
||||
RMGL <GET .RMG 0>)) <SET RMG <REST .RMG 2>> <COND (<T? <SET CT <FIND-ADJS .F>>>
|
||||
<SET CT <ADJS-COUNT .CT>>)> <REPEAT (TTBL (NOUN <FIND-NOUN .F>) (V <
|
||||
REST-TO-SLOT <FIND-ADJS .F> ADJS-COUNT 1>)) <COND (<AND <SET TTBL <GET .RMG 1>>
|
||||
<OR <EQUAL? .NOUN ,W?ONE> <INTBL? .NOUN <REST .TTBL 2> <GET .TTBL 0>>> <OR <0?
|
||||
.CT> <AND <SET TTBL <GET .RMG 0>> <INTBL? <ZGET .V 0> <REST .TTBL 2> <GET .TTBL
|
||||
0>>>> <OR <NOT <FIND-OF .F>> <AND <EQUAL? 1 <FIND-RES-COUNT ,OWNER-SR-HERE>> <
|
||||
EQUAL? ,PSEUDO-OBJECT <FIND-RES-OBJ1 ,OWNER-SR-HERE>> <EQUAL? ,LAST-PSEUDO-LOC
|
||||
.RM> <EQUAL? <GETP ,PSEUDO-OBJECT ,P?ACTION> <GET .RMG 2>>>>> <SETG
|
||||
LAST-PSEUDO-LOC .RM> <PUTP ,PSEUDO-OBJECT ,P?ACTION <GET .RMG 2>> <SET V <ZBACK
|
||||
<GETPT ,PSEUDO-OBJECT ,P?ACTION> 7>> <COPYT .NOUN .V 6> <ADD-OBJECT ,
|
||||
PSEUDO-OBJECT .F> <RFALSE>)> <SET RMG <REST .RMG 6>> <COND (<L? <SET RMGL <- .
|
||||
RMGL 1>> 1> <RTRUE>)>>> <GLOBAL LAST-PSEUDO-LOC:OBJECT <>> <OBJECT
|
||||
PSEUDO-OBJECT (LOC LOCAL-GLOBALS) (DESC "pseudoxxx") (ACTION 0)>>
|
||||
<REPLACE-DEFINITION INVALID-OBJECT? <ROUTINE INVALID-OBJECT? (OBJ) <COND (<
|
||||
EVERYWHERE-VERB?> <RFALSE>)> <COND (<AND <EQUAL? .OBJ ,CEILING> <FSET? ,HERE ,
|
||||
OUTSIDEBIT> <NOT <EQUAL? ,HERE ,ROOF ,PARAPET>>> <RTRUE>) (<AND <EQUAL? .OBJ ,
|
||||
LOCK-OBJECT> <NOUN-USED? ,LOCK-OBJECT ,W?KEYHOLE> <EQUAL? ,HERE ,LOWEST-HALL>>
|
||||
<RTRUE>) (<AND <EQUAL? .OBJ ,WALL> <FSET? ,HERE ,OUTSIDEBIT> <NOT <EQUAL? ,
|
||||
W?ONE <FIND-NOUN ,FINDER>>> <NOT <EQUAL? ,HERE ,PERIMETER-WALL>>> <RTRUE>) (T <
|
||||
RFALSE>)>>>
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT DIRECTION-CONVERSION
|
||||
CALL2 GET-NP,INTDIR
|
||||
GET STACK,2
|
||||
GETB STACK,6
|
||||
RSTACK
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.ENDI
|
|
@ -0,0 +1,165 @@
|
|||
"DEFS2 for
|
||||
|
||||
ZORK ZERO
|
||||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
<INCLUDE "BASEDEFS" "PBITDEFS" "PDEFS">
|
||||
|
||||
<NEW-ADD-WORD "CAGES" NOUN <VOC "CAGE"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "STALLS" NOUN <VOC "STALL"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "DOORS" NOUN <VOC "DOOR"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "BUTTONS" NOUN <VOC "BUTTON"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "ORBS" NOUN <VOC "ORB"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "SLABS" NOUN <VOC "SLAB"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "WEIGHTS" NOUN <VOC "WEIGHT"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "ANIMALS" NOUN <VOC "ANIMAL"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "SNAKES" NOUN <VOC "SNAKE"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "KEYS" NOUN <VOC "KEY"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "PEGS" NOUN <VOC "PEG"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "POSTS" NOUN <VOC "POST"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "SHELLS" NOUN <VOC "SHELL"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "FLIES" NOUN <VOC "FLY"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "VIALS" NOUN <VOC "VIAL"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "TREES" NOUN <VOC "TREE"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "ELMS" NOUN <VOC "ELM"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "OAKS" NOUN <VOC "OAK"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "PINES" NOUN <VOC "PINE"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "WITCHES" NOUN <VOC "WITCH"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "PASSAGES" NOUN <VOC "PASSAGE"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "FLOWERS" NOUN <VOC "FLOWER"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "BOARDS" NOUN <VOC "BOARD"> ,PLURAL-FLAG>
|
||||
<NEW-ADD-WORD "SHUTTERS" NOUN <VOC "SHUTTER"> ,PLURAL-FLAG>
|
||||
|
||||
<NEW-ADD-WORD "DIMWIT\'S" ADJ DIMWIT ,POSSESSIVE>
|
||||
<NEW-ADD-WORD "JESTER\'S" ADJ JESTER ,POSSESSIVE>
|
||||
|
||||
<ROUTINE DIRECTION-CONVERSION ()
|
||||
<WORD-DIR-ID <NP-NAME <GET-NP ,INTDIR>>>>
|
||||
|
||||
<REPLACE-DEFINITION MOBY-FIND?
|
||||
<ROUTINE MOBY-FIND? (SEARCH)
|
||||
<COND (<OR <NOT <0? <ANDB .SEARCH ,SEARCH-MOBY ;128>>>
|
||||
<EQUAL? ,WINNER ,EXECUTIONER>>
|
||||
T)>>>
|
||||
|
||||
<REPLACE-DEFINITION WHICH-LIST?
|
||||
<ROUTINE WHICH-LIST? (NP SR "AUX" (CT <FIND-RES-COUNT .SR>)
|
||||
(V <REST-TO-SLOT .SR FIND-RES-OBJ1>))
|
||||
<COND (<G? .CT <FIND-RES-SIZE .SR>>
|
||||
<RFALSE>)
|
||||
;(<EQUAL? <NP-NAME .NP> ,W?FLY ,W?FLIES>
|
||||
<RFALSE>)
|
||||
(<AND <SET NP <INTBL? ,PSEUDO-OBJECT .V .CT>>
|
||||
<INTBL? ,PSEUDO-OBJECT <REST .NP 2>
|
||||
<- .CT </ <+ 2 <- .NP .V>> 2>>>>
|
||||
<RFALSE>)>
|
||||
<REPEAT ()
|
||||
<COND (<L? <SET CT <- .CT 1>> 0>
|
||||
<RFALSE>)
|
||||
(<ACCESSIBLE? <ZGET .V 0>>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<SET V <ZREST .V 2>>)>>>>
|
||||
|
||||
<REPLACE-DEFINITION PSEUDO-OBJECTS
|
||||
|
||||
<PUTPROP THINGS PROPSPEC HACK-PSEUDOS>
|
||||
|
||||
<DEFINE20 HACK-PSEUDOS (LIST "AUX" (N 0) (CT 0) NL)
|
||||
<SET LIST <REST .LIST>>
|
||||
<SET LIST
|
||||
<MAPF ,LIST
|
||||
<FUNCTION (X)
|
||||
<COND (<0? .N>
|
||||
<SET CT <+ .CT 1>>
|
||||
<SET N 1>
|
||||
<COND (<TYPE? .X ATOM>
|
||||
<TABLE (PURE ;PATTERN ;(BYTE [REST WORD]))
|
||||
1
|
||||
<VOC <SPNAME .X> ADJ>>)
|
||||
(<TYPE? .X LIST>
|
||||
<EVAL <CHTYPE (TABLE (PURE ;PATTERN ;(BYTE [REST WORD]))
|
||||
<LENGTH .X>
|
||||
!<MAPF ,LIST
|
||||
<FUNCTION (Y)
|
||||
<VOC <SPNAME .Y> ADJ>>
|
||||
.X>) FORM>>)
|
||||
(T 0)>)
|
||||
(<1? .N>
|
||||
<SET N 2>
|
||||
<COND (<TYPE? .X ATOM>
|
||||
<TABLE (PURE ;PATTERN ;(BYTE [REST WORD]))
|
||||
1 <VOC <SPNAME .X> NOUN>>)
|
||||
(<TYPE? .X LIST>
|
||||
<EVAL <CHTYPE (TABLE (PURE ;PATTERN ;(BYTE [REST WORD]))
|
||||
<LENGTH .X>
|
||||
!<MAPF ,LIST
|
||||
<FUNCTION (Y)
|
||||
<VOC <SPNAME .Y> NOUN>>
|
||||
.X>) FORM>>)
|
||||
(T 0)>)
|
||||
(T
|
||||
<SET N 0>
|
||||
.X)>>
|
||||
.LIST>>
|
||||
(<> <EVAL <CHTYPE (TABLE (PURE ;PATTERN ;(BYTE [REST WORD]))
|
||||
.CT !.LIST) FORM>>)>
|
||||
|
||||
<DEFINE TEST-THINGS (RM F
|
||||
"AUX" CT (RMG <GETP .RM ,P?THINGS>) (RMGL <GET .RMG 0>))
|
||||
<SET RMG <REST .RMG 2>>
|
||||
<COND (<T? <SET CT <FIND-ADJS .F>>>
|
||||
<SET CT <ADJS-COUNT .CT>>)>
|
||||
<REPEAT (TTBL (NOUN <FIND-NOUN .F>)
|
||||
(V <REST-TO-SLOT <FIND-ADJS .F> ADJS-COUNT 1>))
|
||||
<COND (<AND <SET TTBL <GET .RMG 1>>
|
||||
<OR <EQUAL? .NOUN ;<> ,W?ONE>
|
||||
<INTBL? .NOUN <REST .TTBL 2> <GET .TTBL 0>>>
|
||||
<OR <0? .CT>
|
||||
<AND <SET TTBL <GET .RMG 0>>
|
||||
<INTBL? <ZGET .V 0> <REST .TTBL 2> <GET .TTBL 0>>>>
|
||||
<OR <NOT <FIND-OF .F>>
|
||||
<AND <EQUAL? 1 <FIND-RES-COUNT ,OWNER-SR-HERE>>
|
||||
<EQUAL? ,PSEUDO-OBJECT <FIND-RES-OBJ1 ,OWNER-SR-HERE>>
|
||||
<EQUAL? ,LAST-PSEUDO-LOC .RM>
|
||||
<EQUAL? <GETP ,PSEUDO-OBJECT ,P?ACTION> <GET .RMG 2>>>>>
|
||||
<SETG LAST-PSEUDO-LOC .RM>
|
||||
<PUTP ,PSEUDO-OBJECT ,P?ACTION <GET .RMG 2>>
|
||||
<SET V <ZBACK <GETPT ,PSEUDO-OBJECT ,P?ACTION> 7>>
|
||||
<COPYT .NOUN .V 6>
|
||||
<ADD-OBJECT ,PSEUDO-OBJECT .F>
|
||||
<RFALSE>)>
|
||||
<SET RMG <REST .RMG 6>>
|
||||
<COND (<L? <SET RMGL <- .RMGL 1>> 1>
|
||||
<RTRUE>)>>>
|
||||
|
||||
<GLOBAL LAST-PSEUDO-LOC:OBJECT <>>
|
||||
|
||||
<OBJECT PSEUDO-OBJECT
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "pseudoxxx")
|
||||
(ACTION 0) ;"no other properties!">>
|
||||
|
||||
<REPLACE-DEFINITION INVALID-OBJECT?
|
||||
<ROUTINE INVALID-OBJECT? (OBJ)
|
||||
<COND (<EVERYWHERE-VERB?>
|
||||
<RFALSE>)>
|
||||
<COND (<AND <EQUAL? .OBJ ,CEILING>
|
||||
<FSET? ,HERE ,OUTSIDEBIT>
|
||||
<NOT <EQUAL? ,HERE ,ROOF ,PARAPET>>>
|
||||
<RTRUE>)
|
||||
(<AND <EQUAL? .OBJ ,LOCK-OBJECT>
|
||||
<NOUN-USED? ,LOCK-OBJECT ,W?KEYHOLE>
|
||||
<EQUAL? ,HERE ,LOWEST-HALL>>
|
||||
<RTRUE>)
|
||||
(<AND <EQUAL? .OBJ ,WALL>
|
||||
<FSET? ,HERE ,OUTSIDEBIT>
|
||||
<NOT <EQUAL? ,W?ONE <FIND-NOUN ,FINDER>>>
|
||||
<NOT <EQUAL? ,HERE ,PERIMETER-WALL>>>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<RFALSE>)>>>
|
||||
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,153 @@
|
|||
|
||||
<BEGIN-SEGMENT FENSHIRE>
|
||||
<ROOM DIRIGIBLE-HANGAR (LOC ROOMS) (REGION "Flatheadia") (DESC
|
||||
"Dirigible Hangar") (LDESC
|
||||
"Even after becoming accustomed to the oversized scale of the castle,
|
||||
this hangar seems tremendous. The only exit on foot is to the east.") (EAST TO
|
||||
WEST-WING) (OUT TO WEST-WING) (IN PER DIRIGIBLE-ENTER-F) (FLAGS RLANDBIT ONBIT)
|
||||
(SYNONYM HANGAR) (ADJECTIVE DIRIGIBLE LARGE) (MAP-LOC <PTABLE MAIN-MAP-NUM
|
||||
MAP-GEN-Y-5 MAP-GEN-X-1>) (GLOBAL GONDOLA) (ACTION DIRIGIBLE-HANGAR-F)>
|
||||
<DEFINE-ROUTINE DIRIGIBLE-ENTER-F>
|
||||
<DEFINE-ROUTINE DIRIGIBLE-HANGAR-F>
|
||||
<OBJECT DIRIGIBLE (LOC DIRIGIBLE-HANGAR) (DESC "dirigible") (LDESC
|
||||
"A tremendous dirigible is moored here. The gondola is just a few inches
|
||||
off the ground.") (SYNONYM DIRIGIBLE) (FLAGS VEHBIT) (ACTION DIRIGIBLE-F)>
|
||||
<DEFINE-ROUTINE DIRIGIBLE-F>
|
||||
<ROOM GONDOLA (LOC ROOMS) (REGION "Flatheadia") (DESC "Gondola") (OUT PER
|
||||
GONDOLA-EXIT-F) (FLAGS RLANDBIT ONBIT) (SYNONYM GONDOLA) (GLOBAL WINDOW
|
||||
DIRIGIBLE DIRIGIBLE-HANGAR SMALLER-HANGAR) (MAP-LOC <TABLE MAIN-MAP-NUM
|
||||
GONDOLA-AT-FLATHEADIA-LOC MAP-GEN-X-1>) (ICON GONDOLA-ICON) (ACTION GONDOLA-F)>
|
||||
|
||||
<DEFINE-ROUTINE GONDOLA-F>
|
||||
<CONSTANT GONDOLA-CONTROLS-DESC
|
||||
"The controls consist of merely two buttons: the left button
|
||||
is marked \"Flatheadia\" and the right button is marked \"Fenshire.\"">
|
||||
<OBJECT GONDOLA-CONTROLS (LOC GONDOLA) (DESC "controls") (SYNONYM CONTROL
|
||||
CONTROLS) (FLAGS NDESCBIT) (ACTION GONDOLA-CONTROLS-F)>
|
||||
<DEFINE-ROUTINE GONDOLA-CONTROLS-F>
|
||||
<OBJECT LEFT-GONDOLA-BUTTON (LOC GONDOLA) (DESC "left button") (SYNONYM BUTTON)
|
||||
(ADJECTIVE LEFT) (FLAGS NDESCBIT) (ACTION GONDOLA-BUTTON-F)>
|
||||
<OBJECT RIGHT-GONDOLA-BUTTON (LOC GONDOLA) (DESC "right button") (SYNONYM
|
||||
BUTTON) (ADJECTIVE RIGHT) (FLAGS NDESCBIT) (ACTION GONDOLA-BUTTON-F)>
|
||||
<DEFINE-ROUTINE GONDOLA-BUTTON-F>
|
||||
<DEFINE-ROUTINE GONDOLA-EXIT-F>
|
||||
<GLOBAL DESTINATION <>>
|
||||
<GLOBAL DIRIGIBLE-COUNTER 0>
|
||||
<DEFINE-ROUTINE I-DIRIGIBLE>
|
||||
<CONSTANT DIRIGIBLE-TRIP-DESCS <PTABLE
|
||||
"It is now passing over a thickly tangled woods, stretching for miles in every
|
||||
direction." "You are now above the Frigid River. Cliffs crowd the river on both sides. To
|
||||
the south, you can just make out the spray of Aragain Falls."
|
||||
"The dirigible rises even higher as it crosses the Flathead Mountains. Jagged,
|
||||
snow-topped peaks slide by below."
|
||||
"Below you are vast square bloits of dismal swampland: the endless marshes of
|
||||
Fenshire.">>
|
||||
<ROOM SMALLER-HANGAR (LOC ROOMS) (REGION "Fenshire") (DESC "Smaller Hangar") (
|
||||
LDESC "This hangar, though still large, is smaller than the one in Flatheadia.
|
||||
The only exit is south.") (SOUTH TO DESERTED-CASTLE) (IN PER DIRIGIBLE-ENTER-F)
|
||||
(OUT TO DESERTED-CASTLE) (FLAGS RLANDBIT ONBIT) (SYNONYM HANGAR) (ADJECTIVE
|
||||
SMALLER) (GLOBAL GONDOLA) (VALUE 6) (MAP-LOC <PTABLE FENSHIRE-MAP-NUM
|
||||
MAP-GEN-Y-3 MAP-GEN-X-2>) (ACTION 0)>
|
||||
<DEFINE-ROUTINE SMALLER-HANGAR-F>
|
||||
<ROOM DESERTED-CASTLE (LOC ROOMS) (REGION "Fenshire") (DESC "Deserted Castle")
|
||||
(LDESC "The summer palace of the Kings of Quendor now lies in ruins, unoccupied
|
||||
and uncared for, forgotten for many years. What's left of the castle can
|
||||
be entered to the east, and a hangar lies to the north.") (NORTH TO
|
||||
SMALLER-HANGAR) (EAST TO RUINED-HALL) (FLAGS RLANDBIT ONBIT OUTSIDEBIT) (GLOBAL
|
||||
SMALLER-HANGAR) (MAP-LOC <PTABLE FENSHIRE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-2>) (
|
||||
ACTION 0)>
|
||||
<DEFINE-ROUTINE DESERTED-CASTLE-F>
|
||||
<ROOM RUINED-HALL (LOC ROOMS) (REGION "Fenshire") (DESC "Ruined Hall") (NORTH
|
||||
TO MARSH IF ARCHWAY-OPEN ELSE "That archway has crumbled!") (SOUTH TO HOTHOUSE)
|
||||
(WEST TO DESERTED-CASTLE) (EAST TO SECRET-ROOM IF SECRET-ROOM-REVEALED) (UP
|
||||
SORRY "The stairs have crumbled beyond use.") (FLAGS RLANDBIT ONBIT) (GLOBAL
|
||||
STAIRS) (MAP-LOC <PTABLE FENSHIRE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-3>) (ICON
|
||||
RUINED-HALL-ICON) (ACTION RUINED-HALL-F)>
|
||||
<DEFINE-ROUTINE RUINED-HALL-F>
|
||||
<OBJECT FIREPLACE (LOC RUINED-HALL) (DESC "fireplace") (SYNONYM FIREPLACE) (
|
||||
ADJECTIVE CHOKED) (FLAGS NDESCBIT) (ACTION FIREPLACE-F)>
|
||||
<DEFINE-ROUTINE FIREPLACE-F>
|
||||
<OBJECT FRESCO (LOC RUINED-HALL) (DESC "fresco") (SYNONYM FRESCO) (ADJECTIVE
|
||||
FADED) (FLAGS NDESCBIT) (ACTION FRESCO-F)>
|
||||
<DEFINE-ROUTINE FRESCO-F>
|
||||
<OBJECT VASE (LOC RUINED-HALL) (DESC "vase") (SYNONYM VASE) (ADJECTIVE SMALL) (
|
||||
FLAGS NDESCBIT CONTBIT SEARCHBIT OPENBIT TRYTAKEBIT) (ACTION VASE-F)>
|
||||
<DEFINE-ROUTINE VASE-F>
|
||||
<GLOBAL SECRET-ROOM-REVEALED <>>
|
||||
<ROOM SECRET-ROOM (LOC ROOMS) (REGION "Fenshire") (DESC "Secret Room") (LDESC
|
||||
"You are the first person to breathe the air of this room in uncounted years.
|
||||
The only exit is west.") (WEST TO RUINED-HALL) (OUT TO RUINED-HALL) (FLAGS
|
||||
RLANDBIT) (SYNONYM ROOM) (ADJECTIVE SECRET) (MAP-LOC <PTABLE FENSHIRE-MAP-NUM
|
||||
MAP-GEN-Y-4 MAP-GEN-X-4>) (ICON SECRET-ROOM-ICON)>
|
||||
<OBJECT LADDER (LOC SECRET-ROOM) (DESC "ladder") (FDESC
|
||||
"This room was probably intended as a hiding place for the royal family
|
||||
in the event of a revolution, and may have once been well-stocked with
|
||||
supplies. Now, however, the only item here is a small stepladder.") (SYNONYM
|
||||
LADDER STEPLADDER) (ADJECTIVE SMALL) (CAPACITY 20) (SIZE 20) (FLAGS TAKEBIT
|
||||
VEHBIT CONTBIT SEARCHBIT SURFACEBIT) (ACTION LADDER-F)>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<DEFINE-ROUTINE LADDER-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT FENSHIRE>
|
||||
<GLOBAL ARCHWAY-OPEN T>
|
||||
<GLOBAL STEPPING-STONES-VISIBLE <>>
|
||||
<ROOM MARSH (LOC ROOMS) (REGION "Fenshire") (DESC "Marsh") (SOUTH TO
|
||||
RUINED-HALL IF ARCHWAY-OPEN ELSE
|
||||
"The archway has collapsed; that way is now impassable.") (NORTH PER
|
||||
STEPPING-STONES-F) (FLAGS RLANDBIT ONBIT OUTSIDEBIT) (GLOBAL SWAMP ARCH) (ICON
|
||||
MARSH-ICON) (MAP-LOC <PTABLE FENSHIRE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-3>) (ACTION
|
||||
MARSH-F)>
|
||||
<DEFINE-ROUTINE MARSH-F>
|
||||
<DEFINE-ROUTINE STEPPING-STONES-F>
|
||||
<ROOM NICE-LUNCH-SPOT (LOC ROOMS) (REGION "Fenshire") (DESC "Nice Lunch Spot")
|
||||
(LDESC "Maybe the jester likes the ambience here, but to you it just looks like
|
||||
a slightly drier spot amidst a reedy marsh. The reeds are impassably thick
|
||||
in every direction, except to the south where a series of stepping stones
|
||||
offers a way to cross a malodorous patch of quicksand.") (SOUTH TO MARSH) (
|
||||
FLAGS RLANDBIT ONBIT OUTSIDEBIT) (MAP-LOC <PTABLE FENSHIRE-MAP-NUM MAP-GEN-Y-2
|
||||
MAP-GEN-X-3>) (ACTION NICE-LUNCH-SPOT-F)>
|
||||
<DEFINE-ROUTINE NICE-LUNCH-SPOT-F>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT HEXAGONAL-BLOCK (LOC LOCAL-GLOBALS) (DESC "hexagonal block") (SYNONYM
|
||||
BLOCK ROCK) (ADJECTIVE SMALL ELONGATED HEXAGONAL HEXAGON-SHAPED) (FLAGS TAKEBIT
|
||||
) (SIZE 3) (ACTION HEXAGONAL-BLOCK-F)>
|
||||
<DEFINE-ROUTINE HEXAGONAL-BLOCK-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT FENSHIRE>
|
||||
<ROOM HOTHOUSE (LOC ROOMS) (REGION "Fenshire") (DESC "Hothouse") (LDESC
|
||||
"This enclosed arboretum must have been a breathtaking room at one time. Now,
|
||||
much of the glass is broken and the foliage has run wild, nearly obscuring the
|
||||
exit to the north. Despite the broken glass, it's stiflingly hot in here.") (
|
||||
NORTH TO RUINED-HALL) (OUT TO RUINED-HALL) (FLAGS RLANDBIT ONBIT) (SYNONYM
|
||||
HOTHOUSE GREENHOUSE ARBORETUM) (GLOBAL WINDOW) (MAP-LOC <PTABLE
|
||||
FENSHIRE-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-3>) (ICON HOTHOUSE-ICON) (ACTION
|
||||
HOTHOUSE-F)>
|
||||
<DEFINE-ROUTINE HOTHOUSE-F>
|
||||
<CONSTANT SN-PICSET-TBL <TABLE BOX-1 BOX-2 BOX-3 BOX-4 BOX-5 BOX-6 BOX-7 BOX-8
|
||||
BOX-9 DIM-BOX-1 DIM-BOX-2 DIM-BOX-3 DIM-BOX-4 DIM-BOX-5 DIM-BOX-6 DIM-BOX-7
|
||||
DIM-BOX-8 DIM-BOX-9 PILE-OF-0 PILE-OF-1 PILE-OF-2 PILE-OF-3 PILE-OF-4 PILE-OF-5
|
||||
PILE-OF-6 PILE-OF-7 PILE-OF-8 PILE-OF-9 R-FLOWERS-0 R-FLOWERS-1 R-FLOWERS-2
|
||||
R-FLOWERS-3 R-FLOWERS-4 R-FLOWERS-5 R-FLOWERS-6 R-FLOWERS-7 R-FLOWERS-8
|
||||
R-FLOWERS-9 L-FLOWERS-0 L-FLOWERS-1 L-FLOWERS-2 L-FLOWERS-3 L-FLOWERS-4 0>>
|
||||
<DEFINE-ROUTINE I-SN>
|
||||
<DEFINE-ROUTINE SETUP-SN>
|
||||
<DEFINE-ROUTINE DRAW-SN-BOXES>
|
||||
<CONSTANT BOX-TBL <PTABLE 0 BOX-1 BOX-2 BOX-3 BOX-4 BOX-5 BOX-6 BOX-7 BOX-8
|
||||
BOX-9>>
|
||||
<CONSTANT DIM-BOX-TBL <PTABLE 0 DIM-BOX-1 DIM-BOX-2 DIM-BOX-3 DIM-BOX-4
|
||||
DIM-BOX-5 DIM-BOX-6 DIM-BOX-7 DIM-BOX-8 DIM-BOX-9>>
|
||||
<CONSTANT PILE-TABLE <TABLE 0 0 0 0 0>>
|
||||
<DEFINE-ROUTINE DRAW-PILE>
|
||||
<DEFINE-ROUTINE DRAW-FLOWERS>
|
||||
<DEFINE-ROUTINE SNARFEM>
|
||||
<DEFINE-ROUTINE SN-CLICK>
|
||||
<DEFINE-ROUTINE COUNTDOWN-PILE>
|
||||
<CONSTANT BINARY-TABLE <PTABLE 0 1 10 11 100 101 110 111 1000 1001>>
|
||||
<DEFINE-ROUTINE SAFE-NUMBER?>
|
||||
<CONSTANT TEMP-TABLE <TABLE 0 0 0 0 0>>
|
||||
<DEFINE-ROUTINE J-MOVE>
|
||||
<DEFINE-ROUTINE END-SN?>
|
||||
<OBJECT FAN (DESC "fan") (SYNONYM FAN) (ADJECTIVE DELICATE DAINTY PAPER) (FLAGS
|
||||
TAKEBIT TRYTAKEBIT MAGICBIT) (VALUE 0) (ACTION FAN-F)>
|
||||
<DEFINE-ROUTINE FAN-F>
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,948 @@
|
|||
|
||||
.SEGMENT "FENSHIRE"
|
||||
|
||||
|
||||
.FUNCT DIRIGIBLE-ENTER-F,RARG
|
||||
IN? DIRIGIBLE,HERE \?CCL3
|
||||
RETURN GONDOLA
|
||||
?CCL3: ZERO? RARG \FALSE
|
||||
ICALL1 V-WALK-AROUND
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT DIRIGIBLE-HANGAR-F,RARG
|
||||
ZERO? DEMO-VERSION? /FALSE
|
||||
EQUAL? RARG,M-END \FALSE
|
||||
CALL1 END-DEMO
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT DIRIGIBLE-F
|
||||
EQUAL? PRSA,V?PUT-THROUGH,V?THROW-FROM \?CCL3
|
||||
EQUAL? PRSI,DIRIGIBLE \?CCL3
|
||||
CALL PERFORM-PRSA,PRSO,GONDOLA
|
||||
RSTACK
|
||||
?CCL3: EQUAL? PRSA,V?EXAMINE \?CCL7
|
||||
EQUAL? HERE,GONDOLA \?CCL10
|
||||
CALL1 V-LOOK
|
||||
RSTACK
|
||||
?CCL10: GETP DIRIGIBLE,P?LDESC
|
||||
PRINT STACK
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL7: EQUAL? PRSA,V?LOOK-INSIDE \?CCL12
|
||||
EQUAL? HERE,GONDOLA \?CCL15
|
||||
PRINT LOOK-AROUND
|
||||
RTRUE
|
||||
?CCL15: PRINTR "You can't see much from out here."
|
||||
?CCL12: EQUAL? PRSA,V?ENTER \FALSE
|
||||
CALL2 GOTO,GONDOLA
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT GONDOLA-F,RARG
|
||||
EQUAL? RARG,M-LOOK \?CCL3
|
||||
PRINTI "You are in the luxurious gondola of the dirigible. A window wraps completely around the gondola. "
|
||||
PRINT GONDOLA-CONTROLS-DESC
|
||||
RTRUE
|
||||
?CCL3: ZERO? RARG \FALSE
|
||||
EQUAL? PRSA,V?EXAMINE \?CCL7
|
||||
CALL2 PERFORM-PRSA,DIRIGIBLE
|
||||
RSTACK
|
||||
?CCL7: EQUAL? PRSA,V?ENTER \?CCL9
|
||||
EQUAL? HERE,GONDOLA /?CCL9
|
||||
CALL2 DO-WALK,P?IN
|
||||
RSTACK
|
||||
?CCL9: EQUAL? PRSA,V?EXIT,V?LEAP-OFF \?CCL13
|
||||
EQUAL? HERE,GONDOLA \?CCL13
|
||||
CALL2 DO-WALK,P?OUT
|
||||
RSTACK
|
||||
?CCL13: EQUAL? PRSA,V?LOOK-INSIDE \?CCL17
|
||||
CALL2 PERFORM-PRSA,DIRIGIBLE
|
||||
RSTACK
|
||||
?CCL17: EQUAL? PRSA,V?PUT-THROUGH,V?THROW-FROM \FALSE
|
||||
EQUAL? PRSI,GLOBAL-HERE,GONDOLA \FALSE
|
||||
IN? DIRIGIBLE,DIRIGIBLE-HANGAR /?CTR23
|
||||
IN? DIRIGIBLE,SMALLER-HANGAR \?CCL24
|
||||
?CTR23: LOC DIRIGIBLE
|
||||
MOVE PRSO,STACK
|
||||
JUMP ?CND22
|
||||
?CCL24: EQUAL? PRSO,PERCH /?CCL28
|
||||
CALL ULTIMATELY-IN?,PERCH,PRSO
|
||||
ZERO? STACK /?CND27
|
||||
?CCL28: SET 'REMOVED-PERCH-LOC,GROUND
|
||||
?CND27: REMOVE PRSO
|
||||
?CND22: PRINTI "You fling"
|
||||
ICALL1 TPRINT-PRSO
|
||||
PRINTR " out of the gondola."
|
||||
|
||||
|
||||
.FUNCT GONDOLA-CONTROLS-F
|
||||
EQUAL? PRSA,V?EXAMINE \FALSE
|
||||
PRINT GONDOLA-CONTROLS-DESC
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT GONDOLA-BUTTON-F
|
||||
EQUAL? PRSA,V?PUSH \FALSE
|
||||
ZERO? TIME-STOPPED \?CTR5
|
||||
FSET? OUTER-GATE,OPENBIT /?CTR5
|
||||
GRTR? DIRIGIBLE-COUNTER,0 /?CTR5
|
||||
EQUAL? PRSO,LEFT-GONDOLA-BUTTON \?PRD11
|
||||
IN? DIRIGIBLE,DIRIGIBLE-HANGAR /?CTR5
|
||||
?PRD11: EQUAL? PRSO,RIGHT-GONDOLA-BUTTON \?CCL6
|
||||
IN? DIRIGIBLE,SMALLER-HANGAR \?CCL6
|
||||
?CTR5: PRINT NOTHING-HAPPENS
|
||||
RTRUE
|
||||
?CCL6: ICALL QUEUE,I-DIRIGIBLE,-1
|
||||
SET 'DIRIGIBLE-COUNTER,1
|
||||
ZERO? BORDER-ON /?CND16
|
||||
GETB 0,30
|
||||
EQUAL? STACK,DEC-20 /?CND16
|
||||
ICALL1 CLEAR-BORDER
|
||||
ICALL2 INIT-STATUS-LINE,TRUE-VALUE
|
||||
?CND16: PRINTI "The dirigible rises out of the hangar and sails "
|
||||
IN? DIRIGIBLE,DIRIGIBLE-HANGAR \?CCL22
|
||||
SET 'DESTINATION,SMALLER-HANGAR
|
||||
PRINTI "ea"
|
||||
JUMP ?CND20
|
||||
?CCL22: SET 'DESTINATION,DIRIGIBLE-HANGAR
|
||||
PRINTI "we"
|
||||
?CND20: PUTP GONDOLA,P?REGION,STR?939
|
||||
GETP GONDOLA,P?MAP-LOC
|
||||
PUT STACK,0,FALSE-VALUE
|
||||
FSET DIRIGIBLE,NDESCBIT
|
||||
MOVE DIRIGIBLE,GONDOLA
|
||||
PRINTR "stward."
|
||||
|
||||
|
||||
.FUNCT GONDOLA-EXIT-F,RARG
|
||||
GRTR? DIRIGIBLE-COUNTER,0 \?CCL3
|
||||
ZERO? RARG \FALSE
|
||||
CALL2 JIGS-UP,STR?940
|
||||
RSTACK
|
||||
?CCL3: LOC DIRIGIBLE
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT I-DIRIGIBLE,TBL
|
||||
EQUAL? HERE,GONDOLA \?CND1
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
PRINTI " "
|
||||
?CND1: EQUAL? DIRIGIBLE-COUNTER,5 \?CCL5
|
||||
GETP GONDOLA,P?MAP-LOC >TBL
|
||||
EQUAL? DESTINATION,SMALLER-HANGAR \?CCL8
|
||||
PUT TBL,0,FENSHIRE-MAP-NUM
|
||||
PUT TBL,1,GONDOLA-AT-FENSHIRE-LOC
|
||||
PUT TBL,2,MAP-GEN-X-2
|
||||
PUTP GONDOLA,P?REGION,STR?249
|
||||
JUMP ?CND6
|
||||
?CCL8: PUT TBL,0,MAIN-MAP-NUM
|
||||
PUT TBL,1,GONDOLA-AT-FLATHEADIA-LOC
|
||||
PUT TBL,2,MAP-GEN-X-1
|
||||
PUTP GONDOLA,P?REGION,STR?250
|
||||
?CND6: MOVE DIRIGIBLE,DESTINATION
|
||||
FCLEAR DIRIGIBLE,NDESCBIT
|
||||
ICALL2 DEQUEUE,I-DIRIGIBLE
|
||||
SET 'DIRIGIBLE-COUNTER,0
|
||||
ZERO? BORDER-ON /?CND9
|
||||
EQUAL? HERE,GONDOLA \?CND9
|
||||
GETB 0,30
|
||||
EQUAL? STACK,DEC-20 /?CND9
|
||||
ICALL1 CLEAR-BORDER
|
||||
SET 'CURRENT-BORDER,CASTLE-BORDER
|
||||
SCREEN S-FULL
|
||||
ICALL2 INIT-STATUS-LINE,TRUE-VALUE
|
||||
SCREEN S-TEXT
|
||||
?CND9: EQUAL? HERE,GONDOLA \?CCL16
|
||||
PRINTR "The dirigible descends into a hangar and comes to a stop."
|
||||
?CCL16: EQUAL? HERE,DESTINATION \FALSE
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
PRINTR " A dirigible descends into the hangar."
|
||||
?CCL5: EQUAL? HERE,GONDOLA /?CCL20
|
||||
INC 'DIRIGIBLE-COUNTER
|
||||
RFALSE
|
||||
?CCL20: ICALL1 RETURN-FROM-MAP
|
||||
PRINTI "The dirigible continues to glide along. "
|
||||
EQUAL? DESTINATION,DIRIGIBLE-HANGAR \?CCL23
|
||||
SUB 4,DIRIGIBLE-COUNTER
|
||||
GET DIRIGIBLE-TRIP-DESCS,STACK
|
||||
PRINT STACK
|
||||
JUMP ?CND21
|
||||
?CCL23: SUB DIRIGIBLE-COUNTER,1
|
||||
GET DIRIGIBLE-TRIP-DESCS,STACK
|
||||
PRINT STACK
|
||||
?CND21: INC 'DIRIGIBLE-COUNTER
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT SMALLER-HANGAR-F,RARG
|
||||
EQUAL? RARG,M-ENTER \FALSE
|
||||
FSET? SMALLER-HANGAR,TOUCHBIT /FALSE
|
||||
CALL QUEUE,I-FOX,-1
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT DESERTED-CASTLE-F,RARG
|
||||
EQUAL? RARG,M-ENTER \FALSE
|
||||
FSET? DESERTED-CASTLE,TOUCHBIT /FALSE
|
||||
CALL QUEUE,I-ROOSTER,-1
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RUINED-HALL-F,RARG
|
||||
EQUAL? RARG,M-LOOK \?CCL3
|
||||
PRINTI "The entrance hall of the summer castle retains but a shadow of its former elegance; the ceiling has partially collapsed, and myriad weeds grow amongst the debris that covers the floor. A fireplace is choked with the rubble of its collapsed chimney. Above the fireplace is a faded fresco, and next to that, a tiny vase is mounted on the wall. Arched openings lead "
|
||||
ZERO? ARCHWAY-OPEN /?CND4
|
||||
PRINTI "north, "
|
||||
?CND4: PRINTI "south and west. "
|
||||
ZERO? ARCHWAY-OPEN \?CND6
|
||||
PRINTI "The archway to the north"
|
||||
IN? HEXAGONAL-BLOCK,LOCAL-GLOBALS /?CCL10
|
||||
SET 'ARCHWAY-OPEN,TRUE-VALUE
|
||||
PRINTI ", which had earlier crumbled, seems restored to its former condition: decayed but passable! "
|
||||
JUMP ?CND6
|
||||
?CCL10: PRINTI " has crumbled to rubble. "
|
||||
?CND6: ZERO? SECRET-ROOM-REVEALED /?CND11
|
||||
PRINTI "In addition, a dusty passage leads east. "
|
||||
?CND11: PRINTI "A stairway once led upwards, but there's little left of it."
|
||||
RTRUE
|
||||
?CCL3: EQUAL? RARG,M-END \FALSE
|
||||
ZERO? ARCHWAY-OPEN \FALSE
|
||||
IN? HEXAGONAL-BLOCK,LOCAL-GLOBALS /FALSE
|
||||
SET 'ARCHWAY-OPEN,TRUE-VALUE
|
||||
RETURN ARCHWAY-OPEN
|
||||
|
||||
|
||||
.FUNCT FIREPLACE-F
|
||||
EQUAL? PRSA,V?ENTER \?CCL3
|
||||
CALL2 DO-FIRST,STR?949
|
||||
RSTACK
|
||||
?CCL3: EQUAL? PRSA,V?CLEAN \?CCL5
|
||||
PRINTR "Not a chance (unless you're actually a team of thirty people, in disguise)."
|
||||
?CCL5: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
|
||||
PRINTR "Rubble. Lots of rubble."
|
||||
|
||||
|
||||
.FUNCT FRESCO-F
|
||||
EQUAL? PRSA,V?EXAMINE \FALSE
|
||||
PRINTR "The fresco depicts the death of Duncanthrax. His spirit is ascending to heaven on a tremendous ladder, surrounded by a host of angels."
|
||||
|
||||
|
||||
.FUNCT VASE-F
|
||||
EQUAL? PRSA,V?OPEN,V?CLOSE \?CCL3
|
||||
PRINT HUH
|
||||
RTRUE
|
||||
?CCL3: EQUAL? PRSA,V?TAKE \?CCL5
|
||||
EQUAL? PRSO,VASE \?CCL5
|
||||
PRINTR "The vase is affixed to the wall."
|
||||
?CCL5: EQUAL? PRSA,V?PUT \FALSE
|
||||
EQUAL? PRSO,FLOWER \FALSE
|
||||
ZERO? SECRET-ROOM-REVEALED \FALSE
|
||||
SET 'SECRET-ROOM-REVEALED,TRUE-VALUE
|
||||
SET 'COMPASS-CHANGED,TRUE-VALUE
|
||||
MOVE FLOWER,VASE
|
||||
PRINTI "The flower seems to grow fuller, its colors richer. You hear a noise, and turn to see a passageway opening to the east!"
|
||||
CRLF
|
||||
CALL2 INC-SCORE,16
|
||||
RSTACK
|
||||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT LADDER-F,VARG
|
||||
ZERO? VARG \FALSE
|
||||
EQUAL? PRSA,V?EXAMINE,V?CLOSE,V?OPEN \?CCL5
|
||||
PRINTR "The stepladder seems to be stuck in the open position."
|
||||
?CCL5: EQUAL? PRSA,V?PUT-UNDER \?CCL7
|
||||
EQUAL? PRSO,MEGABOZ-TRAP-DOOR \?CCL7
|
||||
PRINTR "The ladder is now standing beneath the trap door."
|
||||
?CCL7: EQUAL? PRSA,V?CLIMB-ON,V?CLIMB,V?STAND-ON \FALSE
|
||||
ICALL PERFORM,V?ENTER,LADDER
|
||||
RTRUE
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "FENSHIRE"
|
||||
|
||||
|
||||
.FUNCT MARSH-F,RARG
|
||||
EQUAL? RARG,M-LOOK \?CCL3
|
||||
PRINTI "The swamps of Fenshire have encroached on this once-beautiful garden. The garden wall is now just a pile of mossy stones, and the garden terraces are ankle-deep with squishy mud. A c"
|
||||
ZERO? ARCHWAY-OPEN /?CCL6
|
||||
PRINTI "rumbling archway leads"
|
||||
JUMP ?CND4
|
||||
?CCL6: PRINTI "ollapsed archway blocks the exit to the"
|
||||
?CND4: PRINTI " south. To the north"
|
||||
ZERO? STEPPING-STONES-VISIBLE /?CCL9
|
||||
PRINTI ", stepping stones lead across a field of quicksand."
|
||||
RTRUE
|
||||
?CCL9: PRINTI " is a wide expanse of fetid quicksand."
|
||||
RTRUE
|
||||
?CCL3: EQUAL? RARG,M-END \FALSE
|
||||
IN? JESTER,HERE \?CCL14
|
||||
CALL2 VISIBLE?,ROOSTER
|
||||
ZERO? STACK /?CCL14
|
||||
FSET? ROOSTER,ANIMATEDBIT \?CCL14
|
||||
CALL2 VISIBLE?,FOX
|
||||
ZERO? STACK /?CCL14
|
||||
FSET? FOX,ANIMATEDBIT \?CCL14
|
||||
CALL2 VISIBLE?,WORM
|
||||
ZERO? STACK /?CCL14
|
||||
FSET? WORM,ANIMATEDBIT \?CCL14
|
||||
MOVE JESTER,NICE-LUNCH-SPOT
|
||||
MOVE COOKPOT,NICE-LUNCH-SPOT
|
||||
MOVE COOKFIRE,NICE-LUNCH-SPOT
|
||||
SET 'ARCHWAY-OPEN,FALSE-VALUE
|
||||
SET 'STEPPING-STONES-VISIBLE,TRUE-VALUE
|
||||
SET 'COMPASS-CHANGED,TRUE-VALUE
|
||||
FSET RUINED-HALL,REDESCBIT
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
PRINTR " The jester looks delighted. ""Sacre bleu! At last! All zee ingredients for Borphbelly Stew! But zee ambience here eesn't quite right."" He picks up his cookpot AND his cookfire, and dashes across the quicksand to the north, using a series of stepping stones which you'd swear weren't there a minute ago. This flurry of activity seems to have been too much for the archway behind you; it crumbles into a pile of rubble, blocking the exit to the south.
|
||||
The jester, out of sight amongst the reeds to the north, shouts, ""Yoo hoo! I've found a lovely spot for lunch! Bring over zee ingredients!"""
|
||||
?CCL14: IN? JESTER,HERE /FALSE
|
||||
IN? HEXAGONAL-BLOCK,LOCAL-GLOBALS \FALSE
|
||||
ZERO? ARCHWAY-OPEN /FALSE
|
||||
ICALL2 DEQUEUE,I-JESTER
|
||||
ICALL2 THIS-IS-IT,JESTER
|
||||
MOVE JESTER,HERE
|
||||
MOVE COOKPOT,HERE
|
||||
MOVE COOKFIRE,HERE
|
||||
PRINTI " A string of eloquent cursing in a foreign tongue assaults you, and you spy the jester "
|
||||
PRINT COOK-DESC
|
||||
PRINTR " He is stirring a cookpot which sits upon a roaring cookfire. ""Impossible!"" he shrieks, switching to a more familiar language. ""Eet is impossible to cook a Borphbelly Stew weethout zee proper ingredients! Impossible, impossible, impossible!"""
|
||||
|
||||
|
||||
.FUNCT STEPPING-STONES-F,RARG
|
||||
ZERO? STEPPING-STONES-VISIBLE \?CCL3
|
||||
ZERO? RARG \FALSE
|
||||
PRINTI "You'd be sucked into the quicksand!"
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL3: CALL2 CCOUNT,PROTAGONIST
|
||||
GRTR? STACK,1 \?CCL7
|
||||
ZERO? RARG \FALSE
|
||||
PRINTI "It's difficult to balance on the stepping stones with all you're carrying. You try, but after almost falling into the quicksand, you give up."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL7: EQUAL? HERE,MARSH \?CCL11
|
||||
RETURN NICE-LUNCH-SPOT
|
||||
?CCL11: RETURN MARSH
|
||||
|
||||
|
||||
.FUNCT NICE-LUNCH-SPOT-F,RARG
|
||||
EQUAL? RARG,M-END \FALSE
|
||||
CALL2 VISIBLE?,ROOSTER
|
||||
ZERO? STACK /FALSE
|
||||
FSET? ROOSTER,ANIMATEDBIT \FALSE
|
||||
CALL2 VISIBLE?,FOX
|
||||
ZERO? STACK /FALSE
|
||||
FSET? FOX,ANIMATEDBIT \FALSE
|
||||
CALL2 VISIBLE?,WORM
|
||||
ZERO? STACK /FALSE
|
||||
FSET? WORM,ANIMATEDBIT \FALSE
|
||||
MOVE HEXAGONAL-BLOCK,SMALLER-HANGAR
|
||||
FSET SMALLER-HANGAR,REDESCBIT
|
||||
FSET RUINED-HALL,REDESCBIT
|
||||
REMOVE WORM
|
||||
REMOVE FOX
|
||||
REMOVE ROOSTER
|
||||
REMOVE COOKPOT
|
||||
REMOVE COOKFIRE
|
||||
ICALL2 DEQUEUE,I-FOX
|
||||
ICALL2 DEQUEUE,I-ROOSTER
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
PRINTI " The jester says, ""Excellent! Zee ingredients for Borphbelly Stew and a "
|
||||
ICALL2 DPRINT,HERE
|
||||
PRINTI " to enjoy eet!"" He tosses the animals into the cookpot, and begins dishing out two generous portions of stew. Before you can eat it, a tremendous weariness comes over you. The last thing you hear is the jester saying, ""Waiter? Check, please!""
|
||||
|
||||
You awake from a deep sleep and struggle to your feet. As your head clears you realize that you're not where you were when you fell asleep"
|
||||
PRINT ELLIPSIS
|
||||
ICALL2 GOTO,SMALLER-HANGAR
|
||||
CALL2 INC-SCORE,9
|
||||
RSTACK
|
||||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT HEXAGONAL-BLOCK-F
|
||||
EQUAL? PRSA,V?EXAMINE \FALSE
|
||||
PRINTR "It's just a small rock which has been neatly carved into the shape of an elongated hexagon."
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "FENSHIRE"
|
||||
|
||||
|
||||
.FUNCT HOTHOUSE-F,RARG
|
||||
EQUAL? RARG,M-ENTER \FALSE
|
||||
FSET? FAN,TRYTAKEBIT \FALSE
|
||||
CALL QUEUE,I-SN,1
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT I-SN,?TMP3,?TMP2,?TMP1
|
||||
EQUAL? HERE,HOTHOUSE \FALSE
|
||||
ZERO? ALLIGATOR /?CND1
|
||||
ICALL QUEUE,I-SN,1
|
||||
RFALSE
|
||||
?CND1: ICALL1 RETURN-FROM-MAP
|
||||
ICALL1 UPDATE-STATUS-LINE
|
||||
PRINTI " The jester steps out from behind some tropical vines, fanning himself with a dainty paper fan. ""Hot enough for you? I know just the thing to take your mind off this heat! It's one of my favorite games, Snarfem.
|
||||
""The rules: I'll produce four piles of pebbles. Each of us, starting with you, will remove as many pebbles as we feel like -- as long as they come from the same pile. You must take at least one pebble each turn. The player who takes the last pebble wins. It's that simple!"""
|
||||
CRLF
|
||||
CRLF
|
||||
ICALL2 HIT-ANY-KEY,STR?955
|
||||
ICALL SPLIT-BY-PICTURE,SN-SPLIT,TRUE-VALUE
|
||||
ICALL2 ADJUST-TEXT-WINDOW,SN-BOTTOM
|
||||
?PRG5: RANDOM 9
|
||||
PUT PILE-TABLE,1,STACK
|
||||
?PRG7: RANDOM 9
|
||||
PUT PILE-TABLE,2,STACK
|
||||
GET PILE-TABLE,2 >?TMP1
|
||||
GET PILE-TABLE,1
|
||||
EQUAL? ?TMP1,STACK \?PRG14
|
||||
GET PILE-TABLE,2
|
||||
ADD STACK,1
|
||||
PUT PILE-TABLE,2,STACK
|
||||
GET PILE-TABLE,2
|
||||
EQUAL? STACK,10 \?PRG7
|
||||
PUT PILE-TABLE,2,1
|
||||
JUMP ?PRG7
|
||||
?PRG14: RANDOM 9
|
||||
PUT PILE-TABLE,3,STACK
|
||||
GET PILE-TABLE,3 >?TMP2
|
||||
GET PILE-TABLE,2 >?TMP1
|
||||
GET PILE-TABLE,1
|
||||
EQUAL? ?TMP2,?TMP1,STACK \?PRG21
|
||||
GET PILE-TABLE,3
|
||||
ADD STACK,1
|
||||
PUT PILE-TABLE,3,STACK
|
||||
GET PILE-TABLE,3
|
||||
EQUAL? STACK,10 \?PRG14
|
||||
PUT PILE-TABLE,3,1
|
||||
JUMP ?PRG14
|
||||
?PRG21: RANDOM 9
|
||||
PUT PILE-TABLE,4,STACK
|
||||
GET PILE-TABLE,4 >?TMP3
|
||||
GET PILE-TABLE,3 >?TMP2
|
||||
GET PILE-TABLE,2 >?TMP1
|
||||
GET PILE-TABLE,1
|
||||
EQUAL? ?TMP3,?TMP2,?TMP1,STACK \?REP22
|
||||
GET PILE-TABLE,4
|
||||
ADD STACK,1
|
||||
PUT PILE-TABLE,4,STACK
|
||||
GET PILE-TABLE,4
|
||||
EQUAL? STACK,10 \?PRG21
|
||||
PUT PILE-TABLE,4,1
|
||||
JUMP ?PRG21
|
||||
?REP22: CALL2 SAFE-NUMBER?,PILE-TABLE
|
||||
ZERO? STACK \?PRG5
|
||||
ICALL1 SETUP-SN
|
||||
CRLF
|
||||
ICALL1 SNARFEM
|
||||
ICALL2 INIT-SL-WITH-SPLIT,TEXT-WINDOW-PIC-LOC
|
||||
FSET? FAN,TRYTAKEBIT \?CCL32
|
||||
PRINTI "The jester claps you on the back and says, ""He who wins and runs away, returns to let you win another day!"""
|
||||
CALL1 J-EXITS
|
||||
RSTACK
|
||||
?CCL32: MOVE FAN,HERE
|
||||
ICALL1 REMOVE-J
|
||||
PRINTI """You're undoubtedly not a flash in the pan; you've turned me into your biggest fan!"" The jester is suddenly wearing a cap and sweater bearing your initials, and waving a pennant with your name on it. Still chanting a cheer, he vanishes, and you notice a delicate paper fan lying at your feet."
|
||||
CRLF
|
||||
CALL2 INC-SCORE,12
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT SETUP-SN
|
||||
SCREEN S-FULL
|
||||
DISPLAY SN-BORDER,1,1
|
||||
SCREEN S-WINDOW
|
||||
PICSET SN-PICSET-TBL
|
||||
ICALL2 DRAW-PILE,1
|
||||
ICALL2 DRAW-PILE,2
|
||||
ICALL2 DRAW-PILE,3
|
||||
ICALL2 DRAW-PILE,4
|
||||
CALL1 DRAW-FLOWERS
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT DRAW-SN-BOXES,PILE,X,Y,SPACE,CNT,TBL
|
||||
SET 'CNT,1
|
||||
SCREEN S-WINDOW
|
||||
ICALL2 PICINF-PLUS-ONE,BOX-1-LOC
|
||||
GET PICINF-TBL,0 >Y
|
||||
GET PICINF-TBL,1 >X
|
||||
PICINF SN-BOX-SPACE,PICINF-TBL /?BOGUS1
|
||||
?BOGUS1: GET PICINF-TBL,1 >SPACE
|
||||
?PRG2: ZERO? PILE \?CCL6
|
||||
GRTR? CNT,4 \?CCL9
|
||||
SET 'TBL,DIM-BOX-TBL
|
||||
JUMP ?CND4
|
||||
?CCL9: GET PILE-TABLE,CNT
|
||||
ZERO? STACK \?CCL11
|
||||
SET 'TBL,DIM-BOX-TBL
|
||||
JUMP ?CND4
|
||||
?CCL11: SET 'TBL,BOX-TBL
|
||||
JUMP ?CND4
|
||||
?CCL6: GET PILE-TABLE,PILE
|
||||
GRTR? CNT,STACK \?CCL13
|
||||
SET 'TBL,DIM-BOX-TBL
|
||||
JUMP ?CND4
|
||||
?CCL13: SET 'TBL,BOX-TBL
|
||||
?CND4: GET TBL,CNT
|
||||
DISPLAY STACK,Y,X
|
||||
EQUAL? CNT,9 /?REP3
|
||||
ADD X,SPACE >X
|
||||
INC 'CNT
|
||||
JUMP ?PRG2
|
||||
?REP3: SCREEN S-TEXT
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT DRAW-PILE,PILE,NUM,PIC,?TMP1
|
||||
SCREEN S-WINDOW
|
||||
GET PILE-TABLE,PILE >NUM
|
||||
EQUAL? PILE,1 \?CCL3
|
||||
PUSH PILE-1-PIC-LOC
|
||||
JUMP ?CND1
|
||||
?CCL3: EQUAL? PILE,2 \?CCL5
|
||||
PUSH PILE-2-PIC-LOC
|
||||
JUMP ?CND1
|
||||
?CCL5: EQUAL? PILE,3 \?CCL7
|
||||
PUSH PILE-3-PIC-LOC
|
||||
JUMP ?CND1
|
||||
?CCL7: PUSH PILE-4-PIC-LOC
|
||||
?CND1: ICALL2 PICINF-PLUS-ONE,STACK
|
||||
ZERO? NUM \?CCL10
|
||||
SET 'PIC,PILE-OF-0
|
||||
JUMP ?CND8
|
||||
?CCL10: EQUAL? NUM,1 \?CCL12
|
||||
SET 'PIC,PILE-OF-1
|
||||
JUMP ?CND8
|
||||
?CCL12: EQUAL? NUM,2 \?CCL14
|
||||
SET 'PIC,PILE-OF-2
|
||||
JUMP ?CND8
|
||||
?CCL14: EQUAL? NUM,3 \?CCL16
|
||||
SET 'PIC,PILE-OF-3
|
||||
JUMP ?CND8
|
||||
?CCL16: EQUAL? NUM,4 \?CCL18
|
||||
SET 'PIC,PILE-OF-4
|
||||
JUMP ?CND8
|
||||
?CCL18: EQUAL? NUM,5 \?CCL20
|
||||
SET 'PIC,PILE-OF-5
|
||||
JUMP ?CND8
|
||||
?CCL20: EQUAL? NUM,6 \?CCL22
|
||||
SET 'PIC,PILE-OF-6
|
||||
JUMP ?CND8
|
||||
?CCL22: EQUAL? NUM,7 \?CCL24
|
||||
SET 'PIC,PILE-OF-7
|
||||
JUMP ?CND8
|
||||
?CCL24: EQUAL? NUM,8 \?CCL26
|
||||
SET 'PIC,PILE-OF-8
|
||||
JUMP ?CND8
|
||||
?CCL26: SET 'PIC,PILE-OF-9
|
||||
?CND8: GET PICINF-TBL,0 >?TMP1
|
||||
GET PICINF-TBL,1
|
||||
DISPLAY PIC,?TMP1,STACK
|
||||
SCREEN S-TEXT
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT DRAW-FLOWERS,PILE,NUM,LEFT,RIGHT,?TMP1,?TMP2,?TMP3,?TMP4
|
||||
SET 'PILE,1
|
||||
SET 'NUM,1
|
||||
CALL2 SAFE-NUMBER?,PILE-TABLE
|
||||
ZERO? STACK /?PRG4
|
||||
SET 'LEFT,L-FLOWERS-0
|
||||
SET 'RIGHT,R-FLOWERS-0
|
||||
JUMP ?CND1
|
||||
?PRG4: ADD TEMP-TABLE,2
|
||||
COPYT PILE-TABLE+2,STACK,8
|
||||
GET PILE-TABLE,PILE
|
||||
ZERO? STACK \?CCL8
|
||||
INC 'PILE
|
||||
JUMP ?PRG4
|
||||
?CCL8: GET PILE-TABLE,1 >?TMP4
|
||||
GET PILE-TABLE,2
|
||||
ADD ?TMP4,STACK >?TMP3
|
||||
GET PILE-TABLE,3
|
||||
ADD ?TMP3,STACK >?TMP2
|
||||
GET PILE-TABLE,4
|
||||
ADD ?TMP2,STACK >?TMP1
|
||||
GET PILE-TABLE,PILE
|
||||
EQUAL? ?TMP1,STACK \?CCL10
|
||||
GET PILE-TABLE,PILE >NUM
|
||||
?REP5: EQUAL? PILE,1 \?CCL18
|
||||
SET 'LEFT,L-FLOWERS-1
|
||||
JUMP ?CND16
|
||||
?CCL10: GET TEMP-TABLE,PILE
|
||||
SUB STACK,NUM
|
||||
PUT TEMP-TABLE,PILE,STACK
|
||||
CALL2 SAFE-NUMBER?,TEMP-TABLE
|
||||
ZERO? STACK \?REP5
|
||||
GET PILE-TABLE,PILE
|
||||
SUB STACK,NUM
|
||||
ZERO? STACK \?CCL15
|
||||
SET 'NUM,1
|
||||
INC 'PILE
|
||||
JUMP ?PRG4
|
||||
?CCL15: INC 'NUM
|
||||
JUMP ?PRG4
|
||||
?CCL18: EQUAL? PILE,2 \?CCL20
|
||||
SET 'LEFT,L-FLOWERS-2
|
||||
JUMP ?CND16
|
||||
?CCL20: EQUAL? PILE,3 \?CCL22
|
||||
SET 'LEFT,L-FLOWERS-3
|
||||
JUMP ?CND16
|
||||
?CCL22: EQUAL? PILE,4 /?CCL24
|
||||
SET 'LEFT,0
|
||||
JUMP ?CND16
|
||||
?CCL24: SET 'LEFT,L-FLOWERS-4
|
||||
?CND16: EQUAL? NUM,1 \?CCL27
|
||||
SET 'RIGHT,R-FLOWERS-1
|
||||
JUMP ?CND1
|
||||
?CCL27: EQUAL? NUM,2 \?CCL29
|
||||
SET 'RIGHT,R-FLOWERS-2
|
||||
JUMP ?CND1
|
||||
?CCL29: EQUAL? NUM,3 \?CCL31
|
||||
SET 'RIGHT,R-FLOWERS-3
|
||||
JUMP ?CND1
|
||||
?CCL31: EQUAL? NUM,4 \?CCL33
|
||||
SET 'RIGHT,R-FLOWERS-4
|
||||
JUMP ?CND1
|
||||
?CCL33: EQUAL? NUM,5 \?CCL35
|
||||
SET 'RIGHT,R-FLOWERS-5
|
||||
JUMP ?CND1
|
||||
?CCL35: EQUAL? NUM,6 \?CCL37
|
||||
SET 'RIGHT,R-FLOWERS-6
|
||||
JUMP ?CND1
|
||||
?CCL37: EQUAL? NUM,7 \?CCL39
|
||||
SET 'RIGHT,R-FLOWERS-7
|
||||
JUMP ?CND1
|
||||
?CCL39: EQUAL? NUM,8 \?CCL41
|
||||
SET 'RIGHT,R-FLOWERS-8
|
||||
JUMP ?CND1
|
||||
?CCL41: EQUAL? NUM,9 /?CCL43
|
||||
SET 'RIGHT,0
|
||||
JUMP ?CND1
|
||||
?CCL43: SET 'RIGHT,R-FLOWERS-9
|
||||
?CND1: SCREEN S-WINDOW
|
||||
ICALL2 PICINF-PLUS-ONE,L-FLOWERS-PIC-LOC
|
||||
GET PICINF-TBL,0 >?TMP1
|
||||
GET PICINF-TBL,1
|
||||
DISPLAY LEFT,?TMP1,STACK
|
||||
ICALL2 PICINF-PLUS-ONE,R-FLOWERS-PIC-LOC
|
||||
GET PICINF-TBL,0 >?TMP1
|
||||
GET PICINF-TBL,1
|
||||
DISPLAY RIGHT,?TMP1,STACK
|
||||
SCREEN S-TEXT
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT SNARFEM,X,NUM,PILE,STOP-SN
|
||||
?PRG1: ZERO? STOP-SN \TRUE
|
||||
ZERO? PILE /?CCL7
|
||||
CLEAR S-TEXT
|
||||
ZERO? ACTIVE-MOUSE /?CND8
|
||||
ICALL2 DRAW-SN-BOXES,PILE
|
||||
?CND8: PRINTI "Type a number "
|
||||
ZERO? ACTIVE-MOUSE /?CND10
|
||||
PRINTI "(or click on one of the numbered boxes with your mouse) "
|
||||
?CND10: PRINTI "to indicate how many pebbles you want to remove from Pile #"
|
||||
PRINTN PILE
|
||||
PRINTC 46
|
||||
?PRG12: INPUT 'X >X
|
||||
ICALL1 MOUSE-INPUT?
|
||||
EQUAL? X,CLICK1,CLICK2 \?CCL16
|
||||
CALL2 SN-CLICK,TRUE-VALUE >X
|
||||
JUMP ?CND14
|
||||
?CCL16: GRTR? X,144 \?CCL18
|
||||
LESS? X,155 \?CCL18
|
||||
SUB X,145 >X
|
||||
JUMP ?CND14
|
||||
?CCL18: SUB X,48 >X
|
||||
?CND14: GRTR? X,9 /?CTR22
|
||||
LESS? X,1 \?CCL23
|
||||
?CTR22: CLEAR S-TEXT
|
||||
PRINT TYPE-A-NUMBER
|
||||
PRINTC 57
|
||||
ZERO? ACTIVE-MOUSE /?CND26
|
||||
PRINTI " (or click on one of the numbered boxes with your mouse)"
|
||||
?CND26: PRINTC 46
|
||||
JUMP ?PRG12
|
||||
?CCL23: GRTR? X,NUM \?CCL29
|
||||
CLEAR S-TEXT
|
||||
PRINTI "There "
|
||||
EQUAL? NUM,1 \?CCL32
|
||||
PRINTI "is"
|
||||
JUMP ?CND30
|
||||
?CCL32: PRINTI "are"
|
||||
?CND30: PRINTI " only "
|
||||
PRINTN NUM
|
||||
PRINTI " pebble"
|
||||
EQUAL? NUM,1 /?CND33
|
||||
PRINTC 115
|
||||
?CND33: PRINTI " in Pile #"
|
||||
PRINTN PILE
|
||||
PRINTC 46
|
||||
JUMP ?PRG12
|
||||
?CCL29: CLEAR S-TEXT
|
||||
PRINTI "You remove "
|
||||
PRINTN X
|
||||
PRINTI " pebble"
|
||||
EQUAL? X,1 /?CND35
|
||||
PRINTC 115
|
||||
?CND35: PRINTI " from Pile #"
|
||||
PRINTN PILE
|
||||
PRINTC 46
|
||||
ICALL COUNTDOWN-PILE,PILE,NUM,X
|
||||
ICALL1 DRAW-FLOWERS
|
||||
SET 'PILE,FALSE-VALUE
|
||||
CALL1 END-SN?
|
||||
ZERO? STACK /?CCL39
|
||||
SET 'STOP-SN,TRUE-VALUE
|
||||
FCLEAR FAN,TRYTAKEBIT
|
||||
CRLF
|
||||
CRLF
|
||||
ICALL1 HIT-ANY-KEY
|
||||
JUMP ?PRG1
|
||||
?CCL39: CRLF
|
||||
PRINTI " "
|
||||
ICALL1 J-MOVE
|
||||
CALL1 END-SN?
|
||||
ZERO? STACK /?CCL42
|
||||
SET 'STOP-SN,TRUE-VALUE
|
||||
CRLF
|
||||
CRLF
|
||||
ICALL1 HIT-ANY-KEY
|
||||
JUMP ?PRG1
|
||||
?CCL42: CRLF
|
||||
PRINTI " "
|
||||
JUMP ?PRG1
|
||||
?CCL7: ZERO? ACTIVE-MOUSE /?CND43
|
||||
ICALL1 DRAW-SN-BOXES
|
||||
?CND43: PRINTI "Type a number "
|
||||
ZERO? ACTIVE-MOUSE /?CND45
|
||||
PRINTI "(or click on one of the numbered boxes with your mouse) "
|
||||
?CND45: PRINTI "to select the pile from which you'd like to remove a pebble or pebbles."
|
||||
?PRG47: INPUT 'X >X
|
||||
ICALL1 MOUSE-INPUT?
|
||||
EQUAL? X,CLICK1,CLICK2 \?CCL51
|
||||
CALL1 SN-CLICK >X
|
||||
JUMP ?CND49
|
||||
?CCL51: GRTR? X,144 \?CCL53
|
||||
LESS? X,155 \?CCL53
|
||||
SUB X,145 >X
|
||||
JUMP ?CND49
|
||||
?CCL53: SUB X,48 >X
|
||||
?CND49: GRTR? X,4 /?CTR57
|
||||
LESS? X,1 \?CCL58
|
||||
?CTR57: CLEAR S-TEXT
|
||||
PRINT TYPE-A-NUMBER
|
||||
PRINTC 52
|
||||
ZERO? ACTIVE-MOUSE /?CND61
|
||||
PRINTI " (or click on one of the numbered boxes with your mouse)"
|
||||
?CND61: PRINTC 46
|
||||
JUMP ?PRG47
|
||||
?CCL58: GET PILE-TABLE,X
|
||||
ZERO? STACK \?CCL64
|
||||
CLEAR S-TEXT
|
||||
PRINTI "There are no longer any pebbles in Pile #"
|
||||
PRINTN X
|
||||
PRINTC 46
|
||||
JUMP ?PRG47
|
||||
?CCL64: SET 'PILE,X
|
||||
GET PILE-TABLE,PILE >NUM
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT SN-CLICK,ALREADY-PICKED-PILE,TL-X,TL-Y,BR-X,BR-Y,BOX-WIDTH,BOX-HEIGHT,CNT,HIT-SPOT
|
||||
SET 'CNT,1
|
||||
PICINF BOX-1,PICINF-TBL /?BOGUS1
|
||||
?BOGUS1: GET PICINF-TBL,1 >BOX-WIDTH
|
||||
GET PICINF-TBL,0 >BOX-HEIGHT
|
||||
ICALL2 PICINF-PLUS-ONE,BOX-1-LOC
|
||||
GET PICINF-TBL,1 >TL-X
|
||||
GET PICINF-TBL,0 >TL-Y
|
||||
ADD TL-Y,BOX-HEIGHT >BR-Y
|
||||
PICINF SN-BOX-SPACE,PICINF-TBL /?PRG3
|
||||
?PRG3: ADD TL-X,BOX-WIDTH >BR-X
|
||||
CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y
|
||||
ZERO? STACK /?CCL7
|
||||
SET 'HIT-SPOT,TRUE-VALUE
|
||||
?REP4: ZERO? HIT-SPOT /?CCL12
|
||||
RETURN CNT
|
||||
?CCL7: EQUAL? CNT,9 /?REP4
|
||||
INC 'CNT
|
||||
GET PICINF-TBL,1
|
||||
ADD TL-X,STACK >TL-X
|
||||
JUMP ?PRG3
|
||||
?CCL12: ZERO? ALREADY-PICKED-PILE \FALSE
|
||||
ICALL2 PICINF-PLUS-ONE,PILE-OF-1
|
||||
GET PICINF-TBL,1 >BOX-WIDTH
|
||||
GET PICINF-TBL,0 >BOX-HEIGHT
|
||||
ICALL2 PICINF-PLUS-ONE,PILE-1-PIC-LOC
|
||||
GET PICINF-TBL,1 >TL-X
|
||||
GET PICINF-TBL,0 >TL-Y
|
||||
ADD TL-X,BOX-WIDTH >BR-X
|
||||
ADD TL-Y,BOX-HEIGHT >BR-Y
|
||||
CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y
|
||||
ZERO? STACK /?CND14
|
||||
SET 'CNT,1
|
||||
SET 'HIT-SPOT,TRUE-VALUE
|
||||
?CND14: ZERO? HIT-SPOT \?CND16
|
||||
ICALL2 PICINF-PLUS-ONE,PILE-2-PIC-LOC
|
||||
GET PICINF-TBL,1 >TL-X
|
||||
GET PICINF-TBL,0 >TL-Y
|
||||
ADD TL-X,BOX-WIDTH >BR-X
|
||||
ADD TL-Y,BOX-HEIGHT >BR-Y
|
||||
CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y
|
||||
ZERO? STACK /?CND16
|
||||
SET 'CNT,2
|
||||
SET 'HIT-SPOT,TRUE-VALUE
|
||||
?CND16: ZERO? HIT-SPOT \?CND20
|
||||
ICALL2 PICINF-PLUS-ONE,PILE-3-PIC-LOC
|
||||
GET PICINF-TBL,1 >TL-X
|
||||
GET PICINF-TBL,0 >TL-Y
|
||||
ADD TL-X,BOX-WIDTH >BR-X
|
||||
ADD TL-Y,BOX-HEIGHT >BR-Y
|
||||
CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y
|
||||
ZERO? STACK /?CND20
|
||||
SET 'CNT,3
|
||||
SET 'HIT-SPOT,TRUE-VALUE
|
||||
?CND20: ZERO? HIT-SPOT \?CND24
|
||||
ICALL2 PICINF-PLUS-ONE,PILE-4-PIC-LOC
|
||||
GET PICINF-TBL,1 >TL-X
|
||||
GET PICINF-TBL,0 >TL-Y
|
||||
ADD TL-X,BOX-WIDTH >BR-X
|
||||
ADD TL-Y,BOX-HEIGHT >BR-Y
|
||||
CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y
|
||||
ZERO? STACK /?CND24
|
||||
SET 'CNT,4
|
||||
SET 'HIT-SPOT,TRUE-VALUE
|
||||
?CND24: ZERO? HIT-SPOT /FALSE
|
||||
RETURN CNT
|
||||
|
||||
|
||||
.FUNCT COUNTDOWN-PILE,PILE,NUM,X
|
||||
?PRG1: GET PILE-TABLE,PILE
|
||||
SUB STACK,1
|
||||
PUT PILE-TABLE,PILE,STACK
|
||||
ICALL2 DRAW-PILE,PILE
|
||||
DEC 'X
|
||||
ZERO? X \?PRG1
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT SAFE-NUMBER?,TBL,X,?TMP1,?TMP2,?TMP3
|
||||
GET TBL,1
|
||||
GET BINARY-TABLE,STACK >?TMP3
|
||||
GET TBL,2
|
||||
GET BINARY-TABLE,STACK
|
||||
ADD ?TMP3,STACK >?TMP2
|
||||
GET TBL,3
|
||||
GET BINARY-TABLE,STACK
|
||||
ADD ?TMP2,STACK >?TMP1
|
||||
GET TBL,4
|
||||
GET BINARY-TABLE,STACK
|
||||
ADD ?TMP1,STACK >X
|
||||
MOD X,2
|
||||
ZERO? STACK \FALSE
|
||||
DIV X,10
|
||||
MOD STACK,2
|
||||
ZERO? STACK \FALSE
|
||||
DIV X,100
|
||||
MOD STACK,2
|
||||
ZERO? STACK \FALSE
|
||||
DIV X,1000
|
||||
MOD STACK,2
|
||||
ZERO? STACK /TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT J-MOVE,PILE,NUM,?TMP1,?TMP2,?TMP3,?TMP4
|
||||
SET 'PILE,1
|
||||
SET 'NUM,1
|
||||
PRINTI "The jester peruses the piles, considering his move."
|
||||
CRLF
|
||||
CRLF
|
||||
ICALL1 HIT-ANY-KEY
|
||||
CLEAR S-TEXT
|
||||
CALL2 SAFE-NUMBER?,PILE-TABLE
|
||||
ZERO? STACK /?PRG12
|
||||
?PRG4: RANDOM 4 >PILE
|
||||
GET PILE-TABLE,PILE
|
||||
ZERO? STACK \?REP5
|
||||
EQUAL? PILE,4 \?CCL11
|
||||
SET 'PILE,0
|
||||
JUMP ?PRG4
|
||||
?CCL11: INC 'PILE
|
||||
JUMP ?PRG4
|
||||
?REP5: GET PILE-TABLE,PILE
|
||||
RANDOM STACK >NUM
|
||||
JUMP ?CND1
|
||||
?PRG12: COPYT PILE-TABLE+2,TEMP-TABLE+2,8
|
||||
GET PILE-TABLE,PILE
|
||||
ZERO? STACK \?CCL16
|
||||
INC 'PILE
|
||||
JUMP ?PRG12
|
||||
?CCL16: GET PILE-TABLE,1 >?TMP4
|
||||
GET PILE-TABLE,2
|
||||
ADD ?TMP4,STACK >?TMP3
|
||||
GET PILE-TABLE,3
|
||||
ADD ?TMP3,STACK >?TMP2
|
||||
GET PILE-TABLE,4
|
||||
ADD ?TMP2,STACK >?TMP1
|
||||
GET PILE-TABLE,PILE
|
||||
EQUAL? ?TMP1,STACK \?CCL18
|
||||
GET PILE-TABLE,PILE >NUM
|
||||
?CND1: PRINTI "The jester removes "
|
||||
PRINTN NUM
|
||||
PRINTI " pebble"
|
||||
EQUAL? NUM,1 /?CND24
|
||||
PRINTC 115
|
||||
?CND24: PRINTI " from Pile #"
|
||||
PRINTN PILE
|
||||
PRINTC 46
|
||||
GET PILE-TABLE,PILE
|
||||
ICALL COUNTDOWN-PILE,PILE,STACK,NUM
|
||||
CALL1 DRAW-FLOWERS
|
||||
RSTACK
|
||||
?CCL18: GET TEMP-TABLE,PILE
|
||||
SUB STACK,NUM
|
||||
PUT TEMP-TABLE,PILE,STACK
|
||||
CALL2 SAFE-NUMBER?,TEMP-TABLE
|
||||
ZERO? STACK \?CND1
|
||||
GET PILE-TABLE,PILE
|
||||
SUB STACK,NUM
|
||||
ZERO? STACK \?CCL23
|
||||
SET 'NUM,1
|
||||
INC 'PILE
|
||||
JUMP ?PRG12
|
||||
?CCL23: INC 'NUM
|
||||
JUMP ?PRG12
|
||||
|
||||
|
||||
.FUNCT END-SN?
|
||||
GET PILE-TABLE,1
|
||||
ZERO? STACK \FALSE
|
||||
GET PILE-TABLE,2
|
||||
ZERO? STACK \FALSE
|
||||
GET PILE-TABLE,3
|
||||
ZERO? STACK \FALSE
|
||||
GET PILE-TABLE,4
|
||||
ZERO? STACK /TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT FAN-F
|
||||
EQUAL? PRSA,V?POINT \FALSE
|
||||
EQUAL? P-PRSA-WORD,W?WAVE \FALSE
|
||||
PRINTR "You produce a light breeze."
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.ENDI
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,499 @@
|
|||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT FIND-DESCENDANTS,PARENT,FLAGS,F,FOBJ
|
||||
SET 'F,FINDER
|
||||
EQUAL? PARENT,GLOBAL-HERE \?CND1
|
||||
SET 'PARENT,HERE
|
||||
?CND1: FIRST? PARENT >FOBJ \TRUE
|
||||
?PRG6: CALL2 VISIBLE?,FOBJ
|
||||
ZERO? STACK /?CND8
|
||||
BTST FLAGS,8 /?CND10
|
||||
BTST FLAGS,1 \?PRF16
|
||||
PUSH 1
|
||||
JUMP ?PEN14
|
||||
?PRF16: PUSH 0
|
||||
?PEN14: CALL MATCH-OBJECT,FOBJ,F,STACK
|
||||
ZERO? STACK /FALSE
|
||||
?CND10: BTST FLAGS,4 \?CND8
|
||||
FIRST? FOBJ \?CND8
|
||||
EQUAL? FOBJ,WINNER /?CND8
|
||||
FSET? FOBJ,SEARCHBIT \?PRD24
|
||||
FSET? FOBJ,OPENBIT /?CCL18
|
||||
FSET? FOBJ,TRANSBIT /?CCL18
|
||||
?PRD24: FSET? FOBJ,SURFACEBIT \?CND8
|
||||
?CCL18: BTST FLAGS,1 \?CCL33
|
||||
PUSH 5
|
||||
JUMP ?CND31
|
||||
?CCL33: PUSH 4
|
||||
?CND31: CALL FIND-DESCENDANTS,FOBJ,STACK
|
||||
ZERO? STACK /FALSE
|
||||
?CND8: NEXT? FOBJ >FOBJ /?PRG6
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT EXCLUDED?,FOBJ,F,EXC,PHRASE,CT,VEC,VV
|
||||
GET F,8 >EXC
|
||||
ZERO? EXC /FALSE
|
||||
GET EXC,3 >PHRASE
|
||||
GET PHRASE,1 >CT
|
||||
ADD PHRASE,6 >VEC
|
||||
?PRG6: DLESS? 'CT,0 \?CND8
|
||||
SET 'VV,FALSE-VALUE
|
||||
JUMP ?REP7
|
||||
?CND8: GET VEC,0
|
||||
EQUAL? FOBJ,STACK \?CND10
|
||||
SET 'VV,TRUE-VALUE
|
||||
?REP7: ZERO? VV \TRUE
|
||||
GET EXC,1 >EXC
|
||||
ZERO? EXC /FALSE
|
||||
GET EXC,3 >PHRASE
|
||||
GET PHRASE,1 >CT
|
||||
ADD PHRASE,6 >VEC
|
||||
JUMP ?PRG6
|
||||
?CND10: ADD VEC,4 >VEC
|
||||
JUMP ?PRG6
|
||||
|
||||
|
||||
.FUNCT MATCH-OBJECT,FOBJ,F,INCLUDE?,NOUN,ADJS,APP,TB,RES,?TMP1
|
||||
GET F,9 >RES
|
||||
FSET? FOBJ,INVISIBLE /TRUE
|
||||
GET F,6 >NOUN
|
||||
EQUAL? NOUN,FALSE-VALUE,W?ONE /?PRD6
|
||||
GETPT FOBJ,P?SYNONYM >TB
|
||||
ZERO? TB /TRUE
|
||||
PTSIZE TB
|
||||
DIV STACK,2
|
||||
INTBL? NOUN,TB,STACK \TRUE
|
||||
?PRD6: GET F,7 >ADJS
|
||||
ZERO? ADJS /?PRD11
|
||||
CALL CHECK-ADJS,FOBJ,F,ADJS
|
||||
ZERO? STACK /TRUE
|
||||
?PRD11: GET F,5 >ADJS
|
||||
ZERO? ADJS /?PRD14
|
||||
CALL CHECK-ADJS,FOBJ,F,ADJS
|
||||
ZERO? STACK /TRUE
|
||||
?PRD14: CALL EXCLUDED?,FOBJ,F
|
||||
ZERO? STACK \TRUE
|
||||
GET F,1
|
||||
BTST STACK,1 /?CTR2
|
||||
CALL2 INVALID-OBJECT?,FOBJ
|
||||
ZERO? STACK \TRUE
|
||||
?CTR2: ZERO? INCLUDE? /TRUE
|
||||
GET F,5 >ADJS
|
||||
ZERO? ADJS /?CCL24
|
||||
GET ADJS,4 >?TMP1
|
||||
GETPT FOBJ,P?ADJECTIVE
|
||||
PTSIZE STACK
|
||||
DIV STACK,2
|
||||
EQUAL? ?TMP1,STACK \?CCL24
|
||||
PUT RES,1,1
|
||||
PUT RES,2,FALSE-VALUE
|
||||
PUT RES,4,FOBJ
|
||||
EQUAL? FOBJ,HERE \FALSE
|
||||
PUT RES,4,GLOBAL-HERE
|
||||
RFALSE
|
||||
?CCL24: GET F,0 >APP
|
||||
ZERO? APP /?CCL31
|
||||
GET F,1
|
||||
BTST STACK,1 /?CCL31
|
||||
GET RES,1
|
||||
ZERO? STACK /?CTR35
|
||||
GET F,2
|
||||
ZERO? STACK /?CCL36
|
||||
?CTR35: CALL ADD-OBJECT,FOBJ,F
|
||||
RSTACK
|
||||
?CCL36: CALL TEST-OBJECT,FOBJ,APP,F
|
||||
ZERO? STACK /FALSE
|
||||
GET RES,1
|
||||
EQUAL? STACK,1 \?CCL43
|
||||
GET RES,4
|
||||
CALL TEST-OBJECT,STACK,APP,F
|
||||
ZERO? STACK \?CCL46
|
||||
PUT RES,4,FOBJ
|
||||
EQUAL? FOBJ,HERE \TRUE
|
||||
PUT RES,4,GLOBAL-HERE
|
||||
RTRUE
|
||||
?CCL46: CALL ADD-OBJECT,FOBJ,F
|
||||
RSTACK
|
||||
?CCL43: CALL ADD-OBJECT,FOBJ,F
|
||||
RSTACK
|
||||
?CCL31: ZERO? APP \?CCL50
|
||||
GET F,1
|
||||
BTST STACK,1 \?CTR52
|
||||
GET F,2
|
||||
ZERO? STACK /TRUE
|
||||
?CTR52: CALL ADD-OBJECT,FOBJ,F
|
||||
RSTACK
|
||||
?CCL50: CALL TEST-OBJECT,FOBJ,APP,F
|
||||
ZERO? STACK /TRUE
|
||||
CALL ADD-OBJECT,FOBJ,F
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT TEST-OBJECT,FOBJ,APP,F,N,NN,?TMP1
|
||||
BAND APP,65280
|
||||
ZERO? STACK \?CCL3
|
||||
BTST APP,128 \?CCL6
|
||||
BAND APP,63
|
||||
FSET? FOBJ,STACK /FALSE
|
||||
RTRUE
|
||||
?CCL6: FSET? FOBJ,APP /TRUE
|
||||
RFALSE
|
||||
?CCL3: GET APP,1
|
||||
BTST STACK,256 \?CND12
|
||||
GET APP,1
|
||||
BAND STACK,63
|
||||
GETP FOBJ,STACK >?TMP1
|
||||
GET APP,2
|
||||
EQUAL? ?TMP1,STACK /TRUE
|
||||
RFALSE
|
||||
?CND12: GET APP,0 >N
|
||||
?PRG17: GET APP,N >NN
|
||||
BTST NN,128 \?CCL21
|
||||
BAND NN,63
|
||||
FSET? FOBJ,STACK /?CND19
|
||||
RTRUE
|
||||
?CCL21: FSET? FOBJ,NN /TRUE
|
||||
?CND19: DLESS? 'N,1 \?PRG17
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT ADD-OBJECT,OBJ,F,VEC,NC,DOIT?,SYN,WHICH,?TMP1
|
||||
GET F,9 >VEC
|
||||
SET 'DOIT?,TRUE-VALUE
|
||||
GET F,3 >SYN
|
||||
GET F,4 >WHICH
|
||||
EQUAL? OBJ,HERE \?CND1
|
||||
SET 'OBJ,GLOBAL-HERE
|
||||
?CND1: GET F,2
|
||||
ZERO? STACK \?CND3
|
||||
ZERO? SYN /?CND3
|
||||
GET VEC,1
|
||||
EQUAL? 1,STACK \?CND3
|
||||
CALL MULTIPLE-EXCEPTION?,OBJ,SYN,WHICH,F
|
||||
ZERO? STACK /?CCL10
|
||||
SET 'DOIT?,FALSE-VALUE
|
||||
JUMP ?CND3
|
||||
?CCL10: GET VEC,4
|
||||
CALL MULTIPLE-EXCEPTION?,STACK,SYN,WHICH,F
|
||||
ZERO? STACK /?CND3
|
||||
PUT VEC,4,OBJ
|
||||
SET 'DOIT?,FALSE-VALUE
|
||||
?CND3: ZERO? DOIT? /TRUE
|
||||
GET F,2
|
||||
ZERO? STACK /?PRD17
|
||||
GET F,3
|
||||
ZERO? STACK /?PRD17
|
||||
GET F,3 >?TMP1
|
||||
GET F,4
|
||||
CALL MULTIPLE-EXCEPTION?,OBJ,?TMP1,STACK,F
|
||||
ZERO? STACK \TRUE
|
||||
?PRD17: CALL NOT-IN-FIND-RES?,OBJ,VEC >WHICH
|
||||
ZERO? WHICH /TRUE
|
||||
GET VEC,1
|
||||
ADD 1,STACK
|
||||
PUT VEC,1,STACK
|
||||
PUT WHICH,0,OBJ
|
||||
GET F,2
|
||||
EQUAL? STACK,NP-QUANT-A /FALSE
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT NOT-IN-FIND-RES?,OBJ,VEC,NO-CHANGE?,CT,SZ,ANS,NVEC,NEW-OBJECT
|
||||
GET VEC,1 >CT
|
||||
GET VEC,0 >SZ
|
||||
?PRG1: ADD VEC,8 >ANS
|
||||
LESS? CT,1 \?CCL5
|
||||
RETURN ANS
|
||||
?CCL5: GRTR? CT,SZ \?CCL7
|
||||
SUB CT,SZ >CT
|
||||
JUMP ?CND3
|
||||
?CCL7: SET 'SZ,CT
|
||||
?CND3: INTBL? OBJ,ANS,SZ /FALSE
|
||||
GET VEC,2 >NVEC
|
||||
ZERO? NVEC /?CCL12
|
||||
SET 'VEC,NVEC
|
||||
SET 'SZ,FIND-RES-MAXOBJ
|
||||
JUMP ?PRG1
|
||||
?CCL12: LESS? SZ,FIND-RES-MAXOBJ \?CCL14
|
||||
MUL 2,SZ
|
||||
ADD ANS,STACK
|
||||
RSTACK
|
||||
?CCL14: ZERO? NO-CHANGE? \TRUE
|
||||
SET 'SZ,FIND-RES-MAXOBJ
|
||||
CALL DO-PMEM-ALLOC,7,9 >NEW-OBJECT
|
||||
SET 'NVEC,NEW-OBJECT
|
||||
PUT VEC,2,NVEC
|
||||
ADD NVEC,8
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT EVERYWHERE-VERB?,WHICH,SYNTAX,SYN
|
||||
ASSIGNED? 'WHICH /?CND1
|
||||
GET FINDER,4 >WHICH
|
||||
?CND1: ASSIGNED? 'SYNTAX /?CND3
|
||||
GET PARSE-RESULT,3 >SYNTAX
|
||||
?CND3: EQUAL? WHICH,1 \?CCL7
|
||||
GETB SYNTAX,5 >SYN
|
||||
JUMP ?CND5
|
||||
?CCL7: GETB SYNTAX,9 >SYN
|
||||
?CND5: BTST SYN,128 \FALSE
|
||||
BTST SYN,64 \TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT MULTIPLE-EXCEPTION?,OBJ,SYNTAX,WHICH,F,L,VB
|
||||
LOC OBJ >L
|
||||
GET SYNTAX,0 >VB
|
||||
EQUAL? OBJ,FALSE-VALUE,ROOMS \?CCL3
|
||||
INC 'P-NOT-HERE
|
||||
RTRUE
|
||||
?CCL3: CALL EVERYWHERE-VERB?,WHICH,SYNTAX
|
||||
ZERO? STACK \?CCL5
|
||||
CALL2 ACCESSIBLE?,OBJ
|
||||
ZERO? STACK /TRUE
|
||||
?CCL5: EQUAL? VB,V?TAKE \?CCL9
|
||||
GET F,6
|
||||
ZERO? STACK \?CCL9
|
||||
EQUAL? WHICH,1 \?CCL9
|
||||
FSET? OBJ,TAKEBIT /?CCL15
|
||||
FSET? OBJ,TRYTAKEBIT \TRUE
|
||||
?CCL15: EQUAL? L,WINNER /TRUE
|
||||
RFALSE
|
||||
?CCL9: EQUAL? VB,V?DROP \FALSE
|
||||
IN? OBJ,WINNER \TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT CHECK-ADJS,OBJ,F,ADJS,CNT,TMP,OWNER,ID,VEC,CT,ADJ,FL,OADJS,NUM,?TMP1
|
||||
GETP OBJ,P?OWNER >OWNER
|
||||
GETB ADJS,1
|
||||
EQUAL? STACK,2 /?CCL2
|
||||
GET ADJS,2 >TMP
|
||||
ZERO? TMP /?CND1
|
||||
?CCL2: SET 'ID,OWNER
|
||||
LESS? 0,ID \?CCL7
|
||||
SET 'ID,OWNER
|
||||
GRTR? ID,LAST-OBJECT /?CCL7
|
||||
EQUAL? OWNER,TMP,OBJ /?CND1
|
||||
EQUAL? OWNER,ROOMS \?CCL14
|
||||
GET OWNER-SR-HERE,4 >ID
|
||||
JUMP ?CND1
|
||||
?CCL14: GET OWNER-SR-THERE,1 >TMP
|
||||
ZERO? TMP /FALSE
|
||||
INTBL? OWNER,OWNER-SR-THERE+8,TMP /?CND1
|
||||
RFALSE
|
||||
?CCL7: ZERO? OWNER /?CCL19
|
||||
GET OWNER-SR-HERE,1 >CNT
|
||||
ZERO? CNT \?CCL22
|
||||
SET 'ID,PLAYER
|
||||
JUMP ?CND1
|
||||
?CCL22: ADD OWNER,2 >TMP
|
||||
SET 'VEC,OWNER-SR-HERE+8
|
||||
?PRG24: DLESS? 'CNT,0 /FALSE
|
||||
GET VEC,0 >?TMP1
|
||||
GET OWNER,0
|
||||
INTBL? ?TMP1,TMP,STACK >ID \?CCL30
|
||||
GET ID,0 >ID
|
||||
JUMP ?CND1
|
||||
?CCL30: ADD VEC,2 >VEC
|
||||
JUMP ?PRG24
|
||||
?CCL19: LESS? 0,TMP \?CCL32
|
||||
GRTR? TMP,LAST-OBJECT /?CCL32
|
||||
CALL HELD?,OBJ,TMP
|
||||
ZERO? STACK \?CND1
|
||||
RFALSE
|
||||
?CCL32: GET OWNER-SR-HERE,1 >TMP
|
||||
ZERO? TMP /FALSE
|
||||
LOC OBJ
|
||||
INTBL? STACK,OWNER-SR-HERE+8,TMP >ID \FALSE
|
||||
?CND1: EQUAL? ID,0,OBJ /?CND41
|
||||
GET F,9
|
||||
PUT STACK,3,ID
|
||||
?CND41: GETB ADJS,1
|
||||
EQUAL? STACK,2 /TRUE
|
||||
ADD ADJS,10 >VEC
|
||||
GET ADJS,4 >CT
|
||||
GETPT OBJ,P?ADJECTIVE >OADJS
|
||||
PTSIZE OADJS
|
||||
DIV STACK,2 >NUM
|
||||
?PRG45: DLESS? 'CT,0 /TRUE
|
||||
GET VEC,CT >ADJ
|
||||
SET 'ID,ADJ
|
||||
EQUAL? ADJ,W?NO.WORD /?PRG45
|
||||
INTBL? ID,OADJS,NUM /?PRG45
|
||||
EQUAL? ID,W?CLOSED,W?SHUT \?CCL54
|
||||
FSET? OBJ,OPENBIT \?PRG45
|
||||
?CCL54: EQUAL? ID,W?OPEN \FALSE
|
||||
FSET? OBJ,OPENBIT /?PRG45
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT FIND-OBJECTS,SEARCH,PARENT,GLBS,CONT?,N,RES,NEW-OBJECT,LOSING?,FLAG,?PR-FLAG,O,OBJ
|
||||
ASSIGNED? 'SEARCH /?CND1
|
||||
GET FINDER,4
|
||||
EQUAL? 1,STACK \?CCL5
|
||||
GET PARSE-RESULT,3
|
||||
GETB STACK,5 >SEARCH
|
||||
JUMP ?CND1
|
||||
?CCL5: GET PARSE-RESULT,3
|
||||
GETB STACK,9 >SEARCH
|
||||
?CND1: SET 'CONT?,TRUE-VALUE
|
||||
GET FINDER,9 >RES
|
||||
PUT RES,1,0
|
||||
PUT RES,2,FALSE-VALUE
|
||||
ZERO? PARENT /?CCL8
|
||||
CALL FIND-DESCENDANTS,PARENT,7
|
||||
ZERO? STACK /?CND6
|
||||
GET RES,1
|
||||
ZERO? STACK \?CND6
|
||||
?CCL8: ZERO? PARENT /?CND13
|
||||
GET FINDER,5 >GLBS
|
||||
ZERO? GLBS \?CND15
|
||||
CALL DO-PMEM-ALLOC,1,8 >NEW-OBJECT
|
||||
SET 'GLBS,NEW-OBJECT
|
||||
PUT FINDER,5,GLBS
|
||||
?CND15: GET GLBS,2
|
||||
ZERO? STACK \?CND13
|
||||
PUT GLBS,2,PARENT
|
||||
?CND13: BTST SEARCH,128 \?CND19
|
||||
BTST SEARCH,64 /?CND19
|
||||
FIRST? GENERIC-OBJECTS \?CND19
|
||||
FIRST? GENERIC-OBJECTS >NEW-OBJECT /?PRG25
|
||||
?PRG25: CALL MATCH-OBJECT,NEW-OBJECT,FINDER,TRUE-VALUE
|
||||
ZERO? STACK /?REP26
|
||||
NEXT? NEW-OBJECT >NEW-OBJECT /?PRG25
|
||||
?REP26: GET RES,1 >CONT?
|
||||
ZERO? CONT? /?CND19
|
||||
EQUAL? CONT?,1 /TRUE
|
||||
RFALSE
|
||||
?CND19: SET 'LOSING?,FALSE-VALUE
|
||||
?PRG35: ZERO? LOSING? \?PRD40
|
||||
BAND SEARCH,12
|
||||
ZERO? STACK \?CCL38
|
||||
?PRD40: ZERO? LOSING? /?CND37
|
||||
?CCL38: ZERO? LOSING? \?CTR44
|
||||
BTST SEARCH,8 \?CCL45
|
||||
?CTR44: SET '?PR-FLAG,6
|
||||
JUMP ?CND43
|
||||
?CCL45: SET '?PR-FLAG,2
|
||||
?CND43: ZERO? LOSING? \?CTR49
|
||||
BAND SEARCH,12
|
||||
ZERO? STACK /?CCL50
|
||||
?CTR49: BOR 1,?PR-FLAG >FLAG
|
||||
JUMP ?CND48
|
||||
?CCL50: BAND ?PR-FLAG,-2 >FLAG
|
||||
?CND48: ZERO? LOSING? \?CCL55
|
||||
BTST SEARCH,4 /?CCL55
|
||||
BOR 8,FLAG
|
||||
JUMP ?CND53
|
||||
?CCL55: BAND FLAG,-9
|
||||
?CND53: CALL FIND-DESCENDANTS,WINNER,STACK >CONT?
|
||||
?CND37: ZERO? LOSING? \?CCL59
|
||||
BAND SEARCH,3
|
||||
ZERO? STACK /?CND58
|
||||
?CCL59: ZERO? LOSING? \?CTR63
|
||||
BAND SEARCH,3
|
||||
ZERO? STACK /?CCL64
|
||||
?CTR63: SET '?PR-FLAG,3
|
||||
JUMP ?CND62
|
||||
?CCL64: SET '?PR-FLAG,2
|
||||
?CND62: ZERO? LOSING? \?CTR69
|
||||
BTST SEARCH,2 \?CCL70
|
||||
?CTR69: BOR 4,?PR-FLAG >FLAG
|
||||
JUMP ?CND68
|
||||
?CCL70: BAND ?PR-FLAG,-5 >FLAG
|
||||
?CND68: ZERO? LOSING? \?CCL75
|
||||
BTST SEARCH,1 /?CCL75
|
||||
BOR 8,FLAG
|
||||
JUMP ?CND73
|
||||
?CCL75: BAND FLAG,-9
|
||||
?CND73: CALL FIND-DESCENDANTS,HERE,STACK >CONT?
|
||||
?CND58: GET RES,1
|
||||
ZERO? STACK \?CND6
|
||||
BTST SEARCH,15 /?CND78
|
||||
ZERO? LOSING? \?CND78
|
||||
GET TLEXV,0 >GLBS
|
||||
ZERO? GLBS /?CCL86
|
||||
GETB GLBS,8
|
||||
BTST STACK,128 /?CCL93
|
||||
GETB GLBS,8
|
||||
JUMP ?CND91
|
||||
?CCL93: GETB GLBS,8
|
||||
BAND STACK,127
|
||||
SHIFT STACK,7
|
||||
?CND91: ZERO? STACK \?CTR85
|
||||
GET GLBS,3
|
||||
ZERO? STACK /?CCL86
|
||||
?CTR85: SET 'LOSING?,TRUE-VALUE
|
||||
JUMP ?PRG35
|
||||
?CCL86: BTST SEARCH,64 \?CND78
|
||||
BTST SEARCH,128 \FALSE
|
||||
?CND78: GETPT HERE,P?GLOBAL >GLBS
|
||||
ZERO? GLBS /?CND97
|
||||
PTSIZE GLBS
|
||||
DIV STACK,2 >N
|
||||
?PRG100: DLESS? 'N,0 /?CND97
|
||||
GET GLBS,N >O
|
||||
CALL MATCH-OBJECT,O,FINDER,TRUE-VALUE >CONT?
|
||||
ZERO? CONT? /?CND97
|
||||
FIRST? O \?PRG100
|
||||
CALL SEARCH-IN-LG?,O
|
||||
ZERO? STACK /?PRG100
|
||||
BTST SEARCH,2 \?PRG100
|
||||
CALL FIND-DESCENDANTS,O,FD-INCLUDE? >CONT?
|
||||
ZERO? CONT? \?PRG100
|
||||
?CND97: ZERO? CONT? /?CND114
|
||||
CALL1 EXCLUDE-HERE-OBJECT?
|
||||
ZERO? STACK \?CND114
|
||||
CALL MATCH-OBJECT,HERE,FINDER,TRUE-VALUE >CONT?
|
||||
?CND114: ZERO? CONT? /?CND118
|
||||
GETP HERE,P?THINGS
|
||||
ZERO? STACK /?CND118
|
||||
CALL TEST-THINGS,HERE,FINDER >CONT?
|
||||
?CND118: GET RES,1
|
||||
ZERO? STACK /?CND122
|
||||
SET 'CONT?,FALSE-VALUE
|
||||
?CND122: ZERO? CONT? /?CND124
|
||||
BTST SEARCH,2 \?CCL128
|
||||
PUSH 5
|
||||
JUMP ?CND126
|
||||
?CCL128: PUSH 1
|
||||
?CND126: CALL FIND-DESCENDANTS,GLOBAL-OBJECTS,STACK >CONT?
|
||||
?CND124: ZERO? CONT? /?CND129
|
||||
GET RES,1
|
||||
ZERO? STACK \?CND129
|
||||
GETP HERE,P?ADJACENT >GLBS
|
||||
ZERO? GLBS /?CND129
|
||||
GETB GLBS,0 >N
|
||||
BAND SEARCH,-193 >O
|
||||
?PRG134: GETB GLBS,N
|
||||
ZERO? STACK /?CCL138
|
||||
DEC 'N
|
||||
GETB GLBS,N
|
||||
ICALL FIND-OBJECTS,O,STACK
|
||||
JUMP ?CND136
|
||||
?CCL138: DEC 'N
|
||||
?CND136: DLESS? 'N,1 \?PRG134
|
||||
GET RES,1
|
||||
ZERO? STACK /?CND129
|
||||
SET 'CONT?,FALSE-VALUE
|
||||
?CND129: ZERO? CONT? /?CND6
|
||||
GET RES,1
|
||||
ZERO? STACK \?CND6
|
||||
CALL MOBY-FIND?,SEARCH
|
||||
ZERO? STACK /?CND6
|
||||
SET 'OBJ,1
|
||||
?PRG148: FSET? OBJ,INVISIBLE /?CND150
|
||||
CALL MATCH-OBJECT,OBJ,FINDER,TRUE-VALUE
|
||||
ZERO? STACK /?CND6
|
||||
?CND150: IGRTR? 'OBJ,LAST-OBJECT \?PRG148
|
||||
?CND6: GET RES,1
|
||||
EQUAL? STACK,1 /TRUE
|
||||
RFALSE
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.ENDI
|
|
@ -0,0 +1,555 @@
|
|||
"FIND file for NEW PARSER
|
||||
Copyright (C) 1988 Infocom, Inc. All rights reserved."
|
||||
|
||||
<ZZSECTION "FIND">
|
||||
|
||||
<INCLUDE "BASEDEFS" "PDEFS" "PBITDEFS">
|
||||
|
||||
<USE "NEWSTRUC" "PARSER" "PMEM">
|
||||
|
||||
<FILE-FLAGS MDL-ZIL? CLEAN-STACK? ;ZAP-TO-SOURCE-DIRECTORY?>
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
<PUT-DECL BOOLEAN '<OR ATOM FALSE>>
|
||||
|
||||
<DEFMAC FD-FLAG (WHICH 'VAL "OPT" 'NEW)
|
||||
<COND (<ASSIGNED? NEW>
|
||||
<COND (<OR <TYPE? .NEW ATOM FALSE>
|
||||
<AND <TYPE? .NEW FORM>
|
||||
<EMPTY? .NEW>>>
|
||||
<COND (<TYPE? .NEW ATOM>
|
||||
;"Just turning flag on"
|
||||
<FORM ORB ,.WHICH .VAL>)
|
||||
(T
|
||||
<FORM ANDB .VAL <XORB ,.WHICH -1>>)>)
|
||||
(<TYPE? .VAL FIX LVAL GVAL>
|
||||
<FORM COND
|
||||
(.NEW
|
||||
<FORM ORB .VAL ,.WHICH>)
|
||||
(T
|
||||
<FORM ANDB .VAL <XORB ,.WHICH -1>>)>)
|
||||
(T
|
||||
<FORM BIND ((FLAG .VAL))
|
||||
<FORM COND
|
||||
(.NEW
|
||||
<FORM ORB ,.WHICH '.FLAG>)
|
||||
(T
|
||||
<FORM ANDB '.FLAG <XORB ,.WHICH -1>>)>>)>)
|
||||
(T
|
||||
<FORM NOT <FORM 0? <FORM ANDB .VAL ,.WHICH>>>)>>
|
||||
|
||||
<MSETG FIND-FLAGS-GWIM 1>
|
||||
<DEFMAC FIND-GWIM? ('F)
|
||||
<FORM NOT <FORM 0? <FORM ANDB <FORM FIND-FLAGS .F> ,FIND-FLAGS-GWIM>>>>
|
||||
|
||||
<CONSTANT FINDER <MAKE-FINDER>>
|
||||
<GLOBAL P-NOT-HERE:NUMBER ;BYTE 0>
|
||||
|
||||
"FIND-DESCENDANTS, MATCH-OBJECT, and ADD-OBJECT all return false when the
|
||||
search should be stopped prematurely because some object was an exact
|
||||
match. If there's a big red book and a big ugly red book, BIG RED BOOK
|
||||
will get the former, since it's the only way to do so."
|
||||
|
||||
<DEFINE FIND-DESCENDANTS FD
|
||||
(PARENT:OBJECT FLAGS:FIX ;"INCLUDE, SEARCH, NEST, NOTOP"
|
||||
"AUX" (F ,FINDER) FOBJ:<OR FALSE OBJECT>)
|
||||
<COND (<EQUAL? .PARENT ,GLOBAL-HERE>
|
||||
<SET PARENT ,HERE>)>
|
||||
<COND (<SET FOBJ <FIRST? .PARENT>>
|
||||
;"This guy contains something"
|
||||
<REPEAT ()
|
||||
;"See if the current object matches: if so, add it to the list"
|
||||
<COND
|
||||
(<VISIBLE? .FOBJ>
|
||||
<COND (<AND <NOT <FD-FLAG FD-NOTOP? .FLAGS> ;<BTST .FLAGS 8>>
|
||||
<NOT <MATCH-OBJECT .FOBJ .F
|
||||
<FD-FLAG FD-INCLUDE? .FLAGS>
|
||||
;<BTST .FLAGS 1>>>>
|
||||
<RETURN <> .FD>)>
|
||||
<COND (<AND <FD-FLAG FD-NEST? .FLAGS> ;<BTST .FLAGS 4>
|
||||
<FIRST? .FOBJ>
|
||||
<N==? .FOBJ ,WINNER>
|
||||
<OR ;,P-MOBY-FLAG
|
||||
<AND <FSET? .FOBJ ,SEARCHBIT>
|
||||
<OR <FSET? .FOBJ ,OPENBIT>
|
||||
<FSET? .FOBJ ,TRANSBIT>>>
|
||||
<FSET? .FOBJ ,SURFACEBIT>>>
|
||||
;"Check its contents"
|
||||
<COND (<NOT <FIND-DESCENDANTS .FOBJ
|
||||
<FD-FLAG FD-INCLUDE? ,FD-NEST?
|
||||
<FD-FLAG FD-INCLUDE? .FLAGS>>
|
||||
;<COND (<BTST .FLAGS 1> 5) (T 4)>>>
|
||||
<RETURN <> .FD>)>)>)>
|
||||
;"Check next sibling"
|
||||
<COND (<NOT <SET FOBJ <NEXT? .FOBJ>>>
|
||||
<RETURN T .FD>)>>)
|
||||
(T)>>
|
||||
|
||||
<DEFINE EXCLUDED? EX (FOBJ:OBJECT F:FINDER
|
||||
"AUX" (EXC:<OR FALSE PMEM> <FIND-EXCEPTIONS .F>))
|
||||
<COND (.EXC
|
||||
<REPEAT ((PHRASE:PMEM <NPP-NOUN-PHRASE .EXC>)
|
||||
(CT:FIX <NOUN-PHRASE-COUNT .PHRASE>)
|
||||
(VEC <REST-TO-SLOT .PHRASE NOUN-PHRASE-OBJ1>) VV)
|
||||
<REPEAT ()
|
||||
<COND (<L? <SET CT <- .CT 1>> 0>
|
||||
<SET VV <>>
|
||||
<RETURN>)>
|
||||
<COND (<==? .FOBJ <ZGET .VEC 0>>
|
||||
<SET VV T>
|
||||
<RETURN>)>
|
||||
<SET VEC <ZREST .VEC 4 ;2>>>
|
||||
<COND (.VV
|
||||
<RETURN T .EX>)
|
||||
(<SET EXC <NPP-NEXT .EXC>>
|
||||
<SET PHRASE <NPP-NOUN-PHRASE .EXC>>
|
||||
<SET CT <NOUN-PHRASE-COUNT .PHRASE>>
|
||||
<SET VEC <REST-TO-SLOT .PHRASE NOUN-PHRASE-OBJ1>>)
|
||||
(T
|
||||
<RETURN <> .EX>)>>)>>
|
||||
|
||||
<DEFINE MATCH-OBJECT (FOBJ:OBJECT F:FINDER INCLUDE?:BOOLEAN
|
||||
"AUX" NOUN ADJS APP TB (RES <FIND-RES .F>))
|
||||
<COND (<AND <NOT <FSET? .FOBJ ,INVISIBLE>>
|
||||
<OR <EQUAL? <SET NOUN <FIND-NOUN .F>> <> ,W?ONE>
|
||||
<AND <SET TB <GETPT .FOBJ ,P?SYNONYM>>
|
||||
<ZMEMQ .NOUN .TB </ <PTSIZE .TB>:FIX 2>>>>
|
||||
<OR <NOT <SET ADJS <FIND-OF .F>>>
|
||||
<CHECK-ADJS .FOBJ .F .ADJS>>
|
||||
<OR <NOT <SET ADJS <FIND-ADJS .F>>>
|
||||
<CHECK-ADJS .FOBJ .F .ADJS>>
|
||||
<NOT <EXCLUDED? .FOBJ .F>>
|
||||
<OR <FIND-GWIM? .F>
|
||||
<NOT <INVALID-OBJECT? .FOBJ>>>>
|
||||
;"This object matches the words used..."
|
||||
<COND (<NOT .INCLUDE?> ;"location didn't match the syntax bits"
|
||||
T)
|
||||
(<AND <T? <SET ADJS <FIND-ADJS .F>>>
|
||||
<EQUAL? <ADJS-COUNT .ADJS>
|
||||
<COND (T ;<CHECK-EXTENDED?>
|
||||
</ <PTSIZE <GETPT .FOBJ ,P?ADJECTIVE>> 2>)
|
||||
;(T <- <PTSIZE <GETPT .FOBJ ,P?ADJECTIVE>> 1>)>>>
|
||||
;"the only way to do so."
|
||||
<FIND-RES-COUNT .RES 1>
|
||||
<FIND-RES-NEXT .RES <>>
|
||||
<FIND-RES-OBJ1 .RES .FOBJ>
|
||||
<COND (<EQUAL? .FOBJ ,HERE>
|
||||
<FIND-RES-OBJ1 .RES ,GLOBAL-HERE>)>
|
||||
<>)
|
||||
(<AND <T? <SET APP <FIND-APPLIC .F>>>
|
||||
<NOT <FIND-GWIM? .F>>>
|
||||
;"We're not GWIMming, so apply the test only if there's an
|
||||
ambiguity"
|
||||
<COND (<OR <0? <FIND-RES-COUNT .RES>>
|
||||
<FIND-QUANT .F>>
|
||||
;"Don't have anything yet"
|
||||
<ADD-OBJECT .FOBJ .F>)
|
||||
(<TEST-OBJECT .FOBJ .APP .F>
|
||||
;"We already have something, so first find out if
|
||||
this one's OK"
|
||||
<COND (<1? <FIND-RES-COUNT .RES>>
|
||||
;"There's only one other object"
|
||||
<COND (<NOT <TEST-OBJECT
|
||||
<FIND-RES-OBJ1 .RES>
|
||||
.APP .F>>
|
||||
;"The other object doesn't match, so just
|
||||
replace it"
|
||||
<FIND-RES-OBJ1 .RES .FOBJ>
|
||||
<COND (<EQUAL? .FOBJ ,HERE>
|
||||
<FIND-RES-OBJ1 .RES ,GLOBAL-HERE>)>
|
||||
T)
|
||||
(T
|
||||
;"The other object also matches, so
|
||||
we're stuck"
|
||||
<ADD-OBJECT .FOBJ .F>)>)
|
||||
(T
|
||||
;"We already have more than one object, so
|
||||
we're losing"
|
||||
<ADD-OBJECT .FOBJ .F>)>)>)
|
||||
(<F? .APP>
|
||||
<COND (<OR <NOT <FIND-GWIM? .F>>
|
||||
<FIND-QUANT .F>> ;"DETERMINE-OBJ w/ PICK"
|
||||
<ADD-OBJECT .FOBJ .F>)
|
||||
(T)>)
|
||||
(<TEST-OBJECT .FOBJ .APP .F>
|
||||
<ADD-OBJECT .FOBJ .F>)
|
||||
(T)>)
|
||||
(T)>>
|
||||
|
||||
<MSETG SYN-FIND-PROP *400*> ;"If set, look for this property"
|
||||
|
||||
<DEFINE TEST-OBJECT TO (FOBJ:OBJECT APP:<OR FIX TABLE> F:FINDER)
|
||||
<COND (<NOT <TABLE? .APP>>
|
||||
<COND (<NOT <0? <ANDB .APP ,SYN-FIND-NEGATE>>>
|
||||
<NOT <FSET? .FOBJ <ANDB .APP *77*>>>)
|
||||
(T
|
||||
<FSET? .FOBJ .APP>)>)
|
||||
(T
|
||||
<COND (<NOT <0? <ANDB <ZGET .APP 1> ,SYN-FIND-PROP>>>
|
||||
<COND (<EQUAL? <GETP .FOBJ <ANDB <ZGET .APP 1> *77*>>
|
||||
<ZGET .APP 2>>
|
||||
<RETURN T .TO>)
|
||||
(T <RETURN <> .TO>)>)>
|
||||
<REPEAT ((N:FIX <ZGET .APP 0>) NN)
|
||||
<SET NN <ZGET .APP .N>>
|
||||
<COND (<NOT <0? <ANDB .NN ,SYN-FIND-NEGATE>>>
|
||||
<COND (<NOT <FSET? .FOBJ <ANDB .NN *77*>>>
|
||||
<RETURN T .TO>)>)
|
||||
(<FSET? .FOBJ .NN>
|
||||
<RETURN T .TO>)>
|
||||
<COND (<L? <SET N <- .N 1>> 1>
|
||||
<RETURN <> .TO>)>>)>>
|
||||
|
||||
"Object matches all other tests. Here do checks with quantities
|
||||
(all, one, etc.), then add if OK."
|
||||
<DEFINE ADD-OBJECT (OBJ:OBJECT F:FINDER "AUX" (VEC <FIND-RES .F>) NC
|
||||
(DOIT? T) (SYN <FIND-SYNTAX .F>) (WHICH <FIND-WHICH .F>))
|
||||
<COND (<EQUAL? .OBJ ,HERE>
|
||||
<SET OBJ ,GLOBAL-HERE>)> ;"per PDL 29-Apr-88"
|
||||
<COND (<AND <NOT <FIND-QUANT .F>>
|
||||
.SYN
|
||||
<==? 1 <FIND-RES-COUNT .VEC>:FIX>>
|
||||
<COND (<MULTIPLE-EXCEPTION? .OBJ .SYN .WHICH .F>
|
||||
<SET DOIT? <>>)
|
||||
(<MULTIPLE-EXCEPTION? <FIND-RES-OBJ1 .VEC> .SYN .WHICH .F>
|
||||
<FIND-RES-OBJ1 .VEC .OBJ>
|
||||
<SET DOIT? <>>)>)>
|
||||
<COND (<AND .DOIT?
|
||||
<OR <NOT <FIND-QUANT .F>>
|
||||
<NOT <FIND-SYNTAX .F>>
|
||||
<NOT <MULTIPLE-EXCEPTION? .OBJ ;"wrong theory of ALL?"
|
||||
<FIND-SYNTAX .F>
|
||||
<FIND-WHICH .F>
|
||||
.F>>>
|
||||
;"In case an object gets found twice..."
|
||||
<SET WHICH <NOT-IN-FIND-RES? .OBJ .VEC>>>
|
||||
<FIND-RES-COUNT .VEC ;<SET NC > <+ 1 <FIND-RES-COUNT .VEC>>>
|
||||
<COND ;(<AND <IN? <SET NC <META-LOC .OBJ>> ,ROOMS>
|
||||
<NOT <EQUAL? .NC <META-LOC ,WINNER>>>>
|
||||
<ZPUT .WHICH 0 <- 0 .OBJ>>) ;"adjacent room"
|
||||
(T
|
||||
<ZPUT .WHICH 0 .OBJ>)>
|
||||
;<COND (<L=? .NC <FIND-RES-SIZE .VEC>>
|
||||
<ZPUT <REST-TO-SLOT .VEC FIND-RES-OBJ1>
|
||||
<- .NC 1>
|
||||
.OBJ>)>
|
||||
<N==? <FIND-QUANT .F> ,NP-QUANT-A>)
|
||||
(T)>>
|
||||
|
||||
<DEFINE NOT-IN-FIND-RES? ACT (OBJ VEC "OPT" (NO-CHANGE? <>))
|
||||
<REPEAT ((CT <FIND-RES-COUNT .VEC>)
|
||||
(SZ <FIND-RES-SIZE .VEC>) ANS NVEC)
|
||||
<SET ANS <REST-TO-SLOT .VEC FIND-RES-OBJ1>>
|
||||
<COND (<L? .CT 1>
|
||||
<RETURN .ANS .ACT>)
|
||||
(<G? .CT .SZ>
|
||||
<SET CT <- .CT .SZ>>)
|
||||
(T <SET SZ .CT>)>
|
||||
<COND (<INTBL? .OBJ .ANS .SZ>
|
||||
<RETURN <> .ACT>)
|
||||
(<T? <SET NVEC <FIND-RES-NEXT .VEC>>>
|
||||
<SET VEC .NVEC>
|
||||
<SET SZ ,FIND-RES-MAXOBJ ;<OBJLIST-SIZE .VEC>>)
|
||||
(<L? .SZ ,FIND-RES-MAXOBJ ;<FIND-RES-SIZE .VEC>>
|
||||
<RETURN <ZREST .ANS <* 2 .SZ>> .ACT>)
|
||||
(<T? .NO-CHANGE?>
|
||||
<RETURN T .ACT>)
|
||||
(T
|
||||
<SET SZ ,FIND-RES-MAXOBJ ;<FIND-RES-SIZE .VEC>>
|
||||
<SET NVEC <PMEM-ALLOC OBJLIST
|
||||
;"SIZE .SZ"
|
||||
LENGTH <- ,FIND-RES-LENGTH 1>>>
|
||||
<FIND-RES-NEXT .VEC .NVEC>
|
||||
<RETURN <REST-TO-SLOT .NVEC FIND-RES-OBJ1> .ACT>)>>>
|
||||
|
||||
"EVERYWHERE-VERB? -- separately defined so game can call it"
|
||||
|
||||
<DEFINE EVERYWHERE-VERB? ("OPT" (WHICH <FIND-WHICH ,FINDER>)
|
||||
(SYNTAX <PARSE-SYNTAX ,PARSE-RESULT>)
|
||||
"AUX" SYN)
|
||||
<COND (<==? .WHICH 1>
|
||||
<SET SYN <SYNTAX-SEARCH .SYNTAX 1>>)
|
||||
(T
|
||||
<SET SYN <SYNTAX-SEARCH .SYNTAX 2>>)>
|
||||
<COND (<AND <ANDB ,SEARCH-MOBY .SYN>
|
||||
<NOT <ANDB ,SEARCH-MUST-HAVE .SYN>>>
|
||||
T)>>
|
||||
|
||||
"MULTIPLE-EXCEPTION? -- return true if an object found by ALL should not
|
||||
be include when the crunch comes."
|
||||
|
||||
<DEFINE MULTIPLE-EXCEPTION? (OBJ:OBJECT SYNTAX:VERB-SYNTAX WHICH:FIX F:FINDER
|
||||
"AUX" (L <LOC .OBJ>) (VB <SYNTAX-ID .SYNTAX>))
|
||||
<COND (<EQUAL? .OBJ <> ,ROOMS ;,NOT-HERE-OBJECT>
|
||||
<SETG P-NOT-HERE <+ 1 ,P-NOT-HERE>>
|
||||
T)
|
||||
(<AND <0? <EVERYWHERE-VERB? .WHICH .SYNTAX>>
|
||||
<NOT <ACCESSIBLE? .OBJ>>>
|
||||
T)
|
||||
(<AND <==? .VB ,V?TAKE>
|
||||
<ZERO? <FIND-NOUN .F>>
|
||||
<1? .WHICH>>
|
||||
<COND (<AND <NOT <FSET? .OBJ ,TAKEBIT>>
|
||||
<NOT <FSET? .OBJ ,TRYTAKEBIT>>>
|
||||
T)
|
||||
(<EQUAL? .L ,WINNER>
|
||||
;<AND <NOT <EQUAL? .L ,WINNER <LOC ,WINNER> ,HERE>>
|
||||
<NOT <FSET? .L ,SURFACEBIT>>
|
||||
<NOT <FSET? .L ,SEARCHBIT>>>
|
||||
T)>)
|
||||
(<==? .VB ,V?DROP>
|
||||
<COND (<NOT <IN? .OBJ ,WINNER>>
|
||||
T)>)
|
||||
;(<AND ,PRSI
|
||||
<==? ,PRSO ,PRSI>>
|
||||
;"VERB ALL and prso = prsi"
|
||||
<RTRUE>)
|
||||
;(<AND <==? .VB ,V?PUT>
|
||||
<NOT <IN? .OBJ ,WINNER>>
|
||||
<HELD? ,PRSO ,PRSI>>
|
||||
;"PUT ALL IN X and object already in x"
|
||||
<RTRUE>)>>
|
||||
|
||||
<ADD-WORD OPEN ADJ>
|
||||
<ADD-WORD CLOSED ADJ>
|
||||
<ADD-WORD SHUT ADJ>
|
||||
|
||||
<DEFINE CHECK-ADJS CA (OBJ:OBJECT F ADJS:PMEM
|
||||
"AUX" CNT (TMP <>) OWNER (ID <>) VEC)
|
||||
<SET OWNER <GETP .OBJ ,P?OWNER>>
|
||||
<COND (<OR <PMEM-TYPE? .ADJS NP> ;"it's NP-OF"
|
||||
<SET TMP <ADJS-POSS .ADJS>>>
|
||||
<COND (<OBJECT? <SET ID .OWNER>>
|
||||
<COND (<EQUAL? .OWNER .TMP .OBJ>
|
||||
T)
|
||||
(<EQUAL? .OWNER ,ROOMS ;"any">
|
||||
<SET ID <FIND-RES-OBJ1 ,OWNER-SR-HERE>> ;"real owner")
|
||||
(<ZERO? <SET TMP <FIND-RES-COUNT ,OWNER-SR-THERE>>>
|
||||
<RETURN <> .CA>)
|
||||
(<NOT <INTBL? .OWNER
|
||||
<REST-TO-SLOT ,OWNER-SR-THERE FIND-RES-OBJ1>
|
||||
.TMP>>
|
||||
<RETURN <> .CA>)>)
|
||||
(<T? .OWNER> ;"table for multiple owners (body parts)"
|
||||
;<SET ID <>>
|
||||
<COND (<AND ;<ZERO? .ID>
|
||||
<ZERO? <SET CNT <FIND-RES-COUNT ,OWNER-SR-HERE>>>
|
||||
;<SET ID <INTBL? ,PLAYER .TMP <ZGET .OWNER 0>>>>
|
||||
<SET ID ,PLAYER> ;"default owner of body part"
|
||||
;<SET ID <ZGET .ID 0>>)
|
||||
(T
|
||||
<SET TMP <ZREST .OWNER 2>>
|
||||
<SET VEC <REST-TO-SLOT ,OWNER-SR-HERE FIND-RES-OBJ1>>
|
||||
<REPEAT ()
|
||||
<COND (<DLESS? CNT 0>
|
||||
<RETURN <> .CA>)
|
||||
(<SET ID
|
||||
<INTBL? <ZGET .VEC 0> .TMP <ZGET .OWNER 0>>>
|
||||
<SET ID <ZGET .ID 0>>
|
||||
<RETURN>)
|
||||
(T <SET VEC <ZREST .VEC 2>>)>>)>)
|
||||
(<OBJECT? .TMP> ;"possession"
|
||||
<COND (<NOT <HELD? .OBJ .TMP>>
|
||||
<RETURN <> .CA>)>)
|
||||
(T ;"possession"
|
||||
<COND (<ZERO? <SET TMP <FIND-RES-COUNT ,OWNER-SR-HERE>>>
|
||||
<RETURN <> .CA>)
|
||||
(<NOT <SET ID <INTBL? <LOC .OBJ>
|
||||
<REST-TO-SLOT ,OWNER-SR-HERE FIND-RES-OBJ1>
|
||||
.TMP>>>
|
||||
<RETURN <> .CA>)
|
||||
;(T <SET ID <ZGET .ID 0>>)>)>)>
|
||||
<COND (<NOT <EQUAL? .ID 0 .OBJ>> ;<T? .ID>
|
||||
<FIND-RES-OWNER <FIND-RES .F> .ID>)>
|
||||
<COND (<NOT <PMEM-TYPE? .ADJS NP>>
|
||||
<SET VEC <REST-TO-SLOT .ADJS ADJS-COUNT 1>>
|
||||
<REPEAT ((CT <ADJS-COUNT .ADJS>) ADJ FL
|
||||
(OADJS <GETPT .OBJ ,P?ADJECTIVE>)
|
||||
(NUM </ <PTSIZE .OADJS>:FIX 2>))
|
||||
<COND (<L? <SET CT <- .CT 1>> 0>
|
||||
<RETURN>)>
|
||||
<COND
|
||||
(T ;<CHECK-EXTENDED?>
|
||||
<SET ADJ <ZGET .VEC .CT>>
|
||||
<SET ID .ADJ>)
|
||||
;(T
|
||||
<COND (<0? <SET ID <WORD-ADJ-ID <SET ADJ <ZGET .VEC .CT>>>>>
|
||||
<COND (<NOT <IF-MUDDLE <COND (<GASSIGNED? SPECIAL-ADJ-CHECK>
|
||||
<SPECIAL-ADJ-CHECK .ADJ .OBJ>)>
|
||||
<SPECIAL-ADJ-CHECK .ADJ .OBJ>>>
|
||||
<RETURN <> .CA>)>)>)>
|
||||
<COND (<EQUAL? .ADJ ,W?NO.WORD>
|
||||
<AGAIN>)
|
||||
(<ZMEMQ .ID .OADJS .NUM>
|
||||
;<COND (T ;<CHECK-EXTENDED?>
|
||||
)
|
||||
;(T <ZMEMQB .ID .OADJS <- <PTSIZE .OADJS>:FIX 1>>)>)
|
||||
(<AND <EQUAL? .ID ,W?CLOSED ,W?SHUT>
|
||||
<NOT <FSET? .OBJ ,OPENBIT>>>)
|
||||
(<AND <EQUAL? .ID ,W?OPEN>
|
||||
<FSET? .OBJ ,OPENBIT>>)
|
||||
;(<VERSION? (ZIP <>)
|
||||
(T
|
||||
<IF-MUDDLE <AND <GASSIGNED? SPECIAL-ADJ-CHECK>
|
||||
<SPECIAL-ADJ-CHECK .ADJ .OBJ>>
|
||||
<SPECIAL-ADJ-CHECK .ADJ .OBJ>>)>)
|
||||
(T
|
||||
<RETURN <> .CA>)>>)>
|
||||
T>
|
||||
|
||||
<OBJECT GENERIC-OBJECTS
|
||||
(ADJACENT 0) ;"to establish property">
|
||||
|
||||
<DEFINE FIND-OBJECTS ("OPT" (SEARCH:FIX
|
||||
<COND (<==? 1 <FIND-WHICH ,FINDER>>
|
||||
<SYNTAX-SEARCH <PARSE-SYNTAX ,PARSE-RESULT>
|
||||
1>)
|
||||
(T
|
||||
<SYNTAX-SEARCH <PARSE-SYNTAX ,PARSE-RESULT>
|
||||
2>)>)
|
||||
(PARENT:<OR OBJECT FALSE> <>)
|
||||
"AUX" GLBS (CONT? T) N:FIX (RES <FIND-RES ,FINDER>))
|
||||
;<MAKE-FIND-RES 'FIND-RES .RES 'FIND-RES-COUNT 0>
|
||||
<FIND-RES-COUNT .RES 0>
|
||||
<FIND-RES-NEXT .RES <>>
|
||||
;"Initialize world"
|
||||
<COND (<AND .PARENT
|
||||
;<NOT <IN? .PARENT ,GLOBAL-OBJECTS>>
|
||||
<OR <NOT <FIND-DESCENDANTS .PARENT
|
||||
<ORB ,FD-INCLUDE? ,FD-SEARCH? ,FD-NEST?>;7>>
|
||||
<NOT <0? <FIND-RES-COUNT .RES>:FIX>>>>
|
||||
;"In case we have `the foo in the bar' or `a picture on the wall'"
|
||||
;<SET CONT? <>>
|
||||
T)
|
||||
(T
|
||||
<COND (.PARENT
|
||||
<COND (<NOT <SET GLBS <FIND-ADJS ,FINDER>>>
|
||||
<FIND-ADJS ,FINDER
|
||||
<SET GLBS <PMEM-ALLOC ADJS>>>)>
|
||||
<COND (<NOT <ADJS-POSS .GLBS>>
|
||||
<ADJS-POSS .GLBS .PARENT>)>)>
|
||||
<COND (<AND <T? <ANDB .SEARCH ,SEARCH-MOBY ;128>>
|
||||
<F? <ANDB .SEARCH ,SEARCH-MUST-HAVE>>
|
||||
<FIRST? ,GENERIC-OBJECTS>
|
||||
;<NOT <FIND-DESCENDANTS ,GENERIC-OBJECTS .SEARCH>>>
|
||||
<REPEAT ((OBJ <FIRST? ,GENERIC-OBJECTS>))
|
||||
<COND (<NOT <MATCH-OBJECT .OBJ ,FINDER T>>
|
||||
<RETURN>)
|
||||
(<NOT <SET OBJ <NEXT? .OBJ>>>
|
||||
<RETURN>)>>
|
||||
<COND (<NOT <0? <SET CONT? <FIND-RES-COUNT .RES>>:FIX>>
|
||||
<RETURN <1? .CONT?:FIX>>)>)>
|
||||
<PROG ((LOSING? <>))
|
||||
<COND
|
||||
(<OR <AND <NOT .LOSING?> ;"redundant?"
|
||||
<NOT <0? <ANDB .SEARCH ,SEARCH-CARRIED ;12>>>>
|
||||
.LOSING?>
|
||||
<SET CONT?
|
||||
<FIND-DESCENDANTS ,WINNER
|
||||
<FD-FLAG FD-NOTOP?
|
||||
<FD-FLAG FD-INCLUDE?
|
||||
<FD-FLAG FD-NEST? ,FD-SEARCH?
|
||||
<OR .LOSING? ;"search pockets?"
|
||||
<NOT <0? <ANDB .SEARCH ,SEARCH-POCKETS ;8>>>>>
|
||||
<OR .LOSING?
|
||||
<NOT <0? <ANDB .SEARCH ,SEARCH-CARRIED ;12>>>>>
|
||||
<AND <NOT .LOSING?>
|
||||
<0? <ANDB .SEARCH ,SEARCH-HELD ;4>>>>>>)>
|
||||
<COND
|
||||
(<OR .LOSING?
|
||||
<NOT <0? <ANDB .SEARCH ,SEARCH-IN-ROOM ;3>>>>
|
||||
<SET CONT?
|
||||
<FIND-DESCENDANTS ,HERE
|
||||
<FD-FLAG FD-NOTOP?
|
||||
<FD-FLAG FD-NEST?
|
||||
<FD-FLAG FD-INCLUDE? ,FD-SEARCH?
|
||||
<AND ;,LIT
|
||||
<OR .LOSING?
|
||||
<NOT <0? <ANDB .SEARCH ,SEARCH-IN-ROOM ;3>>>>>>
|
||||
<OR .LOSING?
|
||||
<NOT <0? <ANDB .SEARCH ,SEARCH-OFF-GROUND ;2>>>>>
|
||||
<AND <NOT .LOSING?>
|
||||
<0? <ANDB .SEARCH ,SEARCH-ON-GROUND ;1>>>>>>)>
|
||||
<COND (<NOT <0? <FIND-RES-COUNT .RES>>>
|
||||
<RETURN>)
|
||||
(<AND <NOT <BTST .SEARCH ,SEARCH-ALL>>
|
||||
<NOT .LOSING?>>
|
||||
<COND (<AND <SET GLBS <LEXV-WORD ,TLEXV>>
|
||||
<OR <T? <WORD-CLASSIFICATION-NUMBER .GLBS>>
|
||||
<T? <WORD-SEMANTIC-STUFF .GLBS>>>>
|
||||
<SET LOSING? T> ;"not a sample command"
|
||||
<AGAIN>)
|
||||
(<AND <BAND ,SEARCH-MUST-HAVE .SEARCH>
|
||||
<NOT <BAND ,SEARCH-MOBY .SEARCH>>>
|
||||
<RFALSE>)>)>
|
||||
<COND (<SET GLBS <GETPT ,HERE ,P?GLOBAL>>
|
||||
<COND (T ;<CHECK-EXTENDED?>
|
||||
<SET N </ <PTSIZE .GLBS>:FIX 2>>)
|
||||
;(T <SET N <- <PTSIZE .GLBS>:FIX 1>>)>
|
||||
<REPEAT (O:OBJECT)
|
||||
<COND (<L? <SET N <- .N 1>> 0>
|
||||
<RETURN>)
|
||||
(<NOT <SET CONT?
|
||||
<MATCH-OBJECT
|
||||
<COND (T ;<CHECK-EXTENDED?>
|
||||
<SET O <ZGET .GLBS .N>>)
|
||||
;(T <SET O <GETB .GLBS .N>>)>
|
||||
,FINDER T>>>
|
||||
<RETURN>)
|
||||
(<AND <FIRST? .O>
|
||||
<ZAPPLY ,SEARCH-IN-LG? .O>
|
||||
<NOT <0? <ANDB .SEARCH ,SEARCH-OFF-GROUND>>>>
|
||||
<COND
|
||||
(<NOT
|
||||
<SET CONT?
|
||||
<FIND-DESCENDANTS .O ,FD-INCLUDE? ;1>>>
|
||||
<RETURN>)>)>>)>
|
||||
<COND (<AND .CONT?
|
||||
<NOT <EXCLUDE-HERE-OBJECT?>>>
|
||||
<SET CONT? <MATCH-OBJECT ,HERE ,FINDER T>>)>
|
||||
<COND (<AND .CONT? <GETP ,HERE ,P?THINGS>>
|
||||
<SET CONT? <ZAPPLY ,TEST-THINGS ,HERE ,FINDER>>)>
|
||||
<COND (<NOT <0? <FIND-RES-COUNT .RES>>>
|
||||
<SET CONT? <>>)>
|
||||
<COND (.CONT?
|
||||
<SET CONT?
|
||||
<FIND-DESCENDANTS ,GLOBAL-OBJECTS
|
||||
<FD-FLAG FD-NEST? ,FD-INCLUDE?
|
||||
<NOT <0? <ANDB .SEARCH ,SEARCH-OFF-GROUND ;2>>>>
|
||||
;<COND (<BTST .SEARCH 2> 5) (T 1)>>>)>
|
||||
<COND (<AND .CONT?
|
||||
<0? <FIND-RES-COUNT .RES>:FIX>
|
||||
;<BTST .SEARCH ,SEARCH-ADJACENT>
|
||||
<SET GLBS <GETP ,HERE ,P?ADJACENT>>>
|
||||
<SET N <GETB .GLBS 0>>
|
||||
;<SET LOSING? ,HERE>
|
||||
<REPEAT ((SCH <ANDB .SEARCH <XORB -1 ,SEARCH-ADJACENT>>))
|
||||
<COND (<T? <GETB .GLBS .N>> ;"room visible now?"
|
||||
;<SETG HERE <GETB .GLBS <SET N <- .N 1>>>>
|
||||
<FIND-OBJECTS .SCH <GETB .GLBS <SET N <- .N 1>>>>)
|
||||
(T
|
||||
<SET N <- .N 1>>)>
|
||||
<COND (<L? <SET N <- .N 1>> 1>
|
||||
<RETURN>)>>
|
||||
;<SETG HERE .LOSING?>
|
||||
<COND (<NOT <0? <FIND-RES-COUNT .RES>:FIX>>
|
||||
<SET CONT? <>>)>)>
|
||||
<COND
|
||||
(<AND .CONT?
|
||||
<0? <FIND-RES-COUNT .RES>:FIX>
|
||||
<ZAPPLY ,MOBY-FIND? .SEARCH>>
|
||||
<REPEAT ((OBJ 1))
|
||||
<COND (<AND <NOT <FSET? .OBJ ,INVISIBLE>>
|
||||
;<NOT <IN? .OBJ ,ROOMS>>>
|
||||
<COND (<NOT <MATCH-OBJECT .OBJ ,FINDER T>>
|
||||
<RETURN>)>)>
|
||||
<COND (<G? <SET OBJ <+ .OBJ 1>> ,LAST-OBJECT>
|
||||
<RETURN>)>>)>>)>
|
||||
;<COND (<AND <L? 1 <FIND-RES-COUNT .RES>:FIX>
|
||||
<FIND-OF ,FINDER>>
|
||||
<MATCH-OF-OBJECTS .RES>)>
|
||||
<1? <FIND-RES-COUNT .RES>:FIX>>
|
||||
|
||||
<END-SEGMENT>
|
||||
<END-DEFINITIONS>
|
|
@ -0,0 +1,271 @@
|
|||
|
||||
<INCLUDE "BASEDEFS" "FIND" "PDEFS">
|
||||
<ADJ-SYNONYM LARGE HUGE BIG GIANT GIGANTIC TREMENDOUS MIGHTY MASSIVE ENORMOUS>
|
||||
<ADJ-SYNONYM SMALL SMALLER TINY TINIER LITTLE PETITE TEENSY WEENSY>
|
||||
<GLOBAL LIT T>
|
||||
<GLOBAL MOVES 0>
|
||||
<GLOBAL SCORE 0>
|
||||
<GLOBAL HERE:OBJECT BANQUET-HALL>
|
||||
<OBJECT GLOBAL-OBJECTS (DESC "it") (FLAGS INVISIBLE TOUCHBIT SURFACEBIT
|
||||
TRYTAKEBIT OPENBIT SEARCHBIT TRANSBIT WEARBIT ONBIT LIGHTBIT RLANDBIT WORNBIT
|
||||
INTEGRALBIT VEHBIT OUTSIDEBIT CONTBIT VOWELBIT LOCKEDBIT NDESCBIT DOORBIT
|
||||
ACTORBIT PARTBIT INBIT FEMALEBIT KLUDGEBIT DROPBIT BURNBIT ORBBIT FLAMEBIT
|
||||
NALLBIT KEYBIT UNDERGROUNDBIT REDESCBIT)>
|
||||
<OBJECT LOCAL-GLOBALS (LOC GLOBAL-OBJECTS) (DESC "it")>
|
||||
<OBJECT ROOMS (DESC "it")>
|
||||
<OBJECT INTNUM (LOC GLOBAL-OBJECTS) (DESC "number") (SYNONYM NUMBER NUMBERS
|
||||
INT.NUM) (ADJECTIVE INT.NUM INT.TIM) (ACTION INTNUM-F)>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<DEFINE-ROUTINE INTNUM-F>
|
||||
<END-SEGMENT>
|
||||
<OBJECT IT (LOC GLOBAL-OBJECTS) (SYNONYM IT) (DESC "it") (FLAGS VOWELBIT
|
||||
NARTICLEBIT TOUCHBIT)>
|
||||
<OBJECT HIM (LOC GLOBAL-OBJECTS) (SYNONYM HIM HIMSELF) (DESC "him") (FLAGS
|
||||
NARTICLEBIT TOUCHBIT)>
|
||||
<OBJECT HER (LOC GLOBAL-OBJECTS) (SYNONYM HER HERSELF) (DESC "her") (FLAGS
|
||||
NARTICLEBIT TOUCHBIT)>
|
||||
<OBJECT LEFT-RIGHT (LOC GLOBAL-OBJECTS) (DESC "that way") (SYNONYM LEFT RIGHT)
|
||||
(FLAGS NARTICLEBIT) (ACTION LEFT-RIGHT-F)>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<DEFINE-ROUTINE LEFT-RIGHT-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT CASTLE>
|
||||
<OBJECT GRUE (LOC GLOBAL-OBJECTS) (SYNONYM GRUE GRUES) (ADJECTIVE LURKING
|
||||
SINISTER HUNGRY SILENT) (DESC "lurking grue") (RESEARCH
|
||||
"\"The grue was once a sinister, lurking presence in the dark places of the
|
||||
earth. Its favorite diet was adventurers, but its insatiable appetite was
|
||||
tempered by its fear of light. No grue was ever seen by the light of day,
|
||||
and few ever survived its fearsome jaws to tell the tale.\"|
|
||||
The encyclopedia goes on to say, \"Grues were eradicated from the face of
|
||||
the world during the time of Entharion, many by his own hand and his legendary
|
||||
blade Grueslayer. Although it has now been many a century since the last grue
|
||||
sighting, old hags still delight in scaring children by telling them that
|
||||
grues still lurk in the bottomless pits of the Empire, and will one day lurk
|
||||
forth again.\"") (ACTION GRUE-F)>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<DEFINE-ROUTINE GRUE-F>
|
||||
<OBJECT SAILOR (LOC GLOBAL-OBJECTS) (DESC "sailor") (SYNONYM SAILOR) (ACTION
|
||||
SAILOR-F)>
|
||||
<DEFINE-ROUTINE SAILOR-F>
|
||||
<OBJECT GLOBAL-SLEEP (LOC GLOBAL-OBJECTS) (DESC "sleep") (SYNONYM SLEEP NAP
|
||||
SNOOZE) (FLAGS NARTICLEBIT) (ACTION GLOBAL-SLEEP-F)>
|
||||
<DEFINE-ROUTINE GLOBAL-SLEEP-F>
|
||||
<OBJECT LULLABY (LOC GLOBAL-OBJECTS) (DESC "lullaby") (SYNONYM LULLABY LULLABYE
|
||||
SONG) (ACTION LULLABY-F)>
|
||||
<DEFINE-ROUTINE LULLABY-F>
|
||||
<OBJECT GROUND (LOC GLOBAL-OBJECTS) (SYNONYM FLOOR GROUND SAND) (SDESC "ground"
|
||||
) (ACTION GROUND-F)>
|
||||
<DEFINE-ROUTINE GROUND-F>
|
||||
<DEFINE-ROUTINE SET-GROUND-DESC>
|
||||
<OBJECT GLOBAL-HOLE (LOC GLOBAL-OBJECTS) (DESC "hole") (SYNONYM HOLE) (ACTION
|
||||
GLOBAL-HOLE-F)>
|
||||
<DEFINE-ROUTINE GLOBAL-HOLE-F>
|
||||
<OBJECT WALL (LOC GLOBAL-OBJECTS) (DESC "wall") (SYNONYM WALL WALLS) (ADJECTIVE
|
||||
NORTH NE EAST SE SOUTH SW WEST NW REAR FAR) (FLAGS NDESCBIT TOUCHBIT) (ACTION
|
||||
WALL-F)>
|
||||
<DEFINE-ROUTINE WALL-F>
|
||||
<DEFINE-ROUTINE PASSAGE-THERE>
|
||||
<DEFINE-ROUTINE REPELLED>
|
||||
<OBJECT GLOBAL-PASSAGE (LOC GLOBAL-OBJECTS) (DESC "passage") (SYNONYM PASSAGE
|
||||
PASSAGEWAY TUNNEL) (ADJECTIVE GLOOMY DARK SECRET HIDDEN WIDE NARROW LOW STEEP
|
||||
SLOPING DUSTY UNEVEN WINDING FORBIDDING GRAVELLY HALF-BURIED HIGHWAY POORLY-DUG
|
||||
) (ACTION GLOBAL-PASSAGE-F)>
|
||||
<DEFINE-ROUTINE GLOBAL-PASSAGE-F>
|
||||
<OBJECT CEILING (LOC GLOBAL-OBJECTS) (FLAGS NDESCBIT TOUCHBIT) (DESC "ceiling")
|
||||
(SYNONYM CEILING ROOF) (ADJECTIVE LOW HIGH) (ACTION CEILING-F)>
|
||||
<DEFINE-ROUTINE CEILING-F>
|
||||
<OBJECT SLIME (LOC LOCAL-GLOBALS) (DESC "slime") (SYNONYM SLIME) (ADJECTIVE
|
||||
THICK BLACK) (FLAGS NARTICLEBIT) (ACTION SLIME-F)>
|
||||
<DEFINE-ROUTINE SLIME-F>
|
||||
<OBJECT WATER (LOC GLOBAL-OBJECTS) (DESC "water") (SYNONYM WATER WATERS GLOOP
|
||||
GLOOPS) (ADJECTIVE ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE INT.NUM) (FLAGS
|
||||
NARTICLEBIT) (GENERIC G-VIAL-WATER-F) (OWNER <>) (ACTION WATER-F)>
|
||||
<DEFINE-ROUTINE WATER-F>
|
||||
<DEFINE-ROUTINE FIND-WATER>
|
||||
<OBJECT SMALL-VIAL-WATER (DESC "water in the small vial") (SYNONYM WATER GLOOP
|
||||
GLOOPS) (ADJECTIVE ONE TWO THREE FOUR INT.NUM) (FLAGS NARTICLEBIT) (GENERIC
|
||||
G-VIAL-WATER-F) (ACTION VIAL-WATER-F)>
|
||||
<OBJECT LARGE-VIAL-WATER (DESC "water in the large vial") (SYNONYM WATER GLOOP
|
||||
GLOOPS) (ADJECTIVE ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE INT.NUM) (FLAGS
|
||||
NARTICLEBIT) (GENERIC G-VIAL-WATER-F) (ACTION VIAL-WATER-F)>
|
||||
<DEFINE-ROUTINE VIAL-WATER-F>
|
||||
<DEFINE-ROUTINE G-VIAL-WATER-F>
|
||||
<CONSTANT BODY-PART-OWNERS <TABLE (PURE LENGTH) PROTAGONIST DIMWIT JESTER
|
||||
EXECUTIONER SICKLY-WITCH PRICKLY-WITCH>>
|
||||
<OBJECT HANDS (LOC GLOBAL-OBJECTS) (SYNONYM HANDS HAND PALM FINGER FINGERS) (
|
||||
ADJECTIVE BARE YOUR) (DESC "hands") (OWNER BODY-PART-OWNERS) (FLAGS NDESCBIT
|
||||
PLURALBIT TOUCHBIT PARTBIT) (ACTION HANDS-F)>
|
||||
<DEFINE-ROUTINE HANDS-F>
|
||||
<DEFINE-ROUTINE OPEN-SECRET-PASSAGE?>
|
||||
<OBJECT FEET (LOC GLOBAL-OBJECTS) (SYNONYM FEET FOOT TOE TOES) (ADJECTIVE YOUR)
|
||||
(DESC "feet") (OWNER BODY-PART-OWNERS) (FLAGS NDESCBIT PLURALBIT TOUCHBIT
|
||||
PARTBIT) (ACTION FEET-F)>
|
||||
<DEFINE-ROUTINE FEET-F>
|
||||
<OBJECT HEAD (LOC GLOBAL-OBJECTS) (DESC "head") (SYNONYM HEAD) (OWNER
|
||||
BODY-PART-OWNERS) (FLAGS PARTBIT)>
|
||||
<OBJECT EYES (LOC GLOBAL-OBJECTS) (DESC "eyes") (SYNONYM EYE EYES) (ADJECTIVE
|
||||
MY MINE ORACLE\'S AMULET\'S FIRST SECOND THIRD FOURTH ONE TWO THREE FOUR) (
|
||||
OWNER BODY-PART-OWNERS) (FLAGS PLURALBIT PARTBIT) (ACTION EYES-F)>
|
||||
<DEFINE-ROUTINE EYES-F>
|
||||
<OBJECT NOSE (LOC GLOBAL-OBJECTS) (DESC "nose") (SYNONYM NOSE NOSTRIL) (
|
||||
ADJECTIVE YOUR) (OWNER BODY-PART-OWNERS) (FLAGS PARTBIT) (ACTION NOSE-F)>
|
||||
<DEFINE-ROUTINE NOSE-F>
|
||||
<OBJECT MOUTH (LOC GLOBAL-OBJECTS) (DESC "mouth") (SYNONYM MOUTH) (ADJECTIVE
|
||||
YOUR) (OWNER BODY-PART-OWNERS) (FLAGS PARTBIT) (ACTION MOUTH-F)>
|
||||
<DEFINE-ROUTINE MOUTH-F>
|
||||
<OBJECT PROTAGONIST (LOC BANQUET-HALL) (DESC "self") (SIZE 1) (FLAGS NDESCBIT
|
||||
TRANSBIT SEARCHBIT)>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT CASTLE>
|
||||
<OBJECT ME (LOC GLOBAL-OBJECTS) (SYNONYM ME MYSELF SELF) (DESC "yourself") (
|
||||
FLAGS TOUCHBIT NARTICLEBIT) (RESEARCH
|
||||
"Son of a gun! There's no entry about you! This is one worthless
|
||||
encyclopedia, huh? Why, you're about as famous as they come! At
|
||||
least a third of the people in your village have heard of you, for
|
||||
instance...") (ACTION ME-F)>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<DEFINE-ROUTINE ME-F>
|
||||
<OBJECT GLOBAL-HERE (LOC GLOBAL-OBJECTS) (DESC "room") (SYNONYM ROOM PLACE
|
||||
LOCATION!-PDEFS!-PACKAGE HALL AREA THERE HERE) (ACTION GLOBAL-HERE-F)>
|
||||
<DEFINE-ROUTINE GLOBAL-HERE-F>
|
||||
<OBJECT GLOBAL-BLDG (LOC LOCAL-GLOBALS) (DESC "building") (SYNONYM BUILDING
|
||||
CLUSTER) (ADJECTIVE NEW SMALL STONE IMPRESSIVE) (ACTION GLOBAL-BLDG-F)>
|
||||
<DEFINE-ROUTINE GLOBAL-BLDG-F>
|
||||
<OBJECT ARCH (LOC LOCAL-GLOBALS) (DESC "arch") (SYNONYM ARCH ARCHWAY) (
|
||||
ADJECTIVE STONE CRUMBLING) (FLAGS VOWELBIT) (ACTION ARCH-F)>
|
||||
<DEFINE-ROUTINE ARCH-F>
|
||||
<OBJECT WINDOW (LOC LOCAL-GLOBALS) (DESC "window") (SYNONYM WINDOW WINDOWS
|
||||
GLASS PANE PANES) (ADJECTIVE NARROW WIDER SLITTED GLASS BROKEN WINDOW) (FLAGS
|
||||
NDESCBIT) (ACTION WINDOW-F)>
|
||||
<DEFINE-ROUTINE WINDOW-F>
|
||||
<OBJECT LOCK-OBJECT (LOC LOCAL-GLOBALS) (DESC "lock") (SYNONYM LOCK KEYHOLE
|
||||
HOLE) (ADJECTIVE LARGE BASIC COMBINATION KEY) (ACTION LOCK-OBJECT-F)>
|
||||
<DEFINE-ROUTINE LOCK-OBJECT-F>
|
||||
<OBJECT SIGN (LOC LOCAL-GLOBALS) (DESC "sign") (SYNONYM SIGN) (ADJECTIVE LARGE
|
||||
EYE-CATCHING) (FLAGS READBIT) (ACTION SIGN-F)>
|
||||
<DEFINE-ROUTINE SIGN-F>
|
||||
<OBJECT STAIRS (LOC LOCAL-GLOBALS) (DESC "stair") (SYNONYM FLIGHT STAIR STAIRS
|
||||
STAIRWAY STEP STEPS STAIRCASE GANGWAY) (ADJECTIVE STEEP OMINOUS DARK WIDE STONE
|
||||
CIRCULAR WINDING SPIRAL COBWEBBY CRUDE FORBIDDING DECREPIT) (ACTION STAIRS-F)>
|
||||
<DEFINE-ROUTINE STAIRS-F>
|
||||
<OBJECT FIXED-LADDER (LOC LOCAL-GLOBALS) (DESC "ladder") (SYNONYM LADDER) (
|
||||
ADJECTIVE RICKETY) (ACTION FIXED-LADDER-F)>
|
||||
<DEFINE-ROUTINE FIXED-LADDER-F>
|
||||
<OBJECT BONES (LOC LOCAL-GLOBALS) (OWNER BONES) (DESC "pile of old bones") (
|
||||
SYNONYM BONE BONES PILE CREATURE ADVENTURER SKELETON SKELETONS) (ADJECTIVE
|
||||
ADVENTURER CREATURE OLD) (FLAGS NDESCBIT) (ACTION BONES-F)>
|
||||
<DEFINE-ROUTINE BONES-F>
|
||||
<DEFINE-ROUTINE CLEAR-BORDER>
|
||||
<DEFINE-ROUTINE ADJUST-TEXT-WINDOW>
|
||||
<DEFINE-ROUTINE SPLIT-BY-PICTURE>
|
||||
<DEFINE-ROUTINE INIT-SL-WITH-SPLIT>
|
||||
<REPLACE-DEFINITION STATUS-LINE <ROUTINE INIT-STATUS-LINE>>
|
||||
<DEFINE-ROUTINE SET-BORDER>
|
||||
<DEFINE-ROUTINE PRINT-SPACES>
|
||||
<CONSTANT SLINE <ITABLE NONE 41>>
|
||||
<GLOBAL OLD-HERE <>>
|
||||
<GLOBAL OLD-REGION <>>
|
||||
<GLOBAL SL-SCORE -1>
|
||||
<GLOBAL WIDTH 0>
|
||||
<GLOBAL COMPASS-CHANGED T>
|
||||
<CONSTANT TITLE-SCREEN-PICTURE 1>
|
||||
<GLOBAL ACTIVE-MOUSE <>>
|
||||
<GLOBAL CURRENT-SPLIT <>>
|
||||
<DEFINE-ROUTINE UPDATE-STATUS-LINE>
|
||||
<CONSTANT COMPASS-PICSET-TBL <TABLE N-HL NE-HL E-HL SE-HL S-HL SW-HL W-HL NW-HL
|
||||
N-UNHL NE-UNHL E-UNHL SE-UNHL S-UNHL SW-UNHL W-UNHL NW-UNHL U-BOX D-BOX
|
||||
BOX-COVER 0>>
|
||||
<DEFINE-ROUTINE DRAW-COMPASS-ROSE>
|
||||
<DEFINE-ROUTINE SHOW-DIRECTION?>
|
||||
<DEFINE-ROUTINE COMPASS-CLICK>
|
||||
<DEFINE-ROUTINE MAC-CLICK>
|
||||
<CONSTANT TANGENT-VALUE 41>
|
||||
<DEFINE-ROUTINE MAC-II-CLICK>
|
||||
<DEFINE-ROUTINE SAY-HERE>
|
||||
<DEFINE-ROUTINE CENTER-1>
|
||||
<DEFINE-ROUTINE CENTER-2>
|
||||
<DEFINE-ROUTINE CENTER-3>
|
||||
<DEFINE-ROUTINE TOUCHING?>
|
||||
<DEFINE-ROUTINE HANDLE>
|
||||
<DEFINE-ROUTINE CANT-SEE>
|
||||
<DEFINE-ROUTINE PRSO-PRINT>
|
||||
<DEFINE-ROUTINE PRSI-PRINT>
|
||||
<DEFINE-ROUTINE CANT-VERB-A-PRSO>
|
||||
<DEFINE-ROUTINE TELL-HIT-HEAD>
|
||||
<DEFINE-ROUTINE OPEN-CLOSED>
|
||||
<DEFINE-ROUTINE CANT-REACH>
|
||||
<DEFINE-ROUTINE DO-FIRST>
|
||||
<DEFINE-ROUTINE NOT-IN>
|
||||
<DEFINE-ROUTINE PART-OF>
|
||||
<DEFINE-ROUTINE RECOGNIZE>
|
||||
<DEFINE-ROUTINE PRONOUN>
|
||||
<DEFINE-ROUTINE HIT-ANY-KEY>
|
||||
<DEFINE-ROUTINE LOCKED-UNLOCKED>
|
||||
<DEFINE-ROUTINE CANT-TURN>
|
||||
<DEFINE-ROUTINE YOU-MUST-TELL-ME>
|
||||
<DEFINE-ROUTINE GRUE-PIT-WARNING>
|
||||
<DEFINE-ROUTINE DARK-DEATH>
|
||||
<CONSTANT TOO-DARK "It's too dark to see a thing.">
|
||||
<CONSTANT YNH "You're not holding">
|
||||
<CONSTANT THERES-NOTHING "There's nothing ">
|
||||
<CONSTANT YOU-SEE "You can see">
|
||||
<CONSTANT IT-SEEMS-THAT "It seems that">
|
||||
<CONSTANT YOU-CANT-SEE-ANY "[You can't see any ">
|
||||
<CONSTANT YOU-CANT "You can't ">
|
||||
<CONSTANT YOULL-HAVE-TO "You'll have to ">
|
||||
<CONSTANT LOOK-AROUND "Look around you.|">
|
||||
<CONSTANT CANT-FROM-HERE "You can't do that from here.|">
|
||||
<CONSTANT HOLDING-IT "You're holding it!|">
|
||||
<CONSTANT PERIOD-CR ".|">
|
||||
<CONSTANT ELLIPSIS "...||">
|
||||
<CONSTANT FAILED "Failed.|">
|
||||
<CONSTANT OK "Okay.|">
|
||||
<CONSTANT HUH "Huh?|">
|
||||
<CONSTANT NOTHING-HAPPENS "Nothing happens.|">
|
||||
<CONSTANT ALREADY-IS "It already is!|">
|
||||
<CONSTANT NOTHING-NEW "This reveals nothing new.|">
|
||||
<CONSTANT ONLY-BLACKNESS "You see only blackness.|">
|
||||
<CONSTANT NO-VERB "[There was no verb in that sentence!]|">
|
||||
<CONSTANT WEARING-IT "You're wearing it!|">
|
||||
<CONSTANT YACHT-MOORED "; the royal yacht is moored at the dock">
|
||||
<CONSTANT WHICH-WATER
|
||||
"[You'll have to specify which water you mean by referring to the vial
|
||||
that contains it.]|">
|
||||
<CONSTANT MEGABOZ-CEILING-DESC
|
||||
"In the center of the ceiling, a small trap door is visible.">
|
||||
<CONSTANT CELL-WALL-DESC "Thick cobwebs obscure the rear wall.">
|
||||
<CONSTANT POORLY-CONFIGURED
|
||||
"You nearly make it, but the branches are just too poorly configured for
|
||||
climbing.|">
|
||||
<CONSTANT CANNOT-TRAVEL "\"I regret that I cannot travel that way.\"|">
|
||||
<CONSTANT ANSWER-MY-RIDDLE "\"You'll have to answer my riddle first!\"|">
|
||||
<CONSTANT SOME-LIGHT "You can see some light through the crack.|">
|
||||
<CONSTANT TYPE-A-NUMBER "Please type a number between 1 and ">
|
||||
<CONSTANT DROWN " Since you have no diving gear, and you are not amphibious, you drown
|
||||
in a swift but still unpleasant fashion.">
|
||||
<CONSTANT FUDGE "A faint smell of fudge hangs in the air.">
|
||||
<CONSTANT TALK-TO-BROGMOID
|
||||
"The brogmoid could no more hear your shouting than you could hear the
|
||||
shouting of a bacterium.|">
|
||||
<CONSTANT ALREADY-AT "You're already at the ">
|
||||
<CONSTANT WITCH-REMOVES-J
|
||||
" Immediately, the witches begin beating at the jester with brushes and
|
||||
broomsticks. \"Scat, you filthy jester, scat!\" He vanishes hastily.|">
|
||||
<CONSTANT BY-THAT-NAME "There's no one here by that name.|">
|
||||
<CONSTANT NOTHING-IN-REACH "You reach in as far as you can, but feel nothing.|"
|
||||
>
|
||||
<CONSTANT WONT-BUDGE "It won't budge.|">
|
||||
<CONSTANT COOK-DESC
|
||||
"garbed in a white apron and wearing a puffy white chef's hat.">
|
||||
<CONSTANT BOOKKEEPER-DESC
|
||||
"is hunched over one of the desks, wearing suspenders, a bow tie, thick
|
||||
eyeglasses, and a green visor.">
|
||||
<CONSTANT ERE-YOU-PASS
|
||||
"\"'Ere you pass to the west, you must first pass this test! Show me an object
|
||||
which no one has ever seen before and which no one will ever see again!\"|">
|
||||
<CONSTANT CARPENTERS
|
||||
"Not a chance -- unless you have a team of carpenters in your pocket.|">
|
||||
<CONSTANT DEEPLY-ROOTED "The spenseweed is deeply rooted.|">
|
||||
<END-SEGMENT>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,187 @@
|
|||
"GRAM file: imitates old parser and worth an ounce of cure.
|
||||
Copyright (C) 1988 Infocom, Inc. All rights reserved."
|
||||
|
||||
<USE "LALR" "PSTACK" "REDS">
|
||||
|
||||
<IFFLAG (IN-ZILCH
|
||||
<USE "ZILCH">)
|
||||
(T <USE "ZIL">)>
|
||||
|
||||
<INCLUDE "SYMBOLS" "BASEDEFS" "LALRDEFS">
|
||||
|
||||
"TERMINALS are defined in DEFS, so they'll be around for compiling
|
||||
stuff. This resets everything else, so we can regenerate the grammar."
|
||||
<RESET-SYMBOLS ;"!-SYMBOLS!-PACKAGE">
|
||||
|
||||
<ADD-WORD END.OF.INPUT END-OF-INPUT>
|
||||
<ADD-WORD "." END-OF-INPUT>
|
||||
<ADD-WORD "?" END-OF-INPUT>
|
||||
<ADD-WORD "!" END-OF-INPUT>
|
||||
<ADD-WORD "THEN" END-OF-INPUT>
|
||||
|
||||
<ADD-WORD ONE NOUN>
|
||||
<ADD-WORD BUT PREP>
|
||||
<ADD-WORD NOT PREP>
|
||||
<ADD-WORD EXCEPT PREP>
|
||||
|
||||
<COMPILATION-FLAG-DEFAULT P-PS-COMMA <>>
|
||||
<ADD-WORD AND <IFFLAG (P-PS-COMMA COMMA) (T MISCWORD)>>
|
||||
;<ADD-WORD OR <IFFLAG (P-PS-COMMA COMMA) (T MISCWORD)>>
|
||||
<ADD-WORD "," <IFFLAG (P-PS-COMMA COMMA) (T MISCWORD)>>
|
||||
|
||||
<COMPILATION-FLAG-DEFAULT P-PS-APOSTR <>>
|
||||
<ADD-WORD "'" <IFFLAG (P-PS-APOSTR APOSTR) (T MISCWORD)>>
|
||||
|
||||
<COMPILATION-FLAG-DEFAULT P-PS-OFWORD <>>
|
||||
<ADD-WORD OF <IFFLAG (P-PS-OFWORD OFWORD) (T MISCWORD ;PREP)>>
|
||||
|
||||
<COMPILATION-FLAG-DEFAULT P-PS-THEWORD <>>
|
||||
<ADD-WORD THE <IFFLAG (P-PS-THEWORD ARTICLE) (T MISCWORD)>>
|
||||
|
||||
<ADD-WORD FROM PREP>
|
||||
<ADD-WORD IN PREP>
|
||||
<ADD-WORD ON PREP>
|
||||
|
||||
<IF-P-PS-ADV
|
||||
<ADD-WORD ONCE ADV>
|
||||
<ADD-WORD TWICE ADV>
|
||||
<ADD-WORD THRICE ADV>
|
||||
<ADD-WORD "DON'T" ADV>>
|
||||
|
||||
<IFFLAG (P-PS-ADV <PRODUCTION RED-SP SP 1 (?PERS S ?ADV)>)
|
||||
(T <PRODUCTION RED-SP SP 1 (?PERS S)>)>
|
||||
|
||||
<PRODUCTION RED-SV S 2 (VP ?PARTICLE)>
|
||||
<PRODUCTION RED-SVN S 2 (VP ?PARTICLE NPP)>
|
||||
<PRODUCTION RED-SVNP S 2 (VP NPP PARTICLE)>
|
||||
|
||||
<PRODUCTION RED-SVPNN S 2 (VP ?PARTICLE NPP NPP)>
|
||||
<PRODUCTION RED-SVNPN S 2 (VP NPP ?PARTICLE NPP)>
|
||||
<PRODUCTION RED-SVPNPN S 2 (VP ?PARTICLE NPP ?PARTICLE NPP)>
|
||||
<PRODUCTION RED-SD S 2 (DIR)>
|
||||
<PRODUCTION RED-SVD S 2 (VP DIR)>
|
||||
|
||||
<IFFLAG (P-BE-VERB
|
||||
<IFFLAG (P-PS-ADV
|
||||
<PRODUCTION RED-VP VP 3 (?CANDO ?ADV VERB ?ADV)>)
|
||||
(T
|
||||
<PRODUCTION RED-VP VP 3 (?CANDO VERB)>)>
|
||||
|
||||
<PRODUCTION RED-CANDO ?CANDO 3 ()
|
||||
(NP)
|
||||
(?QW1 CANDO NP ?NOT)
|
||||
(?QW1 CANDO NOT NP)>)
|
||||
(T
|
||||
<IFFLAG (P-PS-ADV
|
||||
<PRODUCTION RED-VP VP 3 (?ADV VERB ?ADV)>)
|
||||
(T
|
||||
<PRODUCTION RED-VP VP 3 (VERB)>)>)>
|
||||
|
||||
<IFFLAG (P-PS-OFWORD
|
||||
<PRODUCTION RED-PART ?PARTICLE 1 ()
|
||||
(PARTICLE OFWORD)
|
||||
(PARTICLE ?PARTICLE)>)
|
||||
(T
|
||||
<PRODUCTION RED-PART ?PARTICLE 1 ()
|
||||
(PARTICLE MISCWORD ;"OF")
|
||||
(PARTICLE ?PARTICLE)>)>
|
||||
|
||||
<IF-P-PS-ADV <PRODUCTION RED-FCN ?ADV 1 () (ADV)>>
|
||||
|
||||
<IFFLAG (P-PS-COMMA
|
||||
<PRODUCTION RED-NPP NPP 4 (NP)
|
||||
(NPP PP)
|
||||
(NPP COMMA NP)>)
|
||||
(T
|
||||
<PRODUCTION RED-NPP NPP 4 (NP)
|
||||
(NPP PP)
|
||||
(NPP MISCWORD NP)>)>
|
||||
|
||||
<PRODUCTION RED-NP NP 6 (;?DET ADJ* NOUN)>
|
||||
<IFFLAG (P-PS-OFWORD <PRODUCTION RED-OF NP 5 (NP OFWORD NP)>)
|
||||
(T <PRODUCTION RED-OF NP 5 (NP MISCWORD NP)>)>
|
||||
<PRODUCTION RED-QT NP 7 (QUANT)>
|
||||
<PRODUCTION RED-QN NP 5 (QUANT NP)>
|
||||
|
||||
<COMPILATION-FLAG-DEFAULT P-PS-QUOTE <>>
|
||||
<ADD-WORD \" <IFFLAG (P-PS-QUOTE QUOTE) (T MISCWORD)>>
|
||||
<IFFLAG (P-PS-QUOTE
|
||||
<PRODUCTION RED-QUOTE NP 7 (QUOTE)>)
|
||||
(T
|
||||
<PRODUCTION RED-QUOTE NP 7 (MISCWORD)>)>
|
||||
|
||||
<IFFLAG (P-PS-OFWORD
|
||||
<PRODUCTION RED-PP PP 3 (PREP NPP)
|
||||
(PARTICLE NPP)
|
||||
(PREP OFWORD NPP)
|
||||
(PARTICLE OFWORD NPP)>)
|
||||
(T
|
||||
<PRODUCTION RED-PP PP 3 (PREP NPP)
|
||||
(PARTICLE NPP)
|
||||
(PREP MISCWORD;"OF" NPP)
|
||||
(PARTICLE MISCWORD;"OF" NPP)>)>
|
||||
|
||||
<IFFLAG (P-PS-THEWORD
|
||||
<PRODUCTION RED-ADJ ADJ* 8 ()
|
||||
(ADJ ADJ*) ;"switched by SWG"
|
||||
(ARTICLE ADJ*)
|
||||
(POSSESSIVE ADJ*)>)
|
||||
(T
|
||||
<PRODUCTION RED-ADJ ADJ* 8 ()
|
||||
(ADJ ADJ*) ;"switched by SWG"
|
||||
(MISCWORD ADJ*) ;"article"
|
||||
(POSSESSIVE ADJ*)>)>
|
||||
|
||||
<IFFLAG (P-PS-APOSTR
|
||||
<PRODUCTION RED-POSS POSSESSIVE 8 (NP APOSTR MISCWORD) ;"FOO'S"
|
||||
;(ADJ) ;"HER HIS etc.">)
|
||||
(T
|
||||
<PRODUCTION RED-POSS POSSESSIVE 8 (NP MISCWORD MISCWORD) ;"FOO'S"
|
||||
;(ADJ) ;"HER HIS etc.">)>
|
||||
|
||||
<IF-P-BE-VERB
|
||||
|
||||
<PRODUCTION RED-BE-FORM BE-FORM 3 (TOBE)>
|
||||
|
||||
<PRODUCTION RED-SNBN S 2 (NP BE-FORM ?NOT ?BE NPP)>
|
||||
<PRODUCTION RED-SNBA S 2 (NP BE-FORM ?NOT ?BE ADJ)>
|
||||
<PRODUCTION RED-SNBP S 2 (NP BE-FORM ?NOT ?BE PP)>
|
||||
|
||||
<PRODUCTION RED-FCN ?QW1 3 () (QWORD)>
|
||||
|
||||
<PRODUCTION RED-SQBN S 2 (QWORD BE-FORM NP)>
|
||||
;<PRODUCTION RED-SQBA S 2 (QWORD BE-FORM ADJ)>
|
||||
;<PRODUCTION RED-SQBP S 2 (QWORD BE-FORM PP)>
|
||||
|
||||
<PRODUCTION RED-SBNN S 2 (?QW1 BE-FORM NP ?NOT ?BE NPP)
|
||||
(?QW1 BE-FORM NOT NP ?BE NPP)>
|
||||
<PRODUCTION RED-SBNA S 2 (?QW1 BE-FORM NP ?NOT ?BE ADJ)
|
||||
(?QW1 BE-FORM NOT NP ?BE ADJ)>
|
||||
<PRODUCTION RED-SBNP S 2 (?QW1 BE-FORM NP ?NOT ?BE PP)
|
||||
(?QW1 BE-FORM NOT NP ?BE PP)>
|
||||
|
||||
<ADD-WORD BE MISCWORD>
|
||||
<PRODUCTION RED-BE ?BE 3 () (MISCWORD ;"BE")>
|
||||
|
||||
<ADD-WORD NOT MISCWORD>
|
||||
<PRODUCTION RED-NOT ?NOT 3 () (MISCWORD ;"NOT")>
|
||||
<PRODUCTION RED-NOT NOT 3 (MISCWORD ;"NOT")>
|
||||
>
|
||||
|
||||
<IFFLAG (P-PS-COMMA
|
||||
<PRODUCTION RED-PERS ?PERS 2 ()
|
||||
(NPP COMMA)
|
||||
(ASKWORD NPP PARTICLE ;"TO")>)
|
||||
(T
|
||||
<PRODUCTION RED-PERS ?PERS 2 ()
|
||||
(NPP MISCWORD)
|
||||
(ASKWORD NPP PARTICLE ;"TO")>)>
|
||||
|
||||
<PRODUCTION RED-O-NP S 1 (NP) ;"was NPP"
|
||||
(NP PP)>
|
||||
<PRODUCTION RED-O-ADJ S 1 (;ADJ ADJ*)>
|
||||
<PRODUCTION RED-O-PP S 1 (PP)
|
||||
(PARTICLE NP)>
|
||||
|
||||
<STARTING-SYMBOL SP>
|
||||
<MAKE-TABLES <LALR>>
|
|
@ -0,0 +1,406 @@
|
|||
|
||||
<BEGIN-SEGMENT LOWER>
|
||||
<ROOM G-U-HIGHWAY (LOC ROOMS) (REGION "Flatheadia") (DESC
|
||||
"Great Underground Highway") (LDESC
|
||||
"This is the northern terminus of one of the branches of the Great Underground
|
||||
Highway system, one of the ambitious construction projects conceived by King
|
||||
Duncanthrax and executed by the Frobozz Magic Cave Company. A tunnel leads
|
||||
northeast.") (NE TO LOWER-HALL) (SOUTH TO EXIT) (FLAGS RLANDBIT UNDERGROUNDBIT)
|
||||
(MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-5>) (ICON
|
||||
G-U-HIGHWAY-ICON)>
|
||||
<ROOM EXIT (LOC ROOMS) (REGION "Flatheadia") (DESC "Exit") (LDESC
|
||||
"A wide underground road runs north and south. There's an eye-catching sign
|
||||
next to a tunnel leading west.") (WEST TO FIELD-OFFICE) (NORTH TO G-U-HIGHWAY)
|
||||
(SOUTH TO CROSSROADS) (FLAGS RLANDBIT UNDERGROUNDBIT) (GLOBAL SIGN) (MAP-LOC <
|
||||
PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-5>) (ICON EXIT-ICON)>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT FOOZLE>
|
||||
<ROOM CROSSROADS (LOC ROOMS) (REGION "Somewhere Along the GUH") (DESC
|
||||
"Crossroads") (LDESC
|
||||
"You stand at the junction of two underground highways, one north-south
|
||||
and the other east-west. A sign hangs in the center of the junction.") (NORTH
|
||||
TO EXIT) (SOUTH TO TOLL-PLAZA) (EAST TO CAVE-IN) (WEST TO POTHOLES) (FLAGS
|
||||
RLANDBIT UNDERGROUNDBIT) (GLOBAL SIGN) (MAP-LOC <PTABLE FOOZLE-MAP-NUM
|
||||
MAP-GEN-Y-3 MAP-GEN-X-7>) (ICON CROSSROADS-ICON)>
|
||||
<ROOM CAVE-IN (LOC ROOMS) (DESC "Cave-In") (REGION "Somewhere Along the GUH") (
|
||||
LDESC "Just ahead, the roof of the highway tunnel has collapsed, creating a dead
|
||||
end. (Decades of non-maintenance of the Empire's infrastructure are taking
|
||||
their toll.) Your only choice is to return to the west.") (WEST TO CROSSROADS)
|
||||
(OUT TO CROSSROADS) (FLAGS RLANDBIT UNDERGROUNDBIT) (MAP-LOC <PTABLE
|
||||
FOOZLE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-8>) (ACTION CAVE-IN-F)>
|
||||
<DEFINE-ROUTINE CAVE-IN-F>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT PIT-BOMB (LOC LOCAL-GLOBALS) (DESC "anti-pit bomb") (FDESC
|
||||
"Sitting on a piece of rubble is an anti-pit bomb.") (SYNONYM BOMB LABEL) (
|
||||
ADJECTIVE BOTTOMLESS ANTI-PIT) (FLAGS TAKEBIT READBIT VOWELBIT) (TEXT
|
||||
"\"Is your cavern infested with bottomless pits? If so, this anti-pit bomb is
|
||||
the answer to your prayers! Instructions: simply enter the pitted room and
|
||||
throw the bomb. All pit-filling agents are harmless; no protective gear is
|
||||
required!|
|
||||
Another fine product of the Frobozz Magic Bottomless Pit Bomb Company.\"") (
|
||||
ACTION PIT-BOMB-F)>
|
||||
<DEFINE-ROUTINE PIT-BOMB-F>
|
||||
<GLOBAL PIT-BOMB-LOC <>>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT FOOZLE>
|
||||
<ROOM TOLL-PLAZA (LOC ROOMS) (DESC "Toll Plaza") (REGION
|
||||
"Somewhere Along the GUH") (NORTH TO CROSSROADS) (SOUTH TO FISSURE-EDGE IF
|
||||
TOLL-GATE IS OPEN) (FLAGS RLANDBIT UNDERGROUNDBIT) (SYNONYM PLAZA) (ADJECTIVE
|
||||
TOLL) (GLOBAL SIGN) (MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-7>) (
|
||||
ICON TOLL-PLAZA-ICON) (ACTION TOLL-PLAZA-F)>
|
||||
<DEFINE-ROUTINE TOLL-PLAZA-F>
|
||||
<OBJECT TOLL-BOOTH (LOC TOLL-PLAZA) (DESC "toll booth") (SYNONYM BOOTH) (
|
||||
ADJECTIVE TOLL) (FLAGS NDESCBIT) (ACTION TOLL-BOOTH-F)>
|
||||
<DEFINE-ROUTINE TOLL-BOOTH-F>
|
||||
<OBJECT TOLL-GATE (LOC TOLL-PLAZA) (DESC "toll gate") (SYNONYM GATE) (ADJECTIVE
|
||||
TOLL) (FLAGS NDESCBIT DOORBIT) (ACTION TOLL-GATE-F)>
|
||||
<DEFINE-ROUTINE TOLL-GATE-F>
|
||||
<OBJECT BASKET (LOC TOLL-PLAZA) (DESC "exact change basket") (SYNONYM BASKET) (
|
||||
ADJECTIVE EXACT CHANGE) (FLAGS VOWELBIT NDESCBIT CONTBIT OPENBIT SEARCHBIT) (
|
||||
ACTION BASKET-F)>
|
||||
<DEFINE-ROUTINE BASKET-F>
|
||||
<ROOM FISSURE-EDGE (LOC ROOMS) (DESC "Fissure's Edge") (REGION
|
||||
"Somewhere Along the GUH") (LDESC
|
||||
"To the south, the road is rent by a wide fissure, the reminder of a recent
|
||||
quake. Judging by the footprints in the dust, many travellers have reached
|
||||
this point, only to turn around and head back to the north. The quake has
|
||||
also opened a narrow crack in the eastern wall of the tunnel; you might be
|
||||
able to squeeze into it.") (NORTH TO TOLL-PLAZA) (EAST TO TIGHT-SQUEEZE) (SOUTH
|
||||
SORRY "The fissure is uncrossable.") (DOWN SORRY
|
||||
"A plunge into the fissure would be fatal.") (FLAGS RLANDBIT UNDERGROUNDBIT) (
|
||||
MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-7>) (ICON
|
||||
FISSURES-EDGE-ICON) (THINGS NARROW CRACK FISSURE-CRACK-PS WIDE FISSURE
|
||||
FISSURE-PS)>
|
||||
<DEFINE-ROUTINE FISSURE-PS>
|
||||
<DEFINE-ROUTINE FISSURE-CRACK-PS>
|
||||
<ROOM TIGHT-SQUEEZE (LOC ROOMS) (DESC "Tight Squeeze") (REGION
|
||||
"Region: Unknown") (LDESC
|
||||
"You are in a narrow fissure which widens to the west. A cool breeze seems
|
||||
to blow upon you from below.") (WEST TO FISSURE-EDGE) (DOWN TO ORB-ROOM) (
|
||||
SYNONYM FISSURE) (ADJECTIVE NARROW) (FLAGS RLANDBIT UNDERGROUNDBIT) (MAP-LOC <
|
||||
PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-8>)>
|
||||
<ROOM ORB-ROOM (LOC ROOMS) (DESC "Orb Room") (REGION "Region: Unknown") (LDESC
|
||||
"The air is chilly, the walls are covered with ice, and the floor is piled
|
||||
high with crystal spheres of varying sizes and colors; most are chipped or
|
||||
shattered. Your light reveals no visible exits, although a trickle of warm,
|
||||
dry air caresses you from above.") (UP TO TIGHT-SQUEEZE) (OUT TO TIGHT-SQUEEZE)
|
||||
(FLAGS RLANDBIT UNDERGROUNDBIT) (MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-5
|
||||
MAP-GEN-X-9>) (ICON ORB-ROOM-ICON) (THINGS <> ICE ICE-PS)>
|
||||
<DEFINE-ROUTINE ICE-PS>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT MILKY-ORB (LOC ORB-ROOM) (DESC "milky orb") (FDESC
|
||||
"The only intact orbs seem to be a milky orb, a fiery orb, a glittery orb,
|
||||
and a smoky orb.") (SYNONYM ORB) (ADJECTIVE MILKY WHITE) (FLAGS TAKEBIT
|
||||
TRYTAKEBIT) (ACTION ORB-F)>
|
||||
<OBJECT FIERY-ORB (LOC ORB-ROOM) (DESC "fiery orb") (SYNONYM ORB) (ADJECTIVE
|
||||
FIERY ORANGE) (FLAGS TAKEBIT TRYTAKEBIT NDESCBIT) (ACTION ORB-F)>
|
||||
<OBJECT SMOKY-ORB (LOC ORB-ROOM) (DESC "smoky orb") (SYNONYM ORB) (ADJECTIVE
|
||||
SMOKY GRAY) (FLAGS TAKEBIT TRYTAKEBIT NDESCBIT) (ACTION ORB-F)>
|
||||
<OBJECT GLITTERY-ORB (LOC ORB-ROOM) (DESC "glittery orb") (SYNONYM ORB) (
|
||||
ADJECTIVE GLITTERY GOLD GOLDEN) (FLAGS TAKEBIT TRYTAKEBIT NDESCBIT) (ACTION
|
||||
ORB-F)>
|
||||
<DEFINE-ROUTINE ORB-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT FOOZLE>
|
||||
<ROOM POTHOLES (LOC ROOMS) (DESC "Potholes") (REGION "Somewhere Along the GUH")
|
||||
(LDESC "The road, which runs east to west, is in bad shape here, pitted with
|
||||
holes and ruts.") (EAST TO CROSSROADS) (WEST TO REST-STOP) (FLAGS RLANDBIT
|
||||
UNDERGROUNDBIT) (MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-6>)>
|
||||
<ROOM REST-STOP (LOC ROOMS) (DESC "Rest Stop") (REGION
|
||||
"Somewhere Along the GUH") (LDESC
|
||||
"By the north side of the road is a rest stop, closed and boarded up. The road
|
||||
continues east and southwest.") (EAST TO POTHOLES) (SW TO FORK) (FLAGS RLANDBIT
|
||||
UNDERGROUNDBIT) (MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-5>) (ICON
|
||||
REST-STOP-ICON) (THINGS REST STOP REST-STOP-PS <> BOARD SHUTTER-PS <> SHUTTER
|
||||
SHUTTER-PS)>
|
||||
<DEFINE-ROUTINE REST-STOP-PS>
|
||||
<DEFINE-ROUTINE SHUTTER-PS>
|
||||
<ROOM FORK (LOC ROOMS) (DESC "Fork") (REGION "Somewhere Along the GUH") (LDESC
|
||||
"The tunnel forks here, with roads leading northeast, west, and southwest.") (
|
||||
NE TO REST-STOP) (WEST TO FISHY-ODOR) (SW TO SALTY-SMELL) (FLAGS RLANDBIT
|
||||
UNDERGROUNDBIT) (MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-4>) (ICON
|
||||
FORK-ICON)>
|
||||
<ROOM FISHY-ODOR (LOC ROOMS) (DESC "Fishy Odor") (REGION "Port Foozle") (LDESC
|
||||
"The tunnel narrows toward a spot of light to the west. The stench of dead,
|
||||
rotting fish hangs in the air.") (EAST TO FORK) (WEST TO FISHING-VILLAGE) (
|
||||
FLAGS RLANDBIT UNDERGROUNDBIT) (MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-4
|
||||
MAP-GEN-X-3>) (ICON FISHY-ODOR-ICON)>
|
||||
<ROOM SALTY-SMELL (LOC ROOMS) (DESC "Salty Smell") (REGION "Port Foozle") (
|
||||
LDESC "The tunnel from the northeast is narrower here, and pervaded with the scent
|
||||
of the sea. You can hear breakers to the southwest.") (NE TO FORK) (SW TO
|
||||
QUILBOZZA-BEACH) (FLAGS RLANDBIT UNDERGROUNDBIT) (MAP-LOC <PTABLE
|
||||
FOOZLE-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-3>)>
|
||||
<ROOM FISHING-VILLAGE (LOC ROOMS) (DESC "Fishing Village") (REGION
|
||||
"Port Foozle") (LDESC
|
||||
"This once-busy port, on the shore of the Great Sea, lies deserted. A tunnel
|
||||
opens to the east, the shoreline can be followed south along the ocean's edge,
|
||||
and a wharf juts into the harbor to the west. A newly constructed stone
|
||||
building lies to the north; an eye-catching sign has been erected next to its
|
||||
entrance.") (EAST TO FISHY-ODOR) (WEST TO WHARF) (SOUTH TO SANDBAR) (NORTH TO
|
||||
INQUISITION) (IN TO INQUISITION) (FLAGS RLANDBIT ONBIT OUTSIDEBIT) (GLOBAL
|
||||
VILLAGE SIGN FLATHEAD-OCEAN WHARF GLOBAL-BLDG) (MAP-LOC <PTABLE FOOZLE-MAP-NUM
|
||||
MAP-GEN-Y-4 MAP-GEN-X-2>) (ICON FISHING-VILLAGE-ICON) (ACTION FISHING-VILLAGE-F
|
||||
)>
|
||||
<DEFINE-ROUTINE FISHING-VILLAGE-F>
|
||||
<DEFINE-ROUTINE I-INQ>
|
||||
<CONSTANT DOABLE-REQUESTS <LTABLE 0 "sing a song" "kick me" "kiss me">>
|
||||
<CONSTANT UNDOABLE-REQUESTS <LTABLE 0 "give me a thousand zorkmids"
|
||||
"give me Ursula Flathead" "send me to Antharia">>
|
||||
<GLOBAL INQ-NUMBER 0>
|
||||
<GLOBAL NUMBER-ON-LINE 0>
|
||||
<GLOBAL NUMBER-TAKEN 0>
|
||||
<GLOBAL INQ-SCORE 25>
|
||||
<ROOM INQUISITION (LOC ROOMS) (DESC "Inquisition") (REGION "Port Foozle") (
|
||||
SOUTH SORRY "A trollish guard blocks the exit. \"No one leave!\"") (OUT SORRY
|
||||
"A trollish guard blocks the exit. \"No one leave!\"") (FLAGS RLANDBIT ONBIT) (
|
||||
GLOBAL SIGN GLOBAL-BLDG) (MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-3
|
||||
MAP-GEN-X-2>) (ACTION INQUISITION-F)>
|
||||
<DEFINE-ROUTINE INQUISITION-F>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT TICKET (LOC INQUISITION) (DESC "ticket") (SYNONYM TICKET NUMBER) (OWNER
|
||||
PROTAGONIST) (FLAGS TAKEBIT READBIT TRYTAKEBIT NDESCBIT BURNBIT) (SIZE 1) (
|
||||
ACTION TICKET-F)>
|
||||
<DEFINE-ROUTINE TICKET-F>
|
||||
<OBJECT BOX (LOC INQUISITION) (DESC "box") (PLURAL "boxes") (FDESC
|
||||
"One of the sinners has apparently dropped a box here. The box has some
|
||||
writing on it.") (SYNONYM BOX WRITING) (ADJECTIVE SMALL) (FLAGS TAKEBIT CONTBIT
|
||||
READBIT SEARCHBIT) (SIZE 3) (CAPACITY 3) (OWNER BOX) (TEXT
|
||||
"\"Squid Repellent! Contents: 1 pellet. Dissolves slowly in water, keeps
|
||||
squid away for hours! Another fine product of the Frobozz Magic Squid
|
||||
Repellent Company.\"")>
|
||||
<OBJECT SQUID-REPELLENT (LOC BOX) (OWNER SQUID-REPELLENT) (DESC
|
||||
"pellet of squid repellent") (SYNONYM PELLET REPELLENT) (ADJECTIVE LARGE SQUID)
|
||||
(FLAGS TAKEBIT) (SIZE 1) (ACTION SQUID-REPELLENT-F)>
|
||||
<DEFINE-ROUTINE SQUID-REPELLENT-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT FOOZLE>
|
||||
<OBJECT EXECUTIONER (LOC INQUISITION) (DESC "executioner") (SYNONYM EXECUTIONER
|
||||
MAN) (FLAGS ACTORBIT VOWELBIT NDESCBIT ANIMATEDBIT) (ACTION EXECUTIONER-F)>
|
||||
<DEFINE-ROUTINE EXECUTIONER-F>
|
||||
<DEFINE-ROUTINE DOABLE-REQUEST>
|
||||
<DEFINE-ROUTINE UNDOABLE-REQUEST>
|
||||
<OBJECT THOUSAND-ZORKMIDS (LOC LOCAL-GLOBALS) (DESC "lots of zorkmids") (
|
||||
SYNONYM ZORKMIDS) (ADJECTIVE HUNDRED THOUSAND MILLION INT.NUM) (FLAGS
|
||||
NARTICLEBIT)>
|
||||
<ROOM WHARF (LOC ROOMS) (DESC "Wharf") (REGION "Port Foozle") (LDESC
|
||||
"This wharf extends into the harbor from a village to the east. Along the
|
||||
north side of the wharf, a building rests on piers over the water.") (EAST TO
|
||||
FISHING-VILLAGE) (NORTH TO CASINO) (WEST SORRY
|
||||
"The wharf ends a few steps to the west.") (FLAGS RLANDBIT ONBIT OUTSIDEBIT) (
|
||||
SYNONYM WHARF) (GLOBAL VILLAGE GLOBAL-BLDG FLATHEAD-OCEAN) (MAP-LOC <PTABLE
|
||||
FOOZLE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-1>) (ICON WHARF-ICON)>
|
||||
<ROOM CASINO (LOC ROOMS) (DESC "Casino") (REGION "Port Foozle") (LDESC
|
||||
"This is the Port Foozle Casino, once a world-famous gambling spot, but
|
||||
now deserted and showing the effects of years of ocean storms. The casino
|
||||
has been heavily looted; only a single card table seems untouched. An exit
|
||||
leads south.") (SOUTH TO WHARF) (OUT TO WHARF) (FLAGS RLANDBIT ONBIT) (SYNONYM
|
||||
CASINO) (GLOBAL GLOBAL-BLDG) (MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-3
|
||||
MAP-GEN-X-1>) (ACTION CASINO-F)>
|
||||
<DEFINE-ROUTINE CASINO-F>
|
||||
<OBJECT DOUBLE-FANUCCI (LOC GLOBAL-OBJECTS) (DESC "Double Fanucci") (SYNONYM
|
||||
FANUCCI FANNUCCI) (ADJECTIVE DOUBLE) (RESEARCH
|
||||
"\"Legend has it that Double Fanucci (or Fannucci) was invented by the deposed
|
||||
Zilbo III in the late seventh century. A game of tremendous complexity and
|
||||
almost infinite rules, King Mumberthrax proclaimed it the national sport of
|
||||
the Empire in 757 GUE. The annual Double Fanucci Championships, held in
|
||||
Borphee during early autumn, frequently leave thousands homeless.\"") (ACTION
|
||||
DOUBLE-FANUCCI-F)>
|
||||
<DEFINE-ROUTINE DOUBLE-FANUCCI-F>
|
||||
<OBJECT CARD-TABLE (LOC CASINO) (DESC "card table") (SYNONYM TABLE CHAIR) (
|
||||
ADJECTIVE CARD) (FLAGS NDESCBIT SURFACEBIT CONTBIT OPENBIT SEARCHBIT VEHBIT) (
|
||||
CAPACITY 50) (ACTION CARD-TABLE-F)>
|
||||
<DEFINE-ROUTINE CARD-TABLE-F>
|
||||
<DEFINE-ROUTINE F-START>
|
||||
<DEFINE-ROUTINE SETUP-CARDS>
|
||||
<CONSTANT F-PICSET-TBL <TABLE F-CARD-BACK F-CARD F-INKBLOTS F-PLUNGERS F-BUGS
|
||||
F-ZURFS F-EARS F-TOPS F-RAIN F-HIVES F-FACES F-MAZES F-LAMPS F-TIME F-BOOKS
|
||||
F-SCYTHES F-FROMPS F-RV-INKBLOTS F-RV-PLUNGERS F-RV-BUGS F-RV-ZURFS F-RV-EARS
|
||||
F-RV-TOPS F-RV-RAIN F-RV-HIVES F-RV-FACES F-RV-MAZES F-RV-LAMPS F-RV-TIME
|
||||
F-RV-BOOKS F-RV-SCYTHES F-RV-FROMPS F-0 F-1 F-2 F-3 F-4 F-5 F-6 F-7 F-8 F-9
|
||||
F-INFINITY F-RV-0 F-RV-1 F-RV-2 F-RV-3 F-RV-4 F-RV-5 F-RV-6 F-RV-7 F-RV-8
|
||||
F-RV-9 F-RV-INFINITY F-GRANOLA F-LOBSTER F-SNAIL F-JESTER F-HOURGLASS F-LIGHT
|
||||
F-BEAUTY F-DEATH F-GRUE 0>>
|
||||
<DEFINE-ROUTINE SETUP-FANUCCI>
|
||||
<CONSTANT F-PIC-LOCS <PTABLE ,F-DISCARD-PIC-LOC ,F-1-PIC-LOC ,F-2-PIC-LOC ,
|
||||
F-3-PIC-LOC ,F-4-PIC-LOC>>
|
||||
<DEFINE-ROUTINE DRAW-CARDS>
|
||||
<CONSTANT PICTURE-CARD-PROB 20>
|
||||
<DEFINE-ROUTINE PICK-RANK>
|
||||
<CONSTANT F-FACE-CARD-PIC-TBL <PTABLE ,F-GRANOLA ,F-LOBSTER ,F-SNAIL ,F-JESTER
|
||||
,F-HOURGLASS ,F-LIGHT ,F-BEAUTY ,F-DEATH ,F-GRUE>>
|
||||
<DEFINE-ROUTINE DISPLAY-OFFSET>
|
||||
<DEFINE-ROUTINE DRAW-CARD>
|
||||
<DEFINE-ROUTINE FANUCCI>
|
||||
<DEFINE-ROUTINE UPDATE-SCORES>
|
||||
<DEFINE-ROUTINE SCORE-CHECK>
|
||||
<GLOBAL J-CARDS 4>
|
||||
<GLOBAL J-DISCARD-FROMP-PROB 0>
|
||||
<GLOBAL F-WIN-COUNT 0>
|
||||
<CONSTANT DRAW-CARDS-TABLE <TABLE 1 1 1 1 1>>
|
||||
<CONSTANT J-LAST-CARD <TABLE 0 0>>
|
||||
<CONSTANT FROMP-SUIT 15>
|
||||
<CONSTANT TREBLED-RANK 11>
|
||||
<DEFINE-ROUTINE J-PLAY>
|
||||
<CONSTANT J-PLAY-TABLE <PTABLE "shrugs. \"Just a simple Borphee Bluff.\""
|
||||
"smiles. \"A devilish Kovalli Hustle, don't you think?\""
|
||||
"shudders. \"Babe would turn over in his grave if he could see my playing.\""
|
||||
"looks satisfied. \"That ought to up the ante toward a Doubleton Duck.\""
|
||||
"resists an urge to spike his cards. \"You fell for my Festeron Finesse! I get Honors!\""
|
||||
"shouts, \"Whangdoogle! Four to the kitty! Minor ruff!\" and massages the resulting torn shoulder muscle."
|
||||
"kicks himself. \"I should've revoked a Singleton in the third frame!\""
|
||||
"snickers at you. \"Bet you didn't see that Segmented Shuffle coming!\""
|
||||
"complains. \"Shy Openers! All I get are Shy Openers!\""
|
||||
"applauds with delight. \"Zilbo's Half-Renege! I love it!\""
|
||||
"sighs. \"I came so close to a Full Foozle Progression.\""
|
||||
"produces two large mallard ducks out of thin air, thus Royal Bidding
|
||||
his play." "takes a third of the deck and burns it. \"Unlimited Singleton Bids for
|
||||
the rest of the game!\""
|
||||
"invokes the Grand Slam clause and reshuffles the deck. \"Slice and Call,\"
|
||||
he claims." "exhales a deep breath. \"I wasn't sure I'd have time for that Inside
|
||||
Duo-Trick.\"" "gulps. \"I came close to having to invoke the Golden Fromp clause!\""
|
||||
"scowls. \"An Unrejuvenated Slamboozle!\" To repent, he changes shape
|
||||
to a hawk, then a milk cow, then a large carpenter ant, and finally back
|
||||
to a jester. \"Full repentance; losses halved,\" he states.">>
|
||||
<CONSTANT J-PLAY-SCORES <PTABLE -10 -78 44 -21 -95 -31 22 -42 34 -56 -4 -28 -16
|
||||
-37 -25 15 -22>>
|
||||
<DEFINE-ROUTINE PICK-PLAY>
|
||||
<DEFINE-ROUTINE UNBOLD-MOVE>
|
||||
<DEFINE-ROUTINE BOLD-MOVE>
|
||||
<DEFINE-ROUTINE PLAY-SELECTED>
|
||||
<DEFINE-ROUTINE F-MOUSE-CARD-PICK>
|
||||
<DEFINE-ROUTINE PRINT-CARD-NAME>
|
||||
<CONSTANT F-PLAY-TABLE <PTABLE "DRAW " "DISCARD " "DIVIDE " "REVERSE " "TRUMP "
|
||||
"UNDERTRUMP " "COMBINE " "PASS " "OVERPASS " "SINGLE-PLAY " "DOUBLE-PLAY "
|
||||
"MUTTONATE " "IONIZE " "CHEAT " "RESIGN ">>
|
||||
<CONSTANT F-PLAY-TABLE-LC <PTABLE "draw" "discard" "divide" "reverse" "trump"
|
||||
"undertrump" "combine" "pass" "overpass" "single-play" "double-play"
|
||||
"muttonate" "ionize" "cheat" "resign">>
|
||||
<CONSTANT RANK-PIC-TBL <PTABLE <> F-4 F-5 F-6 F-7 F-8 F-9 F-0 F-INFINITY F-1
|
||||
F-2 F-3>>
|
||||
<CONSTANT RANK-REV-TBL <PTABLE <> F-RV-4 F-RV-5 F-RV-6 F-RV-7 F-RV-8 F-RV-9
|
||||
F-RV-0 F-RV-INFINITY F-RV-1 F-RV-2 F-RV-3>>
|
||||
<CONSTANT F-RANK-TABLE <PTABLE <> "the Four of" "the Five of" "the Six of"
|
||||
"the Seven of" "the Eight of" "the Nine of" "the Naught of" "Infinite"
|
||||
"Singled" "Doubled" "Trebled" "Granola" "the Lobster" "the Snail" "the Jester"
|
||||
"Time" "Light" "Beauty" "Death" "the Grue">>
|
||||
<CONSTANT SUIT-PIC-TBL <PTABLE <> F-INKBLOTS F-PLUNGERS F-BUGS F-ZURFS F-EARS
|
||||
F-TOPS F-RAIN F-HIVES F-FACES F-MAZES F-LAMPS F-TIME F-BOOKS F-SCYTHES F-FROMPS
|
||||
>>
|
||||
<CONSTANT SUIT-REV-TBL <PTABLE <> F-RV-INKBLOTS F-RV-PLUNGERS F-RV-BUGS
|
||||
F-RV-ZURFS F-RV-EARS F-RV-TOPS F-RV-RAIN F-RV-HIVES F-RV-FACES F-RV-MAZES
|
||||
F-RV-LAMPS F-RV-TIME F-RV-BOOKS F-RV-SCYTHES F-RV-FROMPS>>
|
||||
<CONSTANT F-SUIT-TABLE <PTABLE <> "Inkblots" "Plungers" "Bugs" "Zurfs" "Ears"
|
||||
"Tops" "Rain" "Hives" "Faces" "Mazes" "Lamps" "Time" "Books" "Scythes" "Fromps"
|
||||
>>
|
||||
<CONSTANT F-CARD-TABLE <TABLE <> <> <> <> <> <> <> <> <> <>>>
|
||||
<GLOBAL YOUR-SCORE 0>
|
||||
<GLOBAL J-SCORE 0>
|
||||
<GLOBAL F-PLAYS 0>
|
||||
<DEFINE-ROUTINE CHEAT-RESULT>
|
||||
<DEFINE-ROUTINE F-SCORE>
|
||||
<CONSTANT CHEAT-WINS <PTABLE 3
|
||||
"You catch the jester looking out the window, and take the opportunity to
|
||||
alter the scores." 45 "You distract the jester by faking a muscle cramp." 23
|
||||
"You successfully slip a card out of your sleeve." 19>>
|
||||
<CONSTANT CHEAT-LOSSES <PTABLE 3
|
||||
"The jester seems to doze off for a moment, and you try to take advantage by
|
||||
fudging the scores. However, the jester stirs, and in your haste you help the
|
||||
jester instead of yourself!" -60
|
||||
"The jester catches you marking the cards, and assesses a stiff penalty." -47
|
||||
"You substitute a card from the middle of the deck, but the new card places
|
||||
you in an even worse position!" -33>>
|
||||
<CONSTANT J-RESPONSES <PTABLE "during the middle third of Mumberber!\""
|
||||
"before a New Sun!\"" "in a two-person game!\"" "cries, \"Daring move!\""
|
||||
"looks bored. \"The old Oddzio Gambit.\"" "says, \"A gutsy play!\""
|
||||
"applauds. \"A brilliant Festeron Feint!\""
|
||||
"sneers. \"A transparent maneuver.\""
|
||||
"shakes his head. \"A poorly executed Antharian Attack.\""
|
||||
"exclaims, \"A skillful finesse!\""
|
||||
"is obviously impressed. \"A spectacular Bloodworm Defense!\""
|
||||
"sniffs. \"A weak response.\""
|
||||
"smiles mysteriously. \"An unusual Balsawood Convention!\""
|
||||
"looks impressed. \"That was a stroke of genius!\""
|
||||
"taps his fingers impatiently. \"A typical Egreth Convention.\""
|
||||
"whispers, \"Crude, but effective.\""
|
||||
"tips his hat to you. \"A well-executed Zilbo Standard!\""
|
||||
"looks unimpressed. \"Just a lucky stroke!\""
|
||||
"smirks. \"A poorly timed Forborn Chisel, wouldn't you say?\""
|
||||
"laughs. \"That was a sign of panic on your part, if you ask me.\""
|
||||
"peruses your move. \"Ah, yes. The Accardi Variation. I haven't seen that one in a while.\""
|
||||
"bows his head with respect. \"You're a regular Fanuccimeister, eh?\""
|
||||
"salutes you. \"A well-timed Frotz Factor! Bravo!\""
|
||||
"scratches his head. \"A thoroughly mystifying maneuver.\""
|
||||
"yawns. \"The dependable Zibble Ploy.\""
|
||||
"laughs derisively. \"An amateurish blunder!\""
|
||||
"says, \"A classic Frotzen Ploy.\""
|
||||
"shrugs. \"Oh, well... If people never made mistakes, they wouldn't put
|
||||
erasers on pencils...\""
|
||||
"looks at you with scorn. \"A lukewarm Porridge Variation.\""
|
||||
"blinks. Then blinks again. \"Now I've seen EVERYTHING!\""
|
||||
"nods knowingly. \"An obvious Fublian Gambit.\""
|
||||
"offers you some advice. \"Remember the words of Leo 'the Lip' Flathead: 'Nice
|
||||
guys finish last.'\"" "under Miznian rules!\""
|
||||
"without a note from your doctor!\""
|
||||
"except after a third-level Hamster Substitution!\""
|
||||
"in a coastal city without first eating the rind of a burnt casaba melon!\""
|
||||
"chortles gratingly. \"Who taught you how to play cards? Vanna Flathead?\"">>
|
||||
<CONSTANT F-SCORES <PTABLE 0 0 0 24 10 28 41 -12 -81 37 54 -29 17 66 -35 14 18
|
||||
13 -79 -41 -15 60 64 -99 10 -73 12 -55 -20 -77 -11 -14 0 0 0 0 -38>>
|
||||
<OBJECT BROOM (LOC LOCAL-GLOBALS) (DESC "broom") (SYNONYM BROOM) (SIZE 10) (
|
||||
FLAGS TAKEBIT TRYTAKEBIT)>
|
||||
<ROOM SANDBAR (LOC ROOMS) (DESC "Sandbar") (REGION "Port Foozle") (LDESC
|
||||
"You are on a wide sandbar, which almost certainly vanishes at high tide.
|
||||
The only ways off the sandbar are to the north and south.") (NORTH TO
|
||||
FISHING-VILLAGE) (SOUTH TO QUILBOZZA-BEACH) (FLAGS RLANDBIT ONBIT OUTSIDEBIT) (
|
||||
SYNONYM SANDBAR) (GLOBAL FLATHEAD-OCEAN) (MAP-LOC <PTABLE FOOZLE-MAP-NUM
|
||||
MAP-GEN-Y-5 MAP-GEN-X-2>)>
|
||||
<ROOM QUILBOZZA-BEACH (LOC ROOMS) (DESC "Quilbozza Beach") (REGION
|
||||
"Port Foozle") (LDESC
|
||||
"You are on a wide beach of fine pinkish-white sand. The ocean stretches
|
||||
west to the horizon. Due to the low tide, it looks as if you could travel
|
||||
north. In addition, tunnels open to the northeast and southeast.") (NORTH TO
|
||||
SANDBAR) (NE TO SALTY-SMELL) (SE TO WARNING-ROOM) (FLAGS RLANDBIT ONBIT
|
||||
OUTSIDEBIT) (SYNONYM BEACH) (ADJECTIVE QUILBOZZA) (GLOBAL FLATHEAD-OCEAN) (
|
||||
RESEARCH "\"Quilbozza, just south of Port Foozle, is considered the nicest beachfront
|
||||
in the eastlands, if not all of Quendor.\"") (MAP-LOC <PTABLE FOOZLE-MAP-NUM
|
||||
MAP-GEN-Y-6 MAP-GEN-X-2>) (ICON QUILBOZZA-BEACH-ICON) (ACTION QUILBOZZA-BEACH-F
|
||||
)>
|
||||
<DEFINE-ROUTINE QUILBOZZA-BEACH-F>
|
||||
<ROOM WARNING-ROOM (LOC ROOMS) (DESC "Warning Room") (REGION "Port Foozle") (
|
||||
LDESC "You are in a tunnel which curves northwest and northeast. The tunnel rises
|
||||
at the latter end, and passes a large, eye-catching sign.") (NW TO
|
||||
QUILBOZZA-BEACH) (DOWN TO QUILBOZZA-BEACH) (NE TO ROOM-OF-THREE-DOORS) (UP TO
|
||||
ROOM-OF-THREE-DOORS) (FLAGS RLANDBIT UNDERGROUNDBIT) (GLOBAL SIGN) (ICON
|
||||
WARNING-ROOM-ICON) (MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-3>)>
|
||||
<ROOM ROOM-OF-THREE-DOORS (LOC ROOMS) (DESC "Room of Three Doors") (REGION
|
||||
"Port Foozle") (SW TO WARNING-ROOM) (OUT TO WARNING-ROOM) (IN SORRY
|
||||
"Pick a door... any door...") (FLAGS RLANDBIT UNDERGROUNDBIT) (MAP-LOC <PTABLE
|
||||
FOOZLE-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-4>) (ICON ROOM-OF-3-DOORS-ICON) (ACTION
|
||||
ROOM-OF-THREE-DOORS-F)>
|
||||
<GLOBAL VERITASSI-DOOR <>>
|
||||
<GLOBAL PREVARICON-DOOR <>>
|
||||
<GLOBAL WISHYFOO-DOOR <>>
|
||||
<GLOBAL WRITING-CHANGED <>>
|
||||
<DEFINE-ROUTINE ROOM-OF-THREE-DOORS-F>
|
||||
<OBJECT LEFT-DOOR (LOC ROOM-OF-THREE-DOORS) (DESC "left door") (SYNONYM DOOR
|
||||
WRITING) (ADJECTIVE LEFT FIRST) (FLAGS DOORBIT NDESCBIT) (OWNER LEFT-DOOR) (
|
||||
ACTION THREE-DOORS-F)>
|
||||
<OBJECT RIGHT-DOOR (LOC ROOM-OF-THREE-DOORS) (DESC "right door") (SYNONYM DOOR
|
||||
WRITING) (ADJECTIVE RIGHT THIRD) (FLAGS DOORBIT NDESCBIT) (OWNER RIGHT-DOOR) (
|
||||
ACTION THREE-DOORS-F)>
|
||||
<OBJECT CENTER-DOOR (LOC ROOM-OF-THREE-DOORS) (DESC "center door") (SYNONYM
|
||||
DOOR WRITING) (ADJECTIVE CENTER MIDDLE SECOND) (FLAGS DOORBIT NDESCBIT) (OWNER
|
||||
CENTER-DOOR) (ACTION THREE-DOORS-F)>
|
||||
<DEFINE-ROUTINE THREE-DOORS-F>
|
||||
<ROOM WISHYFOO-TERRITORY (LOC ROOMS) (DESC "Wishyfoo Territory") (REGION
|
||||
"Port Foozle") (LDESC
|
||||
"You are in a medium-sized cavern, which appears to have been recently
|
||||
occupied. The steep passage which brought you here leads southwest. Also,
|
||||
a passage just large enough to fit through leads downward.") (SW SORRY
|
||||
"The passage is too steep to climb back.") (UP SORRY
|
||||
"The passage is too steep to climb back.") (DOWN TO FORK) (FLAGS RLANDBIT
|
||||
UNDERGROUNDBIT) (VALUE 6) (MAP-LOC <PTABLE FOOZLE-MAP-NUM WISHYFOO-ICON-LOC
|
||||
MAP-GEN-X-4>) (ICON WISHYFOO-ICON)>
|
||||
<OBJECT SHOVEL (LOC WISHYFOO-TERRITORY) (DESC "shovel") (SYNONYM SHOVEL) (SIZE
|
||||
20) (FLAGS TAKEBIT)>
|
||||
<END-SEGMENT>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,50 @@
|
|||
|
||||
<BEGIN-SEGMENT 0>
|
||||
<DEFINE-ROUTINE READ-INPUT>
|
||||
<DEFINE-ROUTINE ADD-TO-INPUT>
|
||||
<DEFINE-ROUTINE SCRIPT-INBUF>
|
||||
<GLOBAL WIDTH 80>
|
||||
<CONSTANT TCHARS <TABLE (BYTE) 255 0>>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT SOFT>
|
||||
<CONSTANT DIROUT-TABLE <ITABLE 80 <BYTE 0>>>
|
||||
<DEFINE-ROUTINE PRINT-CENTER-TABLE>
|
||||
<DEFINE SOFT-KEYS ("ARGS" TUP "AUX" (CNT 0) (DL (0)) L) <SET L <MAPF ,LIST <
|
||||
FUNCTION ("AUX" VAL STR STRL) <COND (<EMPTY? .TUP> <MAPSTOP>)> <SET VAL <NTH .
|
||||
TUP 1>> <SET STR <NTH .TUP 2>> <SET TUP <REST .TUP 2>> <COND (<TYPE? .STR
|
||||
STRING> <SET STRL <LENGTH .STR>> <SET DL (.VAL .STRL .STR !.DL)> <COND (<L? .
|
||||
STRL ,FLEN> <SET STR <STRING .STR <ISTRING <- ,FLEN .STRL> !\ >>>)> <SET CNT <+
|
||||
.CNT 1>> <MAPRET .VAL <TABLE (STRING) ,FLEN .STRL .STR>>) (ELSE <MAPRET .VAL <
|
||||
EVAL .STR>>)>>>> <CONSTANT FKEY-TBL <NTH .L 2>> <CONSTANT FKEYS-STRTABLE-LEN <*
|
||||
.CNT <+ ,FLEN 2>>> <CONSTANT DEFAULT-FKEYS <TABLE (STRING) !.DL>> <CONSTANT
|
||||
FKEYS <LTABLE !.L>>>
|
||||
<CONSTANT FNAMES <LTABLE ,UP-ARROW " UP" ,DOWN-ARROW " DN" ,LEFT-ARROW " LF" ,
|
||||
RIGHT-ARROW " RT" ,F1 " F1" ,F2 " F2" ,F3 " F3" ,F4 " F4" ,F5 " F5" ,F6 " F6" ,
|
||||
F7 " F7" ,F8 " F8" ,F9 " F9" ,F10 "F10">>
|
||||
<SYNTAX DEFINE = V-DEFINE>
|
||||
<GLOBAL DONE-DEFINE? <>>
|
||||
<DEFINE-ROUTINE V-DEFINE>
|
||||
<DEFINE-ROUTINE IN-WINDOW?>
|
||||
<DEFINE-ROUTINE DISPLAY-SOFTS>
|
||||
<DEFINE-ROUTINE DISPLAY-SOFT>
|
||||
<DEFINE-ROUTINE SOFT-RESET-DEFAULTS>
|
||||
<CONSTANT DEFS-NAME <LTABLE (STRING) "DEFS">>
|
||||
<DEFINE-ROUTINE SOFT-SAVE-DEFS>
|
||||
<DEFINE-ROUTINE SOFT-RESTORE-DEFS>
|
||||
<DEFINE-ROUTINE SOFT-EXIT>
|
||||
<CONSTANT FLEN 30>
|
||||
<CONSTANT SOFT-WINDOW 2>
|
||||
<SOFT-KEYS ,UP-ARROW "n
" ,DOWN-ARROW "s
" ,LEFT-ARROW "w
" ,RIGHT-ARROW "e
" ,F1 "take " ,F2 "take all
" ,F3 "drop " ,F4 "look around
" ,F5 "inventory
" ,F6 "unlock door " ,F7 "jester, " ,F8 "give magic locket to moose
" ,F9 "read about " ,F10 "examine " -4 <TABLE "Save Defs" SOFT-SAVE-DEFS> -5 <
|
||||
TABLE "Restore Defs" SOFT-RESTORE-DEFS> -6 <TABLE "Reset Defaults"
|
||||
SOFT-RESET-DEFAULTS> -2 <TABLE "Exit" SOFT-EXIT>>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<DEFINE-ROUTINE Y?>
|
||||
<DEFINE-ROUTINE BLINK>
|
||||
<GLOBAL TYPED-TIMED-OUT <>>
|
||||
<DEFINE-ROUTINE TYPED?>
|
||||
<DEFINE-ROUTINE PICINF-PLUS-ONE>
|
||||
<GLOBAL MOUSE-LOC-X <>>
|
||||
<GLOBAL MOUSE-LOC-Y <>>
|
||||
<DEFINE-ROUTINE MOUSE-INPUT?>
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,490 @@
|
|||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT READ-INPUT,TRM,TMP,N,M,FDEF,DIR,?TMP1
|
||||
PUTB P-INBUF,1,0
|
||||
?PRG1: ZERO? DEMO-VERSION? /?CCL5
|
||||
CALL READ-DEMO,P-INBUF,FALSE-VALUE >TRM
|
||||
JUMP ?CND3
|
||||
?CCL5: READ P-INBUF,FALSE-VALUE >TRM
|
||||
?CND3: ICALL1 MOUSE-INPUT?
|
||||
EQUAL? TRM,PAD0 \?CCL8
|
||||
SET 'TRM,F10
|
||||
JUMP ?CND6
|
||||
?CCL8: LESS? TRM,PAD1 /?CND6
|
||||
GRTR? TRM,PAD9 /?CND6
|
||||
SUB TRM,PAD1
|
||||
ADD F1,STACK >TRM
|
||||
?CND6: EQUAL? TRM,CLICK1,CLICK2 \?CCL14
|
||||
CALL COMPASS-CLICK,COMPASS-PIC-LOC,N-HL >DIR
|
||||
ZERO? DIR /?PRG1
|
||||
DIROUT D-TABLE-ON,O-INBUF
|
||||
CALL2 DIR-TO-STRING,DIR
|
||||
PRINT STACK
|
||||
DIROUT D-TABLE-OFF
|
||||
PUTB O-INBUF,0,INBUF-LENGTH
|
||||
ADD O-INBUF,1 >?TMP1
|
||||
GETB O-INBUF,1
|
||||
ICALL ADD-TO-INPUT,?TMP1,13,STACK
|
||||
JUMP ?REP2
|
||||
?CCL14: EQUAL? TRM,13,10 /?REP2
|
||||
ADD FKEYS,2 >?TMP1
|
||||
GET FKEYS,0
|
||||
INTBL? TRM,?TMP1,STACK >TMP \?CCL20
|
||||
GET TMP,1 >FDEF
|
||||
ZERO? FDEF /?CCL20
|
||||
ADD 1,FDEF >?TMP1
|
||||
GETB FDEF,1
|
||||
CALL ADD-TO-INPUT,?TMP1,TRM,STACK >TRM
|
||||
EQUAL? TRM,13,10 /?REP2
|
||||
JUMP ?PRG1
|
||||
?CCL20: SOUND S-BEEP
|
||||
JUMP ?PRG1
|
||||
?REP2: ICALL1 SCRIPT-INBUF
|
||||
LEX P-INBUF,P-LEXV
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT ADD-TO-INPUT,FDEF,TRM,M,N,TMP,?TMP1
|
||||
GETB P-INBUF,1 >N
|
||||
GETB FDEF,M
|
||||
EQUAL? STACK,13,10 \?CND1
|
||||
SET 'TRM,13
|
||||
DEC 'M
|
||||
?CND1: INC 'FDEF
|
||||
ADD N,2
|
||||
ADD P-INBUF,STACK >TMP
|
||||
ADD M,N >?TMP1
|
||||
GETB P-INBUF,0
|
||||
LESS? ?TMP1,STACK /?CND3
|
||||
SOUND 1
|
||||
GETB P-INBUF,0
|
||||
SUB STACK,N
|
||||
SUB STACK,1 >M
|
||||
?CND3: COPYT FDEF,TMP,M
|
||||
PUTB TMP,M,0
|
||||
WINATTR -3,A-SCRIPT,O-CLEAR
|
||||
PRINTT FDEF,M
|
||||
ADD N,M
|
||||
PUTB P-INBUF,1,STACK
|
||||
EQUAL? TRM,13,10 \?CND5
|
||||
CRLF
|
||||
?CND5: WINATTR -3,A-SCRIPT,O-SET
|
||||
RETURN TRM
|
||||
|
||||
|
||||
.FUNCT SCRIPT-INBUF,BUF,CNT,N,CHR
|
||||
GETB P-INBUF,1 >N
|
||||
DIROUT D-SCREEN-OFF
|
||||
ADD 1,P-INBUF >BUF
|
||||
?PRG1: IGRTR? 'CNT,N /?REP2
|
||||
GETB BUF,CNT >CHR
|
||||
LESS? CHR,97 /?CCL8
|
||||
GRTR? CHR,122 /?CCL8
|
||||
SUB CHR,32
|
||||
PRINTC STACK
|
||||
JUMP ?PRG1
|
||||
?CCL8: PRINTC CHR
|
||||
JUMP ?PRG1
|
||||
?REP2: CRLF
|
||||
DIROUT D-SCREEN-ON
|
||||
RTRUE
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "SOFT"
|
||||
|
||||
|
||||
.FUNCT PRINT-CENTER-TABLE,?TMP2,?TMP1
|
||||
DIROUT D-TABLE-OFF
|
||||
WINGET -3,WYPOS >?TMP1
|
||||
WINGET -3,WWIDE >?TMP2
|
||||
GET 0,24
|
||||
SUB ?TMP2,STACK
|
||||
DIV STACK,2
|
||||
ADD STACK,1
|
||||
CURSET ?TMP1,STACK
|
||||
GET DIROUT-TABLE,0
|
||||
PRINTT DIROUT-TABLE+2,STACK
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT V-DEFINE,LINE,LINMAX,CHR,TMP,NLINE,FKEY,FDEF,LEFT,FY,FX,?TMP1
|
||||
ZERO? DONE-DEFINE? \?CND1
|
||||
SET 'DONE-DEFINE?,TRUE-VALUE
|
||||
PRINTI "Software Function Key definition. "
|
||||
GETB 0,30
|
||||
EQUAL? STACK,MACINTOSH \?CND3
|
||||
PRINTI "(NOTE: if your Macintosh has no function keys, use Command-1 thru Command-0 instead.) "
|
||||
?CND3: PRINTI "Use the arrow keys"
|
||||
ZERO? ACTIVE-MOUSE /?CND5
|
||||
PRINTI " or the mouse"
|
||||
?CND5: PRINTI " to select the key to define or the operation to perform. Hit the RETURN/ENTER key"
|
||||
ZERO? ACTIVE-MOUSE /?CND7
|
||||
PRINTI " or double-click the mouse"
|
||||
?CND7: PRINTI " to perform operations."
|
||||
CRLF
|
||||
ICALL1 HIT-ANY-KEY
|
||||
?CND1: CLEAR -1
|
||||
MUL 4,LINE
|
||||
ADD 2,STACK
|
||||
ADD FKEYS,STACK >FKEY
|
||||
GET FKEY,1 >FDEF
|
||||
GETB 0,33 >?TMP1
|
||||
GETB FDEF,0
|
||||
SUB ?TMP1,STACK
|
||||
DIV STACK,2 >LEFT
|
||||
GET FKEYS,0
|
||||
DIV STACK,2 >LINMAX
|
||||
CLEAR -1
|
||||
SCREEN SOFT-WINDOW
|
||||
FONT 4
|
||||
WINGET SOFT-WINDOW,WFSIZE >TMP
|
||||
SHIFT TMP,-8 >FY
|
||||
BAND TMP,255 >FX
|
||||
GETB 0,32
|
||||
SUB STACK,LINMAX
|
||||
DIV STACK,2
|
||||
MUL FY,STACK >?TMP1
|
||||
MUL FX,LEFT
|
||||
WINPOS SOFT-WINDOW,?TMP1,STACK
|
||||
ADD LINMAX,1
|
||||
MUL FY,STACK >?TMP1
|
||||
ADD FLEN,4
|
||||
MUL FX,STACK
|
||||
ADD 1,STACK
|
||||
WINSIZE SOFT-WINDOW,?TMP1,STACK
|
||||
ICALL2 DISPLAY-SOFTS,LINE
|
||||
ICALL DISPLAY-SOFT,FKEY,LINE,FALSE-VALUE
|
||||
?PRG9: ZERO? DEMO-VERSION? /?CCL13
|
||||
CALL2 INPUT-DEMO,1 >CHR
|
||||
JUMP ?CND11
|
||||
?CCL13: INPUT 1 >CHR
|
||||
?CND11: SET 'NLINE,LINE
|
||||
EQUAL? CHR,CLICK1,CLICK2 \?CND14
|
||||
CALL2 IN-WINDOW?,SOFT-WINDOW >TMP
|
||||
ZERO? TMP /?CND14
|
||||
GRTR? TMP,1 \?CND14
|
||||
SUB TMP,2 >NLINE
|
||||
EQUAL? LINE,NLINE /?CND19
|
||||
ICALL DISPLAY-SOFT,FKEY,LINE,TRUE-VALUE
|
||||
MUL 4,NLINE
|
||||
ADD 2,STACK
|
||||
ADD FKEYS,STACK
|
||||
ICALL DISPLAY-SOFT,STACK,NLINE,FALSE-VALUE
|
||||
SET 'LINE,NLINE
|
||||
MUL 4,LINE
|
||||
ADD 2,STACK
|
||||
ADD FKEYS,STACK >FKEY
|
||||
GET FKEY,1 >FDEF
|
||||
?CND19: EQUAL? CHR,CLICK2 \?CND14
|
||||
GET FKEY,0
|
||||
LESS? STACK,0 \?CND14
|
||||
SET 'CHR,13
|
||||
?CND14: EQUAL? CHR,CLICK1,CLICK2 /?CND25
|
||||
EQUAL? CHR,13 \?CCL28
|
||||
GET FKEY,0
|
||||
LESS? STACK,0 \?CCL28
|
||||
SET 'NLINE,0
|
||||
GET FDEF,1
|
||||
CALL STACK
|
||||
ZERO? STACK /?CCL33
|
||||
SCREEN 0
|
||||
CLEAR 0
|
||||
ICALL1 V-$REFRESH
|
||||
RTRUE
|
||||
?CCL33: SUB LINMAX,1 >NLINE
|
||||
ICALL2 DISPLAY-SOFTS,LINE
|
||||
JUMP ?CND25
|
||||
?CCL28: EQUAL? CHR,DOWN-ARROW,13 \?CCL35
|
||||
INC 'NLINE
|
||||
LESS? NLINE,LINMAX /?CND25
|
||||
SET 'NLINE,0
|
||||
JUMP ?CND25
|
||||
?CCL35: EQUAL? CHR,UP-ARROW \?CCL39
|
||||
DLESS? 'NLINE,0 \?CND25
|
||||
SUB LINMAX,1 >NLINE
|
||||
JUMP ?CND25
|
||||
?CCL39: ADD FKEYS,2 >?TMP1
|
||||
GET FKEYS,0
|
||||
INTBL? CHR,?TMP1,STACK >TMP \?CCL43
|
||||
SUB TMP,FKEYS
|
||||
DIV STACK,4 >NLINE
|
||||
JUMP ?CND25
|
||||
?CCL43: EQUAL? CHR,8,127 \?CCL45
|
||||
GETB FDEF,1 >TMP
|
||||
ZERO? TMP /?CCL48
|
||||
DEC 'TMP
|
||||
PUTB FDEF,1,TMP
|
||||
ADD TMP,2
|
||||
PUTB FDEF,STACK,32
|
||||
ADD LINE,2 >?TMP1
|
||||
ADD TMP,5
|
||||
ICALL CCURSET,?TMP1,STACK
|
||||
ERASE 1
|
||||
JUMP ?CND25
|
||||
?CCL48: SOUND S-BEEP
|
||||
JUMP ?CND25
|
||||
?CCL45: LESS? CHR,32 /?CCL50
|
||||
LESS? CHR,127 \?CCL50
|
||||
GETB FDEF,1 >TMP
|
||||
GETB FDEF,0
|
||||
EQUAL? TMP,STACK \?CCL55
|
||||
SOUND S-BEEP
|
||||
JUMP ?CND25
|
||||
?CCL55: ADD FDEF,2 >?TMP1
|
||||
GETB FDEF,1
|
||||
INTBL? 13,?TMP1,STACK,1 \?CCL57
|
||||
SOUND S-BEEP
|
||||
JUMP ?CND25
|
||||
?CCL57: EQUAL? CHR,124,33 \?CND58
|
||||
SET 'CHR,13
|
||||
?CND58: ADD TMP,1
|
||||
PUTB FDEF,1,STACK
|
||||
LESS? CHR,65 /?CND60
|
||||
GRTR? CHR,90 /?CND60
|
||||
ADD CHR,32 >CHR
|
||||
?CND60: ADD TMP,2
|
||||
PUTB FDEF,STACK,CHR
|
||||
EQUAL? CHR,13 \?CCL66
|
||||
PRINTC 124
|
||||
JUMP ?CND25
|
||||
?CCL66: PRINTC CHR
|
||||
JUMP ?CND25
|
||||
?CCL50: SOUND S-BEEP
|
||||
?CND25: EQUAL? LINE,NLINE /?PRG9
|
||||
ICALL DISPLAY-SOFT,FKEY,LINE,TRUE-VALUE
|
||||
MUL 4,NLINE
|
||||
ADD 2,STACK
|
||||
ADD FKEYS,STACK
|
||||
ICALL DISPLAY-SOFT,STACK,NLINE,FALSE-VALUE
|
||||
SET 'LINE,NLINE
|
||||
MUL 4,LINE
|
||||
ADD 2,STACK
|
||||
ADD FKEYS,STACK >FKEY
|
||||
GET FKEY,1 >FDEF
|
||||
JUMP ?PRG9
|
||||
|
||||
|
||||
.FUNCT IN-WINDOW?,W,X,Y,TOP,LEFT
|
||||
GET 0,27
|
||||
GET STACK,2 >Y
|
||||
GET 0,27
|
||||
GET STACK,1 >X
|
||||
WINGET W,WTOP >TOP
|
||||
LESS? Y,TOP /FALSE
|
||||
WINGET W,WLEFT >LEFT
|
||||
LESS? X,LEFT /FALSE
|
||||
SUB Y,TOP >Y
|
||||
SUB X,LEFT >X
|
||||
WINGET W,WHIGH
|
||||
GRTR? Y,STACK /FALSE
|
||||
WINGET W,WWIDE
|
||||
GRTR? X,STACK /FALSE
|
||||
DIV Y,FONT-Y
|
||||
ADD 1,STACK >Y
|
||||
RETURN Y
|
||||
|
||||
|
||||
.FUNCT DISPLAY-SOFTS,LINE,L,F,N,FKEY,CNT
|
||||
GET FKEYS,0 >L
|
||||
DIV L,2 >L
|
||||
SCREEN SOFT-WINDOW
|
||||
CURSET 1,1
|
||||
DIROUT D-TABLE-ON,DIROUT-TABLE
|
||||
FONT 1
|
||||
PRINTI "Function Keys"
|
||||
ICALL1 PRINT-CENTER-TABLE
|
||||
FONT 4
|
||||
ADD FKEYS,2 >FKEY
|
||||
?PRG1: LESS? CNT,L \TRUE
|
||||
EQUAL? CNT,LINE \?CCL8
|
||||
PUSH FALSE-VALUE
|
||||
JUMP ?CND6
|
||||
?CCL8: PUSH TRUE-VALUE
|
||||
?CND6: ICALL DISPLAY-SOFT,FKEY,CNT,STACK
|
||||
ADD FKEY,4 >FKEY
|
||||
INC 'CNT
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT DISPLAY-SOFT,FKEY,CNT,INV?,FDEF,S,N,M,TMP,Y,X,?TMP1
|
||||
GET FKEY,1 >FDEF
|
||||
ADD CNT,2 >Y
|
||||
GET FKEY,0
|
||||
LESS? STACK,0 \?CCL3
|
||||
ICALL CCURSET,Y,1
|
||||
ZERO? INV? /?CND4
|
||||
HLIGHT H-INVERSE
|
||||
?CND4: FONT 1
|
||||
DIROUT D-TABLE-ON,DIROUT-TABLE
|
||||
GET FDEF,0
|
||||
PRINT STACK
|
||||
ICALL1 PRINT-CENTER-TABLE
|
||||
FONT 4
|
||||
JUMP ?CND1
|
||||
?CCL3: GETB FDEF,0 >S
|
||||
GETB FDEF,1 >N
|
||||
ICALL CCURSET,Y,1
|
||||
GET FKEY,0 >?TMP1
|
||||
GET FNAMES,0
|
||||
INTBL? ?TMP1,FNAMES+2,STACK >TMP \?CND6
|
||||
ZERO? INV? /?CCL10
|
||||
HLIGHT H-NORMAL
|
||||
JUMP ?CND8
|
||||
?CCL10: HLIGHT H-INVERSE
|
||||
?CND8: GET TMP,1
|
||||
PRINT STACK
|
||||
HLIGHT H-NORMAL
|
||||
PRINTC 32
|
||||
ZERO? INV? /?CCL13
|
||||
HLIGHT H-INVERSE
|
||||
JUMP ?CND6
|
||||
?CCL13: HLIGHT H-NORMAL
|
||||
?CND6: ADD FDEF,2 >FDEF
|
||||
ZERO? N /?CND14
|
||||
SUB N,1 >M
|
||||
GETB FDEF,M
|
||||
EQUAL? STACK,13 \?CND14
|
||||
PRINTT FDEF,M
|
||||
PRINTC 124
|
||||
ADD FDEF,N >FDEF
|
||||
SUB S,N >S
|
||||
?CND14: PRINTT FDEF,S
|
||||
ZERO? INV? \?CND1
|
||||
ADD N,5
|
||||
ICALL CCURSET,Y,STACK
|
||||
?CND1: HLIGHT H-NORMAL
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT SOFT-RESET-DEFAULTS,K,L,KEYS,DEF,KL,TMP,?TMP1
|
||||
GET FKEYS,0 >KL
|
||||
SET 'DEF,DEFAULT-FKEYS
|
||||
?PRG1: GETB DEF,0 >K
|
||||
ZERO? K /FALSE
|
||||
INC 'DEF
|
||||
GETB DEF,0
|
||||
ADD 1,STACK >L
|
||||
ADD FKEYS,2
|
||||
INTBL? K,STACK,KL >KEYS \?CND5
|
||||
GET KEYS,1 >KEYS
|
||||
ADD 1,KEYS >TMP
|
||||
PUTB TMP,0,32
|
||||
ADD 1,TMP >?TMP1
|
||||
GETB KEYS,0
|
||||
SUB 0,STACK
|
||||
COPYT TMP,?TMP1,STACK
|
||||
ADD 1,KEYS
|
||||
COPYT DEF,STACK,L
|
||||
?CND5: ADD DEF,L >DEF
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT SOFT-SAVE-DEFS
|
||||
CLEAR 0
|
||||
SCREEN 0
|
||||
SAVE FKEY-TBL,FKEYS-STRTABLE-LEN,DEFS-NAME
|
||||
ZERO? STACK \?CND1
|
||||
PRINTI "Failed."
|
||||
?CND1: CLEAR 0
|
||||
SCREEN SOFT-WINDOW
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT SOFT-RESTORE-DEFS
|
||||
CLEAR 0
|
||||
SCREEN 0
|
||||
RESTORE FKEY-TBL,FKEYS-STRTABLE-LEN,DEFS-NAME
|
||||
ZERO? STACK \?CND1
|
||||
PRINTI "Failed."
|
||||
?CND1: CLEAR 0
|
||||
SCREEN SOFT-WINDOW
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT SOFT-EXIT
|
||||
RTRUE
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT Y?,X
|
||||
?PRG1: ZERO? DEMO-VERSION? /?CCL5
|
||||
CALL2 INPUT-DEMO,1 >X
|
||||
JUMP ?CND3
|
||||
?CCL5: INPUT 1 >X
|
||||
?CND3: EQUAL? X,89,121,CLICK1 /?CTR7
|
||||
EQUAL? X,CLICK2 \?CCL8
|
||||
?CTR7: SET 'X,TRUE-VALUE
|
||||
JUMP ?REP2
|
||||
?CCL8: EQUAL? X,78,110 \?CCL12
|
||||
SET 'X,FALSE-VALUE
|
||||
?REP2: CRLF
|
||||
RETURN X
|
||||
?CCL12: CRLF
|
||||
PRINTI "[Please type Y or N] >"
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT BLINK,PIC1,PIC2,Y,X,SCR,CHAR,LAST,CNT
|
||||
SCREEN SCR
|
||||
DISPLAY PIC2,Y,X
|
||||
SCREEN S-TEXT
|
||||
SET 'LAST,PIC2
|
||||
?PRG1: SET 'TYPED-TIMED-OUT,FALSE-VALUE
|
||||
INPUT 1,3,TYPED? >CHAR
|
||||
ICALL1 MOUSE-INPUT?
|
||||
ZERO? TYPED-TIMED-OUT /?CCL5
|
||||
SCREEN SCR
|
||||
EQUAL? LAST,PIC1 \?CCL8
|
||||
SET 'LAST,PIC2
|
||||
PUSH PIC2
|
||||
JUMP ?CND6
|
||||
?CCL8: SET 'LAST,PIC1
|
||||
PUSH PIC1
|
||||
?CND6: DISPLAY STACK,Y,X
|
||||
INC 'CNT
|
||||
EQUAL? CNT,4 \?CND9
|
||||
ZERO? ROSE-NEEDS-UPDATING /?CND9
|
||||
EQUAL? CURRENT-SPLIT,MAP-TOP-LEFT-LOC \?CND9
|
||||
ICALL1 UPDATE-MAP-ROSE
|
||||
?CND9: SCREEN S-TEXT
|
||||
JUMP ?PRG1
|
||||
?CCL5: EQUAL? LAST,PIC2 /?CCL15
|
||||
RETURN CHAR
|
||||
?CCL15: SCREEN SCR
|
||||
DISPLAY PIC1,Y,X
|
||||
SCREEN S-TEXT
|
||||
RETURN CHAR
|
||||
|
||||
|
||||
.FUNCT TYPED?
|
||||
SET 'TYPED-TIMED-OUT,TRUE-VALUE
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT PICINF-PLUS-ONE,PIC
|
||||
PICINF PIC,PICINF-TBL /?BOGUS1
|
||||
?BOGUS1: GET PICINF-TBL,0
|
||||
ADD STACK,1
|
||||
PUT PICINF-TBL,0,STACK
|
||||
GET PICINF-TBL,1
|
||||
ADD STACK,1
|
||||
PUT PICINF-TBL,1,STACK
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT MOUSE-INPUT?
|
||||
GET 0,27
|
||||
GET STACK,1 >MOUSE-LOC-X
|
||||
GET 0,27
|
||||
GET STACK,2 >MOUSE-LOC-Y
|
||||
RETURN MOUSE-LOC-Y
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.ENDI
|
|
@ -0,0 +1,500 @@
|
|||
"INPUT for
|
||||
ZORK ZERO
|
||||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
<ROUTINE READ-INPUT ("AUX" TRM TMP N M FDEF DIR)
|
||||
<PUTB ,P-INBUF 1 0>
|
||||
<REPEAT ()
|
||||
<COND (,DEMO-VERSION?
|
||||
<SET TRM <READ-DEMO ,P-INBUF <>>>)
|
||||
(T
|
||||
<SET TRM <READ ,P-INBUF <>>>)>
|
||||
<MOUSE-INPUT?>
|
||||
<COND (<EQUAL? .TRM ,PAD0>
|
||||
<SET TRM ,F10>)
|
||||
(<AND <G=? .TRM ,PAD1>
|
||||
<L=? .TRM ,PAD9>>
|
||||
<SET TRM <+ ,F1 <- .TRM ,PAD1>>>)>
|
||||
<COND (<EQUAL? .TRM ,CLICK1 ,CLICK2>
|
||||
<COND (<SET DIR <COMPASS-CLICK ,COMPASS-PIC-LOC ,N-HL>>
|
||||
;<SET TMP <COND (<EQUAL? .DIR ,P?NORTH ,P?SOUTH> 5)
|
||||
(<EQUAL? .DIR ,P?WEST ,P?EAST> 4)
|
||||
(T 9)>>
|
||||
<DIROUT ,D-TABLE-ON ,O-INBUF>
|
||||
<TELL <DIR-TO-STRING .DIR>>
|
||||
<DIROUT ,D-TABLE-OFF>
|
||||
<PUTB ,O-INBUF 0 ,INBUF-LENGTH>
|
||||
<ADD-TO-INPUT <REST ,O-INBUF 1> 13 <GETB ,O-INBUF 1>>
|
||||
<RETURN>)>)
|
||||
(<EQUAL? .TRM 13 10>
|
||||
<RETURN>)
|
||||
(<AND <SET TMP
|
||||
<INTBL? .TRM <REST ,FKEYS 2> <GET ,FKEYS 0>>>
|
||||
<SET FDEF <GET .TMP 1>>> ;"key def"
|
||||
<SET TRM <ADD-TO-INPUT <REST .FDEF> .TRM <GETB .FDEF 1>>>
|
||||
<COND (<EQUAL? .TRM 13 10> <RETURN>)>)
|
||||
(T
|
||||
<SOUND ,S-BEEP>)>>
|
||||
<SCRIPT-INBUF>
|
||||
<LEX ,P-INBUF ,P-LEXV>>
|
||||
|
||||
<ROUTINE ADD-TO-INPUT (FDEF TRM M "AUX" N TMP)
|
||||
;<SET M <GETB .FDEF 1>> ;"number chars in def"
|
||||
<SET N <GETB ,P-INBUF 1>> ;"number chars already"
|
||||
;<SET FDEF <REST .FDEF>>
|
||||
<COND (<EQUAL? <GETB .FDEF .M> 13 10>
|
||||
<SET TRM 13> ;"this def is a terminator"
|
||||
<SET M <- .M 1>>)>
|
||||
<SET FDEF <REST .FDEF>>
|
||||
<SET TMP <REST ,P-INBUF <+ .N 2>>>
|
||||
<COND (<G=? <+ .M .N> <GETB ,P-INBUF 0>> ;"overflowed input buffer"
|
||||
<SOUND 1>
|
||||
<SET M <- <GETB ,P-INBUF 0> .N 1>>)>
|
||||
<COPYT .FDEF .TMP .M>
|
||||
<PUTB .TMP .M 0>
|
||||
<WINATTR -3 ,A-SCRIPT ,O-CLEAR>
|
||||
<PRINTT .FDEF .M>
|
||||
<PUTB ,P-INBUF 1 <+ .N .M>>
|
||||
<COND (<EQUAL? .TRM 13 10>
|
||||
<CRLF>)>
|
||||
<WINATTR -3 ,A-SCRIPT ,O-SET>
|
||||
.TRM>
|
||||
|
||||
<ROUTINE SCRIPT-INBUF ("AUX" BUF (CNT 0) (N <GETB ,P-INBUF 1>) CHR)
|
||||
<DIROUT ,D-SCREEN-OFF>
|
||||
<SET BUF <REST ,P-INBUF>>
|
||||
<REPEAT ()
|
||||
<COND (<IGRTR? CNT .N> <RETURN>)
|
||||
(ELSE
|
||||
<SET CHR <GETB .BUF .CNT>>
|
||||
<COND (<AND <G=? .CHR !\a>
|
||||
<L=? .CHR !\z>>
|
||||
<PRINTC <- .CHR 32>>)
|
||||
(ELSE <PRINTC .CHR>)>)>>
|
||||
<CRLF>
|
||||
<DIROUT ,D-SCREEN-ON>>
|
||||
|
||||
<GLOBAL WIDTH 80>
|
||||
|
||||
<CONSTANT TCHARS <TABLE (BYTE) 255 0>>
|
||||
|
||||
<END-SEGMENT>
|
||||
|
||||
;"function key stuff"
|
||||
|
||||
<BEGIN-SEGMENT SOFT>
|
||||
|
||||
<CONSTANT DIROUT-TABLE <ITABLE 80 <BYTE 0>>>
|
||||
|
||||
<ROUTINE PRINT-CENTER-TABLE ()
|
||||
<DIROUT ,D-TABLE-OFF>
|
||||
<CURSET <WINGET -3 ,WYPOS>
|
||||
<+ </ <- <WINGET -3 ,WWIDE>
|
||||
<LOWCORE TWID>>
|
||||
2>
|
||||
1>>
|
||||
<PRINTT <REST ,DIROUT-TABLE 2> <GET ,DIROUT-TABLE 0>>>
|
||||
|
||||
"MDL routine to create a set of soft-key tables and defaults"
|
||||
|
||||
<DEFINE SOFT-KEYS ("ARGS" TUP "AUX" (CNT 0) (DL (0)) L)
|
||||
<SET L
|
||||
<MAPF ,LIST
|
||||
<FUNCTION ("AUX" VAL STR STRL)
|
||||
<COND (<EMPTY? .TUP> <MAPSTOP>)>
|
||||
<SET VAL <NTH .TUP 1>>
|
||||
<SET STR <NTH .TUP 2>>
|
||||
<SET TUP <REST .TUP 2>>
|
||||
<COND (<TYPE? .STR STRING>
|
||||
<SET STRL <LENGTH .STR>>
|
||||
<SET DL (.VAL .STRL .STR !.DL)>
|
||||
<COND (<L? .STRL ,FLEN>
|
||||
<SET STR
|
||||
<STRING .STR
|
||||
<ISTRING <- ,FLEN .STRL>
|
||||
!\ >>>)>
|
||||
<SET CNT <+ .CNT 1>>
|
||||
<MAPRET .VAL <TABLE (STRING) ,FLEN .STRL .STR>>)
|
||||
(ELSE
|
||||
<MAPRET .VAL <EVAL .STR>>)>>>>
|
||||
<CONSTANT FKEY-TBL <NTH .L 2>>
|
||||
<CONSTANT FKEYS-STRTABLE-LEN <* .CNT <+ ,FLEN 2>>>
|
||||
<CONSTANT DEFAULT-FKEYS <TABLE (STRING) !.DL>>
|
||||
<CONSTANT FKEYS <LTABLE !.L>>>
|
||||
|
||||
<CONSTANT FNAMES
|
||||
<LTABLE ,UP-ARROW " UP"
|
||||
,DOWN-ARROW " DN"
|
||||
,LEFT-ARROW " LF"
|
||||
,RIGHT-ARROW " RT"
|
||||
;"vt100 keypad keys"
|
||||
,F1 " F1"
|
||||
,F2 " F2"
|
||||
,F3 " F3"
|
||||
,F4 " F4"
|
||||
,F5 " F5"
|
||||
,F6 " F6"
|
||||
,F7 " F7"
|
||||
,F8 " F8"
|
||||
,F9 " F9"
|
||||
,F10 "F10">>
|
||||
|
||||
<SYNTAX DEFINE = V-DEFINE>
|
||||
|
||||
<GLOBAL DONE-DEFINE? <>>
|
||||
|
||||
<ROUTINE V-DEFINE ("AUX" (LINE 0) LINMAX CHR TMP NLINE FKEY FDEF LEFT FY FX)
|
||||
<COND (<NOT ,DONE-DEFINE?>
|
||||
<SETG DONE-DEFINE? T>
|
||||
<TELL "Software Function Key definition. ">
|
||||
<COND (<EQUAL? <LOWCORE INTID> ,MACINTOSH>
|
||||
<TELL
|
||||
"(NOTE: if your Macintosh has no function keys, use Command-1 thru
|
||||
Command-0 instead.) ">)>
|
||||
<TELL "Use the arrow keys">
|
||||
<COND (,ACTIVE-MOUSE
|
||||
<TELL " or the mouse">)>
|
||||
<TELL
|
||||
" to select the key to define or the operation to perform. Hit
|
||||
the RETURN/ENTER key">
|
||||
<COND (,ACTIVE-MOUSE
|
||||
<TELL " or double-click the mouse">)>
|
||||
<TELL " to perform operations." CR>
|
||||
<HIT-ANY-KEY>)>
|
||||
<CLEAR -1>
|
||||
<SET FKEY <REST ,FKEYS <+ 2 <* 4 .LINE>>>>
|
||||
<SET FDEF <GET .FKEY 1>>
|
||||
<SET LEFT </ <- <LOWCORE SCRH> <GETB .FDEF 0>> 2>>
|
||||
<SET LINMAX </ <GET ,FKEYS 0> 2>>
|
||||
<CLEAR -1>
|
||||
<SCREEN ,SOFT-WINDOW>
|
||||
<FONT 4>
|
||||
<SET TMP <WINGET ,SOFT-WINDOW ,WFSIZE>>
|
||||
<SET FY <SHIFT .TMP -8>>
|
||||
<SET FX <BAND .TMP 255>>
|
||||
<WINPOS ,SOFT-WINDOW
|
||||
<* .FY </ <- <LOWCORE SCRV> .LINMAX> 2>>
|
||||
<* .FX .LEFT>>
|
||||
<WINSIZE ,SOFT-WINDOW
|
||||
<* .FY <+ .LINMAX 1>>
|
||||
<+ 1 <* .FX <+ ,FLEN 4>>>>
|
||||
<DISPLAY-SOFTS .LINE>
|
||||
<DISPLAY-SOFT .FKEY .LINE <>>
|
||||
<REPEAT ()
|
||||
<COND (,DEMO-VERSION?
|
||||
<SET CHR <INPUT-DEMO 1>>)
|
||||
(T
|
||||
<SET CHR <INPUT 1>>)>
|
||||
<SET NLINE .LINE>
|
||||
<COND (<AND <EQUAL? .CHR ,CLICK1 ,CLICK2>
|
||||
<SET TMP <IN-WINDOW? ,SOFT-WINDOW>>
|
||||
<G? .TMP 1>>
|
||||
<SET NLINE <- .TMP 2>>
|
||||
<COND (<NOT <EQUAL? .LINE .NLINE>>
|
||||
<DISPLAY-SOFT .FKEY .LINE T>
|
||||
<DISPLAY-SOFT <REST ,FKEYS <+ 2 <* 4 .NLINE>>>
|
||||
.NLINE <>>
|
||||
<SET LINE .NLINE>
|
||||
<SET FKEY <REST ,FKEYS <+ 2 <* 4 .LINE>>>>
|
||||
<SET FDEF <GET .FKEY 1>>)>
|
||||
<COND (<AND <EQUAL? .CHR ,CLICK2>
|
||||
<L? <GET .FKEY 0> 0>>
|
||||
<SET CHR 13>)>)>
|
||||
<COND (<EQUAL? .CHR ,CLICK1 ,CLICK2>)
|
||||
(<AND <EQUAL? .CHR 13>
|
||||
<L? <GET .FKEY 0> 0>>
|
||||
<SET NLINE 0>
|
||||
<COND (<APPLY <GET .FDEF 1>>
|
||||
<SCREEN 0>
|
||||
<CLEAR 0>
|
||||
<V-$REFRESH>
|
||||
<RTRUE>)
|
||||
(ELSE
|
||||
<SET NLINE <- .LINMAX 1>>
|
||||
<DISPLAY-SOFTS .LINE>)>)
|
||||
(<EQUAL? .CHR ,DOWN-ARROW 13>
|
||||
<COND (<L? <SET NLINE <+ .NLINE 1>> .LINMAX>)
|
||||
(ELSE <SET NLINE 0>)>)
|
||||
(<EQUAL? .CHR ,UP-ARROW>
|
||||
<COND (<G=? <SET NLINE <- .NLINE 1>> 0>)
|
||||
(ELSE
|
||||
<SET NLINE <- .LINMAX 1>>)>)
|
||||
(<SET TMP
|
||||
<INTBL? .CHR <REST ,FKEYS 2> <GET ,FKEYS 0>>>
|
||||
<SET NLINE </ <- .TMP ,FKEYS> 4>>)
|
||||
(<EQUAL? .CHR 8 127>
|
||||
<SET TMP <GETB .FDEF 1>>
|
||||
<COND (<NOT <ZERO? .TMP>>
|
||||
<SET TMP <- .TMP 1>>
|
||||
<PUTB .FDEF 1 .TMP>
|
||||
<PUTB .FDEF <+ .TMP 2> !\ >
|
||||
<CCURSET <+ .LINE 2>
|
||||
<+ .TMP 5>>
|
||||
<ERASE 1>)
|
||||
(ELSE <SOUND ,S-BEEP>)>)
|
||||
(<AND <G=? .CHR !\ > <L? .CHR 127>>
|
||||
<SET TMP <GETB .FDEF 1>>
|
||||
<COND (<EQUAL? .TMP <GETB .FDEF 0>>
|
||||
<SOUND ,S-BEEP>)
|
||||
(<INTBL? 13
|
||||
<REST .FDEF 2>
|
||||
<GETB .FDEF 1>
|
||||
1>
|
||||
<SOUND ,S-BEEP>)
|
||||
(ELSE
|
||||
<COND (<EQUAL? .CHR !\| !\!> <SET CHR 13>)>
|
||||
<PUTB .FDEF 1 <+ .TMP 1>>
|
||||
<COND (<AND <G=? .CHR !\A>
|
||||
<L=? .CHR !\Z>>
|
||||
<SET CHR <+ .CHR 32>>)>
|
||||
<PUTB .FDEF <+ .TMP 2> .CHR>
|
||||
<COND (<EQUAL? .CHR 13>
|
||||
<PRINTC !\|>)
|
||||
(ELSE <PRINTC .CHR>)>)>)
|
||||
(ELSE <SOUND ,S-BEEP>)>
|
||||
<COND (<NOT <EQUAL? .LINE .NLINE>>
|
||||
<DISPLAY-SOFT .FKEY .LINE T>
|
||||
<DISPLAY-SOFT <REST ,FKEYS <+ 2 <* 4 .NLINE>>>
|
||||
.NLINE <>>
|
||||
<SET LINE .NLINE>
|
||||
<SET FKEY <REST ,FKEYS <+ 2 <* 4 .LINE>>>>
|
||||
<SET FDEF <GET .FKEY 1>>)>>
|
||||
<FONT 1>
|
||||
<SCREEN 0>
|
||||
<V-$REFRESH>>
|
||||
|
||||
"given a window, returns line hit with mouse click, or false if not in that
|
||||
window."
|
||||
|
||||
<ROUTINE IN-WINDOW? (W "AUX" X Y TOP LEFT)
|
||||
<SET Y <LOWCORE MSLOCY>>
|
||||
<SET X <LOWCORE MSLOCX>>
|
||||
<COND (<OR <L? .Y <SET TOP <WINGET .W ,WTOP>>>
|
||||
<L? .X <SET LEFT <WINGET .W ,WLEFT>>>>
|
||||
<RFALSE>)
|
||||
(ELSE
|
||||
<SET Y <- .Y .TOP>>
|
||||
<SET X <- .X .LEFT>>
|
||||
<COND (<OR <G? .Y <WINGET .W ,WHIGH>>
|
||||
<G? .X <WINGET .W ,WWIDE>>>
|
||||
<RFALSE>)>
|
||||
<SET Y <+ 1 </ .Y ,FONT-Y>>>
|
||||
<RETURN .Y>)>>
|
||||
|
||||
<ROUTINE DISPLAY-SOFTS (LINE "AUX" (L <GET ,FKEYS 0>) (F 0) N FKEY (CNT 0))
|
||||
<SET L </ .L 2>>
|
||||
<SCREEN ,SOFT-WINDOW>
|
||||
<CURSET 1 1>
|
||||
<DIROUT ,D-TABLE-ON ,DIROUT-TABLE>
|
||||
<FONT 1>
|
||||
<TELL "Function Keys">
|
||||
<PRINT-CENTER-TABLE>
|
||||
<FONT 4>
|
||||
<SET FKEY <REST ,FKEYS 2>>
|
||||
<REPEAT ()
|
||||
<COND (<L? .CNT .L>
|
||||
<DISPLAY-SOFT .FKEY .CNT
|
||||
<COND (<EQUAL? .CNT .LINE> <>)
|
||||
(ELSE T)>>
|
||||
<SET FKEY <REST .FKEY 4>>)
|
||||
(ELSE <RETURN>)>
|
||||
<SET CNT <+ .CNT 1>>>>
|
||||
|
||||
<ROUTINE DISPLAY-SOFT (FKEY CNT INV?
|
||||
"AUX" (FDEF <GET .FKEY 1>) S N M TMP
|
||||
(Y <+ .CNT 2>) X)
|
||||
<COND (<L? <GET .FKEY 0> 0> ;"constant string"
|
||||
<CCURSET .Y 1>
|
||||
<COND (.INV? <HLIGHT ,H-INVERSE>)>
|
||||
<FONT 1>
|
||||
<DIROUT ,D-TABLE-ON ,DIROUT-TABLE>
|
||||
<TELL <GET .FDEF 0>>
|
||||
<PRINT-CENTER-TABLE>
|
||||
<FONT 4>)
|
||||
(ELSE
|
||||
<SET S <GETB .FDEF 0>>
|
||||
<SET N <GETB .FDEF 1>>
|
||||
<CCURSET .Y 1>
|
||||
<COND (<SET TMP
|
||||
<INTBL? <GET .FKEY 0>
|
||||
<REST ,FNAMES 2>
|
||||
<GET ,FNAMES 0>>>
|
||||
<COND (.INV? <HLIGHT ,H-NORMAL>)
|
||||
(ELSE <HLIGHT ,H-INVERSE>)>
|
||||
<TELL <GET .TMP 1>>
|
||||
<HLIGHT ,H-NORMAL>
|
||||
<TELL " ">
|
||||
<COND (.INV? <HLIGHT ,H-INVERSE>)
|
||||
(ELSE <HLIGHT ,H-NORMAL>)>)>
|
||||
<SET FDEF <REST .FDEF 2>> ;"get past header bytes"
|
||||
<COND (.N ;"any definition?"
|
||||
<SET M <- .N 1>>
|
||||
<COND (<EQUAL? <GETB .FDEF .M> 13> ;"last character CR?"
|
||||
<PRINTT .FDEF .M>
|
||||
<PRINTC !\|>
|
||||
<SET FDEF <REST .FDEF .N>>
|
||||
<SET S <- .S .N>>)>)>
|
||||
<PRINTT .FDEF .S>
|
||||
<COND (<NOT .INV?>
|
||||
<CCURSET .Y <+ .N 5>>)>)>
|
||||
<HLIGHT ,H-NORMAL>>
|
||||
|
||||
<ROUTINE SOFT-RESET-DEFAULTS ("AUX" K L KEYS DEF KL TMP)
|
||||
<SET KL <GET ,FKEYS 0>>
|
||||
<SET DEF ,DEFAULT-FKEYS>
|
||||
<REPEAT ()
|
||||
<SET K <GETB .DEF 0>>
|
||||
<COND (<ZERO? .K> <RETURN>)>
|
||||
<SET DEF <REST .DEF>>
|
||||
<SET L <+ 1 <GETB .DEF 0>>>
|
||||
<COND (<SET KEYS <INTBL? .K <REST ,FKEYS 2> .KL>>
|
||||
<SET KEYS <GET .KEYS 1>>
|
||||
<SET TMP <REST .KEYS>>
|
||||
<PUTB .TMP 0 !\ >
|
||||
<COPYT .TMP <REST .TMP> <- <GETB .KEYS 0>>>
|
||||
<COPYT .DEF <REST .KEYS> .L>)>
|
||||
<SET DEF <REST .DEF .L>>>
|
||||
<RFALSE>>
|
||||
|
||||
<CONSTANT DEFS-NAME <LTABLE (STRING) "DEFS">>
|
||||
|
||||
<ROUTINE SOFT-SAVE-DEFS ()
|
||||
<CLEAR 0>
|
||||
<SCREEN 0>
|
||||
<COND (<NOT <SAVE ,FKEY-TBL
|
||||
,FKEYS-STRTABLE-LEN
|
||||
,DEFS-NAME>>
|
||||
<TELL "Failed.">)>
|
||||
<CLEAR 0>
|
||||
<SCREEN ,SOFT-WINDOW>
|
||||
<RFALSE>>
|
||||
|
||||
<ROUTINE SOFT-RESTORE-DEFS ()
|
||||
<CLEAR 0>
|
||||
<SCREEN 0>
|
||||
<COND (<NOT <RESTORE ,FKEY-TBL ,FKEYS-STRTABLE-LEN ,DEFS-NAME>>
|
||||
<TELL "Failed.">)>
|
||||
<CLEAR 0>
|
||||
<SCREEN ,SOFT-WINDOW>
|
||||
<RFALSE>>
|
||||
|
||||
<ROUTINE SOFT-EXIT ()
|
||||
<RTRUE>>
|
||||
|
||||
<CONSTANT FLEN 30> ;"max length of a key definition"
|
||||
<CONSTANT SOFT-WINDOW 2> ;"window to use for defining"
|
||||
|
||||
"table containing string definitions for each function key.
|
||||
contiguous so it can be written out or read in."
|
||||
|
||||
<SOFT-KEYS ,UP-ARROW "n
"
|
||||
,DOWN-ARROW "s
"
|
||||
,LEFT-ARROW "w
"
|
||||
,RIGHT-ARROW "e
"
|
||||
;"vt100 keypad keys"
|
||||
,F1 "take "
|
||||
,F2 "take all
"
|
||||
,F3 "drop "
|
||||
,F4 "look around
"
|
||||
,F5 "inventory
"
|
||||
,F6 "unlock door "
|
||||
,F7 "jester, "
|
||||
,F8 "give magic locket to moose
"
|
||||
,F9 "read about "
|
||||
,F10 "examine "
|
||||
-4 <TABLE "Save Defs" SOFT-SAVE-DEFS>
|
||||
-5 <TABLE "Restore Defs" SOFT-RESTORE-DEFS>
|
||||
-6 <TABLE "Reset Defaults" SOFT-RESET-DEFAULTS>
|
||||
-2 <TABLE "Exit" SOFT-EXIT>>
|
||||
|
||||
;<CONSTANT FKEYS-STRTABLE-LEN <* 14 <+ ,FLEN 2>>>
|
||||
|
||||
;<CONSTANT MTBL <ITABLE 4 0>>
|
||||
|
||||
;<CONSTANT SOFT-TOP 3>
|
||||
|
||||
<END-SEGMENT>
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
<ROUTINE Y? ("AUX" X)
|
||||
<REPEAT ()
|
||||
<COND (,DEMO-VERSION?
|
||||
<SET X <INPUT-DEMO 1>>)
|
||||
(T
|
||||
<SET X <INPUT 1>>)>
|
||||
;<MOUSE-INPUT?>
|
||||
<COND (<EQUAL? .X !\Y !\y ,CLICK1 ,CLICK2>
|
||||
<SET X T>
|
||||
<RETURN>)
|
||||
(<EQUAL? .X !\N !\n>
|
||||
<SET X <>>
|
||||
<RETURN>)
|
||||
(T
|
||||
<TELL CR "[Please type Y or N] >">)>>
|
||||
<CRLF>
|
||||
<RETURN .X>>
|
||||
|
||||
<ROUTINE BLINK (PIC1 PIC2 Y X SCR "AUX" CHAR LAST (CNT 0))
|
||||
<SCREEN .SCR>
|
||||
<DISPLAY .PIC2 .Y .X>
|
||||
<SCREEN ,S-TEXT>
|
||||
<SET LAST .PIC2>
|
||||
<REPEAT ()
|
||||
<SETG TYPED-TIMED-OUT <>>
|
||||
<SET CHAR <INPUT 1 3 ;"three-tenths of a second" ,TYPED?>>
|
||||
<MOUSE-INPUT?>
|
||||
<COND (,TYPED-TIMED-OUT
|
||||
<SCREEN .SCR>
|
||||
<DISPLAY <COND (<EQUAL? .LAST .PIC1>
|
||||
<SET LAST .PIC2>
|
||||
.PIC2)
|
||||
(T
|
||||
<SET LAST .PIC1>
|
||||
.PIC1)> .Y .X>
|
||||
<SET CNT <+ .CNT 1>>
|
||||
<COND (<AND <EQUAL? .CNT 4>
|
||||
,ROSE-NEEDS-UPDATING
|
||||
<EQUAL? ,CURRENT-SPLIT ,MAP-TOP-LEFT-LOC>>
|
||||
<UPDATE-MAP-ROSE>)>
|
||||
<SCREEN ,S-TEXT>)
|
||||
(T
|
||||
<COND (<EQUAL? .LAST .PIC2> ;"leave unhighlited pic up"
|
||||
<SCREEN .SCR>
|
||||
<DISPLAY .PIC1 .Y .X>
|
||||
<SCREEN ,S-TEXT>)>
|
||||
<RETURN .CHAR>)>>>
|
||||
|
||||
<GLOBAL TYPED-TIMED-OUT <>>
|
||||
|
||||
<ROUTINE TYPED? ()
|
||||
<SETG TYPED-TIMED-OUT T>
|
||||
<RTRUE>>
|
||||
|
||||
<ROUTINE PICINF-PLUS-ONE (PIC)
|
||||
<PICINF .PIC ,PICINF-TBL>
|
||||
<PUT ,PICINF-TBL 0 <+ <GET ,PICINF-TBL 0> 1>>
|
||||
<PUT ,PICINF-TBL 1 <+ <GET ,PICINF-TBL 1> 1>>>
|
||||
|
||||
<GLOBAL MOUSE-LOC-X <>> ;"X-coordinate of most recent mouse click"
|
||||
|
||||
<GLOBAL MOUSE-LOC-Y <>> ;"Y-coordinate of most recent mouse click"
|
||||
|
||||
<ROUTINE MOUSE-INPUT? ()
|
||||
<SETG MOUSE-LOC-X <LOWCORE MSLOCX>>
|
||||
<SETG MOUSE-LOC-Y <LOWCORE MSLOCY>>>
|
||||
|
||||
;<CONSTANT CENTER-TABLE <ITABLE 80 <BYTE 0>>>
|
||||
|
||||
;<ROUTINE PRINT-CENTER-TABLE ()
|
||||
<DIROUT ,D-TABLE-OFF>
|
||||
<CURSET <WINGET -3 ,WYPOS>
|
||||
<+ </ <- <WINGET -3 ,WWIDE>
|
||||
<LOWCORE TWID>>
|
||||
2>
|
||||
1>>
|
||||
<PRINTT <REST ,CENTER-TABLE 2> <GET ,CENTER-TABLE 0>>>
|
||||
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,222 @@
|
|||
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT JESTER (DESC "jester") (DESCFCN JESTER-F) (SYNONYM JESTER JESTERS JOKER
|
||||
MAN) (FLAGS ACTORBIT SEARCHBIT CONTBIT OPENBIT ANIMATEDBIT) (ACTION JESTER-F)>
|
||||
<DEFINE-ROUTINE JESTER-F>
|
||||
<BEGIN-SEGMENT CASTLE>
|
||||
<DEFINE-ROUTINE J-ENTRY>
|
||||
<GLOBAL MID-NAME-NUM <>>
|
||||
<CONSTANT MID-NAMES <PTABLE "Hideoz" "Bivotar" "Urgwitz" "Foofoonap" "Elderbar"
|
||||
"Goozums" "Syovar" "Buck" "Spike" "Zippy" "Magglebar" "Barfoo">>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<CONSTANT MID-NAME-WORDS <PTABLE <VOC "HIDEOZ" NOUN> <VOC "BIVOTAR" NOUN> <VOC
|
||||
"URGWITZ" NOUN> <VOC "FOOFOONAP" NOUN> <VOC "ELDERBAR" NOUN> <VOC "GOOZUMS"
|
||||
NOUN> <VOC "SYOVAR" NOUN> <VOC "BUCK" NOUN> <VOC "SPIKE" NOUN> <VOC "ZIPPY"
|
||||
NOUN> <VOC "MAGGLEBAR" NOUN> <VOC "BARFOO" NOUN>>>
|
||||
<OBJECT MID-NAME (LOC GLOBAL-OBJECTS) (DESC "middle name") (SYNONYM HIDEOZ
|
||||
BIVOTAR URGWITZ FOOFOONAP ELDERBAR GOOZUMS SYOVAR BUCK SPIKE ZIPPY MAGGLEBAR
|
||||
BARFOO) (ACTION MID-NAME-F)>
|
||||
<DEFINE-ROUTINE MID-NAME-F>
|
||||
<OBJECT OTHER-J-NAMES (LOC GLOBAL-OBJECTS) (DESC "jester's name") (SYNONYM
|
||||
BARBAZZO FERNAP) (ACTION OTHER-J-NAMES-F)>
|
||||
<DEFINE-ROUTINE OTHER-J-NAMES-F>
|
||||
<OBJECT J-POCKET (LOC JESTER) (DESC "jester's pocket") (SYNONYM POCKET) (
|
||||
ADJECTIVE HIS JESTER\'S) (OWNER JESTER) (FLAGS NDESCBIT) (ACTION J-GARMENT-F)>
|
||||
<OBJECT J-HAT (LOC JESTER) (DESC "jester's hat") (SYNONYM HAT BELL BELLS) (
|
||||
ADJECTIVE HIS JESTER\'S SMALL GAUDY) (OWNER JESTER) (FLAGS NDESCBIT) (GENERIC
|
||||
G-HAT-F) (ACTION J-GARMENT-F)>
|
||||
<OBJECT J-SHOE (LOC JESTER) (DESC "jester's shoe") (SYNONYM SHOE) (ADJECTIVE
|
||||
HIS JESTER\'S) (OWNER JESTER) (FLAGS NDESCBIT) (ACTION J-GARMENT-F)>
|
||||
<DEFINE-ROUTINE J-GARMENT-F>
|
||||
<OBJECT J-SUIT (LOC JESTER) (DESC "jester's suit") (SYNONYM SUIT) (ADJECTIVE
|
||||
GREEN SKIN-TIGHT) (OWNER JESTER) (FLAGS NDESCBIT)>
|
||||
<DEFINE-ROUTINE I-JESTER>
|
||||
<DEFINE-ROUTINE J-EXITS>
|
||||
<DEFINE-ROUTINE BEYOND-LAKE?>
|
||||
<GLOBAL J-APPEAR-PROB 0>
|
||||
<GLOBAL DO-J <>>
|
||||
<DEFINE-ROUTINE REMOVE-J>
|
||||
<DEFINE-ROUTINE DONT-CRY>
|
||||
<GLOBAL J-INQ-SCENE <>>
|
||||
<GLOBAL J-ON-RAFT <>>
|
||||
<GLOBAL FUNNY-PAPER-PROB 20>
|
||||
<GLOBAL SLATE-PROB 33>
|
||||
<GLOBAL SCROLL-PROB 33>
|
||||
<GLOBAL GUESSES 0>
|
||||
<GLOBAL ALLIGATOR <>>
|
||||
<DEFINE-ROUTINE I-UNALLIGATOR>
|
||||
<GLOBAL SUFFOCATE-COUNTER 0>
|
||||
<DEFINE-ROUTINE I-SUFFOCATE>
|
||||
<DEFINE-ROUTINE I-FUNNY-PAPER>
|
||||
<DEFINE-ROUTINE I-REMOVE-FUNNY-PAPER>
|
||||
<OBJECT FUNNY-PAPER (LOC LOCAL-GLOBALS) (DESC "funny paper") (SYNONYM PAPER
|
||||
PIECE NEWSPAPER COMICS) (ADJECTIVE COLORFUL FUNNY) (FLAGS TAKEBIT BURNBIT
|
||||
READBIT) (SIZE 2) (ACTION FUNNY-PAPER-F)>
|
||||
<DEFINE-ROUTINE FUNNY-PAPER-F>
|
||||
<OBJECT BEDBUG (DESC "giant bedbug") (SYNONYM BUG BEDBUG) (ADJECTIVE LARGE BED)
|
||||
(ACTION BEDBUG-F)>
|
||||
<DEFINE-ROUTINE BEDBUG-F>
|
||||
<OBJECT CLOWN-NOSE (DESC "red clown nose") (SYNONYM NOSE) (ADJECTIVE RED CLOWN)
|
||||
(FLAGS WEARBIT TAKEBIT) (SIZE 2) (ACTION CLOWN-NOSE-F)>
|
||||
<DEFINE-ROUTINE CLOWN-NOSE-F>
|
||||
<OBJECT SLATE (LOC LOCAL-GLOBALS) (DESC "dusty slate") (SYNONYM SLATE) (
|
||||
ADJECTIVE DUSTY SMALL SILLY OLD) (FLAGS READBIT TAKEBIT) (ACTION SLATE-F)>
|
||||
<GLOBAL STUMP-X 0>
|
||||
<GLOBAL STUMP-Y 0>
|
||||
<DEFINE-ROUTINE SLATE-F>
|
||||
<OBJECT SCROLL (LOC LOCAL-GLOBALS) (DESC "scroll") (SYNONYM SCROLL PAPER) (
|
||||
FLAGS READBIT TAKEBIT BURNBIT) (SIZE 2) (ACTION SCROLL-F)>
|
||||
<DEFINE-ROUTINE SCROLL-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT CASTLE>
|
||||
<OBJECT SHELL-TABLE (DESC "small table") (SYNONYM TABLE) (ADJECTIVE SMALL) (
|
||||
FLAGS SURFACEBIT CONTBIT OPENBIT SEARCHBIT)>
|
||||
<OBJECT LEFT-SHELL (LOC SHELL-TABLE) (DESC "left shell") (SYNONYM SHELL) (
|
||||
ADJECTIVE LEFT FIRST) (ACTION SHELL-F)>
|
||||
<OBJECT CENTER-SHELL (LOC SHELL-TABLE) (DESC "center shell") (SYNONYM SHELL) (
|
||||
ADJECTIVE CENTER MIDDLE SECOND) (ACTION SHELL-F)>
|
||||
<OBJECT RIGHT-SHELL (LOC SHELL-TABLE) (DESC "right shell") (SYNONYM SHELL) (
|
||||
ADJECTIVE RIGHT THIRD) (ACTION SHELL-F)>
|
||||
<DEFINE-ROUTINE SHELL-F>
|
||||
<DEFINE-ROUTINE ANOTHER-SHELL-GAME>
|
||||
<DEFINE-ROUTINE SEE-BILL?>
|
||||
<OBJECT ZORKMID-BILL (LOC LOCAL-GLOBALS) (DESC "zorkmid bill") (SYNONYM BILL
|
||||
MONEY) (ADJECTIVE ZORKMID) (FLAGS TAKEBIT BURNBIT READBIT MAGICBIT) (SIZE 1) (
|
||||
VALUE 0) (TEXT "The denomination of the bill is 100,000 zorkmids. Only one such bill
|
||||
was ever printed, and that was at the personal request of J. Pierpont
|
||||
Flathead.")>
|
||||
<ROOM JESTERS-QUARTERS (LOC ROOMS) (REGION "Flatheadia") (DESC
|
||||
"Jester's Quarters") (DOWN TO SERVANTS-QUARTERS) (OUT TO SERVANTS-QUARTERS) (
|
||||
NORTH TO WEIRD IF LARGE-DOOR IS OPEN) (SOUTH PER SMALL-DOOR-ENTER-F) (FLAGS
|
||||
RLANDBIT) (SYNONYM QUARTERS) (OWNER JESTER) (GLOBAL STAIRS LARGE-DOOR
|
||||
SMALL-DOOR) (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-10>) (ICON
|
||||
J-QUARTER-ICON) (ACTION JESTERS-QUARTERS-F)>
|
||||
<DEFINE-ROUTINE JESTERS-QUARTERS-F>
|
||||
<DEFINE-ROUTINE SMALL-DOOR-ENTER-F>
|
||||
<OBJECT LARGE-DOOR (LOC LOCAL-GLOBALS) (DESC "large arched door") (SYNONYM DOOR
|
||||
) (ADJECTIVE LARGE ARCHED) (FLAGS DOORBIT) (GENERIC G-J-DOOR-F) (ACTION
|
||||
LARGE-DOOR-F)>
|
||||
<DEFINE-ROUTINE LARGE-DOOR-F>
|
||||
<DEFINE-ROUTINE G-J-DOOR-F>
|
||||
<OBJECT SMALL-DOOR (LOC LOCAL-GLOBALS) (DESC "small louvered door") (SYNONYM
|
||||
DOOR) (ADJECTIVE SMALL SOUTH LOUVERED) (FLAGS NDESCBIT) (GENERIC G-J-DOOR-F) (
|
||||
ACTION SMALL-DOOR-F)>
|
||||
<DEFINE-ROUTINE SMALL-DOOR-F>
|
||||
<OBJECT T-OF-B (OWNER T-OF-B) (DESC "Tower of Bozbar") (SYNONYM TOWER BOZBAR) (
|
||||
FLAGS CONTBIT OPENBIT SEARCHBIT) (RESEARCH
|
||||
"The Tower of Bozbar, an ancient game of unknown origin, consists of three pegs
|
||||
and a pile of weights. The goal is to move the pile from one peg to another,
|
||||
moving one weight at a time, with the constraint that no weight can ever be
|
||||
placed atop a smaller weight. Many people say that the Tower of Bozbar is a
|
||||
superb method of mental relaxation. [Obviously, none of these people have ever
|
||||
played Zork Zero.]")>
|
||||
<OBJECT LEFT-PEG (LOC T-OF-B) (DESC "left peg") (SYNONYM PEG POST) (ADJECTIVE
|
||||
FIRST LEFT) (FLAGS NDESCBIT CONTBIT OPENBIT SEARCHBIT)>
|
||||
<OBJECT CENTER-PEG (LOC T-OF-B) (DESC "center peg") (SYNONYM PEG POST) (
|
||||
ADJECTIVE SECOND CENTER MIDDLE) (FLAGS NDESCBIT CONTBIT OPENBIT SEARCHBIT)>
|
||||
<OBJECT RIGHT-PEG (LOC T-OF-B) (DESC "right peg") (SYNONYM PEG POST) (ADJECTIVE
|
||||
THIRD RIGHT) (FLAGS NDESCBIT CONTBIT OPENBIT SEARCHBIT)>
|
||||
<OBJECT 1-WEIGHT (LOC CENTER-PEG) (DESC "1-ugh weight") (SYNONYM WEIGHT) (
|
||||
ADJECTIVE 1-UGH) (FLAGS NDESCBIT) (SIZE 1) (ACTION WEIGHT-F)>
|
||||
<OBJECT 2-WEIGHT (LOC CENTER-PEG) (DESC "2-ugh weight") (SYNONYM WEIGHT) (
|
||||
ADJECTIVE 2-UGH) (FLAGS NDESCBIT) (SIZE 2) (ACTION WEIGHT-F)>
|
||||
<OBJECT 3-WEIGHT (LOC CENTER-PEG) (DESC "3-ugh weight") (SYNONYM WEIGHT) (
|
||||
ADJECTIVE 3-UGH) (FLAGS NDESCBIT) (SIZE 3) (ACTION WEIGHT-F)>
|
||||
<OBJECT 4-WEIGHT (LOC CENTER-PEG) (DESC "4-ugh weight") (SYNONYM WEIGHT) (
|
||||
ADJECTIVE 4-UGH) (FLAGS NDESCBIT) (SIZE 4) (ACTION WEIGHT-F)>
|
||||
<OBJECT 5-WEIGHT (LOC CENTER-PEG) (DESC "5-ugh weight") (SYNONYM WEIGHT) (
|
||||
ADJECTIVE 5-UGH) (FLAGS NDESCBIT) (SIZE 5) (ACTION WEIGHT-F)>
|
||||
<OBJECT 6-WEIGHT (LOC CENTER-PEG) (DESC "6-ugh weight") (SYNONYM WEIGHT) (
|
||||
ADJECTIVE 6-UGH) (FLAGS NDESCBIT) (SIZE 6) (ACTION WEIGHT-F)>
|
||||
<DEFINE-ROUTINE WEIGHT-F>
|
||||
<GLOBAL TOWER-BEATEN <>>
|
||||
<GLOBAL TOWER-CHANGED <>>
|
||||
<DEFINE-ROUTINE TOWER-MODE>
|
||||
<DEFINE-ROUTINE B-MOUSE-PEG-PICK>
|
||||
<DEFINE-ROUTINE B-MOUSE-WEIGHT-PICK>
|
||||
<DEFINE-ROUTINE TOWER-WIN-CHECK>
|
||||
<DEFINE-ROUTINE SET-PEG-TABLE>
|
||||
<DEFINE-ROUTINE NOT-TOP-WEIGHT>
|
||||
<DEFINE-ROUTINE MOVE-WEIGHT>
|
||||
<DEFINE-ROUTINE CRUSH-WEIGHT>
|
||||
<DEFINE-ROUTINE B-SAVE>
|
||||
<DEFINE-ROUTINE B-RESTORE>
|
||||
<CONSTANT B-X-TBL <TABLE <> <> <>>>
|
||||
<CONSTANT B-Y-TBL <TABLE <> <> <> <> <> <>>>
|
||||
<CONSTANT TOWER-UNDO-TABLE <TABLE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
0>>
|
||||
<CONSTANT LEFT-PEG-TABLE <TABLE 0 0 0 0 0 0>>
|
||||
<CONSTANT CENTER-PEG-TABLE <TABLE 6-WEIGHT 5-WEIGHT 4-WEIGHT 3-WEIGHT 2-WEIGHT
|
||||
1-WEIGHT>>
|
||||
<CONSTANT RIGHT-PEG-TABLE <TABLE 0 0 0 0 0 0>>
|
||||
<CONSTANT B-PICSET-TBL <TABLE B-RESTORE-PEG 1-WEIGHT 2-WEIGHT 3-WEIGHT 4-WEIGHT
|
||||
5-WEIGHT 6-WEIGHT 0>>
|
||||
<DEFINE-ROUTINE DRAW-TOWER>
|
||||
<DEFINE-ROUTINE DRAW-PEG>
|
||||
<DEFINE-ROUTINE SET-B-PIC>
|
||||
<ROOM WEIRD (LOC ROOMS) (REGION "Flatheadia") (DESC "Weird Passageway") (SOUTH
|
||||
TO JESTERS-QUARTERS IF LARGE-DOOR IS OPEN) (NORTH PER WEIRD-EXIT-F) (WEST PER
|
||||
WEIRD-EXIT-F) (EAST PER WEIRD-EXIT-F) (FLAGS RLANDBIT) (GLOBAL LARGE-DOOR) (
|
||||
MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-10>) (ACTION WEIRD-F)>
|
||||
<DEFINE-ROUTINE WEIRD-EXIT-F>
|
||||
<DEFINE-ROUTINE WEIRD-ENTER-F>
|
||||
<DEFINE-ROUTINE WEIRD-F>
|
||||
<ROOM PYRAMID (LOC ROOMS) (REGION "Flatheadia") (DESC "Pyramid Room") (SOUTH
|
||||
PER WEIRD-ENTER-F) (OUT PER WEIRD-ENTER-F) (FLAGS RLANDBIT) (VALUE 7) (MAP-LOC
|
||||
<PTABLE MAIN-MAP-NUM MAP-GEN-Y-2 MAP-GEN-X-10>) (ICON PYRAMID-ICON) (ACTION
|
||||
PYRAMID-F)>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT GOGGLES (LOC PYRAMID) (OWNER GOGGLES) (DESC "pair of goggles") (PLURAL
|
||||
"goggles") (SYNONYM GOGGLES PAIR ETCHING) (FLAGS PLURALBIT TAKEBIT WEARBIT
|
||||
TRANSBIT) (ACTION GOGGLES-F)>
|
||||
<DEFINE-ROUTINE GOGGLES-F>
|
||||
<DEFINE-ROUTINE DISCOVER-X-RAY>
|
||||
<GLOBAL DONT-KNOW-ABOUT-XRAY T>
|
||||
<OBJECT CRATE (LOC PYRAMID) (DESC "crate") (LDESC
|
||||
"Sitting in the corner is a wooden shipping crate with some writing
|
||||
stencilled across the top.") (SYNONYM CRATE WRITING) (ADJECTIVE WOODEN SHIPPING
|
||||
STENCILLED) (FLAGS READBIT BURNBIT CONTBIT SEARCHBIT TAKEBIT) (CAPACITY 100) (
|
||||
OWNER CRATE) (SIZE 80) (TEXT
|
||||
"\"1000 Clown Noses, Red|
|
||||
Frobozz Magic Clown Nose Company\"")>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT CASTLE>
|
||||
<ROOM PYRAMID-R (LOC ROOMS) (REGION "Flatheadia") (DESC "Pyramid Room") (WEST
|
||||
PER WEIRD-ENTER-F) (OUT PER WEIRD-ENTER-F) (FLAGS RLANDBIT) (VALUE 7) (MAP-LOC
|
||||
<PTABLE MAIN-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-11>) (ICON PYRAMID-ICON) (ACTION
|
||||
PYRAMID-F)>
|
||||
<OBJECT MANUSCRIPT (LOC PYRAMID-R) (DESC "manuscript") (SYNONYM MANUSCRIPT) (
|
||||
FLAGS READBIT TAKEBIT BURNBIT MAGICBIT) (VALUE 12) (TEXT
|
||||
"The manuscript is entitled \"On the Discoloration of Roadside Slush.\" You
|
||||
try reading it, but keep dozing off on the third or fourth word.")>
|
||||
<ROOM PYRAMID-L (LOC ROOMS) (REGION "Flatheadia") (DESC "Pyramid Room") (EAST
|
||||
PER WEIRD-ENTER-F) (OUT PER WEIRD-ENTER-F) (FLAGS RLANDBIT) (VALUE 7) (MAP-LOC
|
||||
<PTABLE MAIN-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-9>) (ICON PYRAMID-ICON) (ACTION
|
||||
PYRAMID-F)>
|
||||
<DEFINE-ROUTINE PYRAMID-F>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT CUP (LOC PYRAMID-L) (DESC "cup") (SYNONYM CUP) (FLAGS TAKEBIT CONTBIT
|
||||
SEARCHBIT OPENBIT) (ACTION CUP-F)>
|
||||
<DEFINE-ROUTINE CUP-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT CASTLE>
|
||||
<OBJECT POTION (LOC CUP) (DESC "magic potion") (SYNONYM POTION POTIONS LIQUID)
|
||||
(ADJECTIVE MAGIC YELLOW-GREEN) (FLAGS NARTICLEBIT) (RESEARCH
|
||||
"\"Potions are the most accessible form of magic for the masses, since
|
||||
they are simply drunk like water. No lessons in complicated spell-casting
|
||||
are required.\"") (ACTION POTION-F)>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<GLOBAL POTION-GULPS 4>
|
||||
<GLOBAL PLANT-TALKER <>>
|
||||
<DEFINE-ROUTINE POTION-F>
|
||||
<DEFINE-ROUTINE I-POTION>
|
||||
<DEFINE-ROUTINE PLANT-STUNNED>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT FENSHIRE>
|
||||
<OBJECT COOKPOT (DESC "cookpot") (SYNONYM COOKPOT POT) (FLAGS CONTBIT OPENBIT
|
||||
SEARCHBIT) (CAPACITY 50) (ACTION COOKPOT-F)>
|
||||
<DEFINE-ROUTINE COOKPOT-F>
|
||||
<OBJECT COOKFIRE (DESC "cookfire") (SYNONYM COOKFIRE FIRE) (FLAGS FLAMEBIT)>
|
||||
<END-SEGMENT>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,452 @@
|
|||
|
||||
<BEGIN-SEGMENT LAKE>
|
||||
<ROOM WEST-SHORE (LOC ROOMS) (DESC "West Shore") (REGION "Flatheadia") (EAST
|
||||
SORRY "These waters are known for their hungry denizens.") (WEST TO ROYAL-ZOO)
|
||||
(FLAGS RLANDBIT ONBIT UNDERGROUNDBIT) (GLOBAL LAKE-FLATHEAD STAIRS) (MAP-LOC <
|
||||
PTABLE LAKE-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-3>) (ICON WEST-SHORE-ICON) (ACTION
|
||||
WEST-SHORE-F)>
|
||||
<DEFINE-ROUTINE WEST-SHORE-F>
|
||||
<OBJECT WEST-DOCK (LOC WEST-SHORE) (DESC "yellow dock") (SYNONYM DOCK) (
|
||||
ADJECTIVE YELLOW WEST) (CAPACITY 200) (FLAGS NDESCBIT VEHBIT DROPBIT OPENBIT
|
||||
SEARCHBIT CONTBIT SURFACEBIT) (ACTION DOCK-F)>
|
||||
<ROOM NORTH-SHORE (LOC ROOMS) (DESC "North Shore") (REGION "Flatheadia") (SOUTH
|
||||
SORRY "These waters are known for their hungry denizens.") (NORTH TO PHIL-HALL)
|
||||
(NE TO THEATRE) (FLAGS RLANDBIT ONBIT UNDERGROUNDBIT) (GLOBAL LAKE-FLATHEAD
|
||||
STAIRS) (MAP-LOC <PTABLE LAKE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-4>) (ICON
|
||||
NORTH-SHORE-ICON) (ACTION NORTH-SHORE-F)>
|
||||
<DEFINE-ROUTINE NORTH-SHORE-F>
|
||||
<OBJECT NORTH-DOCK (LOC NORTH-SHORE) (DESC "red dock") (SYNONYM DOCK) (
|
||||
ADJECTIVE RED NORTH) (CAPACITY 200) (FLAGS NDESCBIT VEHBIT DROPBIT OPENBIT
|
||||
SEARCHBIT CONTBIT SURFACEBIT) (ACTION DOCK-F)>
|
||||
<ROOM EAST-SHORE (LOC ROOMS) (REGION "Flatheadia") (DESC "East Shore") (WEST
|
||||
SORRY "These waters are known for their hungry denizens.") (EAST TO
|
||||
BASE-OF-MOUNTAIN) (FLAGS RLANDBIT ONBIT UNDERGROUNDBIT) (GLOBAL LAKE-FLATHEAD
|
||||
STAIRS G-U-MOUNTAIN) (MAP-LOC <PTABLE LAKE-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-5>) (
|
||||
ICON EAST-SHORE-ICON) (ACTION EAST-SHORE-F)>
|
||||
<DEFINE-ROUTINE EAST-SHORE-F>
|
||||
<OBJECT EAST-DOCK (LOC EAST-SHORE) (DESC "blue dock") (SYNONYM DOCK) (ADJECTIVE
|
||||
BLUE EAST) (CAPACITY 200) (FLAGS NDESCBIT VEHBIT DROPBIT OPENBIT SEARCHBIT
|
||||
CONTBIT SURFACEBIT) (ACTION DOCK-F)>
|
||||
<ROOM SOUTH-SHORE (LOC ROOMS) (DESC "South Shore") (REGION "Flatheadia") (NORTH
|
||||
SORRY "These waters are known for their hungry denizens.") (SOUTH TO
|
||||
EDGE-OF-DESERT) (WEST TO STREAM) (FLAGS RLANDBIT ONBIT UNDERGROUNDBIT) (GLOBAL
|
||||
LAKE-FLATHEAD STAIRS) (MAP-LOC <PTABLE LAKE-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-4>) (
|
||||
ICON SOUTH-SHORE-ICON) (ACTION SOUTH-SHORE-F)>
|
||||
<DEFINE-ROUTINE SOUTH-SHORE-F>
|
||||
<OBJECT SOUTH-DOCK (LOC SOUTH-SHORE) (DESC "green dock") (SYNONYM DOCK) (
|
||||
ADJECTIVE GREEN SOUTH) (CAPACITY 200) (FLAGS NDESCBIT VEHBIT DROPBIT OPENBIT
|
||||
SEARCHBIT CONTBIT SURFACEBIT) (ACTION DOCK-F)>
|
||||
<DEFINE-ROUTINE DOCK-F>
|
||||
<OBJECT YACHT (LOC WEST-SHORE) (DESC "royal yacht") (LDESC
|
||||
"The royal yacht sits by the dock, bobbing gently in the swell of the lake.") (
|
||||
SYNONYM YACHT BOAT) (ADJECTIVE ROYAL) (CAPACITY 200) (FLAGS VEHBIT DROPBIT
|
||||
OPENBIT SEARCHBIT CONTBIT SURFACEBIT) (ACTION YACHT-F)>
|
||||
<DEFINE-ROUTINE YACHT-F>
|
||||
<OBJECT YACHT-CONTROLS (LOC YACHT) (DESC "controls") (SYNONYM CONTROL CONTROLS
|
||||
ROSE COMPASS) (ADJECTIVE COMPASS) (FLAGS NDESCBIT NARTICLEBIT PLURALBIT) (
|
||||
ACTION YACHT-CONTROLS-F)>
|
||||
<DEFINE-ROUTINE YACHT-CONTROLS-F>
|
||||
<OBJECT YACHT-PLAQUE (LOC YACHT) (DESC "brass plaque") (SYNONYM PLAQUE) (
|
||||
ADJECTIVE SMALL BRASS) (FLAGS READBIT NDESCBIT) (TEXT
|
||||
"\"Made by the Frobozz Magic Royal Yacht Company.\"")>
|
||||
<OBJECT RED-BUTTON (LOC YACHT) (DESC "red button") (SYNONYM BUTTON) (ADJECTIVE
|
||||
RED) (FLAGS NDESCBIT) (ACTION YACHT-BUTTON-F)>
|
||||
<OBJECT BLUE-BUTTON (LOC YACHT) (DESC "blue button") (SYNONYM BUTTON) (
|
||||
ADJECTIVE BLUE) (FLAGS NDESCBIT) (ACTION YACHT-BUTTON-F)>
|
||||
<OBJECT GREEN-BUTTON (LOC YACHT) (DESC "green button") (SYNONYM BUTTON) (
|
||||
ADJECTIVE GREEN) (FLAGS NDESCBIT) (ACTION YACHT-BUTTON-F)>
|
||||
<OBJECT YELLOW-BUTTON (LOC YACHT) (DESC "yellow button") (SYNONYM BUTTON) (
|
||||
ADJECTIVE YELLOW) (FLAGS NDESCBIT) (ACTION YACHT-BUTTON-F)>
|
||||
<OBJECT WHITE-BUTTON (LOC YACHT) (DESC "white button") (SYNONYM BUTTON) (
|
||||
ADJECTIVE WHITE FIFTH CENTER MIDDLE) (FLAGS NDESCBIT) (ACTION YACHT-BUTTON-F)>
|
||||
<DEFINE-ROUTINE YACHT-BUTTON-F>
|
||||
<GLOBAL YACHT-DESTINATION <>>
|
||||
<DEFINE-ROUTINE I-YACHT>
|
||||
<ROOM HOLD (LOC ROOMS) (REGION "Flatheadia") (DESC "Hold") (LDESC
|
||||
"You are in a cabin under the deck of the royal yacht. A steep gangway leads
|
||||
upward.") (UP PER YACHT-ENTER-F) (IN PER DB-ENTER-F) (FLAGS RLANDBIT
|
||||
UNDERGROUNDBIT) (GLOBAL STAIRS) (SYNONYM HOLD) (MAP-LOC <PTABLE LAKE-MAP-NUM
|
||||
MAP-GEN-Y-5 MAP-GEN-X-1>) (ICON HOLD-ICON)>
|
||||
<DEFINE-ROUTINE YACHT-ENTER-F>
|
||||
<DEFINE-ROUTINE DB-ENTER-F>
|
||||
<OBJECT DB (LOC HOLD) (DESC "bathysphere") (SYNONYM SPHERE BATHYSPHERE DOOR
|
||||
HATCH BELL) (ADJECTIVE DIVING) (CAPACITY 200) (FLAGS VEHBIT INBIT DROPBIT
|
||||
CONTBIT SEARCHBIT TRANSBIT) (ACTION DB-F)>
|
||||
<GLOBAL DB-CONTROLS-DESCRIBED <>>
|
||||
<DEFINE-ROUTINE DB-F>
|
||||
<OBJECT DB-CONTROLS (LOC DB) (DESC "controls") (SYNONYM CONTROL CONTROLS) (
|
||||
FLAGS NDESCBIT NARTICLEBIT PLURALBIT) (GENERIC G-DB-HOLE-F) (ACTION
|
||||
DB-CONTROLS-F)>
|
||||
<DEFINE-ROUTINE DB-CONTROLS-F>
|
||||
<OBJECT DB-PLAQUE (LOC DB) (DESC "brass plaque") (SYNONYM PLAQUE) (ADJECTIVE
|
||||
SMALL BRASS) (FLAGS READBIT NDESCBIT) (TEXT
|
||||
"\"A product of the Frobozz Magic Bathysphere Company, designed by
|
||||
Jacques Yves Flathead.\"")>
|
||||
<DEFINE-ROUTINE G-DB-HOLE-F>
|
||||
<OBJECT PORTHOLE (LOC DB) (DESC "porthole") (SYNONYM PORTHOLE PORT HOLE) (
|
||||
ADJECTIVE PORT) (FLAGS NDESCBIT) (GENERIC G-DB-HOLE-F) (ACTION PORTHOLE-F)>
|
||||
<DEFINE-ROUTINE PORTHOLE-F>
|
||||
<OBJECT RUBY (LOC LAKE-BOTTOM) (DESC "moby ruby") (PLURAL "rubies") (FDESC
|
||||
"A ruby of incredible size and beauty is buried in the sand.") (SYNONYM RUBY
|
||||
JEWEL) (ADJECTIVE RED MOBY LARGE BEAUTIFUL) (FLAGS TRYTAKEBIT TAKEBIT READBIT)
|
||||
(VALUE 25) (SIZE 3) (TEXT
|
||||
"This ruby must surely be the largest jewel in the land.")>
|
||||
<OBJECT EXTERIOR-LIGHT (LOC DB) (DESC "exterior light") (SYNONYM LIGHT LIGHTS)
|
||||
(ADJECTIVE EXTERIOR) (FLAGS LIGHTBIT NDESCBIT VOWELBIT)>
|
||||
<OBJECT WALDO (LOC HOLD) (DESC "waldo") (SYNONYM WALDO) (ADJECTIVE EXTERIOR) (
|
||||
FLAGS NDESCBIT CONTBIT SEARCHBIT OPENBIT) (ACTION WALDO-F)>
|
||||
<DEFINE-ROUTINE WALDO-F>
|
||||
<GLOBAL HAND-IN-WALDO <>>
|
||||
<OBJECT HAND-HOLE (LOC DB) (DESC "hand-hole") (SYNONYM HOLE HAND-HOLE CONTROL)
|
||||
(ADJECTIVE HAND WALDO) (FLAGS NDESCBIT) (GENERIC G-DB-HOLE-F) (ACTION
|
||||
HAND-HOLE-F)>
|
||||
<DEFINE-ROUTINE HAND-HOLE-F>
|
||||
<DEFINE-ROUTINE WALDO-TAKE>
|
||||
<OBJECT LEVER (LOC DB) (DESC "up-down lever") (SYNONYM LEVER) (ADJECTIVE
|
||||
UP-DOWN) (FLAGS NDESCBIT VOWELBIT) (ACTION LEVER-F)>
|
||||
<GLOBAL DB-DIRECTION 0>
|
||||
<GLOBAL DB-DEPTH 0>
|
||||
<GLOBAL PIECE-DROWNED 0>
|
||||
<DEFINE-ROUTINE LEVER-F>
|
||||
<DEFINE-ROUTINE GLANCE>
|
||||
<DEFINE-ROUTINE I-DB>
|
||||
<ROOM LAKE-FLATHEAD (LOC ROOMS) (REGION "Flatheadia") (DESC "Lake Flathead") (
|
||||
LDESC "You are in the center of a once-handsome lake, lit from the roof high
|
||||
overhead. On the distant shores, you can spot docks in all four
|
||||
cardinal directions.") (FLAGS RLANDBIT ONBIT UNDERGROUNDBIT NARTICLEBIT
|
||||
WATERBIT) (SYNONYM LAKE FLATHEAD) (ADJECTIVE FLATHEAD LAKE PLACID CLEAR CRYSTAL
|
||||
) (VALUE 18) (MAP-LOC <PTABLE LAKE-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-4>) (GLOBAL
|
||||
STAIRS) (ICON LAKE-FLATHEAD-ICON) (RESEARCH
|
||||
"\"This large and handsome lake lies entirely within the royal castle at
|
||||
Flatheadia.\"") (ACTION LAKE-FLATHEAD-F)>
|
||||
<DEFINE-ROUTINE LAKE-FLATHEAD-F>
|
||||
<ROOM UNDERWATER (LOC ROOMS) (REGION "Flatheadia") (DESC "Underwater") (LDESC
|
||||
"Here, between the surface and floor of Lake Flathead, the water is somewhat
|
||||
clearer.") (FLAGS RLANDBIT UNDERGROUNDBIT) (GLOBAL LAKE-FLATHEAD) (MAP-LOC <
|
||||
PTABLE LAKE-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-1>) (ICON UNDERWATER-ICON)>
|
||||
<ROOM LAKE-BOTTOM (LOC ROOMS) (REGION "Flatheadia") (DESC "Lake Bottom") (LDESC
|
||||
"You have reached the sandy bottom at the deepest point of Lake Flathead.
|
||||
Beautiful freshwater fish swim among slowly waving spenseweeds.") (FLAGS
|
||||
RLANDBIT UNDERGROUNDBIT) (GLOBAL LAKE-FLATHEAD) (MAP-LOC <PTABLE LAKE-MAP-NUM
|
||||
MAP-GEN-Y-7 MAP-GEN-X-1>) (ICON LAKE-BOTTOM-ICON) (ACTION LAKE-BOTTOM-F)>
|
||||
<DEFINE-ROUTINE LAKE-BOTTOM-F>
|
||||
<OBJECT LAKE-BOTTOM-FISH (LOC LAKE-BOTTOM) (DESC "freshwater fish") (SYNONYM
|
||||
FISH) (ADJECTIVE BEAUTIFUL FRESHWATER) (FLAGS NDESCBIT) (ACTION
|
||||
LAKE-BOTTOM-FISH-F)>
|
||||
<DEFINE-ROUTINE LAKE-BOTTOM-FISH-F>
|
||||
<ROOM BASE-OF-MOUNTAIN (LOC ROOMS) (REGION "Flatheadia") (DESC
|
||||
"Base of Mountain") (LDESC
|
||||
"In a rare moment of restraint, Dimwit scaled back his plans for putting
|
||||
an entire mountain range in the castle, settling for merely a single mountain.
|
||||
A difficult trail leads east up the mountain; easier paths head north, west,
|
||||
and south.") (NORTH TO STABLE) (SOUTH TO G-U-WOODS) (WEST TO EAST-SHORE) (EAST
|
||||
PER G-U-MOUNTAIN-ENTER-F) (UP PER G-U-MOUNTAIN-ENTER-F) (FLAGS RLANDBIT ONBIT
|
||||
UNDERGROUNDBIT) (GLOBAL G-U-MOUNTAIN) (MAP-LOC <PTABLE LAKE-MAP-NUM MAP-GEN-Y-5
|
||||
MAP-GEN-X-6>) (ICON BASE-OF-MT-ICON)>
|
||||
<DEFINE-ROUTINE G-U-MOUNTAIN-ENTER-F>
|
||||
<ROOM STABLE (LOC ROOMS) (REGION "Flatheadia") (DESC "Stable") (LDESC
|
||||
"The stalls here once held thousands of royal mounts. The only exit is south.")
|
||||
(SOUTH TO BASE-OF-MOUNTAIN) (OUT TO BASE-OF-MOUNTAIN) (FLAGS RLANDBIT
|
||||
UNDERGROUNDBIT) (SYNONYM STABLE) (MAP-LOC <PTABLE LAKE-MAP-NUM MAP-GEN-Y-4
|
||||
MAP-GEN-X-6>) (ICON STABLE-ICON) (THINGS <> STALL STALL-PS) (ACTION STABLE-F)>
|
||||
<DEFINE-ROUTINE STABLE-F>
|
||||
<DEFINE-ROUTINE STALL-PS>
|
||||
<OBJECT SADDLE (LOC STABLE) (DESC "saddle") (FDESC
|
||||
"A well-worn unicorn saddle, of military style, is hanging at the far
|
||||
end of the stable.") (SYNONYM SADDLE) (ADJECTIVE WELL-WORN UNICORN MILITARY) (
|
||||
FLAGS TAKEBIT MAGICBIT READBIT) (SIZE 15) (VALUE 12) (TEXT
|
||||
"You can barely make out the name \"Wilma.\"") (ACTION SADDLE-F)>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<DEFINE-ROUTINE SADDLE-F>
|
||||
<OBJECT ROOSTER (LOC STABLE) (DESC "rooster") (FDESC
|
||||
"There's not a horse in sight. However, there is a rooster here, strutting
|
||||
back and forth between the stalls.") (SYNONYM ROOSTER BIRD VANE) (ADJECTIVE
|
||||
WEATHER) (FLAGS TAKEBIT TRYTAKEBIT ANIMATEDBIT) (INANIMATE-DESC "weather vane")
|
||||
(WAND-TEXT "The rooster stops moving and takes on the complexion of wrought iron."
|
||||
) (ANIMATE-ROUTINE I-W-ROOSTER) (SIZE 10) (ACTION ROOSTER-F)>
|
||||
<DEFINE-ROUTINE ROOSTER-F>
|
||||
<DEFINE-ROUTINE I-W-ROOSTER>
|
||||
<GLOBAL ROOSTER-PROB 100>
|
||||
<GLOBAL ROOSTER-BURP <>>
|
||||
<DEFINE-ROUTINE I-ROOSTER>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT LAKE>
|
||||
<ROOM G-U-MOUNTAIN (LOC ROOMS) (REGION "Flatheadia") (DESC
|
||||
"Great Underground Mountain") (WEST TO BASE-OF-MOUNTAIN) (DOWN TO
|
||||
BASE-OF-MOUNTAIN) (NORTH PER CAVE-ENTER-F) (IN PER CAVE-ENTER-F) (FLAGS
|
||||
RLANDBIT ONBIT UNDERGROUNDBIT) (SYNONYM MOUNTAIN) (ADJECTIVE GREAT UNDERGROUND)
|
||||
(RESEARCH "\"One of the many awe-inspiring features of Dimwit's castle in Flatheadia.\""
|
||||
) (GLOBAL LAKE-FLATHEAD) (MAP-LOC <PTABLE LAKE-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-7>
|
||||
) (ICON G-U-MOUNTAIN-ICON) (ACTION G-U-MOUNTAIN-F)>
|
||||
<DEFINE-ROUTINE G-U-MOUNTAIN-F>
|
||||
<DEFINE-ROUTINE CAVE-ENTER-F>
|
||||
<OBJECT BOULDER (LOC G-U-MOUNTAIN) (DESC "boulder") (SYNONYM BOULDER ROCK) (
|
||||
ADJECTIVE LARGE) (FLAGS NDESCBIT) (ACTION BOULDER-F)>
|
||||
<DEFINE-ROUTINE BOULDER-F>
|
||||
<OBJECT CAVE-OBJECT (DESC "cave") (SYNONYM CAVE) (ADJECTIVE TINY) (FLAGS
|
||||
NDESCBIT) (ACTION CAVE-OBJECT-F)>
|
||||
<DEFINE-ROUTINE CAVE-OBJECT-F>
|
||||
<ROOM GROTTO (LOC ROOMS) (REGION "Region: Unknown") (DESC "Grotto") (LDESC
|
||||
"You are in a damp grotto near the peak of the Great Underground Mountain.
|
||||
Slimy moss covers the irregular rock walls. Winding passages lead south and
|
||||
northeast, and a steep gravelly passage leads downward at an alarming angle.")
|
||||
(SOUTH TO G-U-MOUNTAIN) (NE TO SHRINE) (DOWN PER LOWEST-HALL-ENTER-F) (WEST PER
|
||||
LOWEST-HALL-ENTER-F) (FLAGS RLANDBIT UNDERGROUNDBIT) (SYNONYM GROTTO) (MAP-LOC
|
||||
<PTABLE LAKE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-7>)>
|
||||
P
|
||||
<OBJECT GROTTO-REBUS-BUTTON (LOC GROTTO) (SDESC "blinking key-shaped button") (
|
||||
FDESC "Imbedded in the rocky wall is a blinking button in the shape of a key.")
|
||||
(SYNONYM BUTTON) (ADJECTIVE KEY-SHAPED BLINKING) (ACTION REBUS-BUTTON-F)>
|
||||
<DEFINE-ROUTINE LOWEST-HALL-ENTER-F>
|
||||
<OBJECT GRAVEL (LOC LOCAL-GLOBALS) (DESC "gravel") (PLURAL "gravel") (SYNONYM
|
||||
GRAVEL) (GENERIC G-GRAVEL-F) (FLAGS TAKEBIT NARTICLEBIT) (ACTION GRAVEL-F)>
|
||||
<OBJECT MORE-GRAVEL (LOC LOCAL-GLOBALS) (DESC "more gravel") (PLURAL "gravel")
|
||||
(SYNONYM GRAVEL) (ADJECTIVE MORE) (GENERIC G-GRAVEL-F) (FLAGS TAKEBIT
|
||||
NARTICLEBIT) (ACTION GRAVEL-F)>
|
||||
<OBJECT EVEN-MORE-GRAVEL (LOC LOCAL-GLOBALS) (DESC "even more gravel") (PLURAL
|
||||
"gravel") (SYNONYM GRAVEL) (ADJECTIVE EVEN MORE) (GENERIC G-GRAVEL-F) (FLAGS
|
||||
TAKEBIT NARTICLEBIT) (ACTION GRAVEL-F)>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<DEFINE-ROUTINE G-GRAVEL-F>
|
||||
<DEFINE-ROUTINE GRAVEL-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT LAKE>
|
||||
<ROOM SHRINE (LOC ROOMS) (DESC "Shrine") (REGION "Region: Unknown") (LDESC
|
||||
"You have stumbled upon a long-hidden shrine to Saint Foobus of Galepath.
|
||||
An idol of Foobus is carved from the very rock that forms this cave. The only
|
||||
exit is southwest.") (SW TO GROTTO) (OUT TO GROTTO) (FLAGS RLANDBIT
|
||||
UNDERGROUNDBIT) (MAP-LOC <PTABLE LAKE-MAP-NUM MAP-GEN-Y-2 MAP-GEN-X-8>) (ICON
|
||||
SHRINE-ICON)>
|
||||
<OBJECT IDOL (LOC SHRINE) (DESC "idol") (SYNONYM ST SAINT IDOL FOOBUS GALEPATH
|
||||
SHRINE) (ADJECTIVE SAINT ST) (FLAGS NDESCBIT VOWELBIT) (RESEARCH
|
||||
"\"The legendary Saint Foobus was said to have power over lowly insects.\"") (
|
||||
ACTION IDOL-F)>
|
||||
<DEFINE-ROUTINE IDOL-F>
|
||||
<OBJECT BOWL (LOC SHRINE) (DESC "bowl") (LDESC
|
||||
"Sitting before the idol is a translucent bowl, extremely tall and narrow,
|
||||
like a carafe.") (SYNONYM BOWL CARAFE) (ADJECTIVE TRANSLUCENT TALL NARROW) (
|
||||
FLAGS TRYTAKEBIT CONTBIT OPENBIT SEARCHBIT) (CAPACITY 25) (ACTION BOWL-F)>
|
||||
<DEFINE-ROUTINE BOWL-F>
|
||||
<DEFINE-ROUTINE GRAVEL-COUNT>
|
||||
<OBJECT ELIXIR (LOC BOWL) (DESC "elixir") (SYNONYM ELIXIR LIQUID) (ADJECTIVE
|
||||
MILKY) (FLAGS VOWELBIT) (ACTION ELIXIR-F)>
|
||||
<DEFINE-ROUTINE ELIXIR-F>
|
||||
<ROOM BATS-LAIR (LOC ROOMS) (DESC "Bat's Lair") (REGION "Region: Unknown") (
|
||||
LDESC "Only a deranged bat would live in this disgusting nesting space, caked with
|
||||
layer upon layer of dried guano. A precarious path leads down to the west;
|
||||
there's little chance you'd be able to climb back.") (DOWN PER LAIR-EXIT-F) (
|
||||
OUT PER LAIR-EXIT-F) (WEST PER LAIR-EXIT-F) (FLAGS RLANDBIT UNDERGROUNDBIT) (
|
||||
SYNONYM LAIR) (ADJECTIVE BAT\'S) (MAP-LOC <PTABLE LAKE-MAP-NUM MAP-GEN-Y-6
|
||||
MAP-GEN-X-7>) (ICON BATS-LAIR-ICON)>
|
||||
<DEFINE-ROUTINE LAIR-EXIT-F>
|
||||
<ROOM G-U-WOODS (LOC ROOMS) (DESC "Great Underground Woods") (REGION
|
||||
"Flatheadia") (LDESC
|
||||
"You are surrounded by tall oaks and wide pines. Birds chirp in the distance.
|
||||
Trails wind north and southwest among the trees.") (NORTH TO BASE-OF-MOUNTAIN)
|
||||
(SW TO G-U-SAVANNAH) (FLAGS RLANDBIT ONBIT UNDERGROUNDBIT) (SYNONYM WOODS) (
|
||||
ADJECTIVE GREAT UNDERGROUND) (RESEARCH
|
||||
"\"One of the many awe-inspiring features of Dimwit's castle in Flatheadia.\"")
|
||||
(MAP-LOC <PTABLE LAKE-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-6>) (THINGS TALL OAK
|
||||
TREE-PS WIDE PINE TREE-PS PINE TREE TREE-PS OAK TREE TREE-PS) (ACTION
|
||||
G-U-WOODS-F)>
|
||||
<DEFINE-ROUTINE G-U-WOODS-F>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT FOX (LOC G-U-WOODS) (DESC "fox") (PLURAL "foxes") (FDESC
|
||||
"A fox is leaning against a nearby tree, looking sly.") (SYNONYM FOX STOLE) (
|
||||
ADJECTIVE FOX) (FLAGS TAKEBIT TRYTAKEBIT ANIMATEDBIT) (INANIMATE-DESC
|
||||
"fox stole") (WAND-TEXT "The fox's eyes turn glassy.") (ANIMATE-ROUTINE I-W-FOX
|
||||
) (SIZE 15) (ACTION FOX-F)>
|
||||
<DEFINE-ROUTINE FOX-F>
|
||||
<DEFINE-ROUTINE WOULDNT-MIND>
|
||||
<DEFINE-ROUTINE I-W-FOX>
|
||||
<GLOBAL FOX-PROB 100>
|
||||
<GLOBAL FOX-BURP <>>
|
||||
<DEFINE-ROUTINE I-FOX>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT LAKE>
|
||||
<ROOM G-U-SAVANNAH (LOC ROOMS) (REGION "Flatheadia") (DESC
|
||||
"Great Underground Savannah") (LDESC
|
||||
"Dimwit's mania for including every conceivable ecosystem under his roof
|
||||
continues here. This flat grassland ends at woods to the northeast, and
|
||||
at a desert to the west. A herd of unicorns is grazing nearby.") (NE TO
|
||||
G-U-WOODS) (WEST TO EDGE-OF-DESERT) (FLAGS RLANDBIT ONBIT UNDERGROUNDBIT) (
|
||||
SYNONYM SAVANNAH) (ADJECTIVE GREAT UNDERGROUND) (RESEARCH
|
||||
"\"One of the many awe-inspiring features of Dimwit's castle in Flatheadia.\"")
|
||||
(MAP-LOC <PTABLE LAKE-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-5>) (ICON G-U-SAVANNAH-ICON
|
||||
) (ACTION FLY-ROOM-F)>
|
||||
<OBJECT UNICORNS (LOC G-U-SAVANNAH) (OWNER UNICORNS) (DESC "herd of unicorns")
|
||||
(SYNONYM UNICORN UNICORNS HERD) (ADJECTIVE GRAZING) (FLAGS NDESCBIT) (RESEARCH
|
||||
"\"A magical beast, sometimes used as a combat mount.\"") (ACTION UNICORNS-F)>
|
||||
<DEFINE-ROUTINE UNICORNS-F>
|
||||
<ROOM STREAM (LOC ROOMS) (DESC "Stream") (REGION "Flatheadia") (EAST TO
|
||||
SOUTH-SHORE) (WEST PER BRIDGE-ENTER-F) (FLAGS RLANDBIT ONBIT UNDERGROUNDBIT) (
|
||||
GLOBAL LAKE-FLATHEAD) (RIDDLE
|
||||
"|
|
||||
'One night four men sat down to play;|
|
||||
They played and played till break of day.|
|
||||
They played for money; not for fun,|
|
||||
With separate scores for every one.|
|
||||
And when time came to square accounts,|
|
||||
They all had made quite nice amounts!'|
|
||||
What were the men playing?\" As the jester awaits your answer, you notice
|
||||
that he is holding the framed document.") (MAP-LOC <PTABLE LAKE-MAP-NUM
|
||||
MAP-GEN-Y-6 MAP-GEN-X-3>) (ACTION CAMEL-DRINK-ROOM-F)>
|
||||
<OBJECT BRIDGE (LOC STREAM) (DESC "odd green bridge") (SYNONYM BRIDGE) (
|
||||
ADJECTIVE STRANGE ODD UNUSUAL GREEN) (FLAGS VOWELBIT NDESCBIT) (ACTION BRIDGE-F
|
||||
)>
|
||||
<DEFINE-ROUTINE BRIDGE-F>
|
||||
<DEFINE-ROUTINE BRIDGE-ENTER-F>
|
||||
<OBJECT MUSIC (LOC GLOBAL-OBJECTS) (DESC "music") (SYNONYM MUSIC INSTRUMENTS) (
|
||||
ADJECTIVE MUSICAL) (FLAGS NARTICLEBIT) (ACTION MUSIC-F)>
|
||||
<DEFINE-ROUTINE MUSIC-F>
|
||||
<OBJECT STREAM-OBJECT (LOC STREAM) (DESC "stream") (SYNONYM STREAM) (FLAGS
|
||||
NDESCBIT WATERBIT) (ACTION STREAM-OBJECT-F)>
|
||||
<DEFINE-ROUTINE STREAM-OBJECT-F>
|
||||
<DEFINE-ROUTINE CAMEL-DRINK-ROOM-F>
|
||||
<OBJECT DIPLOMA (LOC STREAM) (DESC "diploma") (SYNONYM DIPLOMA DOCUMENT) (
|
||||
ADJECTIVE FRAMED) (FLAGS TAKEBIT TRYTAKEBIT READBIT NDESCBIT MAGICBIT) (VALUE 0
|
||||
) (TEXT "The diploma is from the Borphee Business School, but the name of the
|
||||
recipient is too faded to read.") (SIZE 2) (ACTION DIPLOMA-F)>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<DEFINE-ROUTINE DIPLOMA-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT LAKE>
|
||||
<ROOM EDGE-OF-DESERT (LOC ROOMS) (DESC "Edge of Desert") (REGION "Flatheadia")
|
||||
(LDESC "Dimwit wanted a sandbox, but thanks to his lack of perspective he ended up
|
||||
with a desert. The bulk of the desert lies to the south; paths lead in the
|
||||
other cardinal directions.") (NORTH TO SOUTH-SHORE) (NE SORRY
|
||||
"Sand dunes block your way.") (EAST TO G-U-SAVANNAH) (SE SORRY
|
||||
"Sand dunes block your way.") (WEST TO RING-OF-DUNES) (SW SORRY
|
||||
"Sand dunes block your way.") (SOUTH PER DESERT-ENTER-F) (NW SORRY
|
||||
"Sand dunes block your way.") (FLAGS RLANDBIT ONBIT DESERTBIT UNDERGROUNDBIT) (
|
||||
GLOBAL G-U-DESERT) (MAP-LOC <PTABLE LAKE-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-4>) (
|
||||
ACTION DESERT-ROOM-F)>
|
||||
<ROOM RING-OF-DUNES (LOC ROOMS) (DESC "Ring of Dunes") (REGION "Flatheadia") (
|
||||
LDESC "You are surrounded by sand dunes on all sides but the east.") (NORTH
|
||||
SORRY "Sand dunes block your way.") (NE SORRY "Sand dunes block your way.") (
|
||||
EAST TO EDGE-OF-DESERT) (SE SORRY "Sand dunes block your way.") (SOUTH SORRY
|
||||
"Sand dunes block your way.") (SW SORRY "Sand dunes block your way.") (WEST
|
||||
SORRY "Sand dunes block your way.") (NW SORRY "Sand dunes block your way.") (
|
||||
FLAGS RLANDBIT ONBIT DESERTBIT UNDERGROUNDBIT) (GLOBAL G-U-DESERT) (MAP-LOC <
|
||||
PTABLE LAKE-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-3>) (ICON RING-OF-DUNES-ICON) (ACTION
|
||||
DESERT-ROOM-F)>
|
||||
<OBJECT CAMEL (LOC RING-OF-DUNES) (DESC "camel") (SYNONYM CAMEL FIXTURE) (
|
||||
ADJECTIVE MERRY-GO-ROUND) (FLAGS ACTORBIT VEHBIT SEARCHBIT OPENBIT ANIMATEDBIT)
|
||||
(RESEARCH "\"A desert animal.\"") (GENERIC G-CAMEL-F) (INANIMATE-DESC
|
||||
"merry-go-round fixture") (WAND-TEXT
|
||||
"The camel, never a speed demon to begin with, becomes still. His coloring
|
||||
grows gaudier, and a few bars of honky-tonk music drift through the air.") (
|
||||
ANIMATE-ROUTINE I-W-CAMEL) (ACTION CAMEL-F)>
|
||||
<DEFINE-ROUTINE G-CAMEL-F>
|
||||
<GLOBAL CAMEL-THIRSTY T>
|
||||
<DEFINE-ROUTINE CAMEL-F>
|
||||
<DEFINE-ROUTINE I-W-CAMEL>
|
||||
<DEFINE-ROUTINE DESERT-ENTER-F>
|
||||
<ROOM G-U-DESERT (LOC ROOMS) (DESC "Great Underground Desert") (REGION
|
||||
"Flatheadia") (LDESC
|
||||
"You are in the midst of a searingly hot desert. Trails snake amongst
|
||||
the dunes in many directions.") (NORTH TO EDGE-OF-DESERT) (NE SORRY
|
||||
"Sand dunes block your way.") (EAST SORRY "Sand dunes block your way.") (SE
|
||||
SORRY "Sand dunes block your way.") (SOUTH TO CACTUS-PATCH) (SW TO
|
||||
WINDBLOWN-SANDS) (WEST SORRY "Sand dunes block your way.") (NW SORRY
|
||||
"Sand dunes block your way.") (FLAGS RLANDBIT ONBIT DESERTBIT UNDERGROUNDBIT) (
|
||||
SYNONYM DESERT) (ADJECTIVE GREAT UNDERGROUND) (RESEARCH
|
||||
"\"One of the many awe-inspiring features of Dimwit's castle in Flatheadia.\"")
|
||||
(MAP-LOC <PTABLE DESERT-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-6>) (ACTION DESERT-ROOM-F
|
||||
)>
|
||||
<ROOM WINDBLOWN-SANDS (LOC ROOMS) (DESC "Windblown Sands") (REGION "Flatheadia"
|
||||
) (LDESC "You are in the midst of a searingly hot desert. Trails snake amongst
|
||||
the dunes in many directions.") (NORTH SORRY "Sand dunes block your way.") (NE
|
||||
TO G-U-DESERT) (EAST TO CACTUS-PATCH) (SE TO DESERT-PLAIN) (SOUTH SORRY
|
||||
"Sand dunes block your way.") (SW SORRY "Sand dunes block your way.") (WEST
|
||||
SORRY "Sand dunes block your way.") (NW SORRY "Sand dunes block your way.") (
|
||||
FLAGS RLANDBIT ONBIT DESERTBIT UNDERGROUNDBIT) (GLOBAL G-U-DESERT) (MAP-LOC <
|
||||
PTABLE DESERT-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-5>) (ACTION DESERT-ROOM-F)>
|
||||
<ROOM CACTUS-PATCH (LOC ROOMS) (DESC "Cactus Patch") (REGION "Flatheadia") (
|
||||
LDESC "You are in the midst of a searingly hot desert. Trails snake amongst
|
||||
the dunes in many directions.") (NORTH TO G-U-DESERT) (NE SORRY
|
||||
"Sand dunes block your way.") (EAST SORRY "Sand dunes block your way.") (SE
|
||||
SORRY "Sand dunes block your way.") (SOUTH SORRY "Sand dunes block your way.")
|
||||
(SW SORRY "Sand dunes block your way.") (WEST TO WINDBLOWN-SANDS) (NW SORRY
|
||||
"Sand dunes block your way.") (FLAGS RLANDBIT ONBIT DESERTBIT UNDERGROUNDBIT) (
|
||||
GLOBAL G-U-DESERT) (MAP-LOC <PTABLE DESERT-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-6>) (
|
||||
ICON CACTUS-PATCH-ICON) (ACTION DESERT-ROOM-F)>
|
||||
<OBJECT CACTI (LOC CACTUS-PATCH) (DESC "cactus") (SYNONYM CACTUS CACTI) (FLAGS
|
||||
NDESCBIT PLANTBIT) (ACTION CACTI-F)>
|
||||
<DEFINE-ROUTINE CACTI-F>
|
||||
<ROOM DESERT-PLAIN (LOC ROOMS) (DESC "Desert Plain") (REGION "Flatheadia") (
|
||||
LDESC "You are in the midst of a searingly hot desert. Trails snake amongst
|
||||
the dunes in many directions.") (NORTH SORRY "Sand dunes block your way.") (NE
|
||||
SORRY "Sand dunes block your way.") (EAST TO TALL-DUNES) (SE TO RIPPLED-SANDS)
|
||||
(SOUTH SORRY "Sand dunes block your way.") (SW SORRY
|
||||
"Sand dunes block your way.") (WEST SORRY "Sand dunes block your way.") (NW TO
|
||||
WINDBLOWN-SANDS) (FLAGS RLANDBIT ONBIT DESERTBIT UNDERGROUNDBIT) (GLOBAL
|
||||
G-U-DESERT) (MAP-LOC <PTABLE DESERT-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-6>) (ACTION
|
||||
DESERT-ROOM-F)>
|
||||
<ROOM TALL-DUNES (LOC ROOMS) (DESC "Tall Dunes") (REGION "Flatheadia") (LDESC
|
||||
"You are in the midst of a searingly hot desert. Trails snake amongst
|
||||
the dunes in many directions.") (NORTH SORRY "Sand dunes block your way.") (NE
|
||||
SORRY "Sand dunes block your way.") (EAST SORRY "Sand dunes block your way.") (
|
||||
SE SORRY "Sand dunes block your way.") (SOUTH TO RIPPLED-SANDS) (SW SORRY
|
||||
"Sand dunes block your way.") (WEST TO DESERT-PLAIN) (NW SORRY
|
||||
"Sand dunes block your way.") (FLAGS RLANDBIT ONBIT DESERTBIT UNDERGROUNDBIT) (
|
||||
GLOBAL G-U-DESERT) (MAP-LOC <PTABLE DESERT-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-7>) (
|
||||
ICON TALL-DUNES-ICON) (ACTION DESERT-ROOM-F)>
|
||||
<ROOM RIPPLED-SANDS (LOC ROOMS) (DESC "Rippled Sands") (REGION "Flatheadia") (
|
||||
LDESC "You are in the midst of a searingly hot desert. Trails snake amongst
|
||||
the dunes in many directions.") (NORTH TO TALL-DUNES) (NE TO OASIS) (EAST SORRY
|
||||
"Sand dunes block your way.") (SE SORRY "Sand dunes block your way.") (SOUTH
|
||||
SORRY "Sand dunes block your way.") (SW SORRY "Sand dunes block your way.") (
|
||||
WEST SORRY "Sand dunes block your way.") (NW TO DESERT-PLAIN) (FLAGS RLANDBIT
|
||||
ONBIT DESERTBIT UNDERGROUNDBIT) (GLOBAL G-U-DESERT) (MAP-LOC <PTABLE
|
||||
DESERT-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-7>) (ACTION DESERT-ROOM-F)>
|
||||
<GLOBAL DESERT-DEATH 0>
|
||||
<DEFINE-ROUTINE DESERT-ROOM-F>
|
||||
<DEFINE-ROUTINE I-DESERT-RESET>
|
||||
<ROOM OASIS (LOC ROOMS) (DESC "Great Underground Oasis") (REGION "Flatheadia")
|
||||
(SW TO RIPPLED-SANDS) (FLAGS RLANDBIT ONBIT DESERTBIT UNDERGROUNDBIT) (GLOBAL
|
||||
G-U-DESERT) (VALUE 8) (MAP-LOC <PTABLE DESERT-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-8>)
|
||||
(ICON G-U-OASIS-ICON) (ACTION CAMEL-DRINK-ROOM-F)>
|
||||
<OBJECT OASIS-OBJECT (LOC OASIS) (DESC "oasis") (SYNONYM OASIS POOL SPRING) (
|
||||
ADJECTIVE GREAT UNDERGROUND INCREDIBLY CLEAR COLD) (FLAGS VOWELBIT NDESCBIT
|
||||
WATERBIT)>
|
||||
<ROOM PHIL-HALL (LOC ROOMS) (DESC "Frobozz Philharmonic Hall") (REGION
|
||||
"Flatheadia") (NORTH PER FR-BASEMENT-ENTER-F) (SOUTH TO NORTH-SHORE) (EAST TO
|
||||
THEATRE) (FLAGS RLANDBIT ONBIT) (SYNONYM HALL ORCHESTRA) (ADJECTIVE FROBOZZ
|
||||
PHILHARMONIC) (RESEARCH
|
||||
"\"Frobozz Philharmonic Hall is the home of the renowned Frobozz Philharmonic
|
||||
Orchestra.\"") (GLOBAL FR-BLDG) (MAP-LOC <PTABLE LAKE-MAP-NUM MAP-GEN-Y-3
|
||||
MAP-GEN-X-4>) (ACTION PHIL-HALL-F) (THINGS LONE SPOTLIGHT SPOTLIGHT-PS <>
|
||||
SHADOW PHIL-SHADOW-PS)>
|
||||
<DEFINE-ROUTINE PHIL-HALL-F>
|
||||
<DEFINE-ROUTINE PHIL-SHADOW-PS>
|
||||
<DEFINE-ROUTINE SPOTLIGHT-PS>
|
||||
<OBJECT CONDUCTOR-STAND (LOC PHIL-HALL) (DESC "conductor's stand") (SYNONYM
|
||||
STAND PLATFORM) (ADJECTIVE CONDUCTOR RECTANGULAR) (CAPACITY 50) (FLAGS NDESCBIT
|
||||
VEHBIT CONTBIT OPENBIT SURFACEBIT SEARCHBIT) (ACTION CONDUCTOR-STAND-F)>
|
||||
<DEFINE-ROUTINE CONDUCTOR-STAND-F>
|
||||
<ROOM CONDUCTOR-PIT (LOC ROOMS) (DESC "Conductor's Pit") (REGION "Flatheadia")
|
||||
(LDESC "You are in a tiny space beneath the stage. There are no visible exits."
|
||||
) (OUT SORRY "There are no visible exits.") (UP SORRY
|
||||
"There are no visible exits.") (FLAGS RLANDBIT) (SYNONYM PIT) (ADJECTIVE
|
||||
CONDUCTOR) (MAP-LOC <PTABLE LAKE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-3>) (ACTION
|
||||
CONDUCTOR-PIT-F)>
|
||||
<DEFINE-ROUTINE CONDUCTOR-PIT-F>
|
||||
<OBJECT VIOLIN (LOC CONDUCTOR-PIT) (DESC "fancy violin") (FDESC
|
||||
"Sitting by the edge of the stand is a beautiful, handmade violin; possibly
|
||||
a Stradivarius.") (SYNONYM STRADIVARIUS VIOLIN) (ADJECTIVE FANCY BEAUTIFUL
|
||||
HANDMADE STRADIVARIUS) (FLAGS TAKEBIT BURNBIT MAGICBIT) (SIZE 10) (VALUE 12) (
|
||||
ACTION VIOLIN-F)>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<DEFINE-ROUTINE VIOLIN-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT LAKE>
|
||||
<ROOM THEATRE (LOC ROOMS) (DESC "Theatre") (REGION "Flatheadia") (LDESC
|
||||
"This twenty-thousand-seat theatre was renowned for its terrible acoustics,
|
||||
although Dimwit always claimed he could \"hear things great\" from his box
|
||||
in the front of the theatre. Exits lead west and southwest.") (WEST TO
|
||||
PHIL-HALL) (SW TO NORTH-SHORE) (FLAGS RLANDBIT ONBIT) (SYNONYM THEATRE THEATER)
|
||||
(MAP-LOC <PTABLE LAKE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-5>) (THINGS DIMWIT\'S BOX
|
||||
DIMWIT-BOX-PS)>
|
||||
<DEFINE-ROUTINE DIMWIT-BOX-PS>
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,281 @@
|
|||
|
||||
<INCLUDE "PDEFS">
|
||||
<BEGIN-SEGMENT CASTLE>
|
||||
<ROOM LIBRARY (LOC ROOMS) (REGION "Flatheadia") (DESC "Library") (LDESC
|
||||
"This dust-filled chamber once contained copies of every book ever written,
|
||||
but all of them have been taken by the fleeing populace as reading material
|
||||
for their long journeys to safe havens. The only exit is south.") (SOUTH TO
|
||||
EAST-WING) (OUT TO EAST-WING) (FLAGS RLANDBIT ONBIT) (SYNONYM LIBRARY) (MAP-LOC
|
||||
<PTABLE MAIN-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-8>) (ICON LIBRARY-ICON) (ACTION
|
||||
LIBRARY-F) (THINGS <> (ANSWER RIDDLE)
|
||||
"\"Nice try, but no help here! (signed) The Jester.\"" FROBOZZCO (FROBOZZCO
|
||||
INTERNATIONAL) "\"FrobozzCo International is a vast conglomerate of thousands upon thousands
|
||||
of companies. It can trace its origin to the Frobozz Magic Cave Company, which
|
||||
was formed at the behest of King Duncanthraz in 668 GUE. Headquartered in the
|
||||
400-story FrobozzCo Building in Flatheadia, FrobozzCo's corporate motto is
|
||||
'You name it, we do it!'\"" (GREAT UNDERGROUND) (HIGHWAY TOLL)
|
||||
"\"The Great Underground Highway is a system of toll roads stretching
|
||||
thoughout both the eastland and westland provinces.\"" <> SQUID
|
||||
"\"A bottom-dwelling aquatic creature.\"" <> HELLHOUND
|
||||
"\"When you spot a hellhound, run in the other direction as fast as you can!
|
||||
Hellhounds are fast, fierce, and capable of devouring a human twelve times
|
||||
their size in three-and-a-half seconds. They normally inhabit burnt-out or
|
||||
enchanted woods and rarely venture beyond their turf, even in pursuit of
|
||||
prey.\"" <> SNARFEM
|
||||
"\"Snarfem, a two-player game of removing pebbles, originated in
|
||||
Mithicus and comes from an ancient Mithican word meaning 'to collect
|
||||
pebbles or small stones.'\"" <> FISHA
|
||||
"\"Fisha is a small wand producer in Foozle, specializing in Wands of
|
||||
Inanimation. Their wands tend to have a very limited life.\"" (BOZBO MUMBO
|
||||
ZILBO) (BOZBO MUMBO ZILBO II III IV)
|
||||
"\"One of the kings of the Entharion Dynasty.\"" <> (BELWIT MUMBERTHRAX PHLOID)
|
||||
"\"One of the kings of the Flathead Dynasty.\"" <> (ESTUARY FROBUARY ARCH MAGE
|
||||
JAM JELLY AUGUR SUSPENDUR OTTOBUR MUMBERBUR DISMEMBUR)
|
||||
"\"A month of the year.\"" <> (EASTLAND EASTLANDS)
|
||||
"\"The eastlands comprise those provinces which lie on the eastern
|
||||
shore of the Great Sea, such as Flatheadia and the Fublio Valley.\"" <> (
|
||||
WESTLAND WESTLANDS)
|
||||
"\"The westlands comprise those provinces which lie on the western
|
||||
shore of the Great Sea, such as Borphee, Gurth and Frobozz.\"" MITHICAN
|
||||
CHAMELEON "\"A Mithican chameleon skin's is said to be able to imitate any color
|
||||
the eye can see... and more.\"" CURSE (CURSE DAY)
|
||||
"\"Curse Day is the anniversary of the death of Lord Dimwit Flathead the
|
||||
Excessive. Some aver that, on that day in 779 GUE, a great wizard cast a
|
||||
mighty Curse, and that on the 94th anniversary of that day the Empire will
|
||||
collapse. Historians today dismiss this as a silly schoolyard legend.\"" <> (
|
||||
ZORKMID ZORKMIDS)
|
||||
"\"The Zorkmid is the unit of currency of the Great Underground Empire.\""
|
||||
ENCHANTER (ENCHANTER GUILD)
|
||||
"\"The Enchanter's Guild has several thousand members scattered in chapters
|
||||
throughout the land. Amongst the more influential chapters are the ones
|
||||
located in Thriff and Accardi.\"" FROBLO PARK
|
||||
"\"Froblo Park was Thomas Alva Edison's laboratory.\"" BOSWELL BARWELL
|
||||
"\"The official biographer of the Flatheads, Boswell Barwell is the author
|
||||
of such notable works as THE LIVES OF THE TWELVE FLATHEADS and MUMBERTHRAX:
|
||||
THE MAN BEHIND THE LEGEND.\"" <> MINX "\"An irrestibly cuddly animal.\"" <>
|
||||
WINDCAT "\"The fleetest land animal.\"" ENDLESS FIRE
|
||||
"\"The Endless Fire destroyed Mareilon in 773 GUE.\"" <> ZORK
|
||||
"There's no entry for \"Zork.\" Not surprising. This is just the prequel;
|
||||
it hasn't been written yet!" <> DAVMAR
|
||||
"\"Davmar was the great Thaumaturgist who discovered that the power of
|
||||
magic spells could be stored on paper scrolls.\"" <> PHEEBOR
|
||||
"\"Along with Borphee, Pheebor was one of the great city-states that lay at
|
||||
the convergence of the Bor River and the Phee River. Borphee defeated Pheebor
|
||||
in a massive battle that took place long before the age of Entharion.\"" <> (
|
||||
BLOIT BLOITS) "\"The bloit is the Empire's most common unit for measuring distances. The
|
||||
bloit is defined as the distance the king's favorite pet runs in an hour.
|
||||
As the discerning reader can tell from this definition, the length of the
|
||||
bloit changes dramatically from ruler to ruler. (Rarely more dramatically
|
||||
than in 619 GUE, when Bozbo IV -- who adored his windcat -- died, and was
|
||||
succeeded by Mumbo II -- who was equally enamored of his very, very ancient
|
||||
turtle). Land is usually measured in square bloits.\"" FUBLIO VALLEY
|
||||
"\"Once a richly verdant area at the southern tip of the Flathead Mountains,
|
||||
the valley was defoliated in the late eighth century. For some odd reason, it
|
||||
has always been a favorite spot for wizards who enjoy a hermitic lifestyle.\""
|
||||
<> KORBOZ "\"A moderately famous hermit enchanter.\"" <> GUMBOZ
|
||||
"\"A very obscure hermit enchanter.\"" (FLOOD CONTROL DAM FCD) (\#3 FCD\#3 DAM)
|
||||
"The entry describes Flood Control Dam #3 as a great engineering feat of the
|
||||
late 8th century, made possible by a grant of 37 million zorkmids from Dimwit
|
||||
Flathead the Excessive. The dam forms a huge reservoir, and its spillover is
|
||||
the source of the Frigid River. The article goes into construction techniques,
|
||||
the dam's appeal as a tourist attraction, and the financial impact of the
|
||||
dam's cost on the economy of the GUE." DIABLO MASSACRE
|
||||
"\"The Diablo Massacre occured at the Zorbel Pass in 666 GUE when the invading
|
||||
armies of King Duncanthrax met a native militia of trollish warriors. The
|
||||
invaders were outnumbered but well-armed; the natives were equipped only with
|
||||
wooden clubs and a large piece of very strong garlic. Military historians
|
||||
consider the routing of the native militia as a key moment in the conquering
|
||||
of the eastlands.\"" ZORBIUS BLATTUS
|
||||
"\"Greatest of the modern philosophers, Zorbius Blattus is a popular debunker
|
||||
of Brogmoidism and other strange religious sects.\"" <> (SHADOWLAND LAND SHADOW
|
||||
) "\"The Shadowland (a.k.a. the Land of Shadow) is a barren area of rolling
|
||||
hills, south of Flatheadia and deep underground. It lies near the point where
|
||||
the Flathead Ocean's eastern shore dips underground.\"" ROYAL MUSEUM
|
||||
"\"The Royal Museum, built by Lord Dimwit Flathead in 777 GUE, houses
|
||||
the crown jewels, a technology display, and a famous royal puzzle-maze.\""
|
||||
ROCKVILLE (ESTATES CONSTRUCTION)
|
||||
"\"Rockville Estates is an upscale housing complex being planned by the
|
||||
Frobozz Magic Construction Company for a piece of prime cavern space on
|
||||
the Great Underground Highway near Flatheadia. It was designed by the
|
||||
renowned architect, Zylo Pickthorn.\"" ZYLO PICKTHORN
|
||||
"\"An architect known for his underground condominium complexes, Pickthorn
|
||||
is an avid enthusiast of jousting, chess, and tiddlywinks, and has been
|
||||
known to incorporate some or all of these themes into his designs.\"" MOUNT
|
||||
FOOBIA "\"Foobia is the tallest peak in the Flathead Mountains, perhaps in the entire
|
||||
world. It lies toward the southern end of the range, near the Zorbel Pass, and
|
||||
its apex is always hidden by clouds. It is believed that no one has ever
|
||||
scaled this mighty peak.\"" (STEVE STEVEN) MERETZKY
|
||||
"\"A mysterious mage who is said to live in the lands beyond the borders
|
||||
of the world.\"" <> INFOCOM
|
||||
"The entry simply reads, \"There are some things that man was not meant
|
||||
to know.\"" (FRIGID RIVER) VALLEY
|
||||
"\"The Frigid River Valley, a province of the Great Underground Empire,
|
||||
encompasses the 15,322 square bloits which form the runoff basin of the
|
||||
Frigid River.\"" POLAR GUMFFBEAST
|
||||
"\"A creature, possibly mythical, said to live in the extreme northlands
|
||||
of Quendor.\"" <> DUNCANTHRAX
|
||||
"\"Duncanthrax the Bellicose, the first king of the Flathead Dynasty, took
|
||||
the throne from Zilbo III during a palace revolt on the last day of 659 GUE.
|
||||
Duncanthrax expanded the kingdom by conquering Antharia and most of the
|
||||
eastlands. He also moved the capital from Largoneth to Egreth.\"" (EGRETH
|
||||
CASTLE) (EGRETH CASTLE)
|
||||
"\"The Castle Egreth served as the seat of royal power from the reign of
|
||||
Duncanthrax (who moved the capital from Largoneth in 660 GUE) through the
|
||||
reign of Dimwit (who moved the capital to Flatheadia in 771 GUE). Egreth was,
|
||||
and still is, reputed to be the most dangerous locale in the kingdom.\"" (
|
||||
LARGONETH CASTLE) (CASTLE LARGONETH)
|
||||
"\"The Castle Largoneth was built by Entharion the Wise back in the misty
|
||||
times at the dawn of the empire. It served as the capital of the kingdom
|
||||
until Duncanthrax constructed Egreth in 660 GUE. Largoneth still stands,
|
||||
lonely and deserted, on the coast of Frobozz.\"" FROBESIUS (FROBESIUS FUBLIUS)
|
||||
"\"Frobesius Fublius was a painter who specialized in rebuses. A mysterious
|
||||
figure, he reputedly lived near the Zorbel Pass and vanished toward the end
|
||||
of the eighth century.\"" BORPHBELLY (STEW INGREDIENTS) BORPHBELLY-TEXT <>
|
||||
FENSHIRE "\"Fenshire is a swampy region which stretches east of the Flathead Mountains
|
||||
to the edge of the world. The summer castle of the Flatheads is located
|
||||
in a remote section of Fenshire.\"" <> CHESS
|
||||
"\"An ancient game of warfare, playing on a checkered field of 64 squares.\"" <
|
||||
> CURSE "According to this article, Megaboz was a mysterious wizard who lived a
|
||||
hermit's life in the Fublio Valley. It is said he cast a Curse which will
|
||||
someday bring down the Empire, but royal spokesmen have denied all such
|
||||
rumors. Megaboz vanished in 789 GUE; some say the effort of casting the
|
||||
Curse destroyed him." <> (TREATY ZNURG)
|
||||
"\"The Treaty of Znurg, signed in 474 GUE, ended the Zucchini Wars.\"" ZUCCHINI
|
||||
(WAR WARS) "\"The Zucchini Wars, which devastated seven provinces during the fifth
|
||||
century, were finally ended by the Treaty of Znurg.\"" RAGWEED (BATTLE GULCH)
|
||||
"\"The Battle of Ragweed Gulch, fought in 789 GUE, is most notable for the
|
||||
death of Stonewall Flathead.\"" <> (BARBEL BERKNIP BARSAP)
|
||||
"\"A respected member of the Enchanters Guild.\"" GREATER BORPHEE
|
||||
"\"Borphee, a large industrial city in the westlands, is the capital of the
|
||||
Greater Borphee province.\"" <> INQUISITION
|
||||
"\"A crackpot religious sect; its followers believe that the Curse of Megaboz
|
||||
can be forestalled by executing every person in the Empire.\"" <> (GRUBBO
|
||||
GRUBBO-BY-THE-SEA ACCARDI ACCARDI-BY-THE-SEA)
|
||||
"\"A small village in the westlands.\"" <> (WISHYFOO WISHYFOOS)
|
||||
"\"The Wishyfoo, who live in the vicinity of Port Foozle, alternately tell
|
||||
the truth and tell a lie with every successive statement they make. Sometimes
|
||||
they start with a lie, sometimes with a truth, but they always alternate
|
||||
thereafter.\"" <> PREVARICON
|
||||
"\"The Prevaricons, who dwell near Port Foozle, have two interesting quirks:
|
||||
They always lie, and they feed unwelcome visitors to ravenous hellhounds.\"" <>
|
||||
(VERITASSI VERITASS)
|
||||
"\"The Veritassi, who dwell near Port Foozle, have two interesting quirks:
|
||||
They never lie, and they feed unwelcome visitors to ravenous hellhounds.\"" <>
|
||||
MIZNIA "\"A province at the southern fringe of the westlands, mostly jungle. Its
|
||||
capital is Mizniaport.\"" <> MIZNIAPORT
|
||||
"\"The capital and largest city in Miznia.\"" <> GURTH
|
||||
"\"This province, which lies to the north of Miznia and Mithicus, is chiefly
|
||||
woods and farmland. The Fields of Frotzen, in central Gurth, are known as the
|
||||
Breadbasket of Quendor. The capital of the province is Gurth City.\"" GURTH
|
||||
CITY "\"Gurth City is the capital of Gurth province.\"" <> MITHICUS
|
||||
"\"This small, mountainous province, sandwiched between Gurth and Miznia,
|
||||
is a popular vacation spot.\"" <> (FIELDS FROTZEN)
|
||||
"\"The Fields of Frotzen, fertile farmland in the heart of Gurth province,
|
||||
produces an annual bounty of grain and are freqently referred to as the
|
||||
Breadbasket of Quendor.\"" <> FESTERON "\"A small village in Antharia.\"" <>
|
||||
THRIFF "\"The strange wandering village of Thriff has, at one time or another, been
|
||||
located in most of the provinces of the westlands. Rumor has it that the
|
||||
Guildmaster of Thriff's enchanters constantly moves the town in an attempt
|
||||
to find a more benevolent climate for his terrible hayfever.\"" <> ENTHARION
|
||||
"\"Entharion the Wise united the warring city-states of Galepath and Mareilon,
|
||||
forming the kingdom of Quendor. As Quendor's first king, Entharion built the
|
||||
castle Largoneth, and ruled over a kingdom which was little more than what is
|
||||
currently the province of Frobozz. Our current calendar dates from the first
|
||||
year of Entharion's reign.\"" <> (GALEPATH MAREILON)
|
||||
"\"Galepath and Mareilon were the two ancient cities of Quendor, which were
|
||||
united by Entharion the Wise in the distant past. Mareilon was destroyed in
|
||||
773 GUE by the Endless Fire.\"" <> ANTHARIA
|
||||
"\"Antharia, the island province, is located in the middle of the Flathead
|
||||
Ocean. It is known for its shipbuilding, marble cutting, and granola mining
|
||||
industries, and is the home of Flathead Stadium. The capital is Anthar.\"" <>
|
||||
ANTHAR "\"The capital of Antharia.\"" GRANOLA (MINES RIOTS)
|
||||
"\"The granola mines in northern Antharia once supplied seemingly limitless
|
||||
quantities of granola. Since the Granola Riots of 865 GUE, the causes of
|
||||
which are well known, the output of the mines has fallen sharply.\"" FLATHEAD
|
||||
STADIUM "The entry calls Flathead Stadium \"The House that Babe Built,\" a tribute to
|
||||
Babe Flathead's popularity as a gate attraction. Located just outside Anthar,
|
||||
the stadium was supposedly large enough to hold every man, woman, and child in
|
||||
Quendor." PORT FOOZLE
|
||||
"\"Foozle, which lies several bloits west of Flatheadia, is the primary
|
||||
seaport of the Frigid River Valley, and is a common departure point for
|
||||
ships to Antharia.\"" <> BELBOZ
|
||||
"A tiny entry mentions that Belboz is the name of a young enchanter in
|
||||
the Accardi chapter of the Enchanter's Guild." ZORBEL PASS
|
||||
"\"This wide pass through the Flathead Mountains, at the southern end of
|
||||
the range, connects the Fublio and Frigid River valleys. The Zorbel Pass
|
||||
was the site of the Diablo Massacre in 666 GUE.\"" <> QUENDOR
|
||||
"\"See GREAT UNDERGROUND EMPIRE.\"" (GREAT UNDERGROUND) (EMPIRE GUE)
|
||||
"\"The kingdom of Quendor was renamed the Great Underground Empire by Lord
|
||||
Dimwit Flathead when he became ruler in 770 GUE. It encompasses all the
|
||||
lands on both sides of the Great Sea, although most of the underground
|
||||
portions of the empire are in the eastlands.\"" GREAT SEA
|
||||
"\"See FLATHEAD OCEAN.\"" ARAGAIN FALLS
|
||||
"The article calls Aragain Falls the most breathtaking and awesome waterfall
|
||||
in all the known lands. Found toward the northern part of the Frigid River,
|
||||
the falls are a popular honeymoon spot." TWELVE FLATHEADS
|
||||
"[Please see \"The Lives of the Twelve Flatheads Calendar\" that came in your
|
||||
Zork Zero package.]")>
|
||||
<CONSTANT BORPHBELLY-TEXT
|
||||
"\"A popular lunchtime meal in the province of Fenshire, Borphbelly Stew
|
||||
is made from fox, fowl, and earthworm. Proper preparation mandates the
|
||||
simultaneous addition of the ingredients to a boiling cookpot.\"">
|
||||
<DEFINE-ROUTINE LIBRARY-F>
|
||||
<OBJECT ENCYCLOPEDIA (LOC LIBRARY) (DESC "Encyclopedia Frobozzica") (LDESC
|
||||
"A copy of the Encyclopedia Frobozzica is the only book still left in the
|
||||
Library, probably because it's so huge that it can't be moved except by
|
||||
a team of mules.") (SYNONYM ENCYCLOPEDIA FROBOZZICA BOOK) (ADJECTIVE LARGE
|
||||
ENCYCLOPEDIA) (FLAGS READBIT VOWELBIT) (TEXT
|
||||
"The cover reads \"Encyclopedia Frobozzica, Illustrated Edition. Copyright
|
||||
882 GUE. A publication of the Frobozz Magic Encyclopedia Company.\" It would
|
||||
take weeks to read the entire encyclopedia, but you could read about specific
|
||||
persons or things.") (ACTION ENCYCLOPEDIA-F)>
|
||||
<GLOBAL VOLUME-USED <>>
|
||||
<DEFINE-ROUTINE ENCYCLOPEDIA-F>
|
||||
<OBJECT FOUR-FLIES (LOC GENERIC-OBJECTS) (DESC "it") (SYNONYM FLIES FAMATHRIA)
|
||||
(ADJECTIVE FOUR FANTASTIC INT.NUM) (OWNER FOUR-FLIES) (PICTURE FOUR-FLIES-ILL)
|
||||
(RESEARCH "The Four Fantastic Flies of Famathria, each bigger and more succulent than
|
||||
the last, is a legend fabricated by a race of toad creatures who once lived
|
||||
somewhere beyond the oceans of the world. Seafarers report that these toads
|
||||
were ugly, cantankerous, and eternally hungry.") (ACTION ENC-ENTRY-F)>
|
||||
<OBJECT ZILBEETHA (LOC GENERIC-OBJECTS) (SYNONYM ZILBEETHA) (PICTURE
|
||||
ZILBEETHA-ILL) (RESEARCH
|
||||
"This is one of the oldest and dearest legends in the annals of Quendor.
|
||||
Zilbeetha, a beautiful maiden, somehow angered an evil mage, and was placed
|
||||
under enchantment and turned into a crystal orb on the very day that she was
|
||||
to be wed. The heartbroken groom, who is always depicted holding a fragile
|
||||
bloom, sought help from the wizard's goodly twin. The good wizard turned the
|
||||
groom to stone, that he might stay young until the day Zilbeetha was returned
|
||||
to him. The legend also has an ominous note; returning a false orb would
|
||||
result in death.") (ACTION ENC-ENTRY-F)>
|
||||
<OBJECT BROGMOIDISM (LOC GENERIC-OBJECTS) (SYNONYM BROGMOIDISM) (PICTURE
|
||||
BROGMOIDISM-ILL) (RESEARCH
|
||||
"Brogmoidists, followers of the tenets of Brogmoidism, believe that a Great
|
||||
Brogmoid supports the world upon his shoulders. The religion, which originated
|
||||
sometime during the fourth century, is commonly ridiculed nowadays, and has
|
||||
lost most of its adherents.") (ACTION ENC-ENTRY-F)>
|
||||
<OBJECT FLATHEADIA (LOC GENERIC-OBJECTS) (SYNONYM FLATHEADIA) (PICTURE
|
||||
FLATHEADIA-ILL) (RESEARCH
|
||||
"Flatheadia has been the capital of the Great Underground Empire since Dimwit
|
||||
built his castle there in 770 GUE. (The former seat of royal government was
|
||||
Egreth, in the Westlands.) Although still the largest population center in
|
||||
the Eastlands, Flatheadia has been in a steady decline since a Curse cast by
|
||||
Megaboz toward the end of the last century.") (ACTION ENC-ENTRY-F)>
|
||||
<DEFINE-ROUTINE ENC-ENTRY-F>
|
||||
<DEFINE-ROUTINE PICTURED-ENTRY>
|
||||
<OBJECT OTHER-FLATHEADS (DESC "member of the Flathead family") (SYNONYM
|
||||
FLATHEAD) (ADJECTIVE MICHAEL WURB KING OLIVER WENDELL) (ACTION
|
||||
OTHER-FLATHEADS-F)>
|
||||
<DEFINE-ROUTINE OTHER-FLATHEADS-F>
|
||||
<OBJECT SAINTS (DESC "saint") (SYNONYM SAINT ST BALHU HONKO QUAKKO BOVUS WISKUS
|
||||
) (ADJECTIVE SAINT ST) (FLAGS NDESCBIT VOWELBIT) (ACTION SAINTS-F)>
|
||||
<DEFINE-ROUTINE SAINTS-F>
|
||||
<OBJECT WIZARD-OF-FROBOZZ (DESC "Wiazard of Frobozz") (SYNONYM WIZARD FROBOZZ)
|
||||
(OWNER WIZARD-OF-FROBOZZ) (ACTION WIZARD-OF-FROBOZZ-F)>
|
||||
<DEFINE-ROUTINE WIZARD-OF-FROBOZZ-F>
|
||||
<OBJECT ARMOR (LOC LIBRARY) (OWNER ARMOR) (DESC "suit of armor") (SYNONYM SUIT
|
||||
ARMOR ARMOUR) (FLAGS TRYTAKEBIT) (ACTION ARMOR-F)>
|
||||
<GLOBAL ARMOR-TOUCH 0>
|
||||
<DEFINE-ROUTINE ARMOR-F>
|
||||
<OBJECT LANCE (DESC "lance") (SYNONYM LANCE) (FLAGS TAKEBIT MAGICBIT) (SIZE 10)
|
||||
(VALUE 0)>
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,166 @@
|
|||
|
||||
.SEGMENT "CASTLE"
|
||||
|
||||
|
||||
.FUNCT LIBRARY-F,RARG
|
||||
EQUAL? RARG,M-BEG \FALSE
|
||||
EQUAL? PSEUDO-OBJECT,PRSO,PRSI \FALSE
|
||||
EQUAL? PRSA,V?RESEARCH \?CCL8
|
||||
ZERO? LIT /?CCL8
|
||||
EQUAL? PRSI,FALSE-VALUE,ENCYCLOPEDIA,ROOMS \?CCL8
|
||||
SET 'VOLUME-USED,TRUE-VALUE
|
||||
GETP PRSO,P?ACTION
|
||||
PRINT STACK
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL8: PUTP PSEUDO-OBJECT,P?ACTION,FALSE-VALUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT ENCYCLOPEDIA-F
|
||||
EQUAL? PRSA,V?EXAMINE \?CCL3
|
||||
PRINTI "The volume lies open to "
|
||||
ZERO? VOLUME-USED /?CCL6
|
||||
PRINTR "a random entry."
|
||||
?CCL6: PRINTI "an entry about Double Fanucci: "
|
||||
ICALL PERFORM,V?RESEARCH,DOUBLE-FANUCCI
|
||||
PRINTR " You could probably read about all sorts of other interesting people, places, and things by looking them up in the encyclopedia."
|
||||
?CCL3: EQUAL? PRSA,V?RESEARCH \?CCL8
|
||||
EQUAL? PRSI,ENCYCLOPEDIA \?CCL8
|
||||
PRINTR """The Encyclopedia Frobozzica, a publication of the Frobozz Magic Encyclopedia Company, is the finest of its kind in the known world. All entries are meticulously compiled by the Frobozz Magic Encyclopedia Research Company, the illustrations are faithfully reproduced by the Frobozz Magic Encyclopedia Illustration Company, and the facts are all double, triple, and quadruple-checked by the Frobozz Magic Encyclopedia Accuracy and Verification Company. No library should be without one!"""
|
||||
?CCL8: EQUAL? PRSA,V?OPEN \?CCL12
|
||||
PRINTR "It is."
|
||||
?CCL12: EQUAL? PRSA,V?CLOSE \?CCL14
|
||||
PRINTR "Why bother?"
|
||||
?CCL14: EQUAL? PRSA,V?TAKE \?CCL16
|
||||
PRINTR "Do you have a team of mules handy?"
|
||||
?CCL16: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
|
||||
ICALL PERFORM,V?READ,PRSO
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT ENC-ENTRY-F,?TMP1
|
||||
EQUAL? PRSA,V?RESEARCH \FALSE
|
||||
EQUAL? PRSO,FOUR-FLIES \?CND4
|
||||
CALL ADJ-USED?,FOUR-FLIES,W?INT.NUM
|
||||
ZERO? STACK /?CND4
|
||||
EQUAL? P-NUMBER,4 /?CND4
|
||||
SET 'PRSO,FALSE-VALUE
|
||||
RFALSE
|
||||
?CND4: GETP PRSO,P?PICTURE >?TMP1
|
||||
GETP PRSO,P?RESEARCH
|
||||
CALL PICTURED-ENTRY,?TMP1,STACK
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT PICTURED-ENTRY,ENC-PIC,ENC-TEXT,NO-WAIT,?TMP1
|
||||
CLEAR -1
|
||||
SCREEN S-FULL
|
||||
SET 'CURRENT-SPLIT,ENC-PIC-LOC
|
||||
DISPLAY ENC-BORDER,1,1
|
||||
ICALL2 PICINF-PLUS-ONE,ENC-PIC-LOC
|
||||
GET PICINF-TBL,0 >?TMP1
|
||||
GET PICINF-TBL,1
|
||||
DISPLAY ENC-PIC,?TMP1,STACK
|
||||
ICALL2 PICINF-PLUS-ONE,ENC-TXT-LOC
|
||||
GET PICINF-TBL,0 >?TMP1
|
||||
GET PICINF-TBL,1
|
||||
WINPOS 3,?TMP1,STACK
|
||||
PICINF ENC-TXT-WINDOW-SIZE,PICINF-TBL /?BOGUS1
|
||||
?BOGUS1: GET PICINF-TBL,0 >?TMP1
|
||||
GET PICINF-TBL,1
|
||||
WINSIZE 3,?TMP1,STACK
|
||||
WINATTR 3,15
|
||||
SCREEN 3
|
||||
CURSET 1,1
|
||||
COLOR 1,-1
|
||||
ZERO? ENC-TEXT /?CCL4
|
||||
PRINT ENC-TEXT
|
||||
JUMP ?CND2
|
||||
?CCL4: ICALL1 J-ENTRY
|
||||
?CND2: COLOR 1,1
|
||||
ZERO? NO-WAIT \TRUE
|
||||
ZERO? DEMO-VERSION? /?CCL9
|
||||
ICALL2 INPUT-DEMO,1
|
||||
JUMP ?CND7
|
||||
?CCL9: INPUT 1
|
||||
?CND7: ICALL1 MOUSE-INPUT?
|
||||
SET 'CURRENT-SPLIT,TEXT-WINDOW-PIC-LOC
|
||||
SCREEN S-TEXT
|
||||
ICALL1 V-$REFRESH
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT OTHER-FLATHEADS-F
|
||||
EQUAL? PRSA,V?RESEARCH \FALSE
|
||||
CALL ADJ-USED?,OTHER-FLATHEADS,W?MICHAEL
|
||||
ZERO? STACK /?CCL6
|
||||
PRINTR """A popular musician, formerly of the Flathead Five."""
|
||||
?CCL6: CALL ADJ-USED?,OTHER-FLATHEADS,W?KING,W?WURB
|
||||
ZERO? STACK /?CCL8
|
||||
PRINTR """Wurb Flathead, son of Idwit Oogle Flathead, is the current ruler of the Great Underground Empire. The twelfth king in the Flathead dynasty, Wurb assumed the throne in 881 GUE."""
|
||||
?CCL8: CALL ADJ-USED?,OTHER-FLATHEADS,W?OLIVER,W?WENDELL
|
||||
ZERO? STACK /?CCL10
|
||||
PRINTR """A noted judge."""
|
||||
?CCL10: ICALL PERFORM,V?RESEARCH,BABE-PORTRAIT
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT SAINTS-F
|
||||
EQUAL? PRSA,V?RESEARCH \FALSE
|
||||
PRINTI """The patron saint of "
|
||||
CALL NOUN-USED?,SAINTS,W?BALHU
|
||||
ZERO? STACK /?CCL6
|
||||
PRINTI "circus performers"
|
||||
JUMP ?CND4
|
||||
?CCL6: CALL NOUN-USED?,SAINTS,W?HONKO
|
||||
ZERO? STACK /?CCL8
|
||||
PRINTI "people who play very odd musical instruments"
|
||||
JUMP ?CND4
|
||||
?CCL8: CALL NOUN-USED?,SAINTS,W?QUAKKO
|
||||
ZERO? STACK /?CCL10
|
||||
PRINTI "people who aren't sure of things"
|
||||
JUMP ?CND4
|
||||
?CCL10: CALL NOUN-USED?,SAINTS,W?WISKUS
|
||||
ZERO? STACK /?CCL12
|
||||
PRINTI "all those who raise meat animals"
|
||||
JUMP ?CND4
|
||||
?CCL12: PRINTI "those who design fine slate patios"
|
||||
?CND4: PRINTR "."""
|
||||
|
||||
|
||||
.FUNCT WIZARD-OF-FROBOZZ-F
|
||||
EQUAL? PRSA,V?RESEARCH \FALSE
|
||||
CALL2 GET-NP,WIZARD-OF-FROBOZZ
|
||||
GET STACK,4
|
||||
ZERO? STACK /?CCL6
|
||||
PRINTR """A former member of the Circle of Enchanters, the Wizard of Frobozz was removed for forgetfulness bordering on senility. Among his other failings, he developed an inability to cast any spells other than those beginning with the letter 'F'. He was banished to an obscure corner of the Empire after he accidentally turned the entire West Wing of Dimwit Flathead's castle into a mountain of Fudge."""
|
||||
?CCL6: PRINTR """An ancient province in the northern part of the westlands, Frobozz is the site of many historic sites such as Galepath, Mareilon, and the Castle Largoneth."""
|
||||
|
||||
|
||||
.FUNCT ARMOR-F
|
||||
EQUAL? PRSA,V?TOUCH \?CCL3
|
||||
INC 'ARMOR-TOUCH
|
||||
EQUAL? ARMOR-TOUCH,3 \?CCL6
|
||||
IN? SCROLL,LOCAL-GLOBALS \?CND7
|
||||
REMOVE SCROLL
|
||||
?CND7: MOVE LANCE,HERE
|
||||
PRINTI "The armor opens and a lance falls out!"
|
||||
CRLF
|
||||
CALL2 INC-SCORE,12
|
||||
RSTACK
|
||||
?CCL6: EQUAL? ARMOR-TOUCH,1,2 \FALSE
|
||||
PRINTI "It "
|
||||
EQUAL? ARMOR-TOUCH,2 \?CND11
|
||||
PRINTI "still "
|
||||
?CND11: PRINTR "feels like metal."
|
||||
?CCL3: EQUAL? PRSA,V?TAKE \?CCL14
|
||||
PRINTR "The armor is permanently mounted as part of the library decor."
|
||||
?CCL14: EQUAL? PRSA,V?ENTER \?CCL16
|
||||
PRINTR "The armor was made for a much shorter person -- or at least a person with a much flatter head."
|
||||
?CCL16: EQUAL? PRSA,V?EXAMINE \FALSE
|
||||
PRINTR "This battle-scarred armor is the sort that was worn around the time of the Battle of Ragweed Gulch."
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.ENDI
|
|
@ -0,0 +1,585 @@
|
|||
"LIBRARY for
|
||||
|
||||
ZORK ZERO
|
||||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<INCLUDE "PDEFS">
|
||||
|
||||
<BEGIN-SEGMENT CASTLE>
|
||||
|
||||
<ROOM LIBRARY
|
||||
(LOC ROOMS)
|
||||
(REGION "Flatheadia")
|
||||
(DESC "Library")
|
||||
(LDESC
|
||||
"This dust-filled chamber once contained copies of every book ever written,
|
||||
but all of them have been taken by the fleeing populace as reading material
|
||||
for their long journeys to safe havens. The only exit is south.")
|
||||
(SOUTH TO EAST-WING)
|
||||
(OUT TO EAST-WING)
|
||||
(FLAGS RLANDBIT ONBIT)
|
||||
(SYNONYM LIBRARY)
|
||||
(MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-8>)
|
||||
(ICON LIBRARY-ICON)
|
||||
(ACTION LIBRARY-F)
|
||||
(THINGS
|
||||
<> ( ANSWER RIDDLE)
|
||||
"\"Nice try, but no help here! (signed) The Jester.\""
|
||||
FROBOZZCO ( FROBOZZCO INTERNATIONAL)
|
||||
"\"FrobozzCo International is a vast conglomerate of thousands upon thousands
|
||||
of companies. It can trace its origin to the Frobozz Magic Cave Company, which
|
||||
was formed at the behest of King Duncanthraz in 668 GUE. Headquartered in the
|
||||
400-story FrobozzCo Building in Flatheadia, FrobozzCo's corporate motto is
|
||||
'You name it, we do it!'\""
|
||||
( GREAT UNDERGROUND) ( HIGHWAY TOLL)
|
||||
"\"The Great Underground Highway is a system of toll roads stretching
|
||||
thoughout both the eastland and westland provinces.\""
|
||||
<> SQUID
|
||||
"\"A bottom-dwelling aquatic creature.\""
|
||||
<> HELLHOUND
|
||||
"\"When you spot a hellhound, run in the other direction as fast as you can!
|
||||
Hellhounds are fast, fierce, and capable of devouring a human twelve times
|
||||
their size in three-and-a-half seconds. They normally inhabit burnt-out or
|
||||
enchanted woods and rarely venture beyond their turf, even in pursuit of
|
||||
prey.\""
|
||||
<> SNARFEM
|
||||
"\"Snarfem, a two-player game of removing pebbles, originated in
|
||||
Mithicus and comes from an ancient Mithican word meaning 'to collect
|
||||
pebbles or small stones.'\""
|
||||
<> FISHA
|
||||
"\"Fisha is a small wand producer in Foozle, specializing in Wands of
|
||||
Inanimation. Their wands tend to have a very limited life.\""
|
||||
( BOZBO MUMBO ZILBO) ( BOZBO MUMBO ZILBO II III IV)
|
||||
"\"One of the kings of the Entharion Dynasty.\""
|
||||
<> ( BELWIT MUMBERTHRAX PHLOID)
|
||||
"\"One of the kings of the Flathead Dynasty.\""
|
||||
<> ( ESTUARY FROBUARY ARCH ;ORACLE MAGE JAM JELLY AUGUR SUSPENDUR
|
||||
OTTOBUR MUMBERBUR DISMEMBUR)
|
||||
"\"A month of the year.\""
|
||||
<> ( EASTLAND EASTLANDS)
|
||||
"\"The eastlands comprise those provinces which lie on the eastern
|
||||
shore of the Great Sea, such as Flatheadia and the Fublio Valley.\""
|
||||
<> ( WESTLAND WESTLANDS)
|
||||
"\"The westlands comprise those provinces which lie on the western
|
||||
shore of the Great Sea, such as Borphee, Gurth and Frobozz.\""
|
||||
MITHICAN CHAMELEON
|
||||
"\"A Mithican chameleon skin's is said to be able to imitate any color
|
||||
the eye can see... and more.\""
|
||||
CURSE ( CURSE DAY)
|
||||
"\"Curse Day is the anniversary of the death of Lord Dimwit Flathead the
|
||||
Excessive. Some aver that, on that day in 779 GUE, a great wizard cast a
|
||||
mighty Curse, and that on the 94th anniversary of that day the Empire will
|
||||
collapse. Historians today dismiss this as a silly schoolyard legend.\""
|
||||
<> ( ZORKMID ZORKMIDS)
|
||||
"\"The Zorkmid is the unit of currency of the Great Underground Empire.\""
|
||||
ENCHANTER ( ENCHANTER GUILD)
|
||||
"\"The Enchanter's Guild has several thousand members scattered in chapters
|
||||
throughout the land. Amongst the more influential chapters are the ones
|
||||
located in Thriff and Accardi.\""
|
||||
FROBLO PARK
|
||||
"\"Froblo Park was Thomas Alva Edison's laboratory.\""
|
||||
BOSWELL BARWELL
|
||||
"\"The official biographer of the Flatheads, Boswell Barwell is the author
|
||||
of such notable works as THE LIVES OF THE TWELVE FLATHEADS and MUMBERTHRAX:
|
||||
THE MAN BEHIND THE LEGEND.\""
|
||||
<> MINX
|
||||
"\"An irrestibly cuddly animal.\""
|
||||
<> WINDCAT
|
||||
"\"The fleetest land animal.\""
|
||||
ENDLESS FIRE
|
||||
"\"The Endless Fire destroyed Mareilon in 773 GUE.\""
|
||||
<> ZORK
|
||||
"There's no entry for \"Zork.\" Not surprising. This is just the prequel;
|
||||
it hasn't been written yet!"
|
||||
<> DAVMAR
|
||||
"\"Davmar was the great Thaumaturgist who discovered that the power of
|
||||
magic spells could be stored on paper scrolls.\""
|
||||
<> PHEEBOR
|
||||
"\"Along with Borphee, Pheebor was one of the great city-states that lay at
|
||||
the convergence of the Bor River and the Phee River. Borphee defeated Pheebor
|
||||
in a massive battle that took place long before the age of Entharion.\""
|
||||
<> ( BLOIT BLOITS)
|
||||
"\"The bloit is the Empire's most common unit for measuring distances. The
|
||||
bloit is defined as the distance the king's favorite pet runs in an hour.
|
||||
As the discerning reader can tell from this definition, the length of the
|
||||
bloit changes dramatically from ruler to ruler. (Rarely more dramatically
|
||||
than in 619 GUE, when Bozbo IV -- who adored his windcat -- died, and was
|
||||
succeeded by Mumbo II -- who was equally enamored of his very, very ancient
|
||||
turtle). Land is usually measured in square bloits.\""
|
||||
FUBLIO VALLEY
|
||||
"\"Once a richly verdant area at the southern tip of the Flathead Mountains,
|
||||
the valley was defoliated in the late eighth century. For some odd reason, it
|
||||
has always been a favorite spot for wizards who enjoy a hermitic lifestyle.\""
|
||||
<> KORBOZ
|
||||
"\"A moderately famous hermit enchanter.\""
|
||||
<> GUMBOZ
|
||||
"\"A very obscure hermit enchanter.\""
|
||||
( FLOOD CONTROL DAM FCD) ( \#3 FCD\#3 DAM)
|
||||
"The entry describes Flood Control Dam #3 as a great engineering feat of the
|
||||
late 8th century, made possible by a grant of 37 million zorkmids from Dimwit
|
||||
Flathead the Excessive. The dam forms a huge reservoir, and its spillover is
|
||||
the source of the Frigid River. The article goes into construction techniques,
|
||||
the dam's appeal as a tourist attraction, and the financial impact of the
|
||||
dam's cost on the economy of the GUE."
|
||||
DIABLO MASSACRE
|
||||
"\"The Diablo Massacre occured at the Zorbel Pass in 666 GUE when the invading
|
||||
armies of King Duncanthrax met a native militia of trollish warriors. The
|
||||
invaders were outnumbered but well-armed; the natives were equipped only with
|
||||
wooden clubs and a large piece of very strong garlic. Military historians
|
||||
consider the routing of the native militia as a key moment in the conquering
|
||||
of the eastlands.\""
|
||||
ZORBIUS BLATTUS
|
||||
"\"Greatest of the modern philosophers, Zorbius Blattus is a popular debunker
|
||||
of Brogmoidism and other strange religious sects.\""
|
||||
<> ( SHADOWLAND LAND SHADOW)
|
||||
"\"The Shadowland (a.k.a. the Land of Shadow) is a barren area of rolling
|
||||
hills, south of Flatheadia and deep underground. It lies near the point where
|
||||
the Flathead Ocean's eastern shore dips underground.\""
|
||||
ROYAL MUSEUM
|
||||
"\"The Royal Museum, built by Lord Dimwit Flathead in 777 GUE, houses
|
||||
the crown jewels, a technology display, and a famous royal puzzle-maze.\""
|
||||
ROCKVILLE ( ESTATES CONSTRUCTION)
|
||||
"\"Rockville Estates is an upscale housing complex being planned by the
|
||||
Frobozz Magic Construction Company for a piece of prime cavern space on
|
||||
the Great Underground Highway near Flatheadia. It was designed by the
|
||||
renowned architect, Zylo Pickthorn.\""
|
||||
ZYLO PICKTHORN
|
||||
"\"An architect known for his underground condominium complexes, Pickthorn
|
||||
is an avid enthusiast of jousting, chess, and tiddlywinks, and has been
|
||||
known to incorporate some or all of these themes into his designs.\""
|
||||
MOUNT FOOBIA
|
||||
"\"Foobia is the tallest peak in the Flathead Mountains, perhaps in the entire
|
||||
world. It lies toward the southern end of the range, near the Zorbel Pass, and
|
||||
its apex is always hidden by clouds. It is believed that no one has ever
|
||||
scaled this mighty peak.\""
|
||||
( STEVE STEVEN) MERETZKY
|
||||
"\"A mysterious mage who is said to live in the lands beyond the borders
|
||||
of the world.\""
|
||||
<> INFOCOM
|
||||
"The entry simply reads, \"There are some things that man was not meant
|
||||
to know.\""
|
||||
( FRIGID RIVER) VALLEY
|
||||
"\"The Frigid River Valley, a province of the Great Underground Empire,
|
||||
encompasses the 15,322 square bloits which form the runoff basin of the
|
||||
Frigid River.\""
|
||||
POLAR GUMFFBEAST
|
||||
"\"A creature, possibly mythical, said to live in the extreme northlands
|
||||
of Quendor.\""
|
||||
<> DUNCANTHRAX
|
||||
"\"Duncanthrax the Bellicose, the first king of the Flathead Dynasty, took
|
||||
the throne from Zilbo III during a palace revolt on the last day of 659 GUE.
|
||||
Duncanthrax expanded the kingdom by conquering Antharia and most of the
|
||||
eastlands. He also moved the capital from Largoneth to Egreth.\""
|
||||
( EGRETH CASTLE) ( EGRETH CASTLE)
|
||||
"\"The Castle Egreth served as the seat of royal power from the reign of
|
||||
Duncanthrax (who moved the capital from Largoneth in 660 GUE) through the
|
||||
reign of Dimwit (who moved the capital to Flatheadia in 771 GUE). Egreth was,
|
||||
and still is, reputed to be the most dangerous locale in the kingdom.\""
|
||||
( LARGONETH CASTLE) ( CASTLE LARGONETH)
|
||||
"\"The Castle Largoneth was built by Entharion the Wise back in the misty
|
||||
times at the dawn of the empire. It served as the capital of the kingdom
|
||||
until Duncanthrax constructed Egreth in 660 GUE. Largoneth still stands,
|
||||
lonely and deserted, on the coast of Frobozz.\""
|
||||
FROBESIUS ( FROBESIUS FUBLIUS)
|
||||
"\"Frobesius Fublius was a painter who specialized in rebuses. A mysterious
|
||||
figure, he reputedly lived near the Zorbel Pass and vanished toward the end
|
||||
of the eighth century.\""
|
||||
BORPHBELLY ( STEW INGREDIENTS)
|
||||
BORPHBELLY-TEXT
|
||||
<> FENSHIRE
|
||||
"\"Fenshire is a swampy region which stretches east of the Flathead Mountains
|
||||
to the edge of the world. The summer castle of the Flatheads is located
|
||||
in a remote section of Fenshire.\""
|
||||
<> CHESS
|
||||
"\"An ancient game of warfare, playing on a checkered field of 64 squares.\""
|
||||
<> CURSE
|
||||
"According to this article, Megaboz was a mysterious wizard who lived a
|
||||
hermit's life in the Fublio Valley. It is said he cast a Curse which will
|
||||
someday bring down the Empire, but royal spokesmen have denied all such
|
||||
rumors. Megaboz vanished in 789 GUE; some say the effort of casting the
|
||||
Curse destroyed him."
|
||||
<> ( TREATY ZNURG)
|
||||
"\"The Treaty of Znurg, signed in 474 GUE, ended the Zucchini Wars.\""
|
||||
ZUCCHINI ( WAR WARS)
|
||||
"\"The Zucchini Wars, which devastated seven provinces during the fifth
|
||||
century, were finally ended by the Treaty of Znurg.\""
|
||||
RAGWEED ( BATTLE GULCH)
|
||||
"\"The Battle of Ragweed Gulch, fought in 789 GUE, is most notable for the
|
||||
death of Stonewall Flathead.\""
|
||||
<> ( BARBEL BERKNIP BARSAP)
|
||||
"\"A respected member of the Enchanters Guild.\""
|
||||
GREATER BORPHEE
|
||||
"\"Borphee, a large industrial city in the westlands, is the capital of the
|
||||
Greater Borphee province.\""
|
||||
<> INQUISITION
|
||||
"\"A crackpot religious sect; its followers believe that the Curse of Megaboz
|
||||
can be forestalled by executing every person in the Empire.\""
|
||||
<> ( GRUBBO GRUBBO-BY-THE-SEA ACCARDI ACCARDI-BY-THE-SEA)
|
||||
"\"A small village in the westlands.\""
|
||||
<> ( WISHYFOO WISHYFOOS)
|
||||
"\"The Wishyfoo, who live in the vicinity of Port Foozle, alternately tell
|
||||
the truth and tell a lie with every successive statement they make. Sometimes
|
||||
they start with a lie, sometimes with a truth, but they always alternate
|
||||
thereafter.\""
|
||||
<> PREVARICON
|
||||
"\"The Prevaricons, who dwell near Port Foozle, have two interesting quirks:
|
||||
They always lie, and they feed unwelcome visitors to ravenous hellhounds.\""
|
||||
<> ( VERITASSI VERITASS)
|
||||
"\"The Veritassi, who dwell near Port Foozle, have two interesting quirks:
|
||||
They never lie, and they feed unwelcome visitors to ravenous hellhounds.\""
|
||||
<> MIZNIA
|
||||
"\"A province at the southern fringe of the westlands, mostly jungle. Its
|
||||
capital is Mizniaport.\""
|
||||
<> MIZNIAPORT
|
||||
"\"The capital and largest city in Miznia.\""
|
||||
<> GURTH
|
||||
"\"This province, which lies to the north of Miznia and Mithicus, is chiefly
|
||||
woods and farmland. The Fields of Frotzen, in central Gurth, are known as the
|
||||
Breadbasket of Quendor. The capital of the province is Gurth City.\""
|
||||
GURTH CITY
|
||||
"\"Gurth City is the capital of Gurth province.\""
|
||||
<> MITHICUS
|
||||
"\"This small, mountainous province, sandwiched between Gurth and Miznia,
|
||||
is a popular vacation spot.\""
|
||||
<> ( FIELDS FROTZEN)
|
||||
"\"The Fields of Frotzen, fertile farmland in the heart of Gurth province,
|
||||
produces an annual bounty of grain and are freqently referred to as the
|
||||
Breadbasket of Quendor.\""
|
||||
<> FESTERON
|
||||
"\"A small village in Antharia.\""
|
||||
<> THRIFF
|
||||
"\"The strange wandering village of Thriff has, at one time or another, been
|
||||
located in most of the provinces of the westlands. Rumor has it that the
|
||||
Guildmaster of Thriff's enchanters constantly moves the town in an attempt
|
||||
to find a more benevolent climate for his terrible hayfever.\""
|
||||
<> ENTHARION
|
||||
"\"Entharion the Wise united the warring city-states of Galepath and Mareilon,
|
||||
forming the kingdom of Quendor. As Quendor's first king, Entharion built the
|
||||
castle Largoneth, and ruled over a kingdom which was little more than what is
|
||||
currently the province of Frobozz. Our current calendar dates from the first
|
||||
year of Entharion's reign.\""
|
||||
<> ( GALEPATH MAREILON)
|
||||
"\"Galepath and Mareilon were the two ancient cities of Quendor, which were
|
||||
united by Entharion the Wise in the distant past. Mareilon was destroyed in
|
||||
773 GUE by the Endless Fire.\""
|
||||
<> ANTHARIA
|
||||
"\"Antharia, the island province, is located in the middle of the Flathead
|
||||
Ocean. It is known for its shipbuilding, marble cutting, and granola mining
|
||||
industries, and is the home of Flathead Stadium. The capital is Anthar.\""
|
||||
<> ANTHAR
|
||||
"\"The capital of Antharia.\""
|
||||
GRANOLA ( MINES RIOTS)
|
||||
"\"The granola mines in northern Antharia once supplied seemingly limitless
|
||||
quantities of granola. Since the Granola Riots of 865 GUE, the causes of
|
||||
which are well known, the output of the mines has fallen sharply.\""
|
||||
FLATHEAD STADIUM
|
||||
"The entry calls Flathead Stadium \"The House that Babe Built,\" a tribute to
|
||||
Babe Flathead's popularity as a gate attraction. Located just outside Anthar,
|
||||
the stadium was supposedly large enough to hold every man, woman, and child in
|
||||
Quendor."
|
||||
PORT FOOZLE
|
||||
"\"Foozle, which lies several bloits west of Flatheadia, is the primary
|
||||
seaport of the Frigid River Valley, and is a common departure point for
|
||||
ships to Antharia.\""
|
||||
<> BELBOZ
|
||||
"A tiny entry mentions that Belboz is the name of a young enchanter in
|
||||
the Accardi chapter of the Enchanter's Guild."
|
||||
ZORBEL PASS
|
||||
"\"This wide pass through the Flathead Mountains, at the southern end of
|
||||
the range, connects the Fublio and Frigid River valleys. The Zorbel Pass
|
||||
was the site of the Diablo Massacre in 666 GUE.\""
|
||||
<> QUENDOR
|
||||
"\"See GREAT UNDERGROUND EMPIRE.\""
|
||||
( GREAT UNDERGROUND) ( EMPIRE GUE)
|
||||
"\"The kingdom of Quendor was renamed the Great Underground Empire by Lord
|
||||
Dimwit Flathead when he became ruler in 770 GUE. It encompasses all the
|
||||
lands on both sides of the Great Sea, although most of the underground
|
||||
portions of the empire are in the eastlands.\""
|
||||
GREAT SEA
|
||||
"\"See FLATHEAD OCEAN.\""
|
||||
ARAGAIN FALLS
|
||||
"The article calls Aragain Falls the most breathtaking and awesome waterfall
|
||||
in all the known lands. Found toward the northern part of the Frigid River,
|
||||
the falls are a popular honeymoon spot."
|
||||
TWELVE FLATHEADS
|
||||
"[Please see \"The Lives of the Twelve Flatheads Calendar\" that came in your
|
||||
Zork Zero package.]")>
|
||||
|
||||
<CONSTANT BORPHBELLY-TEXT
|
||||
"\"A popular lunchtime meal in the province of Fenshire, Borphbelly Stew
|
||||
is made from fox, fowl, and earthworm. Proper preparation mandates the
|
||||
simultaneous addition of the ingredients to a boiling cookpot.\"">
|
||||
|
||||
<ROUTINE LIBRARY-F ("OPT" (RARG <>))
|
||||
<COND (<AND <EQUAL? .RARG ,M-BEG>
|
||||
<EQUAL? ,PSEUDO-OBJECT ,PRSO ,PRSI>>
|
||||
<COND (<AND <VERB? RESEARCH>
|
||||
,LIT
|
||||
<EQUAL? ,PRSI <> ,ENCYCLOPEDIA ,ROOMS>>
|
||||
<SETG VOLUME-USED T>
|
||||
;"in DEFS2, TEST-THINGS stuffs the encyclopedia text
|
||||
into the PSEUDO-OBJECT's ACTION property -- only
|
||||
in this case"
|
||||
<TELL <GETP ,PRSO ,P?ACTION> CR>)
|
||||
(T
|
||||
<PUTP ,PSEUDO-OBJECT ,P?ACTION <>>
|
||||
<>)>)>>
|
||||
|
||||
<OBJECT ENCYCLOPEDIA
|
||||
(LOC LIBRARY)
|
||||
(DESC "Encyclopedia Frobozzica")
|
||||
(LDESC
|
||||
"A copy of the Encyclopedia Frobozzica is the only book still left in the
|
||||
Library, probably because it's so huge that it can't be moved except by
|
||||
a team of mules.")
|
||||
(SYNONYM ENCYCLOPEDIA FROBOZZICA BOOK)
|
||||
(ADJECTIVE LARGE ENCYCLOPEDIA)
|
||||
(FLAGS READBIT VOWELBIT)
|
||||
(TEXT
|
||||
"The cover reads \"Encyclopedia Frobozzica, Illustrated Edition. Copyright
|
||||
882 GUE. A publication of the Frobozz Magic Encyclopedia Company.\" It would
|
||||
take weeks to read the entire encyclopedia, but you could read about specific
|
||||
persons or things.")
|
||||
(ACTION ENCYCLOPEDIA-F)>
|
||||
|
||||
<GLOBAL VOLUME-USED <>>
|
||||
|
||||
<ROUTINE ENCYCLOPEDIA-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL "The volume lies open to ">
|
||||
<COND (,VOLUME-USED
|
||||
<TELL "a random entry." CR>)
|
||||
(T
|
||||
<TELL "an entry about Double Fanucci: ">
|
||||
<PERFORM ,V?RESEARCH ,DOUBLE-FANUCCI>
|
||||
<TELL
|
||||
" You could probably read about all sorts of other interesting people,
|
||||
places, and things by looking them up in the encyclopedia." CR>)>)
|
||||
(<AND <VERB? RESEARCH>
|
||||
<PRSI? ,ENCYCLOPEDIA>>
|
||||
<TELL
|
||||
"\"The Encyclopedia Frobozzica, a publication of the Frobozz Magic Encyclopedia
|
||||
Company, is the finest of its kind in the known world. All entries are
|
||||
meticulously compiled by the Frobozz Magic Encyclopedia Research Company, the
|
||||
illustrations are faithfully reproduced by the Frobozz Magic Encyclopedia
|
||||
Illustration Company, and the facts are all double, triple, and
|
||||
quadruple-checked by the Frobozz Magic Encyclopedia Accuracy and Verification
|
||||
Company. No library should be without one!\"" CR>)
|
||||
(<VERB? OPEN>
|
||||
<TELL "It is." CR>)
|
||||
(<VERB? CLOSE>
|
||||
<TELL "Why bother?" CR>)
|
||||
(<VERB? TAKE>
|
||||
<TELL "Do you have a team of mules handy?" CR>)
|
||||
(<VERB? LOOK-INSIDE>
|
||||
<PERFORM ,V?READ ,PRSO>
|
||||
<RTRUE>)>>
|
||||
|
||||
<OBJECT FOUR-FLIES
|
||||
(LOC GENERIC-OBJECTS)
|
||||
(DESC "it")
|
||||
(SYNONYM FLIES FAMATHRIA)
|
||||
(ADJECTIVE FOUR FANTASTIC INT.NUM)
|
||||
(OWNER FOUR-FLIES)
|
||||
(PICTURE FOUR-FLIES-ILL)
|
||||
(RESEARCH
|
||||
"The Four Fantastic Flies of Famathria, each bigger and more succulent than
|
||||
the last, is a legend fabricated by a race of toad creatures who once lived
|
||||
somewhere beyond the oceans of the world. Seafarers report that these toads
|
||||
were ugly, cantankerous, and eternally hungry.")
|
||||
(ACTION ENC-ENTRY-F)>
|
||||
|
||||
<OBJECT ZILBEETHA
|
||||
(LOC GENERIC-OBJECTS)
|
||||
(SYNONYM ZILBEETHA)
|
||||
(PICTURE ZILBEETHA-ILL)
|
||||
(RESEARCH
|
||||
"This is one of the oldest and dearest legends in the annals of Quendor.
|
||||
Zilbeetha, a beautiful maiden, somehow angered an evil mage, and was placed
|
||||
under enchantment and turned into a crystal orb on the very day that she was
|
||||
to be wed. The heartbroken groom, who is always depicted holding a fragile
|
||||
bloom, sought help from the wizard's goodly twin. The good wizard turned the
|
||||
groom to stone, that he might stay young until the day Zilbeetha was returned
|
||||
to him. The legend also has an ominous note; returning a false orb would
|
||||
result in death.")
|
||||
(ACTION ENC-ENTRY-F)>
|
||||
|
||||
<OBJECT BROGMOIDISM
|
||||
(LOC GENERIC-OBJECTS)
|
||||
(SYNONYM BROGMOIDISM)
|
||||
(PICTURE BROGMOIDISM-ILL)
|
||||
(RESEARCH
|
||||
"Brogmoidists, followers of the tenets of Brogmoidism, believe that a Great
|
||||
Brogmoid supports the world upon his shoulders. The religion, which originated
|
||||
sometime during the fourth century, is commonly ridiculed nowadays, and has
|
||||
lost most of its adherents.")
|
||||
(ACTION ENC-ENTRY-F)>
|
||||
|
||||
<OBJECT FLATHEADIA
|
||||
(LOC GENERIC-OBJECTS)
|
||||
(SYNONYM FLATHEADIA)
|
||||
(PICTURE FLATHEADIA-ILL)
|
||||
(RESEARCH
|
||||
"Flatheadia has been the capital of the Great Underground Empire since Dimwit
|
||||
built his castle there in 770 GUE. (The former seat of royal government was
|
||||
Egreth, in the Westlands.) Although still the largest population center in
|
||||
the Eastlands, Flatheadia has been in a steady decline since a Curse cast by
|
||||
Megaboz toward the end of the last century.")
|
||||
(ACTION ENC-ENTRY-F)>
|
||||
|
||||
<ROUTINE ENC-ENTRY-F ()
|
||||
<COND (<VERB? RESEARCH>
|
||||
<COND (<AND <PRSO? ,FOUR-FLIES>
|
||||
<ADJ-USED? ,FOUR-FLIES ,W?INT.NUM>
|
||||
<NOT <EQUAL? ,P-NUMBER 4>>>
|
||||
<SETG PRSO <>>
|
||||
<RFALSE>)>
|
||||
<PICTURED-ENTRY <GETP ,PRSO ,P?PICTURE> <GETP ,PRSO ,P?RESEARCH>>)>>
|
||||
|
||||
<ROUTINE PICTURED-ENTRY (ENC-PIC ENC-TEXT "OPT" (NO-WAIT <>))
|
||||
<CLEAR -1>
|
||||
<SCREEN ,S-FULL>
|
||||
<SETG CURRENT-SPLIT ,ENC-PIC-LOC>
|
||||
<DISPLAY ,ENC-BORDER 1 1>
|
||||
<PICINF-PLUS-ONE ,ENC-PIC-LOC>
|
||||
<DISPLAY .ENC-PIC <GET ,PICINF-TBL 0> <GET ,PICINF-TBL 1>>
|
||||
<PICINF-PLUS-ONE ,ENC-TXT-LOC>
|
||||
<WINPOS 3 <GET ,PICINF-TBL 0> <GET ,PICINF-TBL 1>>
|
||||
<PICINF ,ENC-TXT-WINDOW-SIZE ,PICINF-TBL>
|
||||
<WINSIZE 3 <GET ,PICINF-TBL 0> <GET ,PICINF-TBL 1>>
|
||||
<WINATTR 3 15>
|
||||
<SCREEN 3>
|
||||
<CURSET 1 1>
|
||||
<COLOR 1 -1>
|
||||
<COND (.ENC-TEXT
|
||||
<TELL .ENC-TEXT>)
|
||||
(T
|
||||
<J-ENTRY>)>
|
||||
<COLOR 1 1>
|
||||
<COND (.NO-WAIT
|
||||
<RTRUE>)>
|
||||
<COND (,DEMO-VERSION?
|
||||
<INPUT-DEMO 1>)
|
||||
(T
|
||||
<INPUT 1>)>
|
||||
<MOUSE-INPUT?>
|
||||
<SETG CURRENT-SPLIT ,TEXT-WINDOW-PIC-LOC>
|
||||
<SCREEN ,S-TEXT>
|
||||
<V-$REFRESH>
|
||||
<RTRUE>>
|
||||
|
||||
<OBJECT OTHER-FLATHEADS
|
||||
(DESC "member of the Flathead family")
|
||||
(SYNONYM FLATHEAD)
|
||||
(ADJECTIVE MICHAEL WURB KING OLIVER WENDELL)
|
||||
(ACTION OTHER-FLATHEADS-F)>
|
||||
|
||||
<ROUTINE OTHER-FLATHEADS-F ()
|
||||
<COND (<VERB? RESEARCH>
|
||||
<COND (<ADJ-USED? ,OTHER-FLATHEADS ,W?MICHAEL>
|
||||
<TELL
|
||||
"\"A popular musician, formerly of the Flathead Five.\"" CR>)
|
||||
(<ADJ-USED? ,OTHER-FLATHEADS ,W?KING ,W?WURB>
|
||||
<TELL
|
||||
"\"Wurb Flathead, son of Idwit Oogle Flathead, is the current ruler of the
|
||||
Great Underground Empire. The twelfth king in the Flathead dynasty, Wurb
|
||||
assumed the throne in 881 GUE.\"" CR>)
|
||||
(<ADJ-USED? ,OTHER-FLATHEADS ,W?OLIVER ,W?WENDELL>
|
||||
<TELL "\"A noted judge.\"" CR>)
|
||||
(T
|
||||
<PERFORM ,V?RESEARCH ,BABE-PORTRAIT>
|
||||
<RTRUE>)>)>>
|
||||
|
||||
<OBJECT SAINTS
|
||||
(DESC "saint")
|
||||
(SYNONYM SAINT ST BALHU HONKO QUAKKO BOVUS WISKUS)
|
||||
(ADJECTIVE SAINT ST)
|
||||
(FLAGS NDESCBIT VOWELBIT)
|
||||
(ACTION SAINTS-F)>
|
||||
|
||||
<ROUTINE SAINTS-F ()
|
||||
<COND (<VERB? RESEARCH>
|
||||
<TELL "\"The patron saint of ">
|
||||
<COND (<NOUN-USED? ,SAINTS ,W?BALHU>
|
||||
<TELL "circus performers">)
|
||||
(<NOUN-USED? ,SAINTS ,W?HONKO>
|
||||
<TELL "people who play very odd musical instruments">)
|
||||
(<NOUN-USED? ,SAINTS ,W?QUAKKO>
|
||||
<TELL "people who aren't sure of things">)
|
||||
(<NOUN-USED? ,SAINTS ,W?WISKUS>
|
||||
<TELL "all those who raise meat animals">)
|
||||
(T ;Wiskus
|
||||
<TELL "those who design fine slate patios">)>
|
||||
<TELL ".\"" CR>)>>
|
||||
|
||||
<OBJECT WIZARD-OF-FROBOZZ
|
||||
(DESC "Wiazard of Frobozz")
|
||||
(SYNONYM WIZARD FROBOZZ)
|
||||
(OWNER WIZARD-OF-FROBOZZ)
|
||||
(ACTION WIZARD-OF-FROBOZZ-F)>
|
||||
|
||||
<ROUTINE WIZARD-OF-FROBOZZ-F ()
|
||||
<COND (<VERB? RESEARCH>
|
||||
<COND (<NP-OF <GET-NP ,WIZARD-OF-FROBOZZ>>
|
||||
;"input was READ ABOUT WIZARD OF FROBOZZ"
|
||||
<TELL
|
||||
"\"A former member of the Circle of Enchanters, the Wizard of Frobozz was
|
||||
removed for forgetfulness bordering on senility. Among his other failings,
|
||||
he developed an inability to cast any spells other than those beginning with
|
||||
the letter 'F'. He was banished to an obscure corner of the Empire after
|
||||
he accidentally turned the entire West Wing of Dimwit Flathead's castle into
|
||||
a mountain of Fudge.\"" CR>)
|
||||
(T
|
||||
;"input was READ ABOUT FROBOZZ"
|
||||
<TELL
|
||||
"\"An ancient province in the northern part of the westlands, Frobozz
|
||||
is the site of many historic sites such as Galepath, Mareilon, and the
|
||||
Castle Largoneth.\"" CR>)>)>>
|
||||
|
||||
<OBJECT ARMOR
|
||||
(LOC LIBRARY)
|
||||
(OWNER ARMOR)
|
||||
(DESC "suit of armor")
|
||||
(SYNONYM SUIT ARMOR ARMOUR)
|
||||
(FLAGS TRYTAKEBIT)
|
||||
(ACTION ARMOR-F)>
|
||||
|
||||
<GLOBAL ARMOR-TOUCH 0>
|
||||
|
||||
<ROUTINE ARMOR-F ()
|
||||
<COND (<VERB? TOUCH>
|
||||
<SETG ARMOR-TOUCH <+ ,ARMOR-TOUCH 1>>
|
||||
<COND (<EQUAL? ,ARMOR-TOUCH 3>
|
||||
<COND (<IN? ,SCROLL ,LOCAL-GLOBALS>
|
||||
;"don't bother having jester deliver it"
|
||||
<REMOVE ,SCROLL>)>
|
||||
<MOVE ,LANCE ,HERE>
|
||||
<TELL "The armor opens and a lance falls out!" CR>
|
||||
<INC-SCORE 12>)
|
||||
(<EQUAL? ,ARMOR-TOUCH 1 2>
|
||||
<TELL "It ">
|
||||
<COND (<EQUAL? ,ARMOR-TOUCH 2>
|
||||
<TELL "still ">)>
|
||||
<TELL "feels like metal." CR>)
|
||||
(T
|
||||
<RFALSE>)>)
|
||||
(<VERB? TAKE>
|
||||
<TELL
|
||||
"The armor is permanently mounted as part of the library decor." CR>)
|
||||
(<VERB? ENTER>
|
||||
<TELL
|
||||
"The armor was made for a much shorter person -- or at least a person with
|
||||
a much flatter head." CR>)
|
||||
(<VERB? EXAMINE>
|
||||
<TELL
|
||||
"This battle-scarred armor is the sort that was worn around the time of
|
||||
the Battle of Ragweed Gulch." CR>)>>
|
||||
|
||||
<OBJECT LANCE
|
||||
(DESC "lance")
|
||||
(SYNONYM LANCE)
|
||||
(FLAGS TAKEBIT MAGICBIT)
|
||||
(SIZE 10)
|
||||
(VALUE 0) ;"12 points given elsewhere">
|
||||
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,65 @@
|
|||
|
||||
<BEGIN-SEGMENT 0>
|
||||
<INCLUDE "PDEFS">
|
||||
<TELL-TOKENS (CRLF CR) <CRLF> D * <DPRINT .X> A * <APRINT .X> T ,PRSO <
|
||||
TPRINT-PRSO> T ,PRSI <TPRINT-PRSI> T * <TPRINT .X> AR * <ARPRINT .X> TR * <
|
||||
TRPRINT .X> N * <PRINTN .X> C * <PRINTC .X> T-IS-ARE * <IS-ARE-PRINT .X>>
|
||||
<DEFMAC VERB? ("ARGS" ATMS) <MULTIFROB PRSA .ATMS>>
|
||||
<DEFMAC PRSO? ("ARGS" ATMS) <MULTIFROB PRSO .ATMS>>
|
||||
<DEFMAC PRSI? ("ARGS" ATMS) <MULTIFROB PRSI .ATMS>>
|
||||
<DEFMAC ROOM? ("ARGS" ATMS) <MULTIFROB HERE .ATMS>>
|
||||
<DEFINE MULTIFROB (X ATMS "AUX" (OO (OR)) (O .OO) (L ()) ATM) <REPEAT () <COND
|
||||
(<EMPTY? .ATMS> <RETURN <COND (<LENGTH? .OO 1> <ERROR .X>) (<LENGTH? .OO 2> <
|
||||
NTH .OO 2>) (ELSE <CHTYPE .OO FORM>)>>)> <REPEAT () <COND (<EMPTY? .ATMS> <
|
||||
RETURN>)> <SET ATM <NTH .ATMS 1>> <SET L (<COND (<TYPE? .ATM ATOM> <CHTYPE <
|
||||
COND (<==? .X PRSA> <PARSE <STRING "V?" <SPNAME .ATM>>>) (ELSE .ATM)> GVAL>) (
|
||||
ELSE .ATM)> !.L)> <SET ATMS <REST .ATMS>> <COND (<==? <LENGTH .L> 3> <RETURN>)>
|
||||
> <SET O <REST <PUTREST .O (<FORM EQUAL? <CHTYPE .X GVAL> !.L>)>>> <SET L ()>>>
|
||||
|
||||
<DEFMAC BSET ('OBJ "ARGS" BITS) <MULTIBITS FSET .OBJ .BITS>>
|
||||
<DEFMAC BCLEAR ('OBJ "ARGS" BITS) <MULTIBITS FCLEAR .OBJ .BITS>>
|
||||
<DEFMAC BSET? ('OBJ "ARGS" BITS) <MULTIBITS FSET? .OBJ .BITS>>
|
||||
<DEFINE MULTIBITS (X OBJ ATMS "AUX" (O ()) ATM) <REPEAT () <COND (<EMPTY? .ATMS
|
||||
> <RETURN <COND (<LENGTH? .O 1> <NTH .O 1>) (<EQUAL? .X FSET?> <FORM OR !.O>) (
|
||||
ELSE <FORM PROG () !.O>)>>)> <SET ATM <NTH .ATMS 1>> <SET ATMS <REST .ATMS>> <
|
||||
SET O (<FORM .X .OBJ <COND (<TYPE? .ATM FORM> .ATM) (ELSE <FORM GVAL .ATM>)>>
|
||||
!.O)>>>
|
||||
<DEFMAC PROB ('BASE?) <FORM NOT <FORM L? .BASE? '<RANDOM 100>>>>
|
||||
<DEFINE-ROUTINE PICK-ONE>
|
||||
<DEFINE-ROUTINE DPRINT>
|
||||
<DEFINE-ROUTINE APRINT>
|
||||
<DEFINE-ROUTINE TPRINT>
|
||||
<DEFINE-ROUTINE TPRINT-PRSO>
|
||||
<DEFINE-ROUTINE TPRINT-PRSI>
|
||||
<DEFINE-ROUTINE ARPRINT>
|
||||
<DEFINE-ROUTINE TRPRINT>
|
||||
<DEFINE-ROUTINE IS-ARE-PRINT>
|
||||
<REPLACE-DEFINITION VERB-ALL-TEST <ROUTINE VERB-ALL-TEST>>
|
||||
<REPLACE-DEFINITION GAME-VERB? <ROUTINE GAME-VERB?>>
|
||||
<DEFINE-ROUTINE THIS-IS-IT>
|
||||
<DEFINE-ROUTINE DONT-IT>
|
||||
<GLOBAL P-NUMBER 0>
|
||||
<DEFINE-ROUTINE PERFORM-PRSA>
|
||||
<REPLACE-DEFINITION CAPITAL-NOUN? <ROUTINE CAPITAL-NOUN?>>
|
||||
<REPLACE-DEFINITION LIT? <ROUTINE LIT?>>
|
||||
<CONSTANT C-TABLE <ITABLE NONE 30>>
|
||||
<GLOBAL CLOCK-WAIT <>>
|
||||
<GLOBAL C-INTS 60>
|
||||
<GLOBAL C-MAXINTS 60>
|
||||
<GLOBAL CLOCK-HAND <>>
|
||||
<CONSTANT C-TABLELEN 60>
|
||||
<CONSTANT C-INTLEN 4>
|
||||
<CONSTANT C-RTN 0>
|
||||
<CONSTANT C-TICK 1>
|
||||
<DEFINE-ROUTINE DEQUEUE>
|
||||
<DEFINE-ROUTINE QUEUED?>
|
||||
<DEFINE-ROUTINE RUNNING?>
|
||||
<DEFINE-ROUTINE QUEUE>
|
||||
<DEFINE-ROUTINE CLOCKER>
|
||||
<GLOBAL FONT-X 7>
|
||||
<GLOBAL FONT-Y 10>
|
||||
<CONSTANT PICINF-TBL <TABLE 0 0>>
|
||||
<DEFINE-ROUTINE C-PIXELS>
|
||||
<DEFINE-ROUTINE L-PIXELS>
|
||||
<DEFINE-ROUTINE CCURSET>
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,424 @@
|
|||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT PICK-ONE,TBL,LENGTH,CNT,RND,MSG,RFROB
|
||||
GET TBL,0 >LENGTH
|
||||
GET TBL,1 >CNT
|
||||
DEC 'LENGTH
|
||||
ADD TBL,2 >TBL
|
||||
MUL CNT,2
|
||||
ADD TBL,STACK >RFROB
|
||||
SUB LENGTH,CNT
|
||||
RANDOM STACK >RND
|
||||
GET RFROB,RND >MSG
|
||||
GET RFROB,1
|
||||
PUT RFROB,RND,STACK
|
||||
PUT RFROB,1,MSG
|
||||
INC 'CNT
|
||||
EQUAL? CNT,LENGTH \?CND1
|
||||
SET 'CNT,0
|
||||
?CND1: PUT TBL,0,CNT
|
||||
RETURN MSG
|
||||
|
||||
|
||||
.FUNCT DPRINT,OBJ
|
||||
GETP OBJ,P?INANIMATE-DESC
|
||||
ZERO? STACK /?CCL3
|
||||
FSET? OBJ,ANIMATEDBIT /?CCL3
|
||||
GETP OBJ,P?INANIMATE-DESC
|
||||
PRINT STACK
|
||||
RTRUE
|
||||
?CCL3: GETP OBJ,P?SDESC
|
||||
ZERO? STACK /?CCL7
|
||||
GETP OBJ,P?SDESC
|
||||
PRINT STACK
|
||||
RTRUE
|
||||
?CCL7: PRINTD OBJ
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT APRINT,OBJ,NOSP,LEN
|
||||
ZERO? NOSP \?CND1
|
||||
PRINTC 32
|
||||
?CND1: CALL2 GET-OWNER,OBJ >LEN
|
||||
ZERO? LEN /?CCL5
|
||||
GETP OBJ,P?OWNER
|
||||
EQUAL? LEN,STACK /?CCL5
|
||||
EQUAL? LEN,PROTAGONIST \?CCL10
|
||||
PRINTI "your "
|
||||
JUMP ?CND3
|
||||
?CCL10: EQUAL? LEN,OBJ /?CND3
|
||||
ICALL APRINT,LEN,TRUE-VALUE
|
||||
PRINTI "'s "
|
||||
JUMP ?CND3
|
||||
?CCL5: FSET? OBJ,NARTICLEBIT /?CND3
|
||||
FSET? OBJ,VOWELBIT \?CCL15
|
||||
PRINTI "an "
|
||||
JUMP ?CND3
|
||||
?CCL15: PRINTI "a "
|
||||
?CND3: CALL2 DPRINT,OBJ
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT TPRINT,OBJ,NOSP,LEN
|
||||
ZERO? NOSP \?CND1
|
||||
PRINTC 32
|
||||
?CND1: CALL2 GET-OWNER,OBJ >LEN
|
||||
ZERO? LEN /?CCL5
|
||||
GETP OBJ,P?OWNER
|
||||
EQUAL? LEN,STACK /?CCL5
|
||||
EQUAL? LEN,PROTAGONIST \?CCL10
|
||||
PRINTI "your "
|
||||
JUMP ?CND3
|
||||
?CCL10: EQUAL? LEN,OBJ /?CND3
|
||||
ICALL TPRINT,LEN,TRUE-VALUE
|
||||
PRINTI "'s "
|
||||
JUMP ?CND3
|
||||
?CCL5: FSET? OBJ,NARTICLEBIT /?CND3
|
||||
PRINTI "the "
|
||||
?CND3: CALL2 DPRINT,OBJ
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT TPRINT-PRSO
|
||||
CALL2 TPRINT,PRSO
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT TPRINT-PRSI
|
||||
CALL2 TPRINT,PRSI
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT ARPRINT,OBJ
|
||||
ICALL2 APRINT,OBJ
|
||||
PRINT PERIOD-CR
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT TRPRINT,OBJ
|
||||
ICALL2 TPRINT,OBJ
|
||||
PRINT PERIOD-CR
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT IS-ARE-PRINT,OBJ
|
||||
FSET? OBJ,NARTICLEBIT \?CCL3
|
||||
PRINTC 32
|
||||
JUMP ?CND1
|
||||
?CCL3: PRINTI " the "
|
||||
?CND1: ICALL2 DPRINT,OBJ
|
||||
FSET? OBJ,PLURALBIT \?CCL6
|
||||
PRINTI " are "
|
||||
RTRUE
|
||||
?CCL6: PRINTI " is "
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT VERB-ALL-TEST,OO,II,L
|
||||
LOC OO >L
|
||||
EQUAL? OO,ROOMS \?CCL3
|
||||
INC 'P-NOT-HERE
|
||||
RFALSE
|
||||
?CCL3: EQUAL? PRSA,V?TAKE \?CCL5
|
||||
ZERO? II /?CCL5
|
||||
IN? OO,II \FALSE
|
||||
?CCL5: ZERO? II /?CCL11
|
||||
EQUAL? PRSO,II /FALSE
|
||||
?CCL11: EQUAL? PRSA,V?TAKE \?CCL15
|
||||
FSET? OO,TAKEBIT /?CCL18
|
||||
FSET? OO,TRYTAKEBIT \FALSE
|
||||
?CCL18: FSET? OO,NALLBIT /FALSE
|
||||
ZERO? II \TRUE
|
||||
CALL2 ULTIMATELY-IN?,OO
|
||||
ZERO? STACK /TRUE
|
||||
RFALSE
|
||||
?CCL15: EQUAL? PRSA,V?PUT-ON,V?PUT,V?DROP /?PRD30
|
||||
EQUAL? PRSA,V?SGIVE,V?GIVE \?CCL28
|
||||
?PRD30: IN? OO,WINNER \FALSE
|
||||
?CCL28: EQUAL? PRSA,V?PUT-ON,V?PUT \?CCL34
|
||||
IN? OO,WINNER /?CCL34
|
||||
CALL ULTIMATELY-IN?,OO,II
|
||||
ZERO? STACK \FALSE
|
||||
?CCL34: EQUAL? PRSA,V?WEAR \?CCL39
|
||||
FSET? OO,WORNBIT /FALSE
|
||||
FSET? OO,WEARBIT \FALSE
|
||||
?CCL39: EQUAL? OO,II /FALSE
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT GAME-VERB?
|
||||
EQUAL? PRSA,V?$COMMAND,V?$UNRECORD,V?$RECORD /TRUE
|
||||
EQUAL? PRSA,V?$REFRESH,V?$VERIFY,V?$RANDOM /TRUE
|
||||
EQUAL? PRSA,V?RESTART,V?RESTORE,V?SAVE /TRUE
|
||||
EQUAL? PRSA,V?UNSCRIPT,V?SCRIPT,V?QUIT /TRUE
|
||||
EQUAL? PRSA,V?VERBOSE,V?SUPERBRIEF,V?BRIEF /TRUE
|
||||
EQUAL? PRSA,V?NOTIFY,V?CREDITS,V?VERSION /TRUE
|
||||
EQUAL? PRSA,V?SCORE,V?COLOR,V?HINT /TRUE
|
||||
EQUAL? PRSA,V?DEFINE,V?MAP,V?TIME /TRUE
|
||||
EQUAL? PRSA,V?MODE /TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT THIS-IS-IT,OBJ
|
||||
EQUAL? PRSA,V?WALK \?PRD5
|
||||
EQUAL? PRSO,OBJ /TRUE
|
||||
?PRD5: EQUAL? OBJ,FALSE-VALUE,ROOMS,ME /TRUE
|
||||
EQUAL? OBJ,PROTAGONIST /TRUE
|
||||
CALL DONT-IT,OBJ,LOBSTER,W?NUTCRACKER
|
||||
ZERO? STACK \TRUE
|
||||
CALL DONT-IT,OBJ,SNAKE,W?ROPE
|
||||
ZERO? STACK \TRUE
|
||||
FSET? OBJ,FEMALEBIT \?CCL14
|
||||
EQUAL? P-HER-OBJECT,OBJ /?CND15
|
||||
FCLEAR HER,TOUCHBIT
|
||||
?CND15: SET 'P-HER-OBJECT,OBJ
|
||||
RETURN P-HER-OBJECT
|
||||
?CCL14: FSET? OBJ,ACTORBIT /?CTR17
|
||||
EQUAL? OBJ,LITTLE-FUNGUS \?CCL18
|
||||
?CTR17: EQUAL? P-HIM-OBJECT,OBJ /?CND21
|
||||
FCLEAR HIM,TOUCHBIT
|
||||
?CND21: SET 'P-HIM-OBJECT,OBJ
|
||||
EQUAL? OBJ,JESTER,EXECUTIONER /FALSE
|
||||
EQUAL? P-IT-OBJECT,OBJ /?CND26
|
||||
FCLEAR IT,TOUCHBIT
|
||||
?CND26: SET 'P-IT-OBJECT,OBJ
|
||||
RETURN P-IT-OBJECT
|
||||
?CCL18: EQUAL? P-IT-OBJECT,OBJ /?CND28
|
||||
FCLEAR IT,TOUCHBIT
|
||||
?CND28: SET 'P-IT-OBJECT,OBJ
|
||||
RETURN P-IT-OBJECT
|
||||
|
||||
|
||||
.FUNCT DONT-IT,OBJ1,OBJ2,WRD
|
||||
EQUAL? OBJ1,OBJ2 \FALSE
|
||||
CALL NOUN-USED?,OBJ2,WRD
|
||||
ZERO? STACK /FALSE
|
||||
FSET? OBJ2,ANIMATEDBIT \FALSE
|
||||
CALL2 VISIBLE?,OBJ2
|
||||
ZERO? STACK \FALSE
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT PERFORM-PRSA,O,I
|
||||
ICALL PERFORM,PRSA,O,I
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT CAPITAL-NOUN?,WRD,TBL
|
||||
EQUAL? WRD,W?FLATHEAD,W?DIMWIT,W?URSULA /TRUE
|
||||
EQUAL? WRD,W?MEGABOZ,W?JOHN,W?PIERPONT /TRUE
|
||||
EQUAL? WRD,W?STONEWALL,W?LUCREZIA,W?SEBASTIAN /TRUE
|
||||
EQUAL? WRD,W?DAVISON,W?THOMAS,W?ALVA /TRUE
|
||||
EQUAL? WRD,W?LEONARDO,W?JOHANN,W?RALPH /TRUE
|
||||
EQUAL? WRD,W?PAUL,W?FRANK,W?LLOYD /TRUE
|
||||
EQUAL? WRD,W?BABE,W?ZILBO,W?MERETZKY /TRUE
|
||||
EQUAL? WRD,W?FOOBUS,W?BARBAZZO,W?FERNAP /TRUE
|
||||
EQUAL? WRD,W?MUMBERTHRAX,W?BOZBO,W?MUMBO /TRUE
|
||||
EQUAL? WRD,W?PHLOID,W?BELWIT /TRUE
|
||||
GETPT SAINTS,P?SYNONYM >TBL
|
||||
ZERO? TBL /?CCL15
|
||||
PTSIZE TBL
|
||||
DIV STACK,2
|
||||
INTBL? WRD,TBL,STACK /TRUE
|
||||
?CCL15: INTBL? WRD,FUNGUS-WORDS,12 /TRUE
|
||||
INTBL? WRD,MID-NAME-WORDS,12 /TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT LIT?,RM,RMBIT,OHERE,LIT,RES,OLD-OBJECT
|
||||
ASSIGNED? 'RMBIT /?CND1
|
||||
SET 'RMBIT,TRUE-VALUE
|
||||
?CND1: SET 'RES,SEARCH-RES
|
||||
EQUAL? HERE,UNDERWATER,LAKE-BOTTOM \?CND3
|
||||
FSET? EXTERIOR-LIGHT,ONBIT \FALSE
|
||||
?CND3: ZERO? RM \?CND7
|
||||
SET 'RM,HERE
|
||||
?CND7: SET 'OHERE,HERE
|
||||
SET 'HERE,RM
|
||||
ZERO? RMBIT /?CCL11
|
||||
FSET? RM,ONBIT \?CCL11
|
||||
SET 'LIT,HERE
|
||||
JUMP ?CND9
|
||||
?CCL11: FSET? WINNER,ONBIT \?CCL15
|
||||
CALL ULTIMATELY-IN?,WINNER,RM
|
||||
ZERO? STACK /?CCL15
|
||||
SET 'LIT,WINNER
|
||||
JUMP ?CND9
|
||||
?CCL15: SET 'OLD-OBJECT,RES
|
||||
PUT OLD-OBJECT,1,0
|
||||
PUT OLD-OBJECT,2,FALSE-VALUE
|
||||
PUT OLD-OBJECT,3,FALSE-VALUE
|
||||
PUT OLD-OBJECT,4,FALSE-VALUE
|
||||
SET 'OLD-OBJECT,FINDER
|
||||
PUT OLD-OBJECT,0,ONBIT
|
||||
PUT OLD-OBJECT,1,FIND-FLAGS-GWIM
|
||||
PUT OLD-OBJECT,2,FALSE-VALUE
|
||||
PUT OLD-OBJECT,3,FALSE-VALUE
|
||||
PUT OLD-OBJECT,4,0
|
||||
PUT OLD-OBJECT,5,FALSE-VALUE
|
||||
PUT OLD-OBJECT,6,FALSE-VALUE
|
||||
PUT OLD-OBJECT,7,FALSE-VALUE
|
||||
PUT OLD-OBJECT,8,FALSE-VALUE
|
||||
PUT OLD-OBJECT,9,RES
|
||||
PUT OLD-OBJECT,10,0
|
||||
EQUAL? OHERE,RM \?CND18
|
||||
ICALL FIND-DESCENDANTS,WINNER,7
|
||||
EQUAL? WINNER,PROTAGONIST /?CND18
|
||||
IN? PROTAGONIST,RM \?CND18
|
||||
ICALL FIND-DESCENDANTS,PROTAGONIST,7
|
||||
?CND18: GET RES,1
|
||||
ZERO? STACK \?CND24
|
||||
LOC WINNER
|
||||
FSET? STACK,VEHBIT \?CND26
|
||||
LOC WINNER
|
||||
FSET? STACK,OPENBIT /?CND26
|
||||
LOC WINNER
|
||||
ICALL FIND-DESCENDANTS,STACK,7
|
||||
?CND26: ICALL FIND-DESCENDANTS,RM,7
|
||||
?CND24: GET RES,1
|
||||
GRTR? STACK,0 \?CND9
|
||||
GET RES,4 >LIT
|
||||
?CND9: SET 'HERE,OHERE
|
||||
RETURN LIT
|
||||
|
||||
|
||||
.FUNCT DEQUEUE,RTN
|
||||
CALL2 QUEUED?,RTN >RTN
|
||||
ZERO? RTN /FALSE
|
||||
PUT RTN,C-RTN,0
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT QUEUED?,RTN,C,E
|
||||
SET 'E,C-TABLE+60
|
||||
ADD C-TABLE,C-INTS >C
|
||||
?PRG1: EQUAL? C,E /FALSE
|
||||
GET C,C-RTN
|
||||
EQUAL? STACK,RTN \?CND3
|
||||
GET C,C-TICK
|
||||
ZERO? STACK /FALSE
|
||||
RETURN C
|
||||
?CND3: ADD C,C-INTLEN >C
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT RUNNING?,RTN,C,E
|
||||
SET 'E,C-TABLE+60
|
||||
ADD C-TABLE,C-INTS >C
|
||||
?PRG1: EQUAL? C,E /FALSE
|
||||
GET C,C-RTN
|
||||
EQUAL? STACK,RTN \?CND3
|
||||
GET C,C-TICK
|
||||
ZERO? STACK /FALSE
|
||||
GET C,C-TICK
|
||||
GRTR? STACK,1 /FALSE
|
||||
RTRUE
|
||||
?CND3: ADD C,C-INTLEN >C
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT QUEUE,RTN,TICK,C,E,INT
|
||||
SET 'E,C-TABLE+60
|
||||
ADD C-TABLE,C-INTS >C
|
||||
?PRG1: EQUAL? C,E \?CCL5
|
||||
ZERO? INT /?CCL8
|
||||
SET 'C,INT
|
||||
JUMP ?CND6
|
||||
?CCL8: LESS? C-INTS,C-INTLEN \?CND9
|
||||
PRINTI "**Too many ints!**"
|
||||
CRLF
|
||||
?CND9: SUB C-INTS,C-INTLEN >C-INTS
|
||||
LESS? C-INTS,C-MAXINTS \?CND11
|
||||
SET 'C-MAXINTS,C-INTS
|
||||
?CND11: ADD C-TABLE,C-INTS >INT
|
||||
?CND6: PUT INT,C-RTN,RTN
|
||||
JUMP ?REP2
|
||||
?CCL5: GET C,C-RTN
|
||||
EQUAL? STACK,RTN \?CCL14
|
||||
SET 'INT,C
|
||||
?REP2: ZERO? CLOCK-HAND /?CND16
|
||||
GRTR? INT,CLOCK-HAND \?CND16
|
||||
ADD TICK,3
|
||||
SUB 0,STACK >TICK
|
||||
?CND16: PUT INT,C-TICK,TICK
|
||||
RETURN INT
|
||||
?CCL14: GET C,C-RTN
|
||||
ZERO? STACK \?CND3
|
||||
SET 'INT,C
|
||||
?CND3: ADD C,C-INTLEN >C
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT CLOCKER,E,TICK,RTN,FLG,Q?,OWINNER
|
||||
ZERO? CLOCK-WAIT /?CCL3
|
||||
SET 'CLOCK-WAIT,FALSE-VALUE
|
||||
RFALSE
|
||||
?CCL3: ZERO? TIME-STOPPED /?CND1
|
||||
INC 'MOVES
|
||||
RFALSE
|
||||
?CND1: ADD C-TABLE,C-INTS >CLOCK-HAND
|
||||
SET 'E,C-TABLE+60
|
||||
SET 'OWINNER,WINNER
|
||||
SET 'WINNER,PROTAGONIST
|
||||
?PRG5: EQUAL? CLOCK-HAND,E \?CCL9
|
||||
SET 'CLOCK-HAND,E
|
||||
INC 'MOVES
|
||||
SET 'WINNER,OWINNER
|
||||
RETURN FLG
|
||||
?CCL9: GET CLOCK-HAND,C-RTN
|
||||
ZERO? STACK /?CND7
|
||||
GET CLOCK-HAND,C-TICK >TICK
|
||||
LESS? TICK,-1 \?CCL13
|
||||
SUB 0,TICK
|
||||
SUB STACK,3
|
||||
PUT CLOCK-HAND,C-TICK,STACK
|
||||
SET 'Q?,CLOCK-HAND
|
||||
JUMP ?CND7
|
||||
?CCL13: ZERO? TICK /?CND7
|
||||
GRTR? TICK,0 \?CND15
|
||||
DEC 'TICK
|
||||
PUT CLOCK-HAND,C-TICK,TICK
|
||||
?CND15: ZERO? TICK /?CND17
|
||||
SET 'Q?,CLOCK-HAND
|
||||
?CND17: GRTR? TICK,0 /?CND7
|
||||
GET CLOCK-HAND,C-RTN >RTN
|
||||
ZERO? TICK \?CND21
|
||||
PUT CLOCK-HAND,C-RTN,0
|
||||
?CND21: CALL RTN
|
||||
ZERO? STACK /?CND23
|
||||
SET 'FLG,TRUE-VALUE
|
||||
?CND23: ZERO? Q? \?CND7
|
||||
GET CLOCK-HAND,C-RTN
|
||||
ZERO? STACK /?CND7
|
||||
SET 'Q?,TRUE-VALUE
|
||||
?CND7: ADD CLOCK-HAND,C-INTLEN >CLOCK-HAND
|
||||
ZERO? Q? \?PRG5
|
||||
ADD C-INTS,C-INTLEN >C-INTS
|
||||
JUMP ?PRG5
|
||||
|
||||
|
||||
.FUNCT C-PIXELS,X
|
||||
SUB X,1
|
||||
MUL STACK,FONT-X
|
||||
ADD STACK,1
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT L-PIXELS,Y
|
||||
SUB Y,1
|
||||
MUL STACK,FONT-Y
|
||||
ADD STACK,1
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT CCURSET,Y,X,?TMP1
|
||||
CALL2 L-PIXELS,Y >?TMP1
|
||||
CALL2 C-PIXELS,X
|
||||
CURSET ?TMP1,STACK
|
||||
RTRUE
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.ENDI
|
|
@ -0,0 +1,644 @@
|
|||
"MISC for
|
||||
|
||||
ZORK ZERO
|
||||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
<INCLUDE "PDEFS">
|
||||
|
||||
;"macros"
|
||||
|
||||
<TELL-TOKENS (CRLF CR) <CRLF>
|
||||
;[D ,SIDEKICK <DPRINT-SIDEKICK>]
|
||||
D * <DPRINT .X>
|
||||
A * <APRINT .X>
|
||||
T ,PRSO <TPRINT-PRSO>
|
||||
T ,PRSI <TPRINT-PRSI>
|
||||
T * <TPRINT .X>
|
||||
AR * <ARPRINT .X>
|
||||
TR * <TRPRINT .X>
|
||||
N * <PRINTN .X>
|
||||
C * <PRINTC .X>
|
||||
T-IS-ARE * <IS-ARE-PRINT .X>>
|
||||
|
||||
<DEFMAC VERB? ("ARGS" ATMS)
|
||||
<MULTIFROB PRSA .ATMS>>
|
||||
|
||||
<DEFMAC PRSO? ("ARGS" ATMS)
|
||||
<MULTIFROB PRSO .ATMS>>
|
||||
|
||||
<DEFMAC PRSI? ("ARGS" ATMS)
|
||||
<MULTIFROB PRSI .ATMS>>
|
||||
|
||||
<DEFMAC ROOM? ("ARGS" ATMS)
|
||||
<MULTIFROB HERE .ATMS>>
|
||||
|
||||
<DEFINE MULTIFROB (X ATMS "AUX" (OO (OR)) (O .OO) (L ()) ATM)
|
||||
<REPEAT ()
|
||||
<COND (<EMPTY? .ATMS>
|
||||
<RETURN!- <COND (<LENGTH? .OO 1> <ERROR .X>)
|
||||
(<LENGTH? .OO 2> <NTH .OO 2>)
|
||||
(ELSE <CHTYPE .OO FORM>)>>)>
|
||||
<REPEAT ()
|
||||
<COND (<EMPTY? .ATMS> <RETURN!->)>
|
||||
<SET ATM <NTH .ATMS 1>>
|
||||
<SET L
|
||||
(<COND (<TYPE? .ATM ATOM>
|
||||
<CHTYPE <COND (<==? .X PRSA>
|
||||
<PARSE
|
||||
<STRING "V?"
|
||||
<SPNAME .ATM>>>)
|
||||
(ELSE .ATM)> GVAL>)
|
||||
(ELSE .ATM)>
|
||||
!.L)>
|
||||
<SET ATMS <REST .ATMS>>
|
||||
<COND (<==? <LENGTH .L> 3> <RETURN!->)>>
|
||||
<SET O <REST <PUTREST .O
|
||||
(<FORM EQUAL? <CHTYPE .X GVAL> !.L>)>>>
|
||||
<SET L ()>>>
|
||||
|
||||
<DEFMAC BSET ('OBJ "ARGS" BITS)
|
||||
<MULTIBITS FSET .OBJ .BITS>>
|
||||
|
||||
<DEFMAC BCLEAR ('OBJ "ARGS" BITS)
|
||||
<MULTIBITS FCLEAR .OBJ .BITS>>
|
||||
|
||||
<DEFMAC BSET? ('OBJ "ARGS" BITS)
|
||||
<MULTIBITS FSET? .OBJ .BITS>>
|
||||
|
||||
<DEFINE MULTIBITS (X OBJ ATMS "AUX" (O ()) ATM)
|
||||
<REPEAT ()
|
||||
<COND (<EMPTY? .ATMS>
|
||||
<RETURN!- <COND (<LENGTH? .O 1>
|
||||
<NTH .O 1>)
|
||||
(<EQUAL? .X FSET?>
|
||||
<FORM OR !.O>)
|
||||
(ELSE
|
||||
<FORM PROG () !.O>)>>)>
|
||||
<SET ATM <NTH .ATMS 1>>
|
||||
<SET ATMS <REST .ATMS>>
|
||||
<SET O
|
||||
(<FORM .X
|
||||
.OBJ
|
||||
<COND (<TYPE? .ATM FORM> .ATM)
|
||||
(ELSE <FORM GVAL .ATM>)>>
|
||||
!.O)>>>
|
||||
|
||||
<DEFMAC PROB ('BASE?)
|
||||
<FORM NOT <FORM L? .BASE? '<RANDOM 100>>>>
|
||||
|
||||
;"PICK-NEXT expects an LTABLE of strings, with an initial element of 2."
|
||||
;<ROUTINE PICK-NEXT (TBL "AUX" CNT STR)
|
||||
<SET CNT <GET .TBL 1>>
|
||||
<SET STR <GET .TBL .CNT>>
|
||||
<INC CNT>
|
||||
<COND (<G? .CNT <GET .TBL 0>>
|
||||
<SET CNT 2>)>
|
||||
<PUT .TBL 1 .CNT>
|
||||
<RETURN .STR>>
|
||||
|
||||
<ROUTINE PICK-ONE (TBL "AUX" LENGTH CNT RND MSG RFROB)
|
||||
<SET LENGTH <GET .TBL 0>>
|
||||
<SET CNT <GET .TBL 1>>
|
||||
<SET LENGTH <- .LENGTH 1>>
|
||||
<SET TBL <REST .TBL 2>>
|
||||
<SET RFROB <REST .TBL <* .CNT 2>>>
|
||||
<SET RND <RANDOM <- .LENGTH .CNT>>>
|
||||
<SET MSG <GET .RFROB .RND>>
|
||||
<PUT .RFROB .RND <GET .RFROB 1>>
|
||||
<PUT .RFROB 1 .MSG>
|
||||
<SET CNT <+ .CNT 1>>
|
||||
<COND (<==? .CNT .LENGTH>
|
||||
<SET CNT 0>)>
|
||||
<PUT .TBL 0 .CNT>
|
||||
.MSG>
|
||||
|
||||
<ROUTINE DPRINT (OBJ)
|
||||
<COND (<AND <GETP .OBJ ,P?INANIMATE-DESC>
|
||||
<NOT <FSET? .OBJ ,ANIMATEDBIT>>>
|
||||
<TELL <GETP .OBJ ,P?INANIMATE-DESC>>)
|
||||
(<GETP .OBJ ,P?SDESC>
|
||||
<TELL <GETP .OBJ ,P?SDESC>>)
|
||||
(T
|
||||
<PRINTD .OBJ>)>>
|
||||
|
||||
<ROUTINE APRINT (OBJ "OPT" (NOSP <>) "AUX" LEN)
|
||||
<COND (<NOT .NOSP>
|
||||
<TELL !\ >)>
|
||||
<COND (<AND <SET LEN <GET-OWNER .OBJ>>
|
||||
<NOT <EQUAL? .LEN <GETP .OBJ ,P?OWNER>>>>
|
||||
<COND (<EQUAL? .LEN ,PROTAGONIST>
|
||||
<TELL "your ">)
|
||||
(<NOT <EQUAL? .LEN .OBJ>>
|
||||
<APRINT .LEN T>
|
||||
<TELL "'s ">)>)
|
||||
(<NOT <FSET? .OBJ ,NARTICLEBIT>>
|
||||
<COND (<FSET? .OBJ ,VOWELBIT>
|
||||
<TELL "an ">)
|
||||
(T
|
||||
<TELL "a ">)>)>
|
||||
<DPRINT .OBJ>>
|
||||
|
||||
<ROUTINE TPRINT (OBJ "OPT" (NOSP <>) "AUX" LEN)
|
||||
<COND (<NOT .NOSP>
|
||||
<TELL !\ >)>
|
||||
<COND (<AND <SET LEN <GET-OWNER .OBJ>>
|
||||
<NOT <EQUAL? .LEN <GETP .OBJ ,P?OWNER>>>>
|
||||
<COND (<EQUAL? .LEN ,PROTAGONIST>
|
||||
<TELL "your ">)
|
||||
(<NOT <EQUAL? .LEN .OBJ>>
|
||||
<TPRINT .LEN T>
|
||||
<TELL "'s ">)>)
|
||||
(<NOT <FSET? .OBJ ,NARTICLEBIT>>
|
||||
<TELL "the ">)>
|
||||
<DPRINT .OBJ>>
|
||||
|
||||
<ROUTINE TPRINT-PRSO ()
|
||||
<TPRINT ,PRSO>>
|
||||
|
||||
<ROUTINE TPRINT-PRSI ()
|
||||
<TPRINT ,PRSI>>
|
||||
|
||||
<ROUTINE ARPRINT (OBJ)
|
||||
<APRINT .OBJ>
|
||||
<TELL ,PERIOD-CR>>
|
||||
|
||||
<ROUTINE TRPRINT (OBJ)
|
||||
<TPRINT .OBJ>
|
||||
<TELL ,PERIOD-CR>>
|
||||
|
||||
<ROUTINE IS-ARE-PRINT (OBJ)
|
||||
<COND (<FSET? .OBJ ,NARTICLEBIT>
|
||||
<TELL " ">)
|
||||
(T
|
||||
<TELL " the ">)>
|
||||
<DPRINT .OBJ>
|
||||
<COND (<FSET? .OBJ ,PLURALBIT>
|
||||
<TELL " are ">)
|
||||
(T
|
||||
<TELL " is ">)>>
|
||||
|
||||
|
||||
;<ROUTINE CLEAR-SCREEN ("AUX" (CNT 24))
|
||||
<REPEAT ()
|
||||
<CRLF>
|
||||
<SET CNT <- .CNT 1>>
|
||||
<COND (<0? .CNT>
|
||||
<RETURN>)>>>
|
||||
|
||||
<REPLACE-DEFINITION VERB-ALL-TEST
|
||||
<ROUTINE VERB-ALL-TEST (OO II "AUX" (L <LOC .OO>))
|
||||
;"RTRUE if OO should be included in the ALL, otherwise RFALSE"
|
||||
<COND (<EQUAL? .OO ,ROOMS ;,NOT-HERE-OBJECT>
|
||||
<SETG P-NOT-HERE <+ ,P-NOT-HERE 1>>
|
||||
<RFALSE>)
|
||||
(<AND <VERB? TAKE> ;"TAKE prso FROM prsi and prso isn't in prsi"
|
||||
<T? .II>
|
||||
<NOT <IN? .OO .II>>>
|
||||
<RFALSE>)
|
||||
;(<NOT <ACCESSIBLE? .OO>> ;"can't get at object"
|
||||
<RFALSE>)
|
||||
(T ;<EQUAL? ,P-GETFLAGS ,P-ALL> ;"cases for ALL"
|
||||
<COND (<AND .II
|
||||
<PRSO? .II>>
|
||||
<RFALSE>)
|
||||
(<VERB? TAKE>
|
||||
;"TAKE ALL and object not accessible or takeable"
|
||||
<COND (<AND <NOT <FSET? .OO ,TAKEBIT>>
|
||||
<NOT <FSET? .OO ,TRYTAKEBIT>>>
|
||||
<RFALSE>)
|
||||
(<FSET? .OO ,NALLBIT>
|
||||
<RFALSE>)
|
||||
;(<AND <NOT <EQUAL? .L ,WINNER ,HERE .II>>
|
||||
<NOT <EQUAL? .L <LOC ,WINNER>>>>
|
||||
<COND (<AND <FSET? .L ,SURFACEBIT>
|
||||
<NOT <FSET? .L ,TAKEBIT>>> ;"tray"
|
||||
<RTRUE>)
|
||||
(T
|
||||
<RFALSE>)>)
|
||||
(<AND <NOT .II>
|
||||
<ULTIMATELY-IN? .OO>> ;"already have it"
|
||||
<RFALSE>)
|
||||
(T
|
||||
<RTRUE>)>)
|
||||
(<AND <VERB? DROP PUT PUT-ON GIVE SGIVE>
|
||||
;"VERB ALL, object not held"
|
||||
<NOT <IN? .OO ,WINNER>>>
|
||||
<RFALSE>)
|
||||
(<AND <VERB? PUT PUT-ON> ;"PUT ALL IN X,obj already in x"
|
||||
<NOT <IN? .OO ,WINNER>>
|
||||
<ULTIMATELY-IN? .OO .II>>
|
||||
<RFALSE>)
|
||||
(<AND <VERB? WEAR>
|
||||
<OR <FSET? .OO ,WORNBIT>
|
||||
<NOT <FSET? .OO ,WEARBIT>>>>
|
||||
;"try to wear only wearable-but-not-yet-worn objects"
|
||||
<RFALSE>)
|
||||
(<EQUAL? .OO .II>
|
||||
;"i.e. PUT ALL IN BOX shouldn't try to put box in box"
|
||||
<RFALSE>)
|
||||
(T
|
||||
<RTRUE>)>)>>>
|
||||
|
||||
;<GLOBAL FIRST-BUFFER <ITABLE BYTE 100>>
|
||||
|
||||
;<ROUTINE SAVE-INPUT (TBL "AUX" (OFFS 0) CNT TMP)
|
||||
<SET CNT <+ <GETB ,P-LEXV <SET TMP <* 4 ,P-INPUT-WORDS>>>
|
||||
<GETB ,P-LEXV <+ .TMP 1>>>>
|
||||
<COND (<EQUAL? .CNT 0> ;"failed"
|
||||
<RFALSE>)>
|
||||
<SET CNT <- .CNT 1>>
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? .OFFS .CNT>
|
||||
<PUTB .TBL .OFFS 0>
|
||||
<RETURN>)
|
||||
(T
|
||||
<PUTB .TBL .OFFS <GETB ,P-INBUF <+ .OFFS 1>>>)>
|
||||
<SET OFFS <+ .OFFS 1>>>
|
||||
<RTRUE>>
|
||||
|
||||
;<ROUTINE RESTORE-INPUT (TBL "AUX" CHR)
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? <SET CHR <GETB .TBL 0>> 0>
|
||||
<RETURN>)
|
||||
(T
|
||||
<PRINTC .CHR>
|
||||
<SET TBL <REST .TBL>>)>>>
|
||||
|
||||
<REPLACE-DEFINITION GAME-VERB?
|
||||
<ROUTINE GAME-VERB? () ;"should the verb not run the clock?"
|
||||
<COND (<VERB? $RECORD $UNRECORD $COMMAND $RANDOM $VERIFY $REFRESH
|
||||
SAVE RESTORE RESTART QUIT SCRIPT UNSCRIPT
|
||||
BRIEF SUPERBRIEF VERBOSE VERSION CREDITS
|
||||
NOTIFY HINT COLOR SCORE TIME MAP DEFINE MODE>
|
||||
<RTRUE>)>>>
|
||||
|
||||
<ROUTINE THIS-IS-IT (OBJ)
|
||||
<COND (<OR <AND <VERB? WALK>
|
||||
<PRSO? .OBJ>> ;"PRSO is a direction"
|
||||
<EQUAL? .OBJ <> ,ROOMS ;,NOT-HERE-OBJECT ,ME ,PROTAGONIST>>
|
||||
<RTRUE>)
|
||||
(<DONT-IT .OBJ ,LOBSTER ,W?NUTCRACKER>
|
||||
;"or else FIND NUTCRACKER followed by TAKE IT returns
|
||||
[But the lobster isn't here!]"
|
||||
<RTRUE>)
|
||||
(<DONT-IT .OBJ ,SNAKE ,W?ROPE>
|
||||
<RTRUE>)
|
||||
(<FSET? .OBJ ,FEMALEBIT>
|
||||
<COND (<NOT <EQUAL? ,P-HER-OBJECT .OBJ>>
|
||||
<FCLEAR ,HER ,TOUCHBIT>)>
|
||||
<SETG P-HER-OBJECT .OBJ>)
|
||||
(<OR <FSET? .OBJ ,ACTORBIT>
|
||||
<EQUAL? .OBJ ,LITTLE-FUNGUS>>
|
||||
<COND (<NOT <EQUAL? ,P-HIM-OBJECT .OBJ>>
|
||||
<FCLEAR ,HIM ,TOUCHBIT>)>
|
||||
<SETG P-HIM-OBJECT .OBJ>
|
||||
<COND (<NOT <EQUAL? .OBJ ,JESTER ,EXECUTIONER>>
|
||||
;"basically, animals"
|
||||
<COND (<NOT <EQUAL? ,P-IT-OBJECT .OBJ>>
|
||||
<FCLEAR ,IT ,TOUCHBIT>)>
|
||||
<SETG P-IT-OBJECT .OBJ>)>)
|
||||
(T
|
||||
<COND (<NOT <EQUAL? ,P-IT-OBJECT .OBJ>>
|
||||
<FCLEAR ,IT ,TOUCHBIT>)>
|
||||
<SETG P-IT-OBJECT .OBJ>)>>
|
||||
|
||||
<ROUTINE DONT-IT (OBJ1 OBJ2 WRD)
|
||||
<COND (<AND <EQUAL? .OBJ1 .OBJ2>
|
||||
<NOUN-USED? .OBJ2 .WRD>
|
||||
<FSET? .OBJ2 ,ANIMATEDBIT>
|
||||
<NOT <VISIBLE? .OBJ2>>>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<RFALSE>)>>
|
||||
|
||||
;<REPLACE-DEFINITION NUMBER?
|
||||
;"from suspect"
|
||||
|
||||
<GLOBAL P-EXCHANGE 0>
|
||||
|
||||
<ROUTINE NUMBER? (PTR "AUX" CNT BPTR CHR (SUM 0) (TIM <>) (EXC <>))
|
||||
<SET CNT <GETB <REST ,P-LEXV <* .PTR 2>> 2>>
|
||||
<SET BPTR <GETB <REST ,P-LEXV <* .PTR 2>> 3>>
|
||||
<REPEAT ()
|
||||
<COND (<L? <SET CNT <- .CNT 1>> 0>
|
||||
<RETURN>)
|
||||
(T
|
||||
<SET CHR <GETB ,P-INBUF .BPTR>>
|
||||
<COND (<==? .CHR 58>
|
||||
<COND (.EXC
|
||||
<RFALSE>)>
|
||||
<SET TIM .SUM>
|
||||
<SET SUM 0>)
|
||||
(<==? .CHR 45 %<ASCII !\/>>
|
||||
<COND (.TIM
|
||||
<RFALSE>)>
|
||||
<SET EXC .SUM>
|
||||
<SET SUM 0>)
|
||||
(<G? .SUM 9999>
|
||||
<RFALSE>)
|
||||
(<AND <L? .CHR 58>
|
||||
<G? .CHR 47>>
|
||||
<SET SUM <+ <* .SUM 10> <- .CHR 48>>>)
|
||||
(T
|
||||
<RFALSE>)>
|
||||
<SET BPTR <+ .BPTR 1>>)>>
|
||||
<PUT ,P-LEXV .PTR ,W?NUMBER>
|
||||
<COND (<G? .SUM 9999>
|
||||
<RFALSE>)
|
||||
(.EXC
|
||||
<SETG P-EXCHANGE .EXC>)
|
||||
(.TIM
|
||||
<SETG P-EXCHANGE 0>
|
||||
<COND (<G? .TIM 23>
|
||||
<RFALSE>)
|
||||
(<G? .TIM 19>
|
||||
T)
|
||||
(<G? .TIM 12>
|
||||
<RFALSE>)
|
||||
(<G? .TIM 7>
|
||||
T)
|
||||
(T
|
||||
<SET TIM <+ 12 .TIM>>)>
|
||||
<SET SUM <+ .SUM <* .TIM 60>>>)
|
||||
(T
|
||||
<SETG P-EXCHANGE 0>)>
|
||||
<SETG P-NUMBER .SUM>
|
||||
,W?NUMBER>>
|
||||
|
||||
<GLOBAL P-NUMBER 0>
|
||||
|
||||
<ROUTINE PERFORM-PRSA ("OPTIONAL" (O <>) (I <>))
|
||||
<PERFORM ,PRSA .O .I>
|
||||
<RTRUE>>
|
||||
|
||||
;<ROUTINE CANT-USE (PTR "AUX" BUF)
|
||||
<TELL "[You used the word \"">
|
||||
<WORD-PRINT <GETB <REST ,P-LEXV <SET BUF <* .PTR 2>>> 2>
|
||||
<GETB <REST ,P-LEXV .BUF> 3>>
|
||||
<TELL "\" in a way that I don't understand.]" CR>
|
||||
;<SETG QUOTE-FLAG <>>
|
||||
<SETG P-OFLAG <>>>
|
||||
|
||||
<REPLACE-DEFINITION CAPITAL-NOUN?
|
||||
<ROUTINE CAPITAL-NOUN? (WRD "AUX" TBL)
|
||||
<COND (<EQUAL? .WRD ,W?FLATHEAD ,W?DIMWIT ,W?URSULA ,W?MEGABOZ ,W?JOHN
|
||||
,W?PIERPONT ,W?STONEWALL ,W?LUCREZIA ,W?SEBASTIAN
|
||||
,W?DAVISON ,W?THOMAS ,W?ALVA ,W?LEONARDO ,W?JOHANN
|
||||
,W?RALPH ,W?PAUL ,W?FRANK ,W?LLOYD ,W?BABE ,W?ZILBO
|
||||
,W?MERETZKY ,W?FOOBUS ,W?BARBAZZO ,W?FERNAP
|
||||
,W?MUMBERTHRAX ,W?BOZBO ,W?MUMBO ,W?PHLOID ,W?BELWIT>
|
||||
<RTRUE>)
|
||||
(<AND <SET TBL <GETPT ,SAINTS ,P?SYNONYM>>
|
||||
<INTBL? .WRD .TBL </ <PTSIZE .TBL> 2>>>
|
||||
<RTRUE>)
|
||||
(<INTBL? .WRD ,FUNGUS-WORDS 12>
|
||||
<RTRUE>)
|
||||
(<INTBL? .WRD ,MID-NAME-WORDS 12>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<RFALSE>)>>>
|
||||
|
||||
<REPLACE-DEFINITION LIT?
|
||||
<ROUTINE LIT? ("OPT" (RM <>) (RMBIT T) "AUX" OHERE (LIT <>) (RES ,SEARCH-RES))
|
||||
<COND (<AND <EQUAL? ,HERE ,UNDERWATER ,LAKE-BOTTOM>
|
||||
<NOT <FSET? ,EXTERIOR-LIGHT ,ONBIT>>>
|
||||
<RFALSE>)>
|
||||
<COND (<NOT .RM>
|
||||
<SET RM ,HERE>)>
|
||||
<SET OHERE ,HERE>
|
||||
<SETG HERE .RM>
|
||||
<COND (<AND .RMBIT
|
||||
<FSET? .RM ,ONBIT>>
|
||||
<SET LIT ,HERE>)
|
||||
(<AND <FSET? ,WINNER ,ONBIT>
|
||||
<ULTIMATELY-IN? ,WINNER .RM>>
|
||||
<SET LIT ,WINNER>)
|
||||
(T
|
||||
<MAKE-FIND-RES 'FIND-RES .RES 'FIND-RES-COUNT 0>
|
||||
<MAKE-FINDER 'FINDER ,FINDER 'FIND-APPLIC ,ONBIT
|
||||
'FIND-RES .RES
|
||||
'FIND-FLAGS ,FIND-FLAGS-GWIM>
|
||||
<COND (<EQUAL? .OHERE .RM>
|
||||
<FIND-DESCENDANTS ,WINNER
|
||||
%<ORB ,FD-INCLUDE? ,FD-SEARCH?
|
||||
,FD-NEST? ;,FD-NOTOP?>>
|
||||
<COND (<AND <NOT <EQUAL? ,WINNER ,PROTAGONIST>>
|
||||
<IN? ,PROTAGONIST .RM>>
|
||||
<FIND-DESCENDANTS ,PROTAGONIST
|
||||
%<ORB ,FD-INCLUDE? ,FD-SEARCH?
|
||||
,FD-NEST? ;,FD-NOTOP?>>)>)>
|
||||
<COND (<0? <FIND-RES-COUNT .RES>:FIX>
|
||||
<COND (<AND <FSET? <LOC ,WINNER> ,VEHBIT>
|
||||
<NOT <FSET? <LOC ,WINNER> ,OPENBIT>>>
|
||||
<FIND-DESCENDANTS <LOC ,WINNER>
|
||||
%<ORB ,FD-INCLUDE? ,FD-SEARCH?
|
||||
,FD-NEST? ;,FD-NOTOP?>>)>
|
||||
<FIND-DESCENDANTS .RM %<ORB ,FD-INCLUDE? ,FD-SEARCH?
|
||||
,FD-NEST? ;,FD-NOTOP?>>)>
|
||||
<COND (<G? <FIND-RES-COUNT .RES>:FIX 0>
|
||||
<SET LIT <FIND-RES-OBJ1 .RES>>)>)>
|
||||
<SETG HERE .OHERE>
|
||||
.LIT>>
|
||||
|
||||
;"CLOCKER and related routines"
|
||||
|
||||
<CONSTANT C-TABLE %<COND (<GASSIGNED? ZILCH>
|
||||
'<ITABLE NONE 30>)
|
||||
(T
|
||||
'<ITABLE NONE 60>)>> ;"2x largest num of interrupts"
|
||||
|
||||
<GLOBAL CLOCK-WAIT <>>
|
||||
|
||||
<GLOBAL C-INTS 60> ;"2x largest number of concurrent of interrupts"
|
||||
|
||||
<GLOBAL C-MAXINTS 60> ;"2x largest number of concurrent of interrupts"
|
||||
|
||||
<GLOBAL CLOCK-HAND <>>
|
||||
|
||||
<CONSTANT C-TABLELEN 60>
|
||||
<CONSTANT C-INTLEN 4> ;"length of an interrupt entry"
|
||||
<CONSTANT C-RTN 0> ;"offset of routine name"
|
||||
<CONSTANT C-TICK 1> ;"offset of count"
|
||||
|
||||
<ROUTINE DEQUEUE (RTN)
|
||||
<COND (<SET RTN <QUEUED? .RTN>>
|
||||
<PUT .RTN ,C-RTN 0>)>>
|
||||
|
||||
<ROUTINE QUEUED? (RTN "AUX" C E)
|
||||
<SET E <REST ,C-TABLE ,C-TABLELEN>>
|
||||
<SET C <REST ,C-TABLE ,C-INTS>>
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? .C .E>
|
||||
<RFALSE>)
|
||||
(<EQUAL? <GET .C ,C-RTN> .RTN>
|
||||
<COND (<ZERO? <GET .C ,C-TICK>>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<RETURN .C>)>)>
|
||||
<SET C <REST .C ,C-INTLEN>>>>
|
||||
|
||||
<ROUTINE RUNNING? (RTN "AUX" C E)
|
||||
<SET E <REST ,C-TABLE ,C-TABLELEN>>
|
||||
<SET C <REST ,C-TABLE ,C-INTS>>
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? .C .E>
|
||||
<RFALSE>)
|
||||
(<EQUAL? <GET .C ,C-RTN> .RTN>
|
||||
<COND (<OR <ZERO? <GET .C ,C-TICK>>
|
||||
<G? <GET .C ,C-TICK> 1>>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<RTRUE>)>)>
|
||||
<SET C <REST .C ,C-INTLEN>>>>
|
||||
|
||||
<ROUTINE QUEUE (RTN TICK "AUX" C E (INT <>)) ;"automatically enables as well"
|
||||
<SET E <REST ,C-TABLE ,C-TABLELEN>>
|
||||
<SET C <REST ,C-TABLE ,C-INTS>>
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? .C .E>
|
||||
<COND (.INT
|
||||
<SET C .INT>)
|
||||
(T
|
||||
<COND (<L? ,C-INTS ,C-INTLEN>
|
||||
<TELL "**Too many ints!**" CR>)>
|
||||
<SETG C-INTS <- ,C-INTS ,C-INTLEN>>
|
||||
<COND (<L? ,C-INTS ,C-MAXINTS>
|
||||
<SETG C-MAXINTS ,C-INTS>)>
|
||||
<SET INT <REST ,C-TABLE ,C-INTS>>)>
|
||||
<PUT .INT ,C-RTN .RTN>
|
||||
<RETURN>)
|
||||
(<EQUAL? <GET .C ,C-RTN> .RTN>
|
||||
<SET INT .C>
|
||||
<RETURN>)
|
||||
(<ZERO? <GET .C ,C-RTN>>
|
||||
<SET INT .C>)>
|
||||
<SET C <REST .C ,C-INTLEN>>>
|
||||
<COND (<AND ,CLOCK-HAND
|
||||
%<COND (<GASSIGNED? ZILCH>
|
||||
'<G? .INT ,CLOCK-HAND>)
|
||||
(T
|
||||
'<L? <LENGTH .INT> <LENGTH ,CLOCK-HAND>>)>>
|
||||
<SET TICK <- <+ .TICK 3>>>)>
|
||||
<PUT .INT ,C-TICK .TICK>
|
||||
.INT>
|
||||
|
||||
<ROUTINE CLOCKER ("AUX" E TICK RTN (FLG <>) (Q? <>) OWINNER)
|
||||
<COND (,CLOCK-WAIT
|
||||
<SETG CLOCK-WAIT <>>
|
||||
<RFALSE>)
|
||||
(,TIME-STOPPED
|
||||
;"don't run interrupts, but do increment moves"
|
||||
<SETG MOVES <+ ,MOVES 1>>
|
||||
<RFALSE>)>
|
||||
<SETG CLOCK-HAND <REST ,C-TABLE ,C-INTS>>
|
||||
<SET E <REST ,C-TABLE ,C-TABLELEN>>
|
||||
<SET OWINNER ,WINNER>
|
||||
<SETG WINNER ,PROTAGONIST>
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? ,CLOCK-HAND .E>
|
||||
<SETG CLOCK-HAND .E>
|
||||
<SETG MOVES <+ ,MOVES 1>>
|
||||
<SETG WINNER .OWINNER>
|
||||
<RETURN .FLG>)
|
||||
(<NOT <ZERO? <GET ,CLOCK-HAND ,C-RTN>>>
|
||||
<SET TICK <GET ,CLOCK-HAND ,C-TICK>>
|
||||
<COND (<L? .TICK -1>
|
||||
<PUT ,CLOCK-HAND ,C-TICK <- <- .TICK> 3>>
|
||||
<SET Q? ,CLOCK-HAND>)
|
||||
(<NOT <ZERO? .TICK>>
|
||||
<COND (<G? .TICK 0>
|
||||
<SET TICK <- .TICK 1>>
|
||||
<PUT ,CLOCK-HAND ,C-TICK .TICK>)>
|
||||
<COND (<NOT <ZERO? .TICK>>
|
||||
<SET Q? ,CLOCK-HAND>)>
|
||||
<COND (<NOT <G? .TICK 0>>
|
||||
<SET RTN
|
||||
%<COND (<GASSIGNED? ZILCH>
|
||||
'<GET ,CLOCK-HAND ,C-RTN>)
|
||||
(ELSE
|
||||
'<NTH ,CLOCK-HAND
|
||||
<+ <* ,C-RTN 2>
|
||||
1>>)>>
|
||||
<COND (<ZERO? .TICK>
|
||||
<PUT ,CLOCK-HAND ,C-RTN 0>)>
|
||||
<COND (<APPLY .RTN>
|
||||
<SET FLG T>)>
|
||||
<COND (<AND <NOT .Q?>
|
||||
<NOT
|
||||
<ZERO?
|
||||
<GET ,CLOCK-HAND
|
||||
,C-RTN>>>>
|
||||
<SET Q? T>)>)>)>)>
|
||||
<SETG CLOCK-HAND <REST ,CLOCK-HAND ,C-INTLEN>>
|
||||
<COND (<NOT .Q?>
|
||||
<SETG C-INTS <+ ,C-INTS ,C-INTLEN>>)>>>
|
||||
|
||||
"stuff for handling opcodes that want pixels"
|
||||
|
||||
<GLOBAL FONT-X 7>
|
||||
<GLOBAL FONT-Y 10>
|
||||
|
||||
<CONSTANT PICINF-TBL
|
||||
<TABLE 0 0>>
|
||||
|
||||
<ROUTINE C-PIXELS (X)
|
||||
<+ <* <- .X 1> ,FONT-X> 1>>
|
||||
|
||||
<ROUTINE L-PIXELS (Y)
|
||||
<+ <* <- .Y 1> ,FONT-Y> 1>>
|
||||
|
||||
;<ROUTINE PIXELS-C (X)
|
||||
<+ </ <- .X 1> ,FONT-X> 1>>
|
||||
|
||||
;<ROUTINE PIXELS-L (Y)
|
||||
<+ </ <- .Y 1> ,FONT-Y> 1>>
|
||||
|
||||
;<ROUTINE PIXELS-LR (Y)
|
||||
</ <- <+ .Y ,FONT-Y> 1> ,FONT-Y>>
|
||||
|
||||
<ROUTINE CCURSET (Y X)
|
||||
<CURSET <L-PIXELS .Y> <C-PIXELS .X>>>
|
||||
|
||||
;<ROUTINE CCURGET (TBL)
|
||||
<CURGET .TBL>
|
||||
<PUT .TBL 0 <PIXELS-L <GET .TBL 0>>>
|
||||
<PUT .TBL 1 <PIXELS-C <GET .TBL 1>>>
|
||||
.TBL>
|
||||
|
||||
;<ROUTINE CSPLIT (Y)
|
||||
<SPLIT <* .Y ,FONT-Y>>>
|
||||
|
||||
;<ROUTINE CWINPOS (W Y X)
|
||||
<WINPOS .W <L-PIXELS .Y> <C-PIXELS .X>>>
|
||||
|
||||
;<ROUTINE CWINSIZE (W Y X)
|
||||
<WINSIZE .W <* .Y ,FONT-Y> <* .X ,FONT-X>>>
|
||||
|
||||
;<ROUTINE CMARGIN (L R)
|
||||
<MARGIN <* .L ,FONT-X> <* .R ,FONT-X>>>
|
||||
|
||||
;<ROUTINE CPICINF (P TBL)
|
||||
<PICINF .P .TBL>
|
||||
<PUT .TBL 0 </ <GET .TBL 0> ,FONT-Y>>
|
||||
<PUT .TBL 1 </ <GET .TBL 1> ,FONT-X>>>
|
||||
|
||||
;<ROUTINE CDISPLAY (P Y X)
|
||||
<DISPLAY .P
|
||||
<COND (<ZERO? .Y> 0)
|
||||
(ELSE <L-PIXELS .Y>)>
|
||||
<COND (<ZERO? .X> 0)
|
||||
(ELSE <C-PIXELS .X>)>>>
|
||||
|
||||
;<ROUTINE CDCLEAR (P Y X)
|
||||
<DCLEAR .P
|
||||
<COND (<ZERO? .Y> 0)
|
||||
(ELSE <L-PIXELS .Y>)>
|
||||
<COND (<ZERO? .X> 0)
|
||||
(ELSE <C-PIXELS .X>)>>>
|
||||
|
||||
;<ROUTINE CSCROLL (W Y)
|
||||
<SCROLL .W <* .Y ,FONT-Y>>>
|
||||
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,807 @@
|
|||
|
||||
<BEGIN-SEGMENT SECRET>
|
||||
<INCLUDE "BASEDEFS" "PDEFS">
|
||||
<ROOM ORACLE (LOC ROOMS) (DESC "Oracle") (REGION "Region: Unknown") (UP TO
|
||||
CRYPT) (OUT TO CRYPT) (FLAGS RLANDBIT UNDERGROUNDBIT) (GLOBAL SLIME) (VALUE 10)
|
||||
(ICON ORACLE-ICON) (MAP-LOC <PTABLE SECRET-WING-MAP-NUM MAP-GEN-Y-3
|
||||
MAP-GEN-X-10>) (THINGS <> SHADOW PHIL-SHADOW-PS) (ACTION ORACLE-F)>
|
||||
<DEFINE-ROUTINE ORACLE-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT CASTLE>
|
||||
<OBJECT ORACLE-OBJECT (LOC ORACLE) (DESC "oracle") (SYNONYM ORACLE BARGTH MOUTH
|
||||
HEAD) (ADJECTIVE HUGE ORACLE\'S SERPENT\'S) (FLAGS NDESCBIT VOWELBIT VEHBIT
|
||||
INBIT CONTBIT OPENBIT SEARCHBIT DROPBIT) (CAPACITY 100) (OWNER ORACLE-OBJECT) (
|
||||
RESEARCH "The encyclopedia scoffs at this silly little legend about an oracle which
|
||||
offered bits of wisdom and could transport believers to distant regions.") (
|
||||
ACTION ORACLE-OBJECT-F)>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT SECRET>
|
||||
<DEFINE-ROUTINE ORACLE-OBJECT-F>
|
||||
<DEFINE-ROUTINE D-ORACLE>
|
||||
<OBJECT DEPRESSION (LOC ORACLE) (DESC "depression") (SYNONYM DEPRESSION) (FLAGS
|
||||
NDESCBIT CONTBIT OPENBIT SEARCHBIT) (ACTION DEPRESSION-F)>
|
||||
<DEFINE-ROUTINE DEPRESSION-F>
|
||||
<GLOBAL ORACLE-USED <>>
|
||||
<GLOBAL ORACLE-SCORE 9>
|
||||
<CONSTANT ORACLE-TABLE <PTABLE CRAG GLACIER DELTA-1 FOOT-OF-STATUE
|
||||
MINE-ENTRANCE>>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT AMULET (LOC G-U-MOUNTAIN) (DESC "amulet") (SYNONYM AMULET) (FLAGS
|
||||
TAKEBIT WEARBIT VOWELBIT) (ACTION AMULET-F)>
|
||||
<DEFINE-ROUTINE AMULET-F>
|
||||
<GLOBAL ORACLE-EXIT-NUMBER 5>
|
||||
<CONSTANT EYE-TABLE <PTABLE "None" "One" "Two" "Three" "All">>
|
||||
<DEFINE-ROUTINE I-AMULET>
|
||||
<END-SEGMENT>
|
||||
\
|
||||
<BEGIN-SEGMENT ORACLE>
|
||||
<OBJECT FLATHEAD-MOUNTAINS (LOC LOCAL-GLOBALS) (DESC "Flathead Mountains") (
|
||||
SYNONYM MOUNTAIN MOUNTAINS) (ADJECTIVE FLATHEAD) (RESEARCH
|
||||
"\"This towering range runs north to south, forming the eastern border of the
|
||||
Frigid River Valley. Beyond the mountains, uninhabitable swamps extend to the
|
||||
edge of the world. Near the southern end of the range, the Zorbel Pass permits
|
||||
passage to the Fublio Valley.\"") (ACTION FLATHEAD-MOUNTAINS-F)>
|
||||
<DEFINE-ROUTINE FLATHEAD-MOUNTAINS-F>
|
||||
<ROOM CRAG (LOC ROOMS) (DESC "Crag") (REGION "Flathead Mountains") (LDESC
|
||||
"You are high in the mountains, surrounded by jagged, rocky peaks. Paths
|
||||
squeeze northeast, southeast, and southwest, and it looks like you could
|
||||
also climb down.") (SW TO HOLLOW) (DOWN TO UPPER-LEDGE) (NE TO NATURAL-ARCH) (
|
||||
SE TO NATURAL-ARCH) (FLAGS RLANDBIT ONBIT BEYONDBIT OUTSIDEBIT) (GLOBAL
|
||||
FLATHEAD-MOUNTAINS) (SYNONYM CRAG) (VALUE 10) (MAP-LOC <PTABLE FJORD-MAP-NUM
|
||||
MAP-GEN-Y-4 MAP-GEN-X-4>) (ICON CRAG-ICON)>
|
||||
<OBJECT CRAG-REBUS-BUTTON (LOC CRAG) (SDESC "blinking key-shaped button") (
|
||||
FDESC "Imbedded in the rocky wall is a blinking button in the shape of a key.")
|
||||
(SYNONYM BUTTON) (ADJECTIVE KEY-SHAPED BLINKING) (ACTION REBUS-BUTTON-F)>
|
||||
<ROOM HOLLOW (LOC ROOMS) (DESC "Hollow") (REGION "Flathead Mountains") (NE TO
|
||||
CRAG) (SOUTH TO IRON-MINE IF IRON-MINE-OPEN) (FLAGS RLANDBIT ONBIT BEYONDBIT
|
||||
OUTSIDEBIT) (GLOBAL FLATHEAD-MOUNTAINS) (MAP-LOC <PTABLE FJORD-MAP-NUM
|
||||
MAP-GEN-Y-5 MAP-GEN-X-3>) (THINGS IRON MINE IRON-MINE-PS) (ACTION HOLLOW-F)>
|
||||
<DEFINE-ROUTINE HOLLOW-F>
|
||||
<GLOBAL IRON-MINE-OPEN <>>
|
||||
<OBJECT RUNES (LOC HOLLOW) (DESC "runes") (SYNONYM RUNES) (ADJECTIVE STRANGE
|
||||
FRIGHTENING) (FLAGS READBIT NDESCBIT NARTICLEBIT) (TEXT
|
||||
"The runes are in an ancient and unfamiliar language; you can translate only
|
||||
a handful of phrases: \"accursed sapphire\" and \"sealed their tomb\" and
|
||||
\"death awaits.\"")>
|
||||
<OBJECT HEXAGONAL-HOLE (LOC HOLLOW) (DESC "six-sided hole") (SYNONYM HOLE) (
|
||||
ADJECTIVE SMALL SIX-SIDED HEXAGONAL) (FLAGS NDESCBIT) (ACTION HEXAGONAL-HOLE-F)
|
||||
>
|
||||
<DEFINE-ROUTINE HEXAGONAL-HOLE-F>
|
||||
<OBJECT BIRCH (LOC HOLLOW) (DESC "birch tree") (FDESC
|
||||
"A stubborn birch tree has been eking out an existence in this rocky hollow
|
||||
for, judging by its size, fifty to a hundred years -- though, in this barren
|
||||
spot, who can guess the growth rate of a tree?") (SYNONYM TREE BIRCH) (
|
||||
ADJECTIVE BIRCH) (FLAGS PLANTBIT) (ACTION BIRCH-F)>
|
||||
<DEFINE-ROUTINE BIRCH-F>
|
||||
<ROOM IRON-MINE (LOC ROOMS) (DESC "Iron Mine") (REGION "Flathead Mountains") (
|
||||
LDESC "This appears to have been a mine for the excavation of iron ore, possibly
|
||||
dating to the earliest days of recorded history. There seems to have been a
|
||||
struggle here, in the distant past: two decayed skeletons locked in vicious
|
||||
combat. The rusty strips of metal by their side may have once been weapons.") (
|
||||
NORTH TO HOLLOW) (OUT TO HOLLOW) (FLAGS RLANDBIT BEYONDBIT UNDERGROUNDBIT) (
|
||||
SYNONYM MINE) (ADJECTIVE IRON) (GLOBAL BONES BODIES FLATHEAD-MOUNTAINS) (THINGS
|
||||
IRON MINE IRON-MINE-PS <> IRON IRON-PS IRON ORE IRON-PS) (MAP-LOC <PTABLE
|
||||
FJORD-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-3>) (ICON IRON-MINE-ICON)>
|
||||
<DEFINE-ROUTINE IRON-PS>
|
||||
<DEFINE-ROUTINE IRON-MINE-PS>
|
||||
<BEGIN-SEGMENT CASTLE>
|
||||
<OBJECT SAPPHIRE (LOC IRON-MINE) (DESC "sapphire") (FDESC
|
||||
"In the bony hand of one of the skeletons, locked in its death grip, is
|
||||
a stunningly beautiful sapphire.") (SYNONYM SAPPHIRE JEWEL JERRIMORE) (
|
||||
ADJECTIVE STUNNING STUNNINGLY BEAUTIFUL CURSED ACCURSED) (FLAGS TAKEBIT
|
||||
TRYTAKEBIT) (SIZE 3) (OWNER SAPPHIRE) (RESEARCH
|
||||
"\"The legend of the accursed Jewel of Jerrimore can trace its origins to
|
||||
the third century B.E. in the northlands of Frobozz. This jewel, which in
|
||||
most versions of the legend is a star sapphire, is said to have been cursed
|
||||
by the Mage of Jerrimore as he lay upon his deathbed.|
|
||||
As he sickened, this powerful but twisted wizard became convinced that
|
||||
his enemies had poisoned him to gain possession of his greatest treasure,
|
||||
the Jewel of Jerrimore. With his dying breath, he loosed a great and evil
|
||||
curse upon the Jewel and all who would possess it.|
|
||||
After the Mage's death, each of his heirs took possession of the jewel;
|
||||
each held it jealously, mistrusting any who might look upon it; each became
|
||||
obsessed with the greed and treachery they perceived around them; and each
|
||||
came to early and horrible deaths. Thus grew the legend of the cursed Jewel.|
|
||||
Although the legends vary, all versions say that the Jewel travelled
|
||||
through many lands, always leaving a wake of misery and death, and finally
|
||||
became lost in a forgotten iron mine.\"") (ACTION SAPPHIRE-F)>
|
||||
<DEFINE-ROUTINE SAPPHIRE-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT ORACLE>
|
||||
<ROOM NATURAL-ARCH (LOC ROOMS) (DESC "Natural Arch") (REGION
|
||||
"Flathead Mountains") (LDESC
|
||||
"You are on a windswept rock mesa. Paths lead northwest and southwest around
|
||||
an outcropping. A slender bridge of sandstone arcs gracefully above you.
|
||||
Beneath the center of the arch, timeworn stairs lead down into a dark cave.") (
|
||||
NW TO CRAG) (SW TO CRAG) (DOWN TO ENCHANTED-CAVE) (FLAGS RLANDBIT ONBIT
|
||||
BEYONDBIT OUTSIDEBIT) (GLOBAL FLATHEAD-MOUNTAINS) (MAP-LOC <PTABLE
|
||||
FJORD-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-6>) (ICON NATURAL-ARCH-ICON)>
|
||||
<OBJECT NATURAL-ARCH-OBJECT (LOC NATURAL-ARCH) (DESC "sandstone arch") (SYNONYM
|
||||
ARCH BRIDGE) (ADJECTIVE SANDSTONE NATURAL SLENDER GRACEFUL) (FLAGS NDESCBIT) (
|
||||
ACTION NATURAL-ARCH-OBJECT-F)>
|
||||
<DEFINE-ROUTINE NATURAL-ARCH-OBJECT-F>
|
||||
<ROOM ENCHANTED-CAVE (LOC ROOMS) (DESC "Enchanted Cave") (REGION
|
||||
"Flathead Mountains") (UP TO NATURAL-ARCH) (OUT TO NATURAL-ARCH) (FLAGS
|
||||
RLANDBIT BEYONDBIT UNDERGROUNDBIT) (SYNONYM CAVE) (ADJECTIVE ENCHANTED) (GLOBAL
|
||||
BONES FLATHEAD-MOUNTAINS) (MAP-LOC <PTABLE FJORD-MAP-NUM MAP-GEN-Y-4
|
||||
MAP-GEN-X-7>) (ICON ENCHANTED-CAVE-ICON) (ACTION ENCHANTED-CAVE-F)>
|
||||
<DEFINE-ROUTINE ENCHANTED-CAVE-F>
|
||||
<CONSTANT STATUE-DESC
|
||||
"Behind the altar is a statue of a young man holding a frail flower. His face
|
||||
shows heartbreak and despair, with a single tear just beginning to slide down
|
||||
his cheek.">
|
||||
<OBJECT STATUE (LOC ENCHANTED-CAVE) (DESC "statue") (SYNONYM STATUE MAN) (
|
||||
ADJECTIVE YOUNG) (FLAGS NDESCBIT) (GENERIC G-DIMWIT-F) (ACTION STATUE-F)>
|
||||
<DEFINE-ROUTINE STATUE-F>
|
||||
<OBJECT ALTAR (LOC ENCHANTED-CAVE) (DESC "altar") (SYNONYM ALTAR) (FLAGS
|
||||
NDESCBIT VOWELBIT SURFACEBIT SEARCHBIT CONTBIT OPENBIT) (ACTION ALTAR-F)>
|
||||
<DEFINE-ROUTINE ALTAR-F>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT FLOWER (LOC ENCHANTED-CAVE) (DESC "flower") (SYNONYM FLOWER) (FLAGS
|
||||
NDESCBIT TAKEBIT TRYTAKEBIT PLANTBIT) (ACTION FLOWER-F)>
|
||||
<DEFINE-ROUTINE FLOWER-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT ORACLE>
|
||||
<ROOM UPPER-LEDGE (LOC ROOMS) (DESC "Upper Ledge") (REGION "Flathead Mountains"
|
||||
) (LDESC "You are on a mountain ledge with a spectacular view of the Flathead Fjord,
|
||||
which separates the Flathead Mountains (which you are at the northern tip of)
|
||||
from the Gray Mountains, across the fjord to the north. The ocean, to the west,
|
||||
is lost amidst the dense fog which rolls up the fjord. A rocky spire stands
|
||||
like a finger at the very edge of the ledge. A steep path climbs farther up
|
||||
the mountain. A short distance below is another, smaller ledge.") (UP TO CRAG)
|
||||
(DOWN TO LOWER-LEDGE IF ROPE-PLACED ELSE
|
||||
"There are no handholds to climb down.") (FLAGS RLANDBIT ONBIT BEYONDBIT
|
||||
OUTSIDEBIT) (SYNONYM LEDGE) (ADJECTIVE UPPER) (GLOBAL FJORD LOWER-LEDGE
|
||||
FLATHEAD-MOUNTAINS GRAY-MOUNTAINS) (MAP-LOC <PTABLE FJORD-MAP-NUM MAP-GEN-Y-3
|
||||
MAP-GEN-X-4>) (ICON UPPER-LEDGE-ICON)>
|
||||
<GLOBAL ROPE-PLACED <>>
|
||||
<OBJECT SPIRE (LOC UPPER-LEDGE) (DESC "rocky spire") (SYNONYM SPIRE ROCK) (
|
||||
ADJECTIVE ROCKY) (FLAGS NDESCBIT)>
|
||||
<ROOM LOWER-LEDGE (LOC ROOMS) (DESC "Lower Ledge") (REGION "Flathead Mountains"
|
||||
) (LDESC "The view of the fjord isn't as good, as you are surrounded on three sides by
|
||||
nearly vertical cliffs. There don't seem to be any exits.") (UP SORRY
|
||||
"You can't even see the rope anymore, let alone reach it.") (DOWN SORRY
|
||||
"It's still a good five hundred foot drop to the fjord!") (FLAGS RLANDBIT ONBIT
|
||||
BEYONDBIT OUTSIDEBIT) (SYNONYM LEDGE) (ADJECTIVE LOWER) (GLOBAL FJORD
|
||||
UPPER-LEDGE FLATHEAD-MOUNTAINS) (MAP-LOC <PTABLE FJORD-MAP-NUM MAP-GEN-Y-2
|
||||
MAP-GEN-X-4>) (ICON LOWER-LEDGE-ICON) (ACTION LOWER-LEDGE-F) (THINGS NARROW
|
||||
CRACK NARROW-CRACK-PS)>
|
||||
<DEFINE-ROUTINE LOWER-LEDGE-F>
|
||||
<DEFINE-ROUTINE NARROW-CRACK-PS>
|
||||
<OBJECT EASLE (LOC LOWER-LEDGE) (DESC "easel") (FDESC
|
||||
"Despite the inferior view, someone has been painting here. An easel
|
||||
is set up on the ledge.") (SYNONYM EASLE EASEL) (FLAGS TAKEBIT MAGICBIT CONTBIT
|
||||
SEARCHBIT SURFACEBIT OPENBIT VOWELBIT) (SIZE 10) (VALUE 12)>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT LANDSCAPE (LOC EASLE) (DESC "landscape") (SYNONYM LANDSCAPE PAINTING) (
|
||||
FLAGS TAKEBIT MAGICBIT) (VALUE 12) (GENERIC G-PAINTING-F) (ACTION LANDSCAPE-F)>
|
||||
|
||||
<DEFINE-ROUTINE LANDSCAPE-F>
|
||||
<DEFINE-ROUTINE G-PAINTING-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT ORACLE>
|
||||
<OBJECT FJORD (LOC LOCAL-GLOBALS) (DESC "the Flathead Fjord") (SYNONYM FJORD) (
|
||||
ADJECTIVE FLATHEAD) (FLAGS NARTICLEBIT WATERBIT) (RESEARCH
|
||||
"\"The beautiful Flathead Fjord is an ocean inlet which divides the great
|
||||
mountains of the eastlands into two ranges: the Gray Mountains, on the north
|
||||
side of the fjord, and the Flathead Mountains, south of the fjord.\"") (ACTION
|
||||
FJORD-F)>
|
||||
<DEFINE-ROUTINE FJORD-F>
|
||||
\
|
||||
<OBJECT GRAY-MOUNTAINS (LOC LOCAL-GLOBALS) (DESC "Gray Mountains") (SYNONYM
|
||||
MOUNTAINS) (ADJECTIVE GRAY GREY) (RESEARCH
|
||||
"\"The Gray Mountains refer to both a mountain range and a province. Lying
|
||||
in the far northern part of the eastlands, the Gray Mountains are a harsh
|
||||
environment, but a mecca for winter sport enthusiasts.\"") (ACTION
|
||||
FLATHEAD-MOUNTAINS-F)>
|
||||
<ROOM GLACIER (LOC ROOMS) (DESC "Glacier") (REGION "Gray Mountains") (LDESC
|
||||
"You are on a glacier high atop the Gray Mountains. Far below is a frozen
|
||||
lake, brilliantly reflective in the midday sunshine. The climb down looks
|
||||
extremely hazardous.") (DOWN PER GLACIER-DEATH) (FLAGS RLANDBIT OUTSIDEBIT
|
||||
ONBIT BEYONDBIT) (SYNONYM GLACIER) (GLOBAL GRAY-MOUNTAINS) (VALUE 10) (MAP-LOC
|
||||
<PTABLE GRAY-MOUNTAINS-MAP-NUM MAP-GEN-Y-1 MAP-GEN-X-10>)>
|
||||
<DEFINE-ROUTINE GLACIER-DEATH>
|
||||
<ROOM MIRROR-LAKE (LOC ROOMS) (DESC "Mirror Lake") (REGION "Gray Mountains") (
|
||||
LDESC "You are in the center of a lake whose frozen surface is more reflective than
|
||||
the finest mirror. It's almost impossible to tell where the sky ends and the
|
||||
ice begins. Worse, the surface is so smooth it's impossible to move!|
|
||||
Looking into the mirror, everything seems somehow... different.") (NORTH
|
||||
SORRY "Slip. Slide. No Progress.") (NE SORRY "Slip. Slide. No Progress.") (EAST
|
||||
SORRY "Slip. Slide. No Progress.") (SE SORRY "Slip. Slide. No Progress.") (
|
||||
SOUTH SORRY "Slip. Slide. No Progress.") (SW SORRY "Slip. Slide. No Progress.")
|
||||
(WEST SORRY "Slip. Slide. No Progress.") (NW SORRY "Slip. Slide. No Progress.")
|
||||
(FLAGS RLANDBIT ONBIT BEYONDBIT OUTSIDEBIT) (GLOBAL GRAY-MOUNTAINS) (MAP-LOC <
|
||||
PTABLE GRAY-MOUNTAINS-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-8>) (ICON MIRROR-LAKE-ICON)
|
||||
(ACTION MIRROR-LAKE-F)>
|
||||
<DEFINE-ROUTINE MIRROR-LAKE-F>
|
||||
<DEFINE-ROUTINE LEAVE-MIRROR>
|
||||
<GLOBAL MIRROR-SCORE 14>
|
||||
<OBJECT MIRROR (LOC MIRROR-LAKE) (DESC "mirror") (SYNONYM MIRROR LAKE SURFACE
|
||||
ICE) (ADJECTIVE MIRROR FROZEN SMOOTH REFLECTIVE) (FLAGS NDESCBIT) (RESEARCH
|
||||
"\"Mirror Lake, in the Gray Mountains, is believed to possess certain magical
|
||||
powers. Frank Lloyd Flathead's ski chalet was located nearby.\"") (ACTION
|
||||
MIRROR-F)>
|
||||
<DEFINE-ROUTINE MIRROR-F>
|
||||
<OBJECT REFLECTION (LOC MIRROR-LAKE) (OWNER ROOMS) (DESC "reflection") (SYNONYM
|
||||
REFLECTION) (FLAGS NDESCBIT) (ACTION REFLECTION-F)>
|
||||
<DEFINE-ROUTINE REFLECTION-F>
|
||||
<GLOBAL ORB-FOUND <>>
|
||||
<GLOBAL ENCHANTED-ORB <>>
|
||||
<GLOBAL ORBS-EXAMINED 0>
|
||||
<ROOM EAST-OF-MIRROR (LOC ROOMS) (DESC "East of Mirror") (REGION
|
||||
"Gray Mountains") (WEST SORRY "The surface of the lake is too slippery.") (NW
|
||||
TO NORTH-OF-MIRROR) (SW TO SOUTH-OF-MIRROR) (FLAGS RLANDBIT ONBIT OUTSIDEBIT
|
||||
BEYONDBIT) (GLOBAL GRAY-MOUNTAINS) (MAP-LOC <PTABLE GRAY-MOUNTAINS-MAP-NUM
|
||||
MAP-GEN-Y-3 MAP-GEN-X-9>) (ACTION EAST-OF-MIRROR-F)>
|
||||
<DEFINE-ROUTINE EAST-OF-MIRROR-F>
|
||||
<DEFINE-ROUTINE MIRRORS-EDGE-DESC>
|
||||
<ROOM WEST-OF-MIRROR (LOC ROOMS) (DESC "West of Mirror") (REGION
|
||||
"Gray Mountains") (EAST SORRY "The surface of the lake is too slippery.") (WEST
|
||||
TO CHALET) (NE TO NORTH-OF-MIRROR) (SE TO SOUTH-OF-MIRROR) (FLAGS RLANDBIT
|
||||
ONBIT OUTSIDEBIT BEYONDBIT) (GLOBAL CHALET GRAY-MOUNTAINS) (MAP-LOC <PTABLE
|
||||
GRAY-MOUNTAINS-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-7>) (ACTION WEST-OF-MIRROR-F)>
|
||||
<DEFINE-ROUTINE WEST-OF-MIRROR-F>
|
||||
<ROOM NORTH-OF-MIRROR (LOC ROOMS) (DESC "North of Mirror") (REGION
|
||||
"Gray Mountains") (SOUTH SORRY "The surface of the lake is too slippery.") (SE
|
||||
TO EAST-OF-MIRROR) (SW TO WEST-OF-MIRROR) (FLAGS RLANDBIT ONBIT OUTSIDEBIT
|
||||
BEYONDBIT) (GLOBAL GRAY-MOUNTAINS) (MAP-LOC <PTABLE GRAY-MOUNTAINS-MAP-NUM
|
||||
MAP-GEN-Y-2 MAP-GEN-X-8>) (ACTION NORTH-OF-MIRROR-F)>
|
||||
<DEFINE-ROUTINE NORTH-OF-MIRROR-F>
|
||||
<ROOM SOUTH-OF-MIRROR (LOC ROOMS) (DESC "South of Mirror") (REGION
|
||||
"Gray Mountains") (NORTH SORRY "The surface of the lake is too slippery.") (NE
|
||||
TO EAST-OF-MIRROR) (NW TO WEST-OF-MIRROR) (FLAGS RLANDBIT ONBIT OUTSIDEBIT
|
||||
BEYONDBIT) (GLOBAL GRAY-MOUNTAINS) (MAP-LOC <PTABLE GRAY-MOUNTAINS-MAP-NUM
|
||||
MAP-GEN-Y-4 MAP-GEN-X-8>) (ACTION SOUTH-OF-MIRROR-F)>
|
||||
<DEFINE-ROUTINE SOUTH-OF-MIRROR-F>
|
||||
<ROOM CHALET (LOC ROOMS) (DESC "Chalet") (REGION "Gray Mountains") (LDESC
|
||||
"You are in a handsomely designed vacation chalet, with an exit to the east.")
|
||||
(EAST TO WEST-OF-MIRROR) (OUT TO WEST-OF-MIRROR) (FLAGS RLANDBIT ONBIT
|
||||
BEYONDBIT) (GLOBAL GRAY-MOUNTAINS) (SYNONYM CHALET) (ADJECTIVE SKI) (MAP-LOC <
|
||||
PTABLE GRAY-MOUNTAINS-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-6>) (ICON CHALET-ICON)>
|
||||
<OBJECT SCALE-MODEL (LOC CHALET) (DESC "scale model") (FDESC
|
||||
"Leaning unobtrusively in one corner is a scale model of the FrobozzCo World
|
||||
Headquarters Building. The scale appears to be around 1:1000.") (SYNONYM MODEL)
|
||||
(ADJECTIVE SCALE) (FLAGS TAKEBIT MAGICBIT) (SIZE 20) (VALUE 12)>
|
||||
\
|
||||
<OBJECT SWAMP (LOC LOCAL-GLOBALS) (DESC "swamp") (SYNONYM SWAMP BAYOU DELTA
|
||||
MARSH MUCK BOG) (ADJECTIVE SWAMPY MAZE-LIKE FOGGY MIST-COVERED) (FLAGS WATERBIT
|
||||
)>
|
||||
<ROOM DELTA-1 (LOC ROOMS) (DESC "Delta") (REGION "Frigid River Valley") (LDESC
|
||||
"You are in the midst of the maze-like, swampy bayou where the Frigid
|
||||
River dumps its silt before reaching the sea. Twisting paths appear to
|
||||
lead into the growth in all directions.") (NORTH TO DELTA-3) (NE TO DELTA-4) (
|
||||
EAST SORRY "The path dead ends as the growth closes to an unpassable tangle.")
|
||||
(SE SORRY "The path dead ends as the growth closes to an unpassable tangle.") (
|
||||
SOUTH SORRY "The path dead ends as the growth closes to an unpassable tangle.")
|
||||
(SW TO DELTA-2) (WEST SORRY
|
||||
"The path dead ends as the growth closes to an unpassable tangle.") (NW TO
|
||||
DELTA-2) (FLAGS RLANDBIT OUTSIDEBIT ONBIT BEYONDBIT DELTABIT) (GLOBAL SWAMP) (
|
||||
VALUE 10) (MAP-LOC <PTABLE DELTA-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-10>) (ICON
|
||||
DELTA-ICON)>
|
||||
<ROOM DELTA-2 (LOC ROOMS) (DESC "Delta") (REGION "Frigid River Valley") (LDESC
|
||||
"You are in the midst of the maze-like, swampy bayou where the Frigid
|
||||
River dumps its silt before reaching the sea. Twisting paths appear to
|
||||
lead into the growth in all directions.") (NORTH SORRY
|
||||
"The path dead ends as the growth closes to an unpassable tangle.") (NE TO
|
||||
DELTA-1) (EAST SORRY
|
||||
"The path dead ends as the growth closes to an unpassable tangle.") (SE TO
|
||||
DELTA-1) (SOUTH TO DELTA-7) (SW TO DELTA-7) (WEST SORRY
|
||||
"The path dead ends as the growth closes to an unpassable tangle.") (NW TO
|
||||
DELTA-3) (FLAGS RLANDBIT OUTSIDEBIT ONBIT BEYONDBIT DELTABIT) (GLOBAL SWAMP) (
|
||||
MAP-LOC <PTABLE DELTA-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-8>) (ICON DELTA-ICON)>
|
||||
<ROOM DELTA-3 (LOC ROOMS) (DESC "Delta") (REGION "Frigid River Valley") (LDESC
|
||||
"You are in the midst of the maze-like, swampy bayou where the Frigid
|
||||
River dumps its silt before reaching the sea. Twisting paths appear to
|
||||
lead into the growth in all directions.") (NORTH TO DELTA-4) (NE TO DELTA-4) (
|
||||
EAST TO DELTA-1) (SE SORRY
|
||||
"The path dead ends as the growth closes to an unpassable tangle.") (SOUTH
|
||||
SORRY "The path dead ends as the growth closes to an unpassable tangle.") (SW
|
||||
TO DELTA-2) (WEST TO DELTA-5) (NW TO DELTA-5) (FLAGS RLANDBIT OUTSIDEBIT ONBIT
|
||||
BEYONDBIT DELTABIT) (GLOBAL SWAMP) (MAP-LOC <PTABLE DELTA-MAP-NUM MAP-GEN-Y-3
|
||||
MAP-GEN-X-8>) (ICON DELTA-ICON)>
|
||||
<ROOM DELTA-4 (LOC ROOMS) (DESC "Delta") (REGION "Frigid River Valley") (LDESC
|
||||
"You are in the midst of the maze-like, swampy bayou where the Frigid
|
||||
River dumps its silt before reaching the sea. Twisting paths appear to
|
||||
lead into the growth in all directions.") (NORTH SORRY
|
||||
"The path dead ends as the growth closes to an unpassable tangle.") (NE TO
|
||||
RIVERS-END) (EAST TO DELTA-1) (SE SORRY
|
||||
"The path dead ends as the growth closes to an unpassable tangle.") (SOUTH
|
||||
SORRY "The path dead ends as the growth closes to an unpassable tangle.") (SW
|
||||
TO DELTA-3) (WEST TO DELTA-3) (NW TO DELTA-5) (FLAGS RLANDBIT OUTSIDEBIT ONBIT
|
||||
BEYONDBIT DELTABIT) (GLOBAL SWAMP) (MAP-LOC <PTABLE DELTA-MAP-NUM MAP-GEN-Y-2
|
||||
MAP-GEN-X-9>) (ICON DELTA-ICON)>
|
||||
<ROOM DELTA-5 (LOC ROOMS) (DESC "Delta") (REGION "Frigid River Valley") (LDESC
|
||||
"You are in the midst of the maze-like, swampy bayou where the Frigid
|
||||
River dumps its silt before reaching the sea. Twisting paths appear to
|
||||
lead into the growth in all directions.") (NORTH SORRY
|
||||
"The path dead ends as the growth closes to an unpassable tangle.") (NE TO
|
||||
DELTA-4) (EAST SORRY
|
||||
"The path dead ends as the growth closes to an unpassable tangle.") (SE TO
|
||||
DELTA-3) (SOUTH TO DELTA-3) (SW TO DELTA-6) (WEST SORRY
|
||||
"The path dead ends as the growth closes to an unpassable tangle.") (NW SORRY
|
||||
"The path dead ends as the growth closes to an unpassable tangle.") (FLAGS
|
||||
RLANDBIT OUTSIDEBIT ONBIT BEYONDBIT DELTABIT) (GLOBAL SWAMP) (MAP-LOC <PTABLE
|
||||
DELTA-MAP-NUM MAP-GEN-Y-2 MAP-GEN-X-7>) (ICON DELTA-ICON)>
|
||||
<ROOM DELTA-6 (LOC ROOMS) (DESC "Delta") (REGION "Frigid River Valley") (LDESC
|
||||
"You are in the midst of the maze-like, swampy bayou where the Frigid
|
||||
River dumps its silt before reaching the sea. Twisting paths appear to
|
||||
lead into the growth in all directions.") (NORTH TO DELTA-5) (NE SORRY
|
||||
"The path dead ends as the growth closes to an unpassable tangle.") (EAST SORRY
|
||||
"The path dead ends as the growth closes to an unpassable tangle.") (SE TO
|
||||
DELTA-7) (SOUTH SORRY
|
||||
"The path dead ends as the growth closes to an unpassable tangle.") (SW SORRY
|
||||
"The path dead ends as the growth closes to an unpassable tangle.") (WEST TO
|
||||
DELTA-7) (NW SORRY
|
||||
"The path dead ends as the growth closes to an unpassable tangle.") (FLAGS
|
||||
RLANDBIT OUTSIDEBIT ONBIT BEYONDBIT DELTABIT) (GLOBAL SWAMP) (MAP-LOC <PTABLE
|
||||
DELTA-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-6>) (ICON DELTA-ICON)>
|
||||
<OBJECT LARGE-LILY-PAD (LOC DELTA-6) (DESC "huge lily pad") (SYNONYM PAD) (
|
||||
ADJECTIVE LARGE LILY) (FLAGS PLANTBIT SURFACEBIT CONTBIT OPENBIT SEARCHBIT) (
|
||||
CAPACITY 100) (ACTION LILY-PAD-F)>
|
||||
<DEFINE-ROUTINE LILY-PAD-F>
|
||||
<OBJECT OTTO (LOC LARGE-LILY-PAD) (DESC "ugly toad") (SYNONYM TOAD OTTO) (
|
||||
ADJECTIVE UGLY LARGE BLUE GRUMPY) (FLAGS ACTORBIT VOWELBIT CONTBIT OPENBIT
|
||||
SEARCHBIT) (ACTION OTTO-F)>
|
||||
<DEFINE-ROUTINE OTTO-F>
|
||||
<GLOBAL OTTO-NAME-COUNTER 0>
|
||||
<DEFINE-ROUTINE I-STONE-TO-OTTO>
|
||||
<OBJECT SMALL-LILY-PAD (LOC DELTA-6) (DESC "small lily pad") (SYNONYM PAD) (
|
||||
ADJECTIVE SMALL LILY) (FLAGS PLANTBIT SURFACEBIT CONTBIT OPENBIT SEARCHBIT) (
|
||||
CAPACITY 20) (ACTION LILY-PAD-F)>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT SPYGLASS (LOC SMALL-LILY-PAD) (DESC "spyglass") (PLURAL "spyglasses") (
|
||||
SYNONYM SPYGLASS TELESCOPE) (FLAGS TAKEBIT MAGICBIT TRYTAKEBIT) (VALUE 12) (
|
||||
ACTION SPYGLASS-F)>
|
||||
<DEFINE-ROUTINE SPYGLASS-F>
|
||||
<OBJECT LARGE-FLY (LOC LOCAL-GLOBALS) (DESC "large fly") (PLURAL "flies") (
|
||||
SYNONYM FLY) (ADJECTIVE LARGE) (FLAGS TAKEBIT TRYTAKEBIT) (SIZE 1) (ACTION
|
||||
FLY-F)>
|
||||
<OBJECT LARGER-FLY (LOC LOCAL-GLOBALS) (DESC "larger fly") (PLURAL "flies") (
|
||||
SYNONYM FLY) (ADJECTIVE LARGER) (FLAGS TAKEBIT TRYTAKEBIT) (SIZE 1) (ACTION
|
||||
FLY-F)>
|
||||
<OBJECT EVEN-LARGER-FLY (LOC LOCAL-GLOBALS) (DESC "even larger fly") (PLURAL
|
||||
"flies") (SYNONYM FLY) (ADJECTIVE EVEN LARGER) (FLAGS VOWELBIT TAKEBIT
|
||||
TRYTAKEBIT) (SIZE 1) (ACTION FLY-F)>
|
||||
<OBJECT LARGEST-FLY (LOC LOCAL-GLOBALS) (DESC "the largest fly") (PLURAL
|
||||
"flies") (SYNONYM FLY) (ADJECTIVE LARGEST) (FLAGS NARTICLEBIT TAKEBIT
|
||||
TRYTAKEBIT) (SIZE 1) (ACTION FLY-F)>
|
||||
<GLOBAL FLIES-EATEN 0>
|
||||
<DEFINE-ROUTINE FLY-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT LAKE>
|
||||
<BEGIN-SEGMENT SECRET>
|
||||
<BEGIN-SEGMENT ORACLE>
|
||||
<DEFINE-ROUTINE FLY-ROOM-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT ORACLE>
|
||||
<ROOM DELTA-7 (LOC ROOMS) (DESC "Delta") (REGION "Frigid River Valley") (LDESC
|
||||
"You are in the midst of the maze-like, swampy bayou where the Frigid
|
||||
River dumps its silt before reaching the sea. Twisting paths appear to
|
||||
lead into the growth in all directions.") (NORTH SORRY
|
||||
"The path dead ends as the growth closes to an unpassable tangle.") (NE TO
|
||||
DELTA-2) (EAST TO DELTA-2) (SE SORRY
|
||||
"The path dead ends as the growth closes to an unpassable tangle.") (SOUTH
|
||||
SORRY "The path dead ends as the growth closes to an unpassable tangle.") (SW
|
||||
TO OCEANS-EDGE) (WEST TO DELTA-6) (NW TO DELTA-6) (FLAGS RLANDBIT OUTSIDEBIT
|
||||
ONBIT BEYONDBIT DELTABIT) (GLOBAL SWAMP) (MAP-LOC <PTABLE DELTA-MAP-NUM
|
||||
MAP-GEN-Y-6 MAP-GEN-X-7>) (ICON DELTA-ICON)>
|
||||
<ROOM RIVERS-END (LOC ROOMS) (DESC "River's End") (REGION "Frigid River Valley"
|
||||
) (LDESC "The Frigid River ends its long journey from Flood Control Dam #3 here,
|
||||
losing its speed and turning into a delta of meandering channels to the
|
||||
southwest. To continue northeast up the river, you'd need a boat and a
|
||||
number of strong oarsmen.") (NE SORRY "Where's the boat? Where're the oarsmen?"
|
||||
) (SW TO DELTA-4) (FLAGS RLANDBIT OUTSIDEBIT ONBIT BEYONDBIT) (MAP-LOC <PTABLE
|
||||
DELTA-MAP-NUM MAP-GEN-Y-1 MAP-GEN-X-10>) (ICON RIVERS-END-ICON) (ACTION
|
||||
FLY-ROOM-F)>
|
||||
<OBJECT FRIGID-RIVER (LOC RIVERS-END) (DESC "the Frigid River") (SYNONYM RIVER)
|
||||
(ADJECTIVE FRIGID) (FLAGS NDESCBIT NARTICLEBIT WATERBIT) (RESEARCH
|
||||
"\"The Frigid River, the mightiest in the Great Underground Empire, forms
|
||||
at the spilloff of Flood Control Dam #3, pours over Aragain Falls, and finally
|
||||
empties into the Great Sea at the southern end of the Frigid River Valley. The
|
||||
total length, from dam to river delta, is over 150 bloits.\"")>
|
||||
<ROOM OCEANS-EDGE (LOC ROOMS) (DESC "Ocean's Edge") (REGION
|
||||
"Frigid River Valley") (LDESC
|
||||
"The channels of the river trickle into the mighty Flathead Ocean, which
|
||||
extends west to the horizon. A path leads into the delta to the northeast.") (
|
||||
NE TO DELTA-7) (FLAGS RLANDBIT OUTSIDEBIT ONBIT BEYONDBIT) (GLOBAL
|
||||
FLATHEAD-OCEAN) (MAP-LOC <PTABLE DELTA-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-6>) (ICON
|
||||
OCEANS-EDGE-ICON)>
|
||||
<OBJECT FLATHEAD-OCEAN (LOC LOCAL-GLOBALS) (DESC "the Flathead Ocean") (SYNONYM
|
||||
OCEAN SEA) (ADJECTIVE FLATHEAD MIGHTY GREAT) (FLAGS NARTICLEBIT WATERBIT) (
|
||||
RESEARCH "\"The Flathead Ocean divides the world into the eastlands and westlands. It
|
||||
was called the Great Sea until the time of Dimwit Flathead, and it is still
|
||||
known by its earlier name in many parts of the kingdom.\"")>
|
||||
\
|
||||
<ROOM FOOT-OF-STATUE (LOC ROOMS) (REGION "Fublio Valley") (DESC
|
||||
"Foot of Statue") (SW TO VIEW-OF-STATUE) (FLAGS RLANDBIT OUTSIDEBIT ONBIT
|
||||
BEYONDBIT) (GLOBAL DIMWIT-STATUE) (VALUE 10) (MAP-LOC <PTABLE FUBLIO-MAP-NUM
|
||||
MAP-GEN-Y-4 MAP-GEN-X-8>) (ICON FOOT-OF-STATUE-ICON) (ACTION FOOT-OF-STATUE-F)>
|
||||
|
||||
<DEFINE-ROUTINE FOOT-OF-STATUE-F>
|
||||
<OBJECT DIMWIT-STATUE (LOC LOCAL-GLOBALS) (OWNER DIMWIT-STATUE) (DESC
|
||||
"statue of Dimwit Flathead") (SYNONYM STATUE DIMWIT FLATHEAD) (ADJECTIVE LORD
|
||||
DIMWIT) (GENERIC G-DIMWIT-F) (ACTION DIMWIT-STATUE-F)>
|
||||
<DEFINE-ROUTINE DIMWIT-STATUE-F>
|
||||
<CONSTANT NEAR-STATUE-DESC
|
||||
"Towering above you is a statue so tall that you can't see much beyond
|
||||
the knees.">
|
||||
<CONSTANT DISTANT-STATUE-DESC
|
||||
"To the northeast, a huge statue of Dimwit Flathead casts a dark shadow across
|
||||
the land. The statue is beginning to deteriorate; vines cover the lower bloit
|
||||
or so, and some pterodactyls have begun nesting on the flat top of the statue's
|
||||
head.">
|
||||
<ROOM VIEW-OF-STATUE (LOC ROOMS) (REGION "Fublio Valley") (DESC
|
||||
"View of Statue") (NE TO FOOT-OF-STATUE) (WEST TO BASE-OF-MOUNTAINS) (SE TO
|
||||
CAIRN) (SOUTH TO OUTSIDE-HUT) (FLAGS RLANDBIT OUTSIDEBIT ONBIT BEYONDBIT) (
|
||||
GLOBAL DIMWIT-STATUE) (MAP-LOC <PTABLE FUBLIO-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-7>)
|
||||
(THINGS <> SHADOW PHIL-SHADOW-PS SMALL TREES TREE-PS) (ACTION VIEW-OF-STATUE-F)
|
||||
>
|
||||
<DEFINE-ROUTINE TREE-PS>
|
||||
<DEFINE-ROUTINE VIEW-OF-STATUE-F>
|
||||
<ROOM OUTSIDE-HUT (LOC ROOMS) (REGION "Fublio Valley") (DESC "Outside Hut") (
|
||||
LDESC "A trail from the north ends here. To the west is a decaying hut.") (
|
||||
NORTH TO VIEW-OF-STATUE) (WEST TO MEGABOZ-HUT) (IN TO MEGABOZ-HUT) (FLAGS
|
||||
RLANDBIT OUTSIDEBIT ONBIT BEYONDBIT) (GLOBAL MEGABOZ-HUT) (MAP-LOC <PTABLE
|
||||
FUBLIO-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-7>) (ICON OUTSIDE-HUT-ICON)>
|
||||
<ROOM MEGABOZ-HUT (LOC ROOMS) (REGION "Fublio Valley") (DESC "Megaboz's Hut") (
|
||||
EAST TO OUTSIDE-HUT) (OUT TO OUTSIDE-HUT) (UP PER ATTIC-ENTER-F) (SYNONYM HUT)
|
||||
(OWNER MEGABOZ) (GLOBAL MEGABOZ-TRAP-DOOR) (FLAGS RLANDBIT BEYONDBIT) (MAP-LOC
|
||||
<PTABLE FUBLIO-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-6>) (ACTION MEGABOZ-HUT-F)>
|
||||
<DEFINE-ROUTINE MEGABOZ-HUT-F>
|
||||
<DEFINE-ROUTINE ATTIC-ENTER-F>
|
||||
<OBJECT POEM (LOC MEGABOZ-HUT) (DESC "poem") (SYNONYM POEM) (FLAGS NDESCBIT
|
||||
READBIT) (TEXT "\"She stood in the shade of a _ _ _ _ _ _ _ _ _|
|
||||
She held the prize of an _ _ _ _ _ _ _ _|
|
||||
And all beheld that she proudly _ _ _ _|
|
||||
A relic found in a _ _ _ _ _ _ _ _ _ _\"")>
|
||||
<OBJECT WALL-HANGINGS (LOC MEGABOZ-HUT) (DESC "wall hangings") (SYNONYM HANGING
|
||||
HANGINGS) (ADJECTIVE EMBROIDER WALL) (FLAGS NDESCBIT READBIT) (TEXT
|
||||
"One hanging reads \"Hut Sweet Hut\" and the other reads \"Forget the rest;
|
||||
Megaboz is the best.\"")>
|
||||
<OBJECT MEGABOZ-TRAP-DOOR (LOC LOCAL-GLOBALS) (DESC "trap door") (SYNONYM DOOR)
|
||||
(ADJECTIVE TRAP) (FLAGS DOORBIT) (ACTION MEGABOZ-TRAP-DOOR-F)>
|
||||
<DEFINE-ROUTINE MEGABOZ-TRAP-DOOR-F>
|
||||
<ROOM ATTIC (LOC ROOMS) (REGION "Fublio Valley") (DESC "Attic") (LDESC
|
||||
"This musty little room is barely more than a crawl space beneath the roof of
|
||||
the hut.") (DOWN TO MEGABOZ-HUT IF MEGABOZ-TRAP-DOOR IS OPEN) (FLAGS RLANDBIT
|
||||
BEYONDBIT) (GLOBAL MEGABOZ-TRAP-DOOR LOCK-OBJECT) (VALUE 8) (SYNONYM ATTIC) (
|
||||
MAP-LOC <PTABLE FUBLIO-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-5>) (ICON ATTIC-ICON) (
|
||||
THINGS <> SHADOW PHIL-SHADOW-PS)>
|
||||
<OBJECT ATTIC-REBUS-BUTTON (LOC ATTIC) (SDESC "blinking key-shaped button") (
|
||||
SYNONYM BUTTON) (ADJECTIVE KEY-SHAPED BLINKING) (ACTION REBUS-BUTTON-F)>
|
||||
<OBJECT TRUNK (LOC ATTIC) (DESC "trunk") (LDESC
|
||||
"In the shadows under the eaves, you spot an ancient trunk, covered with
|
||||
dust and cobwebs.") (SYNONYM TRUNK) (ADJECTIVE ANCIENT DUSTY) (FLAGS TRYTAKEBIT
|
||||
CONTBIT SEARCHBIT LOCKEDBIT) (CAPACITY 75) (ACTION TRUNK-F)>
|
||||
<DEFINE-ROUTINE TRUNK-F>
|
||||
<GLOBAL FLY-IN-TRUNK T>
|
||||
<OBJECT ROBE (LOC MEGABOZ) (DESC "wizardly robe") (SYNONYM ROBE) (ADJECTIVE
|
||||
WIZARDLY) (FLAGS WEARBIT)>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT PAN (LOC TRUNK) (DESC "saucepan") (SYNONYM SAUCEPAN PAN) (FLAGS TAKEBIT
|
||||
CONTBIT OPENBIT SEARCHBIT) (ACTION PAN-F)>
|
||||
<DEFINE-ROUTINE PAN-F>
|
||||
<OBJECT NOTEBOOK (LOC TRUNK) (DESC "notebook") (SYNONYM NOTEBOOK) (FLAGS
|
||||
TAKEBIT READBIT) (ACTION NOTEBOOK-F)>
|
||||
<DEFINE-ROUTINE NOTEBOOK-F>
|
||||
<GLOBAL SACRED-WORD-NUMBER 10>
|
||||
<CONSTANT SACRED-WORDS <PTABLE "sizul" "fzorty" "xzilch" "fublitskee" "zastic"
|
||||
"aulderfoo" "lizowurt" "eldablitz" "mordex" "hildebud">>
|
||||
<CONSTANT SACRED-WORD-WORDS-LENGTH 10>
|
||||
<CONSTANT SACRED-WORD-WORDS <PTABLE <VOC "SIZUL" <>> <VOC "FZORTY" <>> <VOC
|
||||
"XZILCH" <>> <VOC "FUBLITSKEE" <>> <VOC "ZASTIC" <>> <VOC "AULDERFOO" <>> <VOC
|
||||
"LIZOWURT" <>> <VOC "ELDABLITZ" <>> <VOC "MORDEX" <>> <VOC "HILDEBUD" <>>>>
|
||||
<OBJECT SACRED-WORD-OBJ (DESC "sacred word") (SYNONYM SIZUL FZORTY XZILCH
|
||||
FUBLITSKEE ZASTIC AULDERFOO LIZOWURT ELDABLITZ MORDEX HILDEBUD)>
|
||||
<OBJECT HARMONICA (LOC TRUNK) (DESC "harmonica") (SYNONYM HARMONICA) (FLAGS
|
||||
TAKEBIT) (SIZE 3) (ACTION HARMONICA-F)>
|
||||
<DEFINE-ROUTINE HARMONICA-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT ORACLE>
|
||||
<ROOM CAIRN (LOC ROOMS) (REGION "Fublio Valley") (DESC "Cairn") (LDESC
|
||||
"Paths lead around this haphazard pile of stones to the northwest, east,
|
||||
and south.") (NW TO VIEW-OF-STATUE) (EAST TO OUTSIDE-SHACK) (SOUTH TO
|
||||
QUARRYS-EDGE) (FLAGS RLANDBIT ONBIT BEYONDBIT OUTSIDEBIT) (MAP-LOC <PTABLE
|
||||
FUBLIO-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-8>) (ICON CAIRN-ICON)>
|
||||
<OBJECT CAIRN-OBJECT (LOC CAIRN) (DESC "pile of stones") (SYNONYM PILE STONE
|
||||
STONES CAIRN) (ADJECTIVE HAPHAZARD) (FLAGS NDESCBIT) (ACTION CAIRN-OBJECT-F)>
|
||||
<DEFINE-ROUTINE CAIRN-OBJECT-F>
|
||||
<ROOM OUTSIDE-SHACK (LOC ROOMS) (REGION "Fublio Valley") (DESC "Outside Shack")
|
||||
(LDESC "To the northeast is a run-down little shack. A sign is posted by the
|
||||
entrance, and a path runs off to the west.") (WEST TO CAIRN) (NE TO
|
||||
GUMBOZ-SHACK) (FLAGS RLANDBIT ONBIT BEYONDBIT OUTSIDEBIT) (GLOBAL GUMBOZ-SHACK
|
||||
SIGN) (MAP-LOC <PTABLE FUBLIO-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-9>)>
|
||||
<ROOM GUMBOZ-SHACK (LOC ROOMS) (REGION "Fublio Valley") (DESC "Gumboz's Shack")
|
||||
(LDESC "You are in a small shack, the home of an obscure magician named Gumboz. The
|
||||
only exit is southwest.") (SW PER SHACK-EXIT-F) (OUT PER SHACK-EXIT-F) (FLAGS
|
||||
RLANDBIT BEYONDBIT) (SYNONYM SHACK) (ADJECTIVE GUMBOZ\'S) (MAP-LOC <PTABLE
|
||||
FUBLIO-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-10>) (ACTION GUMBOZ-SHACK-F)>
|
||||
<DEFINE-ROUTINE GUMBOZ-SHACK-F>
|
||||
<DEFINE-ROUTINE SHACK-EXIT-F>
|
||||
<GLOBAL HUNGER-SPELL-CAST <>>
|
||||
<GLOBAL HUNGER-COUNT 0>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<DEFINE-ROUTINE CAST-HUNGER-SPELL>
|
||||
<DEFINE-ROUTINE I-HUNGER>
|
||||
<OBJECT SMALL-VIAL (LOC GUMBOZ-SHACK) (DESC "four-gloop vial") (SYNONYM VIAL
|
||||
WRITING) (ADJECTIVE FOUR-GLOOP 4-GLOOP FOUR GLOOP SMALL INT.NUM) (FLAGS TAKEBIT
|
||||
READBIT TRYTAKEBIT) (SIZE 3) (OWNER SMALL-VIAL) (GENERIC G-VIAL-F) (ACTION
|
||||
VIAL-F)>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT ORACLE>
|
||||
<ROOM QUARRYS-EDGE (LOC ROOMS) (REGION "Fublio Valley") (DESC "Quarry's Edge")
|
||||
(LDESC "The trail curves north and east around an abandoned quarry.|
|
||||
An ancient pine clings to the rim of the quarry. Its needles are brown with
|
||||
age, and its drooping branches cast a dark shadow across the quarry below.") (
|
||||
NORTH TO CAIRN) (DOWN TO QUARRY) (EAST TO OUTSIDE-HOVEL) (FLAGS RLANDBIT ONBIT
|
||||
BEYONDBIT OUTSIDEBIT) (GLOBAL TIRED-PINE QUARRY) (MAP-LOC <PTABLE
|
||||
FUBLIO-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-8>) (ICON QUARRYS-EDGE-ICON) (THINGS <>
|
||||
SHADOW QUARRY-SHADOW-PS)>
|
||||
<OBJECT TIRED-PINE (LOC LOCAL-GLOBALS) (DESC "ancient pine tree") (SYNONYM TREE
|
||||
PINE) (ADJECTIVE PINE TIRED ANCIENT OLD LARGE) (FLAGS VOWELBIT PLANTBIT) (
|
||||
ACTION TIRED-PINE-F)>
|
||||
<DEFINE-ROUTINE TIRED-PINE-F>
|
||||
<ROOM QUARRY (LOC ROOMS) (DESC "Quarry") (REGION "Fublio Valley") (LDESC
|
||||
"The branches of a weary old pine cast a dark shadow across the floor
|
||||
of this old stone quarry.") (UP TO QUARRYS-EDGE) (OUT TO QUARRYS-EDGE) (FLAGS
|
||||
RLANDBIT ONBIT BEYONDBIT OUTSIDEBIT) (SYNONYM QUARRY) (ADJECTIVE ABANDONED OLD
|
||||
STONE) (GLOBAL TIRED-PINE) (MAP-LOC <PTABLE FUBLIO-MAP-NUM MAP-GEN-Y-7
|
||||
MAP-GEN-X-7>) (ICON QUARRY-ICON) (THINGS <> SHADOW QUARRY-SHADOW-PS) (ACTION
|
||||
QUARRY-F)>
|
||||
<DEFINE-ROUTINE QUARRY-F>
|
||||
<DEFINE-ROUTINE QUARRY-SHADOW-PS>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT RUSTY-KEY (LOC LOCAL-GLOBALS) (DESC "rusty key") (SYNONYM KEY) (
|
||||
ADJECTIVE RUSTY OLD) (FLAGS TAKEBIT KEYBIT) (SIZE 2) (ACTION RUSTY-KEY-F)>
|
||||
<DEFINE-ROUTINE RUSTY-KEY-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT ORACLE>
|
||||
<ROOM OUTSIDE-HOVEL (LOC ROOMS) (REGION "Fublio Valley") (DESC "Outside Hovel")
|
||||
(LDESC "A trail from the west ends here at this tiny structure. Next to the
|
||||
hovel's entrance, to the east, is a faded sign.") (WEST TO QUARRYS-EDGE) (EAST
|
||||
TO KORBOZ-HOVEL) (FLAGS RLANDBIT ONBIT BEYONDBIT OUTSIDEBIT) (GLOBAL SIGN
|
||||
KORBOZ-HOVEL) (MAP-LOC <PTABLE FUBLIO-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-9>)>
|
||||
<ROOM KORBOZ-HOVEL (LOC ROOMS) (REGION "Fublio Valley") (DESC "Korboz's Hovel")
|
||||
(LDESC "This tiny shack looks like the living quarters of a hermit wizard. The
|
||||
only exit is west.") (WEST TO OUTSIDE-HOVEL) (OUT TO OUTSIDE-HOVEL) (FLAGS
|
||||
RLANDBIT BEYONDBIT) (SYNONYM HOVEL) (ADJECTIVE KORBOZ\'S) (MAP-LOC <PTABLE
|
||||
FUBLIO-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-10>)>
|
||||
<ROOM BASE-OF-MOUNTAINS (LOC ROOMS) (REGION "Fublio Valley") (DESC
|
||||
"Base of Mountains") (LDESC
|
||||
"You are near the base of the mighty Flathead Mountains, toward the
|
||||
southernmost end of the range. The mountains run approximately northeast
|
||||
to southwest here. The path turns here, heading east into the valley
|
||||
and north into the foothills.") (NORTH TO FOOTHILLS) (UP TO FOOTHILLS) (EAST TO
|
||||
VIEW-OF-STATUE) (FLAGS RLANDBIT ONBIT BEYONDBIT OUTSIDEBIT) (GLOBAL
|
||||
FLATHEAD-MOUNTAINS) (MAP-LOC <PTABLE FUBLIO-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-6>) (
|
||||
ICON BASE-OF-MTS-ICON)>
|
||||
<ROOM FOOTHILLS (LOC ROOMS) (REGION "Flathead Mountains") (DESC "Foothills") (
|
||||
LDESC "You are in the foothills of the Flathead Mountains, at the entrance to the
|
||||
Zorbel Pass. The pass rises to the northwest, and a path leads downward to
|
||||
the south.") (NW TO ZORBEL-PASS) (UP TO ZORBEL-PASS) (SOUTH TO
|
||||
BASE-OF-MOUNTAINS) (DOWN TO BASE-OF-MOUNTAINS) (FLAGS RLANDBIT ONBIT BEYONDBIT
|
||||
OUTSIDEBIT) (GLOBAL FLATHEAD-MOUNTAINS) (MAP-LOC <PTABLE FUBLIO-MAP-NUM
|
||||
MAP-GEN-Y-4 MAP-GEN-X-6>)>
|
||||
<ROOM ZORBEL-PASS (LOC ROOMS) (REGION "Flathead Mountains") (DESC "Zorbel Pass"
|
||||
) (LDESC "This pass is reputed to be the only crossable point along the entire range.
|
||||
You are now far above the valley floor, which spreads out below you like a
|
||||
map, but you have still not reached the highest point of the pass.") (DOWN TO
|
||||
FOOTHILLS) (SE TO FOOTHILLS) (NW TO AVALANCHE) (UP TO AVALANCHE) (FLAGS
|
||||
RLANDBIT ONBIT BEYONDBIT OUTSIDEBIT) (GLOBAL FLATHEAD-MOUNTAINS) (MAP-LOC <
|
||||
PTABLE FUBLIO-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-5>) (ICON ZORBEL-PASS-ICON)>
|
||||
<ROOM AVALANCHE (LOC ROOMS) (REGION "Flathead Mountains") (DESC "Avalanche") (
|
||||
LDESC "As you near the highest point of the pass, you find it blocked by a recent
|
||||
avalanche. Though you can travel no farther to the northwest, the avalanche
|
||||
has revealed an ancient ravine leading up the side of the mountain.") (DOWN TO
|
||||
ZORBEL-PASS) (UP TO TIMBERLINE) (NW SORRY "The way is blocked by an avalanche."
|
||||
) (SE TO ZORBEL-PASS) (FLAGS RLANDBIT ONBIT BEYONDBIT OUTSIDEBIT) (GLOBAL
|
||||
FLATHEAD-MOUNTAINS) (MAP-LOC <PTABLE FUBLIO-MAP-NUM MAP-GEN-Y-2 MAP-GEN-X-4>) (
|
||||
ICON AVALANCHE-ICON)>
|
||||
<ROOM TIMBERLINE (LOC ROOMS) (REGION "Flathead Mountains") (DESC "Timberline")
|
||||
(LDESC "You are on the slopes of Mount Foobia, the tallest peak in the Flathead
|
||||
Mountains. A narrow ravine leads almost straight downward. The vegetation
|
||||
thins out here, and the air is getting a bit thin as well. Not too far
|
||||
above you, the slope disappears into the thick clouds which eternally
|
||||
shroud the apex of Foobia.") (UP TO AMONGST-THE-CLOUDS) (DOWN TO AVALANCHE) (
|
||||
FLAGS RLANDBIT ONBIT BEYONDBIT OUTSIDEBIT) (GLOBAL FLATHEAD-MOUNTAINS) (MAP-LOC
|
||||
<PTABLE FUBLIO-MAP-NUM MAP-GEN-Y-2 MAP-GEN-X-3>) (ICON TIMBERLINE-ICON)>
|
||||
<ROOM AMONGST-THE-CLOUDS (LOC ROOMS) (REGION "Flathead Mountains") (DESC
|
||||
"Amongst the Clouds") (LDESC
|
||||
"You are surrounded by the thick white clouds which perpetually hide the peak
|
||||
of Mount Foobia. Visibility is severely limited; you can only assume that the
|
||||
slope continues to be climbable above you. Breathing here is a chore.") (UP TO
|
||||
ON-TOP-OF-THE-WORLD) (DOWN TO TIMBERLINE) (FLAGS RLANDBIT ONBIT BEYONDBIT
|
||||
OUTSIDEBIT) (GLOBAL FLATHEAD-MOUNTAINS) (MAP-LOC <PTABLE FUBLIO-MAP-NUM
|
||||
MAP-GEN-Y-2 MAP-GEN-X-2>) (ICON AMONGST-CLOUDS-ICON)>
|
||||
<ROOM ON-TOP-OF-THE-WORLD (LOC ROOMS) (REGION "Flathead Mountains") (DESC
|
||||
"On Top of the World") (LDESC
|
||||
"You have emerged above the cloud layer, at a plateau which forms the apex of
|
||||
Foobia. There is no sign that anyone has ever been here before. Nearby is a
|
||||
huge object, which vanishes into the mists above. It's difficult to be certain,
|
||||
but it looks a bit like a piece of a corner of an edge of a toe of an
|
||||
enormously tremendous brogmoid. A huge colony of fungus clogs the cracks in
|
||||
the toe.") (DOWN TO AMONGST-THE-CLOUDS) (UP SORRY
|
||||
"The brogmoid toe is unclimbable.") (FLAGS RLANDBIT ONBIT BEYONDBIT OUTSIDEBIT)
|
||||
(GLOBAL BROGMOID FLATHEAD-MOUNTAINS) (MAP-LOC <PTABLE FUBLIO-MAP-NUM
|
||||
MAP-GEN-Y-2 MAP-GEN-X-1>) (ICON ON-TOP-OF-WORLD-ICON)>
|
||||
<OBJECT TOE-FUNGUS (LOC ON-TOP-OF-THE-WORLD) (DESC "toe fungus") (SYNONYM
|
||||
FUNGUS FUNGI) (ADJECTIVE TOE) (FLAGS NDESCBIT PLANTBIT) (GENERIC G-FUNGUS-F) (
|
||||
RESEARCH "\"A class of saprophytic parasitical plants which lack chlorophyll and are
|
||||
frequently found in the less hygienic cavities of brogmoids.\"") (ACTION
|
||||
TOE-FUNGUS-F)>
|
||||
<DEFINE-ROUTINE TOE-FUNGUS-F>
|
||||
<DEFINE-ROUTINE GET-LITTLE-FUNGUS>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT LITTLE-FUNGUS (LOC GLOBAL-OBJECTS) (DESC "little fungus") (SYNONYM
|
||||
SEYMOUR SHERMAN IRVING SAMMY MYRON BORIS MELVIN LESTER JULIUS RICARDO OMAR
|
||||
BARNABY FUNGUS COUSIN) (ADJECTIVE SMALL) (FLAGS PLANTBIT) (GENERIC G-FUNGUS-F)
|
||||
(RESEARCH "\"A class of saprophytic parasitical plants which lack chlorophyll and are
|
||||
frequently found in the less hygienic cavities of brogmoids.\"") (ACTION
|
||||
LITTLE-FUNGUS-F)>
|
||||
<DEFINE-ROUTINE LITTLE-FUNGUS-F>
|
||||
<END-SEGMENT>
|
||||
\
|
||||
<BEGIN-SEGMENT ORACLE>
|
||||
<ROOM MINE-ENTRANCE (LOC ROOMS) (REGION "Antharia") (DESC "Mine Entrance") (
|
||||
LDESC "The Antharian granola mines can be entered to the east, and a major
|
||||
road leads west. Signs of the granola riots are everywhere. Speaking of
|
||||
signs, there's one next to the mine entrance.") (WEST TO COAST-ROAD) (EAST TO
|
||||
RUBBLE-ROOM) (IN TO RUBBLE-ROOM) (FLAGS RLANDBIT OUTSIDEBIT ONBIT BEYONDBIT) (
|
||||
GLOBAL SIGN GRANOLA-MINE) (VALUE 10) (MAP-LOC <PTABLE ANTHARIA-MAP-NUM
|
||||
MAP-GEN-Y-4 MAP-GEN-X-8>) (ICON MINE-ENTRANCE-ICON)>
|
||||
<ROOM COAST-ROAD (LOC ROOMS) (REGION "Antharia") (DESC "Coast Road") (LDESC
|
||||
"This is a bend in a wide dirt road running along the ocean's edge. You can
|
||||
go east or southwest.") (EAST TO MINE-ENTRANCE) (SW TO FLATHEAD-STADIUM) (FLAGS
|
||||
RLANDBIT OUTSIDEBIT ONBIT BEYONDBIT) (GLOBAL FLATHEAD-OCEAN) (MAP-LOC <PTABLE
|
||||
ANTHARIA-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-7>) (ICON COAST-ROAD-ICON)>
|
||||
<ROOM FLATHEAD-STADIUM (LOC ROOMS) (REGION "Antharia") (DESC "Flathead Stadium"
|
||||
) (LDESC "This was one of Dimwit's most impressive projects: a stadium which would
|
||||
hold the entire population of the Great Underground Empire. A whole range
|
||||
of sporting matches were held here, from dragonfights to Double Fanucci
|
||||
tournaments. Arched exits lead northeast, southeast, and south.") (NE TO
|
||||
COAST-ROAD) (SE TO EDGE-OF-BOG) (SOUTH TO NORTH-OF-ANTHAR) (FLAGS RLANDBIT
|
||||
OUTSIDEBIT ONBIT BEYONDBIT) (SYNONYM STADIUM) (ADJECTIVE FLATHEAD LARGE) (
|
||||
MAP-LOC <PTABLE ANTHARIA-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-6>) (ICON STADIUM-ICON)>
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT BAT (LOC FLATHEAD-STADIUM) (DESC "wooden club") (FDESC
|
||||
"A long wooden club lies on the turf. There is something engraved on the
|
||||
club's thick end.") (SYNONYM CLUB BAT) (ADJECTIVE WOODEN BASEBALL) (FLAGS
|
||||
TRYTAKEBIT TAKEBIT BURNBIT READBIT MAGICBIT) (SIZE 10) (VALUE 12) (TEXT
|
||||
"A symbol which resembles a winged rodent is engraved on the barrel
|
||||
of the club.") (ACTION BAT-F)>
|
||||
<GLOBAL BAT-SWINGS 0>
|
||||
<DEFINE-ROUTINE BAT-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT ORACLE>
|
||||
<ROOM NORTH-OF-ANTHAR (LOC ROOMS) (REGION "Antharia") (DESC "North of Anthar")
|
||||
(LDESC "You are on a road at the fringe of Anthar. The road continues north and
|
||||
south. In the latter direction, a hastily constructed fence of rock and
|
||||
wire blocks the road. A sign is posted in front of the fence. A smaller
|
||||
path heads eastward.") (SOUTH SORRY
|
||||
"The fence is very tall and covered with sharp nasties.") (NORTH TO
|
||||
FLATHEAD-STADIUM) (EAST TO EDGE-OF-BOG) (FLAGS RLANDBIT ONBIT BEYONDBIT
|
||||
OUTSIDEBIT) (GLOBAL SIGN) (MAP-LOC <PTABLE ANTHARIA-MAP-NUM MAP-GEN-Y-6
|
||||
MAP-GEN-X-6>) (THINGS <> FENCE FENCE-PS)>
|
||||
<DEFINE-ROUTINE FENCE-PS>
|
||||
<ROOM EDGE-OF-BOG (LOC ROOMS) (REGION "Antharia") (DESC "Edge of Bog") (LDESC
|
||||
"A series of flat stones leads east into a mist-covered marsh. Paths lead
|
||||
northwest and west.") (EAST TO CLIFF-BOTTOM) (WEST TO NORTH-OF-ANTHAR) (NW TO
|
||||
FLATHEAD-STADIUM) (FLAGS RLANDBIT ONBIT BEYONDBIT OUTSIDEBIT) (GLOBAL SWAMP) (
|
||||
MAP-LOC <PTABLE ANTHARIA-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-7>)>
|
||||
<ROOM CLIFF-BOTTOM (LOC ROOMS) (REGION "Antharia") (DESC "Cliff Bottom") (LDESC
|
||||
"You are at the bottom of a sheer granite cliff. A foggy swamp lies to
|
||||
the west. Rough handholds have been carved into the face of the cliff.") (WEST
|
||||
TO EDGE-OF-BOG) (UP TO PRECIPICE) (FLAGS RLANDBIT ONBIT BEYONDBIT OUTSIDEBIT) (
|
||||
GLOBAL SWAMP) (MAP-LOC <PTABLE ANTHARIA-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-8>) (ICON
|
||||
CLIFF-BOTTOM-ICON)>
|
||||
<ROOM PRECIPICE (LOC ROOMS) (REGION "Antharia") (DESC "Precipice") (LDESC
|
||||
"This is a tiny shelf of granite atop a sheer cliff. Below, you can see a
|
||||
misty bog and, beyond that, the ocean. Far to the northwest is a large
|
||||
stadium; to the southwest, a town. A path leads east into a hollow.") (DOWN TO
|
||||
CLIFF-BOTTOM) (EAST TO AERIE) (FLAGS RLANDBIT ONBIT BEYONDBIT OUTSIDEBIT) (
|
||||
GLOBAL SWAMP FLATHEAD-OCEAN FLATHEAD-STADIUM GLOBAL-BLDG) (MAP-LOC <PTABLE
|
||||
ANTHARIA-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-8>) (ICON PRECIPICE-ICON)>
|
||||
<ROOM AERIE (LOC ROOMS) (REGION "Antharia") (DESC "Aerie") (LDESC
|
||||
"You are in a natural bowl-shaped depression, hollowed out by eons of howling
|
||||
wind. At the bottom is a huge bird nest, built of myriad bits of scavenged
|
||||
twigs and debris. Beyond the nest, to the southeast, is a dark opening. A
|
||||
trail leads west.") (WEST TO PRECIPICE) (SE TO ICKY-CAVE) (FLAGS RLANDBIT ONBIT
|
||||
BEYONDBIT OUTSIDEBIT) (SYNONYM AERIE) (MAP-LOC <PTABLE ANTHARIA-MAP-NUM
|
||||
MAP-GEN-Y-5 MAP-GEN-X-9>) (ICON AERIE-ICON) (ACTION AERIE-F)>
|
||||
<DEFINE-ROUTINE AERIE-F>
|
||||
<DEFINE-ROUTINE FIND-LANTERN>
|
||||
<OBJECT NEST (LOC AERIE) (DESC "nest") (SYNONYM NEST) (ADJECTIVE LARGE BIRD
|
||||
BIRD\'S) (FLAGS NDESCBIT VEHBIT CONTBIT OPENBIT SEARCHBIT) (ACTION NEST-F)>
|
||||
<DEFINE-ROUTINE NEST-F>
|
||||
<OBJECT SILK-TIE (LOC LOCAL-GLOBALS) (DESC "silk tie") (SYNONYM TIE) (ADJECTIVE
|
||||
FADED GRAY) (FLAGS TAKEBIT MAGICBIT WEARBIT READBIT) (TEXT
|
||||
"Although terribly old and faded, you can tell that the tie was once gray with
|
||||
little green zorkmid symbols all over it.") (VALUE 12)>
|
||||
<ROOM ICKY-CAVE (LOC ROOMS) (REGION "Antharia") (DESC "Icky Cave") (NW TO AERIE
|
||||
) (OUT TO AERIE) (FLAGS RLANDBIT BEYONDBIT UNDERGROUNDBIT) (SYNONYM CAVE CAVERN
|
||||
) (ADJECTIVE ICKY SMALL) (GLOBAL SLIME) (MAP-LOC <PTABLE ANTHARIA-MAP-NUM
|
||||
MAP-GEN-Y-6 MAP-GEN-X-10>) (ICON ICKY-CAVE-ICON) (ACTION ICKY-CAVE-F)>
|
||||
<DEFINE-ROUTINE ICKY-CAVE-F>
|
||||
<OBJECT SICKLY-WITCH (DESC "sickly witch") (LDESC
|
||||
"In the dimmest corner of the cave huddle a pair of witches. One looks
|
||||
healthier but less friendly than the other.") (SYNONYM WITCH) (ADJECTIVE SICKLY
|
||||
FRIENDLY UNHEALTHY) (FLAGS ACTORBIT FEMALEBIT ANIMATEDBIT) (ACTION WITCH-F)>
|
||||
<OBJECT PRICKLY-WITCH (DESC "prickly witch") (SYNONYM WITCH) (ADJECTIVE PRICKLY
|
||||
UNFRIENDLY HEALTHY) (FLAGS ACTORBIT FEMALEBIT ANIMATEDBIT NDESCBIT) (ACTION
|
||||
WITCH-F)>
|
||||
<DEFINE-ROUTINE WITCH-F>
|
||||
<CONSTANT FINISH-ENCHANTMENT
|
||||
" Camel sweat! Rotgrub heart! The enchantment begone!\" A palpable wave of
|
||||
magic sweeps over you and out of the cave.|">
|
||||
<GLOBAL VIAL-GIVEN <>>
|
||||
<GLOBAL EARWAX-GIVEN <>>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT LARGE-VIAL (LOC LOCAL-GLOBALS) (DESC "nine-gloop vial") (SYNONYM VIAL
|
||||
WRITING) (ADJECTIVE NINE-GLOOP 9-GLOOP NINE GLOOP LARGE INT.NUM) (FLAGS TAKEBIT
|
||||
READBIT) (GENERIC G-VIAL-F) (OWNER LARGE-VIAL) (ACTION VIAL-F)>
|
||||
<DEFINE-ROUTINE G-VIAL-F>
|
||||
<GLOBAL SMALL-VIAL-GLOOPS 0>
|
||||
<GLOBAL LARGE-VIAL-GLOOPS 0>
|
||||
<GLOBAL SMALL-VIAL-TAINTED <>>
|
||||
<GLOBAL LARGE-VIAL-TAINTED <>>
|
||||
<GLOBAL SMALL-VIAL-IMPRECISE <>>
|
||||
<GLOBAL LARGE-VIAL-IMPRECISE <>>
|
||||
<CONSTANT INTEGERS <PLTABLE <VOC "ONE"> <VOC "TWO"> <VOC "THREE"> <VOC "FOUR">
|
||||
<VOC "FIVE"> <VOC "SIX"> <VOC "SEVEN"> <VOC "EIGHT"> <VOC "NINE">>>
|
||||
<DEFINE-ROUTINE CONVERT-NUMBER>
|
||||
<DEFINE-ROUTINE VIAL-F>
|
||||
<DEFINE-ROUTINE NO-GRADATIONS>
|
||||
<DEFINE-ROUTINE PRINT-GLOOP>
|
||||
<DEFINE-ROUTINE POUR-VIALS>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT ORACLE>
|
||||
<ROOM RUBBLE-ROOM (LOC ROOMS) (REGION "Antharia") (DESC "Rubble Room") (LDESC
|
||||
"You are just within the mouth of a granola mine. Daylight is visible to the
|
||||
west. Tunnels wind downward to the north, northeast, and east. Chunks of
|
||||
loose rubble, disturbed by the first visitor since the granola riots, fall
|
||||
from the roof of the mine.") (WEST TO MINE-ENTRANCE) (OUT TO MINE-ENTRANCE) (
|
||||
EAST TO HEART-OF-MINE) (NORTH TO HEART-OF-MINE) (NE TO HEART-OF-MINE) (FLAGS
|
||||
RLANDBIT BEYONDBIT UNDERGROUNDBIT) (GLOBAL GRANOLA GRANOLA-MINE) (MAP-LOC <
|
||||
PTABLE ANTHARIA-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-9>) (ACTION RUBBLE-ROOM-F)>
|
||||
<GLOBAL RUBBLE-SCORE 9>
|
||||
<DEFINE-ROUTINE RUBBLE-ROOM-F>
|
||||
<ROOM HEART-OF-MINE (LOC ROOMS) (REGION "Antharia") (DESC "Heart of Mine") (
|
||||
LDESC "You are in a major granola mine. Half-mined granola is everywhere. The remains
|
||||
of a vast transportation system lies in ruins. Tunnels wind south, southwest,
|
||||
and west, and a tiny half-buried tunnel leads downward to the north.") (SOUTH
|
||||
TO RUBBLE-ROOM) (SW TO RUBBLE-ROOM) (WEST TO RUBBLE-ROOM) (NORTH TO CRAWL) (
|
||||
FLAGS RLANDBIT BEYONDBIT UNDERGROUNDBIT) (GLOBAL GRANOLA GRANOLA-MINE) (MAP-LOC
|
||||
<PTABLE ANTHARIA-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-10>)>
|
||||
<ROOM CRAWL (LOC ROOMS) (REGION "Antharia") (DESC "Crawl") (LDESC
|
||||
"You are in a poorly dug tunnel, not even tall enough to stand up in. The
|
||||
tunnel curves slightly, running from south to northwest.") (SOUTH TO
|
||||
HEART-OF-MINE) (NW TO DEAD-END) (FLAGS RLANDBIT BEYONDBIT UNDERGROUNDBIT) (
|
||||
GLOBAL GRANOLA GRANOLA-MINE) (MAP-LOC <PTABLE ANTHARIA-MAP-NUM MAP-GEN-Y-2
|
||||
MAP-GEN-X-10>)>
|
||||
<OBJECT CRAWL-REBUS-BUTTON (LOC CRAWL) (SDESC "blinking key-shaped button") (
|
||||
FDESC "Imbedded in the rocky wall is a blinking button in the shape of a key.")
|
||||
(SYNONYM BUTTON) (ADJECTIVE KEY-SHAPED BLINKING) (ACTION REBUS-BUTTON-F)>
|
||||
<ROOM DEAD-END (LOC ROOMS) (REGION "Antharia") (DESC "Dead End") (LDESC
|
||||
"The low tunnel ends here in a small cul-de-sac. The way back is southeast.") (
|
||||
SE TO CRAWL) (OUT TO CRAWL) (FLAGS RLANDBIT BEYONDBIT UNDERGROUNDBIT) (GLOBAL
|
||||
GRANOLA GRANOLA-MINE) (MAP-LOC <PTABLE ANTHARIA-MAP-NUM MAP-GEN-Y-1 MAP-GEN-X-9
|
||||
>) (ICON DEAD-END-ICON)>
|
||||
<OBJECT QUILL-PEN (LOC DEAD-END) (DESC "quill pen") (SYNONYM PEN QUILL) (
|
||||
ADJECTIVE QUILL) (VALUE 12) (SIZE 3) (FLAGS TAKEBIT MAGICBIT)>
|
||||
<OBJECT GRANOLA-MINE (LOC LOCAL-GLOBALS) (DESC "granola mine") (SYNONYM MINE) (
|
||||
ADJECTIVE GRANOLA) (RESEARCH
|
||||
"\"The granola mines in northern Antharia once supplied seemingly limitless
|
||||
quantities of granola. Since the Granola Riots of 865 GUE, the causes of
|
||||
which are well known, the output of the mines has fallen sharply.\"") (ACTION
|
||||
GRANOLA-MINE-F)>
|
||||
<DEFINE-ROUTINE GRANOLA-MINE-F>
|
||||
<OBJECT GRANOLA (LOC LOCAL-GLOBALS) (DESC "granola") (SYNONYM GRANOLA) (FLAGS
|
||||
NARTICLEBIT) (RESEARCH
|
||||
"\"The granola mines in northern Antharia once supplied seemingly limitless
|
||||
quantities of granola. Since the Granola Riots of 865 GUE, the causes of
|
||||
which are well known, the output of the mines has fallen sharply.\"") (ACTION
|
||||
GRANOLA-F)>
|
||||
<DEFINE-ROUTINE GRANOLA-F>
|
||||
<DEFINE-ROUTINE STEP-IN-IT>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,296 @@
|
|||
"PDEFS file for NEW PARSER
|
||||
Copyright (C) 1988 Infocom, Inc. All rights reserved."
|
||||
|
||||
<ZZSECTION "PDEFS">
|
||||
|
||||
<USE "NEWSTRUC" "PMEM">
|
||||
|
||||
<INCLUDE "BASEDEFS">
|
||||
|
||||
<FILE-FLAGS MDL-ZIL? ZAP-TO-SOURCE-DIRECTORY?>
|
||||
|
||||
"Defaults for ZIL-type DEFSTRUCTs"
|
||||
<SET-DEFSTRUCT-FILE-DEFAULTS ('START-OFFSET 0) ('NTH ZGET) ('PUT ZPUT)
|
||||
'NODECL>
|
||||
|
||||
<BLOCK (<ROOT>)>
|
||||
ZMEMQ
|
||||
ZMEMQB
|
||||
<ENDBLOCK>
|
||||
|
||||
<COND (<OR <CHECK-VERSION? XZIP>
|
||||
<CHECK-VERSION? YZIP>>
|
||||
<DEFMAC ZMEMQB ('OBJ 'TBL 'LEN)
|
||||
<FORM INTBL? .OBJ .TBL .LEN 1>>)
|
||||
(T
|
||||
<ROUTINE ZMEMQB ZM (OBJ:ANY TBL:TABLE LEN:FIX)
|
||||
<REPEAT ((N 0))
|
||||
<COND (<==? <GETB .TBL .N> .OBJ>
|
||||
<RETURN <ZREST .TBL .N> .ZM>)>
|
||||
<COND (<G=? <SET N <+ .N 1>> .LEN>
|
||||
<RETURN <> .ZM>)>>>)>
|
||||
|
||||
<COND (<CHECK-VERSION? ZIP>
|
||||
<ROUTINE ZMEMQ (OBJ:ANY TBL:TABLE LEN:FIX)
|
||||
<REPEAT ((N 0))
|
||||
<COND (<==? <ZGET .TBL .N> .OBJ>
|
||||
<RETURN <ZREST .TBL <* .N 2>>>)>
|
||||
<COND (<G=? <SET N <+ .N 1>> .LEN>
|
||||
<RETURN <>>)>>>)
|
||||
(T
|
||||
<DEFMAC ZMEMQ ('OBJ 'TBL 'LEN)
|
||||
<FORM INTBL? .OBJ .TBL .LEN>>)>
|
||||
|
||||
<SETG20 PDEFS-INTERNAL-OBLIST .OBLIST>
|
||||
|
||||
;<MSETG PARSER-ERROR-ARG-PMEM 1>
|
||||
;<MSETG PARSER-ERROR-ARG-VWORD 2>
|
||||
<MSETG PARSER-ERROR-TMNOUN 247>
|
||||
<MSETG PARSER-ERROR-NOOBJ 248>
|
||||
;<MSETG PARSER-ERROR-NOOBJ2 249>
|
||||
<MSETG PARSER-ERROR-ORPH-NP 250>
|
||||
<MSETG PARSER-ERROR-ORPH-S 251>
|
||||
<MSETG PARSER-ERROR-NOMULT 252>
|
||||
<MSETG PARSER-ERROR-NOUND 253>
|
||||
;<MSETG PARSER-ERROR-QUIET 254>
|
||||
|
||||
<MSETG PARSER-RESULT-DEAD 0>
|
||||
<MSETG PARSER-RESULT-FAILED 1>
|
||||
<MSETG PARSER-RESULT-WON 2>
|
||||
<MSETG PARSER-RESULT-AGAIN 3>
|
||||
|
||||
<MSETG FD-INCLUDE? 1>
|
||||
<MSETG FD-SEARCH? 2>
|
||||
<MSETG FD-NEST? 4>
|
||||
<MSETG FD-NOTOP? 8>
|
||||
|
||||
"Definitions for various PMEMs"
|
||||
<MSETG ADJS-MAX-COUNT 4>
|
||||
<PM-TYPE ADJS ;1 <+ 4 ,ADJS-MAX-COUNT>
|
||||
(LEXPTR FIX)
|
||||
(POSS ANY ;<OR FALSE OBJECT PMEM ;"noun">)
|
||||
(QUANT <OR FALSE FIX>)
|
||||
(COUNT FIX 0)>
|
||||
<CONSTANT ORPHAN-ADJS <ITABLE <+ 1 <+ 4 ,ADJS-MAX-COUNT>> 0>>
|
||||
|
||||
<MSETG NP-LENGTH 9>
|
||||
<PM-TYPE NP ;2 ,NP-LENGTH
|
||||
(ADJS <OR FALSE PMEM>)
|
||||
(NAME <OR FALSE VWORD>)
|
||||
(QUANT <OR FALSE FIX>)
|
||||
(OF <OR FALSE PMEM>)
|
||||
(LOC <OR FALSE PMEM>)
|
||||
(EXCEPT <OR FALSE PMEM>)
|
||||
(LEXBEG <OR FALSE FIX>)
|
||||
(LEXEND <OR FALSE FIX>)>
|
||||
<CONSTANT ORPHAN-NP <ITABLE <+ 1 ,NP-LENGTH> 0>>
|
||||
<CONSTANT ORPHAN-NP2 <ITABLE <+ 1 ,NP-LENGTH> 0>>
|
||||
|
||||
<PM-TYPE NPP ;3 3
|
||||
(NEXT <OR FALSE PMEM ;NPP>)
|
||||
(NOUN <OR FALSE PMEM ;NP>)
|
||||
(NOUN-PHRASE <OR FALSE PMEM>)>
|
||||
<PM-TYPE NOUN-PHRASE ;4 <>
|
||||
(COUNT FIX 0)
|
||||
(FLAGS FIX 0)
|
||||
(OBJ1 <OR FALSE FIX ;OBJECT>)
|
||||
(NP1 <OR FALSE PMEM ;NP>)>
|
||||
|
||||
<MSETG NP-FLAG-MULTI 1>
|
||||
;<DEFMAC NP-MULTI? ('NOUN-PHRASE)
|
||||
<FORM NOT <FORM 0? <FORM ANDB <FORM NOUN-PHRASE-FLAGS .NOUN-PHRASE>
|
||||
,NP-FLAG-MULTI>>>>
|
||||
<MSETG NOUN-PHRASE-ENTLENB 4>
|
||||
<MSETG NOUN-PHRASE-ENTLEN 2>
|
||||
<MSETG NOUN-PHRASE-HEADER-LEN 3>
|
||||
<MSETG NOUN-PHRASE-MIN-LENGTH 4>
|
||||
|
||||
<PM-TYPE PP ;5 2
|
||||
(PREP VWORD NONE)
|
||||
(NOUN PMEM ;<OR NP NPP> NONE)>
|
||||
<PM-TYPE LOCATION ;6 2
|
||||
(PREP VWORD NONE)
|
||||
(OBJECT PMEM NONE)>
|
||||
<PM-TYPE OBJLIST ;7 <>
|
||||
(SIZE FIX)
|
||||
;(COUNT <OR FALSE FIX>)
|
||||
(NEXT <OR FALSE PMEM>)
|
||||
(OWNER ANY) ;"for compatibility with FIND-RES"
|
||||
(OBJ1 ANY)>
|
||||
|
||||
"NP-QUANT slot"
|
||||
<MSETG NP-QUANT-NONE <>>
|
||||
<MSETG NP-QUANT-A 1>
|
||||
;<MSETG NP-QUANT-SOME 2>
|
||||
<MSETG NP-QUANT-ALL 3>
|
||||
<MSETG NP-QUANT-BOTH 4>
|
||||
<MSETG NP-QUANT-NOTHING 5>
|
||||
<MSETG NP-QUANT-PLURAL 6>
|
||||
|
||||
<ADD-WORD ALL QUANT>
|
||||
<ADD-WORD A QUANT>
|
||||
<ADD-WORD AN QUANT>
|
||||
<ADD-WORD ANY QUANT>
|
||||
<ADD-WORD EITHER QUANT>
|
||||
;<ADD-WORD SOME QUANT> "It's a can of some worms."
|
||||
|
||||
<CONSTANT NP-QUANT-TBL-LEN 6>
|
||||
<CONSTANT NP-QUANT-TBL
|
||||
<PTABLE NP-QUANT-ALL <VOC "ALL">
|
||||
NP-QUANT-BOTH <VOC "BOTH">
|
||||
NP-QUANT-A <VOC "ONE">
|
||||
NP-QUANT-A <VOC "EITHER">
|
||||
NP-QUANT-A <VOC "ANY">
|
||||
;NP-QUANT-SOME ;<VOC "SOME">
|
||||
;NP-QUANT-NOTHING ;<VOC "NONE">>>
|
||||
|
||||
<GDECL (VALID-VERB-CLASSES VALID-QUESTION-CLASSES) <VECTOR [REST FIX]>>
|
||||
|
||||
ADJ-CLASS
|
||||
NOUN-CLASS
|
||||
|
||||
<MSETG FIRST-PERSON 8>
|
||||
<MSETG PLURAL-FLAG 16>
|
||||
<MSETG SECOND-PERSON 32>
|
||||
<MSETG THIRD-PERSON 64>
|
||||
<MSETG PRESENT-TENSE 256>
|
||||
<MSETG PAST-TENSE 512>
|
||||
<MSETG FUTURE-TENSE 1024>
|
||||
<MSETG POSSESSIVE 16384>
|
||||
;"<MSETG PERSON-PNF 4096>
|
||||
<MSETG THING-PNF 8192>
|
||||
<MSETG DONT-ORPHAN 32768>
|
||||
<MSETG DEFAULT-OBJECT 65536>"
|
||||
|
||||
<COND (<OR <CHECK-VERSION? XZIP>
|
||||
<CHECK-VERSION? YZIP>>
|
||||
<DEFMAC ZSUBSTRUC ('OT 'CT 'NT)
|
||||
<FORM COPYT .OT .NT <FORM * .CT 2>>>)
|
||||
(T
|
||||
<ROUTINE ZSUBSTRUC (OT:<PRIMTYPE TABLE> CT:FIX NT:<PRIMTYPE TABLE>)
|
||||
<REPEAT ()
|
||||
<COND (<L? <SET CT <- .CT 1>> 0> <RETURN>)>
|
||||
<ZPUT .NT .CT <ZGET .OT .CT>>>
|
||||
.NT>)>
|
||||
|
||||
<DEFSTRUCT PARSE-RESULT
|
||||
(TABLE
|
||||
('PRINTTYPE TABLE-PRINT))
|
||||
;0 (PARSE-ADV <OR FALSE VWORD>)
|
||||
(PARSE-VERB <OR FALSE VWORD>)
|
||||
(PARSE-VERB-LEXV <OR FALSE TABLE>)
|
||||
;6 (PARSE-SYNTAX <OR FALSE VERB-SYNTAX>)
|
||||
(PARSE-ACTION <OR FALSE FIX>)
|
||||
(PARSE-OBJ1 <OR FALSE PMEM ;NOUN-PHRASE>)
|
||||
;12(PARSE-OBJ2 <OR FALSE PMEM>)
|
||||
(PARSE-PARTICLE1 <OR FALSE VWORD>)
|
||||
(PARSE-PARTICLE2 <OR FALSE VWORD>)
|
||||
;18(PARSE-LOC <OR FALSE PMEM ;PP>)
|
||||
(PARSE-QW <OR FALSE VWORD>)
|
||||
(PARSE-ADJ <OR FALSE VWORD>)
|
||||
;24(PARSE-CHOMPER <OR FALSE PMEM ;NOUN-PHRASE ;OBJECT>)
|
||||
(PARSE-SUBJ <OR FALSE PMEM>)
|
||||
(PARSE-QUERY <OR FALSE VWORD>)
|
||||
;30(PARSE-QUERY-SYNTAX <OR FALSE VERB-SYNTAX>)
|
||||
(PARSE-FLAGS FIX)>
|
||||
|
||||
<MSETG PARSE-NOT 1>
|
||||
<MSETG PARSE-QUESTION 2>
|
||||
|
||||
<CONSTANT ORPHAN-S <ITABLE 7 0>>
|
||||
<CONSTANT O-VERB 0 ;<OR FALSE VWORD>>
|
||||
<CONSTANT O-LEXPTR 1 ;<OR FALSE TABLE>>
|
||||
<CONSTANT O-SYNTAX 2 ;<OR FALSE VERB-SYNTAX>>
|
||||
<CONSTANT O-WHICH 3 ;<OR FALSE FIX>>
|
||||
<CONSTANT O-PART 4 ;<OR FALSE VWORD>>
|
||||
<CONSTANT O-OBJECT 5 ;<OR FALSE OBJECT>>
|
||||
<CONSTANT O-SUBJECT 6 ;<OR FALSE OBJECT>>
|
||||
|
||||
"Objects are inserted (starting at find-res-obj1 until the vector is full;
|
||||
then additional objects go into an objlist allocated from pmem;
|
||||
the TOTAL count goes in find-res-count..."
|
||||
|
||||
<DEFSTRUCT FIND-RES
|
||||
(TABLE 'NOTYPE)
|
||||
;(FIND-RES-HEADER FIX 'NONE)
|
||||
(FIND-RES-SIZE FIX 'NONE) ;( 'NTH GETB 'PUT PUTB 'OFFSET 0)
|
||||
(FIND-RES-COUNT FIX 0) ;( 'NTH GETB 'PUT PUTB 'OFFSET 1)
|
||||
(FIND-RES-NEXT <OR PMEM FALSE>)
|
||||
(FIND-RES-OWNER ANY <>) ;"owner found for body part"
|
||||
(FIND-RES-OBJ1 ANY <>)
|
||||
;(FIND-RES-OBJ2 ANY <>)>
|
||||
|
||||
<MSETG FIND-RES-LENGTH 10 ;13>
|
||||
<MSETG FIND-RES-MAXOBJ 6 ;7>
|
||||
|
||||
<CONSTANT SEARCH-RES
|
||||
<MAKE-FIND-RES 'FIND-RES <ITABLE ,FIND-RES-LENGTH 0>
|
||||
'FIND-RES-SIZE ,FIND-RES-MAXOBJ
|
||||
'FIND-RES-COUNT 0>>
|
||||
|
||||
<CONSTANT ORPHAN-SR
|
||||
<MAKE-FIND-RES 'FIND-RES <ITABLE ,FIND-RES-LENGTH 0>
|
||||
'FIND-RES-SIZE ,FIND-RES-MAXOBJ
|
||||
'FIND-RES-COUNT 0>>
|
||||
|
||||
<CONSTANT OWNER-SR-HERE
|
||||
<MAKE-FIND-RES 'FIND-RES <ITABLE ,FIND-RES-LENGTH 0>
|
||||
'FIND-RES-SIZE ,FIND-RES-MAXOBJ
|
||||
'FIND-RES-COUNT 0>>
|
||||
|
||||
<CONSTANT OWNER-SR-THERE
|
||||
<MAKE-FIND-RES 'FIND-RES <ITABLE ,FIND-RES-LENGTH 0>
|
||||
'FIND-RES-SIZE ,FIND-RES-MAXOBJ
|
||||
'FIND-RES-COUNT 0>>
|
||||
|
||||
<DEFSTRUCT FINDER
|
||||
TABLE
|
||||
;0 (FIND-APPLIC <OR TABLE FIX> 0) ;"Thing to call to check object"
|
||||
(FIND-FLAGS FIX) ;"Gwimming, search globals, etc."
|
||||
(FIND-QUANT <OR FIX FALSE>) ;"All, one, etc."
|
||||
;6 (FIND-SYNTAX <OR FALSE VERB-SYNTAX>)
|
||||
(FIND-WHICH FIX) ;"Which argument of the verb we're getting"
|
||||
(FIND-ADJS <OR PMEM FALSE>)
|
||||
;12(FIND-NOUN <OR VWORD FALSE>)
|
||||
(FIND-OF <OR FALSE PMEM>)
|
||||
(FIND-EXCEPTIONS <OR PMEM FALSE>)
|
||||
;18(FIND-RES <OR FIND-RES FALSE>)
|
||||
;"Where to put result, whatever it is."
|
||||
(FIND-NUM FIX)>
|
||||
|
||||
;"<DEFMAC WT? ('PTR 'BIT 'OPT' 'B1)
|
||||
<COND (<AND <TYPE? .BIT GVAL>
|
||||
<=? <MEMBER 'PS?' <SPNAME <CHTYPE .BIT ATOM>>>
|
||||
<SPNAME <CHTYPE .BIT ATOM>>>>
|
||||
<SET BIT <REST <SPNAME <CHTYPE .BIT ATOM>> 3>>)>
|
||||
<SET BIT <GET-CLASSIFICATION .BIT>>
|
||||
<COND (<OR <NOT <ASSIGNED? B1>>
|
||||
<COMPARE-WORD-TYPES .BIT <GET-CLASSIFICATION NOUN>>>
|
||||
<FORM COMPARE-WORD-TYPES <FORM WORD-CLASSIFICATION-NUMBER .PTR>
|
||||
.BIT>)
|
||||
(T
|
||||
<COND (<COMPARE-WORD-TYPES .BIT <GET-CLASSIFICATION ADJ>>
|
||||
<COND (T ;<CHECK-EXTENDED?>
|
||||
<FORM COMPARE-WORD-TYPES .BIT
|
||||
<FORM WORD-CLASSIFICATION-NUMBER .PTR>>)
|
||||
;(T
|
||||
<FORM COND (<FORM COMPARE-WORD-TYPES .BIT
|
||||
<FORM WORD-CLASSIFICATION-NUMBER
|
||||
.PTR>>
|
||||
<FORM WORD-ADJ-ID .PTR>)>)>)
|
||||
(<COMPARE-WORD-TYPES .BIT <GET-CLASSIFICATION VERB>>
|
||||
<FORM COND (<FORM COMPARE-WORD-TYPES .BIT
|
||||
<FORM WORD-CLASSIFICATION-NUMBER .PTR>>
|
||||
<FORM WORD-VERB-STUFF .PTR>)>)
|
||||
(<COMPARE-WORD-TYPES .BIT <GET-CLASSIFICATION DIR>>
|
||||
<FORM COND (<FORM COMPARE-WORD-TYPES .BIT
|
||||
<FORM WORD-CLASSIFICATION-NUMBER .PTR>>
|
||||
<FORM WORD-DIR-ID .PTR>)>)
|
||||
(T
|
||||
<FORM COMPARE-WORD-TYPES .BIT
|
||||
<FORM WORD-CLASSIFICATION-NUMBER .PTR>>)>)>>"
|
||||
|
||||
<DEFMAC OBJECT? ('N)
|
||||
<FORM AND <FORM L? 0 .N> <FORM L=? .N ',LAST-OBJECT>>>
|
||||
|
||||
<END-DEFINITIONS>
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
<BEGIN-SEGMENT STARTUP>
|
||||
<DEFINE-ROUTINE TITLE-SCREEN>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<CONSTANT YX-TBL <TABLE 0 0>>
|
||||
<CONSTANT WIN-TBL <TABLE 0 0 0>>
|
||||
<DEFINE-ROUTINE YCEILING>
|
||||
<DEFINE-ROUTINE XCEILING>
|
||||
<CONSTANT WTBL <LTABLE 0>>
|
||||
<DEFINE-ROUTINE MARGINAL-PIC>
|
||||
<DEFINE-ROUTINE RESET-MARGIN>
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,100 @@
|
|||
|
||||
.SEGMENT "STARTUP"
|
||||
|
||||
|
||||
.FUNCT TITLE-SCREEN
|
||||
CLEAR -1
|
||||
PICINF P-TITLE,YX-TBL /?BOGUS1
|
||||
?BOGUS1: SET 'CURRENT-SPLIT,TITLE-SCREEN-PICTURE
|
||||
GET YX-TBL,0
|
||||
SPLIT STACK
|
||||
SCREEN 1
|
||||
DISPLAY P-TITLE,1,1
|
||||
SCREEN 0
|
||||
RTRUE
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT YCEILING,Y
|
||||
SUB FONT-Y,1
|
||||
ADD Y,STACK
|
||||
DIV STACK,FONT-Y
|
||||
MUL FONT-Y,STACK
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT XCEILING,X
|
||||
SUB FONT-X,1
|
||||
ADD X,STACK
|
||||
DIV STACK,FONT-X
|
||||
MUL FONT-X,STACK
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT MARGINAL-PIC,P,X,Y,YLEFT,HIGH,YLOC,WWIDTH,?TMP1,?TMP2
|
||||
PICINF P,YX-TBL /?BOGUS1
|
||||
?BOGUS1: GET YX-TBL,0
|
||||
CALL2 YCEILING,STACK >Y
|
||||
GET YX-TBL,1
|
||||
CALL2 XCEILING,STACK >X
|
||||
WINGET S-TEXT,WHIGH >HIGH
|
||||
WINGET S-TEXT,WWIDE >WWIDTH
|
||||
WINGET S-TEXT,WYPOS
|
||||
SUB STACK,1 >YLEFT
|
||||
SUB HIGH,YLEFT >YLEFT
|
||||
GRTR? Y,YLEFT \?CND2
|
||||
CURGET YX-TBL
|
||||
GET YX-TBL,0 >YLOC
|
||||
SUB Y,YLEFT
|
||||
CALL2 YCEILING,STACK >YLEFT
|
||||
SCROLL S-TEXT,YLEFT
|
||||
SUB YLOC,YLEFT >YLOC
|
||||
GRTR? YLOC,0 /?CND4
|
||||
SET 'YLOC,1
|
||||
?CND4: GET YX-TBL,1
|
||||
CURSET YLOC,STACK
|
||||
?CND2: WINGET S-TEXT,WYPOS
|
||||
ADD Y,STACK >YLEFT
|
||||
PICINF ICON-OFFSET,PICINF-TBL /?BOGUS6
|
||||
?BOGUS6: WINGET S-TEXT,WYPOS >?TMP2
|
||||
GET PICINF-TBL,0
|
||||
ADD ?TMP2,STACK >?TMP1
|
||||
GET PICINF-TBL,1
|
||||
ADD 1,STACK
|
||||
DISPLAY P,?TMP1,STACK
|
||||
ADD X,FONT-X >X
|
||||
LESS? X,WWIDTH /?CCL9
|
||||
CURSET YLEFT,1
|
||||
ZERO? DEMO-VERSION? /?CCL12
|
||||
ICALL2 INPUT-DEMO,1
|
||||
JUMP ?CND10
|
||||
?CCL12: INPUT 1
|
||||
?CND10: ICALL1 MOUSE-INPUT?
|
||||
SUB HIGH,YLEFT
|
||||
GRTR? STACK,FONT-Y /FALSE
|
||||
SCROLL S-TEXT,FONT-Y
|
||||
RTRUE
|
||||
?CCL9: MARGIN X,0
|
||||
DIV Y,FONT-Y >Y
|
||||
SUB WWIDTH,X
|
||||
DIV STACK,FONT-X >WWIDTH
|
||||
GRTR? WWIDTH,INBUF-LENGTH \?CCL18
|
||||
PUSH INBUF-LENGTH
|
||||
JUMP ?CND16
|
||||
?CCL18: PUSH WWIDTH
|
||||
?CND16: PUTB P-INBUF,0,STACK
|
||||
WINPUT 0,WCRCNT,Y
|
||||
WINPUT 0,WCRFUNC,RESET-MARGIN
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RESET-MARGIN
|
||||
MARGIN 0,0
|
||||
RTRUE
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.ENDI
|
|
@ -0,0 +1,96 @@
|
|||
"PIC for
|
||||
Library
|
||||
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<BEGIN-SEGMENT STARTUP>
|
||||
|
||||
<ROUTINE TITLE-SCREEN ()
|
||||
<CLEAR -1>
|
||||
<PICINF ,P-TITLE ,YX-TBL>
|
||||
<SETG CURRENT-SPLIT ,TITLE-SCREEN-PICTURE>
|
||||
<SPLIT <GET ,YX-TBL 0>>
|
||||
<SCREEN 1>
|
||||
<DISPLAY ,P-TITLE 1 1>
|
||||
;<CENTER-PIC ,P-TITLE>
|
||||
<SCREEN 0>>
|
||||
|
||||
<END-SEGMENT>
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
<CONSTANT YX-TBL <TABLE 0 0>>
|
||||
|
||||
;<ROUTINE CENTER-PIC (P "AUX" X (CENTER </ ,WIDTH 2>))
|
||||
<CPICINF .P ,YX-TBL>
|
||||
<SET X <GET ,YX-TBL 1>>
|
||||
<CDISPLAY .P 1 <- .CENTER </ .X 2>>>>
|
||||
|
||||
<CONSTANT WIN-TBL <TABLE 0 0 0>>
|
||||
|
||||
<ROUTINE YCEILING (Y)
|
||||
<* ,FONT-Y </ <+ .Y <- ,FONT-Y 1>> ,FONT-Y>>>
|
||||
|
||||
<ROUTINE XCEILING (X)
|
||||
<* ,FONT-X </ <+ .X <- ,FONT-X 1>> ,FONT-X>>>
|
||||
|
||||
<CONSTANT WTBL <LTABLE 0>>
|
||||
|
||||
;<ROUTINE WINPROP (WIN PROP)
|
||||
<WINGET .WIN ,WTBL .PROP>
|
||||
<GET ,WTBL 1>>
|
||||
|
||||
<ROUTINE MARGINAL-PIC (P "AUX" X Y YLEFT HIGH YLOC WWIDTH)
|
||||
<PICINF .P ,YX-TBL>
|
||||
;"Integral character height of the picture"
|
||||
<SET Y <YCEILING <GET ,YX-TBL 0>>>
|
||||
;"Round up to integral character width"
|
||||
<SET X <XCEILING <GET ,YX-TBL 1>>>
|
||||
<SET HIGH <WINGET ,S-TEXT ,WHIGH>>
|
||||
<SET WWIDTH <WINGET ,S-TEXT ,WWIDE>>
|
||||
<SET YLEFT <- <WINGET ,S-TEXT ,WYPOS> 1>>
|
||||
<SET YLEFT <- .HIGH .YLEFT>>
|
||||
<COND (<G? .Y .YLEFT>
|
||||
<CURGET ,YX-TBL>
|
||||
<SET YLOC <GET ,YX-TBL 0>>
|
||||
<SET YLEFT <YCEILING <- .Y .YLEFT>>>
|
||||
<SCROLL ,S-TEXT .YLEFT>
|
||||
<SET YLOC <- .YLOC .YLEFT>>
|
||||
<COND (<L=? .YLOC 0> <SET YLOC 1>)>
|
||||
<CURSET .YLOC <GET ,YX-TBL 1>>)>
|
||||
<SET YLEFT <+ .Y <WINGET ,S-TEXT ,WYPOS>>>
|
||||
<PICINF ,ICON-OFFSET ,PICINF-TBL>
|
||||
<DISPLAY .P <+ <WINGET ,S-TEXT ,WYPOS> <GET ,PICINF-TBL 0>>
|
||||
<+ 1 <GET ,PICINF-TBL 1>>>
|
||||
<SET X <+ .X ,FONT-X>>
|
||||
<COND (<G=? .X .WWIDTH>
|
||||
<CURSET .YLEFT 1>
|
||||
<COND (,DEMO-VERSION?
|
||||
<INPUT-DEMO 1>)
|
||||
(T
|
||||
<INPUT 1>)>
|
||||
<MOUSE-INPUT?>
|
||||
<COND (<L=? <- .HIGH .YLEFT> ,FONT-Y>
|
||||
<SCROLL ,S-TEXT ,FONT-Y>)>)
|
||||
(T
|
||||
;<COND (.RIGHT?
|
||||
<MARGIN 0 .X>)
|
||||
(T
|
||||
<MARGIN .X 0>)>
|
||||
<MARGIN .X 0>
|
||||
<SET Y </ .Y ,FONT-Y>>
|
||||
<SET WWIDTH </ <- .WWIDTH .X> ,FONT-X>>
|
||||
<PUTB ,P-INBUF 0
|
||||
<COND (<G? .WWIDTH ,INBUF-LENGTH>
|
||||
,INBUF-LENGTH)
|
||||
(T
|
||||
.WWIDTH)>>
|
||||
;<PUT ,WIN-TBL 0 2>
|
||||
;<PUT ,WIN-TBL 1 ,RESET-MARGIN>
|
||||
;<PUT ,WIN-TBL 2 .Y ;<+ .Y 1>>
|
||||
<WINPUT 0 ,WCRCNT .Y>
|
||||
<WINPUT 0 ,WCRFUNC ,RESET-MARGIN>)>>
|
||||
|
||||
<ROUTINE RESET-MARGIN ()
|
||||
<MARGIN 0 0>>
|
||||
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,484 @@
|
|||
|
||||
<CONSTANT P-TITLE 1>
|
||||
<CONSTANT PROLOGUE-LETTER 2>
|
||||
<CONSTANT MAIN-LETTER 3>
|
||||
<CONSTANT EPILOGUE-LETTER 4>
|
||||
<CONSTANT CASTLE-BORDER 5>
|
||||
<CONSTANT OUTSIDE-BORDER 6>
|
||||
<CONSTANT UNDERGROUND-BORDER 7>
|
||||
<CONSTANT HINT-BORDER 8>
|
||||
<CONSTANT N-HL 9>
|
||||
<CONSTANT NE-HL 10>
|
||||
<CONSTANT E-HL 11>
|
||||
<CONSTANT SE-HL 12>
|
||||
<CONSTANT S-HL 13>
|
||||
<CONSTANT SW-HL 14>
|
||||
<CONSTANT W-HL 15>
|
||||
<CONSTANT NW-HL 16>
|
||||
<CONSTANT N-UNHL 17>
|
||||
<CONSTANT NE-UNHL 18>
|
||||
<CONSTANT E-UNHL 19>
|
||||
<CONSTANT SE-UNHL 20>
|
||||
<CONSTANT S-UNHL 21>
|
||||
<CONSTANT SW-UNHL 22>
|
||||
<CONSTANT W-UNHL 23>
|
||||
<CONSTANT NW-UNHL 24>
|
||||
<CONSTANT ENC-BORDER 25>
|
||||
<CONSTANT ZILBEETHA-ILL 26>
|
||||
<CONSTANT BROGMOIDISM-ILL 27>
|
||||
<CONSTANT DIMWIT-ILL 28>
|
||||
<CONSTANT MEGABOZ-ILL 29>
|
||||
<CONSTANT J-ILL 30>
|
||||
<CONSTANT FLATHEADIA-ILL 31>
|
||||
<CONSTANT FR-ILL 32>
|
||||
<CONSTANT FOUR-FLIES-ILL 33>
|
||||
<CONSTANT REBUS-0 34>
|
||||
<CONSTANT REBUS-1 35>
|
||||
<CONSTANT REBUS-2 36>
|
||||
<CONSTANT REBUS-3 37>
|
||||
<CONSTANT REBUS-4 38>
|
||||
<CONSTANT REBUS-5 39>
|
||||
<CONSTANT REBUS-6 40>
|
||||
<CONSTANT B-BORDER 41>
|
||||
<CONSTANT B-RESTORE-PEG 42>
|
||||
<CONSTANT B-1-WEIGHT 43>
|
||||
<CONSTANT B-2-WEIGHT 44>
|
||||
<CONSTANT B-3-WEIGHT 45>
|
||||
<CONSTANT B-4-WEIGHT 46>
|
||||
<CONSTANT B-5-WEIGHT 47>
|
||||
<CONSTANT B-6-WEIGHT 48>
|
||||
<CONSTANT PBOZ-BORDER 49>
|
||||
<CONSTANT UNHL-PEG 50>
|
||||
<CONSTANT HL-PEG 51>
|
||||
<CONSTANT BG-A 52>
|
||||
<CONSTANT BG-B 53>
|
||||
<CONSTANT BG-C 54>
|
||||
<CONSTANT BG-D 55>
|
||||
<CONSTANT BG-E 56>
|
||||
<CONSTANT BG-F 57>
|
||||
<CONSTANT BG-G 58>
|
||||
<CONSTANT BG-H 59>
|
||||
<CONSTANT BG-I 60>
|
||||
<CONSTANT BG-J 61>
|
||||
<CONSTANT BG-K 62>
|
||||
<CONSTANT BG-L 63>
|
||||
<CONSTANT BG-M 64>
|
||||
<CONSTANT BG-N 65>
|
||||
<CONSTANT BG-O 66>
|
||||
<CONSTANT BG-P 67>
|
||||
<CONSTANT BG-Q 68>
|
||||
<CONSTANT BG-R 69>
|
||||
<CONSTANT BG-S 70>
|
||||
<CONSTANT BG-T 71>
|
||||
<CONSTANT BG-U 72>
|
||||
<CONSTANT SN-BORDER 73>
|
||||
<CONSTANT PILE-OF-0 74>
|
||||
<CONSTANT PILE-OF-1 75>
|
||||
<CONSTANT PILE-OF-2 76>
|
||||
<CONSTANT PILE-OF-3 77>
|
||||
<CONSTANT PILE-OF-4 78>
|
||||
<CONSTANT PILE-OF-5 79>
|
||||
<CONSTANT PILE-OF-6 80>
|
||||
<CONSTANT PILE-OF-7 81>
|
||||
<CONSTANT PILE-OF-8 82>
|
||||
<CONSTANT PILE-OF-9 83>
|
||||
<CONSTANT R-FLOWERS-0 84>
|
||||
<CONSTANT R-FLOWERS-1 85>
|
||||
<CONSTANT R-FLOWERS-2 86>
|
||||
<CONSTANT R-FLOWERS-3 87>
|
||||
<CONSTANT R-FLOWERS-4 88>
|
||||
<CONSTANT R-FLOWERS-5 89>
|
||||
<CONSTANT R-FLOWERS-6 90>
|
||||
<CONSTANT R-FLOWERS-7 91>
|
||||
<CONSTANT R-FLOWERS-8 92>
|
||||
<CONSTANT R-FLOWERS-9 93>
|
||||
<CONSTANT L-FLOWERS-0 94>
|
||||
<CONSTANT L-FLOWERS-1 95>
|
||||
<CONSTANT L-FLOWERS-2 96>
|
||||
<CONSTANT L-FLOWERS-3 97>
|
||||
<CONSTANT L-FLOWERS-4 98>
|
||||
<CONSTANT F-BORDER 99>
|
||||
<CONSTANT F-CARD-BACK 100>
|
||||
<CONSTANT F-CARD 101>
|
||||
<CONSTANT F-INKBLOTS 102>
|
||||
<CONSTANT F-PLUNGERS 103>
|
||||
<CONSTANT F-BUGS 104>
|
||||
<CONSTANT F-ZURFS 105>
|
||||
<CONSTANT F-EARS 106>
|
||||
<CONSTANT F-TOPS 107>
|
||||
<CONSTANT F-RAIN 108>
|
||||
<CONSTANT F-HIVES 109>
|
||||
<CONSTANT F-FACES 110>
|
||||
<CONSTANT F-MAZES 111>
|
||||
<CONSTANT F-LAMPS 112>
|
||||
<CONSTANT F-TIME 113>
|
||||
<CONSTANT F-BOOKS 114>
|
||||
<CONSTANT F-SCYTHES 115>
|
||||
<CONSTANT F-FROMPS 116>
|
||||
<CONSTANT F-RV-INKBLOTS 117>
|
||||
<CONSTANT F-RV-PLUNGERS 118>
|
||||
<CONSTANT F-RV-BUGS 119>
|
||||
<CONSTANT F-RV-ZURFS 120>
|
||||
<CONSTANT F-RV-EARS 121>
|
||||
<CONSTANT F-RV-TOPS 122>
|
||||
<CONSTANT F-RV-RAIN 123>
|
||||
<CONSTANT F-RV-HIVES 124>
|
||||
<CONSTANT F-RV-FACES 125>
|
||||
<CONSTANT F-RV-MAZES 126>
|
||||
<CONSTANT F-RV-LAMPS 127>
|
||||
<CONSTANT F-RV-TIME 128>
|
||||
<CONSTANT F-RV-BOOKS 129>
|
||||
<CONSTANT F-RV-SCYTHES 130>
|
||||
<CONSTANT F-RV-FROMPS 131>
|
||||
<CONSTANT F-0 132>
|
||||
<CONSTANT F-1 133>
|
||||
<CONSTANT F-2 134>
|
||||
<CONSTANT F-3 135>
|
||||
<CONSTANT F-4 136>
|
||||
<CONSTANT F-5 137>
|
||||
<CONSTANT F-6 138>
|
||||
<CONSTANT F-7 139>
|
||||
<CONSTANT F-8 140>
|
||||
<CONSTANT F-9 141>
|
||||
<CONSTANT F-INFINITY 142>
|
||||
<CONSTANT F-RV-0 143>
|
||||
<CONSTANT F-RV-1 144>
|
||||
<CONSTANT F-RV-2 145>
|
||||
<CONSTANT F-RV-3 146>
|
||||
<CONSTANT F-RV-4 147>
|
||||
<CONSTANT F-RV-5 148>
|
||||
<CONSTANT F-RV-6 149>
|
||||
<CONSTANT F-RV-7 150>
|
||||
<CONSTANT F-RV-8 151>
|
||||
<CONSTANT F-RV-9 152>
|
||||
<CONSTANT F-RV-INFINITY 153>
|
||||
<CONSTANT F-GRANOLA 154>
|
||||
<CONSTANT F-LOBSTER 155>
|
||||
<CONSTANT F-SNAIL 156>
|
||||
<CONSTANT F-JESTER 157>
|
||||
<CONSTANT F-HOURGLASS 158>
|
||||
<CONSTANT F-LIGHT 159>
|
||||
<CONSTANT F-BEAUTY 160>
|
||||
<CONSTANT F-DEATH 161>
|
||||
<CONSTANT F-GRUE 162>
|
||||
<CONSTANT MAP-BORDER 163>
|
||||
<CONSTANT MAIN-TITLE 164>
|
||||
<CONSTANT SECRET-WING-TITLE 165>
|
||||
<CONSTANT VILLAGE-TITLE 166>
|
||||
<CONSTANT LOWER-LEVEL-TITLE 167>
|
||||
<CONSTANT LAKE-TITLE 168>
|
||||
<CONSTANT DESERT-TITLE 169>
|
||||
<CONSTANT FOOZLE-TITLE 170>
|
||||
<CONSTANT FENSHIRE-TITLE 171>
|
||||
<CONSTANT FJORD-TITLE 172>
|
||||
<CONSTANT GRAY-MTS-TITLE 173>
|
||||
<CONSTANT DELTA-TITLE 174>
|
||||
<CONSTANT FUBLIO-TITLE 175>
|
||||
<CONSTANT ANTHARIA-TITLE 176>
|
||||
<CONSTANT FOOZLE-MAP-ILL 177>
|
||||
<CONSTANT FENSHIRE-MAP-ILL 178>
|
||||
<CONSTANT FJORD-MAP-ILL 179>
|
||||
<CONSTANT GRAY-MTS-MAP-ILL 180>
|
||||
<CONSTANT DELTA-MAP-ILL 181>
|
||||
<CONSTANT ANTHARIA-MAP-ILL 182>
|
||||
<CONSTANT HORIZONTAL-LEGEND 183>
|
||||
<CONSTANT VERTICAL-LEGEND 184>
|
||||
<CONSTANT N-S-CON 185>
|
||||
<CONSTANT E-W-CON 186>
|
||||
<CONSTANT NE-SW-CON 187>
|
||||
<CONSTANT NW-SE-CON 188>
|
||||
<CONSTANT DOWN-NORTH-SYMBOL 189>
|
||||
<CONSTANT DOWN-SOUTH-SYMBOL 190>
|
||||
<CONSTANT DOWN-EAST-SYMBOL 191>
|
||||
<CONSTANT DOWN-WEST-SYMBOL 192>
|
||||
<CONSTANT DOWN-NE-SYMBOL 193>
|
||||
<CONSTANT DOWN-NW-SYMBOL 194>
|
||||
<CONSTANT DOWN-SW-SYMBOL 195>
|
||||
<CONSTANT DOWN-SE-SYMBOL 196>
|
||||
<CONSTANT TELEPORT-ARROW 197>
|
||||
<CONSTANT RV-TELEPORT-ARROW 198>
|
||||
<CONSTANT ARCH-N-CON 199>
|
||||
<CONSTANT ARCH-S-CON 200>
|
||||
<CONSTANT RUBBLE-NW-CON 201>
|
||||
<CONSTANT RUBBLE-SE-CON 202>
|
||||
<CONSTANT ICONLESS-ROOM-BOX 203>
|
||||
<CONSTANT YOU-ARE-HERE-SYMBOL 204>
|
||||
<CONSTANT GONDOLA-ICON 205>
|
||||
<CONSTANT PEG-ROOM-ICON 206>
|
||||
<CONSTANT WEST-WING-ICON 207>
|
||||
<CONSTANT GYM-ICON 208>
|
||||
<CONSTANT TORCH-ROOM-ICON 209>
|
||||
<CONSTANT ROOF-ICON 210>
|
||||
<CONSTANT PARLOR-ICON 211>
|
||||
<CONSTANT FORMAL-GARDEN-ICON 212>
|
||||
<CONSTANT BALCONY-ICON 213>
|
||||
<CONSTANT GALLERY-ICON 214>
|
||||
<CONSTANT THRONE-ROOM-ICON 215>
|
||||
<CONSTANT BANQUET-HALL-ICON 216>
|
||||
<CONSTANT KITCHEN-ICON 217>
|
||||
<CONSTANT WINE-CELLAR-ICON 218>
|
||||
<CONSTANT LIBRARY-ICON 219>
|
||||
<CONSTANT EAST-WING-ICON 220>
|
||||
<CONSTANT CHAPEL-ICON 221>
|
||||
<CONSTANT J-QUARTER-ICON 222>
|
||||
<CONSTANT PYRAMID-ICON 223>
|
||||
<CONSTANT DIMWITS-ROOM-ICON 224>
|
||||
<CONSTANT MAGIC-CLOSET-ICON 225>
|
||||
<CONSTANT PARAPET-ICON 226>
|
||||
<CONSTANT BASTION-ICON 227>
|
||||
<CONSTANT SECRET-PASSAGE-ICON 228>
|
||||
<CONSTANT TEE-ICON 229>
|
||||
<CONSTANT TOP-OF-STAIR-ICON 230>
|
||||
<CONSTANT BOTTOM-OF-STAIR-ICON 231>
|
||||
<CONSTANT ORACLE-ICON 232>
|
||||
<CONSTANT DUNGEON-ICON 233>
|
||||
<CONSTANT CELL-ICON 234>
|
||||
<CONSTANT PERIMETER-WALL-ICON 235>
|
||||
<CONSTANT GARRISON-ICON 236>
|
||||
<CONSTANT OUTER-BAILEY-ICON 237>
|
||||
<CONSTANT DRAWBRIDGE-ICON 238>
|
||||
<CONSTANT BARBICAN-ICON 239>
|
||||
<CONSTANT UPPER-BARBICAN-ICON 240>
|
||||
<CONSTANT CAUSEWAY-ICON 241>
|
||||
<CONSTANT INNER-BAILEY-ICON 242>
|
||||
<CONSTANT URS-OFFICE-ICON 243>
|
||||
<CONSTANT SHADY-PARK-ICON 244>
|
||||
<CONSTANT CHURCH-ICON 245>
|
||||
<CONSTANT COURTROOM-ICON 246>
|
||||
<CONSTANT POST-OFFICE-ICON 247>
|
||||
<CONSTANT FR-HQ-ICON 248>
|
||||
<CONSTANT MAGIC-SHOP-ICON 249>
|
||||
<CONSTANT BACK-ALLEY-ICON 250>
|
||||
<CONSTANT OFFICES-ICON 251>
|
||||
<CONSTANT PENTHOUSE-ICON 252>
|
||||
<CONSTANT ROOTS-ICON 253>
|
||||
<CONSTANT EAR-ICON 254>
|
||||
<CONSTANT MOUTH-OF-CAVE-ICON 255>
|
||||
<CONSTANT LEDGE-IN-PIT-ICON 256>
|
||||
<CONSTANT PASSAGE-STORAGE-ICON 257>
|
||||
<CONSTANT VAULT-ICON 258>
|
||||
<CONSTANT G-U-HIGHWAY-ICON 259>
|
||||
<CONSTANT EXIT-ICON 260>
|
||||
<CONSTANT KENNELS-ICON 261>
|
||||
<CONSTANT ROYAL-ZOO-ICON 262>
|
||||
<CONSTANT LABORATORY-ICON 263>
|
||||
<CONSTANT HOLD-ICON 264>
|
||||
<CONSTANT UNDERWATER-ICON 265>
|
||||
<CONSTANT LAKE-BOTTOM-ICON 266>
|
||||
<CONSTANT EAST-SHORE-ICON 267>
|
||||
<CONSTANT WEST-SHORE-ICON 268>
|
||||
<CONSTANT NORTH-SHORE-ICON 269>
|
||||
<CONSTANT SOUTH-SHORE-ICON 270>
|
||||
<CONSTANT LAKE-FLATHEAD-ICON 271>
|
||||
<CONSTANT RING-OF-DUNES-ICON 272>
|
||||
<CONSTANT G-U-SAVANNAH-ICON 273>
|
||||
<CONSTANT BATS-LAIR-ICON 274>
|
||||
<CONSTANT BASE-OF-MT-ICON 275>
|
||||
<CONSTANT G-U-MOUNTAIN-ICON 276>
|
||||
<CONSTANT STABLE-ICON 277>
|
||||
<CONSTANT SHRINE-ICON 278>
|
||||
<CONSTANT CACTUS-PATCH-ICON 279>
|
||||
<CONSTANT TALL-DUNES-ICON 280>
|
||||
<CONSTANT G-U-OASIS-ICON 281>
|
||||
<CONSTANT WHARF-ICON 282>
|
||||
<CONSTANT FISHING-VILLAGE-ICON 283>
|
||||
<CONSTANT QUILBOZZA-BEACH-ICON 284>
|
||||
<CONSTANT WARNING-ROOM-ICON 285>
|
||||
<CONSTANT FISHY-ODOR-ICON 286>
|
||||
<CONSTANT ROOM-OF-3-DOORS-ICON 287>
|
||||
<CONSTANT FORK-ICON 288>
|
||||
<CONSTANT WISHYFOO-ICON 289>
|
||||
<CONSTANT REST-STOP-ICON 290>
|
||||
<CONSTANT CROSSROADS-ICON 291>
|
||||
<CONSTANT TOLL-PLAZA-ICON 292>
|
||||
<CONSTANT FISSURES-EDGE-ICON 293>
|
||||
<CONSTANT ORB-ROOM-ICON 294>
|
||||
<CONSTANT RUINED-HALL-ICON 295>
|
||||
<CONSTANT SECRET-ROOM-ICON 296>
|
||||
<CONSTANT HOTHOUSE-ICON 297>
|
||||
<CONSTANT MARSH-ICON 298>
|
||||
<CONSTANT CRAG-ICON 299>
|
||||
<CONSTANT UPPER-LEDGE-ICON 300>
|
||||
<CONSTANT LOWER-LEDGE-ICON 301>
|
||||
<CONSTANT IRON-MINE-ICON 302>
|
||||
<CONSTANT NATURAL-ARCH-ICON 303>
|
||||
<CONSTANT ENCHANTED-CAVE-ICON 304>
|
||||
<CONSTANT MIRROR-LAKE-ICON 305>
|
||||
<CONSTANT CHALET-ICON 306>
|
||||
<CONSTANT RIVERS-END-ICON 307>
|
||||
<CONSTANT OCEANS-EDGE-ICON 308>
|
||||
<CONSTANT DELTA-ICON 309>
|
||||
<CONSTANT ON-TOP-OF-WORLD-ICON 310>
|
||||
<CONSTANT AMONGST-CLOUDS-ICON 311>
|
||||
<CONSTANT TIMBERLINE-ICON 312>
|
||||
<CONSTANT AVALANCHE-ICON 313>
|
||||
<CONSTANT ZORBEL-PASS-ICON 314>
|
||||
<CONSTANT BASE-OF-MTS-ICON 315>
|
||||
<CONSTANT FOOT-OF-STATUE-ICON 316>
|
||||
<CONSTANT OUTSIDE-HUT-ICON 317>
|
||||
<CONSTANT ATTIC-ICON 318>
|
||||
<CONSTANT CAIRN-ICON 319>
|
||||
<CONSTANT QUARRYS-EDGE-ICON 320>
|
||||
<CONSTANT QUARRY-ICON 321>
|
||||
<CONSTANT STADIUM-ICON 322>
|
||||
<CONSTANT COAST-ROAD-ICON 323>
|
||||
<CONSTANT MINE-ENTRANCE-ICON 324>
|
||||
<CONSTANT DEAD-END-ICON 325>
|
||||
<CONSTANT CLIFF-BOTTOM-ICON 326>
|
||||
<CONSTANT PRECIPICE-ICON 327>
|
||||
<CONSTANT AERIE-ICON 328>
|
||||
<CONSTANT ICKY-CAVE-ICON 329>
|
||||
<CONSTANT MAP-N-HL 330>
|
||||
<CONSTANT MAP-NE-HL 331>
|
||||
<CONSTANT MAP-E-HL 332>
|
||||
<CONSTANT MAP-SE-HL 333>
|
||||
<CONSTANT MAP-S-HL 334>
|
||||
<CONSTANT MAP-SW-HL 335>
|
||||
<CONSTANT MAP-W-HL 336>
|
||||
<CONSTANT MAP-NW-HL 337>
|
||||
<CONSTANT MAP-N-UNHL 338>
|
||||
<CONSTANT MAP-NE-UNHL 339>
|
||||
<CONSTANT MAP-E-UNHL 340>
|
||||
<CONSTANT MAP-SE-UNHL 341>
|
||||
<CONSTANT MAP-S-UNHL 342>
|
||||
<CONSTANT MAP-SW-UNHL 343>
|
||||
<CONSTANT MAP-W-UNHL 344>
|
||||
<CONSTANT MAP-NW-UNHL 345>
|
||||
<CONSTANT LOBBY-OFFICE-CON 346>
|
||||
<CONSTANT OFFICE-PENTHOUSE-CON 347>
|
||||
<CONSTANT LOW-HALL-CON 348>
|
||||
<CONSTANT WISHYFOO-FORK-CON 349>
|
||||
<CONSTANT GLACIER-MIRROR-CON 350>
|
||||
<CONSTANT DELTA-6-7-CON 351>
|
||||
<CONSTANT DELTA-1-3-CON 352>
|
||||
<CONSTANT DELTA-5-6-CON 353>
|
||||
<CONSTANT DELTA-2-3-CON 354>
|
||||
<CONSTANT DELTA-1-4-CON 355>
|
||||
<CONSTANT DELTA-3-5-CON 356>
|
||||
<CONSTANT PILE-1-PIC-LOC 357>
|
||||
<CONSTANT PILE-2-PIC-LOC 358>
|
||||
<CONSTANT PILE-3-PIC-LOC 359>
|
||||
<CONSTANT PILE-4-PIC-LOC 360>
|
||||
<CONSTANT L-FLOWERS-PIC-LOC 361>
|
||||
<CONSTANT R-FLOWERS-PIC-LOC 362>
|
||||
<CONSTANT B-1-L-PIC-LOC 363>
|
||||
<CONSTANT B-2-C-PIC-LOC 364>
|
||||
<CONSTANT B-3-R-PIC-LOC 365>
|
||||
<CONSTANT B-4-PIC-LOC 366>
|
||||
<CONSTANT B-5-PIC-LOC 367>
|
||||
<CONSTANT B-6-PIC-LOC 368>
|
||||
<CONSTANT F-DISCARD-PIC-LOC 369>
|
||||
<CONSTANT F-1-PIC-LOC 370>
|
||||
<CONSTANT F-2-PIC-LOC 371>
|
||||
<CONSTANT F-3-PIC-LOC 372>
|
||||
<CONSTANT F-4-PIC-LOC 373>
|
||||
<CONSTANT F-RANK-PIC-LOC 374>
|
||||
<CONSTANT F-REV-RANK-PIC-LOC 375>
|
||||
<CONSTANT F-SUIT-PIC-LOC 376>
|
||||
<CONSTANT F-REV-SUIT-PIC-LOC 377>
|
||||
<CONSTANT ENC-PIC-LOC 378>
|
||||
<CONSTANT ENC-TXT-LOC 379>
|
||||
<CONSTANT ENC-TXT-WINDOW-SIZE 380>
|
||||
<CONSTANT COMPASS-PIC-LOC 381>
|
||||
<CONSTANT HERE-LOC 382>
|
||||
<CONSTANT REGION-LOC 383>
|
||||
<CONSTANT F-MENU-LOC 384>
|
||||
<CONSTANT J-SCORE-LOC 385>
|
||||
<CONSTANT YOUR-SCORE-LOC 386>
|
||||
<CONSTANT TEXT-WINDOW-PIC-LOC 387>
|
||||
<CONSTANT PBOZ-H-LOC 388>
|
||||
<CONSTANT PBOZ-I-LOC 389>
|
||||
<CONSTANT PBOZ-J-LOC 390>
|
||||
<CONSTANT PBOZ-K-LOC 391>
|
||||
<CONSTANT PBOZ-L-LOC 392>
|
||||
<CONSTANT PBOZ-M-LOC 393>
|
||||
<CONSTANT PBOZ-N-LOC 394>
|
||||
<CONSTANT PBOZ-O-LOC 395>
|
||||
<CONSTANT PBOZ-P-LOC 396>
|
||||
<CONSTANT PBOZ-Q-LOC 397>
|
||||
<CONSTANT PBOZ-R-LOC 398>
|
||||
<CONSTANT PBOZ-S-LOC 399>
|
||||
<CONSTANT PBOZ-T-LOC 400>
|
||||
<CONSTANT PBOZ-U-LOC 401>
|
||||
<CONSTANT PBOZ-SPLIT 402>
|
||||
<CONSTANT MAP-TOP-LEFT-LOC 403>
|
||||
<CONSTANT MAP-BASIC-ELT-SIZE 404>
|
||||
<CONSTANT MAP-BOX-SIZE 405>
|
||||
<CONSTANT MAP-SPACE-SIZE 406>
|
||||
<CONSTANT GONDOLA-AT-FLATHEADIA-LOC 407>
|
||||
<CONSTANT 5-FUDGE 408>
|
||||
<CONSTANT GONDOLA-AT-FENSHIRE-LOC 409>
|
||||
<CONSTANT ARCH-N-CON-SIZE 410>
|
||||
<CONSTANT RUBBLE-CON-SIZE 411>
|
||||
<CONSTANT 2-3-CON-SIZE 412>
|
||||
<CONSTANT 3-5-CON-SIZE 413>
|
||||
<CONSTANT 5-6-CON-SIZE 414>
|
||||
<CONSTANT 6-7-CON-SIZE 415>
|
||||
<CONSTANT TELEPORT-ARROW-SIZE 416>
|
||||
<CONSTANT WISHYFOO-ICON-LOC 417>
|
||||
<CONSTANT EAR-ICON-LOC 418>
|
||||
<CONSTANT F-DISCARD-LOC 419>
|
||||
<CONSTANT F-CARD-1-LOC 420>
|
||||
<CONSTANT F-CARD-SPACE 421>
|
||||
<CONSTANT F-SPLIT 422>
|
||||
<CONSTANT F-BOTTOM 423>
|
||||
<CONSTANT PBOZ-BOTTOM 424>
|
||||
<CONSTANT SN-BOTTOM 425>
|
||||
<CONSTANT B-BOTTOM 426>
|
||||
<CONSTANT SN-SPLIT 427>
|
||||
<CONSTANT B-SPLIT 428>
|
||||
<CONSTANT URS-ICON-LOC 429>
|
||||
<CONSTANT COURTROOM-ICON-LOC 430>
|
||||
<CONSTANT MAIN-TITLE-LOC 431>
|
||||
<CONSTANT PBOZ-A-LOC 432>
|
||||
<CONSTANT PBOZ-B-LOC 433>
|
||||
<CONSTANT PBOZ-C-LOC 434>
|
||||
<CONSTANT PBOZ-D-LOC 435>
|
||||
<CONSTANT PBOZ-E-LOC 436>
|
||||
<CONSTANT PBOZ-F-LOC 437>
|
||||
<CONSTANT PBOZ-G-LOC 438>
|
||||
<CONSTANT LAKE-TITLE-LOC 439>
|
||||
<CONSTANT TELEPORT-LETTER 440>
|
||||
<CONSTANT SECRET-WING-TITLE-LOC 441>
|
||||
<CONSTANT MAP-ROSE-BG 442>
|
||||
<CONSTANT MAP-ROSE-LOC 443>
|
||||
<CONSTANT MAP-COMPASS-PIC-LOC 444>
|
||||
<CONSTANT BOX-1 445>
|
||||
<CONSTANT BOX-2 446>
|
||||
<CONSTANT BOX-3 447>
|
||||
<CONSTANT BOX-4 448>
|
||||
<CONSTANT BOX-5 449>
|
||||
<CONSTANT BOX-6 450>
|
||||
<CONSTANT BOX-7 451>
|
||||
<CONSTANT BOX-8 452>
|
||||
<CONSTANT BOX-9 453>
|
||||
<CONSTANT DIM-BOX-1 454>
|
||||
<CONSTANT DIM-BOX-2 455>
|
||||
<CONSTANT DIM-BOX-3 456>
|
||||
<CONSTANT DIM-BOX-4 457>
|
||||
<CONSTANT DIM-BOX-5 458>
|
||||
<CONSTANT DIM-BOX-6 459>
|
||||
<CONSTANT DIM-BOX-7 460>
|
||||
<CONSTANT DIM-BOX-8 461>
|
||||
<CONSTANT DIM-BOX-9 462>
|
||||
<CONSTANT EXIT-BOX 463>
|
||||
<CONSTANT SHOW-MOVES-BOX 464>
|
||||
<CONSTANT UNDO-BOX 465>
|
||||
<CONSTANT RESTART-BOX 466>
|
||||
<CONSTANT DIM-SHOW-MOVES-BOX 467>
|
||||
<CONSTANT DIM-UNDO-BOX 468>
|
||||
<CONSTANT DIM-RESTART-BOX 469>
|
||||
<CONSTANT BOX-1-LOC 470>
|
||||
<CONSTANT SN-BOX-SPACE 471>
|
||||
<CONSTANT PBOZ-RESTART-BOX-LOC 472>
|
||||
<CONSTANT PBOZ-SHOW-MOVES-BOX-LOC 473>
|
||||
<CONSTANT PBOZ-EXIT-BOX-LOC 474>
|
||||
<CONSTANT TOWER-UNDO-BOX-LOC 475>
|
||||
<CONSTANT TOWER-EXIT-BOX-LOC 476>
|
||||
<CONSTANT EXPAND-HOT-SPOT 477>
|
||||
<CONSTANT ICON-OFFSET 478>
|
||||
<CONSTANT U-BOX 479>
|
||||
<CONSTANT D-BOX 480>
|
||||
<CONSTANT BOX-COVER 481>
|
||||
<CONSTANT U-BOX-LOC 482>
|
||||
<CONSTANT D-BOX-LOC 483>
|
|
@ -0,0 +1,40 @@
|
|||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT PMEM?,PTR
|
||||
LESS? PTR,PMEM-STORE /FALSE
|
||||
LESS? PTR,PMEM-STORE+180 /TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT PMEM-RESET,FULL?
|
||||
ASSIGNED? 'FULL? /?CND1
|
||||
SET 'FULL?,TRUE-VALUE
|
||||
?CND1: GRTR? PMEM-WORDS-USED,0 \?CND3
|
||||
SET 'PMEM-WORDS-USED,0
|
||||
SUB PMEM-STORE-LENGTH,PMEM-STORE-WORDS
|
||||
MUL 2,STACK
|
||||
COPYT PMEM-STORE,0,STACK
|
||||
?CND3: SET 'PMEM-STORE-WORDS,PMEM-STORE-LENGTH
|
||||
SET 'PMEM-STORE-POINTER,PMEM-STORE
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT DO-PMEM-ALLOC,TYPE,LENGTH,STOR,LEFT,NEW
|
||||
SET 'STOR,PMEM-STORE-POINTER
|
||||
SET 'LEFT,PMEM-STORE-WORDS
|
||||
IGRTR? 'LENGTH,LEFT \?CND1
|
||||
ICALL2 P-NO-MEM-ROUTINE,TYPE
|
||||
?CND1: ADD PMEM-WORDS-USED,LENGTH >PMEM-WORDS-USED
|
||||
SUB LEFT,LENGTH >PMEM-STORE-WORDS
|
||||
MUL LENGTH,2
|
||||
ADD STOR,STACK >PMEM-STORE-POINTER
|
||||
DEC 'LENGTH
|
||||
PUTB STOR,0,LENGTH
|
||||
PUTB STOR,1,TYPE
|
||||
RETURN STOR
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.ENDI
|
|
@ -0,0 +1,270 @@
|
|||
"PMEM file for NEW PARSER
|
||||
Copyright (C) 1988 Infocom, Inc. All rights reserved."
|
||||
|
||||
<ZZPACKAGE "PMEM">
|
||||
|
||||
<ENTRY PMEM PMEM-ALLOC PMEM-TYPE? PMEM-RESET PM-TYPE MAKE-PM-TYPE
|
||||
PMEM-WORDS-USED PDEFS-INTERNAL-OBLIST PMEM-STORE-WARN PMEM-STORE-LENGTH>
|
||||
|
||||
<INCLUDE "BASEDEFS" "PBITDEFS">
|
||||
|
||||
<USE "NEWSTRUC">
|
||||
|
||||
<SET-DEFSTRUCT-FILE-DEFAULTS>
|
||||
|
||||
<FILE-FLAGS MDL-ZIL? ;ZAP-TO-SOURCE-DIRECTORY?>
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
"All storage allocated by the parser looks like this; the rest of each
|
||||
block depends on the type field."
|
||||
|
||||
<DEFSTRUCT PMEM (TABLE 'CONSTRUCTOR ('PRINTTYPE PRINT-PMEM)
|
||||
'NODECL
|
||||
('NTH ZGET)
|
||||
('PUT ZPUT)
|
||||
('START-OFFSET 0))
|
||||
(PM-HEADER <OR FIX FALSE>)
|
||||
(PM-LENGTH <OR FIX FALSE> 'OFFSET 0 'NTH GETB 'PUT PUTB)
|
||||
(PM-TYPE-CODE <OR FIX FALSE> 'OFFSET 1 'NTH GETB 'PUT PUTB)>
|
||||
<MSETG PM-HEADER-LEN 1>
|
||||
|
||||
"Only used in muddle world"
|
||||
<DEFSTRUCT PM-TYPE VECTOR
|
||||
(PMT-NAME ATOM)
|
||||
(PMT-CODE FIX)
|
||||
(PMT-LENGTH <OR FIX FALSE>)
|
||||
(PMT-ARGS <VECTOR [REST PM-ARG]> [])>
|
||||
|
||||
<DEFSTRUCT PM-ARG VECTOR
|
||||
(PMA-NAME ATOM)
|
||||
(PMA-OFFS FIX)
|
||||
(PMA-TYPE ANY)
|
||||
(PMA-DEFAULT ANY)>
|
||||
|
||||
<GDECL (PM-TYPE-COUNT) FIX
|
||||
(PM-LIST) LIST>
|
||||
|
||||
<MSETG PMEM-STORE-LENGTH:FIX 180 ;(160 125 100 300)>
|
||||
<CONSTANT PMEM-STORE:TABLE <ITABLE ,PMEM-STORE-LENGTH>>
|
||||
|
||||
<GLOBAL PMEM-STORE-POINTER PMEM-STORE>
|
||||
<GLOBAL PMEM-STORE-WORDS:NUMBER PMEM-STORE-LENGTH>
|
||||
;<DEFINE-GLOBALS PMEM-GLOBALS
|
||||
(PMEM-STORE-POINTER:<OR TABLE FALSE> <>)
|
||||
(PMEM-STORE-WORDS:FIX ,PMEM-STORE-LENGTH)>
|
||||
|
||||
<IF-P-DEBUGGING-PARSER
|
||||
<GLOBAL PMEM-STORE-WARN:NUMBER 50>>
|
||||
|
||||
<DEFINE PMEM? (PTR)
|
||||
<AND <G=? .PTR ,PMEM-STORE>
|
||||
<L? .PTR <+ ,PMEM-STORE ,PMEM-STORE-LENGTH>>>>
|
||||
|
||||
<DEFINE20 PM-TYPE (NAME:ATOM LENGTH:<OR FIX FALSE>
|
||||
"ARGS" STUFF "AUX" ATM CODE TYPE-OBJ (OCT ,PM-HEADER-LEN)
|
||||
ARGS)
|
||||
<SET ATM <PARSE <STRING "PM-TYPE-" <SPNAME .NAME>> 10
|
||||
,PDEFS-INTERNAL-OBLIST>>
|
||||
<COND (<NOT <GASSIGNED? PM-TYPE-COUNT>>
|
||||
<SETG PM-TYPE-COUNT 0>
|
||||
<SETG PM-LIST (T)>)>
|
||||
<SET CODE <SETG PM-TYPE-COUNT <+ ,PM-TYPE-COUNT 1>>>
|
||||
<SET TYPE-OBJ <MAKE-PM-TYPE 'PMT-NAME .ATM
|
||||
'PMT-CODE .CODE
|
||||
'PMT-LENGTH .LENGTH>>
|
||||
<EVAL <FORM CONSTANT
|
||||
<PARSE <STRING "PMEM-TYPE-" <SPNAME .NAME>> 10
|
||||
,PDEFS-INTERNAL-OBLIST>
|
||||
.CODE>>
|
||||
<PUTREST <REST ,PM-LIST <- <LENGTH ,PM-LIST> 1>> (.TYPE-OBJ)>
|
||||
<SETG .ATM .TYPE-OBJ>
|
||||
<SET ARGS
|
||||
<MAPF ,VECTOR
|
||||
<FUNCTION (ARG:<OR LIST ATOM> "AUX" NATM OFFS (TYPE ANY) (DEFAULT <>)
|
||||
NNATM)
|
||||
<COND (<TYPE? .ARG LIST>
|
||||
<SET NATM <1 .ARG>>
|
||||
<SET ARG <REST .ARG>>)
|
||||
(T
|
||||
<SET NATM .ARG>
|
||||
<SET ARG ()>)>
|
||||
<SET NATM <PARSE <STRING <SPNAME .NAME> "-" <SPNAME .NATM>> 10
|
||||
,PDEFS-INTERNAL-OBLIST>>
|
||||
<SET NNATM <PARSE <STRING <SPNAME .NAME> "-" <SPNAME .NATM> "-OFFSET">
|
||||
10 ,PDEFS-INTERNAL-OBLIST>>
|
||||
<EVAL <FORM DEFMAC .NATM (''OBJ "OPT" ''NEW)
|
||||
<FORM COND
|
||||
(<FORM ASSIGNED? NEW>
|
||||
<FORM FORM ZPUT '.OBJ .OCT '.NEW>)
|
||||
(T
|
||||
<FORM FORM ZGET '.OBJ .OCT>)>>>
|
||||
<SETG .NNATM <SET OFFS .OCT>>
|
||||
<SET OCT <+ .OCT 1>>
|
||||
<COND (<EMPTY? .ARG>)
|
||||
(T
|
||||
<SET TYPE <1 .ARG>>
|
||||
<COND (<NOT <LENGTH? .ARG 1>>
|
||||
<COND (<AND <TYPE? <SET DEFAULT <2 .ARG>> FORM>
|
||||
<EMPTY? .DEFAULT>>
|
||||
<SET DEFAULT <>>)>)>
|
||||
<COND (<AND <NOT <MATCH-KEY .DEFAULT NONE>>
|
||||
<NOT <TYPE? .DEFAULT FORM>>>
|
||||
<COND (<NOT <DECL? .DEFAULT .TYPE>>
|
||||
<COND (<DECL? .DEFAULT <FORM OR FALSE .TYPE>>
|
||||
<SET TYPE <FORM OR FALSE .TYPE>>)
|
||||
(T
|
||||
<ERROR DEFAULT-DOESNT-MATCH-DECL
|
||||
.TYPE .DEFAULT PM-TYPE>)>)>)>)>
|
||||
<MAKE-PM-ARG 'PMA-NAME .NATM 'PMA-OFFS .OFFS
|
||||
'PMA-TYPE .TYPE 'PMA-DEFAULT .DEFAULT>>
|
||||
.STUFF>>
|
||||
<PMT-ARGS .TYPE-OBJ .ARGS>>
|
||||
|
||||
<DEFINE20 GET-PM-TYPE (TYPE:ATOM "AUX" TEMP)
|
||||
<COND (<AND <GASSIGNED? .TYPE>
|
||||
<TYPE? ,.TYPE PM-TYPE>>
|
||||
,.TYPE)
|
||||
(T
|
||||
<SET TEMP <PARSE <STRING "PM-TYPE-" <SPNAME .TYPE>> 10
|
||||
,PDEFS-INTERNAL-OBLIST>>
|
||||
<COND (<AND <GASSIGNED? .TEMP>
|
||||
<TYPE? ,.TEMP PM-TYPE>>
|
||||
,.TEMP)
|
||||
(T
|
||||
<ERROR NOT-A-PMEM-TYPE!-ERRORS .TYPE>)>)>>
|
||||
|
||||
<DEFMAC PMEM-TYPE? ('PMEM 'TYPE "OPT" 'TYPE2 "AUX" (ATM <>) (ATM2 <>))
|
||||
<SET TYPE <GET-PM-TYPE .TYPE>>
|
||||
<COND (<ASSIGNED? TYPE2>
|
||||
<SET TYPE2 <GET-PM-TYPE .TYPE2>>)
|
||||
(T
|
||||
<SET TYPE2 <>>)>
|
||||
<COND (<NOT .TYPE2>
|
||||
<FORM ==? <FORM PM-TYPE-CODE .PMEM> <PMT-CODE .TYPE>>)
|
||||
(T
|
||||
<FORM OR <FORM ==? <FORM PM-TYPE .PMEM> <PMT-CODE .TYPE>>
|
||||
<FORM ==? <FORM PM-TYPE .PMEM> <PMT-CODE .TYPE2>>>)>>
|
||||
|
||||
<DEFINE20 PRINT-PMEM (PMEM:PMEM "OPT" (OUTCHAN:CHANNEL .OUTCHAN)
|
||||
"AUX" (CODE <PM-TYPE-CODE .PMEM>)
|
||||
(OBJ:PM-TYPE <NTH ,PM-LIST <+ .CODE 1>>))
|
||||
<PRINT-MANY .OUTCHAN PRINC "#" <PMT-NAME .OBJ> " [">
|
||||
<REPEAT ((CT <PM-LENGTH .PMEM>) (N 1))
|
||||
<COND (<L? <SET CT <- .CT 1>> 0>
|
||||
<RETURN>)>
|
||||
<PRIN1 <ZGET .PMEM .N>>
|
||||
<PRINC !\ >
|
||||
<SET N <+ .N 1>>>
|
||||
<PRINC !\]>
|
||||
.PMEM>
|
||||
|
||||
<SETG PMEM-WORDS-USED 0>
|
||||
<GDECL (PMEM-WORDS-USED) FIX>
|
||||
|
||||
<DEFINE PMEM-RESET ("OPT" (FULL?:<OR ATOM FALSE> T))
|
||||
<COND (<G? ,PMEM-WORDS-USED 0>
|
||||
<SETG PMEM-WORDS-USED 0>
|
||||
<COPYT ,PMEM-STORE 0
|
||||
<* 2 <- ,PMEM-STORE-LENGTH ,PMEM-STORE-WORDS>>>)>
|
||||
<SETG PMEM-STORE-WORDS ,PMEM-STORE-LENGTH>
|
||||
<SETG PMEM-STORE-POINTER ,PMEM-STORE>
|
||||
T>
|
||||
|
||||
<DEFINE20 MATCH-KEY (FOO BAR)
|
||||
<AND <TYPE? .FOO ATOM>
|
||||
<TYPE? .BAR ATOM>
|
||||
<=? <SPNAME .FOO> <SPNAME .BAR>>>>
|
||||
|
||||
<DEFMAC PMEM-ALLOC PA (TYPNAM:ATOM "ARGS" STUFF "AUX" TEMP NT:PM-TYPE
|
||||
BASE LENARG ATM BL)
|
||||
<SET NT <GET-PM-TYPE .TYPNAM>>
|
||||
<COND (<SET TEMP <MEMQ LENGTH .STUFF>>
|
||||
<SET LENARG <2 .TEMP>>)
|
||||
(<NOT <SET LENARG <PMT-LENGTH .NT>>>
|
||||
<ERROR BAD-PMEM-LENGTH-ARG!-ERRORS .TYPNAM PMEM-ALLOC>)>
|
||||
<SET BASE <FORM BIND ((NEW-OBJECT
|
||||
<FORM DO-PMEM-ALLOC <PMT-CODE .NT> .LENARG>))>>
|
||||
<SET BL <REST .BASE>>
|
||||
<REPEAT ((ARGS <PMT-ARGS .NT>)
|
||||
(INIT <CHTYPE <STACK <IVECTOR <* 2 <+ <LENGTH .ARGS>
|
||||
,PM-HEADER-LEN>> NONE>>
|
||||
TABLE>) THIS-ARG OFFS:FIX FRM)
|
||||
<COND (<EMPTY? .STUFF>
|
||||
<MAPF <>
|
||||
<FUNCTION (ARG:PM-ARG "AUX" (IVAL <ZGET .INIT <PMA-OFFS .ARG>>))
|
||||
<COND (<AND <MATCH-KEY .IVAL NONE>
|
||||
<MATCH-KEY <PMA-DEFAULT .ARG> NONE>>
|
||||
<ERROR NO-VALUE-FOR-MANDATORY-SLOT!-ERRORS .TYPNAM
|
||||
PMEM-ALLOC>)
|
||||
(<MATCH-KEY .IVAL NONE>
|
||||
<COND
|
||||
(<AND <PMA-DEFAULT .ARG>
|
||||
<N==? <PMA-DEFAULT .ARG> '<>>
|
||||
<N==? <PMA-DEFAULT .ARG> 0>>
|
||||
;"PMEM-RESET zeroes memory, so if something is going
|
||||
to be defaulted to 0 or false, don't bother."
|
||||
<SET BL <REST
|
||||
<PUTREST .BL
|
||||
(<FORM <PMA-NAME .ARG>
|
||||
'.NEW-OBJECT
|
||||
<PMA-DEFAULT .ARG>>)>>>)>)>>
|
||||
.ARGS>
|
||||
<RETURN>)>
|
||||
<COND (<OR <NOT <TYPE? <SET ATM <1 .STUFF>> ATOM>>
|
||||
<AND <OR <NOT <GASSIGNED? .ATM>>
|
||||
<NOT <TYPE? ,.ATM FIX MACRO>>>
|
||||
<SET ATM <PARSE <STRING <SPNAME .TYPNAM> "-" <SPNAME .ATM>>
|
||||
10 ,PDEFS-INTERNAL-OBLIST>>
|
||||
<OR <NOT <GASSIGNED? .ATM>>
|
||||
<NOT <TYPE? ,.ATM FIX MACRO>>>>>
|
||||
<COND (<N==? <1 .STUFF> LENGTH>
|
||||
<ERROR BAD-PMEM-ARG!-ERRORS .STUFF PMEM-ALLOC>)>)
|
||||
(T
|
||||
<SET FRM <EXPAND <FORM .ATM .INIT T>>>
|
||||
<ZPUT .INIT <3 .FRM:FORM> T>
|
||||
<COND (<AND <2 .STUFF>
|
||||
<N==? <2 .STUFF> '<>>
|
||||
<N==? <2 .STUFF> 0>>
|
||||
<SET BL <REST <PUTREST .BL
|
||||
(<FORM .ATM '.NEW-OBJECT <2 .STUFF>>)>>>)>)>
|
||||
<SET STUFF <REST .STUFF 2>>>
|
||||
<PUTREST .BL ('.NEW-OBJECT)>
|
||||
.BASE>
|
||||
|
||||
<DEFINE DO-PMEM-ALLOC PA (TYPE:FIX LENGTH:FIX
|
||||
"AUX" (STOR ,PMEM-STORE-POINTER)
|
||||
(LEFT:FIX ,PMEM-STORE-WORDS) NEW)
|
||||
;<COND (<NOT .STOR>
|
||||
<SET STOR ,PMEM-STORE>)>
|
||||
<SET LENGTH <+ .LENGTH 1>> ;"in words"
|
||||
<DEBUG-CHECK <G? .LENGTH .LEFT>
|
||||
<COND (<ERROR OUT-OF-MEMORY!-ERRORS
|
||||
ERRET-T-TO-ALLOCATE-MORE!-ERRORS
|
||||
PMEM-ALLOC>
|
||||
<SETG PMEM-STORE-WORDS 500>
|
||||
<SET LEFT 500>
|
||||
<PMEM-STORE-LENGTH <+ <PMEM-STORE-LENGTH> 500>>
|
||||
<PMEM-STORE <SET STOR <ITABLE <PMEM-STORE-LENGTH> 0>>>)
|
||||
(T
|
||||
<RETURN <> .PA>)>>
|
||||
<COND (<G? .LENGTH .LEFT>
|
||||
<P-NO-MEM-ROUTINE .TYPE>
|
||||
;<RETURN <> .PA>)>
|
||||
<SETG PMEM-WORDS-USED <+ ,PMEM-WORDS-USED .LENGTH>>
|
||||
<SETG PMEM-STORE-WORDS <- .LEFT .LENGTH>>
|
||||
<IF-P-DEBUGGING-PARSER
|
||||
<COND (<G? ,PMEM-STORE-WARN ,PMEM-STORE-WORDS>
|
||||
<SETG PMEM-STORE-WARN ,PMEM-STORE-WORDS>
|
||||
<PRINTI "[Debugging info: ">
|
||||
<PRINTI "PMEM: ">
|
||||
<PRINTN ,PMEM-STORE-WARN ;,PMEM-STORE-WORDS>
|
||||
<PRINTI " left!]|">)>>
|
||||
<SETG PMEM-STORE-POINTER <ZREST .STOR <* .LENGTH 2>>>
|
||||
<PM-LENGTH <CHTYPE-VAL STOR PMEM>
|
||||
<SET LENGTH <- .LENGTH 1>>>
|
||||
<PM-TYPE-CODE .STOR .TYPE>
|
||||
.STOR>
|
||||
|
||||
<END-SEGMENT>
|
||||
<ENDPACKAGE>
|
|
@ -0,0 +1,984 @@
|
|||
"PRARE file for NEW PARSER
|
||||
Copyright (C) 1988 Infocom, Inc. All rights reserved."
|
||||
|
||||
<ZZPACKAGE "PARSER">
|
||||
|
||||
<RENTRY PRINT-LEXV
|
||||
TELL-CTHE
|
||||
TELL-THE>
|
||||
|
||||
<INCLUDE "BASEDEFS" "PBITDEFS" "PDEFS">
|
||||
|
||||
<USE "PMEM" "PSTACK">
|
||||
|
||||
<FILE-FLAGS MDL-ZIL? CLEAN-STACK?>
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
<DEFAULTS-DEFINED
|
||||
CANT-FIND-OBJECT
|
||||
CANT-USE-MULTIPLE
|
||||
DONT-UNDERSTAND
|
||||
PARSER-REPORT
|
||||
PRINT-INTQUOTE
|
||||
PRINT-LEXV
|
||||
REFRESH
|
||||
;SAMPLE-COMMANDS
|
||||
SETUP-ORPHAN
|
||||
SETUP-ORPHAN-NP
|
||||
TOO-MANY-NOUNS
|
||||
WHICH-LIST?
|
||||
WHICH-PRINT
|
||||
YES?>
|
||||
|
||||
<DEFINE TOO-MANY-NEW (WHAT)
|
||||
<TELL "[Warning: there are too many new " .WHAT "s.]" CR>>
|
||||
|
||||
<DEFINE NAKED-OOPS () <TELL "[Please type a word(s) after OOPS.]" CR>>
|
||||
|
||||
<DEFINE CANT-OOPS ()
|
||||
<TELL "[There was no word to replace in that sentence.]" CR>>
|
||||
|
||||
<DEFINE CANT-AGAIN () <TELL "[What do you want to do again?]" CR>>
|
||||
|
||||
<DEFAULT-DEFINITION CANT-USE-MULTIPLE
|
||||
<DEFINE CANT-USE-MULTIPLE (LOSS WD)
|
||||
<SETG CLOCK-WAIT T>
|
||||
;<COND (<==? .LOSS 2> <TELL "in">)>
|
||||
;<TELL "direct ">
|
||||
<TELL "[You can't use more than one object at a time with \"">
|
||||
<PRINT-VOCAB-WORD .WD>
|
||||
<TELL "\"!]" CR>>>
|
||||
|
||||
<DEFINE MAKE-ROOM-FOR-TOKENS (CNT LEXV WHERE "AUX" LEN)
|
||||
<SET LEN <* 2 <GETB .LEXV 0>>>
|
||||
<COND (<L? .LEN <+ .WHERE <* ,P-LEXELEN .CNT>>>
|
||||
<SET CNT </ <- .LEN .WHERE> ,P-LEXELEN>>
|
||||
<TOO-MANY-NEW "word">)>
|
||||
<SET LEN <GETB .LEXV ,P-LEXWORDS>>
|
||||
<PUTB .LEXV ,P-LEXWORDS <+ .CNT .LEN>> ;"update count"
|
||||
<COND (T ;<OR <CHECK-EXTENDED? XZIP>
|
||||
<CHECK-EXTENDED? YZIP>> ;"make space in dest."
|
||||
<COPYT <SET LEXV <ZREST .LEXV <* 2 .WHERE>>>
|
||||
<ZREST .LEXV <* .CNT <* 2 ,P-LEXELEN>>>
|
||||
<* 2 <- <* 2 .LEN> <- .WHERE ,P-LEXSTART>>>>)
|
||||
;(T
|
||||
<PROG ()
|
||||
<SET CNT <* ,P-LEXELEN .CNT>>
|
||||
<SET LEN <* ,P-LEXELEN .LEN>>
|
||||
<REPEAT ()
|
||||
<ZPUT .LEXV <+ .CNT .LEN> <ZGET .LEXV .LEN>>
|
||||
<COND (<L? <SET LEN <- .LEN 1>> .WHERE>
|
||||
<RETURN>)>>>)>>
|
||||
|
||||
<DEFINE REPLACE-ONE-TOKEN (N FROM-LEXV PTR TO-LEXV WHERE "AUX" CNT)
|
||||
<SET CNT <- .N 1>>
|
||||
<COND (<NOT <0? .CNT>>
|
||||
<MAKE-ROOM-FOR-TOKENS .CNT .TO-LEXV .WHERE>)>
|
||||
<SET CNT .N>
|
||||
<REPEAT (X) ;"copy tokens"
|
||||
<COND (<L? <SET CNT <- .CNT 1>> 0>
|
||||
<RETURN>)>
|
||||
<SET PTR <+ .PTR ,P-LEXELEN>>
|
||||
<ZPUT .TO-LEXV .WHERE <ZGET .FROM-LEXV .PTR>>
|
||||
<SET X <+ <* .PTR ,P-LEXELEN> 2>>
|
||||
<COND (<ZERO? <INBUF-ADD <GETB .FROM-LEXV .X>
|
||||
<GETB .FROM-LEXV <+ .X 1>>
|
||||
<+ <* .WHERE ,P-LEXELEN> 3>>>
|
||||
<TOO-MANY-NEW "letter">
|
||||
<RETURN>)>
|
||||
<SET WHERE <+ .WHERE ,P-LEXELEN>>>>
|
||||
|
||||
<DEFAULT-DEFINITION REFRESH
|
||||
;<SYNTAX $REFRESH = V-$REFRESH>
|
||||
<DEFINE V-$REFRESH ()
|
||||
<LOWCORE FLAGS <BAND <LOWCORE FLAGS> <BCOM ,F-REFRESH>>>
|
||||
<CLEAR -1>
|
||||
<INIT-STATUS-LINE>
|
||||
<RTRUE>>>
|
||||
|
||||
<DEFAULT-DEFINITION PRINT-INTQUOTE
|
||||
<DEFINE PRINT-INTQUOTE ("AUX" (NP <GET-NP ,INTQUOTE>))
|
||||
<PRINT-LEXV -1
|
||||
<ZREST <NP-LEXBEG .NP> ,LEXV-ELEMENT-SIZE-BYTES>
|
||||
<+ -1 </ <- <NP-LEXEND .NP> <NP-LEXBEG .NP>>
|
||||
,LEXV-ELEMENT-SIZE-BYTES>>>
|
||||
;<BUFFER-PRINT <ZREST <NP-LEXBEG .NP> <* 2 ,LEXV-ELEMENT-SIZE-BYTES>>
|
||||
<NP-LEXEND .NP>
|
||||
<>
|
||||
T>>>
|
||||
|
||||
<DEFAULT-DEFINITION PRINT-LEXV
|
||||
<DEFINE PRINT-LEXV ("OPT" (QUIET 0)
|
||||
(X <ZREST ,TLEXV <* .QUIET ,LEXV-ELEMENT-SIZE-BYTES>>)
|
||||
(LEN <- ,P-LEN .QUIET>))
|
||||
<COND (<OR <ZERO? .QUIET> <G? 0 ,P-OFLAG>>
|
||||
<TELL "[In other words:" ;,I-ASSUME>)
|
||||
;(T
|
||||
<IFFLAG (P-DEBUGGING-PARSER <PRINTI "[Debugging info: ">)
|
||||
(T T)>)>
|
||||
;<BUFFER-PRINT .X <+ .X <* ,P-WORDLEN ,P-LEN>>>
|
||||
<REPEAT (WD (IN-QUOTE <>)
|
||||
(OWD <COND (<EQUAL? .QUIET -1> ,W?APOSTROPHE) (T 0)>))
|
||||
<SET WD <ZGET .X 0>>
|
||||
<COND (<EQUAL? .WD
|
||||
,W?PERIOD ,W?COMMA ,W?APOSTROPHE ,W?NO.WORD>
|
||||
T)
|
||||
(<EQUAL? .OWD ,W?APOSTROPHE>
|
||||
T)
|
||||
(<AND <EQUAL? .OWD ,W?QUOTE>
|
||||
<F? .IN-QUOTE>>
|
||||
<SET IN-QUOTE T>)
|
||||
(<AND <EQUAL? .WD ,W?QUOTE>
|
||||
<T? .IN-QUOTE>>
|
||||
<SET IN-QUOTE <>>)
|
||||
(T
|
||||
<TELL !\ >)>
|
||||
<COND (<EQUAL? .WD ,W?NO.WORD>
|
||||
T)
|
||||
(<NOT <EQUAL? .WD 0 ,W?INT.NUM ,W?INT.TIM>>
|
||||
<PRINT-VOCAB-WORD .WD>)
|
||||
(T
|
||||
<BUFFER-PRINT .X <+ .X ,P-WORDLEN> <> T>)>
|
||||
<COND (<DLESS? LEN 1>
|
||||
<RETURN>)>
|
||||
<COND (<NOT <EQUAL? .WD ,W?NO.WORD>>
|
||||
<SET OWD .WD>)>
|
||||
<SET X <ZREST .X ,LEXV-ELEMENT-SIZE-BYTES>>>
|
||||
<COND (<OR <ZERO? .QUIET> <G? 0 ,P-OFLAG>>
|
||||
<TELL "]" CR>)
|
||||
;(T
|
||||
<IFFLAG (P-DEBUGGING-PARSER <TELL "]" CR>)
|
||||
(T T)>)>
|
||||
;<SETG P-OFLAG <>>>>
|
||||
|
||||
<DEFINE COPY-INPUT ("OPT" (QUIET 0) "AUX" LEN)
|
||||
<COPYT ,G-LEXV ,P-LEXV ,LEXV-LENGTH-BYTES>
|
||||
<SETG P-LEN <GETB ,P-LEXV ,P-LEXWORDS>>
|
||||
<SETG TLEXV <ZGET ,OOPS-TABLE ,O-START ;,O-AGAIN>>
|
||||
<COPYT ,G-INBUF ,P-INBUF <+ 1 ,INBUF-LENGTH>>
|
||||
<SET LEN <* <* 2 ,P-LEXELEN:FIX>
|
||||
<GETB ,P-LEXV ,P-LEXWORDS>>>
|
||||
<ZPUT ,OOPS-TABLE ,O-END
|
||||
<+ <GETB ,TLEXV <SET LEN <- .LEN 1>>>
|
||||
<GETB ,TLEXV <SET LEN <- .LEN 1>>>>>
|
||||
<COND (<NOT .QUIET>
|
||||
<PRINT-LEXV .QUIET>)>
|
||||
<SETG P-OFLAG <>>>
|
||||
|
||||
<COND (<NOT <OR <CHECK-VERSION? XZIP>
|
||||
<CHECK-VERSION? YZIP>>>
|
||||
<DEFINE COPY-INBUF (SRC DEST "AUX" CNT:FIX)
|
||||
<SET CNT <- <GETB .SRC 0> 1>>
|
||||
<REPEAT ()
|
||||
<PUTB .DEST .CNT <GETB .SRC .CNT>>
|
||||
<COND (<L? <SET CNT <- .CNT 1>> 0>
|
||||
<RETURN>)>>>
|
||||
|
||||
<DEFINE COPY-LEXV (SRC DEST "OPT" (MAX:FIX ,LEXV-LENGTH) "AUX" (CTR:FIX 1))
|
||||
<PUTB .DEST 0 <GETB .SRC 0>>
|
||||
<PUTB .DEST 1 <GETB .SRC 1>>
|
||||
<SET DEST <ZREST .DEST <* ,P-LEXSTART:FIX 2>>>
|
||||
<SET SRC <ZREST .SRC <* ,P-LEXSTART:FIX 2>>>
|
||||
<REPEAT ()
|
||||
<ZPUT .DEST 0 <ZGET .SRC 0>>
|
||||
<PUTB .DEST 2 <GETB .SRC 2>>
|
||||
<PUTB .DEST 3 <GETB .SRC 3>>
|
||||
<COND (<G? <SET CTR <+ .CTR 1>> .MAX>
|
||||
<RETURN>)>
|
||||
<SET DEST <ZREST .DEST <* 2 ,P-LEXELEN:FIX>>>
|
||||
<SET SRC <ZREST .SRC <* 2 ,P-LEXELEN:FIX>>>>>)>
|
||||
|
||||
<END-SEGMENT>
|
||||
|
||||
;"<DEFAULT-DEFINITION SAMPLE-COMMANDS"
|
||||
<IFN-P-BE-VERB
|
||||
|
||||
<BEGIN-SEGMENT HINTS>
|
||||
|
||||
<SYNTAX $NUDGE = V-$NUDGE>
|
||||
<SYNTAX $NUDGE OBJECT = V-$NUDGE>
|
||||
|
||||
<ROUTINE V-$NUDGE ()
|
||||
<SETG CLOCK-WAIT T>
|
||||
<LEXV-WORD ,TLEXV ,W?SHOULD> ;"force sample command"
|
||||
<TELL "[">
|
||||
;<PRINT "Please use commands">
|
||||
<TELL-SAMPLE-COMMANDS>
|
||||
;<TELL ".]" CR>>
|
||||
|
||||
<GLOBAL P-ERRS:NUMBER 0>
|
||||
;<GLOBAL P-THRESH:NUMBER 10>
|
||||
|
||||
<DEFINE COUNT-ERRORS ("OPT" (NUM 1)
|
||||
"AUX" (THRESH <COND (<FSET? ,GREAT-HALL ,TOUCHBIT> 10)
|
||||
(T 2)>))
|
||||
<SETG P-ERRS <+ .NUM ,P-ERRS>>
|
||||
<COND (<G? ,P-ERRS .THRESH>
|
||||
<SETG P-ERRS 0>
|
||||
<TELL
|
||||
"[I'm having trouble understanding you. Maybe it's because you're not
|
||||
used to the rules for commands. ">
|
||||
<COND (<AND <NOT <FSET? ,GREAT-HALL ,TOUCHBIT>>
|
||||
<T? ,PROLOGUE-NOVICE-COUNTER>>
|
||||
<TELL "Here's the command you should type now:|
|
||||
"
|
||||
<ZGET ,NOVICE-MOVES ,PROLOGUE-NOVICE-COUNTER>
|
||||
"|
|
||||
Please try that.]" CR>)
|
||||
(T
|
||||
<TELL-SAMPLE-COMMANDS>)>)>>
|
||||
|
||||
<DEFINE FIND-UEXIT-STR ACT ("AUX" (P 0))
|
||||
<REPEAT ()
|
||||
<COND (<L? <SET P <NEXTP ,HERE .P>> ,LOW-DIRECTION>
|
||||
<RETURN <> .ACT>)
|
||||
(T
|
||||
<COND (<EQUAL? <PTSIZE <GETPT ,HERE .P>> ,UEXIT>
|
||||
<RETURN <DIR-TO-STRING .P> .ACT>)>)>>>
|
||||
|
||||
<CONSTANT TELL-SAMPLE-COMMANDS-NUMBER 3>
|
||||
|
||||
<DEFINE TELL-SAMPLE-COMMANDS ("AUX" VERB SYN (OBJ <>) (NUM 0))
|
||||
<TELL
|
||||
" Commands tell the computer what you want to do in the story.
|
||||
Here are some commands that you can type right now, although
|
||||
they may or may not be useful:|">
|
||||
;"0 objects:"
|
||||
<REPEAT ((CT <ZGET ,SAMPLE-COMMANDS-TABLE-0 0>)
|
||||
(N <COND (<T? ,PRSO> .CT) (T ,TELL-SAMPLE-COMMANDS-NUMBER)>))
|
||||
<SET VERB <ZGET ,SAMPLE-COMMANDS-TABLE-0
|
||||
<COND (<T? ,PRSO> .N) (T <RANDOM .CT>)>>>
|
||||
<COND (<DLESS? N 0>
|
||||
<RETURN>)
|
||||
(<OR <NOT <EQUAL? .VERB ,W?GO>>
|
||||
<SET OBJ <FIND-UEXIT-STR>>>
|
||||
<INC NUM>
|
||||
<TELL " ">
|
||||
<PRINT-VOCAB-WORD .VERB>
|
||||
<COND (.OBJ
|
||||
<TELL !\ .OBJ>)>
|
||||
<CRLF>
|
||||
<COND (<F? ,PRSO>
|
||||
<RETURN>)>)>>
|
||||
;"1 object:"
|
||||
<REPEAT ((CT <ZGET ,SAMPLE-COMMANDS-TABLE-1 0>)
|
||||
(N <COND (<T? ,PRSO> .CT) (T ,TELL-SAMPLE-COMMANDS-NUMBER)>))
|
||||
<SET VERB <ZGET ,SAMPLE-COMMANDS-TABLE-1
|
||||
<COND (<T? ,PRSO> .N) (T <RANDOM .CT>)>>>
|
||||
<COND (<DLESS? N 0>
|
||||
<RETURN>)
|
||||
(<AND <SET SYN <VERB-ONE <WORD-VERB-STUFF .VERB>>>
|
||||
<GET-SYNTAX .SYN 1 0 T>
|
||||
<SET OBJ <DETERMINE-OBJ <> 1 T>>
|
||||
<SET OBJ <NOUN-PHRASE-OBJ1 .OBJ>>>
|
||||
<INC NUM>
|
||||
<TELL " ">
|
||||
<PRINT-VOCAB-WORD .VERB>
|
||||
<TELL !\ D .OBJ CR>
|
||||
<COND (<F? ,PRSO>
|
||||
<RETURN>)>)>>
|
||||
;"2 objects:"
|
||||
<REPEAT ((CT </ <ZGET ,SAMPLE-COMMANDS-TABLE-2 0> 2>)
|
||||
(N <COND (<T? ,PRSO> .CT) (T ,TELL-SAMPLE-COMMANDS-NUMBER)>))
|
||||
<COND (<0? .N>
|
||||
<RETURN>)>
|
||||
<SET VERB <- <* <COND (<T? ,PRSO> .N) (T <RANDOM .CT>)> 2> 1>>
|
||||
<SET SYN <ZGET ,SAMPLE-COMMANDS-TABLE-2 .VERB>>
|
||||
<COND (<0? <WORD-CLASSIFICATION-NUMBER .SYN>> ;"a synonym"
|
||||
<SET SYN <WORD-SEMANTIC-STUFF .SYN>>)>
|
||||
<COND (<DLESS? N 0>
|
||||
<RETURN>)
|
||||
(<AND <SET SYN <VERB-TWO <WORD-VERB-STUFF .SYN>>>
|
||||
<PARSE-PARTICLE2 ,PARSE-RESULT
|
||||
<ZGET ,SAMPLE-COMMANDS-TABLE-2 <+ 1 .VERB>>>
|
||||
<GET-SYNTAX .SYN 2 0 T>
|
||||
<SET OBJ <DETERMINE-OBJ <> 1 T>>
|
||||
<SET OBJ <NOUN-PHRASE-OBJ1 .OBJ>>
|
||||
<SET SYN <DETERMINE-OBJ <> 2 T>>
|
||||
<SET SYN <NOUN-PHRASE-OBJ1 .SYN>>>
|
||||
<INC NUM>
|
||||
<TELL " ">
|
||||
<PRINT-VOCAB-WORD <ZGET ,SAMPLE-COMMANDS-TABLE-2 .VERB>>
|
||||
<TELL !\ D .OBJ !\ >
|
||||
<PRINT-VOCAB-WORD <ZGET ,SAMPLE-COMMANDS-TABLE-2 <+ 1 .VERB>>>
|
||||
<TELL !\ D .SYN CR>
|
||||
<COND (<F? ,PRSO>
|
||||
<RETURN>)>)>>
|
||||
<COND (<OR <T? ,P-WON> <1? <RANDOM 2>>> ;<NOT <IGRTR? NUM 3>>
|
||||
<TELL " say \"">
|
||||
<SET SYN <ZREST ,VOCAB <+ 1 <GETB ,VOCAB 0>>>>
|
||||
<REPEAT (N (M <GETB .SYN 0>))
|
||||
<SET N <ZREST .SYN <+ 3 <* .M ;"size of entry"
|
||||
<- <RANDOM <ZGET <ZREST .SYN 1> 0>
|
||||
;"number of entries">
|
||||
1>>>>>
|
||||
<COND (<AND <G=? .N ,W?A>
|
||||
<T? <WORD-CLASSIFICATION-NUMBER .N>>
|
||||
<NOT <EQUAL? .N ,W?END.OF.INPUT ,W?NO.WORD
|
||||
,W?INT.NUM ,W?INT.TIM>>>
|
||||
<PRINT-VOCAB-WORD .N>
|
||||
<RETURN>)>>
|
||||
<TELL "\"|">)>
|
||||
<COND (<IN? ,JESTER ,HERE> ;<NOT <IGRTR? NUM 3>>
|
||||
<TELL " jester, give me the key|">)>
|
||||
<TELL "Now you can try again.]" CR>>
|
||||
|
||||
<CONSTANT SAMPLE-COMMANDS-TABLE-0 <PLTABLE
|
||||
<VOC "GO"> ;"[a direction]"
|
||||
<VOC "INVENTORY">
|
||||
<VOC "LOOK">
|
||||
<VOC "WAIT">>>
|
||||
|
||||
<CONSTANT SAMPLE-COMMANDS-TABLE-1 <PLTABLE
|
||||
<VOC "TAKE">
|
||||
<VOC "DROP">
|
||||
<VOC "EXAMINE"> ;"[a visible object]"
|
||||
<VOC "READ">
|
||||
<VOC "OPEN"> ;"[a closed container]"
|
||||
<VOC "CLOSE"> ;"[an open container]"
|
||||
<VOC "BOARD"> ;"[a vehicle you're not in]"
|
||||
<VOC "EXIT"> ;"[a vehicle you're in]"
|
||||
<VOC "WEAR">
|
||||
<VOC "REMOVE">>>
|
||||
|
||||
<CONSTANT SAMPLE-COMMANDS-TABLE-2 <PLTABLE
|
||||
<VOC "PUT"> <VOC "IN"> ;"[a held object] INTO [an open container]"
|
||||
<VOC "GIVE"> <VOC "TO">
|
||||
<VOC "ASK"> <VOC "ABOUT"> ;"[a character] ABOUT [one of several topics]
|
||||
[a character], HELLO
|
||||
[a character], GO [a direction]">>
|
||||
|
||||
<END-SEGMENT>
|
||||
>
|
||||
;">"
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
<ADD-WORD NO.WORD ADJ>
|
||||
|
||||
<DEFINE BUFFER-PRINT (BEG END "OPT" (CP <>) (NOSP <>) ;(ALL <>)
|
||||
"AUX" WRD NW (FIRST?? T) (PN <>) TMP)
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? .BEG .END> <RETURN>)>
|
||||
<COND (<OR <T? .NOSP>
|
||||
<EQUAL? .NW ,W?PERIOD ,W?COMMA ,W?APOSTROPHE>>
|
||||
<SET NOSP <>>)
|
||||
(T <TELL !\ >)>
|
||||
<SET WRD <ZGET .BEG 0>>
|
||||
<COND (<EQUAL? .END <ZREST .BEG ,P-WORDLEN>>
|
||||
<SET NW 0>)
|
||||
(T <SET NW <ZGET .BEG ,P-LEXELEN>>)>
|
||||
<COND (<EQUAL? .WRD ,W?NO.WORD>
|
||||
<SET NOSP T>)
|
||||
(<EQUAL? .WRD ,W?MY>
|
||||
<PRINTB ,W?YOUR>)
|
||||
(<EQUAL? .WRD ,W?ME>
|
||||
<PRINTB ,W?YOU>
|
||||
<SET PN T>)
|
||||
(<EQUAL? .WRD ,W?ONE>
|
||||
<TELL "object">)
|
||||
(<AND ;<T? .ALL>
|
||||
<IFFLAG (P-APOSTROPHE-BREAKS-WORDS
|
||||
<NOT <EQUAL? .WRD <> ,W?ALL ,W?PERIOD ,W?APOSTROPHE>>)
|
||||
(T
|
||||
<NOT <EQUAL? .WRD <> ,W?ALL ,W?PERIOD>>)>
|
||||
<OR <AND <0? <SET TMP <WORD-CLASSIFICATION-NUMBER .WRD>>>
|
||||
<F? <WORD-SEMANTIC-STUFF .WRD>>> ;"BUZZ"
|
||||
;<COMPARE-WORD-TYPES .TMP <GET-CLASSIFICATION PREP>>>
|
||||
<NOT <COMPARE-WORD-TYPES .TMP <GET-CLASSIFICATION ADJ>>>
|
||||
<NOT <COMPARE-WORD-TYPES .TMP <GET-CLASSIFICATION NOUN>>>>
|
||||
<SET NOSP T>)
|
||||
(<CAPITAL-NOUN? .WRD>
|
||||
<CAPITALIZE .BEG>
|
||||
<SET PN T>)
|
||||
(T
|
||||
<COND (<AND <T? .FIRST??> <ZERO? .PN> <T? .CP>>
|
||||
<COND (<NOT <EQUAL? .WRD ,W?HER ,W?HIM ,W?YOUR>>
|
||||
<TELL "the ">)>)>
|
||||
<COND ;(<AND <T? ,P-OFLAG>
|
||||
<T? .WRD>>
|
||||
<PRINT-VOCAB-WORD .WRD>)
|
||||
(<AND <EQUAL? .WRD ,W?IT>
|
||||
<VISIBLE? ,P-IT-OBJECT>>
|
||||
<TELL D ,P-IT-OBJECT>)
|
||||
(<AND <EQUAL? .WRD ,W?HER>
|
||||
<ZERO? .PN>>
|
||||
<TELL D ,P-HER-OBJECT>)
|
||||
(<AND <EQUAL? .WRD ,W?HIM>
|
||||
<ZERO? .PN>>
|
||||
<TELL D ,P-HIM-OBJECT>)
|
||||
(<EQUAL? .WRD ,W?INT.NUM ,W?INT.TIM>
|
||||
<TELL N <ZGET .BEG 1>>)
|
||||
(T
|
||||
<WORD-PRINT .BEG>)>
|
||||
<SET FIRST?? <>>)>
|
||||
<SET BEG <ZREST .BEG ,P-WORDLEN>>>>
|
||||
|
||||
<ROUTINE CAPITALIZE (PTR)
|
||||
<COND ;(<T? ,P-OFLAG>
|
||||
<PRINT-VOCAB-WORD <LEXV-WORD .PTR>>)
|
||||
(T
|
||||
<PRINTC <- <GETB ,P-INBUF <LEXV-WORD-OFFSET .PTR>>
|
||||
<- !\a !\A>>>
|
||||
<WORD-PRINT .PTR
|
||||
<- <LEXV-WORD-LENGTH .PTR> 1>
|
||||
<+ <LEXV-WORD-OFFSET .PTR> 1>>)>>
|
||||
|
||||
<DEFINE PRINT-PARSER-FAILURE ("AUX"
|
||||
(CLASS <ZGET ,ERROR-ARGS 1>) (OTHER <ZGET ,ERROR-ARGS 2>)
|
||||
(OTHER2<ZGET ,ERROR-ARGS 3>))
|
||||
;<ZPUT ,ERROR-ARGS 1 0>
|
||||
<COND (<==? .CLASS ,PARSER-ERROR-ORPH-S>
|
||||
<PROG (TMP PR N)
|
||||
<SETG P-OFLAG </ <- <ZGET ,ORPHAN-S ,O-LEXPTR> ,P-LEXV> 2>>
|
||||
<COPYT ,G-LEXV ,O-LEXV ,LEXV-LENGTH-BYTES>
|
||||
<COPYT ,G-INBUF ,O-INBUF <+ 1 ,INBUF-LENGTH>>
|
||||
<ZPUT ,OOPS-TABLE ,O-AGAIN <ZGET ,OOPS-TABLE ,O-START>>
|
||||
<MAKE-ROOM-FOR-TOKENS 1 ,O-LEXV ,P-OFLAG>
|
||||
<ZPUT ,O-LEXV ,P-OFLAG ,W?NO.WORD ;0>
|
||||
<TELL "[Wh">
|
||||
<COND (<ZAPPLY ,DIR-VERB-WORD? <ZGET ,ORPHAN-S ,O-VERB>>
|
||||
<TELL "ere">)
|
||||
(<==? ,PERSONBIT
|
||||
<COND (<1? <ZGET ,ORPHAN-S ,O-WHICH>>
|
||||
<SYNTAX-FIND ;B4
|
||||
<ZGET ,ORPHAN-S ,O-SYNTAX> 1>)
|
||||
(T <SYNTAX-FIND ;B8
|
||||
<ZGET ,ORPHAN-S ,O-SYNTAX> 2>)>>
|
||||
<TELL "om">)
|
||||
(T <TELL "at">)>
|
||||
<TELL !\ >
|
||||
<COND (<AND <SET PR <ZGET ,ORPHAN-S ,O-SUBJECT>>
|
||||
<BAND ,PAST-TENSE
|
||||
<WORD-FLAGS<SET TMP<ZGET ,ORPHAN-S ,O-VERB>>>>>
|
||||
<TELL "did ">
|
||||
<TELL-THE .PR>
|
||||
<TELL !\ >)
|
||||
(T
|
||||
<TELL "do you want ">
|
||||
<COND (<NOT <EQUAL? ,WINNER ,PLAYER>>
|
||||
<TELL D ,WINNER " ">)>
|
||||
<TELL "to ">)>
|
||||
<PRINT-VOCAB-WORD <ROOT-VERB <ZGET ,ORPHAN-S ,O-VERB>>>
|
||||
<SET TMP <ZGET ,ORPHAN-S ,O-PART>>
|
||||
<COND (<NOT <EQUAL? .TMP 0 1>>
|
||||
<TELL !\ >
|
||||
<PRINT-VOCAB-WORD .TMP>)>
|
||||
<COND (<SET TMP <ZGET ,ERROR-ARGS 2>>
|
||||
<TELL !\ >
|
||||
<COND (<SET PR <ZGET ,ORPHAN-S ,O-OBJECT>>
|
||||
<TELL-THE .PR>)
|
||||
(T
|
||||
<NP-PRINT .TMP>)>
|
||||
<COND (<SET TMP <ZGET ,ORPHAN-S ,O-SYNTAX>>
|
||||
<SET TMP <COND (<1? <ZGET ,ORPHAN-S ,O-WHICH>>
|
||||
<SYNTAX-PREP .TMP 1>)
|
||||
(T
|
||||
<SYNTAX-PREP .TMP 2>)>>
|
||||
<COND (<T? .TMP>
|
||||
<SET N <GETB ,O-LEXV ,P-LEXWORDS>>
|
||||
<SET PR <ZGET ,O-LEXV
|
||||
<- ,P-OFLAG ,P-LEXELEN>>>
|
||||
<COND (<0? <WORD-CLASSIFICATION-NUMBER .PR>>
|
||||
;"synonym"
|
||||
<SET PR <WORD-SEMANTIC-STUFF .PR>>)>
|
||||
<COND (<N==? .TMP .PR>
|
||||
<SET N <+ 1 .N>>
|
||||
<PUTB ,O-LEXV ,P-LEXWORDS .N>
|
||||
<ZPUT ,O-LEXV ,P-OFLAG .TMP>
|
||||
<SETG P-OFLAG
|
||||
<+ ,P-OFLAG ,P-LEXELEN>>)>
|
||||
<ZPUT ,O-LEXV ,P-OFLAG ,W?NO.WORD ;0>
|
||||
<INBUF-PRINT .TMP ,O-INBUF
|
||||
,O-LEXV<+ 1 <* ,P-WORDLEN .N>>>
|
||||
<TELL !\ >
|
||||
<PRINT-VOCAB-WORD .TMP>)>)>)>
|
||||
<TELL "?]" CR>
|
||||
<RTRUE>>)
|
||||
(<==? .CLASS ,PARSER-ERROR-ORPH-NP>
|
||||
<REPEAT ((NP .OTHER)
|
||||
(PTR <NP-LEXEND .NP>)
|
||||
(NOUN <NP-NAME .NP>))
|
||||
<COND (<==? .NOUN <ZGET .PTR 0>>
|
||||
<SETG P-OFLAG </ <- .PTR ,P-LEXV> 2>>
|
||||
<COPYT ,G-LEXV ,O-LEXV ,LEXV-LENGTH-BYTES>
|
||||
<COPYT ,G-INBUF ,O-INBUF <+ 1 ,INBUF-LENGTH>>
|
||||
<ZPUT ,OOPS-TABLE ,O-AGAIN <ZGET ,OOPS-TABLE ,O-START>>
|
||||
<WHICH-PRINT .NP>
|
||||
<RTRUE>)
|
||||
(<G? ,P-LEXV <SET PTR <- .PTR ,LEXV-ELEMENT-SIZE-BYTES>>>
|
||||
<RETURN>)>>)>
|
||||
;<SETG P-OFLAG 0>
|
||||
<COND ;(<==? .CLASS ,PARSER-ERROR-QUIET>
|
||||
<RTRUE>)
|
||||
(<==? .CLASS ,PARSER-ERROR-NOMULT>
|
||||
<CANT-USE-MULTIPLE .OTHER .OTHER2>
|
||||
<RTRUE>)
|
||||
(<EQUAL? .CLASS ,PARSER-ERROR-NOOBJ>
|
||||
<CANT-FIND-OBJECT .OTHER .OTHER2>
|
||||
<RTRUE>)
|
||||
(<EQUAL? .CLASS ,PARSER-ERROR-TMNOUN>
|
||||
<TOO-MANY-NOUNS <PARSE-VERB ,PARSE-RESULT>>
|
||||
<RTRUE>)
|
||||
(T ;<OR <==? .CLASS ,PARSER-ERROR-NOUND>
|
||||
<NOT <L? ,ERROR-PRIORITY 255>>>
|
||||
<SET OTHER2 ,OTLEXV> ;"Try to handle PUSH RED --"
|
||||
<COND (<OR <AND <ZERO? ,P-LEN>
|
||||
<NAKED-ADJECTIVE? <ZGET .OTHER2 0>>>
|
||||
<AND <L? ,P-LEXV
|
||||
<SET OTHER2 <ZBACK ,OTLEXV <* 2 ,P-LEXELEN>>>>
|
||||
<L? 0 ,P-LEN>
|
||||
<NAKED-ADJECTIVE? <ZGET .OTHER2 0>>
|
||||
<WORD-TYPE? <ZGET ,OTLEXV 0>
|
||||
,P-EOI-CODE ,P-COMMA-CODE>>>
|
||||
<SET CLASS <+ ,P-LEXELEN </ <- .OTHER2 ,P-LEXV> 2>>>
|
||||
<MAKE-ROOM-FOR-TOKENS 1 ,P-LEXV .CLASS>
|
||||
<MAKE-ROOM-FOR-TOKENS 1 ,G-LEXV .CLASS>
|
||||
<CHANGE-LEXV <ZREST .OTHER2 <* 2 ,P-LEXELEN>> ,W?ONE>
|
||||
<SETG P-LEN <GETB ,P-LEXV ,P-LEXWORDS>
|
||||
;<+ 1 <ZGET ,OOPS-TABLE ,O-LENGTH>>>
|
||||
<SETG TLEXV <ZGET ,OOPS-TABLE ,O-START>>
|
||||
;<PRINT-LEXV>
|
||||
<RETURN <PARSE-IT <>>>)>
|
||||
<COND ;"Try to handle TAKE THIS JOB AND SHOVE IT --"
|
||||
(<AND <G? ,P-LEN 0>
|
||||
<OR <CHANGE-AND-TO-THEN? <SET OTHER2
|
||||
<ZBACK ,OTLEXV<* 2 ,P-LEXELEN>>>>
|
||||
<CHANGE-AND-TO-THEN? <SET OTHER2 ,OTLEXV>>>>
|
||||
<CHANGE-LEXV .OTHER2 ,W?THEN>
|
||||
<SETG P-LEN <ZGET ,OOPS-TABLE ,O-LENGTH>>
|
||||
<SETG TLEXV <ZGET ,OOPS-TABLE ,O-START>>
|
||||
<PRINT-LEXV>
|
||||
<RETURN <PARSE-IT <>>>)
|
||||
(T
|
||||
<DONT-UNDERSTAND>
|
||||
;<RTRUE>)>)>>
|
||||
|
||||
<DEFINE NAKED-ADJECTIVE? (WD)
|
||||
<AND <WORD-TYPE? .WD ,P-ADJ-CODE>
|
||||
<NOT <WORD-TYPE? .WD ,P-DIR-CODE>>
|
||||
;<NOT <EQUAL? .WD ,W?S>> ;"possessive"
|
||||
<NOT <EQUAL? .WD ,W?ONE>>>>
|
||||
|
||||
<DEFINE CHANGE-AND-TO-THEN? (PTR)
|
||||
<AND <EQUAL? <ZGET .PTR 0> ,W?AND ,W?COMMA>
|
||||
<OR <WORD-TYPE? <ZGET <SET PTR <ZREST .PTR <* 2 ,P-LEXELEN>>> 0>
|
||||
,P-VERB-CODE ,P-DIR-CODE>
|
||||
<WORD-TYPE? <ZGET .PTR 0> ,P-EOI-CODE>>>>
|
||||
|
||||
<DEFAULT-DEFINITION DONT-UNDERSTAND
|
||||
<DEFINE DONT-UNDERSTAND ()
|
||||
<SETG CLOCK-WAIT T>
|
||||
<COND (<AND <EQUAL? 1 <GETB ,P-LEXV ,P-LEXWORDS>>
|
||||
<WORD-TYPE? <ZGET ,P-LEXV ,P-LEXSTART> ,P-NOUN-CODE ,P-ADJ-CODE>>
|
||||
<MISSING "verb">
|
||||
<RETURN T>)>
|
||||
<IFN-P-BE-VERB
|
||||
<COND (<COUNT-ERRORS 1>
|
||||
<RETURN T>)>>
|
||||
<TELL
|
||||
"[Sorry, but I don't understand. Please say that another way, or try
|
||||
something else.]" CR>>>>
|
||||
|
||||
<DEFINE MISSING (NV)
|
||||
<TELL "[I think there's a " .NV " missing in that sentence!]" CR>>
|
||||
|
||||
<DEFAULT-DEFINITION CANT-FIND-OBJECT
|
||||
<DEFINE CANT-FIND-OBJECT (NP PART ;SEARCH "AUX" TMP)
|
||||
<COND (<ZERO? <NP-QUANT .NP>> ;<EQUAL? .NP ,ORPHAN-NP>
|
||||
<NP-CANT-SEE .NP>)
|
||||
(T
|
||||
<TELL "[There isn't anything to ">
|
||||
<COND (<SET TMP <PARSE-VERB ,PARSE-RESULT>>
|
||||
<PRINT-VOCAB-WORD .TMP>
|
||||
;<SET TMP <PARSE-PARTICLE1 ,PARSE-RESULT>>
|
||||
<COND (<NOT <EQUAL? .PART ;.TMP 0 1>>
|
||||
<TELL C !\ >
|
||||
<PRINT-VOCAB-WORD .TMP>)>)
|
||||
(T <TELL "do that to">)>
|
||||
<TELL "!]" CR>)>>
|
||||
|
||||
<DEFINE NP-CANT-SEE ("OPT" (NP <GET-NP>) "AUX" TMP)
|
||||
<COND (<SET TMP <NP-NAME .NP>>
|
||||
<TELL "[">
|
||||
<TELL-CTHE ,WINNER>
|
||||
<TELL " can't see ">
|
||||
<COND (<OR <CAPITAL-NOUN? .TMP>
|
||||
<AND <SET TMP <NP-ADJS .NP>>
|
||||
<ADJS-POSS .TMP>>>
|
||||
<NP-PRINT .NP T>)
|
||||
(T
|
||||
<TELL "any ">
|
||||
<NP-PRINT .NP>)>
|
||||
<TELL !\ >
|
||||
<COND (<AND <SET TMP <NP-LOC .NP>>
|
||||
<OR <AND ;<EQUAL? .NP ,ORPHAN-NP>
|
||||
;"removed for HIT MAN ON HEAD WITH ROCK"
|
||||
<PMEM-TYPE? .TMP NOUN-PHRASE>
|
||||
<TELL "in">>
|
||||
<AND <PMEM-TYPE? .TMP LOCATION>
|
||||
<SET TMP <LOCATION-OBJECT .TMP>>
|
||||
<PRINT-VOCAB-WORD <LOCATION-PREP .TMP>>>>>
|
||||
<TELL " ">
|
||||
<TELL-THE <NOUN-PHRASE-OBJ1 .TMP>>)
|
||||
(T
|
||||
<COND ;(<ZAPPLY ,MOBY-FIND? .SEARCH>
|
||||
<TELL "anyw">)
|
||||
(T <TELL "right ">)>
|
||||
<TELL "here">)>
|
||||
<TELL ".]" CR>)
|
||||
(T <MORE-SPECIFIC>)>>>
|
||||
|
||||
<DEFAULT-DEFINITION WHICH-LIST?
|
||||
<DEFINE WHICH-LIST? (NP SR)
|
||||
<COND (<L=? <FIND-RES-COUNT .SR> <FIND-RES-SIZE .SR>>
|
||||
T)>>>
|
||||
|
||||
<DEFAULT-DEFINITION WHICH-PRINT
|
||||
<DEFINE WHICH-PRINT (NP "AUX" (SR ,ORPHAN-SR)
|
||||
(LEN <FIND-RES-COUNT .SR>) (SZ <FIND-RES-SIZE .SR>))
|
||||
<COND (<NOT <==? ,WINNER ,PLAYER>>
|
||||
<TELL "\"I don't understand ">
|
||||
<COND (<WHICH-LIST? .NP .SR>
|
||||
<TELL "if">)
|
||||
(T
|
||||
<TELL "which">
|
||||
<COND (<T? .NP>
|
||||
;<SETG P-ONE-NOUN <NP-NAME .NP>>
|
||||
<TELL !\ >
|
||||
<NP-PRINT .NP>)>)>)
|
||||
(T
|
||||
<TELL "[Which">
|
||||
<COND (<T? .NP>
|
||||
;<SETG P-ONE-NOUN <NP-NAME .NP>>
|
||||
<TELL !\ >
|
||||
<NP-PRINT .NP>)>
|
||||
<TELL " do">)>
|
||||
<TELL " you mean">
|
||||
<COND (<WHICH-LIST? .NP .SR>
|
||||
<COND (<==? ,WINNER ,PLAYER>
|
||||
<TELL !\,>)>
|
||||
<REPEAT ((REM .LEN) (VEC <REST-TO-SLOT .SR FIND-RES-OBJ1>))
|
||||
<TELL !\ >
|
||||
<TELL-THE <ZGET .VEC 0>>
|
||||
<COND (<==? .REM 2>
|
||||
<COND (<NOT <==? .LEN 2>>
|
||||
<TELL !\,>)>
|
||||
<TELL " or">)
|
||||
(<G? .REM 2>
|
||||
<TELL !\,>)>
|
||||
<COND (<L? <SET REM <- .REM 1>> 1>
|
||||
<RETURN>)
|
||||
(<L? <SET SZ <- .SZ 1>> 1>
|
||||
<COND (T ;<ZERO? <SET SR <FIND-RES-NEXT .SR>>>
|
||||
<RETURN>)>
|
||||
;<SET SZ ,FIND-RES-MAXOBJ>
|
||||
;<SET VEC <REST-TO-SLOT .SR OBJLIST-NEXT>>)
|
||||
(T <SET VEC <ZREST .VEC 2>>)>>)>
|
||||
<COND (<NOT <==? ,WINNER ,PLAYER>>
|
||||
<TELL ".\"" CR>)
|
||||
(T
|
||||
<TELL "?]" CR>)>>>
|
||||
|
||||
<DEFINE NP-PRINT (NP:PMEM "OPT" (DO-QUANT <>) "AUX" LEN)
|
||||
<COND (<OBJECT? .NP>
|
||||
<TELL-THE .NP>)
|
||||
(<PMEM-TYPE? .NP NOUN-PHRASE>
|
||||
<COND (<SET LEN <NOUN-PHRASE-COUNT .NP>>
|
||||
<DEC LEN>
|
||||
<REPEAT (OBJ (CT 0))
|
||||
<COND (<SET OBJ <ZGET .NP <+ ,NOUN-PHRASE-HEADER-LEN
|
||||
<* .CT 2>>>>
|
||||
<TELL-THE .OBJ>)>
|
||||
<COND (<G? <SET CT <+ .CT 1>> .LEN>
|
||||
<RETURN>)
|
||||
(T <TELL ", ">)>>)>)
|
||||
(T
|
||||
<COND (<AND <T? .DO-QUANT>
|
||||
<SET LEN <NP-QUANT .NP>>> ;"sounds bad after 'any'"
|
||||
<PRINTB <GET-QUANTITY-WORD .LEN>>
|
||||
<COND (<NP-NAME .NP>
|
||||
<TELL !\ >)>)>
|
||||
<COND (<SET LEN <NP-ADJS .NP>>
|
||||
<ADJS-PRINT .LEN>)>
|
||||
<COND (<AND <SET LEN <NP-LEXEND .NP>>
|
||||
<OR <==? <ZGET .LEN 0> <NP-NAME .NP>>
|
||||
<AND <COMPARE-WORD-TYPES
|
||||
<WORD-CLASSIFICATION-NUMBER <ZGET .LEN 0>>
|
||||
<GET-CLASSIFICATION END-OF-INPUT>>
|
||||
<L? ,P-LEXV
|
||||
<SET LEN <ZBACK .LEN ,LEXV-ELEMENT-SIZE-BYTES>>>
|
||||
<==? <ZGET .LEN 0> <NP-NAME .NP>>>>>
|
||||
<BUFFER-PRINT .LEN <ZREST .LEN ,P-WORDLEN> <> T>)
|
||||
(<SET LEN <NP-NAME .NP>>
|
||||
<PRINT-VOCAB-WORD .LEN>)>
|
||||
<COND (<AND <SET LEN <NP-OF .NP>>
|
||||
<PMEM? .LEN>
|
||||
<PMEM-TYPE? .LEN NP>>
|
||||
<TELL " of ">
|
||||
<NP-PRINT .LEN>)>
|
||||
<COND (<AND <SET LEN <NP-EXCEPT .NP>>
|
||||
<PMEM? .LEN>
|
||||
<PMEM-TYPE? .LEN NP>>
|
||||
<TELL " except ">
|
||||
<NP-PRINT .LEN>)>)>>
|
||||
|
||||
<DEFINE ADJS-PRINT (ADJT "AUX" LEN)
|
||||
<COND (<SET LEN <ADJS-POSS .ADJT>>
|
||||
<COND (<EQUAL? .LEN ,PLAYER ,ME>
|
||||
<TELL "your ">)
|
||||
(T
|
||||
<NP-PRINT ;TELL-THE .LEN>
|
||||
<TELL "'s ">)>)>
|
||||
<COND (<SET LEN <ADJS-COUNT .ADJT>>
|
||||
<SET ADJT <REST-TO-SLOT .ADJT ADJS-COUNT 1>>
|
||||
<COND (<G? .LEN ,ADJS-MAX-COUNT>
|
||||
<SET LEN ,ADJS-MAX-COUNT>)>
|
||||
<DEC LEN>
|
||||
<SET ADJT <ZREST .ADJT <* 2 .LEN>>>
|
||||
<REPEAT (WD (CT 0) TMP)
|
||||
<SET WD <ZGET .ADJT 0>>
|
||||
<COND (<EQUAL? .WD ,W?MY>
|
||||
<TELL "your ">)
|
||||
(<EQUAL? .WD ,W?INT.NUM ,W?INT.TIM>
|
||||
<TELL N ,P-NUMBER> ;"good enough?"
|
||||
<TELL !\ >)
|
||||
(<NOT <EQUAL? .WD ,W?NO.WORD>>
|
||||
<COND (<AND <CAPITAL-NOUN? .WD>
|
||||
<SET TMP <GETB ,P-LEXV ,P-LEXWORDS>>
|
||||
<SET TMP <INTBL? .WD
|
||||
<REST-TO-SLOT ,P-LEXV LEXV-START>
|
||||
.TMP *204*>>>
|
||||
<CAPITALIZE .TMP>)
|
||||
(T
|
||||
<PRINT-VOCAB-WORD .WD>)>
|
||||
<TELL !\ >)>
|
||||
<COND (<G? <SET CT <+ .CT 1>> .LEN>
|
||||
<RETURN>)
|
||||
(T <SET ADJT <ZBACK .ADJT 2>>)>>)>>
|
||||
|
||||
<DEFAULT-DEFINITION TOO-MANY-NOUNS
|
||||
<DEFINE TOO-MANY-NOUNS (WD)
|
||||
<TELL "[I can't understand that many nouns with ">
|
||||
<COND (<T? .WD>
|
||||
<TELL !\">
|
||||
<PRINT-VOCAB-WORD .WD>
|
||||
<TELL !\">)
|
||||
(T <TELL "that verb">)>
|
||||
<TELL ".]" CR>>>
|
||||
|
||||
<DEFINE INBUF-ADD (LEN:FIX BEG:FIX SLOT:FIX "AUX" DBEG:FIX TMP)
|
||||
<SET TMP <ZGET ,OOPS-TABLE ,O-END>>
|
||||
<COND (<T? .TMP>
|
||||
<SET DBEG .TMP>)
|
||||
(T
|
||||
<SET TMP <* ,P-WORDLEN <ZGET ,OOPS-TABLE ,O-LENGTH>>>
|
||||
<SET DBEG <+ <GETB ,G-LEXV .TMP>
|
||||
<GETB ,G-LEXV <+ .TMP 1>>>>)>
|
||||
<COND (<L? ,INBUF-LENGTH <+ .DBEG <- .LEN 1>>>
|
||||
<RFALSE>)>
|
||||
<ZPUT ,OOPS-TABLE ,O-END <+ .DBEG .LEN>>
|
||||
<COND (T ;<OR <CHECK-EXTENDED? XZIP>
|
||||
<CHECK-EXTENDED? YZIP>>
|
||||
<COPYT <ZREST ,P-INBUF .BEG> <ZREST ,G-INBUF .DBEG> .LEN>)
|
||||
;(T
|
||||
<REPEAT ((CTR:FIX 0))
|
||||
<PUTB ,G-INBUF <+ .DBEG .CTR>
|
||||
<GETB ,P-INBUF <+ .BEG .CTR>>>
|
||||
<SET CTR <+ .CTR 1>>
|
||||
<COND (<EQUAL? .CTR .LEN>
|
||||
<RETURN>)>>)>
|
||||
<PUTB ,G-LEXV .SLOT .DBEG>
|
||||
<PUTB ,G-LEXV <- .SLOT 1> .LEN>
|
||||
T>
|
||||
|
||||
<DEFINE INBUF-PRINT (WD INBUF LEXV SLOT:FIX
|
||||
"AUX" DBEG:FIX (CTR:FIX 0) TMP (LEN:FIX 11))
|
||||
<SET TMP <ZGET ,OOPS-TABLE ,O-END>>
|
||||
<COND (<T? .TMP>
|
||||
<SET DBEG .TMP>)
|
||||
(T
|
||||
<SET TMP <* ,P-WORDLEN <ZGET ,OOPS-TABLE ,O-LENGTH>>>
|
||||
<SET DBEG <+ <GETB .LEXV .TMP>
|
||||
<GETB .LEXV <+ .TMP 1>>>>)>
|
||||
<COND (<L? <GETB .INBUF 0> <+ .DBEG <- .LEN 1>>>
|
||||
<RFALSE>)>
|
||||
<COND ;(<NOT <CHECK-EXTENDED?>> <RFALSE>)
|
||||
(T
|
||||
<DIROUT ,D-TABLE-ON <ZREST .INBUF .DBEG>>
|
||||
<PRINT-VOCAB-WORD .WD>
|
||||
<DIROUT ,D-TABLE-OFF>
|
||||
<SET LEN <GETB .INBUF <+ 1 .DBEG>>>)>
|
||||
<SET DBEG <+ 2 .DBEG>>
|
||||
<ZPUT ,OOPS-TABLE ,O-END <+ .DBEG .LEN>>
|
||||
<PUTB .LEXV .SLOT .DBEG>
|
||||
<PUTB .LEXV <- .SLOT 1> .LEN>
|
||||
T>
|
||||
|
||||
<DEFAULT-DEFINITION YES?
|
||||
|
||||
<CONSTANT YES-INBUF <ITABLE 19 (BYTE LENGTH) 0>>
|
||||
<CONSTANT YES-LEXV <ITABLE 3 (LEXV) 0 0>>
|
||||
|
||||
<DEFINE YES? ("OPT" (NO-Q <>) "AUX" WORD VAL)
|
||||
<COND (<NOT .NO-Q>
|
||||
<TELL !\?>)>
|
||||
<REPEAT ()
|
||||
<TELL "|>">
|
||||
<COND (T ;<OR <CHECK-EXTENDED? XZIP>
|
||||
<CHECK-EXTENDED? YZIP>>
|
||||
<PUTB ,YES-INBUF 1 0>)>
|
||||
<ZREAD ,YES-INBUF ,YES-LEXV>
|
||||
<COND (<AND <NOT <0? <GETB ,YES-LEXV ,P-LEXWORDS>>>
|
||||
<SET WORD <ZGET ,YES-LEXV ,P-LEXSTART>>>
|
||||
<COND (<COMPARE-WORD-TYPES
|
||||
<WORD-CLASSIFICATION-NUMBER .WORD>
|
||||
<GET-CLASSIFICATION VERB>>
|
||||
<SET VAL <WORD-VERB-STUFF .WORD>>)
|
||||
(T <SET VAL <>>)>
|
||||
<COND (<EQUAL? .VAL ,ACT?YES>
|
||||
<SET VAL T>
|
||||
<RETURN>)
|
||||
(<OR <EQUAL? .VAL ,ACT?NO>
|
||||
<EQUAL? .WORD ,W?N>>
|
||||
<SET VAL <>>
|
||||
<RETURN>)
|
||||
(<EQUAL? .VAL ,ACT?RESTART>
|
||||
<V-RESTART>)
|
||||
(<EQUAL? .VAL ,ACT?RESTORE>
|
||||
<V-RESTORE>)
|
||||
(<EQUAL? .VAL ,ACT?QUIT>
|
||||
<V-QUIT>)>)>
|
||||
<TELL "[Please type YES or NO.]">>
|
||||
.VAL>>
|
||||
|
||||
<DEFAULT-DEFINITION SETUP-ORPHAN
|
||||
<DEFINE SETUP-ORPHAN (STR "OPT" (A <>) (B <>))
|
||||
<DIROUT ,D-TABLE-ON ,O-INBUF>
|
||||
<TELL .STR>
|
||||
<COND (<T? .A>
|
||||
<COND (<OBJECT? .A>
|
||||
<TELL D .A>)
|
||||
(T <TELL .A>)>
|
||||
<COND (<T? .B>
|
||||
<COND (<OBJECT? .B>
|
||||
<TELL D .B>)
|
||||
(T <TELL .B>)>)>)>
|
||||
;<PRINTC 0> ;"Some ZIPs might need this."
|
||||
<DIROUT ,D-TABLE-OFF>
|
||||
<PUTB ,O-INBUF 0 ,INBUF-LENGTH>
|
||||
<LEX ,O-INBUF ,O-LEXV>
|
||||
<COND (<ZERO? <SET A <GETB ,O-LEXV ,P-LEXWORDS>>> ;"any words?"
|
||||
<>)
|
||||
(<INTBL? 0 <ZREST ,O-LEXV <* 2 ,P-LEXSTART>> .A *204*>
|
||||
;"any unknown words?"
|
||||
<>)
|
||||
(T
|
||||
<SETG P-OFLAG <+ 1 <* ,P-LEXELEN <GETB ,O-LEXV ,P-LEXWORDS>>>>
|
||||
<MAKE-ROOM-FOR-TOKENS 1 ,O-LEXV ,P-OFLAG>
|
||||
<ZPUT ,O-LEXV ,P-OFLAG ,W?NO.WORD ;0>
|
||||
<SETG P-OFLAG <- 0 ,P-OFLAG>> ;"for verbose response"
|
||||
<ZPUT ,OOPS-TABLE ,O-AGAIN ;,O-START
|
||||
<ZREST ,P-LEXV <* 2 ,P-LEXSTART>>>
|
||||
T)>>>
|
||||
|
||||
<DEFAULT-DEFINITION SETUP-ORPHAN-NP
|
||||
|
||||
;"<SYNTAX SWG = V-SWG>
|
||||
<DEFINE V-SWG ()
|
||||
<COND (<SETUP-ORPHAN-NP 'take frob' ,RED-FROB ,GREEN-FROB>
|
||||
<TELL 'Which frob do you want?' CR>)
|
||||
(T <TELL 'Nope.' CR>)>>"
|
||||
|
||||
<DEFINE SETUP-ORPHAN-NP (STR OBJ1 OBJ2 "OPT" (OBJ3 <>) "AUX" (NUM 2)
|
||||
(VEC <REST-TO-SLOT ,ORPHAN-SR FIND-RES-OBJ1>))
|
||||
<DIROUT ,D-TABLE-ON ,O-INBUF>
|
||||
<TELL .STR>
|
||||
;<PRINTC 0> ;"Some ZIPs might need this."
|
||||
<DIROUT ,D-TABLE-OFF>
|
||||
<PUTB ,O-INBUF 0 ,INBUF-LENGTH>
|
||||
<LEX ,O-INBUF ,O-LEXV>
|
||||
<COND (<INTBL? 0 <ZREST ,O-LEXV <* 2 ,P-LEXSTART>>
|
||||
<GETB ,O-LEXV ,P-LEXWORDS>
|
||||
*204*> ;"any unknown words?"
|
||||
<>)
|
||||
(T
|
||||
<SETG P-OFLAG <- 1 <* ,P-LEXELEN <GETB ,O-LEXV ,P-LEXWORDS>>>>
|
||||
<ZPUT ,OOPS-TABLE ,O-START <ZREST ,P-LEXV <* 2 ,P-LEXSTART>>>
|
||||
<ZPUT .VEC 0 .OBJ1>
|
||||
<ZPUT .VEC 1 .OBJ2>
|
||||
<COND (<T? .OBJ3>
|
||||
<INC NUM>
|
||||
<ZPUT .VEC 2 .OBJ3>)>
|
||||
<FIND-RES-COUNT ,ORPHAN-SR .NUM>
|
||||
T)>>>
|
||||
|
||||
<DEFINE INSERT-ADJS (E "AUX" CT (PTR <ABS ,P-OFLAG>))
|
||||
<COND (<NOT <EQUAL? .E <> T>>
|
||||
<COND (<SET CT <ADJS-POSS .E>>
|
||||
<COND (<PMEM? .CT>
|
||||
<SET CT <NP-NAME .CT>>)
|
||||
(T
|
||||
<SET CT <ZGET <GETPT .CT ,P?SYNONYM> 0>>)>
|
||||
<IFFLAG (P-APOSTROPHE-BREAKS-WORDS
|
||||
<SET PTR <INSERT-ADJS-WD .PTR .CT>>
|
||||
<SET PTR <INSERT-ADJS-WD .PTR ,W?APOSTROPHE>>
|
||||
<SET PTR <INSERT-ADJS-WD .PTR ,W?S>>)
|
||||
(T ;"Find next word in vocabulary."
|
||||
<SET CT <+ .CT <GETB <ZREST ,VOCAB
|
||||
<+ 1 <GETB ,VOCAB 0>>>
|
||||
0>>>
|
||||
<COND (T ;<BAND ,POSSESSIVE <WORD-FLAGS .CT>>
|
||||
<SET PTR <INSERT-ADJS-WD .PTR .CT>>)>)>)>
|
||||
<COND (<SET CT <ADJS-COUNT .E>>
|
||||
<SET E <REST-TO-SLOT .E ADJS-COUNT 1>>
|
||||
<REPEAT (WD)
|
||||
<COND (<DLESS? CT 0>
|
||||
<RETURN>)
|
||||
(<EQUAL? <SET WD <ZGET .E .CT>>
|
||||
<ZGET ,ERROR-ARGS 3>> ;"e.g. OPEN"
|
||||
<AGAIN>)>
|
||||
<SET PTR <INSERT-ADJS-WD .PTR .WD>>>)>)>>
|
||||
|
||||
<DEFINE INSERT-ADJS-WD (PTR WD)
|
||||
<MAKE-ROOM-FOR-TOKENS 1 ,G-LEXV .PTR>
|
||||
<ZPUT ,G-LEXV .PTR .WD>
|
||||
<SET PTR <+ .PTR ,P-LEXELEN>>
|
||||
<INBUF-PRINT .WD ,G-INBUF ,G-LEXV <- <* 2 .PTR> 1>>
|
||||
.PTR>
|
||||
|
||||
<DEFAULT-DEFINITION PARSER-REPORT
|
||||
<DEFINE PARSER-REPORT ()
|
||||
<PRINTI "[Parser used: ">
|
||||
<PRINTN <* 2 <- ,PMEM-STORE-LENGTH ,PMEM-STORE-WARN>>>
|
||||
<PARSER-REPORT-STACK ,STATE-STACK>
|
||||
<PARSER-REPORT-STACK ,DATA-STACK>
|
||||
<PRINTC !\+>
|
||||
<REPEAT ((PTR <ZREST ,SPLIT-STACK 2>) (N <- ,MAX-PSTACK-SIZE 1>))
|
||||
<COND (<SET PTR <INTBL? 0 .PTR .N>>
|
||||
<COND (<AND <0? <ZGET .PTR 1>>
|
||||
<0? <ZGET .PTR 2>>>
|
||||
<PRINTN <- .PTR <ZREST ,SPLIT-STACK 2>>>
|
||||
<RETURN>)
|
||||
(T
|
||||
<SET PTR <ZREST .PTR 2>>
|
||||
<SET N <+ -1 <- ,MAX-PSTACK-SIZE
|
||||
</ <- .PTR ,SPLIT-STACK> 2>>>>)>)
|
||||
(T
|
||||
<PRINTN <* 2 <- ,MAX-PSTACK-SIZE 1>>>
|
||||
<RETURN>)>>
|
||||
<PRINTI " bytes.]">
|
||||
<CRLF>>
|
||||
|
||||
<DEFINE PARSER-REPORT-STACK (STK "AUX" N)
|
||||
<PRINTC !\+>
|
||||
<SET N ,MAX-PSTACK-SIZE>
|
||||
<REPEAT ()
|
||||
<COND (<OR <DLESS? N 1>
|
||||
<0? <ZGET .STK .N>>>
|
||||
<PRINTN <* 2 <- <- ,MAX-PSTACK-SIZE .N> 1>>>
|
||||
<RTRUE>)>>>>
|
||||
|
||||
<END-SEGMENT>
|
||||
<ENDPACKAGE>
|
|
@ -0,0 +1,158 @@
|
|||
|
||||
<GLOBAL DEMO-VERSION? <>>
|
||||
<BEGIN-SEGMENT STARTUP>
|
||||
<DEFINE-ROUTINE SETUP-SCREEN>
|
||||
<DEFINE-ROUTINE GO>
|
||||
<DEFINE-ROUTINE CLEAR-CRCNT>
|
||||
<CONSTANT SLIDE-SHOW-TIMEOUT 150>
|
||||
<CONSTANT DEMO-TIMEOUT 600>
|
||||
<DEFINE-ROUTINE SLIDE-SHOW-HANDLER>
|
||||
<DEFINE-ROUTINE SLIDE-SHOW>
|
||||
<DEFINE-ROUTINE READ-DEMO>
|
||||
<DEFINE-ROUTINE INPUT-DEMO>
|
||||
<DEFINE-ROUTINE END-DEMO>
|
||||
<OBJECT RECIPE (DESC "recipe card") (SYNONYM RECIPE CARD) (ADJECTIVE RECIPE) (
|
||||
FLAGS TAKEBIT READBIT) (SIZE 1) (TEXT BORPHBELLY-TEXT)>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT CASTLE>
|
||||
<OBJECT BANQUET-FOOD (LOC GLOBAL-OBJECTS) (DESC "banquet meal") (SYNONYM FOOD
|
||||
WINE) (ACTION BANQUET-FOOD-F)>
|
||||
<DEFINE-ROUTINE BANQUET-FOOD-F>
|
||||
<ROOM BANQUET-HALL (LOC ROOMS) (DESC "Banquet Hall") (REGION "Flatheadia") (
|
||||
WEST TO ENTRANCE-HALL) (SOUTH TO COURTYARD) (EAST TO KITCHEN) (NE TO SCULLERY)
|
||||
(FLAGS RLANDBIT ONBIT) (SYNONYM HALL) (ADJECTIVE BANQUET) (MAP-LOC <PTABLE
|
||||
MAIN-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-6>) (ICON BANQUET-HALL-ICON) (GLOBAL KITCHEN
|
||||
SCULLERY) (ACTION BANQUET-HALL-F) (THINGS <> SMOKE SMOKE-PS <> VAPOR SMOKE-PS)>
|
||||
|
||||
<DEFINE-ROUTINE SMOKE-PS>
|
||||
<DEFINE-ROUTINE BANQUET-HALL-F>
|
||||
<ROOM KITCHEN (LOC ROOMS) (DESC "Kitchen") (REGION "Flatheadia") (WEST TO
|
||||
BANQUET-HALL) (NORTH TO SCULLERY) (DOWN TO ROOT-CELLAR) (FLAGS RLANDBIT ONBIT)
|
||||
(SYNONYM KITCHEN) (GLOBAL STAIRS BANQUET-HALL SCULLERY) (MAP-LOC <PTABLE
|
||||
MAIN-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-7>) (ICON KITCHEN-ICON) (ACTION KITCHEN-F)>
|
||||
<DEFINE-ROUTINE KITCHEN-F>
|
||||
<ROOM SCULLERY (LOC ROOMS) (DESC "Scullery") (REGION "Flatheadia") (SOUTH TO
|
||||
KITCHEN) (SW TO BANQUET-HALL) (DOWN TO WINE-CELLAR) (FLAGS RLANDBIT ONBIT) (
|
||||
SYNONYM SCULLERY) (GLOBAL STAIRS KITCHEN BANQUET-HALL) (MAP-LOC <PTABLE
|
||||
MAIN-MAP-NUM MAP-GEN-Y-2 MAP-GEN-X-7>) (ACTION SCULLERY-F)>
|
||||
<DEFINE-ROUTINE SCULLERY-F>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT STRAW (DESC "drinking straw") (SYNONYM STRAW) (ADJECTIVE DRINKING) (
|
||||
FLAGS TAKEBIT) (SIZE 1) (ACTION STRAW-F)>
|
||||
<DEFINE-ROUTINE STRAW-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT LAKE>
|
||||
<DEFINE-ROUTINE TOUCH-ELIXIR>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<GLOBAL FINGER-ON-STRAW <>>
|
||||
<GLOBAL ELIXIR-TRAPPED <>>
|
||||
<DEFINE-ROUTINE I-FINGER-OFF-STRAW>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT CASTLE>
|
||||
<ROOM ROOT-CELLAR (LOC ROOMS) (DESC "Root Cellar") (REGION "Flatheadia") (LDESC
|
||||
"This is where food is stored. A stair leads up, and another part of
|
||||
the cellar lies to the north.") (UP TO KITCHEN) (NORTH TO WINE-CELLAR) (FLAGS
|
||||
RLANDBIT ONBIT) (SYNONYM CELLAR) (ADJECTIVE ROOT) (GLOBAL STAIRS) (MAP-LOC <
|
||||
PTABLE MAIN-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-8>)>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT UNOPENED-NUT (DESC "unopened walnut") (FDESC
|
||||
"The cellar has been picked clean by the fleeing thousands -- but wait, what's
|
||||
this in the corner? Ah, an unopened walnut!") (SYNONYM SHELL NUTSHELL WALNUT
|
||||
NUT) (ADJECTIVE WALNUT UNOPENED) (FLAGS VOWELBIT TAKEBIT CONTBIT SEARCHBIT) (
|
||||
SIZE 2) (ACTION UNOPENED-NUT-F)>
|
||||
<DEFINE-ROUTINE UNOPENED-NUT-F>
|
||||
<OBJECT NUT-SHELL (DESC "walnut shell") (SYNONYM SHELL NUTSHELL) (ADJECTIVE
|
||||
WALNUT) (FLAGS TAKEBIT SEARCHBIT CONTBIT OPENBIT) (SIZE 1) (ACTION NUT-SHELL-F)
|
||||
>
|
||||
<DEFINE-ROUTINE NUT-SHELL-F>
|
||||
<OBJECT NUT (LOC UNOPENED-NUT) (DESC "walnut") (SYNONYM WALNUT NUT) (FLAGS
|
||||
TAKEBIT) (SIZE 1) (ACTION NUT-F)>
|
||||
<DEFINE-ROUTINE NUT-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT CASTLE>
|
||||
<ROOM WINE-CELLAR (LOC ROOMS) (DESC "Wine Cellar") (REGION "Flatheadia") (LDESC
|
||||
"Every keg has been removed, and the floor is mottled with purple stains.
|
||||
Stone stairs lead upward, and the cellar continues to the south.") (SOUTH TO
|
||||
ROOT-CELLAR) (UP TO SCULLERY) (FLAGS RLANDBIT ONBIT) (SYNONYM CELLAR) (
|
||||
ADJECTIVE WINE) (GLOBAL STAIRS) (MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-2
|
||||
MAP-GEN-X-8>) (ICON WINE-CELLAR-ICON)>
|
||||
<BEGIN-SEGMENT STARTUP>
|
||||
<GLOBAL PROLOGUE-COUNTER 0>
|
||||
<GLOBAL PROLOGUE-NOVICE-COUNTER 1>
|
||||
<CONSTANT NOVICE-MOVES <PTABLE "wait" "go northeast" "walk south" "go west"
|
||||
"walk east" "enter the banquet hall" "examine the gaunt man"
|
||||
"dive under the table" "get out from under the table"
|
||||
"pick up the scrap of parchment" "north" "southeast">>
|
||||
<DEFINE-ROUTINE I-PROLOGUE>
|
||||
<DEFINE-ROUTINE I-TAKE-OBJECT>
|
||||
<DEFINE-ROUTINE I-GIVE-OBJECT>
|
||||
<OBJECT HELLHOUND-BONES (OWNER HELLHOUND-BONES) (DESC
|
||||
"platter of hellhound bones") (SYNONYM BONES PLATTER) (ADJECTIVE HELLHOUND) (
|
||||
FLAGS TAKEBIT) (ACTION SERVANT-ITEM-F)>
|
||||
<OBJECT ROC-TERIYAKI (OWNER ROC-TERIYAKI) (DESC "tray of roc teriyaki") (
|
||||
SYNONYM TERIYAKI TRAY APPETIZER) (ADJECTIVE ROC) (FLAGS TAKEBIT) (ACTION
|
||||
SERVANT-ITEM-F)>
|
||||
<OBJECT CAKE (DESC "cake") (SYNONYM CAKE) (FLAGS TAKEBIT) (ACTION
|
||||
SERVANT-ITEM-F)>
|
||||
<OBJECT KEG (DESC "wine keg") (SYNONYM KEG WINE) (ADJECTIVE WINE) (FLAGS
|
||||
TAKEBIT) (ACTION SERVANT-ITEM-F)>
|
||||
<OBJECT LINEN (DESC "pile of napkins") (OWNER LINEN) (SYNONYM PILE NAPKINS
|
||||
LINEN) (ADJECTIVE MONOGRAMMED) (FLAGS TAKEBIT READBIT) (TEXT
|
||||
"The napkin is embroidered with a large, flowery \"F.\"") (ACTION
|
||||
SERVANT-ITEM-F)>
|
||||
<DEFINE-ROUTINE SERVANT-ITEM-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT PARCHMENT (OWNER PARCHMENT) (DESC "scrap of parchment") (PLURAL
|
||||
"parchments") (SYNONYM PAPER SCRAP PIECE PARCHMENT) (ADJECTIVE PARCHMENT) (
|
||||
FLAGS NDESCBIT READBIT TAKEBIT BURNBIT) (SIZE 1) (ACTION PARCHMENT-F)>
|
||||
<DEFINE-ROUTINE PARCHMENT-F>
|
||||
<OBJECT DIMWIT (LOC BANQUET-HALL) (DESC "Lord Dimwit Flathead the Excessive") (
|
||||
LDESC "Dimwit is seated at the dais, surrounded by his most trusted advisors.")
|
||||
(SYNONYM FLATHEAD DIMWIT) (ADJECTIVE LORD DIMWIT EXCESSIVE) (FLAGS NARTICLEBIT
|
||||
NDESCBIT ACTORBIT CONTBIT OPENBIT SEARCHBIT) (GENERIC G-DIMWIT-F) (ACTION
|
||||
DIMWIT-F)>
|
||||
<DEFINE-ROUTINE DIMWIT-F>
|
||||
<DEFINE-ROUTINE G-DIMWIT-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT STARTUP>
|
||||
<OBJECT TABLES (LOC BANQUET-HALL) (DESC "table") (SYNONYM TABLE TABLES) (FLAGS
|
||||
NDESCBIT SURFACEBIT CONTBIT OPENBIT) (CAPACITY 100) (ACTION TABLES-F)>
|
||||
<GLOBAL UNDER-TABLE <>>
|
||||
<DEFINE-ROUTINE TABLES-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT CASTLE>
|
||||
<OBJECT CAULDRON (DESC "cauldron") (SYNONYM CAULDRON KETTLE) (ADJECTIVE
|
||||
BUBBLING ROILING FUMING) (FLAGS CONTBIT OPENBIT) (ACTION CAULDRON-F)>
|
||||
<DEFINE-ROUTINE CAULDRON-F>
|
||||
<DEFINE-ROUTINE PUT-ITEM-IN-CAULDRON>
|
||||
<GLOBAL CAULDRON-MUNGED <>>
|
||||
<GLOBAL TIME-STOPPED <>>
|
||||
<GLOBAL NUMBER-OF-ITEMS 0>
|
||||
<CONSTANT CAULDRON-DESCS <PTABLE "barely bubbling" "bubbling quietly"
|
||||
"bubbling actively" "bubbling very actively" "bubbling and churning"
|
||||
"bubbling, churning, and smoking heavily"
|
||||
"churning actively and emitting large puffs of smoke"
|
||||
"violently churning and emitting huge puffs of dark smoke"
|
||||
"churning very violently and giving off clouds of black smoke"
|
||||
"churning and roiling beneath a whirlpool of thick black smoke"
|
||||
"boiling violently beneath a gathering storm of noisome smoke"
|
||||
"boiling with amazing energy, sending steaming geysers shooting
|
||||
up into the roiling black clouds which swirl around it"
|
||||
"almost lost amongst the clouds of dark power and energy which
|
||||
surround the kettle, glowing and expanding from explosions deep within">>
|
||||
<DEFINE-ROUTINE I-CAULDRON>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT STARTUP>
|
||||
<OBJECT MEGABOZ (DESC "angry wizard") (DESCFCN MEGABOZ-F) (SYNONYM WIZARD
|
||||
MEGABOZ MAN) (ADJECTIVE GAUNT OLD ANGRY) (FLAGS VOWELBIT ACTORBIT CONTBIT
|
||||
OPENBIT SEARCHBIT) (ACTION MEGABOZ-F)>
|
||||
<DEFINE-ROUTINE MEGABOZ-F>
|
||||
<BEGIN-SEGMENT CASTLE>
|
||||
<CONSTANT MEGABOZ-TEXT
|
||||
"Megaboz was a mysterious wizard who lived a hermit's life in the Fublio
|
||||
Valley. Some say he cast a Curse which will someday destroy the Empire, but
|
||||
royal spokesmen have denied all such rumors. Megaboz vanished in 789 GUE;
|
||||
it is said that the effort of casting the Curse destroyed him.">
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,862 @@
|
|||
|
||||
.SEGMENT "STARTUP"
|
||||
|
||||
|
||||
.FUNCT SETUP-SCREEN,?TMP1
|
||||
GETB 0,39 >FONT-X
|
||||
GETB 0,38 >FONT-Y
|
||||
MOUSE-LIMIT -1
|
||||
GET 0,8
|
||||
BTST STACK,32 \?CND1
|
||||
SET 'ACTIVE-MOUSE,TRUE-VALUE
|
||||
?CND1: GET 0,18 >?TMP1
|
||||
GET 0,17
|
||||
WINSIZE S-FULL,?TMP1,STACK
|
||||
GETB 0,33 >WIDTH
|
||||
RETURN WIDTH
|
||||
|
||||
|
||||
.FUNCT GO
|
||||
?FCN: ICALL1 SETUP-SCREEN
|
||||
SET 'TOWER-BEATEN,PYRAMID
|
||||
SET 'CLOAK-LOC,CLOTHES-CLOSET
|
||||
ZERO? DEMO-VERSION? /?CND1
|
||||
RANDOM 7
|
||||
SUB STACK,1
|
||||
GET SLAB-TABLE,STACK >HOLEY-SLAB
|
||||
ICALL1 SLIDE-SHOW
|
||||
JUMP ?FCN
|
||||
?CND1: SET 'CURRENT-SPLIT,TEXT-WINDOW-PIC-LOC
|
||||
SET 'CURRENT-BORDER,CASTLE-BORDER
|
||||
ICALL QUEUE,I-GIVE-OBJECT,-1
|
||||
ICALL QUEUE,I-PROLOGUE,-1
|
||||
ICALL QUEUE,I-TAKE-OBJECT,-1
|
||||
ICALL1 V-$REFRESH
|
||||
CRLF
|
||||
ICALL2 MARGINAL-PIC,PROLOGUE-LETTER
|
||||
DIROUT D-SCREEN-OFF
|
||||
PRINTC 65
|
||||
DIROUT D-SCREEN-ON
|
||||
PRINTI "nother frantic day at the castle; Lord Dimwit Flathead the Excessive has invited a few thousand friends over for dinner. Three hundred dragons have been slaughtered for the occasion, and the kitchen is suffocated by the stench of their roasting flesh."
|
||||
CRLF
|
||||
ICALL1 CLEAR-CRCNT
|
||||
CRLF
|
||||
ICALL1 V-LOOK
|
||||
ICALL1 I-PROLOGUE
|
||||
ICALL1 I-GIVE-OBJECT
|
||||
ICALL1 MAIN-LOOP
|
||||
JUMP ?FCN
|
||||
|
||||
|
||||
.FUNCT CLEAR-CRCNT,NUM
|
||||
WINGET S-TEXT,WCRCNT >NUM
|
||||
?PRG1: ZERO? NUM /TRUE
|
||||
CRLF
|
||||
DEC 'NUM
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT SLIDE-SHOW-HANDLER
|
||||
SET 'DEMO-VERSION?,1
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT SLIDE-SHOW,RM,?TMP1
|
||||
GET 0,18 >?TMP1
|
||||
GET 0,17
|
||||
WINSIZE S-TEXT,?TMP1,STACK
|
||||
ICALL1 TITLE-SCREEN
|
||||
INPUT 1,SLIDE-SHOW-TIMEOUT,SLIDE-SHOW-HANDLER
|
||||
CLEAR -1
|
||||
PRINTI "This is a demonstration version of ZORK ZERO: The Revenge of Megaboz
|
||||
Copyright (c) 1988 by Infocom, Inc. All rights reserved.
|
||||
|
||||
First you will see a few samples of the graphic screens that await you in ZORK ZERO.We've used graphics in surprising new ways to enhance the story without detracting from Infocom's traditional richness and depth.
|
||||
Then you will be able to interact with a small section of ZORK ZERO.Feel free to try the new friendlier parser, the optional mouse interface, and the on-screen hints.Solve a couple of puzzles.Meet the quizzical jester, who will test you with games, riddles, or tricks.
|
||||
ZORK ZERO is the ""prequel"" to the ZORK trilogy, the best-selling computer entertainment of all time.In ZORK ZERO the Great Underground Empire is in its heyday, and no adventurer has yet set foot in the ""open field west of a white house.""But the inhabitants are fleeing in the wake of a dread wizard's curse, which has already disposed of the royal Flathead family and threatens to destroy the entire kingdom -- unless you can stop it. Hit any key to begin..."
|
||||
INPUT 1,DEMO-TIMEOUT,SLIDE-SHOW-HANDLER
|
||||
CLEAR -1
|
||||
ICALL PICTURED-ENTRY,MEGABOZ-ILL,MEGABOZ-TEXT,TRUE-VALUE
|
||||
SCREEN S-FULL
|
||||
CURSET 1,1
|
||||
INPUT 1,SLIDE-SHOW-TIMEOUT,SLIDE-SHOW-HANDLER
|
||||
CLEAR -1
|
||||
SCREEN S-FULL
|
||||
DISPLAY REBUS-1,1,1
|
||||
INPUT 1,SLIDE-SHOW-TIMEOUT,SLIDE-SHOW-HANDLER
|
||||
CLEAR -1
|
||||
FIRST? ROOMS >RM /?PRG2
|
||||
?PRG2: ZERO? RM /?REP3
|
||||
GETP RM,P?MAP-LOC
|
||||
GET STACK,0
|
||||
EQUAL? FOOZLE-MAP-NUM,STACK \?CND4
|
||||
FSET RM,TOUCHBIT
|
||||
?CND4: NEXT? RM >RM /?PRG2
|
||||
JUMP ?PRG2
|
||||
?REP3: SET 'HERE,CROSSROADS
|
||||
SET 'MAP-NOTE,TRUE-VALUE
|
||||
ICALL1 DO-MAP
|
||||
INPUT 1,SLIDE-SHOW-TIMEOUT,SLIDE-SHOW-HANDLER
|
||||
CLEAR -1
|
||||
ICALL1 SETUP-CARDS
|
||||
PUT F-CARD-TABLE,0,7
|
||||
PUT F-CARD-TABLE,1,10
|
||||
PUT F-CARD-TABLE,2,16
|
||||
PUT F-CARD-TABLE,4,11
|
||||
PUT F-CARD-TABLE,5,15
|
||||
PUT F-CARD-TABLE,6,0
|
||||
PUT F-CARD-TABLE,8,8
|
||||
PUT F-CARD-TABLE,9,5
|
||||
ICALL1 SETUP-FANUCCI
|
||||
SCREEN S-FULL
|
||||
CURSET 1,1
|
||||
INPUT 1,SLIDE-SHOW-TIMEOUT,SLIDE-SHOW-HANDLER
|
||||
CLEAR -1
|
||||
SET 'CURRENT-SPLIT,TEXT-WINDOW-PIC-LOC
|
||||
SET 'CURRENT-BORDER,CASTLE-BORDER
|
||||
ICALL1 V-$REFRESH
|
||||
PRINTI "Now you are welcome to interact with a demonstration version of
|
||||
|
||||
"
|
||||
ICALL1 V-VERSION
|
||||
CRLF
|
||||
MOVE DIRIGIBLE,SMALLER-HANGAR
|
||||
PUTP GONDOLA,P?REGION,STR?249
|
||||
MOVE RECIPE,RUINED-HALL
|
||||
PUTP ROOSTER,P?FDESC,0
|
||||
MOVE ROOSTER,DESERTED-CASTLE
|
||||
PUTP DESERTED-CASTLE,P?ACTION,DESERTED-CASTLE-F
|
||||
PUTP FOX,P?FDESC,0
|
||||
MOVE FOX,SMALLER-HANGAR
|
||||
PUTP SMALLER-HANGAR,P?ACTION,SMALLER-HANGAR-F
|
||||
MOVE WORM,HOTHOUSE
|
||||
WINPUT S-TEXT,15,-999
|
||||
SET 'PROLOGUE-NOVICE-COUNTER,0
|
||||
ICALL2 GOTO,RUINED-HALL
|
||||
CALL1 MAIN-LOOP
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT READ-DEMO,ARG1,ARG2,CHR
|
||||
SET 'DEMO-VERSION?,-1
|
||||
READ ARG1,ARG2,DEMO-TIMEOUT,SLIDE-SHOW-HANDLER >CHR
|
||||
EQUAL? DEMO-VERSION?,1 \?CCL4
|
||||
CALL1 END-DEMO
|
||||
RSTACK
|
||||
?CCL4: WINPUT S-TEXT,15,-999
|
||||
RETURN CHR
|
||||
|
||||
|
||||
.FUNCT INPUT-DEMO,ARG,CHR
|
||||
SET 'DEMO-VERSION?,-1
|
||||
INPUT ARG,DEMO-TIMEOUT,SLIDE-SHOW-HANDLER >CHR
|
||||
EQUAL? DEMO-VERSION?,1 \?CCL4
|
||||
CALL1 END-DEMO
|
||||
RSTACK
|
||||
?CCL4: WINPUT S-TEXT,15,-999
|
||||
RETURN CHR
|
||||
|
||||
|
||||
.FUNCT END-DEMO
|
||||
?FCN: CLEAR -1
|
||||
PRINTI "
|
||||
You have reached the end of this demonstration version of
|
||||
"
|
||||
ICALL1 V-VERSION
|
||||
PRINTI "
|
||||
|
||||
Hit any key to start over..."
|
||||
INPUT 1,SLIDE-SHOW-TIMEOUT,SLIDE-SHOW-HANDLER
|
||||
SCREEN S-TEXT
|
||||
COLOR 1,1
|
||||
RESTART
|
||||
PRINT FAILED
|
||||
JUMP ?FCN
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "CASTLE"
|
||||
|
||||
|
||||
.FUNCT BANQUET-FOOD-F
|
||||
EQUAL? PRSA,V?TASTE,V?DRINK,V?EAT /?CCL3
|
||||
EQUAL? PRSA,V?TAKE,V?TOUCH \FALSE
|
||||
?CCL3: PRINTR "The food and drink is for the guests, not the servants."
|
||||
|
||||
|
||||
.FUNCT SMOKE-PS
|
||||
EQUAL? PRSA,V?SMELL \?CCL3
|
||||
ICALL PERFORM,V?SMELL,CAULDRON
|
||||
RTRUE
|
||||
?CCL3: EQUAL? PRSA,V?ENTER \?CCL5
|
||||
PRINTR """Choke, choke, cough, cough."""
|
||||
?CCL5: EQUAL? PRSA,V?PUT \FALSE
|
||||
EQUAL? PRSO,HANDS \FALSE
|
||||
PRINT NOTHING-HAPPENS
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT BANQUET-HALL-F,RARG
|
||||
EQUAL? RARG,M-LOOK \FALSE
|
||||
CALL2 RUNNING?,I-PROLOGUE
|
||||
ZERO? STACK /?CCL6
|
||||
PRINTI "The hall is filled to capacity, and the thousands of reveling guests are raising quite a din"
|
||||
JUMP ?CND4
|
||||
?CCL6: PRINTI "Many royal feasts have been held in this hall, which could easily hold ten thousand guests. Legends say that Dimwit's more excessive banquets would require the combined farm outputs of three provinces"
|
||||
?CND4: PRINTI ". The primary exits are to the west and south; smaller openings lead east and northeast."
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT KITCHEN-F,RARG
|
||||
EQUAL? RARG,M-LOOK \FALSE
|
||||
CALL2 RUNNING?,I-PROLOGUE
|
||||
ZERO? STACK /?CCL6
|
||||
PRINTI "You are assaulted by waves of greasy odors and buffetted by mobs of bustling cooks and servants"
|
||||
JUMP ?CND4
|
||||
?CCL6: PRINTI "Although this is the largest cooking area in the Empire, it must've still been crowded when all 600 of Dimwit's chefs were working at the same time"
|
||||
?CND4: PRINTI ". There are passages to the west and north, and a stair leads downward"
|
||||
CALL2 RUNNING?,I-PROLOGUE
|
||||
ZERO? STACK \?CND7
|
||||
PRINTI " into darkness"
|
||||
?CND7: PRINTC 46
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT SCULLERY-F,RARG
|
||||
EQUAL? RARG,M-LOOK \FALSE
|
||||
PRINTI "This is where the castle's pots and pans, the output of the forges of Borphee for three years, are cleaned and stored. Passages open to the south and southwest, and a stair descends"
|
||||
CALL2 RUNNING?,I-PROLOGUE
|
||||
ZERO? STACK \?CND4
|
||||
PRINTI " into darkness"
|
||||
?CND4: PRINTC 46
|
||||
RTRUE
|
||||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT STRAW-F
|
||||
EQUAL? PRSA,V?LOOK-INSIDE \?CCL3
|
||||
IN? STRAW,BOWL \?CCL6
|
||||
PRINT ONLY-BLACKNESS
|
||||
RTRUE
|
||||
?CCL6: PRINTR "You see a point of light: the far end of the straw."
|
||||
?CCL3: EQUAL? PRSA,V?SUCK-WITH \?CCL8
|
||||
EQUAL? PRSI,STRAW \?CCL8
|
||||
ICALL PERFORM,V?DRINK-WITH,PRSO,STRAW
|
||||
RTRUE
|
||||
?CCL8: EQUAL? PRSA,V?SUCK-ON \?CCL12
|
||||
SET 'FINGER-ON-STRAW,FALSE-VALUE
|
||||
SET 'ELIXIR-TRAPPED,FALSE-VALUE
|
||||
IN? STRAW,BOWL \?CCL15
|
||||
ICALL PERFORM,V?DRINK-WITH,ELIXIR,STRAW
|
||||
RTRUE
|
||||
?CCL15: PRINTR "You suck some air through the straw."
|
||||
?CCL12: EQUAL? PRSA,V?INFLATE \?CCL17
|
||||
SET 'FINGER-ON-STRAW,FALSE-VALUE
|
||||
SET 'ELIXIR-TRAPPED,FALSE-VALUE
|
||||
PRINTI "Air "
|
||||
IN? STRAW,BOWL \?CCL20
|
||||
PRINTI "bubbles up through the elixir"
|
||||
JUMP ?CND18
|
||||
?CCL20: PRINTI "blows out the far end of the straw"
|
||||
?CND18: PRINTR ". Wow."
|
||||
?CCL17: EQUAL? PRSA,V?TAKE \FALSE
|
||||
ZERO? FINGER-ON-STRAW /FALSE
|
||||
ZERO? ELIXIR-TRAPPED /FALSE
|
||||
IN? STRAW,BOWL \FALSE
|
||||
SET 'FINGER-ON-STRAW,FALSE-VALUE
|
||||
SET 'ELIXIR-TRAPPED,FALSE-VALUE
|
||||
MOVE STRAW,PROTAGONIST
|
||||
PRINTI "As you lift the straw with your finger over the end of it, the elixir within is trapped. Then the suction breaks, and the elixir dribbles onto you. "
|
||||
CALL1 TOUCH-ELIXIR
|
||||
RSTACK
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "LAKE"
|
||||
|
||||
|
||||
.FUNCT TOUCH-ELIXIR
|
||||
PRINTI "The liquid feels warm and cleansing."
|
||||
FSET? LARGE-FLY,TRYTAKEBIT \?CCL3
|
||||
FCLEAR LARGE-FLY,TRYTAKEBIT
|
||||
FCLEAR LARGER-FLY,TRYTAKEBIT
|
||||
FCLEAR EVEN-LARGER-FLY,TRYTAKEBIT
|
||||
FCLEAR LARGEST-FLY,TRYTAKEBIT
|
||||
PRINTI " You experience a wave of ecstasy, accompanied by a brief desire to spin a cocoon, collect sap, and eat animal excrement."
|
||||
CRLF
|
||||
CALL2 INC-SCORE,16
|
||||
RSTACK
|
||||
?CCL3: CRLF
|
||||
RTRUE
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT I-FINGER-OFF-STRAW,TOLD
|
||||
ZERO? FINGER-ON-STRAW /?CND1
|
||||
CALL2 VISIBLE?,STRAW
|
||||
ZERO? STACK /?CND1
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
SET 'TOLD,TRUE-VALUE
|
||||
PRINTI " Your finger gets tired, so you remove it from the end of the straw."
|
||||
CRLF
|
||||
?CND1: SET 'FINGER-ON-STRAW,FALSE-VALUE
|
||||
SET 'ELIXIR-TRAPPED,FALSE-VALUE
|
||||
ZERO? TOLD \TRUE
|
||||
RFALSE
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "0"
|
||||
|
||||
.SEGMENT "CASTLE"
|
||||
|
||||
|
||||
.FUNCT UNOPENED-NUT-F
|
||||
EQUAL? PRSA,V?SHAKE \?CCL3
|
||||
PRINTR "A nut rattles around within."
|
||||
?CCL3: EQUAL? PRSA,V?OPEN \?CCL5
|
||||
EQUAL? PRSI,HAMMER \?CCL5
|
||||
ICALL PERFORM,V?MUNG,PRSO,HAMMER
|
||||
RTRUE
|
||||
?CCL5: EQUAL? PRSA,V?MUNG,V?LOOK-INSIDE,V?OPEN /?PRD11
|
||||
EQUAL? PRSA,V?KILL \?CCL9
|
||||
?PRD11: EQUAL? PRSO,UNOPENED-NUT \?CCL9
|
||||
EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \?CCL16
|
||||
FSET? GOGGLES,WORNBIT \?CCL16
|
||||
ICALL PERFORM,V?LOOK-INSIDE,NUT-SHELL
|
||||
RTRUE
|
||||
?CCL16: ZERO? PRSI \?CCL20
|
||||
PRINTI "This is one tough shell. You can't seem to crack it with your "
|
||||
ZERO? ALLIGATOR /?CCL23
|
||||
PRINTI "paws"
|
||||
JUMP ?CND21
|
||||
?CCL23: PRINTI "hands"
|
||||
?CND21: PRINT PERIOD-CR
|
||||
RTRUE
|
||||
?CCL20: EQUAL? PRSI,LOBSTER \?CCL25
|
||||
FSET? PRSI,ANIMATEDBIT /?CCL25
|
||||
CALL2 VISIBLE?,JESTER
|
||||
ZERO? STACK /?CND28
|
||||
PRINTI "The jester watches with interest. "
|
||||
SET 'NUT-OPENED,TRUE-VALUE
|
||||
?CND28: LOC UNOPENED-NUT
|
||||
MOVE NUT-SHELL,STACK
|
||||
MOVE NUT,NUT-SHELL
|
||||
ICALL2 THIS-IS-IT,NUT
|
||||
REMOVE UNOPENED-NUT
|
||||
PRINTR """Crack!"" Opening the walnut shell reveals a walnut."
|
||||
?CCL25: EQUAL? PRSA,V?KILL,V?MUNG \?CCL31
|
||||
GETP PRSI,P?SIZE
|
||||
GRTR? STACK,15 \?CCL31
|
||||
REMOVE UNOPENED-NUT
|
||||
PRINTR "This succeeds in crushing the shell (and its contents) to dust."
|
||||
?CCL31: PRINT YOU-CANT
|
||||
PRINTI "open a nutshell with"
|
||||
CALL2 ARPRINT,PRSI
|
||||
RSTACK
|
||||
?CCL9: EQUAL? PRSA,V?PUT-ON \?CCL35
|
||||
EQUAL? PRSI,UNOPENED-NUT \?CCL35
|
||||
GETP PRSO,P?SIZE
|
||||
GRTR? STACK,14 \?CCL35
|
||||
ICALL PERFORM,V?MUNG,UNOPENED-NUT,PRSO
|
||||
RTRUE
|
||||
?CCL35: EQUAL? PRSA,V?STAND-ON \FALSE
|
||||
FSET? UNOPENED-NUT,OPENBIT /FALSE
|
||||
PRINTR "Even your full weight is insufficient to crack the shell (you lightweight you)."
|
||||
|
||||
|
||||
.FUNCT NUT-SHELL-F
|
||||
EQUAL? PRSA,V?CLOSE \FALSE
|
||||
PRINT YOU-CANT
|
||||
PRINTR "reclose the shell! Don't fret, though. Instead, remember that old Miznian proverb: ""It's no use crying over cracked nutshells."""
|
||||
|
||||
|
||||
.FUNCT NUT-F
|
||||
EQUAL? PRSA,V?EAT \FALSE
|
||||
REMOVE NUT
|
||||
CALL2 VISIBLE?,JESTER
|
||||
ZERO? STACK /?CCL6
|
||||
ZERO? NUT-SHOWN /?CCL9
|
||||
SET 'NUT-EATEN,TRUE-VALUE
|
||||
PRINTI """I'm very impressed; you passed my test! When you exit from the West Wing, I'll no longer be molesting."""
|
||||
ICALL1 J-EXITS
|
||||
CALL2 INC-SCORE,20
|
||||
RSTACK
|
||||
?CCL9: PRINTR "You swallow the walnut. ""I guess you don't win, place, or show!"" comments the jester enigmatically."
|
||||
?CCL6: PRINTR "The walnut is tasty, but hardly filling."
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "STARTUP"
|
||||
|
||||
.SEGMENT "CASTLE"
|
||||
|
||||
|
||||
.FUNCT I-PROLOGUE
|
||||
EQUAL? HERE,BANQUET-HALL \FALSE
|
||||
INC 'PROLOGUE-COUNTER
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
PRINTI " "
|
||||
EQUAL? PROLOGUE-COUNTER,1 \?CCL5
|
||||
FCLEAR DIMWIT,NDESCBIT
|
||||
PRINTR "Dimwit is seated at the dais. His loud voice carries across the crowded hall. ""Now that the statue is done, we must do something ceremonial. I have it! A dedication! We'll give everyone in the kingdom a year off and invite them to the Fublio Valley..."""
|
||||
?CCL5: EQUAL? PROLOGUE-COUNTER,2 \?CCL7
|
||||
PRINTR "Dimwit is ranting at his advisors. ""There's not enough in the royal treasury to build my new continent, Lord Feepness? Then we'll increase the tax levy! It's only 98%! That still leaves two percent!""
|
||||
""With all deference, your Lordship, people are refusing to pay even the 98%. Your decree, 'Anyone withholding payment shall be killed along with everyone they've ever met' simply isn't working. If you increase it to 100%, the people..."""
|
||||
?CCL7: EQUAL? PROLOGUE-COUNTER,3 \?CCL9
|
||||
ICALL2 DEQUEUE,I-TAKE-OBJECT
|
||||
ICALL2 DEQUEUE,I-GIVE-OBJECT
|
||||
MOVE MEGABOZ,HERE
|
||||
SET 'PROLOGUE-NOVICE-COUNTER,6
|
||||
PRINTR """How about this?"" shouts Dimwit with his mouth full of dragon meat. ""I'll adopt everyone in the kingdom... and then I'll announce that they've been naughty and I've cut off their allowance! It's inspired! Lord Feepness, draw up the proclam...""
|
||||
Dimwit is interrupted by an explosion of billowing smoke in the center of the hall. A gaunt, bearded man strides forth from the smoke!"
|
||||
?CCL9: EQUAL? PROLOGUE-COUNTER,4 \?CCL11
|
||||
MOVE PARCHMENT,MEGABOZ
|
||||
SET 'PROLOGUE-NOVICE-COUNTER,7
|
||||
PRINTR """Show me the one responsible for the statue!"" bellows the newcomer. ""The statue that now darkens Fublio!"" Every head silently turns toward Dimwit, whose delight at the pyrotechnics is now tinged by fear. ""Go away,"" orders Dimwit, waving a shaky hand at the stranger. ""This is a private function.""
|
||||
Ignoring the order, the newcomer paces forward, until he is standing almost next to you. A scrap of parchment protrudes from his pocket. ""My favorite grove of shade trees now lies beneath the toe of that cursed statue! No man, be he peasant or king, crosses Megaboz the Magnificent!"" He raises his arms, and every guest who knows how dangerous an angry wizard can be begins diving under the tables."
|
||||
?CCL11: EQUAL? PROLOGUE-COUNTER,5 \?CCL13
|
||||
PRINTI """Dimwit, thy kingship is a mockery of all worldly values! I curse your life! I curse your family! And I curse your Empire!"" Sheets of power begin spewing from his fingertips. ""Frobnitz! Frobnosia! Prob Fset Cond! Zmemqb Intbl Foo!"" As the last word is spoken, the wizard turns into a vast fireball which explodes outward, searing everything in its path"
|
||||
ZERO? UNDER-TABLE \?CCL16
|
||||
CALL2 JIGS-UP,STR?264
|
||||
RSTACK
|
||||
?CCL16: REMOVE MEGABOZ
|
||||
FCLEAR PARCHMENT,NDESCBIT
|
||||
MOVE PARCHMENT,HERE
|
||||
MOVE CAULDRON,HERE
|
||||
SET 'PROLOGUE-NOVICE-COUNTER,8
|
||||
PRINTR ". Then, silence.
|
||||
You slowly open your eyes, and where last you saw Megaboz, there now sits a huge black cauldron, bubbling and roiling and spewing noisome fumes. All eyes are transfixed on the incredible cauldron; you seem to be the only one who notices the parchment scrap which Megaboz has dropped on the stone floor, just beyond your reach."
|
||||
?CCL13: EQUAL? PROLOGUE-COUNTER,6 \?CCL18
|
||||
SET 'PROLOGUE-NOVICE-COUNTER,9
|
||||
PRINTR "Many of the guests are burned and dying. This doesn't seem to bother Dimwit much, but he does seem concerned by the bubbling cauldron. He summons his court magicians, who huddle about the cauldron, sampling the brew, casting exploratory spells, studying the words of Megaboz's spell, and whispering among themselves.
|
||||
Finally, they seem to reach an agreement. Combining their powers, the magicians chant a long and mysterious spell. Then, drained of energy, they turn to Dimwit."
|
||||
?CCL18: EQUAL? PROLOGUE-COUNTER,7 \FALSE
|
||||
PRINTI """We have done our best, your Lordship,"" begins the chief magician, ""but the spell of Megaboz is a mighty one indeed. We delayed its effects for 94 years, but after that time, this castle -- in fact, all the eastlands -- will be destroyed.""
|
||||
Dimwit shrugs. ""Big deal! I won't be around in 94 years!""
|
||||
""Truer than you think,"" continues the chief magician. ""There's more to the Curse. Lordship, you and your eleven siblings are doomed!""
|
||||
""Doomed?"" whines Dimwit. ""As in dead? That's not fair! When?""
|
||||
""Moonrise, perhaps a bit later..."" The king lurches suddenly and collapses onto his dinner. ""...perhaps a bit sooner.""
|
||||
Dimwit's personal physician rushes to the stricken king, and then looks solemnly at the assembled guests. ""The king is dead!"""
|
||||
CRLF
|
||||
ICALL2 DEQUEUE,I-PROLOGUE
|
||||
SET 'MOVES,0
|
||||
SET 'CLOCK-WAIT,TRUE-VALUE
|
||||
IN? PARCHMENT,PROTAGONIST \?CCL23
|
||||
MOVE PARCHMENT,GREAT-HALL
|
||||
JUMP ?CND21
|
||||
?CCL23: REMOVE PARCHMENT
|
||||
?CND21: ICALL1 STOP
|
||||
ICALL2 ROB,PROTAGONIST
|
||||
REMOVE DIMWIT
|
||||
REMOVE HELLHOUND-BONES
|
||||
REMOVE ROC-TERIYAKI
|
||||
REMOVE CAKE
|
||||
REMOVE KEG
|
||||
REMOVE LINEN
|
||||
MOVE UNOPENED-NUT,ROOT-CELLAR
|
||||
MOVE STRAW,SCULLERY
|
||||
MOVE CALENDAR,GREAT-HALL
|
||||
MOVE PROCLAMATION,ENTRANCE-HALL
|
||||
FCLEAR BANQUET-HALL,TOUCHBIT
|
||||
FCLEAR SCULLERY,TOUCHBIT
|
||||
FCLEAR KITCHEN,TOUCHBIT
|
||||
FCLEAR ROOT-CELLAR,ONBIT
|
||||
FCLEAR WINE-CELLAR,ONBIT
|
||||
SET 'UNDER-TABLE,FALSE-VALUE
|
||||
REMOVE TABLES
|
||||
MOVE CROWN,TREASURE-CHEST
|
||||
FSET CROWN,TAKEBIT
|
||||
FCLEAR CROWN,NDESCBIT
|
||||
MOVE ROBE,TRUNK
|
||||
FSET ROBE,TAKEBIT
|
||||
RANDOM 12
|
||||
SUB STACK,1 >MID-NAME-NUM
|
||||
RANDOM 2400 >DIAL-NUMBER
|
||||
RANDOM 7
|
||||
SUB STACK,1
|
||||
GET SLAB-TABLE,STACK >HOLEY-SLAB
|
||||
REMOVE BANQUET-FOOD
|
||||
CRLF
|
||||
CRLF
|
||||
ICALL1 HIT-ANY-KEY
|
||||
ICALL1 TITLE-SCREEN
|
||||
INPUT 1
|
||||
ICALL1 MOUSE-INPUT?
|
||||
SET 'CURRENT-SPLIT,TEXT-WINDOW-PIC-LOC
|
||||
ICALL1 V-$REFRESH
|
||||
ICALL1 V-VERSION
|
||||
HLIGHT H-BOLD
|
||||
CRLF
|
||||
PRINTI "94 YEARS LATER"
|
||||
PRINT ELLIPSIS
|
||||
HLIGHT H-NORMAL
|
||||
ICALL2 MARGINAL-PIC,MAIN-LETTER
|
||||
DIROUT D-SCREEN-OFF
|
||||
PRINTC 89
|
||||
DIROUT D-SCREEN-ON
|
||||
PRINTI "ou awake on a hard stone floor, sorting the chaotic images from yesterday: thousands of Flatheadians fleeing the castle, the last of the royal guard attempting to hold off the looters, pathetic attempts by charlatans to forestall the Curse, and a rowdy party as the remaining peasants broke into the wine cellars"
|
||||
PRINT ELLIPSIS
|
||||
CALL2 GOTO,GREAT-HALL
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT I-TAKE-OBJECT
|
||||
EQUAL? HERE,BANQUET-HALL \?CCL3
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
IN? CAKE,PROTAGONIST \?CCL6
|
||||
REMOVE CAKE
|
||||
PRINTR " A head waiter relieves you of the huge cake and delivers it to Dimwit, who claps with delight at his huge private pastry."
|
||||
?CCL6: IN? KEG,PROTAGONIST \FALSE
|
||||
REMOVE KEG
|
||||
PRINTR " A sommelier grabs the wine keg and bustles across the crowded hall."
|
||||
?CCL3: EQUAL? HERE,KITCHEN \?CCL10
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
IN? LINEN,PROTAGONIST \?CCL13
|
||||
REMOVE LINEN
|
||||
PRINTR " ""Finally,"" gasps one of the head servants, snatching the linen and dashing off."
|
||||
?CCL13: IN? ROC-TERIYAKI,PROTAGONIST \FALSE
|
||||
REMOVE ROC-TERIYAKI
|
||||
PRINTR " A cook grabs the tray. ""Not well-done enough? Those slobs wouldn't know good roc teriyaki if it flew up and bit them on the..."" The rest of the cook's comment is lost amidst the din of the kitchen."
|
||||
?CCL10: EQUAL? HERE,SCULLERY \FALSE
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
IN? HELLHOUND-BONES,PROTAGONIST \FALSE
|
||||
REMOVE HELLHOUND-BONES
|
||||
PRINTR " A scrubwoman grabs the platter, dumps the bones down a chute, and tosses the platter into a scrub basin."
|
||||
|
||||
|
||||
.FUNCT I-GIVE-OBJECT
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
PRINTI " "
|
||||
EQUAL? HERE,BANQUET-HALL \?CCL3
|
||||
IN? HELLHOUND-BONES,PROTAGONIST \?CCL6
|
||||
SET 'PROLOGUE-NOVICE-COUNTER,1
|
||||
PRINTR """I thought I told you to take that platter into the scullery!"""
|
||||
?CCL6: IN? ROC-TERIYAKI,PROTAGONIST \?CCL8
|
||||
SET 'PROLOGUE-NOVICE-COUNTER,4
|
||||
PRINTR """Well? Get that appetizer back to the kitchen!"""
|
||||
?CCL8: IN? LINEN,PROTAGONIST \?CCL10
|
||||
SET 'PROLOGUE-NOVICE-COUNTER,4
|
||||
PRINTR "One of the other servants looks appalled and nods you eastward. ""Clean linen to the kitchen, imbecile!"""
|
||||
?CCL10: FSET? HELLHOUND-BONES,TOUCHBIT \?CCL12
|
||||
MOVE ROC-TERIYAKI,PROTAGONIST
|
||||
SET 'PROLOGUE-NOVICE-COUNTER,4
|
||||
PRINTR "A tray of roc teriyaki is dumped into your arms. ""This appetizer is undercooked! Bring it back to the kitchen!"" You are nudged eastward."
|
||||
?CCL12: MOVE HELLHOUND-BONES,PROTAGONIST
|
||||
FSET HELLHOUND-BONES,TOUCHBIT
|
||||
ICALL2 THIS-IS-IT,HELLHOUND-BONES
|
||||
SET 'PROLOGUE-NOVICE-COUNTER,1
|
||||
PRINTR "Someone thrusts a platter of hellhound bones into your hands. ""Bring this to the scullery, servant!"" An insistent finger points northeast."
|
||||
?CCL3: EQUAL? HERE,KITCHEN \?CCL14
|
||||
IN? CAKE,PROTAGONIST /?CTR16
|
||||
IN? KEG,PROTAGONIST \?CCL17
|
||||
?CTR16: SET 'PROLOGUE-NOVICE-COUNTER,5
|
||||
PRINTI """Why haven't you brought that "
|
||||
IN? CAKE,PROTAGONIST \?CCL22
|
||||
PRINTI "cake"
|
||||
JUMP ?CND20
|
||||
?CCL22: PRINTI "keg"
|
||||
?CND20: PRINTR " out to the hall? The royal executioners are never too busy for an impudent servant..."""
|
||||
?CCL17: IN? HELLHOUND-BONES,PROTAGONIST \?CCL24
|
||||
SET 'PROLOGUE-NOVICE-COUNTER,10
|
||||
PRINTR """No! No! No!"" someone is shouting at you. ""Garbage and soiled dishware to the scullery!"" A strong arm spins you around to the north."
|
||||
?CCL24: FSET? CAKE,TOUCHBIT \?CCL26
|
||||
SET 'PROLOGUE-NOVICE-COUNTER,5
|
||||
MOVE KEG,PROTAGONIST
|
||||
PRINTR "A wine steward bounds up the stairs and deposits a huge wine keg onto your shoulder. ""For the banquet hall!"" he calls over his shoulder."
|
||||
?CCL26: FSET CAKE,TOUCHBIT
|
||||
MOVE CAKE,PROTAGONIST
|
||||
SET 'PROLOGUE-NOVICE-COUNTER,5
|
||||
PRINTR "A baker gives you an enormous cake in the shape of Double Fanucci trebled fromps. ""To the king's table,"" he orders, aiming you westward."
|
||||
?CCL14: EQUAL? HERE,SCULLERY \?CCL28
|
||||
IN? ROC-TERIYAKI,PROTAGONIST /?CTR30
|
||||
IN? CAKE,PROTAGONIST /?CTR30
|
||||
IN? KEG,PROTAGONIST \?CCL31
|
||||
?CTR30: PRINTI """Idiot, that goes to the "
|
||||
IN? ROC-TERIYAKI,PROTAGONIST \?CCL37
|
||||
SET 'PROLOGUE-NOVICE-COUNTER,2
|
||||
PRINTI "kitchen"
|
||||
JUMP ?CND35
|
||||
?CCL37: SET 'PROLOGUE-NOVICE-COUNTER,11
|
||||
PRINTI "banquet hall"
|
||||
?CND35: PRINTI ". Where do we get our servants, the local madhouse?"" An impatient finger points south"
|
||||
IN? ROC-TERIYAKI,PROTAGONIST /?CND38
|
||||
PRINTI "west"
|
||||
?CND38: PRINT PERIOD-CR
|
||||
RTRUE
|
||||
?CCL31: IN? LINEN,PROTAGONIST \?CCL41
|
||||
SET 'PROLOGUE-NOVICE-COUNTER,2
|
||||
PRINTR """When I give an order, servant, I mean NOW!"" The force of the voice is almost enough to propel you southward."
|
||||
?CCL41: MOVE LINEN,PROTAGONIST
|
||||
SET 'PROLOGUE-NOVICE-COUNTER,2
|
||||
PRINTR "Someone drops a load of monogrammed napkins into your arms and pushes you toward the south. ""Bring these to the kitchen! They're running low!"""
|
||||
?CCL28: CALL2 JIGS-UP,STR?265
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT SERVANT-ITEM-F
|
||||
EQUAL? PRSA,V?THROW,V?DROP \?CCL3
|
||||
PRINTR "Recalling yesterday's execution of ninety-seven unsatisfactory servants, you change your mind."
|
||||
?CCL3: EQUAL? PRSA,V?CUT \?CCL5
|
||||
EQUAL? PRSO,CAKE \?CCL5
|
||||
ICALL PERFORM,V?DROP,PRSO
|
||||
RTRUE
|
||||
?CCL5: EQUAL? PRSA,V?DRINK,V?BITE,V?EAT \FALSE
|
||||
EQUAL? PRSO,ROC-TERIYAKI \?CCL12
|
||||
PRINTR "But it's undercooked!"
|
||||
?CCL12: EQUAL? PRSO,HELLHOUND-BONES \?CCL14
|
||||
PRINT THERES-NOTHING
|
||||
PRINTR "left but bones."
|
||||
?CCL14: ICALL PERFORM,V?DROP,PRSO
|
||||
RTRUE
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT PARCHMENT-F
|
||||
EQUAL? PRSA,V?WALK-TO \?CCL3
|
||||
ZERO? UNDER-TABLE /?CCL3
|
||||
ICALL2 PERFORM,V?STAND
|
||||
RTRUE
|
||||
?CCL3: EQUAL? PRSA,V?READ \FALSE
|
||||
CALL2 RUNNING?,I-PROLOGUE
|
||||
ZERO? STACK \?CND8
|
||||
PRINTI "The parchment has been in your family for generations, and is now yellowed with age. Family lore claims this parchment was acquired by an ancestor who served in Dimwit's court, and dates from the very day that the Curse of Megaboz was cast! "
|
||||
?CND8: PRINTR "[You can find this scrap of parchment in your ZORK ZERO package.]"
|
||||
|
||||
|
||||
.FUNCT DIMWIT-F,ARG
|
||||
EQUAL? ARG,M-WINNER \?CCL3
|
||||
PRINTI "One of the King's personal attendants gives you a bone-jarring mind-numbing smack on the side of your head as you attempt to speak to the King."
|
||||
CRLF
|
||||
CALL1 STOP
|
||||
RSTACK
|
||||
?CCL3: EQUAL? PRSA,V?RESEARCH \?CCL5
|
||||
CALL PICTURED-ENTRY,DIMWIT-ILL,STR?269
|
||||
RSTACK
|
||||
?CCL5: EQUAL? PRSA,V?EXAMINE \?CCL7
|
||||
PRINTR "From his gaudy crown to his 369 course meal, Dimwit is the very model of excessiveness."
|
||||
?CCL7: EQUAL? PRSA,V?MUNG,V?KICK,V?KILL \FALSE
|
||||
PRINTR "You'd never get past his legion of personal guards."
|
||||
|
||||
|
||||
.FUNCT G-DIMWIT-F,TBL,F
|
||||
GET F,6
|
||||
EQUAL? STACK,W?STATUE \?CCL3
|
||||
CALL2 RUNNING?,I-PROLOGUE
|
||||
ZERO? STACK /FALSE
|
||||
RETURN DIMWIT-STATUE
|
||||
?CCL3: GET F,6
|
||||
EQUAL? STACK,W?PAINTING /FALSE
|
||||
RETURN DIMWIT
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "STARTUP"
|
||||
|
||||
|
||||
.FUNCT TABLES-F
|
||||
EQUAL? PRSA,V?EXAMINE \?CCL3
|
||||
PRINTR "The tables are slathered with food and bones and dirty platters and puddles or wine and even a few sleeping bodies. Royal guests don't tend to have the best manners."
|
||||
?CCL3: EQUAL? PRSA,V?HIDE,V?CRAWL-UNDER \?CCL5
|
||||
ZERO? UNDER-TABLE /?CCL8
|
||||
PRINT LOOK-AROUND
|
||||
RTRUE
|
||||
?CCL8: SET 'UNDER-TABLE,TRUE-VALUE
|
||||
SET 'OLD-HERE,FALSE-VALUE
|
||||
PRINTR "You are now under the table."
|
||||
?CCL5: EQUAL? PRSA,V?EXIT \FALSE
|
||||
ZERO? UNDER-TABLE /FALSE
|
||||
SET 'PRSO,FALSE-VALUE
|
||||
CALL1 V-STAND
|
||||
RSTACK
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "CASTLE"
|
||||
|
||||
|
||||
.FUNCT CAULDRON-F,CAULDRON-SCORE
|
||||
EQUAL? PRSA,V?CLOSE \?CCL3
|
||||
PRINTR "No lid."
|
||||
?CCL3: EQUAL? PRSA,V?EXAMINE \?CCL5
|
||||
PRINTI "The cauldron is "
|
||||
FSET? OUTER-GATE,OPENBIT \?CCL8
|
||||
PRINTR "cold and empty!"
|
||||
?CCL8: ZERO? TIME-STOPPED /?CCL10
|
||||
PRINTR "surrounded by unmoving clouds of smoke!"
|
||||
?CCL10: DIV NUMBER-OF-ITEMS,2
|
||||
GET CAULDRON-DESCS,STACK
|
||||
PRINT STACK
|
||||
PRINTR "."
|
||||
?CCL5: EQUAL? PRSA,V?SMELL \?CCL12
|
||||
PRINTR "Phew!!!"
|
||||
?CCL12: EQUAL? PRSA,V?ENTER,V?DRINK-FROM,V?DRINK \?CCL14
|
||||
PRINTR "As you near the cauldron, acrid fumes drive you back."
|
||||
?CCL14: EQUAL? PRSA,V?LOOK-INSIDE \?CCL16
|
||||
ZERO? TIME-STOPPED /?CCL19
|
||||
ICALL PERFORM,V?EXAMINE,CAULDRON
|
||||
RTRUE
|
||||
?CCL19: PRINTR "All you can see is churning smoke."
|
||||
?CCL16: EQUAL? PRSA,V?REACH-IN,V?SEARCH \?CCL21
|
||||
PRINTR "You feel nothing within the cauldron, but after you withdraw your hand it tingles maddeningly for a few moments."
|
||||
?CCL21: EQUAL? PRSA,V?PUT \FALSE
|
||||
CALL2 RUNNING?,I-PROLOGUE
|
||||
ZERO? STACK /?CCL26
|
||||
REMOVE PRSO
|
||||
PRINTI "There is no apparent effect as"
|
||||
ICALL1 TPRINT-PRSO
|
||||
PRINTR " vanishes into the cauldron."
|
||||
?CCL26: ZERO? TIME-STOPPED /?CND24
|
||||
MOVE PRSO,HERE
|
||||
PRINTI "As though there were now an invisible bubble around the cauldron,"
|
||||
ICALL1 TPRINT-PRSO
|
||||
PRINTR " slides away from it and lands on the floor."
|
||||
?CND24: PRINTI "With a puff of magically charged smoke,"
|
||||
ICALL1 TPRINT-PRSO
|
||||
PRINTI " vanishes amidst the vapors. The cauldron's level of activity seems to increase"
|
||||
EQUAL? PRSO,CUP \?CND28
|
||||
IN? POTION,CUP \?CND28
|
||||
REMOVE POTION
|
||||
?CND28: CALL2 PUT-ITEM-IN-CAULDRON,PRSO >CAULDRON-SCORE
|
||||
FSET? PRSO,MAGICBIT /?CCL34
|
||||
PRINTI " momentarily"
|
||||
JUMP ?CND32
|
||||
?CCL34: MOD NUMBER-OF-ITEMS,2
|
||||
ZERO? STACK \?CND32
|
||||
PRINTI "; it is now "
|
||||
DIV NUMBER-OF-ITEMS,2
|
||||
GET CAULDRON-DESCS,STACK
|
||||
PRINT STACK
|
||||
?CND32: PRINTC 46
|
||||
EQUAL? NUMBER-OF-ITEMS,24 \?CND36
|
||||
ZERO? CAULDRON-MUNGED \?CND36
|
||||
ICALL2 DEQUEUE,I-JESTER
|
||||
FCLEAR GUTTERING-TORCH,ONBIT
|
||||
FCLEAR GUTTERING-TORCH,FLAMEBIT
|
||||
FCLEAR FLICKERING-TORCH,ONBIT
|
||||
FCLEAR FLICKERING-TORCH,FLAMEBIT
|
||||
FSET CLOSET-REBUS-BUTTON,TOUCHBIT
|
||||
PUTP CLOSET-REBUS-BUTTON,P?SDESC,STR?270
|
||||
FSET BASEMENT-REBUS-BUTTON,TOUCHBIT
|
||||
PUTP BASEMENT-REBUS-BUTTON,P?SDESC,STR?270
|
||||
FCLEAR IRON-MAIDEN,OPENBIT
|
||||
FCLEAR SNAKE-PIT,OPENBIT
|
||||
FCLEAR WATER-CHAMBER,OPENBIT
|
||||
SET 'TIME-STOPPED,TRUE-VALUE
|
||||
PRINTI " Suddenly, the smoke stops swirling; in fact, everything in sight has ground to a halt. It is as if time itself has stopped. You don't seem to be affected, however."
|
||||
IN? JESTER,HERE \?CND36
|
||||
ICALL1 REMOVE-J
|
||||
PRINTI " In addition, the jester has vanished."
|
||||
?CND36: CRLF
|
||||
CALL2 INC-SCORE,CAULDRON-SCORE
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT PUT-ITEM-IN-CAULDRON,OBJ,X,N,CAULDRON-SCORE
|
||||
FIRST? OBJ >X /?PRG2
|
||||
?PRG2: ZERO? X /?REP3
|
||||
NEXT? X >N /?BOGUS7
|
||||
?BOGUS7: FSET? X,NDESCBIT /?CND4
|
||||
CALL2 PUT-ITEM-IN-CAULDRON,X
|
||||
ADD CAULDRON-SCORE,STACK >CAULDRON-SCORE
|
||||
?CND4: SET 'X,N
|
||||
JUMP ?PRG2
|
||||
?REP3: FSET? OBJ,MAGICBIT \?CCL12
|
||||
REMOVE OBJ
|
||||
INC 'NUMBER-OF-ITEMS
|
||||
ADD CAULDRON-SCORE,5 >CAULDRON-SCORE
|
||||
GETP OBJ,P?VALUE
|
||||
EQUAL? STACK,12 \?CND10
|
||||
ADD CAULDRON-SCORE,12 >CAULDRON-SCORE
|
||||
RETURN CAULDRON-SCORE
|
||||
?CCL12: EQUAL? OBJ,LARGE-VIAL \?CCL17
|
||||
REMOVE LARGE-VIAL-WATER
|
||||
SET 'LARGE-VIAL-GLOOPS,0
|
||||
JUMP ?CND15
|
||||
?CCL17: EQUAL? OBJ,SMALL-VIAL \?CND15
|
||||
REMOVE SMALL-VIAL-WATER
|
||||
SET 'SMALL-VIAL-GLOOPS,0
|
||||
?CND15: FCLEAR OBJ,ONBIT
|
||||
ICALL QUEUE,I-CAULDRON,3
|
||||
EQUAL? OBJ,NUT \?CCL20
|
||||
IN? NUT,UNOPENED-NUT /?CND19
|
||||
?CCL20: MOVE OBJ,MEGABOZ
|
||||
?CND19: EQUAL? PRSO,PERCH \?CND23
|
||||
SET 'REMOVED-PERCH-LOC,MEGABOZ
|
||||
?CND23: SUB CAULDRON-SCORE,5 >CAULDRON-SCORE
|
||||
SET 'CAULDRON-MUNGED,TRUE-VALUE
|
||||
?CND10: RETURN CAULDRON-SCORE
|
||||
|
||||
|
||||
.FUNCT I-CAULDRON,X,TWO
|
||||
FIRST? MEGABOZ \FALSE
|
||||
IN? PERCH,MEGABOZ \?CND1
|
||||
SET 'REMOVED-PERCH-LOC,FALSE-VALUE
|
||||
?CND1: EQUAL? HERE,BANQUET-HALL \?CND5
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
PRINTI " With a startling belch of green flame and vile-smelling smoke, the cauldron regurgitates"
|
||||
FIRST? MEGABOZ >X \?CND7
|
||||
NEXT? X \?CND7
|
||||
SET 'TWO,TRUE-VALUE
|
||||
?CND7: ICALL D-CONTENTS,MEGABOZ,2
|
||||
ZERO? TWO /?CCL13
|
||||
PRINTI " They "
|
||||
JUMP ?CND11
|
||||
?CCL13: PRINTI " It "
|
||||
?CND11: RANDOM 100
|
||||
LESS? 15,STACK /?CCL16
|
||||
ZERO? TWO \?CCL16
|
||||
GETP X,P?SIZE
|
||||
GRTR? STACK,4 \?CCL16
|
||||
ICALL2 JIGS-UP,STR?284
|
||||
JUMP ?CND5
|
||||
?CCL16: ZERO? TWO /?CCL22
|
||||
PRINTI "whiz"
|
||||
JUMP ?CND20
|
||||
?CCL22: PRINTI "whizzes"
|
||||
?CND20: PRINTI " past your ear with alarming velocity."
|
||||
?CND5: ICALL ROB,MEGABOZ,BANQUET-HALL
|
||||
EQUAL? HERE,BANQUET-HALL \FALSE
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "STARTUP"
|
||||
|
||||
|
||||
.FUNCT MEGABOZ-F,ARG
|
||||
EQUAL? ARG,M-OBJDESC,M-OBJDESC? \?CCL3
|
||||
EQUAL? ARG,M-OBJDESC? /TRUE
|
||||
PRINTI " An angry wizard stands defiantly in the center of the hall."
|
||||
IN? PARCHMENT,MEGABOZ \TRUE
|
||||
PRINTI " A scrap of parchment sticks out from a pocket of his robe."
|
||||
RTRUE
|
||||
?CCL3: EQUAL? ARG,M-WINNER /?CTR8
|
||||
EQUAL? PRSA,V?TELL \?CCL9
|
||||
?CTR8: PRINTI "Megaboz ignores you."
|
||||
CRLF
|
||||
RETURN 2
|
||||
?CCL9: EQUAL? PRSA,V?RESEARCH \?CCL15
|
||||
CALL PICTURED-ENTRY,MEGABOZ-ILL,MEGABOZ-TEXT
|
||||
RSTACK
|
||||
?CCL15: EQUAL? PRSA,V?EXAMINE \?CCL17
|
||||
PRINTR "Even the most ignorant lay observer can see that the gaunt man is a powerful mage. His wizardly robe and cap crackle with magical energy, and his darting eyes seem to see inside everyone he looks at."
|
||||
?CCL17: EQUAL? PRSA,V?KILL,V?KISS,V?KICK /?PRD21
|
||||
EQUAL? PRSA,V?MUNG \FALSE
|
||||
?PRD21: EQUAL? PRSO,MEGABOZ \FALSE
|
||||
CALL2 JIGS-UP,STR?285
|
||||
RSTACK
|
||||
|
||||
.SEGMENT "CASTLE"
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.ENDI
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,18 @@
|
|||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT PEEK-PSTACK,S,OFFS,N,VAL
|
||||
?PRG1: POP S >VAL
|
||||
PUSH VAL
|
||||
INC 'N
|
||||
DLESS? 'OFFS,0 \?PRG1
|
||||
?PRG5: DLESS? 'N,0 /?REP6
|
||||
POP
|
||||
XPUSH STACK,S /?PRG5
|
||||
JUMP ?PRG5
|
||||
?REP6: RETURN VAL
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.ENDI
|
|
@ -0,0 +1,116 @@
|
|||
"PSTACK file for NEW PARSER
|
||||
Copyright (C) 1988 Infocom, Inc. All rights reserved."
|
||||
|
||||
<ZZPACKAGE "PSTACK">
|
||||
|
||||
<ENTRY ALLOCATE-PSTACK MAX-PSTACK-SIZE PUSH-PSTACK POP-PSTACK
|
||||
PEEK-PSTACK PSTACK FLUSH-PSTACK PSTACK-PTR
|
||||
CLEAR-PSTACK PSTACK-DATA PSTACK-EMPTY?>
|
||||
|
||||
<USE "NEWSTRUC">
|
||||
|
||||
<FILE-FLAGS ;MDL-ZIL? ;ZAP-TO-SOURCE-DIRECTORY?>
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
<MSETG MAX-PSTACK-SIZE 21 ;32> ;"STATE & DATA could be 11"
|
||||
|
||||
<NEWTYPE PSTACK TABLE>
|
||||
|
||||
<DEFMAC ALLOCATE-PSTACK () <ITABLE ,MAX-PSTACK-SIZE 0>>
|
||||
|
||||
<DEFMAC PSTACK-PTR ('S "OPT" 'NEW)
|
||||
<COND (<ASSIGNED? NEW>
|
||||
<FORM ZPUT .S 0 .NEW>)
|
||||
(T
|
||||
<CHTYPE [<FORM ZGET .S 0> FIX] ADECL>)>>
|
||||
|
||||
<DEFMAC PSTACK-EMPTY? ('PSTACK)
|
||||
<COND (<CHECK-VERSION? YZIP>
|
||||
<FORM EQUAL? <- ,MAX-PSTACK-SIZE 1> <FORM PSTACK-PTR .PSTACK>>)
|
||||
(T
|
||||
<FORM 0? <FORM PSTACK-PTR .PSTACK>>)>>
|
||||
|
||||
<DEFMAC CLEAR-PSTACK ('S)
|
||||
<COND (<CHECK-VERSION? YZIP>
|
||||
<FORM PSTACK-PTR <CHTYPE [.S PSTACK] ADECL> <- ,MAX-PSTACK-SIZE 1>>)
|
||||
(T
|
||||
<FORM PSTACK-PTR <CHTYPE [.S PSTACK] ADECL> 0>)>>
|
||||
|
||||
<DEFINE20 PRINT-PSTACK (S:PSTACK "OPT" (OUTCHAN:CHANNEL .OUTCHAN)
|
||||
"AUX" (P <PSTACK-PTR .S>))
|
||||
<PRINT-MANY .OUTCHAN PRINC
|
||||
"#PSTACK ["
|
||||
.P
|
||||
" [">
|
||||
<REPEAT ((D <ZREST .S 2>))
|
||||
<COND (<L=? .P 0> <RETURN>)>
|
||||
<PRIN1 <ZGET .D 0>>
|
||||
<PRINC " ">
|
||||
<SET D <ZREST .D 2>>
|
||||
<SET P <- .P 1>>>
|
||||
<PRINC "]]">>
|
||||
|
||||
<COND (<CHECK-VERSION? YZIP>
|
||||
<DEFMAC PUSH-PSTACK ('S 'OBJ) <FORM XPUSH .OBJ .S>>)
|
||||
(T
|
||||
<IF-P-DEBUGGING-PARSER
|
||||
<GLOBAL PSTACK-WARN:NUMBER 20>>
|
||||
|
||||
<ROUTINE PUSH-PSTACK (S:PSTACK OBJ "AUX" TMP)
|
||||
<SET TMP <+ 1 <PSTACK-PTR .S>>>
|
||||
<COND (<L=? ,MAX-PSTACK-SIZE .TMP>
|
||||
<P-NO-MEM-ROUTINE>
|
||||
<RFALSE>)>
|
||||
<IF-P-DEBUGGING-PARSER
|
||||
<COND (<L? ,PSTACK-WARN .TMP>
|
||||
<SETG PSTACK-WARN .TMP>
|
||||
<PRINTI "[PSTACK: ">
|
||||
<PRINTN <- ,MAX-PSTACK-SIZE .TMP>>
|
||||
<PRINTI " left!]|">)>>
|
||||
<PSTACK-PTR .S .TMP>
|
||||
<ZPUT .S .TMP .OBJ>
|
||||
.S>)>
|
||||
|
||||
<COND (<CHECK-VERSION? YZIP>
|
||||
<DEFMAC FLUSH-PSTACK ('S "OPT" ('N 1))
|
||||
<FORM FSTACK .N .S>>)
|
||||
(T
|
||||
<ROUTINE FLUSH-PSTACK (S:PSTACK "OPT" (N:FIX 1))
|
||||
<COND (<G? 0 <SET N <- <PSTACK-PTR .S> .N>>>
|
||||
<SET N 0>)>
|
||||
<PSTACK-PTR .S .N>
|
||||
.S>)>
|
||||
|
||||
<COND (<CHECK-VERSION? YZIP>
|
||||
<DEFMAC POP-PSTACK ('S "OPT" ('N 1))
|
||||
<COND (<1? .N>
|
||||
<FORM POP .S>)
|
||||
(T
|
||||
<FORM FSTACK .N .S>)>>)
|
||||
(T
|
||||
<ROUTINE POP-PSTACK (S:PSTACK "OPT" (N:FIX 1) "AUX" (OBJ <PEEK-PSTACK .S>))
|
||||
<COND (<NOT <0? .N>>
|
||||
<FLUSH-PSTACK .S .N>)>
|
||||
.OBJ>)>
|
||||
|
||||
<COND (<CHECK-VERSION? YZIP>
|
||||
<ROUTINE PEEK-PSTACK (S:PSTACK "OPT" (OFFS:FIX 0) "AUX" (N 0) VAL)
|
||||
<REPEAT ()
|
||||
<SET VAL <POP-PSTACK .S>>
|
||||
<PUSH .VAL>
|
||||
<INC N>
|
||||
<COND (<DLESS? OFFS 0>
|
||||
<RETURN>)>>
|
||||
<REPEAT ()
|
||||
<COND (<DLESS? N 0>
|
||||
<RETURN>)
|
||||
(T
|
||||
<PUSH-PSTACK .S <POP>>)>>
|
||||
.VAL>)
|
||||
(T
|
||||
<ROUTINE PEEK-PSTACK (S:PSTACK "OPT" (OFFS:FIX 0))
|
||||
<ZGET .S <- <PSTACK-PTR .S> .OFFS>>>)>
|
||||
|
||||
<END-SEGMENT>
|
||||
<ENDPACKAGE>
|
|
@ -0,0 +1,823 @@
|
|||
"SYNTAX for
|
||||
|
||||
ZORK ZERO (from Nord and Bert)
|
||||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<BUZZ PLEASE THIS THAT PRY HERE SOME FRONT>
|
||||
|
||||
;"the following make BODY-PARTS-HANDLER work"
|
||||
<VOC "MAN\'S" ADJ>
|
||||
<VOC "WOMAN\'S" ADJ>
|
||||
|
||||
<ADD-WORD "TOP" PARTICLE ;PREP> ;"for PUT X ON TOP OF Y"
|
||||
|
||||
<SYNONYM TO TOWARD>
|
||||
<SYNONYM WITH USING>
|
||||
<SYNONYM THROUGH THRU>
|
||||
<SYNONYM ON ONTO UPON ATOP>
|
||||
<SYNONYM OUT OUTSIDE>
|
||||
<SYNONYM IN INSIDE INTO>
|
||||
<SYNONYM UNDER BELOW BENEATH UNDERNEATH>
|
||||
<SYNONYM BEFORE NEAR BY NEXT>
|
||||
<SYNONYM AROUND ALONG>
|
||||
|
||||
<SYNONYM ALL BOTH EVERYTHING>
|
||||
|
||||
<SYNONYM NORTH N>
|
||||
<SYNONYM SOUTH S>
|
||||
<SYNONYM EAST E>
|
||||
<SYNONYM WEST W>
|
||||
<SYNONYM DOWN D DOWNSTAIRS BELOWDECKS>
|
||||
<SYNONYM UP U UPSTAIRS>
|
||||
<SYNONYM NW NORTHW NORTHWEST>
|
||||
<SYNONYM NE NORTHE NORTHEAST>
|
||||
<SYNONYM SW SOUTHW SOUTHWEST>
|
||||
<SYNONYM SE SOUTHE SOUTHEAST>
|
||||
|
||||
;"game commands"
|
||||
|
||||
<SYNTAX VERBOSE = V-VERBOSE>
|
||||
|
||||
<SYNTAX BRIEF = V-BRIEF>
|
||||
|
||||
<SYNTAX SUPERBRIEF = V-SUPERBRIEF>
|
||||
|
||||
<SYNTAX COLOR = V-COLOR>
|
||||
|
||||
<SYNTAX CREDITS = V-CREDITS>
|
||||
<VERB-SYNONYM CREDITS CREDIT>
|
||||
|
||||
<SYNTAX DIAGNOSE = V-DIAGNOSE>
|
||||
|
||||
<SYNTAX INVENTORY = V-INVENTORY>
|
||||
<VERB-SYNONYM INVENTORY I>
|
||||
|
||||
<SYNTAX MODE = V-MODE>
|
||||
|
||||
<SYNTAX QUIT = V-QUIT>
|
||||
<VERB-SYNONYM QUIT Q>
|
||||
|
||||
<SYNTAX RESTART = V-RESTART>
|
||||
|
||||
<SYNTAX RESTORE = V-RESTORE>
|
||||
|
||||
<SYNTAX SAVE = V-SAVE>
|
||||
|
||||
<SYNTAX UNDO = V-UNDO>
|
||||
|
||||
<SYNTAX SCORE = V-SCORE>
|
||||
<VERB-SYNONYM SCORE STATUS>
|
||||
|
||||
<SYNTAX NOTIFY = V-NOTIFY>
|
||||
|
||||
<SYNTAX SCRIPT = V-SCRIPT>
|
||||
|
||||
<SYNTAX UNSCRIPT = V-UNSCRIPT>
|
||||
|
||||
<SYNTAX VERSION = V-VERSION>
|
||||
|
||||
<SYNTAX \#RANDOM OBJECT = V-$RANDOM>
|
||||
|
||||
<SYNTAX \#COMMAND = V-$COMMAND>
|
||||
|
||||
<SYNTAX \#RECORD = V-$RECORD>
|
||||
|
||||
<SYNTAX \#UNRECORD = V-$UNRECORD>
|
||||
|
||||
<SYNTAX $REFRESH = V-$REFRESH>
|
||||
<VERB-SYNONYM $REFRESH REFRESH>
|
||||
|
||||
<SYNTAX $VERIFY = V-$VERIFY>
|
||||
<SYNTAX $VERIFY OBJECT = V-$VERIFY>
|
||||
<VERB-SYNONYM $VERIFY $VER>
|
||||
|
||||
;<SYNTAX $DEBUG = V-$DEBUG>
|
||||
|
||||
;<SYNTAX $SKIP = V-$SKIP>
|
||||
;<SYNTAX $SKIP OBJECT (EVERYWHERE) = V-$SKIP>
|
||||
|
||||
;"subtitle real verbs"
|
||||
|
||||
;<SYNTAX ANAGRAM OBJECT (EVERYWHERE) = V-ANAGRAM>
|
||||
|
||||
;<SYNTAX APPLAUD = V-APPLAUD>
|
||||
'<SYNTAX APPLAUD OBJECT = V-APPLAUD>
|
||||
;<VERB-SYNONYM APPLAUD CLAP>
|
||||
|
||||
;<SYNTAX APPLY OBJECT (HELD TAKE) = V-APPLY>
|
||||
;<SYNTAX APPLY OBJECT (HELD MANY) TO OBJECT = V-PUT-ON PRE-PUT>
|
||||
|
||||
<SYNTAX APPROACH OBJECT (EVERYWHERE) = V-WALK-TO>
|
||||
|
||||
<SYNTAX ASK OBJECT (FIND ACTORBIT) ABOUT OBJECT (EVERYWHERE) = V-ASK-ABOUT>
|
||||
<SYNTAX ASK OBJECT (FIND ACTORBIT) ON OBJECT (EVERYWHERE) = V-ASK-ABOUT>
|
||||
<SYNTAX ASK OBJECT (FIND ACTORBIT) FOR OBJECT (EVERYWHERE) = V-ASK-FOR>
|
||||
<SYNTAX ASK FOR OBJECT (EVERYWHERE) = V-ASK-NO-ONE-FOR>
|
||||
|
||||
<SYNTAX ATTACK OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-KILL>
|
||||
<SYNTAX ATTACK OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (HELD CARRIED HAVE) = V-KILL>
|
||||
<VERB-SYNONYM ATTACK KILL MURDER FIGHT SLAP STAB HIT STRIKE ;GORE ;SLAY>
|
||||
|
||||
<SYNTAX BEHEAD OBJECT (FIND ACTORBIT) = V-BEHEAD>
|
||||
|
||||
;<SYNTAX BEND OBJECT = V-BEND>
|
||||
;<VERB-SYNONYM BEND SPREAD>
|
||||
|
||||
<SYNTAX BITE OBJECT = V-BITE>
|
||||
|
||||
<SYNTAX BLOW IN OBJECT = V-INFLATE>
|
||||
<SYNTAX BLOW UP OBJECT = V-INFLATE>
|
||||
<SYNTAX BLOW OUT OBJECT (FIND ONBIT) = V-OFF PRE-TOUCH>
|
||||
|
||||
<SYNTAX BOARD OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-ENTER PRE-ENTER>
|
||||
<VERB-SYNONYM BOARD MOUNT>
|
||||
|
||||
<SYNTAX BURN OBJECT (FIND BURNBIT) = V-BURN PRE-TOUCH>
|
||||
<SYNTAX BURN UP OBJECT (FIND BURNBIT) = V-BURN PRE-TOUCH>
|
||||
<SYNTAX BURN OBJECT (FIND BURNBIT) WITH OBJECT (HAVE) = V-BURN PRE-TOUCH>
|
||||
<SYNTAX BURN UP OBJECT (FIND BURNBIT) WITH OBJECT (HAVE) = V-BURN PRE-TOUCH>
|
||||
|
||||
<SYNTAX BUY OBJECT (EVERYWHERE) = V-BUY>
|
||||
<SYNTAX BUY OBJECT (EVERYWHERE) FROM OBJECT = V-BUY>
|
||||
<VERB-SYNONYM BUY ORDER PURCHASE>
|
||||
|
||||
<SYNTAX CALL OBJECT (EVERYWHERE) = V-CALL>
|
||||
<SYNTAX CALL OUT OBJECT (EVERYWHERE) = V-CALL>
|
||||
<SYNTAX CALL FOR OBJECT (EVERYWHERE) = V-CALL>
|
||||
<SYNTAX CALL TO OBJECT (EVERYWHERE) = V-CALL>
|
||||
|
||||
<SYNTAX CATCH OBJECT (ON-GROUND IN-ROOM) = V-CATCH>
|
||||
<SYNTAX CATCH OBJECT (ON-GROUND IN-ROOM) IN OBJECT = V-CATCH>
|
||||
<SYNTAX CATCH OBJECT (ON-GROUND IN-ROOM) WITH OBJECT = V-CATCH>
|
||||
<VERB-SYNONYM CATCH TRAP>
|
||||
|
||||
<SYNTAX CIRCLE OBJECT = V-WALK-AROUND>
|
||||
|
||||
<SYNTAX CLIMB OBJECT (ON-GROUND IN-ROOM) = V-CLIMB>
|
||||
<SYNTAX CLIMB ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
|
||||
<SYNTAX CLIMB UP OBJECT (FIND KLUDGEBIT) (ON-GROUND IN-ROOM) = V-CLIMB-UP>
|
||||
<SYNTAX CLIMB DOWN OBJECT (FIND KLUDGEBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
|
||||
<SYNTAX CLIMB OUT OBJECT (FIND KLUDGEBIT) (ON-GROUND IN-ROOM) = V-EXIT>
|
||||
<SYNTAX CLIMB OFF OBJECT (FIND KLUDGEBIT) (ON-GROUND IN-ROOM) = V-EXIT>
|
||||
<SYNTAX CLIMB OVER OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-OVER>
|
||||
<SYNTAX CLIMB IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-ENTER PRE-ENTER>
|
||||
<SYNTAX CLIMB THROUGH OBJECT = V-ENTER PRE-ENTER>
|
||||
<SYNTAX CLIMB UNDER OBJECT = V-CRAWL-UNDER>
|
||||
<VERB-SYNONYM CLIMB SCALE>
|
||||
|
||||
<SYNTAX CLOSE OBJECT (FIND OPENBIT ;DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
= V-CLOSE PRE-TOUCH>
|
||||
<SYNTAX CLOSE OFF OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
|
||||
= V-OFF PRE-TOUCH>
|
||||
<SYNTAX CLOSE UP OBJECT (FIND KLUDGEBIT) = V-SHUT-UP PRE-SWITCH>
|
||||
<SYNTAX CLOSE OBJECT WITH OBJECT (FIND KEYBIT) (HAVE) = V-LOCK PRE-LOCK>
|
||||
<VERB-SYNONYM CLOSE SHUT SHUTTER>
|
||||
|
||||
<SYNTAX CONSULT OBJECT ABOUT OBJECT (EVERYWHERE) = V-SRESEARCH PRE-SWITCH>
|
||||
<SYNTAX CONSULT OBJECT ON OBJECT (EVERYWHERE) = V-SRESEARCH PRE-SWITCH>
|
||||
|
||||
<SYNTAX COUGH = V-COUGH>
|
||||
|
||||
<SYNTAX COUNT OBJECT (MANY) = V-COUNT PRE-COUNT>
|
||||
|
||||
<SYNTAX COVER OBJECT WITH OBJECT (HELD MANY) = V-SPUT-ON PRE-SWITCH>
|
||||
|
||||
<SYNTAX CRAWL UNDER OBJECT = V-CRAWL-UNDER>
|
||||
<SYNTAX CRAWL OUT OBJECT = V-EXIT>
|
||||
|
||||
<SYNTAX CROSS OBJECT = V-CROSS>
|
||||
<VERB-SYNONYM CROSS FORD>
|
||||
|
||||
<SYNTAX DATE = V-DATE>
|
||||
|
||||
<SYNTAX DECODE OBJECT = V-DECODE>
|
||||
<VERB-SYNONYM DECODE DECIPHER ANAGRAM>
|
||||
|
||||
;<SYNTAX DEFLATE OBJECT = V-DEFLATE>
|
||||
;<SYNTAX DEFLATE OBJECT WITH OBJECT (HAVE) = V-DEFLATE>
|
||||
;<VERB-SYNONYM DEFLATE POP>
|
||||
|
||||
<SYNTAX DEMOLISH OBJECT (ON-GROUND IN-ROOM) = V-MUNG PRE-TOUCH>
|
||||
<SYNTAX DEMOLISH OBJECT WITH OBJECT (HELD CARRIED TAKE) = V-MUNG PRE-TOUCH>
|
||||
<SYNTAX DEMOLISH OUT OBJECT (FIND KLUDGEBIT) = V-MUNG PRE-TOUCH>
|
||||
<SYNTAX DEMOLISH DOWN OBJECT = V-KILL>
|
||||
<SYNTAX DEMOLISH OFF OBJECT = V-MUNG PRE-TOUCH>
|
||||
<VERB-SYNONYM DEMOLISH DESTROY DAMAGE BREAK CRACK SMASH WRECK>
|
||||
|
||||
<SYNTAX DESCEND OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
|
||||
|
||||
;<SYNTAX DIG OBJECT = V-DIG>
|
||||
;<SYNTAX DIG IN OBJECT = V-DIG>
|
||||
;<SYNTAX DIG THROUGH OBJECT = V-DIG>
|
||||
;<SYNTAX DIG OBJECT = V-DIG> ;"added by SWG for debugging"
|
||||
<SYNTAX DIG OBJECT WITH OBJECT (HAVE) = V-DIG>
|
||||
<SYNTAX DIG UP OBJECT WITH OBJECT (HAVE) = V-DIG>
|
||||
<SYNTAX DIG IN OBJECT WITH OBJECT (HAVE) = V-DIG>
|
||||
<SYNTAX DIG THROUGH OBJECT WITH OBJECT (HAVE) = V-DIG>
|
||||
<SYNTAX DIG WITH OBJECT (HAVE) = V-DIG-WITH>
|
||||
|
||||
<SYNTAX DISEMBARK = V-EXIT>
|
||||
<SYNTAX DISEMBARK OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-EXIT>
|
||||
<SYNTAX DISEMBARK FROM OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-EXIT>
|
||||
<VERB-SYNONYM DISEMBARK DEBARK DISMOUNT EXIT DEPART WITHDRAW>
|
||||
|
||||
<SYNTAX DOFF OBJECT (MANY) = V-TAKE-OFF>
|
||||
|
||||
;<SYNTAX DRESS = V-DRESS>
|
||||
;<SYNTAX DRESS OBJECT = V-DRESS>
|
||||
|
||||
<SYNTAX DRINK OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-DRINK PRE-INGEST>
|
||||
<SYNTAX DRINK FROM OBJECT (HELD CARRIED) = V-DRINK-FROM PRE-INGEST>
|
||||
<SYNTAX DRINK OBJECT WITH OBJECT = V-DRINK-WITH PRE-INGEST>
|
||||
<SYNTAX DRINK FROM OBJECT WITH OBJECT = V-DRINK-WITH PRE-INGEST>
|
||||
<VERB-SYNONYM DRINK SIP>
|
||||
|
||||
<SYNTAX DROP OBJECT (HELD MANY HAVE) = V-DROP IDROP>
|
||||
<SYNTAX DROP OBJECT (HELD MANY) DOWN OBJECT = V-PUT PRE-PUT>
|
||||
<SYNTAX DROP OBJECT (HELD MANY) IN OBJECT = V-PUT PRE-PUT>
|
||||
<SYNTAX DROP OBJECT (HELD MANY) ON OBJECT = V-PUT-ON PRE-PUT>
|
||||
<SYNTAX DROP OBJECT (CARRIED) FROM OBJECT = V-THROW-FROM IDROP>
|
||||
<SYNTAX DROP OBJECT (CARRIED) OFF OBJECT = V-THROW-FROM IDROP>
|
||||
<SYNTAX DROP OBJECT (HELD MANY) OUT OBJECT = V-PUT-THROUGH IDROP>
|
||||
<SYNTAX DROP OBJECT (HELD MANY) THROUGH OBJECT = V-PUT-THROUGH IDROP>
|
||||
;<SYNTAX DROP OBJECT (HELD CARRIED) BEFORE OBJECT = V-PUT-NEAR IDROP>
|
||||
;<SYNTAX DROP OBJECT (HELD CARRIED) AT OBJECT = V-PUT-NEAR IDROP>
|
||||
<VERB-SYNONYM DROP DUMP RELEASE>
|
||||
|
||||
<SYNTAX EAT OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-EAT PRE-INGEST>
|
||||
;<SYNTAX EAT ON OBJECT = V-EAT PRE-INGEST>
|
||||
<VERB-SYNONYM EAT DEVOUR SWALLOW ;INGEST ;GOBBLE ;DINE>
|
||||
|
||||
<SYNTAX EMPTY OBJECT (HAVE TAKE) = V-EMPTY PRE-TOUCH>
|
||||
<SYNTAX EMPTY OUT OBJECT (HAVE TAKE) = V-EMPTY PRE-TOUCH>
|
||||
;<SYNTAX EMPTY OVER OBJECT (HAVE TAKE) = V-EMPTY PRE-TOUCH>
|
||||
<SYNTAX EMPTY OBJECT (HAVE TAKE) OVER OBJECT = V-EMPTY PRE-TOUCH>
|
||||
<SYNTAX EMPTY OBJECT (HAVE TAKE) ON OBJECT = V-EMPTY PRE-TOUCH>
|
||||
<SYNTAX EMPTY OBJECT (HAVE TAKE) IN OBJECT = V-EMPTY PRE-TOUCH>
|
||||
<SYNTAX EMPTY OBJECT (HAVE TAKE) TO OBJECT = V-EMPTY PRE-TOUCH>
|
||||
<SYNTAX EMPTY OBJECT (MANY) FROM OBJECT (HAVE TAKE) = V-EMPTY-FROM>
|
||||
<SYNTAX EMPTY OBJECT (MANY) OUT OBJECT (HAVE TAKE) = V-EMPTY-FROM>
|
||||
;<VERB-SYNONYM EMPTY TIP>
|
||||
|
||||
<SYNTAX ENTER = V-IN>
|
||||
<SYNTAX ENTER OBJECT = V-ENTER PRE-ENTER>
|
||||
|
||||
<SYNTAX EXAMINE OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-EXAMINE PRE-LOOK>
|
||||
<SYNTAX EXAMINE OBJECT IN OBJECT = V-MIRROR-LOOK>
|
||||
;<SYNTAX EXAMINE IN OBJECT (HELD CARRIED IN-ROOM ON-GROUND)
|
||||
= V-LOOK-INSIDE PRE-LOOK>
|
||||
;<SYNTAX EXAMINE ON OBJECT (HELD CARRIED IN-ROOM ON-GROUND)
|
||||
= V-LOOK-INSIDE PRE-LOOK>
|
||||
;<SYNTAX EXAMINE FOR OBJECT (EVERYWHERE) = V-FIND>
|
||||
<VERB-SYNONYM EXAMINE X INSPECT DESCRIBE STUDY OBSERVE WATCH>
|
||||
|
||||
<SYNTAX EXTINGUISH OBJECT (FIND ONBIT) = V-OFF PRE-TOUCH>
|
||||
<VERB-SYNONYM EXTINGUISH DEACTIVATE>
|
||||
|
||||
<SYNTAX FEED OBJECT (FIND ACTORBIT) = V-FEED>
|
||||
<SYNTAX FEED OBJECT (MANY HELD HAVE) TO OBJECT (FIND ACTORBIT) (ON-GROUND)
|
||||
= V-GIVE PRE-GIVE>
|
||||
<SYNTAX FEED OBJECT (FIND ACTORBIT) (ON-GROUND) OBJECT (MANY HELD HAVE)
|
||||
= V-SGIVE PRE-SWITCH>
|
||||
|
||||
<SYNTAX FILL OBJECT (HELD CARRIED HAVE) = V-FILL PRE-FILL>
|
||||
<SYNTAX FILL OBJECT (HELD CARRIED HAVE) WITH OBJECT = V-FILL PRE-FILL>
|
||||
<SYNTAX FILL OBJECT (HELD CARRIED HAVE) FROM OBJECT = V-FILL PRE-FILL>
|
||||
<SYNTAX FILL OBJECT (HELD CARRIED HAVE) IN OBJECT = V-FILL PRE-FILL>
|
||||
|
||||
<SYNTAX FIND OBJECT (EVERYWHERE) = V-FIND>
|
||||
<SYNTAX FIND OBJECT (EVERYWHERE) IN OBJECT = V-SSEARCH-OBJECT-FOR PRE-SWITCH>
|
||||
<VERB-SYNONYM FIND SEEK>
|
||||
|
||||
<SYNTAX FLY = V-FLY>
|
||||
<SYNTAX FLY OBJECT = V-FLY>
|
||||
|
||||
<SYNTAX FOLLOW OBJECT (EVERYWHERE) = V-FOLLOW>
|
||||
<VERB-SYNONYM FOLLOW PURSUE CHASE>
|
||||
|
||||
<SYNTAX HAND OBJECT (MANY HELD HAVE) (FIND TAKEBIT) TO OBJECT (FIND ACTORBIT) (ON-GROUND)
|
||||
= V-GIVE PRE-GIVE>
|
||||
<SYNTAX HAND OBJECT (FIND ACTORBIT) (ON-GROUND) OBJECT (MANY HELD HAVE)
|
||||
= V-SGIVE PRE-SWITCH>
|
||||
<SYNTAX HAND UP OBJECT (FIND KLUDGEBIT) = V-GIVE-UP>
|
||||
;<SYNTAX HAND BACK OBJECT (HELD CARRIED HAVE) = V-RETURN>
|
||||
;<SYNTAX HAND OBJECT (MANY HELD HAVE) BACK OBJECT (FIND ACTORBIT) (ON-GROUND)
|
||||
= V-GIVE PRE-GIVE>
|
||||
<VERB-SYNONYM HAND GIVE OFFER ;SELL ;DONATE ;EXTEND>
|
||||
|
||||
<SYNTAX HANG OBJECT (FIND ACTORBIT) = V-HANG>
|
||||
|
||||
<SYNTAX HEAR OBJECT = V-LISTEN PRE-LISTEN>
|
||||
|
||||
<SYNTAX HELLO = V-HELLO>
|
||||
<SYNTAX HELLO OBJECT = V-HELLO>
|
||||
<VERB-SYNONYM HELLO HI>
|
||||
|
||||
<SYNTAX HELP = V-HINT>
|
||||
<SYNTAX HELP OFF OBJECT (FIND KLUDGEBIT) = V-HINTS-NO>
|
||||
<SYNTAX HELP OBJECT = V-SAVE-SOMETHING>
|
||||
<VERB-SYNONYM HELP HINT HINTS CLUE CLUES INVISICLUES>
|
||||
|
||||
<SYNTAX HIDE UNDER OBJECT = V-HIDE>
|
||||
<SYNTAX HIDE BEHIND OBJECT = V-HIDE>
|
||||
|
||||
;<SYNTAX INFLATE OBJECT = V-INFLATE>
|
||||
|
||||
<SYNTAX JUMP = V-LEAP>
|
||||
<SYNTAX JUMP OBJECT = V-LEAP>
|
||||
<SYNTAX JUMP OVER OBJECT = V-LEAP>
|
||||
<SYNTAX JUMP ACROSS OBJECT = V-LEAP>
|
||||
<SYNTAX JUMP IN OBJECT = V-ENTER PRE-ENTER>
|
||||
<SYNTAX JUMP FROM OBJECT = V-LEAP-OFF>
|
||||
<SYNTAX JUMP OFF OBJECT = V-LEAP-OFF>
|
||||
<SYNTAX JUMP ON OBJECT = V-STAND-ON>
|
||||
;<SYNTAX JUMP ACROSS OBJECT = V-LEAP>
|
||||
<SYNTAX JUMP OUT OBJECT = V-LEAP-OFF>
|
||||
<SYNTAX JUMP THROUGH OBJECT = V-ENTER PRE-ENTER>
|
||||
<SYNTAX JUMP UP OBJECT (FIND KLUDGEBIT) = V-LEAP>
|
||||
<SYNTAX JUMP DOWN OBJECT (FIND KLUDGEBIT) = V-LEAP>
|
||||
<SYNTAX JUMP TO OBJECT = V-LEAP>
|
||||
<SYNTAX JUMP UNDER OBJECT = V-CRAWL-UNDER>
|
||||
<SYNTAX JUMP OUT OBJECT IN OBJECT = V-LEAP-OFF>
|
||||
<SYNTAX JUMP FROM OBJECT IN OBJECT = V-LEAP-OFF>
|
||||
<SYNTAX JUMP FROM OBJECT TO OBJECT = V-LEAP-OFF>
|
||||
<VERB-SYNONYM JUMP LEAP DIVE VAULT>
|
||||
|
||||
<SYNTAX KICK OBJECT = V-KICK>
|
||||
|
||||
<SYNTAX KISS OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-KISS PRE-TOUCH>
|
||||
|
||||
<SYNTAX KNOCK OBJECT = V-MUNG PRE-TOUCH>
|
||||
<SYNTAX KNOCK ON OBJECT (FIND DOORBIT) = V-KNOCK>
|
||||
<SYNTAX KNOCK AT OBJECT (FIND DOORBIT) = V-KNOCK>
|
||||
<SYNTAX KNOCK DOWN OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-KILL>
|
||||
<VERB-SYNONYM KNOCK RAP>
|
||||
|
||||
;<SYNTAX LAND = V-LAND>
|
||||
;<SYNTAX LAND OBJECT (FIND VEHBIT) = V-LAND>
|
||||
;<VERB-SYNONYM LAND MOOR DOCK>
|
||||
|
||||
<SYNTAX LEAD OBJECT OBJECT ;(EVERYWHERE) = V-RIDE-DIR>
|
||||
<SYNTAX LEAD OBJECT TO OBJECT (EVERYWHERE) = V-LEAD-TO>
|
||||
|
||||
;<SYNTAX LEAN OBJECT (HAVE) ON OBJECT = V-PUT-AGAINST>
|
||||
;<SYNTAX LEAN OBJECT (HAVE) AGAINST OBJECT = V-PUT-AGAINST>
|
||||
|
||||
<SYNTAX LEAVE = V-EXIT>
|
||||
<SYNTAX LEAVE OBJECT = V-LEAVE>
|
||||
<SYNTAX LEAVE OBJECT (HELD MANY) IN OBJECT = V-PUT PRE-PUT>
|
||||
<SYNTAX LEAVE OBJECT (HELD MANY) ON OBJECT = V-PUT-ON PRE-PUT>
|
||||
;<SYNTAX LEAVE OBJECT (HELD CARRIED) BEFORE OBJECT = V-PUT-NEAR IDROP>
|
||||
;<SYNTAX LEAVE OBJECT (HELD CARRIED) AT OBJECT = V-PUT-NEAR IDROP>
|
||||
<SYNTAX LET GO OBJECT (FIND KLUDGEBIT) (HELD MANY HAVE) = V-DROP IDROP>
|
||||
<SYNTAX LET OUT OBJECT = V-LET-OUT>
|
||||
<SYNTAX LET OBJECT (MANY) OUT OBJECT (HAVE TAKE) = V-EMPTY-FROM>
|
||||
|
||||
<SYNTAX LIE ON OBJECT (FIND VEHBIT) = V-LIE-DOWN>
|
||||
<SYNTAX LIE IN OBJECT (FIND VEHBIT) = V-LIE-DOWN>
|
||||
<SYNTAX LIE DOWN OBJECT (FIND KLUDGEBIT) = V-LIE-DOWN>
|
||||
|
||||
<SYNTAX LIGHT OBJECT (FIND LIGHTBIT) = V-ON PRE-TOUCH>
|
||||
<SYNTAX LIGHT OBJECT (FIND BURNBIT) WITH OBJECT (HELD CARRIED)
|
||||
= V-BURN PRE-TOUCH>
|
||||
<VERB-SYNONYM LIGHT START ACTIVATE>
|
||||
|
||||
<SYNTAX LISTEN = V-LISTEN PRE-LISTEN>
|
||||
<SYNTAX LISTEN TO OBJECT = V-LISTEN PRE-LISTEN>
|
||||
|
||||
<SYNTAX LOCK OBJECT WITH OBJECT (FIND KEYBIT) (HAVE) = V-LOCK PRE-LOCK>
|
||||
|
||||
<SYNTAX LOOK = V-LOOK>
|
||||
<SYNTAX LOOK AROUND OBJECT (FIND KLUDGEBIT) = V-LOOK>
|
||||
<SYNTAX LOOK DOWN OBJECT (FIND KLUDGEBIT) = V-LOOK-DOWN PRE-LOOK>
|
||||
<SYNTAX LOOK AT OBJECT = V-EXAMINE PRE-LOOK>
|
||||
<SYNTAX LOOK AT OBJECT WITH OBJECT (HAVE) = V-EXAMINE PRE-LOOK>
|
||||
<SYNTAX LOOK AT OBJECT THROUGH OBJECT (HAVE) = V-EXAMINE PRE-LOOK>
|
||||
<SYNTAX LOOK THROUGH OBJECT WITH OBJECT (HAVE) = V-EXAMINE PRE-LOOK>
|
||||
<SYNTAX LOOK ON OBJECT = V-EXAMINE PRE-LOOK>
|
||||
<SYNTAX LOOK TO OBJECT = V-EXAMINE PRE-LOOK>
|
||||
<SYNTAX LOOK AT OBJECT IN OBJECT = V-MIRROR-LOOK>
|
||||
<SYNTAX LOOK THROUGH OBJECT = V-LOOK-INSIDE PRE-LOOK>
|
||||
<SYNTAX LOOK OUT OBJECT = V-LOOK-INSIDE PRE-LOOK>
|
||||
<SYNTAX LOOK IN OBJECT = V-LOOK-INSIDE PRE-LOOK>
|
||||
<SYNTAX LOOK UNDER OBJECT = V-LOOK-UNDER PRE-LOOK>
|
||||
<SYNTAX LOOK BEHIND OBJECT = V-LOOK-BEHIND PRE-LOOK>
|
||||
<SYNTAX LOOK OVER OBJECT = V-LOOK-OVER PRE-LOOK>
|
||||
<SYNTAX LOOK FOR OBJECT (EVERYWHERE) = V-FIND>
|
||||
<SYNTAX LOOK FOR OBJECT (EVERYWHERE) IN OBJECT
|
||||
= V-SSEARCH-OBJECT-FOR PRE-SWITCH>
|
||||
<SYNTAX LOOK UP OBJECT (EVERYWHERE) (FIND KLUDGEBIT) = V-RESEARCH PRE-RESEARCH>
|
||||
<SYNTAX LOOK UP OBJECT (EVERYWHERE) IN OBJECT = V-RESEARCH PRE-RESEARCH>
|
||||
<SYNTAX LOOK OBJECT = V-CHASTISE>
|
||||
<VERB-SYNONYM LOOK L>
|
||||
|
||||
<SYNTAX LOWER OBJECT = V-LOWER PRE-TOUCH>
|
||||
<SYNTAX LOWER OBJECT THROUGH OBJECT = V-PUT-THROUGH IDROP>
|
||||
<SYNTAX LOWER OBJECT OUT OBJECT = V-PUT-THROUGH IDROP>
|
||||
|
||||
;<SYNTAX MAKE OBJECT (EVERYWHERE) = V-MAKE>
|
||||
;<SYNTAX MAKE OBJECT (EVERYWHERE) WITH OBJECT (FIND ACTORBIT) = V-MAKE-WITH>
|
||||
;<VERB-SYNONYM MAKE CREATE>
|
||||
|
||||
<SYNTAX MAP = V-MAP>
|
||||
|
||||
<SYNTAX MAYBE = V-MAYBE>
|
||||
|
||||
<SYNTAX MEASURE OBJECT = V-MEASURE>
|
||||
|
||||
<SYNTAX MEET OBJECT = V-MEET>
|
||||
<SYNONYM MEET GREET>
|
||||
|
||||
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-TOUCH>
|
||||
<SYNTAX MOVE OBJECT WITH OBJECT (HAVE) = V-MOVE PRE-TOUCH>
|
||||
<SYNTAX MOVE OBJECT OBJECT = V-MOVE-DIR PRE-TOUCH>
|
||||
<SYNTAX MOVE OBJECT TO OBJECT = V-MOVE-TO PRE-TOUCH>
|
||||
<SYNTAX MOVE DOWN OBJECT = V-LOWER PRE-TOUCH>
|
||||
<SYNTAX MOVE UP OBJECT = V-RAISE PRE-TOUCH>
|
||||
<SYNTAX MOVE AROUND OBJECT (FIND KLUDGEBIT) = V-WALK-AROUND>
|
||||
<SYNTAX MOVE IN OBJECT = V-MOVE PRE-TOUCH>
|
||||
;<SYNTAX MOVE OUT OBJECT = V-REMOVE> ;"pull out object"
|
||||
<SYNTAX MOVE OBJECT (IN-ROOM CARRIED MANY) OUT OBJECT = V-TAKE PRE-TAKE>
|
||||
<SYNTAX MOVE OBJECT (IN-ROOM CARRIED MANY) FROM OBJECT = V-TAKE PRE-TAKE>
|
||||
<VERB-SYNONYM MOVE PULL>
|
||||
|
||||
<SYNTAX NO = V-NO>
|
||||
<VERB-SYNONYM NO NOPE UH-UH NAH>
|
||||
|
||||
<SYNTAX OPEN OBJECT (FIND DOORBIT) = V-OPEN PRE-TOUCH>
|
||||
<SYNTAX OPEN UP OBJECT (FIND DOORBIT) = V-OPEN PRE-TOUCH>
|
||||
<SYNTAX OPEN OBJECT (FIND DOORBIT) WITH OBJECT (HAVE) = V-OPEN PRE-TOUCH>
|
||||
<VERB-SYNONYM OPEN UNSHUTTER>
|
||||
|
||||
;<SYNTAX PASS OBJECT = V-PASS>
|
||||
;<SYNTAX PASS OBJECT (MANY HELD HAVE) TO OBJECT (FIND ACTORBIT) (ON-GROUND)
|
||||
= V-GIVE PRE-GIVE>
|
||||
|
||||
<SYNTAX PAY OBJECT (FIND ACTORBIT) = V-PAY>
|
||||
<SYNTAX PAY FOR OBJECT (EVERYWHERE) = V-BUY>
|
||||
<SYNTAX PAY OBJECT (MANY HELD HAVE) TO OBJECT (FIND ACTORBIT) (ON-GROUND)
|
||||
= V-GIVE PRE-GIVE>
|
||||
|
||||
<SYNTAX PICK OBJECT = V-PICK>
|
||||
<SYNTAX PICK OBJECT WITH OBJECT = V-PICK>
|
||||
<SYNTAX PICK UP OBJECT (FIND TAKEBIT) (ON-GROUND IN-ROOM MANY)
|
||||
= V-TAKE PRE-TAKE>
|
||||
|
||||
<SYNTAX PLAY WITH OBJECT = V-TOUCH PRE-TOUCH>
|
||||
<SYNTAX PLAY OBJECT = V-PLAY>
|
||||
|
||||
<SYNTAX POINT AT OBJECT = V-POINT>
|
||||
<SYNTAX POINT TO OBJECT = V-POINT>
|
||||
<SYNTAX POINT OBJECT (HAVE TAKE) AT OBJECT = V-POINT>
|
||||
<SYNTAX POINT OBJECT (HAVE TAKE) ON OBJECT = V-POINT>
|
||||
;<SYNTAX POINT OBJECT (HAVE TAKE) IN OBJECT = V-POINT>
|
||||
<VERB-SYNONYM POINT AIM WAVE FIRE>
|
||||
|
||||
<SYNTAX POUR OBJECT (HELD CARRIED HAVE TAKE) ON OBJECT = V-POUR>
|
||||
<SYNTAX POUR OBJECT (HELD CARRIED HAVE TAKE) IN OBJECT = V-POUR>
|
||||
<SYNTAX POUR OBJECT (MANY) FROM OBJECT (HAVE TAKE) = V-EMPTY-FROM>
|
||||
<SYNTAX POUR OUT OBJECT (MANY) FROM OBJECT (HAVE TAKE) = V-EMPTY-FROM>
|
||||
<SYNTAX POUR OUT OBJECT (HELD CARRIED HAVE TAKE) IN OBJECT = V-POUR>
|
||||
<SYNTAX POUR OBJECT (MANY) OUT OBJECT (HAVE TAKE) = V-EMPTY-FROM>
|
||||
<VERB-SYNONYM POUR SPILL>
|
||||
|
||||
<SYNTAX PRAY = V-PRAY>
|
||||
<SYNTAX PRAY TO OBJECT = V-PRAY>
|
||||
<VERB-SYNONYM PRAY WORSHIP>
|
||||
|
||||
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND) = V-PUSH PRE-TOUCH>
|
||||
<SYNTAX PUSH ON OBJECT (IN-ROOM ON-GROUND) = V-PUSH PRE-TOUCH>
|
||||
;<SYNTAX PUSH OFF OBJECT (FIND KLUDGEBIT) = V-PUSH-OFF>
|
||||
<SYNTAX PUSH DOWN OBJECT = V-LOWER PRE-TOUCH>
|
||||
<SYNTAX PUSH OBJECT OBJECT = V-PUSH-DIR PRE-TOUCH>
|
||||
<SYNTAX PUSH UP OBJECT = V-RAISE PRE-TOUCH>
|
||||
<SYNTAX PUSH OBJECT UNDER OBJECT = V-PUT-UNDER>
|
||||
<SYNTAX PUSH OBJECT (HELD MANY) IN OBJECT = V-PUT PRE-PUT>
|
||||
<VERB-SYNONYM PUSH PRESS ;SQUEEZE RING ;"ring the doorbell">
|
||||
|
||||
<SYNTAX RAISE OBJECT = V-RAISE PRE-TOUCH>
|
||||
<SYNTAX RAISE UP OBJECT = V-RAISE PRE-TOUCH>
|
||||
<VERB-SYNONYM RAISE LIFT BOOST>
|
||||
|
||||
;<SYNTAX RAPE OBJECT (FIND ACTORBIT) = V-RAPE>
|
||||
|
||||
<SYNTAX REACH IN OBJECT (ON-GROUND IN-ROOM) = V-REACH-IN>
|
||||
|
||||
<SYNTAX READ OBJECT (FIND READBIT) (TAKE) = V-READ PRE-LOOK>
|
||||
<SYNTAX READ THROUGH OBJECT (FIND READBIT) (TAKE) = V-READ PRE-LOOK>
|
||||
<SYNTAX READ OBJECT (FIND READBIT) (TAKE) THROUGH OBJECT = V-READ PRE-LOOK>
|
||||
<SYNTAX READ OBJECT (FIND READBIT) (TAKE) WITH OBJECT = V-READ PRE-LOOK>
|
||||
<SYNTAX READ ABOUT OBJECT (EVERYWHERE) = V-RESEARCH PRE-RESEARCH>
|
||||
<SYNTAX READ ABOUT OBJECT (EVERYWHERE) IN OBJECT = V-RESEARCH PRE-RESEARCH>
|
||||
<SYNTAX READ IN OBJECT ABOUT OBJECT (EVERYWHERE) = V-SRESEARCH PRE-SWITCH>
|
||||
<VERB-SYNONYM READ SKIM BROWSE>
|
||||
|
||||
<SYNTAX REMOVE OBJECT (FIND WORNBIT) (HELD MANY) = V-REMOVE>
|
||||
<SYNTAX REMOVE OBJECT (IN-ROOM CARRIED MANY) WITH OBJECT ;(HAVE) = V-TAKE-WITH>
|
||||
<SYNTAX REMOVE OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY)
|
||||
FROM OBJECT = V-TAKE PRE-TAKE>
|
||||
<VERB-SYNONYM REMOVE UNWRAP>
|
||||
|
||||
;<SYNTAX RETURN OBJECT (HELD CARRIED HAVE) = V-RETURN>
|
||||
;<SYNTAX RETURN OBJECT (HELD CARRIED HAVE) TO OBJECT (ON-GROUND) = V-RETURN>
|
||||
|
||||
<SYNTAX RIDE OBJECT (FIND VEHBIT) = V-CLIMB-ON>
|
||||
<SYNTAX RIDE OBJECT OBJECT ;(EVERYWHERE) = V-RIDE-DIR>
|
||||
<SYNTAX RIDE OBJECT TO OBJECT (EVERYWHERE) = V-RIDE-DIR>
|
||||
<SYNTAX RIDE ON OBJECT TO OBJECT (EVERYWHERE) = V-RIDE-DIR>
|
||||
<SYNTAX RIDE IN OBJECT TO OBJECT (EVERYWHERE) = V-RIDE-DIR>
|
||||
|
||||
;<SYNTAX RIP OBJECT = V-RIP>
|
||||
;<SYNTAX RIP OBJECT IN OBJECT = V-RIP>
|
||||
;<SYNTAX RIP UP OBJECT = V-RIP>
|
||||
;<SYNTAX RIP OBJECT WITH OBJECT = V-RIP>
|
||||
;<VERB-SYNONYM RIP TEAR SHRED>
|
||||
|
||||
<SYNTAX ROLL OBJECT = V-ROLL PRE-TOUCH>
|
||||
<SYNTAX ROLL OBJECT DOWN OBJECT (FIND KLUDGEBIT) = V-ROLL-DOWN PRE-TOUCH>
|
||||
<SYNTAX ROLL OBJECT UP OBJECT (FIND KLUDGEBIT) = V-ROLL-UP PRE-TOUCH>
|
||||
<SYNTAX ROLL OBJECT OBJECT = V-ROLL-DIR PRE-TOUCH>
|
||||
<SYNTAX ROLL UP OBJECT = V-ROLL PRE-TOUCH>
|
||||
|
||||
<SYNTAX SADDLE OBJECT = V-SADDLE>
|
||||
<SYNTAX SADDLE OBJECT WITH OBJECT (HAVE) = V-SADDLE>
|
||||
|
||||
<SYNTAX SAVE OBJECT = V-SAVE-SOMETHING>
|
||||
<VERB-SYNONYM SAVE RESCUE>
|
||||
|
||||
<SYNTAX SAY OBJECT (EVERYWHERE) = V-SAY PRE-TELL>
|
||||
<VERB-SYNONYM SAY UTTER ANSWER REPLY GUESS>
|
||||
|
||||
<SYNTAX SEARCH OBJECT = V-SEARCH PRE-TOUCH>
|
||||
<SYNTAX SEARCH IN OBJECT = V-SEARCH PRE-TOUCH>
|
||||
<SYNTAX SEARCH FOR OBJECT (EVERYWHERE) = V-FIND>
|
||||
<SYNTAX SEARCH THROUGH OBJECT = V-SEARCH PRE-TOUCH>
|
||||
<SYNTAX SEARCH OBJECT FOR OBJECT (EVERYWHERE) = V-SEARCH-OBJECT-FOR>
|
||||
<SYNTAX SEARCH FOR OBJECT (EVERYWHERE) IN OBJECT
|
||||
= V-SSEARCH-OBJECT-FOR PRE-SWITCH>
|
||||
<VERB-SYNONYM SEARCH RUMMAGE>
|
||||
|
||||
<SYNTAX SEND OBJECT TO OBJECT = V-SEND>
|
||||
<VERB-SYNONYM SEND MAIL SHIP>
|
||||
|
||||
<SYNTAX SHAKE OBJECT = V-SHAKE>
|
||||
<SYNTAX SHAKE WITH OBJECT = V-SHAKE-WITH>
|
||||
<SYNTAX SHAKE OBJECT WITH OBJECT = V-SHAKE-WITH>
|
||||
<VERB-SYNONYM SHAKE BOUNCE>
|
||||
|
||||
<SYNTAX SHOW OBJECT = V-SHOW>
|
||||
<SYNTAX SHOW OBJECT (HELD CARRIED MANY) TO OBJECT (FIND ACTORBIT) = V-SHOW>
|
||||
<SYNTAX SHOW OBJECT (FIND ACTORBIT) OBJECT (HELD CARRIED MANY)
|
||||
= V-SSHOW PRE-SWITCH>
|
||||
|
||||
<SYNTAX SING OBJECT = V-SING PRE-TELL>
|
||||
<SYNTAX SING TO OBJECT = V-SING-TO PRE-TELL>
|
||||
<SYNTAX SING OBJECT TO OBJECT = V-SING PRE-TELL>
|
||||
|
||||
<SYNTAX SINK OBJECT = V-SINK>
|
||||
|
||||
<SYNTAX SIT = V-SIT>
|
||||
<SYNTAX SIT ON OBJECT ;(FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
|
||||
<SYNTAX SIT DOWN OBJECT (FIND KLUDGEBIT) (ON-GROUND IN-ROOM) = V-SIT>
|
||||
<SYNTAX SIT AT OBJECT (ON-GROUND IN-ROOM) = V-SIT>
|
||||
<SYNTAX SIT IN OBJECT ;(FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
|
||||
|
||||
<SYNTAX SKIP = V-SKIP>
|
||||
<VERB-SYNONYM SKIP HOP>
|
||||
|
||||
<SYNTAX SLEEP = V-SLEEP>
|
||||
<SYNTAX SLEEP IN OBJECT (IN-ROOM ON-GROUND) = V-ENTER PRE-ENTER>
|
||||
<SYNTAX SLEEP ON OBJECT (IN-ROOM ON-GROUND) = V-ENTER PRE-ENTER>
|
||||
<VERB-SYNONYM SLEEP REST DOZE NAP SNOOZE>
|
||||
|
||||
<SYNTAX SLICE OBJECT WITH OBJECT (CARRIED HELD) = V-CUT>
|
||||
<SYNTAX SLICE OBJECT OFF OBJECT (FIND KLUDGEBIT) = V-CUT>
|
||||
<SYNTAX SLICE OFF OBJECT WITH OBJECT (CARRIED HELD) = V-CUT>
|
||||
<SYNTAX SLICE DOWN OBJECT WITH OBJECT (CARRIED HELD) = V-CUT>
|
||||
<SYNTAX SLICE THROUGH OBJECT WITH OBJECT (CARRIED HELD) = V-CUT>
|
||||
<VERB-SYNONYM SLICE CUT CHOP>
|
||||
|
||||
<SYNTAX SLIDE DOWN OBJECT (FIND KLUDGEBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
|
||||
|
||||
;<SYNTAX SMEAR OBJECT (HELD MANY) ON OBJECT = V-PUT-ON PRE-PUT>
|
||||
|
||||
<SYNTAX SMELL = V-SMELL PRE-SMELL>
|
||||
<SYNTAX SMELL OBJECT = V-SMELL PRE-SMELL>
|
||||
<VERB-SYNONYM SMELL SNIFF ;WHIFF>
|
||||
|
||||
<SYNTAX SNAP OBJECT = V-SNAP>
|
||||
|
||||
<SYNTAX STAND = V-STAND>
|
||||
<SYNTAX STAND UP OBJECT (FIND KLUDGEBIT) = V-STAND>
|
||||
<SYNTAX STAND ON OBJECT = V-STAND-ON>
|
||||
<SYNTAX STAND IN OBJECT = V-ENTER PRE-ENTER>
|
||||
<SYNTAX STAND BEHIND OBJECT = V-HIDE>
|
||||
<SYNTAX STAND AT OBJECT = V-GET-NEAR>
|
||||
<SYNTAX STAND BEFORE OBJECT = V-GET-NEAR>
|
||||
<SYNTAX STAND UNDER OBJECT = V-GET-NEAR>
|
||||
<VERB-SYNONYM STAND RISE>
|
||||
|
||||
<SYNTAX STICK OBJECT (HELD MANY) (FIND TAKEBIT) IN OBJECT (FIND CONTBIT)
|
||||
= V-PUT PRE-PUT>
|
||||
<SYNTAX STICK OBJECT (HELD MANY) ON OBJECT = V-PUT-ON PRE-PUT>
|
||||
<SYNTAX STICK OBJECT (HELD MANY) DOWN OBJECT = V-PUT-ON PRE-PUT>
|
||||
;<SYNTAX STICK OBJECT (HELD MANY) BACK OBJECT = V-PUT PRE-PUT>
|
||||
;<SYNTAX STICK OBJECT (HELD CARRIED) BEFORE OBJECT = V-PUT-NEAR IDROP>
|
||||
;<SYNTAX STICK OBJECT (HELD MANY) BEFORE OBJECT = V-PUT-IN-FRONT>
|
||||
<SYNTAX STICK OBJECT (HELD MANY) AROUND OBJECT = V-PUT-ON PRE-PUT>
|
||||
<SYNTAX STICK OBJECT (HELD MANY) OVER OBJECT = V-PUT-ON PRE-PUT>
|
||||
<SYNTAX STICK OBJECT (HELD MANY) ACROSS OBJECT = V-PUT-ON PRE-PUT>
|
||||
<SYNTAX STICK DOWN OBJECT (HELD MANY HAVE) = V-DROP IDROP>
|
||||
<SYNTAX STICK OBJECT (HAVE HELD MANY) UNDER OBJECT = V-PUT-UNDER>
|
||||
<SYNTAX STICK ON OBJECT (FIND WEARBIT) (TAKE HAVE MANY) = V-WEAR>
|
||||
<SYNTAX STICK OBJECT BEHIND OBJECT = V-PUT-BEHIND>
|
||||
<SYNTAX STICK OBJECT (MANY) THROUGH OBJECT = V-PUT-THROUGH IDROP>
|
||||
<SYNTAX STICK OBJECT (MANY) OUT OBJECT = V-PUT-THROUGH IDROP>
|
||||
<SYNTAX STICK OUT OBJECT (FIND ONBIT) = V-OFF PRE-TOUCH>
|
||||
;<SYNTAX STICK OBJECT (HELD CARRIED) AT OBJECT = V-PUT-NEAR IDROP>
|
||||
;<SYNTAX STICK OBJECT (HAVE) AGAINST OBJECT = V-PUT-AGAINST>
|
||||
<SYNTAX STICK OBJECT TO OBJECT = V-PUT-TO> ;"put bedbug to sleep"
|
||||
<VERB-SYNONYM STICK PUT STUFF INSERT PLACE INSTALL>
|
||||
|
||||
<SYNTAX SUCK OBJECT = V-SUCK-ON PRE-TOUCH>
|
||||
<SYNTAX SUCK ON OBJECT = V-SUCK-ON PRE-TOUCH>
|
||||
<SYNTAX SUCK OBJECT WITH OBJECT (HAVE) = V-SUCK-WITH>
|
||||
|
||||
<SYNTAX SWAT OBJECT = V-SWAT>
|
||||
<SYNTAX SWAT OBJECT WITH OBJECT (HAVE) = V-SWAT>
|
||||
|
||||
<SYNTAX SWIM = V-SWIM>
|
||||
<SYNTAX SWIM IN OBJECT = V-SWIM>
|
||||
<SYNTAX SWIM ACROSS OBJECT = V-SWIM>
|
||||
|
||||
<SYNTAX SWING OBJECT (HELD CARRIED HAVE) = V-SWING>
|
||||
;<SYNTAX SWING OBJECT (HELD CARRIED HAVE) AT OBJECT (FIND ACTORBIT) = V-SWING>
|
||||
;<SYNTAX SWING TO OBJECT = V-WALK-TO>
|
||||
;<SYNTAX SWING OVER ;TO OBJECT = V-WALK-TO>
|
||||
|
||||
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (ON-GROUND IN-ROOM MANY) = V-TAKE PRE-TAKE>
|
||||
<SYNTAX TAKE OFF OBJECT (FIND KLUDGEBIT) (MANY) = V-TAKE-OFF>
|
||||
<SYNTAX TAKE OUT OBJECT (FIND KLUDGEBIT) = V-EXIT>
|
||||
<SYNTAX TAKE DOWN OBJECT (FIND KLUDGEBIT) = V-EXIT>
|
||||
<SYNTAX TAKE IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-ENTER PRE-ENTER>
|
||||
<SYNTAX TAKE ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-ENTER PRE-ENTER>
|
||||
<SYNTAX TAKE UP OBJECT (FIND KLUDGEBIT) = V-STAND>
|
||||
<SYNTAX TAKE OBJECT (CARRIED IN-ROOM MANY) OUT OBJECT = V-TAKE PRE-TAKE>
|
||||
<SYNTAX TAKE OBJECT (CARRIED IN-ROOM MANY) OFF OBJECT = V-TAKE PRE-TAKE>
|
||||
<SYNTAX TAKE OBJECT (IN-ROOM CARRIED MANY) FROM OBJECT = V-TAKE PRE-TAKE>
|
||||
<SYNTAX TAKE OBJECT (IN-ROOM CARRIED MANY) IN OBJECT = V-TAKE PRE-TAKE>
|
||||
<SYNTAX TAKE OBJECT (IN-ROOM CARRIED MANY) ON OBJECT = V-TAKE PRE-TAKE>
|
||||
<SYNTAX TAKE OBJECT (IN-ROOM CARRIED MANY) WITH OBJECT ;(HAVE) = V-TAKE-WITH>
|
||||
;<SYNTAX TAKE OUT OBJECT IN OBJECT = V-LEAP-OFF>
|
||||
<SYNTAX TAKE UNDER OBJECT = V-CRAWL-UNDER>
|
||||
<SYNTAX TAKE BEFORE OBJECT = V-GET-NEAR>
|
||||
;<SYNTAX TAKE DRESSE OBJECT (FIND KLUDGEBIT) = V-GET-DRESSED>
|
||||
;<SYNTAX TAKE UNDRES OBJECT (FIND KLUDGEBIT) = V-GET-UNDRESSED>
|
||||
<VERB-SYNONYM TAKE GET GRAB HOLD CARRY>
|
||||
|
||||
<SYNTAX TALK TO OBJECT (FIND ACTORBIT) (IN-ROOM) = V-TELL PRE-TELL>
|
||||
<VERB-SYNONYM TALK SPEAK>
|
||||
|
||||
;<SYNTAX TAP OBJECT = V-TOUCH PRE-TOUCH>
|
||||
;<SYNTAX TAP ON OBJECT = V-KNOCK>
|
||||
|
||||
<SYNTAX TASTE OBJECT = V-TASTE>
|
||||
;<SYNTAX TASTE OBJECT WITH OBJECT = V-DRINK-WITH PRE-INGEST>
|
||||
<VERB-SYNONYM TASTE LICK NIBBLE>
|
||||
|
||||
<SYNTAX TELL OBJECT (FIND ACTORBIT) (IN-ROOM) = V-TELL PRE-TELL>
|
||||
<SYNTAX TELL OBJECT (FIND ACTORBIT) ABOUT OBJECT (EVERYWHERE) = V-TELL-ABOUT>
|
||||
<SYNTAX TELL OBJECT OBJECT = V-STELL>
|
||||
|
||||
<SYNTAX THANKS OBJECT = V-THANK>
|
||||
<SYNTAX THANKS = V-THANK>
|
||||
<VERB-SYNONYM THANKS THANK>
|
||||
|
||||
<SYNTAX THROW OBJECT (CARRIED) = V-THROW IDROP>
|
||||
<SYNTAX THROW AWAY OBJECT (CARRIED) = V-THROW IDROP>
|
||||
<SYNTAX THROW OVERBOARD OBJECT (HELD CARRIED) = V-THROW-OVERBOARD IDROP>
|
||||
<SYNTAX THROW OBJECT (CARRIED) IN OBJECT = V-PUT PRE-PUT>
|
||||
<SYNTAX THROW OBJECT (CARRIED) DOWN OBJECT = V-THROW IDROP>
|
||||
<SYNTAX THROW OBJECT (CARRIED) AT OBJECT (ON-GROUND IN-ROOM) = V-THROW IDROP>
|
||||
<SYNTAX THROW OBJECT (CARRIED) ON OBJECT (ON-GROUND IN-ROOM) = V-THROW IDROP>
|
||||
<SYNTAX THROW OBJECT (CARRIED) TO OBJECT (ON-GROUND IN-ROOM)
|
||||
= V-THROW-TO IDROP>
|
||||
<SYNTAX THROW OBJECT (CARRIED) FROM OBJECT = V-THROW-FROM IDROP>
|
||||
<SYNTAX THROW OBJECT (CARRIED) OFF OBJECT = V-THROW-FROM IDROP>
|
||||
<SYNTAX THROW OBJECT (ON-GROUND IN-ROOM) OBJECT (CARRIED)
|
||||
= V-STHROW PRE-SWITCH>
|
||||
<SYNTAX THROW OBJECT (CARRIED) OVER OBJECT = V-THROW-OVER IDROP>
|
||||
<SYNTAX THROW OBJECT (CARRIED) THROUGH OBJECT = V-PUT-THROUGH IDROP>
|
||||
<SYNTAX THROW OBJECT (CARRIED) OUT OBJECT = V-PUT-THROUGH IDROP>
|
||||
<VERB-SYNONYM THROW HURL TOSS CAST>
|
||||
|
||||
<SYNTAX TIE OBJECT (HELD) TO OBJECT = V-TIE>
|
||||
<SYNTAX TIE UP OBJECT TO OBJECT = V-TIE>
|
||||
<SYNTAX TIE OBJECT (HELD) AROUND OBJECT = V-TIE>
|
||||
<VERB-SYNONYM TIE FASTEN ATTACH ;STRAP ;HOOK ;HITCH ;SECURE>
|
||||
|
||||
<SYNTAX TIME = V-TIME>
|
||||
<VERB-SYNONYM TIME T>
|
||||
|
||||
<SYNTAX TIP OBJECT = V-TIP>
|
||||
<SYNTAX TIP OVER OBJECT = V-TIP-OVER>
|
||||
|
||||
<SYNTAX TOUCH OBJECT = V-TOUCH PRE-TOUCH>
|
||||
<SYNTAX TOUCH OBJECT WITH OBJECT (HAVE) = V-TOUCH PRE-TOUCH>
|
||||
<SYNTAX TOUCH OBJECT (HAVE) TO OBJECT = V-STOUCH PRE-SWITCH>
|
||||
<SYNTAX TOUCH OBJECT (HAVE) ON OBJECT = V-STOUCH PRE-SWITCH>
|
||||
<VERB-SYNONYM TOUCH RUB FEEL PAT PET ;POKE ;FONDLE ;SCRATCH ;STROKE>
|
||||
|
||||
<SYNTAX TURN OBJECT = V-SET>
|
||||
<SYNTAX TURN AROUND OBJECT (FIND KLUDGEBIT) = V-SET>
|
||||
<SYNTAX TURN OBJECT TO OBJECT ;(EVERYWHERE) = V-SET>
|
||||
<SYNTAX TURN OBJECT OBJECT = V-SET-DIR>
|
||||
<SYNTAX TURN ON OBJECT (FIND LIGHTBIT) = V-ON PRE-TOUCH>
|
||||
<SYNTAX TURN OFF OBJECT (FIND LIGHTBIT) = V-OFF PRE-TOUCH>
|
||||
<SYNTAX TURN OBJECT (HELD MANY) ON OBJECT = V-PUT-ON PRE-PUT>
|
||||
<VERB-SYNONYM TURN SET SPIN DIAL STEER ROTATE REVOLVE
|
||||
;WIND ;SWITCH ;FLIP ;FLICK>
|
||||
|
||||
;<SYNTAX UNDRESS = V-UNDRESS>
|
||||
;<SYNTAX UNDRESS OBJECT = V-UNDRESS>
|
||||
;<VERB-SYNONYM UNDRESS STRIP>
|
||||
|
||||
<SYNTAX UNLOCK OBJECT WITH OBJECT (FIND KEYBIT) (HAVE) = V-UNLOCK PRE-LOCK>
|
||||
|
||||
<SYNTAX UNTIE OBJECT (ON-GROUND IN-ROOM HELD CARRIED) = V-UNTIE>
|
||||
<VERB-SYNONYM UNTIE FREE UNSTRAP UNFASTEN UNATTACH UNKNOT>
|
||||
|
||||
<SYNTAX USE OBJECT = V-USE>
|
||||
|
||||
<SYNTAX WAIT = V-WAIT>
|
||||
<SYNTAX WAIT FOR OBJECT (EVERYWHERE) = V-WAIT-FOR>
|
||||
<VERB-SYNONYM WAIT Z>
|
||||
|
||||
<SYNTAX WAKE OBJECT (FIND KLUDGEBIT) = V-ALARM>
|
||||
<SYNTAX WAKE UP OBJECT (FIND KLUDGEBIT) = V-ALARM>
|
||||
<VERB-SYNONYM WAKE AWAKE ROUSE>
|
||||
|
||||
<SYNTAX WALK = V-WALK-AROUND>
|
||||
<SYNTAX WALK OBJECT = V-WALK>
|
||||
<SYNTAX WALK IN OBJECT = V-ENTER PRE-ENTER>
|
||||
<SYNTAX WALK OUT OBJECT = V-ENTER PRE-ENTER>
|
||||
<SYNTAX WALK ACROSS OBJECT = V-ENTER PRE-ENTER>
|
||||
<SYNTAX WALK ON OBJECT = V-STAND-ON>
|
||||
<SYNTAX WALK OVER OBJECT = V-ENTER PRE-ENTER>
|
||||
<SYNTAX WALK WITH OBJECT (EVERYWHERE) = V-FOLLOW>
|
||||
<SYNTAX WALK THROUGH OBJECT = V-ENTER PRE-ENTER>
|
||||
<SYNTAX WALK AROUND OBJECT (FIND KLUDGEBIT) = V-WALK-AROUND>
|
||||
<SYNTAX WALK UNDER OBJECT = V-CRAWL-UNDER>
|
||||
<SYNTAX WALK BEHIND OBJECT = V-HIDE>
|
||||
<SYNTAX WALK UP OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-UP>
|
||||
<SYNTAX WALK DOWN OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
|
||||
<SYNTAX WALK TO OBJECT (EVERYWHERE) = V-WALK-TO>
|
||||
<SYNTAX WALK AWAY OBJECT (FIND KLUDGEBIT) = V-LEAVE>
|
||||
<SYNTAX WALK TO OBJECT ON OBJECT = V-SRIDE-DIR PRE-SWITCH>
|
||||
<SYNTAX WALK TO OBJECT IN OBJECT = V-SRIDE-DIR PRE-SWITCH>
|
||||
<VERB-SYNONYM WALK GO RUN PROCEED STEP>
|
||||
|
||||
<SYNTAX WASH OBJECT = V-CLEAN>
|
||||
<SYNTAX WASH UP OBJECT (FIND KLUDGEBIT) = V-CLEAN>
|
||||
<SYNTAX WASH OFF OBJECT = V-CLEAN>
|
||||
<SYNTAX WASH AWAY OBJECT = V-CLEAN>
|
||||
<SYNTAX WASH OBJECT WITH OBJECT (HAVE) = V-CLEAN>
|
||||
<SYNTAX WASH OBJECT IN OBJECT = V-CLEAN>
|
||||
<SYNTAX WASH UP OBJECT WITH OBJECT (HAVE) = V-CLEAN>
|
||||
<SYNTAX WASH OFF OBJECT WITH OBJECT (HAVE) = V-CLEAN>
|
||||
<SYNTAX WASH AWAY OBJECT WITH OBJECT (HAVE) = V-CLEAN>
|
||||
<VERB-SYNONYM WASH CLEAN SWEEP CLEAR SHINE WIPE SOAK>
|
||||
|
||||
;<SYNTAX WAVE OBJECT (HAVE) = V-WAVE>
|
||||
;<SYNTAX WAVE OBJECT (HAVE) AT OBJECT = V-WAVE>
|
||||
;<SYNTAX WAVE OBJECT (HAVE) IN OBJECT = V-WAVE> ;"in front of"
|
||||
|
||||
<SYNTAX WEAR OBJECT (FIND WEARBIT) (HELD CARRIED TAKE MANY HAVE) = V-WEAR>
|
||||
<VERB-SYNONYM WEAR DON>
|
||||
|
||||
<SYNTAX WRAP OBJECT (HELD MANY) AROUND OBJECT = V-WRAP PRE-PUT>
|
||||
<SYNTAX WRAP OBJECT IN OBJECT (HELD MANY) = V-SWRAP PRE-SWITCH>
|
||||
|
||||
<SYNTAX YAWN = V-YAWN>
|
||||
<SYNTAX YAWN AT OBJECT = V-YAWN>
|
||||
|
||||
<SYNTAX YELL = V-YELL PRE-TELL>
|
||||
<SYNTAX YELL OBJECT = V-YELL PRE-TELL>
|
||||
<SYNTAX YELL AT OBJECT = V-YELL PRE-TELL>
|
||||
<SYNTAX YELL TO OBJECT = V-YELL PRE-TELL>
|
||||
<VERB-SYNONYM YELL SCREAM SHOUT>
|
||||
|
||||
<SYNTAX YES = V-YES>
|
||||
<VERB-SYNONYM YES Y YUP OK OKAY SURE YEAH YEP>
|
||||
|
||||
<SYNTAX SIZUL = V-SACRED-WORD>
|
||||
<VERB-SYNONYM SIZUL FZORTY XZILCH FUBLITSKEE ZASTIC AULDERFOO LIZOWURT
|
||||
ELDABLITZ MORDEX HILDEBUD>
|
||||
|
||||
<SYNTAX ZAP OBJECT = V-ZAP>
|
||||
<SYNTAX ZAP OBJECT WITH OBJECT (HAVE TAKE) = V-ZAP>
|
||||
<SYNTAX ZAP OBJECT (HAVE TAKE) AT OBJECT = V-POINT>
|
||||
|
||||
<SYNTAX ZIPSO = V-NOT-SO-SACRED-WORD> ;"words on scrap of parchment"
|
||||
<VERB-SYNONYM ZIPSO FLODOOR FURGALNETI>
|
|
@ -0,0 +1,624 @@
|
|||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT MORE-SPECIFIC
|
||||
SET 'CLOCK-WAIT,TRUE-VALUE
|
||||
PRINTR "[Please be more specific.]"
|
||||
|
||||
|
||||
.FUNCT MAIN-LOOP,X
|
||||
?PRG1: CALL1 MAIN-LOOP-1 >X
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT DIR-VERB-PRSI?,NP
|
||||
GET PARSE-RESULT,4
|
||||
EQUAL? STACK,V?MOVE-DIR,V?RIDE-DIR,V?ROLL-DIR /?PRD3
|
||||
GET PARSE-RESULT,4
|
||||
EQUAL? STACK,V?SET-DIR \FALSE
|
||||
?PRD3: GET NP,3
|
||||
EQUAL? STACK,INTDIR,LEFT-RIGHT /FALSE
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT DIR-VERB-WORD?,WD
|
||||
EQUAL? WD,W?WALK,W?GO,W?RUN /TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT MAIN-LOOP-1,ICNT,OCNT,NUM,OBJ,V,OBJ1,NP,NP1,CNT,TOFF,XX,TMP
|
||||
CALL1 PARSER >P-WON
|
||||
ZERO? P-WON /?CCL3
|
||||
DLESS? 'P-ERRS,0 \?PRG6
|
||||
SET 'P-ERRS,0
|
||||
?PRG6: GET PARSE-RESULT,4 >PRSA
|
||||
EQUAL? PRSA,V?UNDO \?CCL10
|
||||
CALL2 PERFORM,PRSA
|
||||
RSTACK
|
||||
?CCL10: ISAVE >P-CAN-UNDO
|
||||
EQUAL? P-CAN-UNDO,2 \?CND8
|
||||
EQUAL? PRSA,V?SAVE \?CCL15
|
||||
ICALL1 CANT-UNDO
|
||||
RFALSE
|
||||
?CCL15: SET 'P-CONT,-1
|
||||
ICALL1 V-$REFRESH
|
||||
RFALSE
|
||||
?CND8: GET PARSE-RESULT,5 >P-PRSO
|
||||
GET PARSE-RESULT,6 >P-PRSI
|
||||
ZERO? P-PRSO /?CCL19
|
||||
GET P-PRSO,3
|
||||
EQUAL? INTDIR,STACK \?CCL19
|
||||
GET P-PRSO,4
|
||||
GET STACK,2
|
||||
GETB STACK,6 >P-DIRECTION
|
||||
JUMP ?CND17
|
||||
?CCL19: ZERO? P-PRSI /?CND17
|
||||
GET P-PRSI,3
|
||||
EQUAL? INTDIR,STACK \?CND17
|
||||
GET P-PRSI,4
|
||||
GET STACK,2
|
||||
GETB STACK,6 >P-DIRECTION
|
||||
?CND17: GET PARSE-RESULT,1 >P-PRSA-WORD
|
||||
SET 'CLOCK-WAIT,FALSE-VALUE
|
||||
SET 'ICNT,0
|
||||
SET 'OCNT,0
|
||||
ZERO? P-PRSI /?CND25
|
||||
GET P-PRSI,1 >ICNT
|
||||
ZERO? ICNT /?CND25
|
||||
SET 'P-MULT,ICNT
|
||||
?CND25: ZERO? P-PRSO /?CND29
|
||||
GET P-PRSO,1 >OCNT
|
||||
ZERO? OCNT /?CND29
|
||||
SET 'P-MULT,OCNT
|
||||
?CND29: ZERO? OCNT \?CCL35
|
||||
ZERO? ICNT /?CND33
|
||||
?CCL35: EQUAL? PRSA,V?WALK /?CND33
|
||||
ZERO? P-IT-OBJECT /?CND33
|
||||
CALL2 ACCESSIBLE?,P-IT-OBJECT
|
||||
ZERO? STACK /?CND33
|
||||
ZERO? ICNT /?CND42
|
||||
SET 'CNT,0
|
||||
?PRG44: MUL CNT,2
|
||||
ADD NOUN-PHRASE-HEADER-LEN,STACK >TOFF
|
||||
GET P-PRSI,TOFF
|
||||
EQUAL? IT,STACK \?CCL48
|
||||
PUT P-PRSI,TOFF,P-IT-OBJECT
|
||||
ICALL TELL-PRONOUN,P-IT-OBJECT,IT
|
||||
JUMP ?CND42
|
||||
?CCL48: IGRTR? 'CNT,ICNT \?PRG44
|
||||
?CND42: ZERO? OCNT /?CND33
|
||||
SET 'CNT,0
|
||||
?PRG52: MUL CNT,2
|
||||
ADD NOUN-PHRASE-HEADER-LEN,STACK >TOFF
|
||||
GET P-PRSO,TOFF
|
||||
EQUAL? IT,STACK \?CCL56
|
||||
PUT P-PRSO,TOFF,P-IT-OBJECT
|
||||
ICALL TELL-PRONOUN,P-IT-OBJECT,IT
|
||||
JUMP ?CND33
|
||||
?CCL56: IGRTR? 'CNT,OCNT \?PRG52
|
||||
?CND33: ZERO? OCNT \?CCL60
|
||||
SET 'NUM,OCNT
|
||||
JUMP ?CND58
|
||||
?CCL60: GRTR? OCNT,1 \?CCL62
|
||||
ZERO? ICNT \?CCL65
|
||||
SET 'OBJ,FALSE-VALUE
|
||||
JUMP ?CND63
|
||||
?CCL65: GET P-PRSI,3 >OBJ
|
||||
GET P-PRSI,4 >NP
|
||||
?CND63: SET 'NUM,OCNT
|
||||
JUMP ?CND58
|
||||
?CCL62: GRTR? ICNT,1 \?CCL69
|
||||
GET P-PRSO,3 >OBJ
|
||||
GET P-PRSI,4 >NP
|
||||
SET 'NUM,ICNT
|
||||
JUMP ?CND58
|
||||
?CCL69: SET 'NUM,1
|
||||
?CND58: ZERO? OBJ \?CND72
|
||||
EQUAL? ICNT,1 \?CND72
|
||||
GET P-PRSI,3 >OBJ
|
||||
GET P-PRSI,4 >NP
|
||||
?CND72: ZERO? LIT \?CCL80
|
||||
CALL1 SEE-VERB?
|
||||
ZERO? STACK /?CCL80
|
||||
ICALL1 TELL-TOO-DARK
|
||||
SET 'P-CONT,-1
|
||||
JUMP ?CND78
|
||||
?CCL80: EQUAL? PRSA,V?WALK \?CCL84
|
||||
ZERO? P-WALK-DIR /?PRD87
|
||||
PUSH P-WALK-DIR
|
||||
JUMP ?PEN85
|
||||
?PRD87: GET P-PRSO,3
|
||||
?PEN85: CALL PERFORM,PRSA,STACK >V
|
||||
JUMP ?CND78
|
||||
?CCL84: ZERO? NUM \?CCL89
|
||||
CALL2 PERFORM,PRSA >V
|
||||
SET 'PRSO,FALSE-VALUE
|
||||
SET 'PRSO-NP,FALSE-VALUE
|
||||
JUMP ?CND78
|
||||
?CCL89: GRTR? OCNT,1 \?CCL91
|
||||
EQUAL? PRSA,V?COUNT \?CCL91
|
||||
CALL PERFORM,PRSA,ROOMS >V
|
||||
JUMP ?CND78
|
||||
?CCL91: SET 'CNT,-1
|
||||
SET 'TMP,0
|
||||
?PRG94: INC 'CNT
|
||||
LESS? CNT,NUM /?CND96
|
||||
ZERO? TMP \?CND78
|
||||
ICALL1 MORE-SPECIFIC
|
||||
JUMP ?CND78
|
||||
?CND96: GRTR? ICNT,1 /?CCL102
|
||||
MUL CNT,2
|
||||
ADD STACK,NOUN-PHRASE-HEADER-LEN
|
||||
GET P-PRSO,STACK >OBJ1
|
||||
MUL CNT,2
|
||||
ADD STACK,4
|
||||
GET P-PRSO,STACK >NP1
|
||||
JUMP ?CND100
|
||||
?CCL102: MUL CNT,2
|
||||
ADD STACK,NOUN-PHRASE-HEADER-LEN
|
||||
GET P-PRSI,STACK >OBJ1
|
||||
MUL CNT,2
|
||||
ADD STACK,4
|
||||
GET P-PRSI,STACK >NP1
|
||||
?CND100: GRTR? NUM,1 /?CCL108
|
||||
GET NP1,3
|
||||
EQUAL? STACK,NP-QUANT-ALL \?CND107
|
||||
?CCL108: EQUAL? OBJ1,FALSE-VALUE,NOT-HERE-OBJECT \?CCL113
|
||||
ICALL2 NP-PRINT,NP1
|
||||
PRINTI ": "
|
||||
ICALL2 NP-CANT-SEE,NP1
|
||||
JUMP ?PRG94
|
||||
?CCL113: GET NP1,3
|
||||
EQUAL? STACK,NP-QUANT-ALL \?CCL115
|
||||
CALL VERB-ALL-TEST,OBJ1,OBJ
|
||||
ZERO? STACK /?PRG94
|
||||
?CCL115: CALL2 ACCESSIBLE?,OBJ1
|
||||
ZERO? STACK /?PRG94
|
||||
EQUAL? OBJ1,PLAYER /?PRG94
|
||||
EQUAL? OBJ1,IT \?CCL124
|
||||
ICALL2 DPRINT,P-IT-OBJECT
|
||||
JUMP ?CND122
|
||||
?CCL124: ICALL2 DPRINT,OBJ1
|
||||
?CND122: PRINTI ": "
|
||||
?CND107: SET 'TMP,TRUE-VALUE
|
||||
GRTR? ICNT,1 /?CCL127
|
||||
SET 'PRSO,OBJ1
|
||||
SET 'PRSO-NP,NP1
|
||||
SET 'PRSI,OBJ
|
||||
SET 'PRSI-NP,NP
|
||||
JUMP ?CND125
|
||||
?CCL127: SET 'PRSO,OBJ
|
||||
SET 'PRSO-NP,NP
|
||||
SET 'PRSI,OBJ1
|
||||
SET 'PRSI-NP,NP1
|
||||
?CND125: EQUAL? IT,PRSI,PRSO \?CND128
|
||||
CALL FIX-HIM-HER-IT,IT,P-IT-OBJECT
|
||||
ZERO? STACK /?PRG94
|
||||
?CND128: EQUAL? HER,PRSI,PRSO \?CND132
|
||||
CALL FIX-HIM-HER-IT,HER,P-HER-OBJECT
|
||||
ZERO? STACK /?PRG94
|
||||
?CND132: EQUAL? HIM,PRSI,PRSO \?CND136
|
||||
CALL FIX-HIM-HER-IT,HIM,P-HIM-OBJECT
|
||||
ZERO? STACK /?PRG94
|
||||
?CND136: ICALL2 QCONTEXT-CHECK,PRSO
|
||||
GET PARSE-RESULT,3
|
||||
GETB STACK,5 >XX
|
||||
ZERO? PRSO /?CND140
|
||||
BTST XX,128 /?CND140
|
||||
BTST XX,192 /?CND140
|
||||
CALL2 META-LOC,PRSO >V
|
||||
ZERO? V /?CND140
|
||||
IN? V,ROOMS \?CND140
|
||||
CALL2 META-LOC,WINNER
|
||||
CALL GLOBAL-IN?,PRSO,STACK
|
||||
ZERO? STACK \?CND140
|
||||
CALL2 META-LOC,WINNER
|
||||
EQUAL? V,STACK /?CND140
|
||||
ICALL2 NOT-HERE,PRSO
|
||||
JUMP ?PRG94
|
||||
?CND140: ZERO? PRSO /?CND149
|
||||
BAND 96,XX
|
||||
ZERO? STACK /?CND149
|
||||
BTST XX,128 /?CND149
|
||||
CALL ITAKE-CHECK,PRSO,XX >V
|
||||
EQUAL? M-FATAL,V /?CND78
|
||||
ZERO? V \?PRG94
|
||||
?CND149: ZERO? PRSI /?CND159
|
||||
GET PARSE-RESULT,3
|
||||
GETB STACK,9 >XX
|
||||
BAND 96,XX
|
||||
ZERO? STACK /?CND159
|
||||
BTST XX,128 /?CND159
|
||||
CALL ITAKE-CHECK,PRSI,XX >V
|
||||
EQUAL? M-FATAL,V /?CND78
|
||||
ZERO? V \?PRG94
|
||||
?CND159: CALL PERFORM,PRSA,PRSO,PRSI >V
|
||||
EQUAL? M-FATAL,V /?CND78
|
||||
EQUAL? P-CONT,-1 \?PRG94
|
||||
?CND78: SET 'OPRSO,PRSO
|
||||
ZERO? CLOCK-WAIT \?CND173
|
||||
CALL1 GAME-VERB?
|
||||
ZERO? STACK \?CND173
|
||||
LOC WINNER >V
|
||||
ZERO? V /?CND177
|
||||
IN? V,ROOMS /?CND177
|
||||
GETP V,P?ACTION
|
||||
CALL D-APPLY,STR?16,STACK,M-END >V
|
||||
?CND177: GETP HERE,P?ACTION
|
||||
CALL D-APPLY,STR?16,STACK,M-END >V
|
||||
?CND173: EQUAL? M-FATAL,V \?CND181
|
||||
SET 'P-CONT,-1
|
||||
?CND181: ZERO? CLOCK-WAIT \?CND183
|
||||
CALL1 GAME-VERB?
|
||||
ZERO? STACK \?CND183
|
||||
SET 'CLOCKER-RUNNING,1
|
||||
CALL1 CLOCKER >V
|
||||
SET 'CLOCKER-RUNNING,2
|
||||
EQUAL? M-FATAL,V \?CND183
|
||||
SET 'P-CONT,-1
|
||||
?CND183: GET PARSE-RESULT,12 >V
|
||||
ZERO? V /?CND1
|
||||
GET V,1
|
||||
LESS? 1,STACK \?CND1
|
||||
EQUAL? P-CONT,-1 /?CND1
|
||||
CALL2 HACK-TELL-1,V >V
|
||||
EQUAL? M-FATAL,V \?CCL196
|
||||
SET 'P-CONT,-1
|
||||
JUMP ?CND1
|
||||
?CCL196: ZERO? V /?CND1
|
||||
JUMP ?PRG6
|
||||
?CCL3: SET 'CLOCK-WAIT,TRUE-VALUE
|
||||
SET 'P-CONT,FALSE-VALUE
|
||||
?CND1: SET 'PRSA,FALSE-VALUE
|
||||
SET 'PRSO,FALSE-VALUE
|
||||
SET 'PRSO-NP,FALSE-VALUE
|
||||
SET 'PRSI,FALSE-VALUE
|
||||
RETURN PRSI
|
||||
|
||||
|
||||
.FUNCT FIX-HIM-HER-IT,PRON,OBJ
|
||||
ZERO? OBJ \?CCL3
|
||||
ICALL1 MORE-SPECIFIC
|
||||
RFALSE
|
||||
?CCL3: CALL2 VISIBLE?,OBJ
|
||||
ZERO? STACK \?CCL5
|
||||
ICALL2 NOT-HERE,OBJ
|
||||
RFALSE
|
||||
?CCL5: EQUAL? PRSO,PRON \?CND6
|
||||
SET 'PRSO,OBJ
|
||||
ICALL TELL-PRONOUN,OBJ,PRON
|
||||
?CND6: EQUAL? PRSI,PRON \TRUE
|
||||
SET 'PRSI,OBJ
|
||||
ICALL TELL-PRONOUN,OBJ,PRON
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT TELL-PRONOUN,OBJ,PRON
|
||||
FSET? PRON,TOUCHBIT /FALSE
|
||||
EQUAL? OPRSO,OBJ /FALSE
|
||||
PRINTI "["""
|
||||
ICALL2 DPRINT,PRON
|
||||
PRINTI """ meaning "
|
||||
ICALL2 TELL-THE,OBJ
|
||||
PRINTR "]"
|
||||
|
||||
|
||||
.FUNCT FIND-A-WINNER,RM,OTHER,WHO,N
|
||||
ASSIGNED? 'RM /?CND1
|
||||
SET 'RM,HERE
|
||||
?CND1: ZERO? QCONTEXT /?CCL5
|
||||
IN? QCONTEXT,RM \?CCL5
|
||||
RETURN QCONTEXT
|
||||
?CCL5: FIRST? RM >OTHER /?BOGUS8
|
||||
?BOGUS8: SET 'WHO,FALSE-VALUE
|
||||
?PRG9: ZERO? OTHER \?CCL13
|
||||
RETURN WHO
|
||||
?CCL13: FSET? OTHER,PERSONBIT \?CND11
|
||||
FSET? OTHER,INVISIBLE /?CND11
|
||||
EQUAL? OTHER,PLAYER /?CND11
|
||||
IGRTR? 'N,1 /FALSE
|
||||
SET 'WHO,OTHER
|
||||
?CND11: NEXT? OTHER >OTHER /?PRG9
|
||||
JUMP ?PRG9
|
||||
|
||||
|
||||
.FUNCT QCONTEXT-CHECK,PER,WHO
|
||||
EQUAL? PRSA,V?TELL-ABOUT,V?SHOW \FALSE
|
||||
EQUAL? PER,PLAYER \FALSE
|
||||
CALL2 FIND-A-WINNER,HERE >WHO
|
||||
ZERO? WHO /?CND7
|
||||
SET 'QCONTEXT,WHO
|
||||
?CND7: CALL1 QCONTEXT-GOOD?
|
||||
ZERO? STACK /FALSE
|
||||
EQUAL? WINNER,PLAYER \FALSE
|
||||
SET 'WINNER,QCONTEXT
|
||||
ICALL2 TELL-SAID-TO,QCONTEXT
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT TELL-SAID-TO,PER
|
||||
PRINTI "[said to "
|
||||
ICALL2 DPRINT,PER
|
||||
PRINTR "]"
|
||||
|
||||
|
||||
.FUNCT QCONTEXT-GOOD?
|
||||
ZERO? QCONTEXT /FALSE
|
||||
FSET? QCONTEXT,PERSONBIT \FALSE
|
||||
CALL2 META-LOC,QCONTEXT
|
||||
EQUAL? HERE,STACK \FALSE
|
||||
RETURN QCONTEXT
|
||||
|
||||
|
||||
.FUNCT META-LOC,OBJ,INV,L
|
||||
LOC OBJ >L
|
||||
?PRG1: EQUAL? FALSE-VALUE,OBJ,L /FALSE
|
||||
EQUAL? L,LOCAL-GLOBALS,GLOBAL-OBJECTS,GENERIC-OBJECTS \?CCL7
|
||||
RETURN L
|
||||
?CCL7: IN? OBJ,ROOMS \?CCL9
|
||||
RETURN OBJ
|
||||
?CCL9: ZERO? INV /?CND10
|
||||
FSET? OBJ,INVISIBLE /FALSE
|
||||
?CND10: SET 'OBJ,L
|
||||
LOC OBJ >L
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT CANT-UNDO
|
||||
PRINTR "[I can't undo that now.]"
|
||||
|
||||
|
||||
.FUNCT NOT-HERE-VERB?,V
|
||||
EQUAL? V,V?WALK-TO,V?RESEARCH /TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT SEE-VERB?
|
||||
EQUAL? PRSA,V?SEARCH,V?READ,V?LOOK-UNDER /TRUE
|
||||
EQUAL? PRSA,V?LOOK-INSIDE,V?LOOK-DOWN,V?LOOK-BEHIND /TRUE
|
||||
EQUAL? PRSA,V?LOOK,V?TAKE,V?FIND /TRUE
|
||||
EQUAL? PRSA,V?EXAMINE,V?COUNT,V?CHASTISE /TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT PERFORM,PA,PO,PI,V,OA,OO,OI,OQ,OS,X
|
||||
SET 'OA,PRSA
|
||||
SET 'OO,PRSO
|
||||
SET 'OI,PRSI
|
||||
ZERO? OO /?CCL3
|
||||
EQUAL? OO,PI \?CCL3
|
||||
SET 'OBJ-SWAP,TRUE-VALUE
|
||||
JUMP ?CND1
|
||||
?CCL3: ZERO? OI /?CCL7
|
||||
EQUAL? OI,PO \?CCL7
|
||||
SET 'OBJ-SWAP,TRUE-VALUE
|
||||
JUMP ?CND1
|
||||
?CCL7: SET 'OBJ-SWAP,FALSE-VALUE
|
||||
?CND1: SET 'PRSA,PA
|
||||
SET 'PRSI,PI
|
||||
SET 'PRSO,PO
|
||||
SET 'V,FALSE-VALUE
|
||||
ZERO? PRSI /?CND10
|
||||
ICALL2 THIS-IS-IT,PRSI
|
||||
?CND10: ZERO? PRSO /?CND12
|
||||
EQUAL? PRSA,V?WALK /?CND12
|
||||
ICALL2 THIS-IS-IT,PRSO
|
||||
?CND12: EQUAL? WINNER,PLAYER /?CND16
|
||||
ICALL2 THIS-IS-IT,WINNER
|
||||
?CND16: SET 'PO,PRSO
|
||||
SET 'PI,PRSI
|
||||
EQUAL? PRSA,V?STOUCH,V?SWRAP /?CND18
|
||||
EQUAL? PRSA,V?STHROW,V?SSHOW,V?SPUT-ON /?CND18
|
||||
EQUAL? PRSA,V?SSEARCH-OBJECT-FOR,V?SRIDE-DIR,V?ASK-ABOUT /?CND18
|
||||
GETP WINNER,P?ACTION
|
||||
CALL D-APPLY,STR?17,STACK,M-WINNER >V
|
||||
?CND18: ZERO? V \?CND24
|
||||
LOC WINNER
|
||||
IN? STACK,ROOMS /?CND24
|
||||
LOC WINNER
|
||||
GETP STACK,P?ACTION
|
||||
CALL D-APPLY,STR?18,STACK,M-BEG >V
|
||||
?CND24: ZERO? V \?CND28
|
||||
GETP HERE,P?ACTION
|
||||
CALL D-APPLY,STR?18,STACK,M-BEG >V
|
||||
?CND28: ZERO? V \?CND30
|
||||
GET PREACTIONS,PA
|
||||
CALL D-APPLY,STR?19,STACK >V
|
||||
?CND30: SET 'NOW-PRSI,1
|
||||
ZERO? V \?CND33
|
||||
ZERO? PI /?CND33
|
||||
EQUAL? PRSA,V?WALK /?CND33
|
||||
LOC PI
|
||||
ZERO? STACK /?CND33
|
||||
LOC PI
|
||||
GETP STACK,P?CONTFCN >V
|
||||
ZERO? V /?CND33
|
||||
CALL D-APPLY,STR?20,V,M-CONTAINER >V
|
||||
?CND33: ZERO? V \?CND41
|
||||
ZERO? PI /?CND41
|
||||
EQUAL? PI,GLOBAL-HERE \?CND45
|
||||
GETP HERE,P?ACTION
|
||||
CALL D-APPLY,STR?21,STACK >V
|
||||
?CND45: ZERO? V \?CND41
|
||||
GETP PI,P?ACTION
|
||||
CALL D-APPLY,STR?21,STACK >V
|
||||
?CND41: SET 'NOW-PRSI,0
|
||||
ZERO? V \?CND49
|
||||
ZERO? PO /?CND49
|
||||
EQUAL? PRSA,V?WALK /?CND49
|
||||
LOC PO
|
||||
ZERO? STACK /?CND49
|
||||
LOC PO
|
||||
GETP STACK,P?CONTFCN >V
|
||||
ZERO? V /?CND49
|
||||
CALL D-APPLY,STR?20,V,M-CONTAINER >V
|
||||
?CND49: ZERO? V \?CND57
|
||||
ZERO? PO /?CND57
|
||||
EQUAL? PRSA,V?WALK /?CND57
|
||||
EQUAL? PO,GLOBAL-HERE \?CND62
|
||||
GETP HERE,P?ACTION
|
||||
CALL D-APPLY,STR?22,STACK >V
|
||||
?CND62: ZERO? V \?CND57
|
||||
GETP PO,P?ACTION
|
||||
CALL D-APPLY,STR?22,STACK >V
|
||||
?CND57: ZERO? V \?CND66
|
||||
GET ACTIONS,PA
|
||||
CALL D-APPLY,FALSE-VALUE,STACK >V
|
||||
?CND66: EQUAL? M-FATAL,V \?CND69
|
||||
SET 'P-CONT,-1
|
||||
?CND69: SET 'PRSA,OA
|
||||
SET 'PRSO,OO
|
||||
SET 'PRSI,OI
|
||||
RETURN V
|
||||
|
||||
|
||||
.FUNCT TELL-TOO-DARK
|
||||
SET 'P-CONT,-1
|
||||
PRINT TOO-DARK
|
||||
EQUAL? PRSA,V?LOOK \?CCL3
|
||||
CALL1 GRUE-PIT-WARNING
|
||||
RSTACK
|
||||
?CCL3: CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT ITAKE-CHECK,OBJ,BITS,TAKEN
|
||||
EQUAL? OBJ,IT \?CND1
|
||||
SET 'OBJ,P-IT-OBJECT
|
||||
?CND1: CALL HELD?,OBJ,WINNER
|
||||
ZERO? STACK \FALSE
|
||||
EQUAL? OBJ,HANDS,ROOMS /FALSE
|
||||
FSET? OBJ,TRYTAKEBIT /?CND8
|
||||
EQUAL? WINNER,PLAYER /?CCL12
|
||||
SET 'TAKEN,TRUE-VALUE
|
||||
JUMP ?CND8
|
||||
?CCL12: BTST BITS,32 \?CND8
|
||||
CALL ITAKE,FALSE-VALUE,OBJ
|
||||
EQUAL? STACK,TRUE-VALUE \?CND8
|
||||
SET 'TAKEN,TRUE-VALUE
|
||||
?CND8: ZERO? TAKEN \FALSE
|
||||
BTST BITS,64 \FALSE
|
||||
BTST BITS,128 /FALSE
|
||||
PRINTC 91
|
||||
EQUAL? WINNER,PLAYER \?CCL24
|
||||
PRINTI "You are"
|
||||
JUMP ?CND22
|
||||
?CCL24: ICALL2 TELL-CTHE,WINNER
|
||||
PRINTI " is"
|
||||
?CND22: PRINTI "n't holding "
|
||||
ICALL2 TELL-THE,OBJ
|
||||
ICALL2 THIS-IS-IT,OBJ
|
||||
PRINTR "!]"
|
||||
|
||||
|
||||
.FUNCT D-APPLY,STR,FCN,FOO,RES
|
||||
ZERO? FCN /FALSE
|
||||
ZERO? FOO /?CCL6
|
||||
CALL FCN,FOO >RES
|
||||
RETURN RES
|
||||
?CCL6: CALL FCN >RES
|
||||
RETURN RES
|
||||
|
||||
|
||||
.FUNCT NOT-HERE,OBJ,CLOCK
|
||||
ZERO? CLOCK \?CND1
|
||||
SET 'CLOCK-WAIT,TRUE-VALUE
|
||||
PRINTI "[But"
|
||||
?CND1: PRINTC 32
|
||||
ICALL2 TELL-THE,OBJ
|
||||
PRINTI " isn't "
|
||||
CALL2 VISIBLE?,OBJ
|
||||
ZERO? STACK /?CCL5
|
||||
PRINTI "close enough"
|
||||
CALL1 SPEAKING-VERB?
|
||||
ZERO? STACK /?CND6
|
||||
PRINTI " to hear you"
|
||||
?CND6: PRINTC 46
|
||||
JUMP ?CND3
|
||||
?CCL5: PRINTI "here!"
|
||||
?CND3: ICALL2 THIS-IS-IT,OBJ
|
||||
ZERO? CLOCK \?CND8
|
||||
PRINTC 93
|
||||
?CND8: CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT SPEAKING-VERB?,A
|
||||
ASSIGNED? 'A /?CND1
|
||||
SET 'A,PRSA
|
||||
?CND1: EQUAL? A,V?ASK-ABOUT,V?ASK-FOR,V?HELLO /TRUE
|
||||
EQUAL? A,V?NO,V?TELL,V?TELL-ABOUT /TRUE
|
||||
EQUAL? A,V?YES /TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT GET-OWNER,OBJ,TMP,NP
|
||||
CALL2 GET-NP,OBJ >NP
|
||||
ZERO? NP /FALSE
|
||||
GET NP,4 >TMP
|
||||
ZERO? TMP \?CTR5
|
||||
GET NP,1 >TMP
|
||||
ZERO? TMP /?CCL6
|
||||
GET TMP,2 >TMP
|
||||
ZERO? TMP /?CCL6
|
||||
?CTR5: LESS? 0,TMP \FALSE
|
||||
GRTR? TMP,LAST-OBJECT /FALSE
|
||||
RETURN TMP
|
||||
?CCL6: GETP OBJ,P?OWNER >TMP
|
||||
ZERO? TMP /FALSE
|
||||
LESS? 0,TMP \?CCL17
|
||||
GRTR? TMP,LAST-OBJECT \FALSE
|
||||
?CCL17: RETURN PLAYER
|
||||
|
||||
|
||||
.FUNCT GET-NP,OBJ,PRSI?
|
||||
SET 'PRSI?,NOW-PRSI
|
||||
EQUAL? OBJ,PRSO,PRSI \FALSE
|
||||
ZERO? OBJ /?CND1
|
||||
EQUAL? OBJ,PRSO \?CCL7
|
||||
SET 'PRSI?,FALSE-VALUE
|
||||
JUMP ?CND1
|
||||
?CCL7: SET 'PRSI?,TRUE-VALUE
|
||||
?CND1: ZERO? OBJ-SWAP /?CCL10
|
||||
ZERO? PRSI? /?CCL13
|
||||
RETURN PRSO-NP
|
||||
?CCL13: RETURN PRSI-NP
|
||||
?CCL10: ZERO? PRSI? /?CCL15
|
||||
RETURN PRSI-NP
|
||||
?CCL15: RETURN PRSO-NP
|
||||
|
||||
|
||||
.FUNCT NOUN-USED?,OBJ,WD1,WD2,WD3,X
|
||||
CALL2 GET-NP,OBJ >X
|
||||
ZERO? X /FALSE
|
||||
GET X,2 >X
|
||||
ZERO? X /FALSE
|
||||
EQUAL? X,WD1,WD2,WD3 /TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT ADJ-USED?,OBJ,WD1,WD2,WD3,NP,CT
|
||||
CALL2 GET-NP,OBJ >NP
|
||||
ZERO? NP /FALSE
|
||||
GET NP,1 >NP
|
||||
ZERO? NP /FALSE
|
||||
GET NP,2
|
||||
EQUAL? PLAYER,STACK \?CCL8
|
||||
EQUAL? W?MY,WD1,WD2,WD3 \?CCL8
|
||||
RETURN W?MY
|
||||
?CCL8: GET NP,4 >CT
|
||||
GRTR? CT,0 \FALSE
|
||||
ADD NP,10 >NP
|
||||
INTBL? WD1,NP,CT \?CCL15
|
||||
RETURN WD1
|
||||
?CCL15: ZERO? WD2 /FALSE
|
||||
INTBL? WD2,NP,CT \?CCL20
|
||||
RETURN WD2
|
||||
?CCL20: ZERO? WD3 /FALSE
|
||||
INTBL? WD3,NP,CT \FALSE
|
||||
RETURN WD3
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.ENDI
|
|
@ -0,0 +1,943 @@
|
|||
"TOP for NEW PARSER
|
||||
Copyright (C) 1988 Infocom, Inc. All rights reserved."
|
||||
|
||||
<INCLUDE "BASEDEFS" "PBITDEFS" "PDEFS">
|
||||
|
||||
<FILE-FLAGS MDL-ZIL?>
|
||||
|
||||
<BEGIN-SEGMENT 0>
|
||||
|
||||
<DEFAULTS-DEFINED
|
||||
ADJ-USED?
|
||||
ASKING-VERB-WORD?
|
||||
CANT-UNDO
|
||||
CAPITAL-NOUN?
|
||||
COLLECTIVE-VERB?
|
||||
DIR-VERB?
|
||||
DIR-VERB-PRSI?
|
||||
DIR-VERB-WORD?
|
||||
FIND-A-WINNER
|
||||
GAME-VERB?
|
||||
;I-ASSUME-STRING
|
||||
ITAKE-CHECK
|
||||
META-LOC
|
||||
MORE-SPECIFIC
|
||||
NO-M-WINNER-VERB?
|
||||
NOT-HERE
|
||||
NOT-HERE-VERB?
|
||||
NOUN-USED?
|
||||
OWNERS
|
||||
P-PRONOUNS
|
||||
QCONTEXT-CHECK
|
||||
SEE-VERB?
|
||||
SIBREAKS
|
||||
SPEAKING-VERB?
|
||||
;TELL-I-ASSUME
|
||||
TELL-PRONOUN
|
||||
TELL-SAID-TO
|
||||
TELL-TOO-DARK
|
||||
VERB-ALL-TEST>
|
||||
|
||||
<DEFAULT-DEFINITION SIBREAKS
|
||||
<SETG20 SIBREAKS ".,\"'!?">>
|
||||
<DEFAULT-DEFINITION OWNERS
|
||||
<CONSTANT OWNERS <TABLE (PURE LENGTH) PLAYER>>>
|
||||
|
||||
;<DEFAULT-DEFINITION I-ASSUME-STRING
|
||||
<CONSTANT I-ASSUME "[I assume you mean:">>
|
||||
|
||||
;<DEFAULT-DEFINITION TELL-I-ASSUME
|
||||
<DEFINE TELL-I-ASSUME (OBJ "OPT" PRON)
|
||||
<COND (<AND <NOT <FSET? .PRON ,TOUCHBIT>>
|
||||
<NOT <EQUAL? ,OPRSO .OBJ>>>
|
||||
<FSET .PRON ,TOUCHBIT>
|
||||
<TELL ,I-ASSUME>
|
||||
<TELL !\ >
|
||||
<TELL-THE .OBJ>
|
||||
<TELL ".]" CR>)>>>
|
||||
|
||||
<DEFAULT-DEFINITION MORE-SPECIFIC
|
||||
<DEFINE MORE-SPECIFIC ()
|
||||
<SETG CLOCK-WAIT T>
|
||||
<TELL "[Please be more specific.]" CR>>>
|
||||
|
||||
<DEFMAC VERB? ("TUPLE" ATMS "AUX" (O ()) (L ()))
|
||||
<REPEAT ()
|
||||
<COND (<EMPTY? .ATMS>
|
||||
<RETURN!- <COND (<LENGTH? .O 1> <NTH .O 1>)
|
||||
(ELSE <FORM OR !.O>)>>)>
|
||||
<REPEAT ()
|
||||
<COND (<EMPTY? .ATMS> <RETURN!->)>
|
||||
<SET ATM <NTH .ATMS 1>>
|
||||
<SET L
|
||||
(<CHTYPE <PARSE <STRING "V?"<SPNAME .ATM>>> GVAL>
|
||||
!.L)>
|
||||
<SET ATMS <REST .ATMS>>
|
||||
<COND (<==? <LENGTH .L> 3> <RETURN!->)>>
|
||||
<SET O (<FORM EQUAL? ',PRSA !.L> !.O)>
|
||||
<SET L ()>>>
|
||||
|
||||
<DEFMAC DOBJ? ("TUPLE" ATMS "AUX" (O ()) (L ()))
|
||||
<REPEAT ()
|
||||
<COND (<EMPTY? .ATMS>
|
||||
<RETURN!- <COND (<LENGTH? .O 1> <NTH .O 1>)
|
||||
(ELSE <FORM OR !.O>)>>)>
|
||||
<REPEAT ()
|
||||
<COND (<EMPTY? .ATMS> <RETURN!->)>
|
||||
<SET ATM <NTH .ATMS 1>>
|
||||
<SET L (<COND (<TYPE? .ATM ATOM>
|
||||
<CHTYPE .ATM GVAL>)
|
||||
(T .ATM)>
|
||||
!.L)>
|
||||
<SET ATMS <REST .ATMS>>
|
||||
<COND (<==? <LENGTH .L> 3> <RETURN!->)>>
|
||||
<SET O (<FORM EQUAL? ',PRSO !.L> !.O)>
|
||||
<SET L ()>>>
|
||||
|
||||
<DEFMAC IOBJ? ("TUPLE" ATMS "AUX" (O ()) (L ()))
|
||||
<REPEAT ()
|
||||
<COND (<EMPTY? .ATMS>
|
||||
<RETURN!- <COND (<LENGTH? .O 1> <NTH .O 1>)
|
||||
(ELSE <FORM OR !.O>)>>)>
|
||||
<REPEAT ()
|
||||
<COND (<EMPTY? .ATMS> <RETURN!->)>
|
||||
<SET ATM <NTH .ATMS 1>>
|
||||
<SET L (<COND (<TYPE? .ATM ATOM>
|
||||
<CHTYPE .ATM GVAL>)
|
||||
(T .ATM)>
|
||||
!.L)>
|
||||
<SET ATMS <REST .ATMS>>
|
||||
<COND (<==? <LENGTH .L> 3> <RETURN!->)>>
|
||||
<SET O (<FORM EQUAL? ',PRSI !.L> !.O)>
|
||||
<SET L ()>>>
|
||||
|
||||
<DEFMAC PROB ('BASE?)
|
||||
<FORM NOT <FORM L? .BASE? '<RANDOM 100>>>>
|
||||
|
||||
<DEFMAC T? ('TERM) <FORM NOT <FORM ZERO? .TERM>>>
|
||||
|
||||
<IF-P-DEBUGGING-PARSER
|
||||
<SYNTAX \#DBG = V-PDEBUG>
|
||||
|
||||
<GLOBAL P-DBUG:FLAG <>>
|
||||
<GLOBAL IDEBUG:FLAG <>>
|
||||
|
||||
<DEFINE V-PDEBUG ()
|
||||
<COND (<T? ,PRSO>
|
||||
<SETG IDEBUG <NOT ,IDEBUG>>
|
||||
<TELL !\{ N ,IDEBUG "}" CR>)
|
||||
(<SETG P-DBUG <NOT ,P-DBUG>>
|
||||
<TELL "Find them bugs, boss!" CR>)
|
||||
(T <TELL "No bugs left, eh?" CR>)>>>
|
||||
|
||||
<SETG P-PRSI <>>
|
||||
<SETG P-PRSO <>>
|
||||
<SETG PRSA 0>
|
||||
<IF-P-BE-VERB
|
||||
<GLOBAL PRSQ 0>
|
||||
<GLOBAL PRSS:OBJECT 0>>
|
||||
<GLOBAL PRSI:OBJECT 0>
|
||||
<GLOBAL PRSO:OBJECT 0>
|
||||
|
||||
<GLOBAL P-MULT <>>
|
||||
<GLOBAL OPRSO <>>
|
||||
<GLOBAL P-CONT:NUMBER 0>
|
||||
|
||||
<CONSTANT P-LEXWORDS 1> "Byte offset to # of entries in LEXV"
|
||||
<CONSTANT P-LEXSTART 1> "Word offset to start of LEXV entries"
|
||||
<CONSTANT P-LEXELEN 2> "Number of words per LEXV entry"
|
||||
<CONSTANT P-WORDLEN 4>
|
||||
|
||||
<GLOBAL P-WON <>>
|
||||
|
||||
"<CONSTANT M-FATAL 2>"
|
||||
<DEFMAC RFATAL ()
|
||||
'<PROG () <PUSH 2> <RSTACK>>>
|
||||
|
||||
"<CONSTANT M-BEG 1>
|
||||
<CONSTANT M-END 6>
|
||||
<CONSTANT M-CONT 7>
|
||||
<CONSTANT M-WINNER 8>"
|
||||
|
||||
<DEFINE MAIN-LOOP ("AUX" X) <REPEAT () <SET X <MAIN-LOOP-1>>>>
|
||||
|
||||
<GLOBAL P-PRSA-WORD <>>
|
||||
|
||||
<GLOBAL PRSO-NP <>>
|
||||
<GLOBAL PRSI-NP <>>
|
||||
<GLOBAL CLOCKER-RUNNING:NUMBER 2>
|
||||
|
||||
<DEFAULT-DEFINITION DIR-VERB?
|
||||
<DEFMAC DIR-VERB? () '<VERB? WALK>>>
|
||||
|
||||
<DEFAULT-DEFINITION DIR-VERB-PRSI?
|
||||
<DEFINE DIR-VERB-PRSI? (NP)
|
||||
<AND <EQUAL? <PARSE-ACTION ,PARSE-RESULT>
|
||||
,V?MOVE-DIR ,V?RIDE-DIR ,V?ROLL-DIR ,V?SET-DIR>
|
||||
<NOT <EQUAL? <NOUN-PHRASE-OBJ1 .NP> ,INTDIR ,LEFT-RIGHT>>>>>
|
||||
|
||||
<DEFAULT-DEFINITION DIR-VERB-WORD?
|
||||
<DEFINE DIR-VERB-WORD? (WD) <EQUAL? .WD ,W?WALK ,W?GO ,W?RUN>>>
|
||||
|
||||
<DEFAULT-DEFINITION COLLECTIVE-VERB?
|
||||
<DEFMAC COLLECTIVE-VERB? () '<VERB? COUNT ;COMPARE>>>
|
||||
|
||||
<IF-UNDO <GLOBAL P-CAN-UNDO:NUMBER 0>>
|
||||
|
||||
<DEFINE MAIN-LOOP-1 ACT ("AUX" ICNT OCNT NUM (OBJ <>) V OBJ1 (NP <>) NP1)
|
||||
<COND (<SETG P-WON <PARSER>>
|
||||
<IFN-P-BE-VERB <COND (<L? <SETG P-ERRS <- ,P-ERRS 1>> 0>
|
||||
<SETG P-ERRS 0>)>>
|
||||
<PROG ()
|
||||
<SETG PRSA <PARSE-ACTION ,PARSE-RESULT>>
|
||||
;<COND (<ZERO? <PARSE-SUBJ ,PARSE-RESULT>>
|
||||
<SETG PRSA <PARSE-ACTION ,PARSE-RESULT>>)
|
||||
(<NOT <EQUAL? <SET V <PARSE-QW ,PARSE-RESULT>> 0 1>>
|
||||
<SETG PRSA <SYNTAX-ID
|
||||
<GET-SYNTAX <VERB-ONE <WORD-VERB-STUFF .V>> 1 1>>>)
|
||||
(T
|
||||
<SETG PRSA <SYNTAX-ID <PARSE-QUERY-SYNTAX ,PARSE-RESULT>>>)>
|
||||
<IF-UNDO
|
||||
<COND (<VERB? UNDO>
|
||||
;<AND <EQUAL? <ZGET ,TLEXV 0> ,W?UNDO>
|
||||
<EQUAL? ,P-LEN 1>
|
||||
<V-UNDO>>
|
||||
<RETURN <PERFORM ,PRSA> .ACT>)
|
||||
(T
|
||||
<SETG P-CAN-UNDO <ISAVE>>
|
||||
<COND (<EQUAL? ,P-CAN-UNDO 2>
|
||||
<COND (<OR ;<T? ,P-CONT> <VERB? SAVE>>
|
||||
<CANT-UNDO>)
|
||||
(T
|
||||
<SETG P-CONT -1>
|
||||
<V-$REFRESH>
|
||||
;<TELL "[Undone.]|">)>
|
||||
<RETURN <> .ACT>)>)>>
|
||||
<SETG P-PRSO <PARSE-OBJ1 ,PARSE-RESULT>>
|
||||
<SETG P-PRSI <PARSE-OBJ2 ,PARSE-RESULT>>
|
||||
<COND (<AND ,P-PRSO
|
||||
<==? ,INTDIR <NOUN-PHRASE-OBJ1 ,P-PRSO>>>
|
||||
<SETG P-DIRECTION
|
||||
<WORD-DIR-ID
|
||||
<NP-NAME <NOUN-PHRASE-NP1 ,P-PRSO>>>>)
|
||||
(<AND ,P-PRSI
|
||||
<==? ,INTDIR <NOUN-PHRASE-OBJ1 ,P-PRSI>>>
|
||||
<SETG P-DIRECTION
|
||||
<WORD-DIR-ID
|
||||
<NP-NAME <NOUN-PHRASE-NP1 ,P-PRSI>>>>)>
|
||||
<SETG P-PRSA-WORD <PARSE-VERB ,PARSE-RESULT>>
|
||||
<SETG CLOCK-WAIT <>>
|
||||
<SET ICNT 0>
|
||||
<SET OCNT 0>
|
||||
<COND (,P-PRSI
|
||||
<SET ICNT <NOUN-PHRASE-COUNT ,P-PRSI>>
|
||||
<COND (<NOT <0? .ICNT>> ;<NP-MULTI? ,P-PRSI>
|
||||
<SETG P-MULT .ICNT>)>)>
|
||||
<COND (,P-PRSO
|
||||
<SET OCNT <NOUN-PHRASE-COUNT ,P-PRSO>>
|
||||
<COND (<NOT <0? .OCNT>> ;<NP-MULTI? ,P-PRSO>
|
||||
<SETG P-MULT .OCNT>)>)>
|
||||
<COND (<AND <ZERO? .OCNT> <ZERO? .ICNT>>
|
||||
T)
|
||||
(<AND <NOT <DIR-VERB?>>
|
||||
<T? ,P-IT-OBJECT>
|
||||
<ACCESSIBLE? ,P-IT-OBJECT>>
|
||||
<COND (<T? .ICNT>
|
||||
<REPEAT ((CNT 0) TOFF)
|
||||
<SET TOFF <+ ,NOUN-PHRASE-HEADER-LEN <* .CNT 2>>>
|
||||
<COND (<==? ,IT <ZGET ,P-PRSI .TOFF>>
|
||||
<ZPUT ,P-PRSI .TOFF ,P-IT-OBJECT>
|
||||
<TELL-PRONOUN ,P-IT-OBJECT ,IT>
|
||||
<RETURN>)
|
||||
(<G? <SET CNT <+ .CNT 1>> .ICNT>
|
||||
<RETURN>)>>)>
|
||||
<COND (<T? .OCNT>
|
||||
<REPEAT ((CNT 0) TOFF)
|
||||
<SET TOFF <+ ,NOUN-PHRASE-HEADER-LEN <* .CNT 2>>>
|
||||
<COND (<==? ,IT <ZGET ,P-PRSO .TOFF>>
|
||||
<ZPUT ,P-PRSO .TOFF ,P-IT-OBJECT>
|
||||
<TELL-PRONOUN ,P-IT-OBJECT ,IT>
|
||||
<RETURN>)
|
||||
(<G? <SET CNT <+ .CNT 1>> .OCNT>
|
||||
<RETURN>)>>)>)>
|
||||
<SET NUM
|
||||
<COND (<0? .OCNT> .OCNT)
|
||||
(<G? .OCNT 1>
|
||||
<COND (<0? .ICNT> <SET OBJ <>>)
|
||||
(T
|
||||
<SET OBJ <OR <NOUN-PHRASE-OBJ1 ,P-PRSI>
|
||||
;,NOT-HERE-OBJECT>>
|
||||
<SET NP <NOUN-PHRASE-NP1 ,P-PRSI>>)>
|
||||
.OCNT)
|
||||
(<G? .ICNT 1>
|
||||
<SET OBJ <OR <NOUN-PHRASE-OBJ1 ,P-PRSO>
|
||||
;,NOT-HERE-OBJECT>>
|
||||
<SET NP <NOUN-PHRASE-NP1 ,P-PRSI>>
|
||||
.ICNT)
|
||||
(T 1)>>
|
||||
<COND (<AND <ZERO? .OBJ> <1? .ICNT>>
|
||||
<SET OBJ <OR <NOUN-PHRASE-OBJ1 ,P-PRSI>
|
||||
;,NOT-HERE-OBJECT>>
|
||||
<SET NP <NOUN-PHRASE-NP1 ,P-PRSI>>)>
|
||||
<IF-P-BE-VERB
|
||||
<COND (<SET V <PARSE-QUERY-SYNTAX ,PARSE-RESULT>>
|
||||
<SETG PRSQ ;V <SYNTAX-ID .V>>)>
|
||||
<COND (<SET XX <PARSE-SUBJ ,PARSE-RESULT>>
|
||||
<SETG PRSS ;XX <NOUN-PHRASE-OBJ1 .XX>>)>
|
||||
;<SET V <PERFORM ,PRSA ,PRSO ,PRSI ;.PI ;.V ;.XX>>>
|
||||
<COND (<AND <ZERO? ,LIT>
|
||||
<SEE-VERB?>>
|
||||
<TELL-TOO-DARK>
|
||||
<SETG P-CONT -1>
|
||||
;<RTRUE>)
|
||||
(<DIR-VERB?>
|
||||
<SET V <PERFORM ,PRSA <OR ,P-WALK-DIR
|
||||
<NOUN-PHRASE-OBJ1 ,P-PRSO>>>>)
|
||||
(<0? .NUM>
|
||||
<SET V <PERFORM ,PRSA>>
|
||||
<SETG PRSO <>>
|
||||
<SETG PRSO-NP <>>)
|
||||
(<AND ;<EQUAL? .OCNT 1>
|
||||
<G? .OCNT ;.ICNT 1> ;<G? .NUM 1>
|
||||
<COLLECTIVE-VERB?>>
|
||||
<SET V <PERFORM ,PRSA ,ROOMS>>)
|
||||
(T
|
||||
<REPEAT (XX (CNT -1) ;(X 0) (TMP 0) ;PI)
|
||||
<SET CNT <+ .CNT 1>>
|
||||
<COND (<G=? .CNT .NUM>
|
||||
<COND ;(<G? .X 0>
|
||||
<TELL "The ">
|
||||
<COND (<NOT <EQUAL? .X .NUM>>
|
||||
<TELL "other ">)>
|
||||
<TELL "object">
|
||||
<COND (<NOT <EQUAL? .X 1>>
|
||||
<TELL !\s>)>
|
||||
<TELL " that you mentioned ">
|
||||
<COND (<NOT <EQUAL? .X 1>>
|
||||
<TELL "are">)
|
||||
(T <TELL "is">)>
|
||||
<TELL "n't here." CR>)
|
||||
(<ZERO? .TMP>
|
||||
<MORE-SPECIFIC>)>
|
||||
<RETURN>)>
|
||||
<COND (<NOT <G? .ICNT 1>>
|
||||
<SET OBJ1
|
||||
<OR <ZGET ,P-PRSO
|
||||
<+ <* .CNT 2>
|
||||
,NOUN-PHRASE-HEADER-LEN>>
|
||||
;,NOT-HERE-OBJECT>>
|
||||
<SET NP1 <ZGET ,P-PRSO
|
||||
<+ <* .CNT 2>
|
||||
,NOUN-PHRASE-HEADER-LEN
|
||||
1>>>)
|
||||
(T
|
||||
<SET OBJ1
|
||||
<OR <ZGET ,P-PRSI
|
||||
<+ <* .CNT 2>
|
||||
,NOUN-PHRASE-HEADER-LEN>>
|
||||
;,NOT-HERE-OBJECT>>
|
||||
<SET NP1 <ZGET ,P-PRSI
|
||||
<+ <* .CNT 2>
|
||||
,NOUN-PHRASE-HEADER-LEN
|
||||
1>>>)>
|
||||
<COND (<OR <G? .NUM 1>
|
||||
<==? <NP-QUANT .NP1> ,NP-QUANT-ALL>>
|
||||
<COND (<EQUAL? .OBJ1 <> ,NOT-HERE-OBJECT>
|
||||
;<SET X <+ .X 1>>
|
||||
<NP-PRINT .NP1>
|
||||
<TELL ": ">
|
||||
<NP-CANT-SEE .NP1>
|
||||
<AGAIN>)
|
||||
(<AND <==? <NP-QUANT .NP1> ,NP-QUANT-ALL>
|
||||
<NOT <VERB-ALL-TEST .OBJ1 .OBJ>>>
|
||||
<AGAIN>)
|
||||
(<NOT <ACCESSIBLE? .OBJ1>>
|
||||
<AGAIN>)
|
||||
(<EQUAL? .OBJ1 ,PLAYER>
|
||||
<AGAIN>)
|
||||
(T
|
||||
<COND (<EQUAL? .OBJ1 ,IT>
|
||||
<TELL D ,P-IT-OBJECT>)
|
||||
(T <TELL D .OBJ1>)>
|
||||
<TELL ": ">)>)>
|
||||
<SET TMP T>
|
||||
<COND (<NOT <G? .ICNT 1>>
|
||||
<SETG PRSO .OBJ1>
|
||||
<SETG PRSO-NP .NP1>
|
||||
<SETG PRSI ;PI .OBJ>
|
||||
<SETG PRSI-NP .NP>)
|
||||
(T
|
||||
<SETG PRSO .OBJ>
|
||||
<SETG PRSO-NP .NP>
|
||||
<SETG PRSI ;PI .OBJ1>
|
||||
<SETG PRSI-NP .NP1>)>
|
||||
<COND (<AND <EQUAL? ,IT ,PRSI ,PRSO ;,PRSS>
|
||||
<NOT <FIX-HIM-HER-IT ,IT ,P-IT-OBJECT>>>
|
||||
<AGAIN> ;<RETURN ,M-FATAL>)>
|
||||
<COND (<AND <EQUAL? ,HER ,PRSI ,PRSO ;,PRSS>
|
||||
<NOT <FIX-HIM-HER-IT ,HER ,P-HER-OBJECT>>>
|
||||
<AGAIN> ;<RETURN ,M-FATAL>)>
|
||||
<COND (<AND <EQUAL? ,HIM ,PRSI ,PRSO ;,PRSS>
|
||||
<NOT <FIX-HIM-HER-IT ,HIM ,P-HIM-OBJECT>>>
|
||||
<AGAIN> ;<RETURN ,M-FATAL>)>
|
||||
<QCONTEXT-CHECK ,PRSO>
|
||||
<SET XX <SYNTAX-SEARCH <PARSE-SYNTAX ,PARSE-RESULT> 1>>
|
||||
<COND (<AND <T? ,PRSO> ;"Could be ADJACENT room."
|
||||
<NOT <BTST .XX ,SEARCH-MOBY>>
|
||||
<NOT <BTST .XX
|
||||
<BOR ,SEARCH-MOBY ,SEARCH-MUST-HAVE>>>
|
||||
<SET V <META-LOC ,PRSO>>
|
||||
<IN? .V ,ROOMS>
|
||||
<NOT <GLOBAL-IN? ,PRSO <META-LOC ,WINNER>>>
|
||||
<NOT <EQUAL? .V <META-LOC ,WINNER>>>
|
||||
;<NOT <EQUAL? <META-LOC ,PRSO>
|
||||
,HERE ,LOCAL-GLOBALS
|
||||
,GLOBAL-OBJECTS
|
||||
,GENERIC-OBJECTS>>>
|
||||
<NOT-HERE ,PRSO>
|
||||
;<TELL "[">
|
||||
;<TELL-CTHE ,WINNER>
|
||||
;<TELL " can't do that from here.]" CR>
|
||||
<AGAIN>)>
|
||||
<COND (<AND <T? ,PRSO>
|
||||
<BAND <BOR ,SEARCH-MUST-HAVE ,SEARCH-DO-TAKE>
|
||||
.XX>
|
||||
<NOT <BAND ,SEARCH-MOBY .XX>>>
|
||||
<SET V <ITAKE-CHECK ,PRSO .XX>>
|
||||
<COND (<OR <EQUAL? ,M-FATAL .V>
|
||||
;<EQUAL? ,P-CONT -1>>
|
||||
<RETURN>)
|
||||
(<T? .V>
|
||||
<AGAIN>)>)>
|
||||
<COND (<AND <T? ,PRSI ;.PI>
|
||||
<BAND <BOR ,SEARCH-MUST-HAVE ,SEARCH-DO-TAKE>
|
||||
<SET XX <SYNTAX-SEARCH
|
||||
<PARSE-SYNTAX ,PARSE-RESULT>
|
||||
2>>>
|
||||
<NOT <BAND ,SEARCH-MOBY .XX>>>
|
||||
<SET V <ITAKE-CHECK ,PRSI ;.PI .XX>>
|
||||
<COND (<OR <EQUAL? ,M-FATAL .V>
|
||||
;<EQUAL? ,P-CONT -1>>
|
||||
<RETURN>)
|
||||
(<T? .V>
|
||||
<AGAIN>)>)>
|
||||
<SET V <PERFORM ,PRSA ,PRSO ,PRSI ;.PI>>
|
||||
<COND (<OR <EQUAL? ,M-FATAL .V>
|
||||
<EQUAL? ,P-CONT -1>> ;"per SEM 16-Feb-88"
|
||||
<RETURN>)>>)>
|
||||
<SETG OPRSO ,PRSO>
|
||||
<COND (<AND <ZERO? ,CLOCK-WAIT>
|
||||
<NOT <GAME-VERB?>>
|
||||
;<T? ,P-WON>>
|
||||
<COND (<AND <SET V <LOC ,WINNER>>
|
||||
<NOT <IN? .V ,ROOMS>>
|
||||
;<FSET? .V ,VEHBIT>>
|
||||
<SET V <D-APPLY "M-END"
|
||||
<GETP .V ,P?ACTION>
|
||||
,M-END>>)>
|
||||
<SET V <D-APPLY "M-END"
|
||||
<GETP ,HERE ,P?ACTION>
|
||||
,M-END>>)>
|
||||
<COND (<EQUAL? ,M-FATAL .V>
|
||||
<SETG P-CONT -1>)>
|
||||
<COND (<AND <ZERO? ,CLOCK-WAIT>
|
||||
<NOT <GAME-VERB?>>
|
||||
;<T? ,P-WON>>
|
||||
<SETG CLOCKER-RUNNING 1>
|
||||
<SET V <CLOCKER>>
|
||||
<SETG CLOCKER-RUNNING 2>
|
||||
<COND (<EQUAL? ,M-FATAL .V>
|
||||
<SETG P-CONT -1>)>)>
|
||||
<COND (<AND <SET V <PARSE-CHOMPER ,PARSE-RESULT>>
|
||||
<L? 1 <NOUN-PHRASE-COUNT .V>>
|
||||
<NOT <EQUAL? ,P-CONT -1>>>
|
||||
<SET V <HACK-TELL-1 .V>>
|
||||
<COND (<EQUAL? ,M-FATAL .V>
|
||||
<SETG P-CONT -1>)
|
||||
(<T? .V>
|
||||
<AGAIN>)>)>>)
|
||||
(T
|
||||
<SETG CLOCK-WAIT T>
|
||||
<SETG P-CONT <>>)>
|
||||
<SETG PRSA <>>
|
||||
<SETG PRSO <>>
|
||||
<SETG PRSO-NP <>>
|
||||
<SETG PRSI ;"PI" <>>>
|
||||
|
||||
<DEFAULT-DEFINITION VERB-ALL-TEST
|
||||
<DEFINE VERB-ALL-TEST (O I "AUX" L) ;"O=PRSO I=PRSI"
|
||||
<SET L <LOC .O>>
|
||||
<COND (<VERB? DROP GIVE>
|
||||
<COND (<EQUAL? .L ,WINNER>
|
||||
<RTRUE>)
|
||||
(T <RFALSE>)>)
|
||||
(<VERB? PUT>
|
||||
<COND (<EQUAL? .O .I>
|
||||
<RFALSE>)
|
||||
(<NOT <IN? .O .I>>
|
||||
<RTRUE>)
|
||||
(T <RFALSE>)>)
|
||||
(<VERB? TAKE>
|
||||
<COND (<AND <NOT <FSET? .O ,TAKEBIT>>
|
||||
<NOT <FSET? .O ,TRYTAKEBIT>>>
|
||||
<RFALSE>)>
|
||||
<COND (<NOT <ZERO? .I>>
|
||||
<COND (<NOT <EQUAL? .L .I>>
|
||||
<RFALSE>)>)
|
||||
(<EQUAL? .L ;,WINNER ,HERE>
|
||||
<RTRUE>)>
|
||||
<COND (<OR <FSET? .L ,PERSONBIT>
|
||||
<FSET? .L ,SURFACEBIT>>
|
||||
<RTRUE>)
|
||||
(<AND <FSET? .L ,CONTBIT>
|
||||
<FSET? .L ,OPENBIT>>
|
||||
<RTRUE>)
|
||||
(T <RFALSE>)>)
|
||||
(<NOT <ZERO? .I>>
|
||||
<COND (<NOT <EQUAL? .O .I>>
|
||||
<RTRUE>)
|
||||
(T <RFALSE>)>)
|
||||
(T <RTRUE>)>>>
|
||||
|
||||
<DEFINE FIX-HIM-HER-IT (PRON OBJ)
|
||||
<COND (<ZERO? .OBJ>
|
||||
<MORE-SPECIFIC>
|
||||
<>)
|
||||
(<NOT <VISIBLE? .OBJ>>
|
||||
<NOT-HERE .OBJ>
|
||||
<>)
|
||||
(T
|
||||
<COND (<EQUAL? ,PRSO .PRON>
|
||||
<SETG PRSO .OBJ>
|
||||
<TELL-PRONOUN .OBJ .PRON>)>
|
||||
<COND (<EQUAL? ,PRSI .PRON>
|
||||
<SETG PRSI .OBJ>
|
||||
<TELL-PRONOUN .OBJ .PRON>)>
|
||||
<IF-P-BE-VERB
|
||||
<COND (<EQUAL? ,PRSS .PRON>
|
||||
<SETG PRSS .OBJ>
|
||||
<TELL-PRONOUN .OBJ .PRON>)>>
|
||||
T)>>
|
||||
|
||||
<DEFAULT-DEFINITION TELL-PRONOUN
|
||||
<DEFINE TELL-PRONOUN (OBJ PRON)
|
||||
<COND (<AND <NOT <FSET? .PRON ,TOUCHBIT>>
|
||||
<NOT <EQUAL? ,OPRSO .OBJ>>>
|
||||
<TELL "[\"">
|
||||
<TELL D ;PRINTB .PRON>
|
||||
<TELL "\" meaning ">
|
||||
<TELL-THE .OBJ>
|
||||
<TELL "]" CR>)>>>
|
||||
|
||||
<DEFAULT-DEFINITION GAME-VERB?
|
||||
<CONSTANT GAME-VERB-TABLE
|
||||
<LTABLE V?BRIEF V?QUIT V?RESTART V?RESTORE
|
||||
V?SAVE V?SCORE V?SCRIPT V?SUPER-BRIEF
|
||||
V?TELL V?UNSCRIPT V?VERBOSE V?VERSION V?$VERIFY V?FOOTNOTE>>
|
||||
|
||||
<DEFINE GAME-VERB? ()
|
||||
<COND (<INTBL? ,PRSA <ZREST ,GAME-VERB-TABLE 2> <ZGET ,GAME-VERB-TABLE 0>>
|
||||
<RTRUE>)>
|
||||
<COND (<VERB? $RANDOM $COMMAND $RECORD $UNRECORD>
|
||||
<RTRUE>)>>>
|
||||
|
||||
<DEFAULT-DEFINITION NO-M-WINNER-VERB?
|
||||
<CONSTANT NO-M-WINNER-VERB-TABLE
|
||||
<PLTABLE V?TELL-ABOUT V?SGIVE V?SSHOW V?SRUB V?SPUT-ON>>
|
||||
|
||||
<DEFINE NO-M-WINNER-VERB? ()
|
||||
<COND (<INTBL? ,PRSA <ZREST ,NO-M-WINNER-VERB-TABLE 2>
|
||||
<ZGET ,NO-M-WINNER-VERB-TABLE 0>>
|
||||
<RTRUE>)>>>
|
||||
|
||||
<DEFAULT-DEFINITION FIND-A-WINNER
|
||||
<DEFINE FIND-A-WINNER ACT ("OPT" (RM ,HERE))
|
||||
<COND (<AND <T? ,QCONTEXT>
|
||||
<IN? ,QCONTEXT .RM>>
|
||||
,QCONTEXT)
|
||||
(T
|
||||
<REPEAT ((OTHER <FIRST? .RM>) (WHO <>) (N 0))
|
||||
<COND (<ZERO? .OTHER>
|
||||
<RETURN .WHO .ACT>)
|
||||
(<AND <FSET? .OTHER ,PERSONBIT>
|
||||
<NOT <FSET? .OTHER ,INVISIBLE>>
|
||||
<NOT <EQUAL? .OTHER ,PLAYER>>>
|
||||
<COND (<G? <SET N <+ 1 .N>> 1>
|
||||
<RETURN <> .ACT>)>
|
||||
<SET WHO .OTHER>)>
|
||||
<SET OTHER <NEXT? .OTHER>>>)>>>
|
||||
|
||||
<DEFAULT-DEFINITION QCONTEXT-CHECK
|
||||
<DEFINE QCONTEXT-CHECK (PER "AUX" (WHO <>))
|
||||
<COND (<OR ;<IFFLAG (P-BE-VERB <VERB? BE ;FIND ;HELP>) (T <>)>
|
||||
<AND <VERB? SHOW TELL-ABOUT>
|
||||
<EQUAL? .PER ,PLAYER>>> ;"? more?"
|
||||
<COND (<SET WHO <FIND-A-WINNER ,HERE>>
|
||||
<SETG QCONTEXT .WHO>)>
|
||||
<COND (<AND <QCONTEXT-GOOD?>
|
||||
<EQUAL? ,WINNER ,PLAYER>> ;"? more?"
|
||||
<SETG WINNER ,QCONTEXT>
|
||||
<TELL-SAID-TO ,QCONTEXT>
|
||||
<RTRUE>)>)>>>
|
||||
|
||||
<DEFAULT-DEFINITION TELL-SAID-TO
|
||||
<DEFINE TELL-SAID-TO (PER) <TELL "[said to " D .PER "]" CR>>>
|
||||
|
||||
<GLOBAL QCONTEXT:OBJECT <>>
|
||||
|
||||
<DEFINE QCONTEXT-GOOD? ()
|
||||
<COND (<AND <NOT <ZERO? ,QCONTEXT>>
|
||||
<FSET? ,QCONTEXT ,PERSONBIT>
|
||||
;<NOT <FSET? ,QCONTEXT ,MUNGBIT>>
|
||||
<EQUAL? ,HERE <META-LOC ,QCONTEXT>>>
|
||||
<RETURN ,QCONTEXT>)>>
|
||||
|
||||
<DEFAULT-DEFINITION META-LOC
|
||||
<DEFINE META-LOC ML (OBJ "OPTIONAL" (INV <>) "AUX" L)
|
||||
<SET L <LOC .OBJ>>
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? <> .OBJ .L>
|
||||
<RETURN <> .ML>)
|
||||
(<EQUAL? .L
|
||||
,LOCAL-GLOBALS ,GLOBAL-OBJECTS ,GENERIC-OBJECTS>
|
||||
<RETURN .L .ML>)
|
||||
(<IN? .OBJ ,ROOMS>
|
||||
<RETURN .OBJ .ML>)
|
||||
(T
|
||||
<COND (<AND .INV <FSET? .OBJ ,INVISIBLE>>
|
||||
<RETURN <> .ML>)>
|
||||
<SET OBJ .L>
|
||||
<SET L <LOC .OBJ>>)>>>>
|
||||
|
||||
<DEFAULT-DEFINITION P-PRONOUNS
|
||||
<GLOBAL P-IT-OBJECT:OBJECT <>>
|
||||
<GLOBAL P-HER-OBJECT:OBJECT <>>
|
||||
<GLOBAL P-HIM-OBJECT:OBJECT <>>>
|
||||
|
||||
;<DEFINE NOT-IT (WHO)
|
||||
<COND (<EQUAL? .WHO ,P-HER-OBJECT>
|
||||
<FCLEAR ,HER ,TOUCHBIT>)
|
||||
(<EQUAL? .WHO ,P-HIM-OBJECT>
|
||||
<FCLEAR ,HIM ,TOUCHBIT>)
|
||||
;(<EQUAL? .WHO ,P-THEM-OBJECT>
|
||||
<FCLEAR ,THEM ,TOUCHBIT>)
|
||||
(<EQUAL? .WHO ,P-IT-OBJECT>
|
||||
<FCLEAR ,IT ,TOUCHBIT>)>>
|
||||
|
||||
<DEFAULT-DEFINITION CANT-UNDO
|
||||
<IF-UNDO
|
||||
<DEFINE CANT-UNDO ()
|
||||
<TELL "[I can't undo that now.]" CR>>>>
|
||||
|
||||
<GLOBAL NOW-PRSI:FLAG <>>
|
||||
|
||||
<GLOBAL OBJ-SWAP:FLAG <>>
|
||||
|
||||
<DEFAULT-DEFINITION NOT-HERE-VERB?
|
||||
<DEFINE NOT-HERE-VERB? (V)
|
||||
<EQUAL? .V ,V?WALK-TO>>>
|
||||
|
||||
<OBJECT NOT-HERE-OBJECT
|
||||
(CONTFCN 0)
|
||||
(THINGS 0)>
|
||||
|
||||
<DEFAULT-DEFINITION SEE-VERB?
|
||||
<DEFINE SEE-VERB? ()
|
||||
<VERB? CHASTISE EXAMINE FIND
|
||||
LOOK LOOK-BEHIND LOOK-DOWN LOOK-INSIDE LOOK-UNDER LOOK-UP
|
||||
READ SEARCH>>>
|
||||
|
||||
<DEFINE PERFORM (PA "OPT" (PO <>) (PI <>) ;(PQ <>) ;(PS <>)
|
||||
"AUX" V OA OO OI OQ OS X)
|
||||
<SET OA ,PRSA>
|
||||
<SET OO ,PRSO>
|
||||
<SET OI ,PRSI>
|
||||
<COND (<AND <T? .OO> <==? .OO .PI>>
|
||||
<SETG OBJ-SWAP T>)
|
||||
(<AND <T? .OI> <==? .OI .PO>>
|
||||
<SETG OBJ-SWAP T>)
|
||||
(T
|
||||
<SETG OBJ-SWAP <>>)>
|
||||
<SETG PRSA .PA>
|
||||
<SETG PRSI .PI>
|
||||
<SETG PRSO .PO>
|
||||
;<IF-P-BE-VERB
|
||||
<SET OS ,PRSS>
|
||||
<SET OQ ,PRSQ>
|
||||
<SETG PRSS .PS>
|
||||
<SETG PRSQ .PQ>>
|
||||
<IF-P-DEBUGGING-PARSER
|
||||
<COND (<T? ,P-DBUG>
|
||||
<PRINTI "{Perform: A=">
|
||||
<IFFLAG (IN-ZILCH <PRINTN .PA>)
|
||||
(T <PRINC <NTH ,ACTIONS <+ <* .PA 2> 1>>>)>
|
||||
<COND (<T? .PO>
|
||||
<PRINTI "/O=">
|
||||
<COND (<DIR-VERB?> <PRINTN .PO>)
|
||||
(T <TELL-D-LOC .PO>)>)>
|
||||
<COND (<T? .PI>
|
||||
<PRINTI "/I=">
|
||||
<TELL-D-LOC .PI>)>
|
||||
<IF-P-BE-VERB
|
||||
<COND (<T? ,PRSQ ;.PQ>
|
||||
<PRINTI "/Q=">
|
||||
<IFFLAG (IN-ZILCH <PRINTN ,PRSQ ;.PQ>)
|
||||
(T <PRINC <NTH ,ACTIONS <+ <* ,PRSQ ;.PQ 2> 1>>>)>)>
|
||||
<COND (<T? ,PRSS ;.PS>
|
||||
<PRINTI "/S=">
|
||||
<TELL-D-LOC ,PRSS ;.PS>)>>
|
||||
<PRINTI "}|">)>>
|
||||
<SET V <>>
|
||||
<IF-P-BE-VERB
|
||||
<COND (<T? ,PRSS>
|
||||
<THIS-IS-IT ,PRSS>)>>
|
||||
<COND (<T? ,PRSI>
|
||||
<THIS-IS-IT ,PRSI>)>
|
||||
<COND (<AND <T? ,PRSO>
|
||||
<NOT <DIR-VERB?>>>
|
||||
<THIS-IS-IT ,PRSO>)>
|
||||
<COND (<NOT <EQUAL? ,WINNER ,PLAYER>>
|
||||
<THIS-IS-IT ,WINNER>)>
|
||||
<SET PO ,PRSO>
|
||||
<SET PI ,PRSI>
|
||||
;<IF-P-BE-VERB <SET PS ,PRSS>>
|
||||
<COND (<AND ;<ZERO? .V>
|
||||
<NOT <NO-M-WINNER-VERB?>>>
|
||||
<SET V <D-APPLY "Winner" <GETP ,WINNER ,P?ACTION>
|
||||
,M-WINNER>>)>
|
||||
<COND (<AND <ZERO? .V>
|
||||
<NOT <IN? <LOC ,WINNER> ,ROOMS>>
|
||||
;<FSET? <LOC ,WINNER> ,VEHBIT>>
|
||||
<SET V <D-APPLY "M-BEG"
|
||||
<GETP <LOC ,WINNER> ,P?ACTION>
|
||||
,M-BEG>>)>
|
||||
<COND (<ZERO? .V>
|
||||
<SET V <D-APPLY "M-BEG"
|
||||
<GETP ,HERE ,P?ACTION>
|
||||
,M-BEG>>)>
|
||||
<COND (<ZERO? .V>
|
||||
<COND <IF-P-BE-VERB
|
||||
(<T? ,PRSQ ;.PQ>
|
||||
<COND (<SET X <INTBL? <ZGET ,ACTIONS .PA>
|
||||
<ZREST ,QACTIONS 2>
|
||||
<ZGET ,QACTIONS 0>>>
|
||||
<SET V <D-APPLY "Preaction" <ZGET .X 4>>>)
|
||||
;(T
|
||||
<SET V <D-APPLY "Preaction"
|
||||
<ZGET ,PREACTIONS .PA>>>)>)>
|
||||
(T
|
||||
<SET V <D-APPLY "Preaction" <ZGET ,PREACTIONS .PA>>>)>)>
|
||||
<SETG NOW-PRSI 1>
|
||||
<COND (<AND <ZERO? .V>
|
||||
<T? .PI>
|
||||
<NOT <DIR-VERB?>>
|
||||
<LOC .PI>>
|
||||
<COND (<T? <SET V <GETP <LOC .PI> ,P?CONTFCN>>>
|
||||
<SET V <D-APPLY "Container" .V ,M-CONTAINER>>)>)>
|
||||
<COND (<AND <ZERO? .V>
|
||||
<T? .PI>>
|
||||
<COND (<EQUAL? .PI ,GLOBAL-HERE>
|
||||
<SET V <D-APPLY "PRSI" <GETP ,HERE ,P?ACTION>>>)>
|
||||
<COND (<ZERO? .V>
|
||||
<SET V <D-APPLY "PRSI" <GETP .PI ,P?ACTION>>>)>)>
|
||||
<SETG NOW-PRSI 0>
|
||||
<COND (<AND <ZERO? .V>
|
||||
<T? .PO>
|
||||
<NOT <DIR-VERB?>>
|
||||
<LOC .PO>>
|
||||
<SET V <GETP <LOC .PO> ,P?CONTFCN>>
|
||||
<COND (<T? .V>
|
||||
<SET V <D-APPLY "Container" .V ,M-CONTAINER>>)>)>
|
||||
<COND (<AND <ZERO? .V>
|
||||
<T? .PO>
|
||||
<NOT <DIR-VERB?>>>
|
||||
<COND (<EQUAL? .PO ,GLOBAL-HERE>
|
||||
<SET V <D-APPLY "PRSO" <GETP ,HERE ,P?ACTION>>>)>
|
||||
<COND (<ZERO? .V>
|
||||
<SET V <D-APPLY "PRSO" <GETP .PO ,P?ACTION>>>)>)>
|
||||
<IFFLAG (P-BE-VERB
|
||||
<COND (<ZERO? .V>
|
||||
<COND (<T? ,PRSS ;.PS>
|
||||
<SET V <D-APPLY "Subject"
|
||||
<GETP ,PRSS ;.PS ,P?ACTION>
|
||||
,M-SUBJ>>)>)>)
|
||||
;(T
|
||||
"moved down one line")>
|
||||
<COND (<ZERO? .V>
|
||||
<COND <IF-P-BE-VERB
|
||||
(<T? ,PRSQ ;.PQ>
|
||||
<COND (<SET X <INTBL? <ZGET ,ACTIONS .PA>
|
||||
<ZREST ,QACTIONS 2>
|
||||
<ZGET ,QACTIONS 0>>>
|
||||
<COND (<SET X <ZGET .X 2>>
|
||||
<SET V <D-APPLY <> .X>>)>)>
|
||||
<COND (<ZERO? .V>
|
||||
<SET V <D-APPLY <> <ZGET ,ACTIONS ,PRSQ>>>)>)>
|
||||
(T
|
||||
<SET V <D-APPLY <> <ZGET ,ACTIONS .PA>>>)>)>
|
||||
;<COND (<ZERO? .V>
|
||||
<SET V <D-APPLY <> <ZGET ,ACTIONS .PA>>>)>
|
||||
<COND (<EQUAL? ,M-FATAL .V>
|
||||
<SETG P-CONT -1>)>
|
||||
<SETG PRSA .OA>
|
||||
<SETG PRSO .OO>
|
||||
<SETG PRSI .OI>
|
||||
;<IF-P-BE-VERB <SETG PRSS .OS>>
|
||||
.V>
|
||||
|
||||
<DEFAULT-DEFINITION TELL-TOO-DARK
|
||||
<DEFINE TELL-TOO-DARK () <TELL ,TOO-DARK> <RETURN ,M-FATAL>>>
|
||||
|
||||
<DEFAULT-DEFINITION ITAKE-CHECK
|
||||
<DEFINE ITAKE-CHECK (OBJ BITS "AUX" (TAKEN <>))
|
||||
<COND (<==? .OBJ ,IT>
|
||||
<SET OBJ ,P-IT-OBJECT>)>
|
||||
<COND (<AND <NOT <HELD? .OBJ ,WINNER>>
|
||||
<NOT <EQUAL? .OBJ ,HANDS ,ROOMS>>>
|
||||
<COND (<FSET? .OBJ ,TRYTAKEBIT>
|
||||
T)
|
||||
(<NOT <==? ,WINNER ,PLAYER>>
|
||||
<SET TAKEN T>)
|
||||
(<AND <BTST .BITS ,SEARCH-DO-TAKE>
|
||||
<==? <ITAKE <> .OBJ> T>>
|
||||
<SET TAKEN T>)>
|
||||
<COND (<AND <NOT .TAKEN>
|
||||
<BTST .BITS ,SEARCH-MUST-HAVE>
|
||||
<NOT <BTST .BITS ,SEARCH-MOBY>>>
|
||||
<TELL !\[>
|
||||
<COND (<EQUAL? ,WINNER ,PLAYER>
|
||||
<TELL "You are">)
|
||||
(T
|
||||
<TELL-CTHE ,WINNER>
|
||||
<TELL " is">)>
|
||||
<TELL "n't holding ">
|
||||
<TELL-THE .OBJ>
|
||||
<THIS-IS-IT .OBJ>
|
||||
<TELL "!]" CR>
|
||||
<RTRUE>)
|
||||
;(<AND .TAKEN <==? ,WINNER ,PLAYER>>
|
||||
<FIRST-YOU "take" .OBJ ,ITAKE-LOC>)>)>>>
|
||||
|
||||
<IF-P-DEBUGGING-PARSER
|
||||
<DEFINE TELL-D-LOC (OBJ)
|
||||
<PRINTD .OBJ>
|
||||
<COND (<IN? .OBJ ,GLOBAL-OBJECTS> <PRINTI "(gl)">)
|
||||
(<IN? .OBJ ,LOCAL-GLOBALS> <PRINTI "(lg)">)
|
||||
(<IN? .OBJ ,ROOMS> <PRINTI "(rm)">)>
|
||||
<COND (<EQUAL? .OBJ ,INTNUM>
|
||||
<PRINTC !\(>
|
||||
<PRINTN ,P-NUMBER>
|
||||
<PRINTC !\)>)>>>
|
||||
|
||||
<DEFINE D-APPLY (STR FCN "OPTIONAL" (FOO <>) "AUX" RES)
|
||||
<COND (<T? .FCN>
|
||||
<IF-P-DEBUGGING-PARSER
|
||||
<COND (<T? ,P-DBUG>
|
||||
<COND (<ZERO? .STR>
|
||||
<PRINTI "{Action:}|">)
|
||||
(T
|
||||
<PRINTC !\{>
|
||||
<PRINT .STR>
|
||||
<COND (<=? .STR "Winner">
|
||||
<PRINTC !\=>
|
||||
<TELL D ,WINNER>)>
|
||||
<PRINTI ": ">)>)>>
|
||||
<COND (<T? .FOO> <SET RES <ZAPPLY .FCN .FOO>>)
|
||||
(T <SET RES <ZAPPLY .FCN>>)>
|
||||
<IF-P-DEBUGGING-PARSER
|
||||
<COND (<AND <T? ,P-DBUG> <T? .STR>>
|
||||
<COND (<OR <EQUAL? ,M-FATAL .RES>
|
||||
<EQUAL? ,P-CONT -1>>
|
||||
<PRINTI "Fatal}|">)
|
||||
(<ZERO? .RES>
|
||||
<PRINTI "Not handled}|">)
|
||||
(T <PRINTI "Handled}|">)>)>>
|
||||
.RES)>>
|
||||
|
||||
<DEFAULT-DEFINITION CAPITAL-NOUN?
|
||||
<DEFINE CAPITAL-NOUN? (NAM) <>>>
|
||||
|
||||
<DEFAULT-DEFINITION NOT-HERE
|
||||
<DEFINE NOT-HERE (OBJ "OPT" (CLOCK <>))
|
||||
<COND (<ZERO? .CLOCK>
|
||||
<SETG CLOCK-WAIT T>
|
||||
<TELL "[But">)>
|
||||
<TELL !\ >
|
||||
<TELL-THE .OBJ>
|
||||
<TELL " isn't ">
|
||||
<COND (<VISIBLE? .OBJ>
|
||||
<TELL "close enough">
|
||||
<COND (<SPEAKING-VERB?> <TELL " to hear you">)>
|
||||
<TELL !\.>)
|
||||
(T <TELL "here!">)>
|
||||
<THIS-IS-IT .OBJ>
|
||||
<COND (<ZERO? .CLOCK>
|
||||
<TELL !\]>)>
|
||||
<CRLF>>>
|
||||
|
||||
<DEFAULT-DEFINITION ASKING-VERB-WORD?
|
||||
<ADD-WORD ASK ASKWORD>
|
||||
<ADD-WORD ORDER ASKWORD>
|
||||
<ADD-WORD TELL ASKWORD>
|
||||
;<DEFINE ASKING-VERB-WORD? (WD)
|
||||
<COND (<EQUAL? .WD ,W?ASK ,W?ORDER ,W?TELL>
|
||||
T)>>>
|
||||
|
||||
<DEFAULT-DEFINITION SPEAKING-VERB?
|
||||
<DEFINE SPEAKING-VERB? ("OPT" (A ,PRSA) ;(PER 0))
|
||||
<COND (<EQUAL? .A ,V?ANSWER ,V?ASK-ABOUT ,V?ASK-FOR ,V?HELLO
|
||||
,V?NO ,V?REPLY ,V?TELL ,V?TELL-ABOUT ,V?YES>
|
||||
<COND (T ;<EQUAL? .PER 0 ,PRSO>
|
||||
<RTRUE>)>)>>>
|
||||
|
||||
<DEFINE GET-OWNER (OBJ "AUX" TMP NP)
|
||||
<COND (<SET NP <GET-NP .OBJ>>
|
||||
<COND (<OR <SET TMP <NP-OF .NP>>
|
||||
<AND <SET TMP <NP-ADJS .NP>>
|
||||
<SET TMP <ADJS-POSS .TMP>>>>
|
||||
<COND (<OBJECT? .TMP>
|
||||
.TMP)
|
||||
;(T
|
||||
<NOUN-PHRASE-OBJ1 .TMP>)>)
|
||||
(<AND <SET TMP <GETP .OBJ ,P?OWNER>>
|
||||
<NOT <OBJECT? .TMP>>> ;"body part"
|
||||
,PLAYER)>)>>
|
||||
|
||||
<DEFINE GET-NP ("OPT" (OBJ <>) "AUX" (PRSI? ,NOW-PRSI))
|
||||
<COND (<NOT <EQUAL? .OBJ ,PRSO ,PRSI>>
|
||||
<RETURN <>>)
|
||||
(.OBJ
|
||||
<COND (<==? .OBJ ,PRSO> <SET PRSI? <>>)
|
||||
(T <SET PRSI? T>)>)>
|
||||
<COND (,OBJ-SWAP
|
||||
<COND (<T? .PRSI?> ,PRSO-NP)
|
||||
(T ,PRSI-NP)>)
|
||||
(<T? .PRSI?>
|
||||
,PRSI-NP)
|
||||
(T ,PRSO-NP)>>
|
||||
|
||||
<DEFAULT-DEFINITION NOUN-USED?
|
||||
<DEFINE NOUN-USED? (OBJ WD1 "OPT" (WD2 <>) (WD3 <>) "AUX" X)
|
||||
<AND <SET X <GET-NP .OBJ>>
|
||||
<SET X <NP-NAME .X>>
|
||||
<EQUAL? .X .WD1 .WD2 .WD3>>>>
|
||||
|
||||
<DEFAULT-DEFINITION ADJ-USED?
|
||||
<DEFINE ADJ-USED? (OBJ WD1 "OPT" (WD2 <>) (WD3 <>) "AUX" NP CT)
|
||||
<COND (<AND <SET NP <GET-NP .OBJ>>
|
||||
<SET NP <NP-ADJS .NP>>>
|
||||
<COND (<AND <EQUAL? ,PLAYER <ADJS-POSS .NP>>
|
||||
<EQUAL? ,W?MY .WD1 .WD2 .WD3>>
|
||||
,W?MY)
|
||||
(<G? <SET CT <ADJS-COUNT .NP>> 0>
|
||||
<SET NP <REST-TO-SLOT .NP ADJS-COUNT 1>>
|
||||
<COND (<ZMEMQ .WD1 .NP .CT>
|
||||
.WD1)
|
||||
(.WD2
|
||||
<COND (<ZMEMQ .WD2 .NP .CT>
|
||||
.WD2)
|
||||
(.WD3
|
||||
<COND (<ZMEMQ .WD3 .NP .CT>
|
||||
.WD3)>)>)>)>)>>>
|
||||
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,277 @@
|
|||
|
||||
<BEGIN-SEGMENT VILLAGE>
|
||||
<OBJECT VILLAGE (LOC LOCAL-GLOBALS) (DESC "village") (SYNONYM VILLAGE) (ACTION
|
||||
VILLAGE-F)>
|
||||
<DEFINE-ROUTINE VILLAGE-F>
|
||||
<ROOM OUTER-BAILEY (LOC ROOMS) (REGION "Flatheadia") (DESC "Outer Bailey") (SE
|
||||
TO DRAWBRIDGE IF DRAWBRIDGE IS OPEN ELSE "The drawbridge isn't down.") (SW TO
|
||||
GARRISON) (NE TO BEND) (NW TO PERIMETER-WALL) (FLAGS RLANDBIT OUTSIDEBIT ONBIT)
|
||||
(SYNONYM BAILEY) (ADJECTIVE OUTER) (GLOBAL DRAWBRIDGE MOAT ROOTS) (MAP-LOC <
|
||||
PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-2>) (ICON OUTER-BAILEY-ICON) (
|
||||
ACTION OUTER-BAILEY-F)>
|
||||
<DEFINE-ROUTINE OUTER-BAILEY-F>
|
||||
<OBJECT TREE-STUMP (LOC OUTER-BAILEY) (DESC "tree stump") (LDESC
|
||||
"A mighty, rotting tree stump spreads its roots across the bailey.") (SYNONYM
|
||||
STUMP) (ADJECTIVE LARGE TREE WEATHERED) (CAPACITY 100) (FLAGS CONTBIT VEHBIT
|
||||
SURFACEBIT OPENBIT SEARCHBIT) (ACTION TREE-STUMP-F)>
|
||||
<GLOBAL JUMP-X 99>
|
||||
<GLOBAL JUMP-Y 99>
|
||||
<DEFINE-ROUTINE TREE-STUMP-F>
|
||||
<OBJECT TREASURE-CHEST (LOC LOCAL-GLOBALS) (DESC "treasure chest") (SYNONYM
|
||||
CHEST) (ADJECTIVE TREASURE) (FLAGS TAKEBIT CONTBIT SEARCHBIT) (SIZE 25) (
|
||||
CAPACITY 50)>
|
||||
<OBJECT CROWN (LOC DIMWIT) (DESC "gaudy crown") (SYNONYM CROWN) (ADJECTIVE
|
||||
GAUDY) (VALUE 12) (FLAGS NDESCBIT MAGICBIT WEARBIT)>
|
||||
<ROOM PERIMETER-WALL (LOC ROOMS) (REGION "Flatheadia") (DESC "Perimeter Wall")
|
||||
(SE TO OUTER-BAILEY) (NW PER WEST-OF-HOUSE-ENTER-F) (OUT PER
|
||||
WEST-OF-HOUSE-ENTER-F) (FLAGS RLANDBIT OUTSIDEBIT ONBIT) (ICON
|
||||
PERIMETER-WALL-ICON) (MAP-LOC <PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-2 MAP-GEN-X-1>)
|
||||
(ACTION PERIMETER-WALL-F)>
|
||||
<DEFINE-ROUTINE PERIMETER-WALL-F>
|
||||
<DEFINE-ROUTINE WEST-OF-HOUSE-ENTER-F>
|
||||
<OBJECT OUTER-GATE (LOC PERIMETER-WALL) (DESC "outer gate") (SYNONYM GATE GATES
|
||||
DOOR) (ADJECTIVE OUTER INCREDIBLY LARGE IRON-REINFORCED OAKEN) (FLAGS NDESCBIT
|
||||
DOORBIT VOWELBIT) (ACTION OUTER-GATE-F)>
|
||||
<DEFINE-ROUTINE OUTER-GATE-F>
|
||||
<GLOBAL END-GAME-COUNTER 0>
|
||||
<DEFINE-ROUTINE I-END-GAME>
|
||||
<ROOM WEST-OF-HOUSE (LOC ROOMS) (DESC "West of House") (REGION
|
||||
"(formerly) Flatheadia") (LDESC
|
||||
"You are standing in an open field west of a white house, with a
|
||||
boarded front door.|
|
||||
There is a small mailbox here.") (FLAGS RLANDBIT ONBIT OUTSIDEBIT) (ACTION
|
||||
WEST-OF-HOUSE-F)>
|
||||
<DEFINE-ROUTINE WEST-OF-HOUSE-F>
|
||||
<ROOM GARRISON (LOC ROOMS) (REGION "Flatheadia") (DESC "Garrison") (LDESC
|
||||
"This is where the castle's army was quartered. The garrison fell into
|
||||
disuse as all known lands fell under the rule of the Flatheads; the army
|
||||
had little to do except quell an occasional tax revolt. In fact, the only
|
||||
evidence of the garrison is a rusty locker. A road leads northeast.") (NE TO
|
||||
OUTER-BAILEY) (OUT TO OUTER-BAILEY) (FLAGS RLANDBIT ONBIT) (SYNONYM GARRISON) (
|
||||
MAP-LOC <PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-1>) (ICON GARRISON-ICON)>
|
||||
|
||||
<OBJECT LOCKER (LOC GARRISON) (DESC "locker") (SYNONYM LOCKER) (ADJECTIVE RUSTY
|
||||
) (CAPACITY 100) (FLAGS CONTBIT SEARCHBIT NDESCBIT) (ACTION LOCKER-F)>
|
||||
<DEFINE-ROUTINE LOCKER-F>
|
||||
<OBJECT POSTER (LOC LOCKER) (OWNER POSTER) (DESC "poster of Ursula Flathead") (
|
||||
SYNONYM POSTER URSULA FLATHEAD) (ADJECTIVE URSULA) (FLAGS TAKEBIT BURNBIT) (
|
||||
SIZE 2) (RESEARCH
|
||||
"\"Ursula Flathead, the former Miss Miznia, has been called the 'Sex Goddess
|
||||
of the GUE.' The editors would be hard-pressed to disagree with the phrase.\"")
|
||||
(ACTION POSTER-F)>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<DEFINE-ROUTINE POSTER-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT VILLAGE>
|
||||
<OBJECT WEST-KEY (LOC LOCKER) (DESC "steel key") (SYNONYM KEY) (ADJECTIVE STEEL
|
||||
) (FLAGS TAKEBIT KEYBIT) (SIZE 2)>
|
||||
<ROOM BEND (LOC ROOMS) (REGION "Flatheadia") (DESC "Bend") (LDESC
|
||||
"The road curves along the moat, turning southeast and southwest.") (SE TO
|
||||
VILLAGE-GATE) (SW TO OUTER-BAILEY) (FLAGS RLANDBIT OUTSIDEBIT ONBIT) (GLOBAL
|
||||
MOAT) (MAP-LOC <PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-2 MAP-GEN-X-3>)>
|
||||
<ROOM VILLAGE-GATE (LOC ROOMS) (REGION "Flatheadia") (DESC "Village Gate") (
|
||||
LDESC "To the east, a stone arch forms the entrance to the castle's village. (The
|
||||
village lies outside the castle proper but is still comfortably within the
|
||||
outer perimeter wall.) The arch is flanked by two medium-sized elms, one more
|
||||
gnarled than the other. The road passes under the arch; in the other direction,
|
||||
it follows the moat to the northwest.") (NW TO BEND) (EAST TO SHADY-PARK) (
|
||||
FLAGS RLANDBIT OUTSIDEBIT ONBIT) (GLOBAL VILLAGE ARCH MOAT) (MAP-LOC <PTABLE
|
||||
VILLAGE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-4>) (THINGS VILLAGE GATE GATE-PS)>
|
||||
<DEFINE-ROUTINE GATE-PS>
|
||||
<OBJECT GNARLED-ELM (LOC VILLAGE-GATE) (DESC "gnarled elm tree") (SYNONYM TREE
|
||||
ELM) (ADJECTIVE GNARLED ELM) (FLAGS NDESCBIT PLANTBIT) (ACTION TREE-F)>
|
||||
<OBJECT UNGNARLED-ELM (LOC VILLAGE-GATE) (DESC "ungnarled elm tree") (SYNONYM
|
||||
TREE ELM) (ADJECTIVE UNGNARLED ELM) (FLAGS NDESCBIT VOWELBIT PLANTBIT) (ACTION
|
||||
TREE-F)>
|
||||
<ROOM SHADY-PARK (LOC ROOMS) (REGION "Flatheadia") (DESC "Shady Park") (LDESC
|
||||
"This grassy mall must have been a nice area at one time, but it is now
|
||||
overgrown with weeds, and soiled by windblown litter. The shade comes from
|
||||
a mighty elm which spreads its thick green branches over the park. A wide
|
||||
east-west boulevard bisects the park, and impressive buildings flank it on
|
||||
the north and south.") (EAST TO VILLAGE-CENTER) (WEST TO VILLAGE-GATE) (SOUTH
|
||||
TO CHURCH) (NORTH TO TAX-OFFICE) (FLAGS RLANDBIT OUTSIDEBIT ONBIT) (SYNONYM
|
||||
PARK) (ADJECTIVE SHADY) (GLOBAL VILLAGE GLOBAL-BLDG) (MAP-LOC <PTABLE
|
||||
VILLAGE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-5>) (ICON SHADY-PARK-ICON)>
|
||||
<OBJECT MIGHTY-ELM (LOC SHADY-PARK) (DESC "mighty elm tree") (SYNONYM TREE ELM)
|
||||
(ADJECTIVE LARGE ELM) (FLAGS NDESCBIT PLANTBIT) (ACTION TREE-F)>
|
||||
<ROOM CHURCH (LOC ROOMS) (REGION "Flatheadia") (DESC "Church") (LDESC
|
||||
"This is a house of worship of Brogmoidism. The tenets of this rather silly
|
||||
religion are engraved on the wall. The only exit is north.") (NORTH TO
|
||||
SHADY-PARK) (OUT TO SHADY-PARK) (FLAGS RLANDBIT ONBIT) (SYNONYM CHURCH) (GLOBAL
|
||||
GLOBAL-BLDG) (MAP-LOC <PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-5>) (ICON
|
||||
CHURCH-ICON)>
|
||||
<OBJECT TENET (LOC CHURCH) (DESC "engraved tenet") (SYNONYM TENET TENETS
|
||||
ENGRAVING) (ADJECTIVE ENGRAVED) (FLAGS NDESCBIT READBIT) (TEXT
|
||||
"\"Thou shalt worship the Great Brogmoid to thine utmost, for upon his shoulder
|
||||
rests the world -- thus he saveth us from plunging into the Great Void...\"
|
||||
The tenets go on and on about the brogmoid who supports the world. It's hard to
|
||||
believe that anyone EVER believed such drivel, let alone in today's enlightened
|
||||
age. As the great modern thinker, Zorbius Blattus, is fond of saying, \"If a
|
||||
giant brogmoid were holding up the world, where would he stand?\"")>
|
||||
<ROOM TAX-OFFICE (LOC ROOMS) (REGION "Flatheadia") (DESC "URS Office") (LDESC
|
||||
"This huge hall was the main office of the Underground Revenue Service. Until
|
||||
the construction of the FrobozzCo Building, it was the largest structure in
|
||||
the Empire. Here, thousands upon thousands of accountants and auditors once
|
||||
sat, tabulating the proceeds from Dimwit's astronomical taxations. The only
|
||||
exit is south.") (SOUTH TO SHADY-PARK) (OUT TO SHADY-PARK) (FLAGS RLANDBIT
|
||||
ONBIT) (GLOBAL GLOBAL-BLDG) (RIDDLE
|
||||
"I once heard of a bookkeeper who, while working on the accounts of the Frobozz
|
||||
Magic Balloon Company, noted that the word 'balloon' has two double letters in
|
||||
a row! Stretching his limited imagination to the limit, this bookkeeper
|
||||
wondered if there were any words with THREE double letters in a row. He
|
||||
couldn't think of one -- but I'll bet that YOU can!\"") (ICON URS-OFFICE-ICON)
|
||||
(MAP-LOC <PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-2 URS-ICON-LOC>) (ACTION
|
||||
TAX-OFFICE-F)>
|
||||
<DEFINE-ROUTINE TAX-OFFICE-F>
|
||||
<OBJECT BOOKKEEPER (LOC GLOBAL-OBJECTS) (DESC "bookkeeper") (SYNONYM BOOKKEEPER
|
||||
BOOKKEEPING)>
|
||||
<OBJECT ZORKMID-COIN (LOC LOCAL-GLOBALS) (DESC "zorkmid coin") (SYNONYM ZORKMID
|
||||
COIN MONEY) (ADJECTIVE ONE ZORKMID) (FLAGS TRYTAKEBIT TAKEBIT READBIT) (SIZE 1)
|
||||
(TEXT "The coin bears the likeness of Belwit the Flat, along with the inscriptions,
|
||||
\"One Zorkmid,\" and \"699 GUE.\" On the other side, the coin depicts Egreth
|
||||
Castle, and says \"In Frobs We Trust\" in several languages.")>
|
||||
<ROOM VILLAGE-CENTER (LOC ROOMS) (REGION "Flatheadia") (DESC "Village Center")
|
||||
(LDESC "You are in the midst of the village. At least, at some distant time it may
|
||||
have been a village. More recently, it was a bustling metropolis. Now it's a
|
||||
deserted metropolis. A fantastically tall building rises just east of you and
|
||||
a road heads west. To the south is a post office; to the north, beyond granite
|
||||
stairs flanked by stone toads, is the Courthouse entrance.") (EAST TO FR-HQ) (
|
||||
WEST TO SHADY-PARK) (SOUTH TO POST-OFFICE) (NORTH TO COURTROOM) (FLAGS RLANDBIT
|
||||
ONBIT OUTSIDEBIT) (GLOBAL VILLAGE FR-BLDG) (MAP-LOC <PTABLE VILLAGE-MAP-NUM
|
||||
MAP-GEN-Y-3 MAP-GEN-X-7>)>
|
||||
<OBJECT STONE-TOADS (LOC VILLAGE-CENTER) (OWNER STONE-TOADS) (DESC
|
||||
"pair of stone toads") (SYNONYM PAIR TOAD TOADS) (ADJECTIVE STONE) (FLAGS
|
||||
NDESCBIT)>
|
||||
<ROOM COURTROOM (LOC ROOMS) (REGION "Flatheadia") (DESC "Courtroom") (LDESC
|
||||
"This is where the great jurist, Oliver Wendell Flathead, would hand down
|
||||
decisions from the bench. The only exit is south.") (SOUTH TO VILLAGE-CENTER) (
|
||||
OUT TO VILLAGE-CENTER) (FLAGS RLANDBIT ONBIT) (SYNONYM COURTROOM) (GLOBAL
|
||||
GLOBAL-BLDG) (MAP-LOC <PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-2 COURTROOM-ICON-LOC>)
|
||||
(ICON COURTROOM-ICON)>
|
||||
<ROOM POST-OFFICE (LOC ROOMS) (REGION "Flatheadia") (DESC "Post Office") (LDESC
|
||||
"Once the main branch of the Flatheadia Postal Service, this edifice now lies
|
||||
in deserted silence. A doorway leads north.") (NORTH TO VILLAGE-CENTER) (OUT TO
|
||||
VILLAGE-CENTER) (FLAGS RLANDBIT ONBIT) (GLOBAL GLOBAL-BLDG) (MAP-LOC <PTABLE
|
||||
VILLAGE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-7>) (ICON POST-OFFICE-ICON)>
|
||||
<OBJECT PACKAGE (LOC POST-OFFICE) (DESC "package") (FDESC
|
||||
"A package rests on one of the counters. Although a collector has stolen
|
||||
the stamp, the address is still legible.") (SYNONYM PACKAGE ADDRESS) (FLAGS
|
||||
TAKEBIT READBIT CONTBIT SEARCHBIT) (CAPACITY 12) (TEXT
|
||||
"\"From: Belznork Gibblewitz To: Eek Numblatz|
|
||||
F. M. Homing Pigeon Co Int'l Curios, Inc|
|
||||
FrobozzCo Bldg, 193-E 28 Volcano View Ln|
|
||||
Flatheadia, FRV-9179 Gurth City, GTH-3791\"")>
|
||||
<OBJECT PERCH (LOC PACKAGE) (DESC "ceramic perch") (PLURAL "perches") (SYNONYM
|
||||
PERCH WRITING PRINT LETTERING) (ADJECTIVE CERAMIC SMALL) (FLAGS TAKEBIT READBIT
|
||||
) (OWNER PERCH) (TEXT
|
||||
"Tiny lettering says, \"Frobozz Magic Homing Pigeon Company.\"")>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<OBJECT PIGEON (LOC PACKAGE) (DESC "ceramic pigeon") (SYNONYM PIGEON BIRD
|
||||
REPRODUCTION WRITING PRINT LETTERING) (ADJECTIVE CERAMIC CLAY HOMING SMALL) (
|
||||
FLAGS TAKEBIT READBIT) (OWNER PIGEON) (TEXT
|
||||
"Tiny lettering says, \"Frobozz Magic Homing Pigeon Company.\"") (ACTION
|
||||
PIGEON-F)>
|
||||
<DEFINE-ROUTINE PIGEON-F>
|
||||
<GLOBAL REMOVED-PERCH-LOC <>>
|
||||
<DEFINE-ROUTINE MOVE-TO-PERCH>
|
||||
<DEFINE-ROUTINE FIND-PERCH>
|
||||
<END-SEGMENT>
|
||||
\
|
||||
<BEGIN-SEGMENT VILLAGE>
|
||||
<OBJECT FR-BLDG (LOC LOCAL-GLOBALS) (DESC "Frobozzco Building") (SYNONYM
|
||||
BUILDING HEADQUARTERS HQ) (ADJECTIVE TALL FROBOZZCO INTERNATIONAL WORLD
|
||||
HEADQUARTERS HQ) (ACTION FR-BLDG-F)>
|
||||
<DEFINE-ROUTINE FR-BLDG-F>
|
||||
<ROOM FR-HQ (LOC ROOMS) (REGION "Flatheadia") (DESC "FrobozzCo HQ") (LDESC
|
||||
"You are in the lobby of FrobozzCo International's World Headquarters, an
|
||||
impressive four hundred story structure. Wide stairs lead up and down; the
|
||||
main exit is to the west; an emergency exit leads east.") (WEST TO
|
||||
VILLAGE-CENTER) (EAST TO BACK-ALLEY) (DOWN TO FR-BASEMENT) (UP PER
|
||||
FR-OFFICES-ENTER-F) (FLAGS RLANDBIT ONBIT) (GLOBAL STAIRS FR-BLDG) (MAP-LOC <
|
||||
PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-8>) (ICON FR-HQ-ICON)>
|
||||
<OBJECT MEMO (DESC "memo") (SYNONYM MEMO) (FLAGS READBIT TAKEBIT) (SIZE 2) (
|
||||
TEXT "FROM: Spaulding Flathead, Seventh Asst. Bldg. Mgr.|
|
||||
TO: All tenants|
|
||||
RE: New stairway policy|
|
||||
To relieve overcrowding in the stairwells, employees who work above the 75th
|
||||
floor will be given teleportation tokens. Company officers will continue to
|
||||
receive teleportation tokens regardless of floor. Note: employees with tokens
|
||||
will no longer be dismissed early for \"stair-climbing\" time.")>
|
||||
<OBJECT INSTRUCTION-BOOKLET (DESC "damaged instruction booklet") (SYNONYM BOOK
|
||||
BOOKLET INSTRUCTIONS) (ADJECTIVE INSTRUCTIONS DAMAGED) (FLAGS TAKEBIT READBIT)
|
||||
(SIZE 3) (TEXT "The booklet is badly torn and faded. You can make out only a few phrases:
|
||||
\"...ozz Magic Homing Pi...\" and \"...eave the perch in the location you wish
|
||||
t...\" and \"...eturn warranty card within 90 d...\"")>
|
||||
<DEFINE-ROUTINE FR-OFFICES-ENTER-F>
|
||||
<ROOM FR-OFFICES (LOC ROOMS) (REGION "Flatheadia") (DESC "FrobozzCo Offices") (
|
||||
NORTH TO OFFICES-NORTH) (EAST TO OFFICES-EAST) (WEST TO OFFICES-WEST) (SOUTH TO
|
||||
OFFICES-SOUTH) (UP PER FR-FLOOR-F) (DOWN PER FR-FLOOR-F) (FLAGS RLANDBIT ONBIT)
|
||||
(GLOBAL FR-BLDG STAIRS) (MAP-LOC <PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-5
|
||||
MAP-GEN-X-10>) (ACTION OFFICES-F)>
|
||||
<DEFINE-ROUTINE OFFICES-F>
|
||||
<GLOBAL BEEN-IN-FR-UPPER-FLOORS <>>
|
||||
<GLOBAL FLOOR-NUMBER 2>
|
||||
<DEFINE-ROUTINE FR-FLOOR-F>
|
||||
<DEFINE-ROUTINE OFFICE-UNSTORE>
|
||||
<OBJECT T-SQUARE (DESC "T-square") (SYNONYM T-SQUARE) (FLAGS TAKEBIT MAGICBIT)
|
||||
(VALUE 12)>
|
||||
<ROOM OFFICES-NORTH (LOC ROOMS) (REGION "Flatheadia") (DESC
|
||||
"FrobozzCo Offices North") (SOUTH TO FR-OFFICES) (FLAGS RLANDBIT ONBIT) (GLOBAL
|
||||
FR-BLDG WINDOW) (ICON OFFICES-ICON) (MAP-LOC <PTABLE VILLAGE-MAP-NUM
|
||||
MAP-GEN-Y-4 MAP-GEN-X-10>) (ACTION FR-OUTER-OFFICES-F)>
|
||||
<ROOM OFFICES-EAST (LOC ROOMS) (REGION "Flatheadia") (DESC
|
||||
"FrobozzCo Offices East") (WEST TO FR-OFFICES) (FLAGS RLANDBIT ONBIT) (GLOBAL
|
||||
FR-BLDG WINDOW) (ICON OFFICES-ICON) (MAP-LOC <PTABLE VILLAGE-MAP-NUM
|
||||
MAP-GEN-Y-5 MAP-GEN-X-11>) (ACTION FR-OUTER-OFFICES-F)>
|
||||
<ROOM OFFICES-WEST (LOC ROOMS) (REGION "Flatheadia") (DESC
|
||||
"FrobozzCo Offices West") (EAST TO FR-OFFICES) (FLAGS RLANDBIT ONBIT) (GLOBAL
|
||||
FR-BLDG WINDOW) (ICON OFFICES-ICON) (MAP-LOC <PTABLE VILLAGE-MAP-NUM
|
||||
MAP-GEN-Y-5 MAP-GEN-X-9>) (ACTION FR-OUTER-OFFICES-F)>
|
||||
<ROOM OFFICES-SOUTH (LOC ROOMS) (REGION "Flatheadia") (DESC
|
||||
"FrobozzCo Offices South") (NORTH TO FR-OFFICES) (FLAGS RLANDBIT ONBIT) (GLOBAL
|
||||
FR-BLDG WINDOW) (ICON OFFICES-ICON) (MAP-LOC <PTABLE VILLAGE-MAP-NUM
|
||||
MAP-GEN-Y-6 MAP-GEN-X-10>) (ACTION FR-OUTER-OFFICES-F)>
|
||||
<DEFINE-ROUTINE FR-OUTER-OFFICES-F>
|
||||
<ROOM FR-PENTHOUSE (LOC ROOMS) (REGION "Flatheadia") (DESC
|
||||
"FrobozzCo Penthouse") (LDESC
|
||||
"You have reached the top floor! On a clear day, one can see hundreds of
|
||||
bloits from here; too bad it's so smoggy today. A stair leads down.") (DOWN PER
|
||||
FR-OFFICES-ENTER-F) (FLAGS RLANDBIT ONBIT) (GLOBAL FR-BLDG WINDOW STAIRS) (
|
||||
MAP-LOC <PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-8>) (ICON PENTHOUSE-ICON)
|
||||
(ACTION FR-PENTHOUSE-F)>
|
||||
<DEFINE-ROUTINE FR-PENTHOUSE-F>
|
||||
<ROOM FR-BASEMENT (LOC ROOMS) (REGION "Flatheadia") (DESC "FrobozzCo Basement")
|
||||
(LDESC "The basement of the FrobozzCo Building is a place of sturdy walls, designed
|
||||
to support the 400 stories above. A stair leads up and a passage heads south.")
|
||||
(UP TO FR-HQ) (SOUTH PER PHIL-ENTER-F) (FLAGS RLANDBIT) (GLOBAL STAIRS FR-BLDG)
|
||||
(MAP-LOC <PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-8>)>
|
||||
<OBJECT BASEMENT-REBUS-BUTTON (LOC FR-BASEMENT) (SDESC
|
||||
"blinking key-shaped button") (FDESC
|
||||
"In a dark corner, a blinking button catches your eye. It seems to be in the
|
||||
shape of a key.") (SYNONYM BUTTON) (ADJECTIVE KEY-SHAPED BLINKING) (ACTION
|
||||
REBUS-BUTTON-F)>
|
||||
<DEFINE-ROUTINE PHIL-ENTER-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT LAKE>
|
||||
<DEFINE-ROUTINE FR-BASEMENT-ENTER-F>
|
||||
<END-SEGMENT>
|
||||
<BEGIN-SEGMENT VILLAGE>
|
||||
<ROOM BACK-ALLEY (LOC ROOMS) (DESC "Back Alley") (REGION "Flatheadia") (LDESC
|
||||
"This is a grungy, foul-smelling lane. A large building can be entered
|
||||
to the west, and a much smaller one to the north.") (NORTH TO MAGIC-SHOP) (WEST
|
||||
TO FR-HQ) (FLAGS RLANDBIT ONBIT OUTSIDEBIT) (SYNONYM ALLEY) (ADJECTIVE BACK) (
|
||||
GLOBAL FR-BLDG GLOBAL-BLDG) (MAP-LOC <PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-3
|
||||
MAP-GEN-X-9>) (ICON BACK-ALLEY-ICON)>
|
||||
<ROOM MAGIC-SHOP (LOC ROOMS) (DESC "Magic Shop") (REGION "Flatheadia") (LDESC
|
||||
"Perhaps this was once a thriving shop, but now, like the rest of Flatheadia,
|
||||
it lies deserted, gutted by looters. The exit is south.") (SOUTH TO BACK-ALLEY)
|
||||
(OUT TO BACK-ALLEY) (FLAGS RLANDBIT ONBIT) (SYNONYM SHOP STORE) (ADJECTIVE
|
||||
MAGIC) (GLOBAL GLOBAL-BLDG) (MAP-LOC <PTABLE VILLAGE-MAP-NUM MAP-GEN-Y-2
|
||||
MAP-GEN-X-9>) (ICON MAGIC-SHOP-ICON)>
|
||||
<OBJECT RING (LOC MAGIC-SHOP) (OWNER RING) (DESC "ring of ineptitude") (FDESC
|
||||
"The only thing the looters ignored was a ring. Not surprising, as it is a
|
||||
ring of ineptitude. Fun at parties, but not good for much else.") (SYNONYM RING
|
||||
INEPTITUDE) (FLAGS TAKEBIT WEARBIT) (SIZE 1) (ACTION RING-F)>
|
||||
<BEGIN-SEGMENT 0>
|
||||
<DEFINE-ROUTINE RING-F>
|
||||
<END-SEGMENT>
|
|
@ -0,0 +1,613 @@
|
|||
|
||||
.SEGMENT "VILLAGE"
|
||||
|
||||
|
||||
.FUNCT VILLAGE-F
|
||||
EQUAL? HERE,PARAPET \?CCL3
|
||||
CALL2 TOUCHING?,VILLAGE
|
||||
ZERO? STACK /?CCL3
|
||||
CALL2 CANT-REACH,VILLAGE
|
||||
RSTACK
|
||||
?CCL3: EQUAL? PRSA,V?ENTER \?CCL7
|
||||
EQUAL? HERE,VILLAGE-GATE \?CCL10
|
||||
CALL2 DO-WALK,P?EAST
|
||||
RSTACK
|
||||
?CCL10: CALL1 V-WALK-AROUND
|
||||
RSTACK
|
||||
?CCL7: EQUAL? PRSA,V?EXIT \FALSE
|
||||
CALL1 V-WALK-AROUND
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT OUTER-BAILEY-F,RARG
|
||||
EQUAL? RARG,M-LOOK \FALSE
|
||||
PRINTI "This open area is a rolling meadow extending from the moat to the distant perimeter fortifications. A drawbridge "
|
||||
FSET? DRAWBRIDGE,OPENBIT \?CCL6
|
||||
PRINTI "leads over the"
|
||||
JUMP ?CND4
|
||||
?CCL6: PRINTI "is raised, leaving an impassable"
|
||||
?CND4: PRINTI " moat to the southeast, and roads lead northeast, southwest, and northwest."
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT TREE-STUMP-F,VARG
|
||||
ZERO? VARG \FALSE
|
||||
EQUAL? PRSA,V?EXAMINE \?CCL5
|
||||
GETP TREE-STUMP,P?LDESC
|
||||
PRINT STACK
|
||||
FIRST? TREE-STUMP \?CCL8
|
||||
PRINTC 32
|
||||
RFALSE
|
||||
?CCL8: CRLF
|
||||
RTRUE
|
||||
?CCL5: EQUAL? PRSA,V?GET-NEAR \?CCL10
|
||||
ICALL PERFORM,V?ENTER,TREE-STUMP
|
||||
RTRUE
|
||||
?CCL10: EQUAL? PRSA,V?LISTEN \?CCL12
|
||||
ZERO? PLANT-TALKER /?CCL12
|
||||
PRINTR "The stump is dead and silent."
|
||||
?CCL12: EQUAL? PRSA,V?ENTER \?CCL16
|
||||
SET 'JUMP-X,0
|
||||
SET 'JUMP-Y,0
|
||||
RFALSE
|
||||
?CCL16: EQUAL? PRSA,V?EXIT \?CCL18
|
||||
SET 'JUMP-X,99
|
||||
SET 'JUMP-Y,99
|
||||
RFALSE
|
||||
?CCL18: EQUAL? PRSA,V?RAISE,V?TAKE,V?LOOK-UNDER \FALSE
|
||||
PRINTR "100 men couldn't uproot this stump!"
|
||||
|
||||
|
||||
.FUNCT PERIMETER-WALL-F,RARG
|
||||
EQUAL? RARG,M-LOOK \FALSE
|
||||
PRINTI "Before you rises the massive stone wall which forms the first line of defense for the castle grounds. To the northwest, the huge oak gates "
|
||||
FSET? OUTER-GATE,OPENBIT \?CCL6
|
||||
PRINTI "lie wide open, revealing dense forest beyond!"
|
||||
RTRUE
|
||||
?CCL6: PRINTI "are closed and reinforced, forming an impassable barrier across the road from the southeast."
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT WEST-OF-HOUSE-ENTER-F,RARG
|
||||
FSET? OUTER-GATE,OPENBIT \?CCL3
|
||||
ZERO? RARG \?CND4
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
ICALL2 INC-SCORE,30
|
||||
PRINTI "You dive through the doors as the castle begins its final tremors! Landing on soft grass, you roll to a stop, and turn to see the castle's final moments. But, oddly, though it is collapsing, it doesn't seem to be getting destroyed. Instead, it is merely shrinking, shrivelling... You rub your eyes in disbelief, as the once mighty castle transforms itself into ever tinier structures. At long last there is stillness, and the dust begins to clear"
|
||||
PRINT ELLIPSIS
|
||||
?CND4: RETURN WEST-OF-HOUSE
|
||||
?CCL3: IN? NW-SE-PASSAGE,HERE \?CCL7
|
||||
EQUAL? NW-SE-PASSAGE-DIR,P?NW \?CCL7
|
||||
ZERO? RARG \FALSE
|
||||
ICALL1 CANT-GO
|
||||
RFALSE
|
||||
?CCL7: ZERO? RARG \FALSE
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
ICALL2 THIS-IS-IT,OUTER-GATE
|
||||
ICALL2 DO-FIRST,STR?527
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT OUTER-GATE-F
|
||||
EQUAL? PRSA,V?OPEN \FALSE
|
||||
PRINTR "It would take the power of a wizard to open these massive doors."
|
||||
|
||||
|
||||
.FUNCT I-END-GAME
|
||||
INC 'END-GAME-COUNTER
|
||||
EQUAL? END-GAME-COUNTER,12 \?CCL3
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
CALL2 JIGS-UP,STR?528
|
||||
RSTACK
|
||||
?CCL3: EQUAL? END-GAME-COUNTER,11 \?CCL5
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
PRINTR " A great rumble fills the air, and the buildings around you teeter like drunken dancers!"
|
||||
?CCL5: EQUAL? END-GAME-COUNTER,9 \?CCL7
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
PRINTR " Boulders of rubble roll past, threatening to crush you!"
|
||||
?CCL7: EQUAL? END-GAME-COUNTER,6 \?CCL9
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
PRINTR " As the grounds continue to shake, a multitude of rats well up from within and flee toward the perimeter wall."
|
||||
?CCL9: EQUAL? END-GAME-COUNTER,3 \FALSE
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
PRINTI " The "
|
||||
FSET? HERE,OUTSIDEBIT \?CCL14
|
||||
PRINTI "ground"
|
||||
JUMP ?CND12
|
||||
?CCL14: PRINTI "floor"
|
||||
?CND12: PRINTR " rolls and shudders, making it difficult to stay on your feet."
|
||||
|
||||
|
||||
.FUNCT WEST-OF-HOUSE-F,RARG
|
||||
EQUAL? RARG,M-ENTER \?CCL3
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
CALL1 UPDATE-STATUS-LINE
|
||||
RSTACK
|
||||
?CCL3: EQUAL? RARG,M-END \FALSE
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
CRLF
|
||||
ICALL1 HIT-ANY-KEY
|
||||
CLEAR 0
|
||||
CRLF
|
||||
ICALL2 MARGINAL-PIC,EPILOGUE-LETTER
|
||||
DIROUT D-SCREEN-OFF
|
||||
PRINTC 65
|
||||
DIROUT D-SCREEN-ON
|
||||
PRINTI "s you stare dumbfounded at the white house, the jester appears, laughing as though at some supreme trick. Then, a low moaning wind begins to blow, and slowly, ever so slowly, his appearance shifts, until you see before you a wizard of incredible age and obvious power. His hoary visage stirs an ancient ancestral memory. He speaks in a new voice, tired but commanding of instant respect. ""I am Megaboz,"" he states, and your skin tingles at the presence of a legend.
|
||||
""Yes, I still live. I have waited a long time for this day; to meet the one who would guard after I am gone.
|
||||
""The Great Underground Empire is no more; but Quendor remains. The white house will stand as a warning and reminder of the excesses of the Flatheads. Some day, a new Empire may rise; you -- and your successors -- shall watch over the land, and ensure that future Empire be benevolent. Henceforth, you shall be known as Dungeon Master.
|
||||
""As promised by Decree, half the wealth of the kingdom is yours!"" Your mind is suddenly filled with images of a vast underground Treasury, piled with unfathomable wealth. But the image is tempered by the ironic knowledge that you will never have use for such wealth. As the image fades, you hear tinkling bells and the voice of the jester/Megaboz: ""Well, I'm outta here! Over to you, Dungeon Master!"" You find yourself alone, left to ponder the years ahead, long years of keeping watch over Quendor and searching, ever searching, for your successor"
|
||||
PRINT ELLIPSIS
|
||||
CALL1 FINISH
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT LOCKER-F
|
||||
EQUAL? PRSA,V?LOCK \FALSE
|
||||
EQUAL? PRSO,LOCKER \FALSE
|
||||
PRINTR "You don't have the right key."
|
||||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT POSTER-F
|
||||
EQUAL? PRSA,V?EXAMINE \?CCL3
|
||||
PRINTR "The poster shows pin-up model Ursula Flathead (Miss Miznia, 878 GUE) in a typical suggestive pose and minimal cover."
|
||||
?CCL3: EQUAL? PRSA,V?ROLL \FALSE
|
||||
PRINTR "You curl it into a tube, but as you let go it flattens again."
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "VILLAGE"
|
||||
|
||||
|
||||
.FUNCT GATE-PS
|
||||
CALL2 PERFORM-PRSA,ARCH
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT TAX-OFFICE-F,RARG
|
||||
EQUAL? RARG,M-END \FALSE
|
||||
IN? ZORKMID-COIN,LOCAL-GLOBALS \FALSE
|
||||
ICALL2 SETUP-ORPHAN,STR?44
|
||||
IN? JESTER,HERE /FALSE
|
||||
ICALL2 DEQUEUE,I-JESTER
|
||||
MOVE JESTER,HERE
|
||||
ICALL2 THIS-IS-IT,JESTER
|
||||
ICALL1 RETURN-FROM-MAP
|
||||
PRINTI " A bookkeeper is hunched over one of the desks. He looks up as you enter, and you see that it is the jester, wearing suspenders, a bow tie, thick eyeglasses, and a green visor.
|
||||
"""
|
||||
GETP TAX-OFFICE,P?RIDDLE
|
||||
PRINT STACK
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT PIGEON-F
|
||||
EQUAL? PRSA,V?EXAMINE \?CCL3
|
||||
PRINTR "The pigeon, though strikingly lifelike, is merely a clay reproduction. On the bottom is some tiny writing."
|
||||
?CCL3: EQUAL? PRSA,V?TAKE \?CCL5
|
||||
EQUAL? PRSO,PIGEON \?CCL5
|
||||
CALL2 ULTIMATELY-IN?,PIGEON
|
||||
ZERO? STACK \FALSE
|
||||
FSET? OUTER-GATE,OPENBIT /FALSE
|
||||
ZERO? TIME-STOPPED \FALSE
|
||||
RANDOM 100
|
||||
LESS? 10,STACK \?CTR14
|
||||
GRTR? P-MULT,1 \?CCL15
|
||||
?CTR14: PRINTI "Your eyes must be starting to play tricks on you. It almost seemed like the clay pigeon "
|
||||
IN? PIGEON,HERE \?CCL20
|
||||
PRINTI "hopped"
|
||||
JUMP ?CND18
|
||||
?CCL20: PRINTI "squirmed"
|
||||
?CND18: PRINTR " out of reach at the last second."
|
||||
?CCL15: CALL2 ITAKE,TRUE-VALUE
|
||||
EQUAL? STACK,M-FATAL /TRUE
|
||||
CALL2 ULTIMATELY-IN?,PERCH
|
||||
ZERO? STACK /?CCL24
|
||||
PRINTR "Taken."
|
||||
?CCL24: PRINTI "As you take the pigeon, you feel a dizziness, like that which one gets from drinking Miznian wines too quickly. "
|
||||
CALL2 META-LOC,PERCH
|
||||
EQUAL? STACK,HERE /?CTR26
|
||||
EQUAL? HERE,OUBLIETTE \?CCL27
|
||||
EQUAL? REMOVED-PERCH-LOC,OUBLIETTE \?CCL27
|
||||
?CTR26: LOC PROTAGONIST
|
||||
EQUAL? STACK,YACHT,DB /?CND32
|
||||
MOVE PROTAGONIST,HERE
|
||||
?CND32: PRINTR "When the disorientation passes, you seem to have moved a few feet."
|
||||
?CCL27: ICALL1 CAST-HUNGER-SPELL
|
||||
PRINTI "The world blurs, then darkens. You blink"
|
||||
PRINT ELLIPSIS
|
||||
SET 'HAND-IN-WALDO,FALSE-VALUE
|
||||
CALL2 MOVE-TO-PERCH,PROTAGONIST
|
||||
RSTACK
|
||||
?CCL5: EQUAL? PRSA,V?PUT-ON \FALSE
|
||||
EQUAL? PRSI,PERCH \FALSE
|
||||
PRINTR "There's no apparent way to put the pigeon on the perch."
|
||||
|
||||
|
||||
.FUNCT MOVE-TO-PERCH,WHAT,PERCH-LOC,L,OFFSET,RM,OBJ,X,N,TOOK-STUFF
|
||||
CALL2 META-LOC,PERCH >PERCH-LOC
|
||||
ZERO? PERCH-LOC /?CND1
|
||||
IN? PERCH-LOC,ROOMS \?CND1
|
||||
LOC PERCH
|
||||
EQUAL? STACK,YACHT,DB \?CND1
|
||||
LOC PERCH >PERCH-LOC
|
||||
?CND1: EQUAL? WHAT,PROTAGONIST \?CND6
|
||||
EQUAL? HERE,PLAIN \?CCL10
|
||||
ICALL STORE,PLAIN-OFFSET,PLAIN-LOC,PLAIN
|
||||
JUMP ?CND6
|
||||
?CCL10: EQUAL? HERE,CONSTRUCTION \?CCL12
|
||||
ICALL STORE,CONSTRUCTION-OFFSET,CONSTRUCTION-LOC,CONSTRUCTION
|
||||
JUMP ?CND6
|
||||
?CCL12: EQUAL? HERE,FR-OFFICES \?CCL14
|
||||
ICALL STORE,OFFICES-OFFSET,FLOOR-NUMBER,FR-OFFICES
|
||||
JUMP ?CND6
|
||||
?CCL14: EQUAL? HERE,OFFICES-NORTH \?CCL16
|
||||
ICALL STORE,OFFICES-N-OFFSET,FLOOR-NUMBER,OFFICES-NORTH
|
||||
JUMP ?CND6
|
||||
?CCL16: EQUAL? HERE,OFFICES-SOUTH \?CCL18
|
||||
ICALL STORE,OFFICES-S-OFFSET,FLOOR-NUMBER,OFFICES-SOUTH
|
||||
JUMP ?CND6
|
||||
?CCL18: EQUAL? HERE,OFFICES-EAST \?CCL20
|
||||
ICALL STORE,OFFICES-E-OFFSET,FLOOR-NUMBER,OFFICES-EAST
|
||||
JUMP ?CND6
|
||||
?CCL20: EQUAL? HERE,OFFICES-WEST \?CND6
|
||||
ICALL STORE,OFFICES-W-OFFSET,FLOOR-NUMBER,OFFICES-WEST
|
||||
?CND6: ZERO? PERCH-LOC /?CCL24
|
||||
EQUAL? WHAT,PROTAGONIST \?CCL27
|
||||
EQUAL? HERE,MARSH \?CND28
|
||||
IN? JESTER,NICE-LUNCH-SPOT \?CND28
|
||||
ICALL1 REMOVE-J
|
||||
?CND28: ICALL2 GOTO,PERCH-LOC
|
||||
EQUAL? HERE,LAKE-BOTTOM \?CCL34
|
||||
ICALL2 JIGS-UP,DROWN
|
||||
RTRUE
|
||||
?CCL34: EQUAL? HERE,PLAIN /TRUE
|
||||
FCLEAR CLOAK,WORNBIT
|
||||
RTRUE
|
||||
?CCL27: EQUAL? PERCH-LOC,LAKE-BOTTOM \?CCL37
|
||||
SET 'PIECE-DROWNED,1
|
||||
ICALL ROB,WHAT,LAKE-BOTTOM
|
||||
REMOVE WHAT
|
||||
RTRUE
|
||||
?CCL37: CALL FIND-IN,PERCH-LOC,WHITEBIT >X
|
||||
ZERO? X \?CCL39
|
||||
CALL FIND-IN,PERCH-LOC,BLACKBIT >X
|
||||
ZERO? X /?CND38
|
||||
?CCL39: ICALL ROB,X,WHAT
|
||||
REMOVE X
|
||||
?CND38: FIRST? PERCH-LOC >X /?PRG43
|
||||
?PRG43: ZERO? X /?REP44
|
||||
NEXT? X >N /?BOGUS47
|
||||
?BOGUS47: FSET? X,TAKEBIT \?CND48
|
||||
FSET? X,TRYTAKEBIT /?CND48
|
||||
CALL FIND-IN,X,TRYTAKEBIT
|
||||
ZERO? STACK \?CND48
|
||||
SET 'TOOK-STUFF,TRUE-VALUE
|
||||
MOVE X,WHAT
|
||||
?CND48: SET 'X,N
|
||||
JUMP ?PRG43
|
||||
?REP44: MOVE WHAT,PERCH-LOC
|
||||
EQUAL? PERCH-LOC,HERE \FALSE
|
||||
PRINTI " With a surprisingly high-pitched squeal of alarm,"
|
||||
ICALL2 APRINT,WHAT
|
||||
PRINTI " materializes nearby. "
|
||||
FSET? WHAT,FEMALEBIT \?CCL58
|
||||
PRINTI "Sh"
|
||||
JUMP ?CND56
|
||||
?CCL58: PRINTC 72
|
||||
?CND56: PRINTI "e seems somewhat dazed by the experience"
|
||||
ZERO? TOOK-STUFF /?CCL61
|
||||
PRINTR ", but not too dazed to pick the ground clean."
|
||||
?CCL61: PRINT PERIOD-CR
|
||||
RTRUE
|
||||
?CCL24: CALL2 FIND-PERCH,PERCH >L
|
||||
ZERO? L /?CCL63
|
||||
GRTR? L,5000 \?CCL66
|
||||
SET 'OFFSET,OFFICES-W-OFFSET
|
||||
SET 'RM,OFFICES-WEST
|
||||
JUMP ?CND64
|
||||
?CCL66: GRTR? L,4000 \?CCL68
|
||||
SET 'OFFSET,OFFICES-E-OFFSET
|
||||
SET 'RM,OFFICES-EAST
|
||||
JUMP ?CND64
|
||||
?CCL68: GRTR? L,3000 \?CCL70
|
||||
SET 'OFFSET,OFFICES-S-OFFSET
|
||||
SET 'RM,OFFICES-SOUTH
|
||||
JUMP ?CND64
|
||||
?CCL70: GRTR? L,2000 \?CCL72
|
||||
SET 'OFFSET,OFFICES-N-OFFSET
|
||||
SET 'RM,OFFICES-NORTH
|
||||
JUMP ?CND64
|
||||
?CCL72: GRTR? L,1000 \?CCL74
|
||||
SET 'OFFSET,OFFICES-OFFSET
|
||||
SET 'RM,FR-OFFICES
|
||||
JUMP ?CND64
|
||||
?CCL74: GRTR? L,399 \?CCL76
|
||||
SET 'OFFSET,CONSTRUCTION-OFFSET
|
||||
SET 'RM,CONSTRUCTION
|
||||
JUMP ?CND64
|
||||
?CCL76: SET 'OFFSET,PLAIN-OFFSET
|
||||
SET 'RM,PLAIN
|
||||
?CND64: EQUAL? WHAT,PROTAGONIST \?CCL79
|
||||
SUB L,OFFSET >L
|
||||
EQUAL? RM,PLAIN \?CCL82
|
||||
DIV L,8
|
||||
ADD STACK,1 >RANK
|
||||
MOD L,8
|
||||
ADD STACK,1 >FILE
|
||||
SET 'PLAIN-LOC,L
|
||||
EQUAL? HERE,PLAIN /?CND83
|
||||
MOVE CLOAK,PROTAGONIST
|
||||
FSET CLOAK,WORNBIT
|
||||
LOC PROTAGONIST
|
||||
FSET? STACK,TAKEBIT \?CCL87
|
||||
SET 'CLOAK-LOC,HERE
|
||||
JUMP ?CND83
|
||||
?CCL87: LOC PROTAGONIST >CLOAK-LOC
|
||||
?CND83: ICALL UNSTORE,OFFSET,L,RM
|
||||
JUMP ?CND80
|
||||
?CCL82: EQUAL? RM,CONSTRUCTION \?CCL89
|
||||
DIV L,8
|
||||
ADD STACK,1 >RANK
|
||||
MOD L,8
|
||||
ADD STACK,1 >FILE
|
||||
SET 'CONSTRUCTION-LOC,L
|
||||
ICALL UNSTORE,OFFSET,L,RM
|
||||
JUMP ?CND80
|
||||
?CCL89: SET 'FLOOR-NUMBER,L
|
||||
ICALL2 OFFICE-UNSTORE,L
|
||||
?CND80: EQUAL? RM,PLAIN /?CND90
|
||||
FCLEAR CLOAK,WORNBIT
|
||||
?CND90: EQUAL? HERE,MARSH \?CND92
|
||||
IN? JESTER,NICE-LUNCH-SPOT \?CND92
|
||||
ICALL1 REMOVE-J
|
||||
?CND92: CALL2 GOTO,RM
|
||||
RSTACK
|
||||
?CCL79: EQUAL? WHAT,WHITE-PAWN \?CCL98
|
||||
EQUAL? RM,PLAIN \?CCL98
|
||||
SUB L,OFFSET
|
||||
LESS? STACK,8 \?CCL98
|
||||
ICALL ROB,WHITE-PAWN,WHITE-QUEEN
|
||||
SET 'WHAT,WHITE-QUEEN
|
||||
JUMP ?CND96
|
||||
?CCL98: EQUAL? WHAT,BLACK-PAWN \?CND96
|
||||
EQUAL? RM,PLAIN \?CND96
|
||||
SUB L,OFFSET
|
||||
GRTR? STACK,55 \?CND96
|
||||
ICALL ROB,BLACK-PAWN,BLACK-QUEEN
|
||||
SET 'WHAT,BLACK-QUEEN
|
||||
?CND96: REMOVE WHAT
|
||||
ICALL REMOVE-ANY-PIECE,L,WHAT
|
||||
ICALL PIECE-SNARF,L,WHAT
|
||||
SUB L,OFFSET
|
||||
CALL PUT-IN-STORAGE,OFFSET,WHAT,STACK
|
||||
RSTACK
|
||||
?CCL63: EQUAL? WHAT,PROTAGONIST \?CCL107
|
||||
EQUAL? REMOVED-PERCH-LOC,WATER \?CCL110
|
||||
HLIGHT H-BOLD
|
||||
PRINTI "Surrounded by Water"
|
||||
CRLF
|
||||
HLIGHT H-NORMAL
|
||||
CALL2 JIGS-UP,DROWN
|
||||
RSTACK
|
||||
?CCL110: EQUAL? REMOVED-PERCH-LOC,GROUND,OUBLIETTE \?CCL112
|
||||
PRINTI "You appear "
|
||||
EQUAL? REMOVED-PERCH-LOC,OUBLIETTE \?CCL115
|
||||
PRINTI "knee deep in mud"
|
||||
PRINT ELLIPSIS
|
||||
FCLEAR CLOAK,WORNBIT
|
||||
EQUAL? HERE,MARSH \?CND116
|
||||
IN? JESTER,NICE-LUNCH-SPOT \?CND116
|
||||
ICALL1 REMOVE-J
|
||||
?CND116: CALL2 GOTO,OUBLIETTE
|
||||
RSTACK
|
||||
?CCL115: CALL2 JIGS-UP,STR?548
|
||||
RSTACK
|
||||
?CCL112: EQUAL? REMOVED-PERCH-LOC,PSEUDO-OBJECT \?CCL121
|
||||
CALL2 JIGS-UP,STR?549
|
||||
RSTACK
|
||||
?CCL121: EQUAL? REMOVED-PERCH-LOC,BROGMOID \?CCL123
|
||||
CALL2 JIGS-UP,STR?550
|
||||
RSTACK
|
||||
?CCL123: CALL2 JIGS-UP,STR?551
|
||||
RSTACK
|
||||
?CCL107: EQUAL? REMOVED-PERCH-LOC,OUBLIETTE \?CCL125
|
||||
MOVE WHAT,OUBLIETTE
|
||||
ICALL REMOVE-ANY-PIECE,L,WHAT
|
||||
CALL PIECE-SNARF,L,WHAT
|
||||
RSTACK
|
||||
?CCL125: REMOVE WHAT
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT FIND-PERCH,OBJ,L,CNT
|
||||
?PRG1: LESS? CNT,STORAGE-TABLE-LENGTH /?CCL5
|
||||
LOC OBJ
|
||||
ZERO? STACK /?REP2
|
||||
LOC OBJ
|
||||
CALL2 FIND-PERCH,STACK >L
|
||||
RETURN L
|
||||
?CCL5: ADD CNT,1
|
||||
GET STORAGE-TABLE,STACK
|
||||
EQUAL? STACK,OBJ \?CND3
|
||||
GET STORAGE-TABLE,CNT >L
|
||||
RETURN L
|
||||
?CND3: ADD CNT,2 >CNT
|
||||
JUMP ?PRG1
|
||||
?REP2: RETURN L
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "VILLAGE"
|
||||
|
||||
|
||||
.FUNCT FR-BLDG-F
|
||||
EQUAL? PRSA,V?RESEARCH \?CCL3
|
||||
CALL PICTURED-ENTRY,FR-ILL,STR?552
|
||||
RSTACK
|
||||
?CCL3: EQUAL? PRSA,V?EXAMINE \?CCL5
|
||||
EQUAL? HERE,VILLAGE-CENTER \?CCL8
|
||||
PRINTR "Most of the building is lost in the clouds."
|
||||
?CCL8: PRINTR "You're in it!"
|
||||
?CCL5: EQUAL? PRSA,V?ENTER \?CCL10
|
||||
EQUAL? HERE,VILLAGE-CENTER \?CCL13
|
||||
CALL2 DO-WALK,P?EAST
|
||||
RSTACK
|
||||
?CCL13: EQUAL? HERE,PHIL-HALL \?CCL15
|
||||
CALL2 DO-WALK,P?NORTH
|
||||
RSTACK
|
||||
?CCL15: PRINT LOOK-AROUND
|
||||
RTRUE
|
||||
?CCL10: EQUAL? PRSA,V?EXIT \FALSE
|
||||
CALL1 V-WALK-AROUND
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT FR-OFFICES-ENTER-F,RARG
|
||||
ZERO? RARG /?CCL3
|
||||
RETURN FR-OFFICES
|
||||
?CCL3: EQUAL? HERE,FR-HQ \?CCL5
|
||||
SET 'FLOOR-NUMBER,2
|
||||
JUMP ?CND1
|
||||
?CCL5: SET 'FLOOR-NUMBER,399
|
||||
?CND1: ICALL2 OFFICE-UNSTORE,FLOOR-NUMBER
|
||||
RETURN FR-OFFICES
|
||||
|
||||
|
||||
.FUNCT OFFICES-F,RARG
|
||||
EQUAL? RARG,M-ENTER \?CCL3
|
||||
SET 'BEEN-IN-FR-UPPER-FLOORS,TRUE-VALUE
|
||||
RETURN BEEN-IN-FR-UPPER-FLOORS
|
||||
?CCL3: EQUAL? RARG,M-LOOK \FALSE
|
||||
PRINTI "You are on Floor "
|
||||
PRINTN FLOOR-NUMBER
|
||||
PRINTI " of the FrobozzCo Building. The offices of one subsidiary or another can be entered in all four directions. Stairs lead up and down."
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT FR-FLOOR-F,RARG
|
||||
EQUAL? PRSO,P?UP \?CCL3
|
||||
EQUAL? FLOOR-NUMBER,399 \?CCL3
|
||||
RETURN FR-PENTHOUSE
|
||||
?CCL3: EQUAL? PRSO,P?DOWN \?CCL7
|
||||
EQUAL? FLOOR-NUMBER,2 \?CCL7
|
||||
RETURN FR-HQ
|
||||
?CCL7: ZERO? RARG \FALSE
|
||||
ICALL STORE,OFFICES-OFFSET,FLOOR-NUMBER
|
||||
ICALL STORE,OFFICES-N-OFFSET,FLOOR-NUMBER,OFFICES-NORTH
|
||||
ICALL STORE,OFFICES-S-OFFSET,FLOOR-NUMBER,OFFICES-SOUTH
|
||||
ICALL STORE,OFFICES-E-OFFSET,FLOOR-NUMBER,OFFICES-EAST
|
||||
ICALL STORE,OFFICES-W-OFFSET,FLOOR-NUMBER,OFFICES-WEST
|
||||
EQUAL? PRSO,P?UP \?CCL14
|
||||
INC 'FLOOR-NUMBER
|
||||
JUMP ?CND12
|
||||
?CCL14: DEC 'FLOOR-NUMBER
|
||||
?CND12: ICALL2 OFFICE-UNSTORE,FLOOR-NUMBER
|
||||
RETURN FR-OFFICES
|
||||
|
||||
|
||||
.FUNCT OFFICE-UNSTORE,L
|
||||
ICALL UNSTORE,OFFICES-OFFSET,L,FR-OFFICES
|
||||
ICALL UNSTORE,OFFICES-N-OFFSET,L,OFFICES-NORTH
|
||||
ICALL UNSTORE,OFFICES-S-OFFSET,L,OFFICES-SOUTH
|
||||
ICALL UNSTORE,OFFICES-E-OFFSET,L,OFFICES-EAST
|
||||
CALL UNSTORE,OFFICES-W-OFFSET,L,OFFICES-WEST
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT FR-OUTER-OFFICES-F,RARG
|
||||
EQUAL? RARG,M-LOOK \FALSE
|
||||
PRINTI "You are in an office on floor "
|
||||
PRINTN FLOOR-NUMBER
|
||||
PRINTI " of the FrobozzCo Building. The office has a lovely "
|
||||
EQUAL? HERE,OFFICES-NORTH \?CCL6
|
||||
PRINTI "north"
|
||||
JUMP ?CND4
|
||||
?CCL6: EQUAL? HERE,OFFICES-SOUTH \?CCL8
|
||||
PRINTI "south"
|
||||
JUMP ?CND4
|
||||
?CCL8: EQUAL? HERE,OFFICES-EAST \?CCL10
|
||||
PRINTI "east"
|
||||
JUMP ?CND4
|
||||
?CCL10: PRINTI "west"
|
||||
?CND4: PRINTI "ern exposure. The only exit is to the "
|
||||
EQUAL? HERE,OFFICES-NORTH \?CCL13
|
||||
PRINTI "south"
|
||||
JUMP ?CND11
|
||||
?CCL13: EQUAL? HERE,OFFICES-SOUTH \?CCL15
|
||||
PRINTI "north"
|
||||
JUMP ?CND11
|
||||
?CCL15: EQUAL? HERE,OFFICES-EAST \?CCL17
|
||||
PRINTI "west"
|
||||
JUMP ?CND11
|
||||
?CCL17: PRINTI "east"
|
||||
?CND11: PRINTC 46
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT FR-PENTHOUSE-F,RARG
|
||||
EQUAL? RARG,M-ENTER \FALSE
|
||||
FSET? FR-PENTHOUSE,TOUCHBIT /FALSE
|
||||
SET 'DO-J,TRUE-VALUE
|
||||
CALL QUEUE,I-JESTER,1
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT PHIL-ENTER-F,RARG
|
||||
ZERO? RARG \?CND1
|
||||
EQUAL? CURRENT-SPLIT,TEXT-WINDOW-PIC-LOC /?CCL2
|
||||
RETURN PHIL-HALL
|
||||
?CCL2: PRINTI "The passage takes you from the FrobozzCo Building back into the castle. It widens"
|
||||
PRINT ELLIPSIS
|
||||
?CND1: RETURN PHIL-HALL
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "LAKE"
|
||||
|
||||
|
||||
.FUNCT FR-BASEMENT-ENTER-F,RARG
|
||||
ZERO? RARG \?CND1
|
||||
EQUAL? CURRENT-SPLIT,TEXT-WINDOW-PIC-LOC /?CCL2
|
||||
RETURN FR-BASEMENT
|
||||
?CCL2: PRINTI "The passage narrows as it leaves the castle, then widens again as it enters"
|
||||
PRINT ELLIPSIS
|
||||
?CND1: RETURN FR-BASEMENT
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.SEGMENT "0"
|
||||
|
||||
.SEGMENT "VILLAGE"
|
||||
|
||||
|
||||
.FUNCT RING-F,AV,HOLDING-STUFF
|
||||
EQUAL? PRSA,V?WEAR \FALSE
|
||||
LOC PROTAGONIST >AV
|
||||
MOVE RING,PROTAGONIST
|
||||
FSET RING,WORNBIT
|
||||
PRINTI "As you slip the ring onto your finger, you clumsily "
|
||||
EQUAL? HERE,UNDER-THE-WORLD,HANGING-FROM-ROOTS,LEDGE-IN-PIT /?CTR5
|
||||
EQUAL? HERE,MOUTH-OF-CAVE \?CCL6
|
||||
?CTR5: PRINTI "lose your grip, and plunge downward. "
|
||||
ICALL PERFORM,V?LEAP,ROOMS
|
||||
RTRUE
|
||||
?CCL6: CALL2 CCOUNT,PROTAGONIST
|
||||
GRTR? STACK,1 \?CCL10
|
||||
PRINTI "drop everything you were holding."
|
||||
FSET? AV,DROPBIT \?CCL13
|
||||
PUSH AV
|
||||
JUMP ?CND11
|
||||
?CCL13: PUSH HERE
|
||||
?CND11: ICALL ROB,PROTAGONIST,STACK,TRUE-VALUE
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL10: PRINTR "trip over your own feet and just barely manage to keep your balance."
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.ENDI
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,39 @@
|
|||
Assembling ZORK0.ZAP.1 on Wednesday, October 19, 1988 19:35:38
|
||||
Release: 296
|
||||
|
||||
64 Inserting ZORK0FREQ.XZAP.4 (628 bytes)
|
||||
692 Inserting ZORK0DAT.ZAP.1 (53436 bytes)
|
||||
54128 Inserting ZORK0PUR.ZAP.1 (6732 bytes)
|
||||
60860 Inserting PSTACK.ZAP.1 (38 bytes)
|
||||
60898 Inserting PMEM.ZAP.1 (104 bytes)
|
||||
61002 Inserting DEFS2.ZAP.1 (19 bytes)
|
||||
61021 Inserting PARSER.ZAP.1 (4286 bytes)
|
||||
65307 Inserting FIND.ZAP.1 (1913 bytes)
|
||||
67220 Inserting REDS.ZAP.1 (5796 bytes)
|
||||
73016 Inserting TOP.ZAP.1 (2319 bytes)
|
||||
75335 Inserting PRARE.ZAP.1 (4325 bytes)
|
||||
79660 Inserting MISC.ZAP.1 (1498 bytes)
|
||||
81158 Inserting INPUT.ZAP.1 (2001 bytes)
|
||||
83159 Inserting VERBS.ZAP.1 (26809 bytes)
|
||||
109968 Inserting GLOBALS.ZAP.1 (11891 bytes)
|
||||
121859 Inserting PIC.ZAP.1 (340 bytes)
|
||||
122199 Inserting PROLOGUE.ZAP.1 (9969 bytes)
|
||||
132168 Inserting CASTLE.ZAP.1 (19888 bytes)
|
||||
152056 Inserting LIBRARY.ZAP.1 (1736 bytes)
|
||||
153792 Inserting VILLAGE.ZAP.1 (4709 bytes)
|
||||
158501 Inserting LAKE.ZAP.1 (10317 bytes)
|
||||
168818 Inserting HIGHWAY.ZAP.1 (9986 bytes)
|
||||
178804 Inserting ORACLE.ZAP.1 (15063 bytes)
|
||||
193867 Inserting CHESS.ZAP.1 (3763 bytes)
|
||||
197630 Inserting JESTER.ZAP.1 (11786 bytes)
|
||||
209416 Inserting FENSHIRE.ZAP.1 (6166 bytes)
|
||||
215582 Inserting CLUES.ZAP.1 (1912 bytes)
|
||||
217494 Inserting ZORK0STR.ZAP.1 (78038 bytes)
|
||||
603 objects.
|
||||
226 globals.
|
||||
1619 word vocabulary.
|
||||
|
||||
295532 bytes (289K).
|
||||
54128 bytes of preload.
|
||||
32134 bytes of impure.
|
||||
Outputting symbol tables
|
|
@ -0,0 +1,84 @@
|
|||
.NEW 6
|
||||
; Low core locations
|
||||
%ZVERSION:: .BYTE 6
|
||||
.BYTE FLAGS
|
||||
%ZORKID:: ZORKID
|
||||
%ENDLOD:: ENDLOD
|
||||
%START:: GO
|
||||
%VOCAB:: VOCAB
|
||||
%OBJECT:: OBJECT
|
||||
%GLOBAL:: GLOBAL
|
||||
%PURBOT:: IMPURE
|
||||
%FLAGS:: .WORD 48
|
||||
%SERIAL:: .WORD 0
|
||||
%SERI1:: .WORD 0
|
||||
%SERI2:: .WORD 0
|
||||
%FWORDS:: WORDS
|
||||
%PLENTH:: .WORD 0
|
||||
%PCHKSM:: .WORD 0
|
||||
%INTWRD:: .WORD 0
|
||||
%SCRWRD:: .WORD 0
|
||||
%HWRD:: .WORD 0
|
||||
%VWRD:: .WORD 0
|
||||
%FWRD:: .WORD 0
|
||||
%FOFF:: FOFF
|
||||
%SOFF:: SOFF
|
||||
%CLRWRD:: .WORD 0
|
||||
%TCHAR:: TCHARS
|
||||
%TWID:: .WORD 0
|
||||
%CRFUNC:: .WORD 0
|
||||
%CHRSET:: .WORD 0
|
||||
%EXTAB:: LOWCORE-TABLE
|
||||
.WORD 0
|
||||
.WORD 0
|
||||
.WORD 0
|
||||
.WORD 0
|
||||
|
||||
.DEFSEG "CASTLE",0,"FENSHIRE","LOWER","SECRET","VILLAGE","STARTUP"
|
||||
|
||||
.DEFSEG "FENSHIRE",0,"CASTLE"
|
||||
|
||||
.DEFSEG "FOOZLE",0,"LOWER"
|
||||
|
||||
.DEFSEG "LAKE",0,"ORACLE","LOWER","VILLAGE"
|
||||
|
||||
.DEFSEG "LOWER",0,"FOOZLE","LAKE","CASTLE"
|
||||
|
||||
.DEFSEG "ORACLE",0,"LAKE","SECRET"
|
||||
|
||||
.DEFSEG "SECRET",0,"ORACLE","CASTLE"
|
||||
|
||||
.DEFSEG "STARTUP",1,"CASTLE"
|
||||
|
||||
.DEFSEG "VILLAGE",0,"LAKE","CASTLE"
|
||||
.INSERT "PS:<ZORK0>ZORK0FREQ" ;Frequent word table
|
||||
.INSERT "PS:<ZORK0>ZORK0DAT" ; Data file
|
||||
.INSERT "PS:<ZORK0>ZORK0PUR"
|
||||
.INSERT "PS:<ZORK0>PSTACK"
|
||||
.INSERT "PS:<ZORK0>PMEM"
|
||||
.INSERT "PS:<ZORK0>DEFS2"
|
||||
.INSERT "PS:<ZORK0>PARSER"
|
||||
.INSERT "PS:<ZORK0>FIND"
|
||||
.INSERT "PS:<ZORK0>REDS"
|
||||
.INSERT "PS:<ZORK0>TOP"
|
||||
.INSERT "PS:<ZORK0>PRARE"
|
||||
.INSERT "PS:<ZORK0>MISC"
|
||||
.INSERT "PS:<ZORK0>INPUT"
|
||||
.INSERT "PS:<ZORK0>VERBS"
|
||||
.INSERT "PS:<ZORK0>GLOBALS"
|
||||
.INSERT "PS:<ZORK0>PIC"
|
||||
.INSERT "PS:<ZORK0>PROLOGUE"
|
||||
.INSERT "PS:<ZORK0>CASTLE"
|
||||
.INSERT "PS:<ZORK0>LIBRARY"
|
||||
.INSERT "PS:<ZORK0>VILLAGE"
|
||||
.INSERT "PS:<ZORK0>LAKE"
|
||||
.INSERT "PS:<ZORK0>HIGHWAY"
|
||||
.INSERT "PS:<ZORK0>ORACLE"
|
||||
.INSERT "PS:<ZORK0>CHESS"
|
||||
.INSERT "PS:<ZORK0>JESTER"
|
||||
.INSERT "PS:<ZORK0>FENSHIRE"
|
||||
.INSERT "PS:<ZORK0>CLUES"
|
||||
|
||||
.INSERT "PS:<ZORK0>ZORK0STR"
|
||||
|
||||
.END
|
|
@ -0,0 +1,62 @@
|
|||
"ZORK0 for
|
||||
|
||||
ZORK ZERO
|
||||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<PRINC "
|
||||
*** Zork Zero ***
|
||||
">
|
||||
|
||||
ON!-INITIAL
|
||||
OFF!-INITIAL ;"makes ZIL debugging possible -- pdl"
|
||||
|
||||
<VERSION YZIP>
|
||||
<ZIP-OPTIONS UNDO BIG MOUSE ;"COLOR DISPLAY">
|
||||
<FREQUENT-WORDS?>
|
||||
<LONG-WORDS?>
|
||||
<ORDER-OBJECTS? ROOMS-FIRST>
|
||||
|
||||
<DEFINE-SEGMENT STARTUP T CASTLE>
|
||||
<DEFINE-SEGMENT CASTLE <> VILLAGE SECRET LOWER FENSHIRE>
|
||||
<DEFINE-SEGMENT VILLAGE <> CASTLE LAKE>
|
||||
<DEFINE-SEGMENT SECRET <> CASTLE ORACLE>
|
||||
<DEFINE-SEGMENT LOWER <> CASTLE LAKE FOOZLE>
|
||||
<DEFINE-SEGMENT LAKE <> VILLAGE LOWER ORACLE>
|
||||
<DEFINE-SEGMENT FOOZLE <> LOWER>
|
||||
<DEFINE-SEGMENT FENSHIRE <> CASTLE>
|
||||
<DEFINE-SEGMENT ORACLE <> LAKE SECRET>
|
||||
<DEFINE-SEGMENT HINTS <>>
|
||||
<DEFINE-SEGMENT SOFT <>>
|
||||
|
||||
<SET REDEFINE T>
|
||||
<SETG NEW-PARSER? T>
|
||||
<SETG NEW-VOC? T>
|
||||
<COMPILATION-FLAG ONE-BYTE-PARTS-OF-SPEECH T>
|
||||
|
||||
<SETG L-SEARCH-PATH (["P" ""] !,L-SEARCH-PATH)>
|
||||
<INSERT-FILE "DEFS">
|
||||
<XFLOAD "P:PARSER.ZORK0">
|
||||
|
||||
<INSERT-FILE "MISC">
|
||||
<INSERT-FILE "INPUT">
|
||||
<INSERT-FILE "SYNTAX">
|
||||
<INSERT-FILE "VERBS">
|
||||
;<PUT-PURE-HERE>
|
||||
<INSERT-FILE "GLOBALS">
|
||||
<INSERT-FILE "PIC">
|
||||
<INSERT-FILE "PICDEF">
|
||||
<INSERT-FILE "PROLOGUE">
|
||||
<INSERT-FILE "CASTLE">
|
||||
<INSERT-FILE "LIBRARY">
|
||||
<INSERT-FILE "VILLAGE">
|
||||
<INSERT-FILE "LAKE">
|
||||
<INSERT-FILE "HIGHWAY">
|
||||
<INSERT-FILE "ORACLE">
|
||||
<INSERT-FILE "CHESS">
|
||||
<INSERT-FILE "JESTER">
|
||||
<INSERT-FILE "FENSHIRE">
|
||||
<XFLOAD "<ZILLIB>CLUES.XFLOAD">
|
||||
<INSERT-FILE "HINTS">
|
||||
|
||||
<PROPDEF SIZE 5>
|
||||
<PROPDEF CAPACITY 5>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,200 @@
|
|||
.FSTR FSTR?1,"the " ;6216 3109
|
||||
.FSTR FSTR?2,"The " ;2115 706
|
||||
.FSTR FSTR?3,", " ;2067 2068
|
||||
.FSTR FSTR?4,"and " ;1476 739
|
||||
.FSTR FSTR?5,"You " ;1290 431
|
||||
.FSTR FSTR?6,"of " ;1241 1242
|
||||
.FSTR FSTR?7,"you " ;1180 591
|
||||
.FSTR FSTR?8,". " ;1149 1150
|
||||
.FSTR FSTR?9,"to " ;965 966
|
||||
.FSTR FSTR?10,"is " ;669 670
|
||||
.FSTR FSTR?11,"your " ;666 223
|
||||
.FSTR FSTR?12,"that " ;666 223
|
||||
.FSTR FSTR?13,"from " ;651 218
|
||||
.FSTR FSTR?14,"in " ;593 594
|
||||
.FSTR FSTR?15,"with " ;588 197
|
||||
.FSTR FSTR?16,"into " ;504 169
|
||||
.FSTR FSTR?17,"which " ;492 124
|
||||
.FSTR FSTR?18,"are " ;490 246
|
||||
.FSTR FSTR?19,"There's " ;448 57
|
||||
.FSTR FSTR?20,"jester " ;440 89
|
||||
.FSTR FSTR?21,"Flathead " ;440 56
|
||||
.FSTR FSTR?22,"have " ;438 147
|
||||
.FSTR FSTR?23,"This " ;428 108
|
||||
.FSTR FSTR?24,"this " ;366 123
|
||||
.FSTR FSTR?25,"for " ;346 174
|
||||
.FSTR FSTR?26,"Underground " ;330 31
|
||||
.FSTR FSTR?27,"It's " ;320 65
|
||||
.FSTR FSTR?28,"something " ;312 40
|
||||
.FSTR FSTR?29,"Flathead" ;301 44
|
||||
.FSTR FSTR?30,"You're " ;294 43
|
||||
.FSTR FSTR?31,"about " ;260 66
|
||||
.FSTR FSTR?32,"can't " ;255 52
|
||||
.FSTR FSTR?33,"There " ;250 51
|
||||
.FSTR FSTR?34,"on " ;246 247
|
||||
.FSTR FSTR?35,"but " ;246 124
|
||||
.FSTR FSTR?36,"small " ;244 62
|
||||
.FSTR FSTR?37,"A " ;243 244
|
||||
.FSTR FSTR?38,"can " ;242 122
|
||||
.FSTR FSTR?39,"through " ;240 41
|
||||
.FSTR FSTR?40,"only " ;237 80
|
||||
.FSTR FSTR?41,"passage " ;234 40
|
||||
.FSTR FSTR?42,"Dimwit " ;234 40
|
||||
.FSTR FSTR?43,"FrobozzCo " ;234 27
|
||||
.FSTR FSTR?44,"one " ;226 114
|
||||
.FSTR FSTR?45,"Frobozz " ;224 33
|
||||
.FSTR FSTR?46,"leads " ;216 55
|
||||
.FSTR FSTR?47,"large " ;216 55
|
||||
.FSTR FSTR?48,"Great " ;215 44
|
||||
.FSTR FSTR?49,"been " ;213 72
|
||||
.FSTR FSTR?50,"seems " ;212 54
|
||||
.FSTR FSTR?51,"you've " ;210 36
|
||||
.FSTR FSTR?52,"you're " ;210 36
|
||||
.FSTR FSTR?53,"his " ;200 101
|
||||
.FSTR FSTR?54,"around " ;200 41
|
||||
.FSTR FSTR?55,"just " ;198 67
|
||||
.FSTR FSTR?56,"out " ;196 99
|
||||
.FSTR FSTR?57,"south" ;195 66
|
||||
.FSTR FSTR?58,"at " ;189 190
|
||||
.FSTR FSTR?59,"it " ;188 189
|
||||
.FSTR FSTR?60,"will " ;183 62
|
||||
.FSTR FSTR?61,"be " ;180 181
|
||||
.FSTR FSTR?62,"has " ;180 91
|
||||
.FSTR FSTR?63,"Magic " ;180 37
|
||||
.FSTR FSTR?64,"would " ;176 45
|
||||
.FSTR FSTR?65,"southwest" ;175 26
|
||||
.FSTR FSTR?66,"northeast" ;175 26
|
||||
.FSTR FSTR?67,"! " ;174 175
|
||||
.FSTR FSTR?68,"getting " ;174 30
|
||||
.FSTR FSTR?69,"Flatheadia" ;171 20
|
||||
.FSTR FSTR?70,"as " ;168 169
|
||||
.FSTR FSTR?71,"like " ;165 56
|
||||
.FSTR FSTR?72,"all " ;162 82
|
||||
.FSTR FSTR?73,"It " ;162 82
|
||||
.FSTR FSTR?74,"there's " ;161 24
|
||||
.FSTR FSTR?75,"You'll " ;161 24
|
||||
.FSTR FSTR?76,"other " ;160 41
|
||||
.FSTR FSTR?77,"north" ;159 54
|
||||
.FSTR FSTR?78,"not " ;158 80
|
||||
.FSTR FSTR?79,"get " ;156 79
|
||||
.FSTR FSTR?80,"where " ;156 40
|
||||
.FSTR FSTR?81,"by " ;155 156
|
||||
.FSTR FSTR?82,"don't " ;155 32
|
||||
.FSTR FSTR?83,"center " ;155 32
|
||||
.FSTR FSTR?84,"right " ;152 39
|
||||
.FSTR FSTR?85,"looks " ;152 39
|
||||
.FSTR FSTR?86,"number " ;150 31
|
||||
.FSTR FSTR?87,"castle " ;150 31
|
||||
.FSTR FSTR?88,"already " ;150 26
|
||||
.FSTR FSTR?89,"Company" ;150 26
|
||||
.FSTR FSTR?90,"was " ;148 75
|
||||
.FSTR FSTR?91,"Your " ;148 38
|
||||
.FSTR FSTR?92,"than " ;147 50
|
||||
.FSTR FSTR?93,"must " ;144 49
|
||||
.FSTR FSTR?94,"opening " ;144 25
|
||||
.FSTR FSTR?95,"its " ;142 72
|
||||
.FSTR FSTR?96,"here" ;140 71
|
||||
|
||||
|
||||
;word frequency table of 96 most common words
|
||||
|
||||
WORDS:: .TABLE
|
||||
FSTR?1
|
||||
FSTR?2
|
||||
FSTR?3
|
||||
FSTR?4
|
||||
FSTR?5
|
||||
FSTR?6
|
||||
FSTR?7
|
||||
FSTR?8
|
||||
FSTR?9
|
||||
FSTR?10
|
||||
FSTR?11
|
||||
FSTR?12
|
||||
FSTR?13
|
||||
FSTR?14
|
||||
FSTR?15
|
||||
FSTR?16
|
||||
FSTR?17
|
||||
FSTR?18
|
||||
FSTR?19
|
||||
FSTR?20
|
||||
FSTR?21
|
||||
FSTR?22
|
||||
FSTR?23
|
||||
FSTR?24
|
||||
FSTR?25
|
||||
FSTR?26
|
||||
FSTR?27
|
||||
FSTR?28
|
||||
FSTR?29
|
||||
FSTR?30
|
||||
FSTR?31
|
||||
FSTR?32
|
||||
FSTR?33
|
||||
FSTR?34
|
||||
FSTR?35
|
||||
FSTR?36
|
||||
FSTR?37
|
||||
FSTR?38
|
||||
FSTR?39
|
||||
FSTR?40
|
||||
FSTR?41
|
||||
FSTR?42
|
||||
FSTR?43
|
||||
FSTR?44
|
||||
FSTR?45
|
||||
FSTR?46
|
||||
FSTR?47
|
||||
FSTR?48
|
||||
FSTR?49
|
||||
FSTR?50
|
||||
FSTR?51
|
||||
FSTR?52
|
||||
FSTR?53
|
||||
FSTR?54
|
||||
FSTR?55
|
||||
FSTR?56
|
||||
FSTR?57
|
||||
FSTR?58
|
||||
FSTR?59
|
||||
FSTR?60
|
||||
FSTR?61
|
||||
FSTR?62
|
||||
FSTR?63
|
||||
FSTR?64
|
||||
FSTR?65
|
||||
FSTR?66
|
||||
FSTR?67
|
||||
FSTR?68
|
||||
FSTR?69
|
||||
FSTR?70
|
||||
FSTR?71
|
||||
FSTR?72
|
||||
FSTR?73
|
||||
FSTR?74
|
||||
FSTR?75
|
||||
FSTR?76
|
||||
FSTR?77
|
||||
FSTR?78
|
||||
FSTR?79
|
||||
FSTR?80
|
||||
FSTR?81
|
||||
FSTR?82
|
||||
FSTR?83
|
||||
FSTR?84
|
||||
FSTR?85
|
||||
FSTR?86
|
||||
FSTR?87
|
||||
FSTR?88
|
||||
FSTR?89
|
||||
FSTR?90
|
||||
FSTR?91
|
||||
FSTR?92
|
||||
FSTR?93
|
||||
FSTR?94
|
||||
FSTR?95
|
||||
FSTR?96
|
||||
.ENDT
|
||||
|
||||
.ENDI
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue