|
|
1.1 ! root 1: ROUTINE VisP; ! 2: VisP = { (Visp List Propno) => True IFF an object } ! 3: (($eq %1 0) : ($rtrn FALSE)) { is visible on List that has Propno } ! 4: (($prop %1 INVIS) : ! 5: ($rtrn (VisP ($link %1) %2))) { Ignore this object } ! 6: (($prop %1 %2) : ! 7: ($rtrn TRUE)) { Found one! } ! 8: (($or ($prop %1 OPEN) ! 9: ($prop %1 TRANS)): { Look inside...} ! 10: ( (VisP ($cont %1) %2): ($rtrn TRUE) )) ! 11: ($rtrn (VisP ($link %1) %2)) ! 12: ; ! 13: ! 14: ROUTINE Reach; { (Reach obj loc) => True IFF the obj } ! 15: Reach = { IS the loc or can be reached } ! 16: (($eq %2 0) : ($rtrn FALSE)) { by the loc } ! 17: (($eq %1 %2): ($rtrn TRUE)) ! 18: { Still explore inside } ! 19: (($prop %2 OPEN): ! 20: ((Reach %1 ($cont %2)): ($rtrn TRUE)) ! 21: ) ! 22: ($rtrn (Reach %1 ($link %2))) ! 23: ! 24: ; ! 25: ! 26: ROUTINE See; { (See obj loc) => True IFF the obj } ! 27: See = { IS the loc or can be seen } ! 28: (($prop %1 INVIS): ($rtrn FALSE)) ! 29: (($eq %2 0) : ($rtrn FALSE)) ! 30: (($eq %1 %2): ($rtrn TRUE)) ! 31: (($or ($prop %2 TRANS) { Still explore inside } ! 32: ($prop %2 OPEN)): ! 33: ((See %1 ($cont %2)): ($rtrn TRUE)) ! 34: ) ! 35: ($rtrn (See %1 ($link %2))) ! 36: ; ! 37: ! 38: Avail = ! 39: (($not %1):($say "The what?\n")($exit 1)) ! 40: (($not (See %1 ($cont ($loc .ME)))): ! 41: ($say "I can't see that item here.\n") ! 42: ($exit 1) ! 43: ) ! 44: (($not (Reach %1 ($cont ($loc .ME)))): ! 45: ($say "I can't get at that item.\n") ! 46: ($exit 1) ! 47: ) ! 48: (($and ($prop .ME SHRNK) ! 49: ($not ($prop %1 SHRNK)) ): ! 50: (($ne ($loc %1) .ME): ! 51: ($say ! 52: "Right now, ")(($sdisc %1))($say " is too big for you to deal with.\n") ! 53: ($exit 1) ! 54: ) ! 55: ) ! 56: ($rtrn TRUE) ! 57: ; ! 58: ! 59: ROUTINE LitP; ! 60: LitP = { (LitP Room) => True IFF Room is lit } ! 61: (($prop %1 LIGHT) : ($rtrn TRUE)) ! 62: (($or (VisP ($cont %1) LIGHT) ! 63: (VisP ($cont %1) FLAME)): ($rtrn TRUE)) ! 64: ! 65: (($or (VisP ($cont .ME) LIGHT) { Check .ME 'cause invisibl } ! 66: (VisP ($cont .ME) FLAME)): ($rtrn TRUE)) ! 67: ($rtrn FALSE) ! 68: ; ! 69: ! 70: ROUTINE Blank; ! 71: Blank = { Blank n => Type n blanks } ! 72: (($gt %1 0): ! 73: ($say " ") ! 74: (Blank ($minus %1 1))); ! 75: ! 76: ROUTINE Llook; ROUTINE Slook; ! 77: Llook = { (Llook Level Object) describes Object } ! 78: (($eq %2 0) : ($exit 0)) ! 79: (($eq %1 0) : { Level 0 == This is a room. Check lighting } ! 80: ((LitP %2): ! 81: ($setg DARKG FALSE) ! 82: (($ldisc %2)) { Talk about the room } ! 83: (($not @DARKG): ! 84: (Llook 1 ($cont %2)) { Talk about its contents } ! 85: ) ! 86: {else}: ! 87: ($say "It's mighty dark in here!\n") ! 88: ($setg DARKG TRUE) ! 89: ) ! 90: ! 91: {else} : { Level > 0 == This is a list of objs } ! 92: ( ($ldisc %2) : { Talk (only) about the visible } ! 93: (Blank %1) { Indent } ! 94: (($ldisc %2)) { Blurb the object } ! 95: ! 96: ( ($cont %2): { something inside it...} ! 97: (($or ($prop %2 OPEN)($prop %2 TRANS)): ! 98: (Blank %1) ! 99: ($say "It contains:\n") ! 100: ($setp %2 CONTS TRUE) ! 101: (Slook ($plus %1 1) ($cont %2)) ! 102: { Short descriptions for contents } ! 103: ) ! 104: ) ! 105: ) ! 106: (Llook %1 ($link %2)) ! 107: ); ! 108: ! 109: ! 110: Slook = { (Llook Level Object) describes Object } ! 111: (($eq %2 0) : ($exit 0)) ! 112: (($eq %1 0) : { Level 0 == This is a room. Check lighting } ! 113: ((LitP %2): ! 114: ($setg DARKG FALSE) ! 115: (($sdisc %2)) { Talk about the room } ! 116: (($not @DARKG): ! 117: ($setp %2 CONTS FALSE) ! 118: (Slook 1 ($cont %2)) { Talk about its contents } ! 119: ) ! 120: {else}: ! 121: ($say "It's mighty dark in here!\n") ! 122: ($setg DARKG TRUE) ! 123: ) ! 124: ! 125: {else} : { Level > 0 == This is a list of objs } ! 126: (($sdisc %2) : { Talk (only) about the visible } ! 127: (($not ($prop ($loc %2) CONTS)): ! 128: (Blank ($minus %1 1)) ! 129: ($say "You can see:\n") ! 130: ($setp ($loc %2) CONTS TRUE) ! 131: ) ! 132: (Blank %1) { Indent } ! 133: (($sdisc %2)) { Blurb the object } ! 134: (($and ($ne ($cont %2) 0) { something inside it...} ! 135: ($or ($prop %2 OPEN) {...and you can see it } ! 136: ($prop %2 TRANS) ! 137: ) ! 138: ): ! 139: ! 140: ($setp %2 CONTS TRUE) ! 141: ($say ", containing:\n") ! 142: (Slook ($plus %1 1) ($cont %2)) ! 143: { Short descriptions for contents } ! 144: : ($say "\n") ! 145: ! 146: ) ! 147: ) ! 148: ( Slook %1 ($link %2)) ! 149: ! 150: ); ! 151: ! 152: ! 153: ! 154: ! 155: LOOK = ! 156: ! 157: ! 158: ! 159: ($setg WASDK @DARKG) ! 160: (@LOOKP : ! 161: (($prop ($loc .ME) VISIT): ! 162: (Slook 0 ($loc .ME)) ! 163: {else} : ! 164: (Llook 0 ($loc .ME)) ! 165: ($setp ($loc .ME) VISIT TRUE) ! 166: ) ! 167: (@DARKG : ($setp ($loc .ME) VISIT FALSE)) ! 168: ) ! 169: ($setg LOOKP FALSE) ! 170: ($itun) ! 171: ($say "\n> ") ! 172: ; ! 173: ! 174: ROUTINE GrowX; ROUTINE ShrnX; ! 175: GrowX = (($prop %1 SHRNK): ! 176: ($setp %1 SHRNK FALSE) ! 177: (($cont %1): ! 178: (GrowX ($cont %1))) ! 179: (($link %1): ! 180: (GrowX ($link %1))) ! 181: ) ! 182: ; ! 183: ! 184: Grow = (($prop .ME SHRNK): ! 185: ($setp .ME SHRNK FALSE) ! 186: (($cont .ME): ! 187: (GrowX ($cont .ME))) ! 188: ) ! 189: ; ! 190: ! 191: ShrnX = (($not ($prop %1 SHRNK)): ! 192: ($setp %1 SHRNK TRUE) ! 193: (($cont %1): ! 194: (ShrnX ($cont %1))) ! 195: (($link %1): ! 196: (ShrnX ($link %1))) ! 197: {else} : ! 198: ($say "You hear a tiny POP as ")(($sdisc %1)) ! 199: ($say " vanishes completely!\n") ! 200: (($link %1): ! 201: (ShrnX ($link %1))) ! 202: ($move %1 .ALL) ! 203: ) ! 204: ! 205: ; ! 206: ! 207: Shrin= (($not ($prop .ME SHRNK)): ! 208: ($setp .ME SHRNK TRUE) ! 209: (($cont .ME): ! 210: (ShrnX ($cont .ME))) ! 211: ) ! 212: ;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.