├── .gitignore ├── README.md ├── dist ├── macos │ └── Adventure.dmg └── win │ └── Adventure.zip ├── img └── adventure.jpg ├── maps ├── map.jpg └── map.pdf ├── src ├── 77-03-11_adventure.dat ├── 77-03-11_adventure.f ├── 77-03-23_adventure.f ├── 77-03-31_adventure.dat └── 77-03-31_adventure.f └── walkthroughs ├── walkthrough1.html ├── walkthrough2.txt └── walkthrough3.txt /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Colossal Cave Adventure 2 | 3 | Original source code, written in Fortran, from the very first text adventure game in the videogames history (1976). 4 | 5 | I collected some other goodies from around the internet (maps, walkthroughs...). Even executables for Windows & Mac OS ! 6 | 7 |  8 | 9 | I heard about the game in the Halt & Catch Fire TV series. Googled it a bit and found the original `src`. 10 | This repository is for educational purposes only. 11 | -------------------------------------------------------------------------------- /dist/macos/Adventure.dmg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wh0am1-dev/adventure/210661ceb39be3ad00b4ca30126e2862029c6255/dist/macos/Adventure.dmg -------------------------------------------------------------------------------- /dist/win/Adventure.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wh0am1-dev/adventure/210661ceb39be3ad00b4ca30126e2862029c6255/dist/win/Adventure.zip -------------------------------------------------------------------------------- /img/adventure.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wh0am1-dev/adventure/210661ceb39be3ad00b4ca30126e2862029c6255/img/adventure.jpg -------------------------------------------------------------------------------- /maps/map.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wh0am1-dev/adventure/210661ceb39be3ad00b4ca30126e2862029c6255/maps/map.jpg -------------------------------------------------------------------------------- /maps/map.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wh0am1-dev/adventure/210661ceb39be3ad00b4ca30126e2862029c6255/maps/map.pdf -------------------------------------------------------------------------------- /src/77-03-11_adventure.dat: -------------------------------------------------------------------------------- 1 | 1 2 | 1 YOU ARE STANDING AT THE END OF A ROAD BEFORE A SMALL BRICK 3 | 1 BUILDING . AROUND YOU IS A FOREST. A SMALL 4 | 1 STREAM FLOWS OUT OF THE BUILDING AND DOWN A GULLY. 5 | 2 YOU HAVE WALKED UP A HILL, STILL IN THE FOREST 6 | 2 THE ROAD NOW SLOPES BACK DOWN THE OTHER SIDE OF THE HILL. 7 | 2 THERE IS A BUILDING IN THE DISTANCE. 8 | 3 YOU ARE INSIDE A BUILDING, A WELL HOUSE FOR A LARGE SPRING. 9 | 4 YOU ARE IN A VALLEY IN THE FOREST BESIDE A STREAM TUMBLING 10 | 4 ALONG A ROCKY BED. 11 | 5 YOU ARE IN OPEN FOREST, WITH A DEEP VALLEY TO ONE SIDE. 12 | 6 YOU ARE IN OPEN FOREST NEAR BOTH A VALLEY AND A ROAD. 13 | 7 AT YOUR FEET ALL THE WATER OF THE STREAM SPLASHES INTO A 14 | 7 2 INCH SLIT IN THE ROCK. DOWNSTREAM THE STREAMBED IS BARE ROCK. 15 | 8 YOU ARE IN A 20 FOOT DEPRESSION FLOORED WITH BARE DIRT. SET INTO 16 | 8 THE DIRT IS A STRONG STEEL GRATE MOUNTED IN CONCRETE. A DRY 17 | 8 STREAMBED LEADS INTO THE DEPRESSION. 18 | 9 YOU ARE IN A SMALL CHAMBER BENEATH A 3X3 STEEL GRATE TO THE 19 | 9 SURFACE. A LOW CRAWL OVER COBBLES LEADS INWARD TO THE WEST. 20 | 10 YOU ARE CRAWLING OVER COBBLES IN A LOW PASSAGE. THERE IS A 21 | 10 DIM LIGHT AT THE EAST END OF THE PASSAGE. 22 | 11 YOU ARE IN A DEBRIS ROOM, FILLED WITH STUFF WASHED IN FROM 23 | 11 THE SURFACE. A LOW WIDE PASSAGE WITH COBBLES BECOMES 24 | 11 PLUGGED WITH MUD AND DEBRIS HERE,BUT AN AWKWARD CANYON 25 | 11 LEADS UPWARD AND WEST. 26 | 11 A NOTE ON THE WALL SAYS 'MAGIC WORD XYZZY'. 27 | 12 YOU ARE IN AN AWKWARD SLOPING EAST/WEST CANYON. 28 | 13 YOU ARE IN A SPLENDID CHAMBER THIRTY FEET HIGH. THE WALLS 29 | 13 ARE FROZEN RIVERS OF ORANGE STONE. AN AWKWARD CANYON AND A 30 | 13 GOOD PASSAGE EXIT FROM EAST AND WEST SIDES OF THE CHAMBER. 31 | 14 AT YOUR FEET IS A SMALL PIT BREATHING TRACES OF WHITE MIST. AN 32 | 14 EAST PASSAGE ENDS HERE EXCEPT FOR A SMALL CRACK LEADING ON. 33 | 15 YOU ARE AT ONE END OF A VAST HALL STRETCHING FORWARD OUT OF 34 | 15 SIGHT TO THE WEST. THERE ARE OPENINGS TO EITHER SIDE. NEARBY, A WIDE 35 | 15 STONE STAIRCASE LEADS DOWNWARD. THE HALL IS FILLED WITH 36 | 15 WISPS OF WHITE MIST SWAYING TO AND FRO ALMOST AS IF ALIVE. 37 | 15 A COLD WIND BLOWS UP THE STAIRCASE. THERE IS A PASSAGE 38 | 15 AT THE TOP OF A DOME BEHIND YOU. 39 | 16 THE CRACK IS FAR TOO SMALL FOR YOU TO FOLLOW. 40 | 17 YOU ARE ON THE EAST BANK OF A FISSURE SLICING CLEAR ACROSS 41 | 17 THE HALL. THE MIST IS QUITE THICK HERE, AND THE FISSURE IS 42 | 17 TOO WIDE TO JUMP. 43 | 18 THIS IS A LOW ROOM WITH A CRUDE NOTE ON THE WALL. 44 | 18 IT SAYS 'YOU WON'T GET IT UP THE STEPS'. 45 | 19 YOU ARE IN THE HALL OF THE MOUNTAIN KING, WITH PASSAGES 46 | 19 OFF IN ALL DIRECTIONS. 47 | 20 YOU ARE AT THE BOTTOM OF THE PIT WITH A BROKEN NECK. 48 | 21 YOU DIDN'T MAKE IT 49 | 22 THE DOME IS UNCLIMBABLE 50 | 23 YOU CAN'T GO IN THROUGH A LOCKED STEEL GRATE! 51 | 24 YOU DON'T FIT DOWN A TWO INCH HOLE! 52 | 25 YOU CAN'T GO THROUGH A LOCKED STEEL GRATE. 53 | 27 YOU ARE ON THE WEST SIDE OF THE FISSURE IN THE HALL OF MISTS. 54 | 28 YOU ARE IN A LOW N/S PASSAGE AT A HOLE IN THE FLOOR. 55 | 28 THE HOLE GOES DOWN TO AN E/W PASSAGE. 56 | 29 YOU ARE IN THE SOUTH SIDE CHAMBER. 57 | 30 YOU ARE IN THE WEST SIDE CHAMBER OF HALL OF MT KING. 58 | 30 A PASSAGE CONTINUES WEST AND UP HERE. 59 | 60 | 31 THERE IS NO WAY ACROSS THE FISSURE. 61 | 32 YOU CAN'T GET BY THE SNAKE 62 | 33 YOU ARE IN A LARGE ROOM, WITH A PASSAGE TO THE SOUTH, 63 | 33 A PASSAGE TO THE WEST, AND A WALL OF BROKEN ROCK TO 64 | 33 THE EAST. THERE IS A LARGE 'Y2' ON A ROCK IN ROOMS CENTER. 65 | 34 YOU ARE IN A JUMBLE OF ROCK, WITH CRACKS EVERYWHERE. 66 | 35 YOU ARE AT A WINDOW ON A HUGE PIT, WHICH GOES UP AND 67 | 35 DOWN OUT OF SIGHT. A FLOOR IS INDISTINCTLY VISIBLE 68 | 35 OVER 50 FEET BELOW. DIRECTLY OPPOSITE YOU AND 25 FEET AWAY 69 | 35 THERE IS A SIMILAR WINDOW. 70 | 36 YOU ARE IN A DIRTY BROKEN PASSAGE. TO THE EAST IS A CRAWL. 71 | 36 TO THE WEST IS A LARGE PASSAGE. ABOVE YOU IS A HOLE TO 72 | 36 ANOTHER PASSAGE. 73 | 37 YOU ARE ON THE BRINK OF A SMALL CLEAN CLIMBABLE PIT. 74 | 37 A CRAWL LEADS WEST. 75 | 38 YOU ARE IN THE BOTTOM OF A SMALL PIT WITH A LITTLE 76 | 38 STREAM, WHICH ENTERS AND EXITS THROUGH TINY SLITS. 77 | 39 YOU ARE IN A LARGE ROOM FULL OF DUSTY ROCKS. THERE IS A 78 | 39 BIG HOLE IN THE FLOOR. THERE ARE CRACKS EVERYWHERE, AND 79 | 39 A PASSAGE LEADING EAST. 80 | 40 YOU HAVE CRAWLED THROUGH A VERY LOW WIDE PASSAGE PARALLEL 81 | 40 TO AND NORTH OF THE HALL OF MISTS. 82 | 41 YOU ARE AT THE WEST END OF HALL OF MISTS. A LOW WIDE CRAWL 83 | 41 CONTINUES WEST AND ANOTHER GOES NORTH. TO THE SOUTH IS A 84 | 41 LITTLE PASSAGE 6 FEET OFF THE FLOOR. 85 | 42 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 86 | 43 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 87 | 44 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 88 | 45 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 89 | 46 DEAD END 90 | 47 DEAD END 91 | 48 DEAD END 92 | 49 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 93 | 50 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 94 | 51 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 95 | 52 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 96 | 53 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 97 | 54 DEAD END 98 | 55 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 99 | 56 DEAD END 100 | 57 YOU ARE ON THE BRINK OF A THIRTY FOOT PIT WITH A MASSIVE 101 | 57 ORANGE COLUMN DOWN ONE WALL. YOU COULD CLIMB DOWN HERE 102 | 57 BUT YOU COULD NOT GET BACK UP. THE MAZE CONTINUES AT THIS 103 | 57 LEVEL. 104 | 58 DEAD END 105 | 59 YOU HAVE CRAWLED THROUGH A VERY LOW WIDE PASSAGE PARALLEL 106 | 59 TO AND NORTH OF THE HALL OF MISTS. 107 | 60 YOU ARE AT THE EAST END OF A VERY LONG HALL APPARENTLY 108 | 60 WITHOUT SIDE CHAMBERS. TO THE EAST A LOW WIDE CRAWL SLANTS 109 | 60 UP. TO THE NORTH A ROUND TWO FOOT HOLE SLANTS DOWN. 110 | 61 YOU ARE AT THE WEST END OF A VERY LONG FEATURELESS HALL. 111 | 62 YOU ARE AT A CROSSOVER OF A HIGH N/S PASSAGE AND A LOW E/W ONE. 112 | 63 DEAD END 113 | 64 YOU ARE AT A COMPLEX JUNCTION. A LOW HANDS AND KNEES 114 | 64 PASSAGE FROM THE NORTH JOINS A HIGHER CRAWL 115 | 64 FROM THE EAST TO MAKE A WALKING PASSAGE GOING WEST 116 | 64 THERE IS ALSO A LARGE ROOM ABOVE. THE AIR IS DAMP HERE. 117 | 64 A SIGN IN MIDAIR HERE SAYS 'CAVE UNDER CONSTRUCTION BEYOND 118 | 64 THIS POINT. PROCEED AT OWN RISK.' 119 | 65 YOU ARE IN BEDQUILT, A LONG EAST/WEST PASSAGE WITH HOLES EVERYWHERE. 120 | 65 TO EXPLORE AT RANDOM SELECT NORTH, SOUTH, UP, OR DOWN. 121 | 66 YOU ARE IN A ROOM WHOSE WALLS RESEMBLE SWISS CHEESE. 122 | 66 OBVIOUS PASSAGES GO WEST,EAST,NE, AND 123 | 66 NW. PART OF THE ROOM IS OCCUPIED BY A LARGE BEDROCK BLOCK. 124 | 67 YOU ARE IN THE TWOPIT ROOM. THE FLOOR 125 | 67 HERE IS LITTERED WITH THIN ROCK SLABS, WHICH MAKE IT 126 | 67 EASY TO DESCEND THE PITS. THERE IS A PATH HERE BYPASSING 127 | 67 THE PITS TO CONNECT PASSAGES FROM EAST AND WEST.THERE 128 | 67 ARE HOLES ALL OVER, BUT THE ONLY BIG ONE IS ON THE WALL 129 | 67 DIRECTLY OVER THE EAST PIT WHERE YOU CAN'T GET TO IT. 130 | 68 YOU ARE IN A LARGE LOW CIRCULAR CHAMBER WHOSE FLOOR IS AN 131 | 68 IMMENSE SLAB FALLEN FROM THE CEILING(SLAB ROOM). EAST AND 132 | 68 WEST THERE ONCE WERE LARGE PASSAGES, BUT THEY ARE NOW FILLED 133 | 68 WITH BOULDERS. LOW SMALL PASSAGES GO NORTH AND SOUTH, AND THE 134 | 68 SOUTH ONE QUICKLY BENDS WEST AROUND THE BOULDERS. 135 | 69 YOU ARE IN A SECRET NS CANYON ABOVE A LARGE ROOM. 136 | 70 YOU ARE IN A SECRET N/S CANYON ABOVE A SIZABLE PASSAGE. 137 | 71 YOU ARE IN SECRET CANYON AT A JUNCTION OF THREE CANYONS, 138 | 71 BEARING NORTH, SOUTH, AND SE. THE NORTH ONE IS AS TALL 139 | 71 AS THE OTHER TWO COMBINED. 140 | 72 YOU ARE IN A LARGE LOW ROOM. CRAWLS LEAD N, SE, AND SW. 141 | 73 DEAD END CRAWL. 142 | 74 YOU ARE IN SECRET CANYON WHICH HERE RUNS E/W. IT CROSSES OVER 143 | 74 A VERY TIGHT CANYON 15 FEET BELOW. IF YOU GO DOWN YOU MAY 144 | 74 NOT BE ABLE TO GET BACK UP 145 | 75 YOU ARE AT A WIDE PLACE IN A VERY TIGHT N/S CANYON. 146 | 76 THE CANYON HERE BECOMES TO TIGHT TO GO FURTHER SOUTH. 147 | 77 YOU ARE IN A TALL E/W CANYON. A LOW TIGHT CRAWL GOES 3 FEET 148 | 77 NORTH AND SEEMS TO OPEN UP. 149 | 78 THE CANYON RUNS INTO A MASS OF BOULDERS - DEAD END. 150 | 79 THE STREAM FLOWS OUT THROUGH A PAIR OF 1 FOOT DIAMETER SEWER 151 | 79 PIPES. IT WOULD BE ADVISABLE TO USE THE DOOR. 152 | -1 END 153 | 2 154 | 1 YOU'RE AT END OF ROAD AGAIN. 155 | 2 YOU'RE AT HILL IN ROAD. 156 | 3 YOU'RE INSIDE BUILDING. 157 | 4 YOU'RE IN VALLEY 158 | 5 YOU'RE IN FOREST 159 | 6 YOU'RE IN FOREST 160 | 7 YOU'RE AT SLIT IN STREAMBED 161 | 8 YOU'RE OUTSIDE GRATE 162 | 9 YOU'RE BELOW THE GRATE 163 | 10 YOU'RE IN COBBLE CRAWL 164 | 11 YOU'RE IN DEBRIS ROOM. 165 | 13 YOU'RE IN BIRD CHAMBER. 166 | 14 YOU'RE AT TOP OF SMALL PIT. 167 | 15 YOU'RE IN HALL OF MISTS. 168 | 17 YOU'RE ON EAST BANK OF FISSURE. 169 | 18 YOU'RE IN NUGGET OF GOLD ROOM. 170 | 19 YOU'RE IN HALL OF MT KING. 171 | 33 YOU'RE AT Y2 172 | 35 YOU'RE AT WINDOW ON PIT 173 | 36 YOU'RE IN DIRTY PASSAGE 174 | 39 YOU'RE N DUSTY ROCK ROOM. 175 | 41 YOU'RE AT WEST END OF HALL OF MISTS. 176 | 57 YOU'RE AT BRINK OF PIT. 177 | 60 YOU'RE AT EAST END OF LONG HALL. 178 | 66 YOU'RE IN SWISS CHEESE ROOM 179 | 67 YOU'RE IN TWOPIT ROOM 180 | 68 YOU'RE IN SLAB ROOM 181 | -1 182 | 3 183 | 1 2 2 44 184 | 1 3 3 12 19 43 185 | 1 4 4 5 13 14 46 30 186 | 1 5 6 45 43 187 | 1 8 49 188 | 2 1 8 2 12 7 43 45 30 189 | 2 5 6 45 46 190 | 3 1 3 11 32 44 191 | 3 11 48 192 | 3 33 65 193 | 3 79 5 14 194 | 4 1 4 45 195 | 4 5 6 43 44 29 196 | 4 7 5 46 30 197 | 4 8 49 198 | 5 4 9 43 30 199 | 5 300 6 7 8 45 200 | 5 5 44 46 201 | 6 1 2 45 202 | 6 4 9 43 44 30 203 | 6 5 6 46 204 | 7 1 12 205 | 7 4 4 45 206 | 7 5 6 43 44 207 | 7 8 5 15 16 46 30 208 | 7 24 47 14 30 209 | 8 5 6 43 44 46 210 | 8 1 12 211 | 8 7 4 13 45 212 | 8 301 3 5 19 30 213 | 9 302 11 12 214 | 9 10 17 18 19 44 215 | 9 14 31 216 | 9 11 51 217 | 10 9 11 20 21 43 218 | 10 11 19 22 44 51 219 | 10 14 31 220 | 11 310 49 221 | 11 10 17 18 23 24 43 222 | 11 12 25 305 19 29 44 223 | 11 3 48 224 | 11 14 31 225 | 12 310 49 226 | 12 11 30 43 51 227 | 12 13 19 29 44 228 | 12 14 31 229 | 13 310 49 230 | 13 11 51 231 | 13 12 25 305 43 232 | 13 14 23 31 44 233 | 14 310 49 234 | 14 11 51 235 | 14 13 23 43 236 | 14 303 30 31 34 237 | 14 16 33 44 238 | 15 18 36 46 239 | 15 17 7 38 44 240 | 15 19 10 30 45 241 | 15 304 29 31 34 35 23 43 242 | 15 34 55 243 | 15 62 69 244 | 16 14 1 245 | 17 15 8 38 43 246 | 17 305 7 247 | 17 306 40 41 42 44 19 39 248 | 18 15 38 11 8 45 249 | 19 15 10 29 43 250 | 19 307 45 36 251 | 19 308 46 37 252 | 19 309 44 7 253 | 19 74 66 254 | 20 26 1 255 | 21 26 1 256 | 22 15 1 257 | 23 8 1 258 | 24 7 1 259 | 25 9 1 260 | 27 17 8 11 38 261 | 27 40 45 262 | 27 41 44 263 | 28 19 38 11 46 264 | 28 33 45 265 | 28 36 30 52 266 | 29 19 38 11 45 267 | 30 19 38 11 43 268 | 30 62 44 29 269 | 31 17 1 270 | 32 19 1 271 | 33 3 65 272 | 33 28 46 273 | 33 34 43 53 54 274 | 33 35 44 275 | 34 33 30 276 | 34 15 29 277 | 35 33 43 55 278 | 36 37 43 17 279 | 36 28 29 52 280 | 36 39 44 281 | 37 36 44 17 282 | 37 38 30 31 56 283 | 38 37 56 29 284 | 39 36 43 285 | 39 64 30 52 58 286 | 39 65 70 287 | 40 41 1 288 | 41 42 46 29 23 56 289 | 41 27 43 290 | 41 59 45 291 | 41 60 44 17 292 | 42 41 44 293 | 42 43 43 294 | 42 44 46 295 | 43 42 44 296 | 43 44 46 297 | 43 45 43 298 | 44 42 45 299 | 44 43 43 300 | 44 48 30 301 | 44 50 46 302 | 45 43 45 303 | 45 46 43 304 | 45 47 46 305 | 46 45 44 11 306 | 47 45 45 11 307 | 48 44 29 11 308 | 49 50 30 43 309 | 49 51 44 310 | 50 44 43 311 | 50 49 44 29 312 | 50 52 46 313 | 51 49 44 314 | 51 52 43 315 | 51 53 46 316 | 52 50 45 317 | 52 51 44 318 | 52 53 29 319 | 52 55 43 320 | 53 51 44 321 | 53 52 45 322 | 53 54 46 323 | 54 53 43 11 324 | 55 52 44 325 | 55 56 30 326 | 55 57 43 327 | 56 55 29 11 328 | 57 55 44 329 | 57 58 46 330 | 57 13 30 56 331 | 58 57 44 11 332 | 59 27 1 333 | 60 41 43 29 334 | 60 61 44 335 | 60 62 45 30 336 | 61 60 43 11 337 | 62 60 44 338 | 62 63 45 339 | 62 30 43 340 | 62 15 46 341 | 63 62 46 11 342 | 64 39 29 56 59 343 | 64 65 44 344 | 65 64 43 345 | 65 66 44 346 | 65 68 61 347 | 65 311 46 348 | 65 312 29 349 | 66 313 45 350 | 66 65 60 351 | 66 67 44 352 | 66 77 25 353 | 66 314 46 354 | 67 66 43 355 | 67 72 60 356 | 68 66 46 357 | 68 69 29 358 | 69 68 30 359 | 69 74 46 360 | 70 71 45 361 | 71 39 29 362 | 71 65 62 363 | 71 70 46 364 | 72 67 63 365 | 72 73 45 366 | 73 72 46 367 | 74 19 43 368 | 74 69 44 369 | 74 75 30 370 | 75 76 46 371 | 75 77 45 372 | 76 75 45 373 | 77 75 43 374 | 77 78 44 375 | 77 66 45 376 | 78 77 46 377 | 79 3 1 378 | -1 379 | 4 380 | 2 ROAD 381 | 3 ENTER 382 | 3 DOOR 383 | 3 GATE 384 | 4 UPSTR 385 | 5 DOWNS 386 | 6 FORES 387 | 7 FORWA 388 | 7 CONTI 389 | 7 ONWAR 390 | 8 BACK 391 | 8 RETUR 392 | 8 RETRE 393 | 9 VALLE 394 | 10 STAIR 395 | 11 OUT 396 | 11 OUTSI 397 | 11 EXIT 398 | 11 LEAVE 399 | 12 BUILD 400 | 12 BLD 401 | 12 HOUSE 402 | 13 GULLY 403 | 14 STREA 404 | 15 ROCK 405 | 16 BED 406 | 17 CRAWL 407 | 18 COBBL 408 | 19 INWAR 409 | 19 INSID 410 | 19 IN 411 | 20 SURFA 412 | 21 NULL 413 | 21 NOWHE 414 | 22 DARK 415 | 23 PASSA 416 | 24 LOW 417 | 25 CANYO 418 | 26 AWKWA 419 | 29 UPWAR 420 | 29 UP 421 | 29 U 422 | 29 ABOVE 423 | 30 D 424 | 30 DOWNW 425 | 30 DOWN 426 | 31 PIT 427 | 32 OUTDO 428 | 33 CRACK 429 | 34 STEPS 430 | 35 DOME 431 | 36 LEFT 432 | 37 RIGHT 433 | 38 HALL 434 | 39 JUMP 435 | 40 MAGIC 436 | 41 OVER 437 | 42 ACROS 438 | 43 EAST 439 | 43 E 440 | 44 WEST 441 | 44 W 442 | 45 NORTH 443 | 45 N 444 | 46 SOUTH 445 | 46 S 446 | 47 SLIT 447 | 48 XYZZY 448 | 49 DEPRE 449 | 50 ENTRA 450 | 51 DEBRI 451 | 52 HOLE 452 | 53 WALL 453 | 54 BROKE 454 | 55 Y2 455 | 56 CLIMB 456 | 57 LOOK 457 | 57 EXAMI 458 | 57 TOUCH 459 | 57 LOOKA 460 | 58 FLOOR 461 | 59 ROOM 462 | 60 NE 463 | 61 SLAB 464 | 61 SLABR 465 | 62 SE 466 | 63 SW 467 | 64 NW 468 | 65 PLUGH 469 | 66 SECRE 470 | 67 CAVE 471 | 68 TURN 472 | 69 CROSS 473 | 70 BEDQU 474 | 1001 KEYS 475 | 1001 KEY 476 | 1002 LAMP 477 | 1002 HEADL 478 | 1003 GRATE 479 | 1004 CAGE 480 | 1005 ROD 481 | 1006 STEPS 482 | 1007 BIRD 483 | 1010 NUGGE 484 | 1010 GOLD 485 | 1011 SNAKE 486 | 1012 FISSU 487 | 1013 DIAMO 488 | 1014 SILVE 489 | 1014 BARS 490 | 1015 JEWEL 491 | 1016 COINS 492 | 1017 DWARV 493 | 1017 DWARF 494 | 1018 KNIFE 495 | 1018 KNIVE 496 | 1018 ROCK 497 | 1018 WEAPO 498 | 1018 BOULD 499 | 1019 FOOD 500 | 1019 RATIO 501 | 1020 WATER 502 | 1020 BOTTL 503 | 1021 AXE 504 | 1022 KNIFE 505 | 1023 CHEST 506 | 1023 BOX 507 | 1023 TREAS 508 | 2001 TAKE 509 | 2001 CARRY 510 | 2001 KEEP 511 | 2001 PICKU 512 | 2001 PICK 513 | 2001 WEAR 514 | 2001 CATCH 515 | 2001 STEAL 516 | 2001 CAPTU 517 | 2001 FIND 518 | 2001 WHERE 519 | 2001 GET 520 | 2002 RELEA 521 | 2002 FREE 522 | 2002 DISCA 523 | 2002 DROP 524 | 2002 DUMP 525 | 2003 DUMMY 526 | 2004 UNLOC 527 | 2004 OPEN 528 | 2004 LIFT 529 | 2005 NOTHI 530 | 2005 HOLD 531 | 2006 LOCK 532 | 2006 CLOSE 533 | 2007 LIGHT 534 | 2007 ON 535 | 2008 EXTIN 536 | 2008 OFF 537 | 2009 STRIK 538 | 2010 CALM 539 | 2010 WAVE 540 | 2010 SHAKE 541 | 2010 SING 542 | 2010 CLEAV 543 | 2011 WALK 544 | 2011 RUN 545 | 2011 TRAVE 546 | 2011 GO 547 | 2011 PROCE 548 | 2011 CONTI 549 | 2011 EXPLO 550 | 2011 GOTO 551 | 2011 FOLLO 552 | 2012 ATTAC 553 | 2012 KILL 554 | 2012 STAB 555 | 2012 FIGHT 556 | 2012 HIT 557 | 2013 POUR 558 | 2014 EAT 559 | 2015 DRINK 560 | 2016 RUB 561 | 3001 OPENS 562 | 3002 HELP 563 | 3002 ? 564 | 3002 WHAT 565 | 3003 TREE 566 | 3004 DIG 567 | 3004 EXCIV 568 | 3005 BLAST 569 | 3006 LOST 570 | 3007 MIST 571 | 3008 THROW 572 | 3009 FUCK 573 | -1 574 | 5 575 | 201 THERE ARE SOME KEYS ON THE GROUND HERE. 576 | 202 THERE IS A SHINY BRASS LAMP NEARBY. 577 | 3 THE GRATE IS LOCKED 578 | 103 THE GRATE IS OPEN. 579 | 204 THERE IS A SMALL WICKER CAGE DISCARDED NEARBY. 580 | 205 A THREE FOOT BLACK ROD WITH A RUSTY STAR ON AN END LIES NEARBY 581 | 206 ROUGH STONE STEPS LEAD DOWN THE PIT. 582 | 7 A CHEERFUL LITTLE BIRD IS SITTING HERE SINGING. 583 | 107 THERE IS A LITTLE BIRD IN THE CAGE. 584 | 8 THE GRATE IS LOCKED 585 | 108 THE GRATE IS OPEN. 586 | 209 ROUGH STONE STEPS LEAD UP THE DOME. 587 | 210 THERE IS A LARGE SPARKLING NUGGET OF GOLD HERE! 588 | 11 A HUGE GREEN FIERCE SNAKE BARS THE WAY! 589 | 112 A CRYSTAL BRIDGE NOW SPANS THE FISSURE. 590 | 213 THERE ARE DIAMONDS HERE! 591 | 214 THERE ARE BARS OF SILVER HERE! 592 | 215 THERE IS PRECIOUS JEWELRY HERE! 593 | 216 THERE ARE MANY COINS HERE! 594 | 19 THERE IS FOOD HERE. 595 | 20 THERE IS A BOTTLE OF WATER HERE. 596 | 120 THERE IS AN EMPTY BOTTLE HERE. 597 | 221 THERE IS A LITTLE AXE HERE 598 | -1 599 | 6 600 | 1 SOMEWHERE NEARBY IS COLOSSAL CAVE, WHERE OTHERS HAVE FOUND 601 | 1 FORTUNES IN TREASURE AND GOLD, THOUGH IT IS RUMORED 602 | 1 THAT SOME WHO ENTER ARE NEVER SEEN AGAIN. MAGIC IS SAID 603 | 1 TO WORK IN THE CAVE. I WILL BE YOUR EYES AND HANDS. DIRECT 604 | 1 ME WITH COMMANDS OF 1 OR 2 WORDS. 605 | 1 (ERRORS, SUGGESTIONS, COMPLAINTS TO CROWTHER) 606 | 1 (IF STUCK TYPE HELP FOR SOME HINTS) 607 | 2 A LITTLE DWARF WITH A BIG KNIFE BLOCKS YOUR WAY. 608 | 3 A LITTLE DWARF JUST WALKED AROUND A CORNER,SAW YOU, THREW 609 | 3 A LITTLE AXE AT YOU WHICH MISSED, CURSED, AND RAN AWAY. 610 | 4 THERE IS A THREATENING LITTLE DWARF IN THE ROOM WITH YOU! 611 | 5 ONE SHARP NASTY KNIFE IS THROWN AT YOU! 612 | 6 HE GETS YOU! 613 | 7 NONE OF THEM HIT YOU! 614 | 8 A HOLLOW VOICE SAYS 'PLUGH' 615 | 9 THERE IS NO WAY TO GO THAT DIRECTION. 616 | 10 I AM UNSURE HOW YOU ARE FACING. USE COMPASS POINTS OR 617 | 10 NEARBY OBJECTS. 618 | 11 I DON'T KNOW IN FROM OUT HERE. USE COMPASS POINTS OR NAME 619 | 11 SOMETHING IN THE GENERAL DIRECTION YOU WANT TO GO. 620 | 12 I DON'T KNOW HOW TO APPLY THAT WORD HERE. 621 | 13 I DON'T UNDERSTAND THAT! 622 | 14 I ALWAYS UNDERSTAND COMPASS DIRECTIONS, OR YOU CAN NAME 623 | 14 A NEARBY THING TO HEAD THAT WAY. 624 | 15 SORRY, BUT I AM NOT ALLOWED TO GIVE MORE DETAIL. I WILL 625 | 15 REPEAT THE LONG DESCRIPTION OF YOUR LOCATION. 626 | 16 IT IS NOW PITCH BLACK. IF YOU PROCEED YOU WILL LIKELY 627 | 16 FALL INTO A PIT. 628 | 17 IF YOU PREFER, SIMPLY TYPE W RATHER THAN WEST. 629 | 18 ARE YOU TRYING TO CATCH THE BIRD? 630 | 19 THE BIRD IS FRIGHTENED RIGHT NOW AND YOU CANNOT CATCH IT 631 | 19 NO MATTER WHAT YOU TRY. PERHAPS YOU MIGHT TRY LATER. 632 | 20 ARE YOU TRYING TO ATTACK OR AVOID THE SNAKE? 633 | 21 YOU CAN'T KILL THE SNAKE, OR DRIVE IT AWAY, OR AVOID IT, 634 | 21 OR ANYTHING LIKE THAT. THERE IS A WAY TO GET BY, BUT YOU 635 | 21 DON'T HAVE THE NECESSARY RESOURCES RIGHT NOW. 636 | 22 MY WORD FOR HITTING SOMETHING WITH THE ROD IS 'STRIKE'. 637 | 23 YOU FELL INTO A PIT AND BROKE EVERY BONE IN YOUR BODY! 638 | 24 YOU ARE ALREADY CARRYING IT! 639 | 25 YOU CAN'T BE SERIOUS! 640 | 26 THE BIRD WAS UNAFRAID WHEN YOU ENTERED, BUT AS YOU APPROACH 641 | 26 IT BECOMES DISTURBED AND YOU CANNOT CATCH IT. 642 | 27 YOU CAN CATCH THE BIRD, BUT YOU CANNOT CARRY IT. 643 | 28 THERE IS NOTHING HERE WITH A LOCK! 644 | 29 YOU AREN'T CARRYING IT! 645 | 30 THE LITTLE BIRD ATTACKS THE GREEN SNAKE, AND IN AN 646 | 30 ASTOUNDING FLURRY DRIVES THE SNAKE AWAY. 647 | 31 YOU HAVE NO KEYS! 648 | 32 IT HAS NO LOCK. 649 | 33 I DON'T KNOW HOW TO LOCK OR UNLOCK SUCH A THING. 650 | 34 THE GRATE WAS ALREADY LOCKED. 651 | 35 THE GRATE IS NOW LOCKED. 652 | 36 THE GRATE WAS ALREADY UNLOCKED. 653 | 37 THE GRATE IS NOW UNLOCKED. 654 | 38 YOU HAVE NO SOURCE OF LIGHT. 655 | 39 YOUR LAMP IS NOW ON. 656 | 40 YOUR LAMP IS NOW OFF. 657 | 41 STRIKE WHAT? 658 | 42 NOTHING HAPPENS. 659 | 43 WHERE? 660 | 44 THERE IS NOTHING HERE TO ATTACK. 661 | 45 THE LITTLE BIRD IS NOW DEAD. ITS BODY DISAPPEARS. 662 | 46 ATTACKING THE SNAKE BOTH DOESN'T WORK AND IS VERY DANGEROUS. 663 | 47 YOU KILLED A LITTLE DWARF. 664 | 48 YOU ATTACK A LITTLE DWARF, BUT HE DODGES OUT OF THE WAY. 665 | 49 I HAVE TROUBLE WITH THE WORD 'THROW' BECAUSE YOU CAN THROW 666 | 49 A THING OR THROW AT A THING. PLEASE USE DROP OR ATTACK INSTEAD. 667 | 50 GOOD TRY, BUT THAT IS AN OLD WORN-OUT MAGIC WORD. 668 | 51 I KNOW OF PLACES, ACTIONS, AND THINGS. MOST OF MY VOCABULARY 669 | 51 DESCRIBES PLACES AND IS USED TO MOVE YOU THERE. TO MOVE TRY 670 | 51 WORDS LIKE FOREST, BUILDING, DOWNSTREAM, ENTER, EAST, WEST 671 | 51 NORTH, SOUTH, UP, OR DOWN. I KNOW ABOUT A FEW SPECIAL OBJECTS, 672 | 51 LIKE A BLACK ROD HIDDEN IN THE CAVE. THESE OBJECTS CAN BE 673 | 51 MANIPULATED USING ONE OF THE ACTION WORDS THAT I KNOW. USUALLY 674 | 51 YOU WILL NEED TO GIVE BOTH THE OBJECT AND ACTION WORDS 675 | 51 (IN EITHER ORDER), BUT SOMETIMES I CAN INFER THE OBJECT FROM 676 | 51 THE VERB ALONE. THE OBJECTS HAVE SIDE EFFECTS - FOR 677 | 51 INSTANCE, THE ROD SCARES THE BIRD. 678 | 51 USUALLY PEOPLE HAVING TROUBLE MOVING JUST NEED TO TRY A FEW 679 | 51 MORE WORDS. USUALLY PEOPLE TRYING TO MANIPULATE AN 680 | 51 OBJECT ARE ATTEMPTING SOMETHING BEYOND THEIR (OR MY!) 681 | 51 CAPABILITIES AND SHOULD TRY A COMPLETELY DIFFERENT TACK. 682 | 51 TO SPEED THE GAME YOU CAN SOMETIMES MOVE LONG DISTANCES 683 | 51 WITH A SINGLE WORD. FOR EXAMPLE, 'BUILDING' USUALLY GETS 684 | 51 YOU TO THE BUILDING FROM ANYWHERE ABOVE GROUND EXCEPT WHEN 685 | 51 LOST IN THE FOREST. ALSO, NOTE THAT CAVE PASSAGES TURN A 686 | 51 LOT, AND THAT LEAVING A ROOM TO THE NORTH DOES NOT GUARANTEE 687 | 51 ENTERING THE NEXT FROM THE SOUTH. GOOD LUCK! 688 | 52 IT MISSES! 689 | 53 IT GETS YOU! 690 | 54 OK 691 | 55 YOU CAN'T UNLOCK THE KEYS. 692 | 56 YOU HAVE CRAWLED AROUND IN SOME LITTLE HOLES AND WOUND UP 693 | 56 BACK IN THE MAIN PASSAGE. 694 | 57 I DON'T KNOW WHERE THE CAVE IS, BUT HEREABOUTS NO STREAM 695 | 57 CAN RUN ON THE SURFACE FOR LONG. I WOULD TRY THE STREAM. 696 | 58 I NEED MORE DETAILED INSTRUCTIONS TO DO THAT. 697 | 59 I CAN ONLY TELL YOU WHAT YOU SEE AS YOU MOVE ABOUT 698 | 59 AND MANIPULATE THINGS. I CANNOT TELL YOU WHERE REMOTE THINGS 699 | 59 ARE. 700 | 60 I DON'T KNOW THAT WORD. 701 | 61 WHAT? 702 | 62 ARE YOU TRYING TO GET INTO THE CAVE? 703 | 63 THE GRATE IS VERY SOLID AND HAS A HARDENED STEEL LOCK. YOU 704 | 63 CANNOT ENTER WITHOUT A KEY, AND THERE ARE NO KEYS NEARBY. 705 | 63 I WOULD RECOMMEND LOOKING ELSEWHERE FOR THE KEYS. 706 | 64 THE TREES OF THE FOREST ARE LARGE HARDWOOD OAK AND MAPLE, 707 | 64 WITH AN OCCASIONAL GROVE OF PINE OR SPRUCE. THERE IS QUITE 708 | 64 A BIT OF UNDERGROWTH, LARGELY BIRCH AND ASH SAPLINGS PLUS 709 | 64 NONDESCRITPT BUSHES OF VARIOUS SORTS. THIS TIME OF YEAR 710 | 64 VISIBILITY IS QUITE RESTRICTED BY ALL THE LEAVES, BUT TRAVEL 711 | 64 IS QUITE EASY IF YOU DETOUR AROUND THE SPRUCE AND BERRY BUSHES. 712 | 65 WELCOME TO ADVENTURE!! WOULD YOU LIKE INSTRUCTIONS? 713 | 66 DIGGING WITHOUT A SHOVEL IS QUITE IMPRACTICAL: EVEN WITH A 714 | 66 SHOVEL PROGRESS IS UNLIKELY. 715 | 67 BLASTING REQUIRES DYNAMITE. 716 | 68 I'M AS CONFUSED AS YOU ARE. 717 | 69 MIST IS A WHITE VAPOR, USUALLY WATER, SEEN FROM TIME TO TIME 718 | 69 IN CAVERNS. IT CAN BE FOUND ANYWHERE BUT IS FREQUENTLY A SIGN 719 | 69 OF A DEEP PIT LEADING DOWN TO WATER. 720 | 70 YOUR FEET ARE NOW WET. 721 | 71 THERE IS NOTHING HERE TO EAT. 722 | 72 EATEN! 723 | 73 THERE IS NO DRINKABLE WATER HERE. 724 | 74 THE BOTTLE OF WATER IS NOW EMPTY. 725 | 75 RUBBING THE ELECTRIC LAMP IS NOT PARTICULARLY REWARDING. 726 | 75 ANYWAY, NOTHING EXCITING HAPPENS. 727 | 76 PECULIAR. NOTHING UNEXPECTED HAPPENS. 728 | 77 YOUR BOTTLE IS EMPTY AND THE GROUND IS WET. 729 | 78 YOU CAN'T POUR THAT. 730 | 79 WATCH IT! 731 | 80 WHICH WAY? 732 | -1 733 | 0 734 | -------------------------------------------------------------------------------- /src/77-03-11_adventure.f: -------------------------------------------------------------------------------- 1 | C ADVENTURES 2 | IMPLICIT INTEGER(A-Z) 3 | REAL RAN 4 | COMMON RTEXT,LLINE 5 | DIMENSION IOBJ(300),ICHAIN(100),IPLACE(100) 6 | 1 ,IFIXED(100),COND(300),PROP(100),ABB(300),LLINE(1000,22) 7 | 2 ,LTEXT(300),STEXT(300),KEY(300),DEFAULT(300),TRAVEL(1000) 8 | 3 ,TK(25),KTAB(1000),ATAB(1000),BTEXT(200),DSEEN(10) 9 | 4 ,DLOC(10),ODLOC(10),DTRAV(20),RTEXT(100),JSPKT(100) 10 | 5 ,IPLT(100),IFIXT(100),QUIP(100) 11 | 12 | C READ THE PARAMETERS 13 | 14 | IF(SETUP.NE.0) GOTO 1 15 | SETUP=1 16 | KEYS=1 17 | LAMP=2 18 | GRATE=3 19 | ROD=5 20 | BIRD=7 21 | NUGGET=10 22 | SNAKE=11 23 | FOOD=19 24 | WATER=20 25 | AXE=21 26 | DATA(QUIP(I),I=1,9)/50,51,64,66,67,68,69,49,79/ 27 | DATA(JSPKT(I),I=1,16)/24,29,0,31,0,31,38,38,42,42,43,46,77,71 28 | 1 ,73,75/ 29 | DATA(IPLT(I),I=1,20)/3,3,8,10,11,14,13,9,15,18,19,17,27,28,29 30 | 1 ,30,0,0,3,3/ 31 | DATA(IFIXT(I),I=1,20)/0,0,1,0,0,1,0,1,1,0,1,1,0,0,0,0,0,0,0,0/ 32 | DATA(DTRAV(I),I=1,15)/36,28,19,30,62,60,41,27,17,15,19,28,36 33 | 1 ,300,300/ 34 | DO 1001 I=1,300 35 | STEXT(I)=0 36 | IF(I.LE.200) BTEXT(I)=0 37 | IF(I.LE.100)RTEXT(I)=0 38 | 1001 LTEXT(I)=0 39 | I=1 40 | CALL IFILE(1,'TEXT') 41 | 1002 READ(1,1003) IKIND 42 | 1003 FORMAT(G) 43 | GOTO(1100,1004,1004,1013,1020,1004,1004)(IKIND+1) 44 | 1004 READ(1,1005)JKIND,(LLINE(I,J),J=3,22) 45 | 1005 FORMAT(1G,20A5) 46 | IF(JKIND.EQ.-1) GOTO 1002 47 | DO 1006 K=1,20 48 | KK=K 49 | IF(LLINE(I,21-K).NE.' ') GOTO 1007 50 | 1006 CONTINUE 51 | STOP 52 | 1007 LLINE(I,2)=20-KK+1 53 | LLINE(I,1)=0 54 | IF(IKIND.EQ.6)GOTO 1023 55 | IF(IKIND.EQ.5)GOTO 1011 56 | IF(IKIND.EQ.1) GOTO 1008 57 | IF(STEXT(JKIND).NE.0) GOTO 1009 58 | STEXT(JKIND)=I 59 | GOTO 1010 60 | 61 | 1008 IF(LTEXT(JKIND).NE.0) GOTO 1009 62 | LTEXT(JKIND)=I 63 | GOTO 1010 64 | 1009 LLINE(I-1,1)=I 65 | 1010 I=I+1 66 | IF(I.NE.1000)GOTO 1004 67 | PAUSE 'TOO MANY LINES' 68 | 69 | 1011 IF(JKIND.LT.200)GOTO 1012 70 | IF(BTEXT(JKIND-100).NE.0)GOTO 1009 71 | BTEXT(JKIND-100)=I 72 | BTEXT(JKIND-200)=I 73 | GOTO 1010 74 | 1012 IF(BTEXT(JKIND).NE.0)GOTO 1009 75 | BTEXT(JKIND)=I 76 | GOTO 1010 77 | 78 | 1023 IF(RTEXT(JKIND).NE.0) GOTO 1009 79 | RTEXT(JKIND)=I 80 | GOTO 1010 81 | 82 | 1013 I=1 83 | 1014 READ(1,1015)JKIND,LKIND,(TK(L),L=1,10) 84 | 1015 FORMAT(12G) 85 | IF(JKIND.EQ.-1) GOTO 1002 86 | IF(KEY(JKIND).NE.0) GOTO 1016 87 | KEY(JKIND)=I 88 | GOTO 1017 89 | 1016 TRAVEL(I-1)=-TRAVEL(I-1) 90 | 1017 DO 1018 L=1,10 91 | IF(TK(L).EQ.0) GOTO 1019 92 | TRAVEL(I)=LKIND*1024+TK(L) 93 | I=I+1 94 | IF(I.EQ.1000) STOP 95 | 1018 CONTINUE 96 | 1019 TRAVEL(I-1)=-TRAVEL(I-1) 97 | GOTO 1014 98 | 99 | 1020 DO 1022 IU=1,1000 100 | READ(1,1021) KTAB(IU),ATAB(IU) 101 | 1021 FORMAT(G,A5) 102 | IF(KTAB(IU).EQ.-1)GOTO 1002 103 | 1022 CONTINUE 104 | PAUSE 'TOO MANY WORDS' 105 | 106 | 107 | C TRAVEL = NEG IF LAST THIS SOURCE + DEST*1024 + KEYWORD 108 | 109 | C COND = 1 IF LIGHT, 2 IF DON T ASK QUESTION 110 | 111 | 112 | 113 | 114 | 115 | 1100 DO 1101 I=1,100 116 | IPLACE(I)=IPLT(I) 117 | IFIXED(I)=IFIXT(I) 118 | 1101 ICHAIN(I)=0 119 | 120 | DO 1102 I=1,300 121 | COND(I)=0 122 | ABB(I)=0 123 | 1102 IOBJ(I)=0 124 | DO 1103 I=1,10 125 | 1103 COND(I)=1 126 | COND(16)=2 127 | COND(20)=2 128 | COND(21)=2 129 | COND(22)=2 130 | COND(23)=2 131 | COND(24)=2 132 | COND(25)=2 133 | COND(26)=2 134 | COND(31)=2 135 | COND(32)=2 136 | COND(79)=2 137 | 138 | DO 1107 I=1,100 139 | KTEM=IPLACE(I) 140 | IF(KTEM.EQ.0)GOTO 1107 141 | IF(IOBJ(KTEM).NE.0) GOTO 1104 142 | IOBJ(KTEM)=I 143 | GO TO 1107 144 | 1104 KTEM=IOBJ(KTEM) 145 | 1105 IF(ICHAIN(KTEM).NE.0) GOTO 1106 146 | ICHAIN(KTEM)=I 147 | GOTO 1107 148 | 1106 KTEM=ICHAIN(KTEM) 149 | GOTO 1105 150 | 1107 CONTINUE 151 | IDWARF=0 152 | IFIRST=1 153 | IWEST=0 154 | ILONG=1 155 | IDETAL=0 156 | PAUSE 'INIT DONE' 157 | 158 | 159 | 160 | 1 CALL YES(65,1,0,YEA) 161 | L=1 162 | LOC=1 163 | 2 DO 73 I=1,3 164 | IF(ODLOC(I).NE.L.OR.DSEEN(I).EQ.0)GOTO 73 165 | L=LOC 166 | CALL SPEAK(2) 167 | GOTO 74 168 | 73 CONTINUE 169 | 74 LOC=L 170 | 171 | C DWARF STUFF 172 | 173 | IF(IDWARF.NE.0) GOTO 60 174 | IF(LOC.EQ.15) IDWARF=1 175 | GOTO 71 176 | 60 IF(IDWARF.NE.1)GOTO 63 177 | IF(RAN(QZ).GT.0.05) GOTO 71 178 | IDWARF=2 179 | DO 61 I=1,3 180 | DLOC(I)=0 181 | ODLOC(I)=0 182 | 61 DSEEN(I)=0 183 | CALL SPEAK(3) 184 | ICHAIN(AXE)=IOBJ(LOC) 185 | IOBJ(LOC)=AXE 186 | IPLACE(AXE)=LOC 187 | GOTO 71 188 | 189 | 63 IDWARF=IDWARF+1 190 | ATTACK=0 191 | DTOT=0 192 | STICK=0 193 | DO 66 I=1,3 194 | IF(2*I+IDWARF.LT.8)GOTO 66 195 | IF(2*I+IDWARF.GT.23.AND.DSEEN(I).EQ.0)GOTO 66 196 | ODLOC(I)=DLOC(I) 197 | IF(DSEEN(I).NE.0.AND.LOC.GT.14)GOTO 65 198 | DLOC(I)=DTRAV(I*2+IDWARF-8) 199 | DSEEN(I)=0 200 | IF(DLOC(I).NE.LOC.AND.ODLOC(I).NE.LOC) GOTO 66 201 | 65 DSEEN(I)=1 202 | DLOC(I)=LOC 203 | DTOT=DTOT+1 204 | IF(ODLOC(I).NE.DLOC(I)) GOTO 66 205 | ATTACK=ATTACK+1 206 | IF(RAN(QZ).LT.0.1) STICK=STICK+1 207 | 66 CONTINUE 208 | IF(DTOT.EQ.0) GOTO 71 209 | IF(DTOT.EQ.1)GOTO 75 210 | TYPE 67,DTOT 211 | 67 FORMAT(' THERE ARE ',I2,' THREATENING LITTLE DWARVES IN THE 212 | 1 ROOM WITH YOU.',/) 213 | GOTO 77 214 | 75 CALL SPEAK(4) 215 | 77 IF(ATTACK.EQ.0)GOTO 71 216 | IF(ATTACK.EQ.1)GOTO 79 217 | TYPE 78,ATTACK 218 | 78 FORMAT(' ',I2,' OF THEM THROW KNIVES AT YOU!',/) 219 | GOTO 81 220 | 79 CALL SPEAK(5) 221 | CALL SPEAK(52+STICK) 222 | GOTO(71,83)(STICK+1) 223 | 224 | 81 IF(STICK.EQ.0) GOTO 69 225 | IF(STICK.EQ.1)GOTO 82 226 | TYPE 68,STICK 227 | 68 FORMAT(' ',I2,' OF THEM GET YOU.',/) 228 | GOTO 83 229 | 82 CALL SPEAK(6) 230 | 83 PAUSE 'GAMES OVER' 231 | GOTO 71 232 | 69 CALL SPEAK(7) 233 | 234 | C PLACE DESCRIPTOR 235 | 236 | 237 | 238 | 71 KK=STEXT(L) 239 | IF(ABB(L).EQ.0.OR.KK.EQ.0)KK=LTEXT(L) 240 | IF(KK.EQ.0) GOTO 7 241 | 4 TYPE 5,(LLINE(KK,JJ),JJ=3,LLINE(KK,2)) 242 | 5 FORMAT(20A5) 243 | KK=KK+1 244 | IF(LLINE(KK-1,1).NE.0) GOTO 4 245 | TYPE 6 246 | 6 FORMAT(/) 247 | 7 IF(COND(L).EQ.2)GOTO 8 248 | IF(LOC.EQ.33.AND.RAN(QZ).LT.0.25)CALL SPEAK(8) 249 | J=L 250 | GOTO 2000 251 | 252 | C GO GET A NEW LOCATION 253 | 254 | 8 KK=KEY(LOC) 255 | IF(KK.EQ.0)GOTO 19 256 | IF(K.EQ.57)GOTO 32 257 | IF(K.EQ.67)GOTO 40 258 | IF(K.EQ.8)GOTO 12 259 | LOLD=L 260 | 9 LL=TRAVEL(KK) 261 | IF(LL.LT.0) LL=-LL 262 | IF(1.EQ.MOD(LL,1024))GOTO 10 263 | IF(K.EQ.MOD(LL,1024))GOTO 10 264 | IF(TRAVEL(KK).LT.0)GOTO 11 265 | KK=KK+1 266 | GOTO 9 267 | 12 TEMP=LOLD 268 | LOLD=L 269 | L=TEMP 270 | GOTO 21 271 | 10 L=LL/1024 272 | GOTO 21 273 | 11 JSPK=12 274 | IF(K.GE.43.AND.K.LE.46)JSPK=9 275 | IF(K.EQ.29.OR.K.EQ.30)JSPK=9 276 | IF(K.EQ.7.OR.K.EQ.8.OR.K.EQ.36.OR.K.EQ.37.OR.K.EQ.68) 277 | 1 JSPK=10 278 | IF(K.EQ.11.OR.K.EQ.19)JSPK=11 279 | IF(JVERB.EQ.1)JSPK=59 280 | IF(K.EQ.48)JSPK=42 281 | IF(K.EQ.17)JSPK=80 282 | CALL SPEAK(JSPK) 283 | GOTO 2 284 | 19 CALL SPEAK(13) 285 | L=LOC 286 | IF(IFIRST.EQ.0) CALL SPEAK(14) 287 | 21 IF(L.LT.300)GOTO 2 288 | IL=L-300+1 289 | GOTO(22,23,24,25,26,31,27,28,29,30,33,34,36,37)IL 290 | GOTO 2 291 | 292 | 22 L=6 293 | IF(RAN(QZ).GT.0.5) L=5 294 | GOTO 2 295 | 23 L=23 296 | IF(PROP(GRATE).NE.0) L=9 297 | GOTO 2 298 | 24 L=9 299 | IF(PROP(GRATE).NE.0)L=8 300 | GOTO 2 301 | 25 L=20 302 | IF(IPLACE(NUGGET).NE.-1)L=15 303 | GOTO 2 304 | 26 L=22 305 | IF(IPLACE(NUGGET).NE.-1) L=14 306 | GOTO 2 307 | 27 L=27 308 | IF(PROP(12).EQ.0)L=31 309 | GOTO 2 310 | 28 L=28 311 | IF(PROP(SNAKE).EQ.0)L=32 312 | GOTO 2 313 | 29 L=29 314 | IF(PROP(SNAKE).EQ.0) L=32 315 | GOTO 2 316 | 30 L=30 317 | IF(PROP(SNAKE).EQ.0) L=32 318 | GOTO 2 319 | 31 PAUSE 'GAME IS OVER' 320 | GOTO 1100 321 | 32 IF(IDETAL.LT.3)CALL SPEAK(15) 322 | IDETAL=IDETAL+1 323 | L=LOC 324 | ABB(L)=0 325 | GOTO 2 326 | 33 L=8 327 | IF(PROP(GRATE).EQ.0) L=9 328 | GOTO 2 329 | 34 IF(RAN(QZ).GT.0.2)GOTO 35 330 | L=68 331 | GOTO 2 332 | 35 L=65 333 | 38 CALL SPEAK(56) 334 | GOTO 2 335 | 36 IF(RAN(QZ).GT.0.2)GOTO 35 336 | L=39 337 | IF(RAN(QZ).GT.0.5)L=70 338 | GOTO 2 339 | 37 L=66 340 | IF(RAN(QZ).GT.0.4)GOTO 38 341 | L=71 342 | IF(RAN(QZ).GT.0.25)L=72 343 | GOTO 2 344 | 39 L=66 345 | IF(RAN(QZ).GT.0.2)GOTO 38 346 | L=77 347 | GOTO 2 348 | 40 IF(LOC.LT.8)CALL SPEAK(57) 349 | IF(LOC.GE.8)CALL SPEAK(58) 350 | L=LOC 351 | GOTO 2 352 | 353 | 354 | 355 | C DO NEXT INPUT 356 | 357 | 358 | 2000 LTRUBL=0 359 | LOC=J 360 | ABB(J)=MOD((ABB(J)+1),5) 361 | IDARK=0 362 | IF(MOD(COND(J),2).EQ.1) GOTO 2003 363 | IF((IPLACE(2).NE.J).AND.(IPLACE(2).NE.-1)) GOTO 2001 364 | IF(PROP(2).EQ.1)GOTO 2003 365 | 2001 CALL SPEAK(16) 366 | IDARK=1 367 | 368 | 369 | 2003 I=IOBJ(J) 370 | 2004 IF(I.EQ.0) GOTO 2011 371 | IF(((I.EQ.6).OR.(I.EQ.9)).AND.(IPLACE(10).EQ.-1))GOTO 2008 372 | ILK=I 373 | IF(PROP(I).NE.0) ILK=I+100 374 | KK=BTEXT(ILK) 375 | IF(KK.EQ.0) GOTO 2008 376 | 2005 TYPE 2006,(LLINE(KK,JJ),JJ=3,LLINE(KK,2)) 377 | 2006 FORMAT(20A5) 378 | KK=KK+1 379 | IF(LLINE(KK-1,1).NE.0) GOTO 2005 380 | TYPE 2007 381 | 2007 FORMAT(/) 382 | 2008 I=ICHAIN(I) 383 | GOTO 2004 384 | 385 | 386 | 387 | C K=1 MEANS ANY INPUT 388 | 389 | 390 | 2012 A=B 391 | JTWO=0 392 | GOTO 2021 393 | 394 | 2010 JSPK=QUIP(K) 395 | GOTO 5200 396 | 397 | 2009 JSPK=54 398 | 5200 CALL SPEAK(JSPK) 399 | 400 | 2011 JVERB=0 401 | JOBJ=0 402 | JTWO=0 403 | 404 | 2020 CALL GETIN(JTWO,A,TWOWD,B) 405 | K=70 406 | IF(A.EQ.'ENTER'.AND.(B.EQ.'STREAM'.OR.B.EQ.'WATER'))GOTO 2010 407 | IF(A.EQ.'ENTER'.AND.JTWO.NE.0)GOTO 2012 408 | 2021 IF(A.NE.'WEST')GOTO 2023 409 | IWEST=IWEST+1 410 | IF(IWEST.NE.10)GOTO 2023 411 | CALL SPEAK(17) 412 | 2023 DO 2024 I=1,1000 413 | IF(KTAB(I).EQ.-1)GOTO 3000 414 | IF(ATAB(I).EQ.A)GOTO 2025 415 | 2024 CONTINUE 416 | PAUSE 'ERROR 6' 417 | 2025 K=MOD(KTAB(I),1000) 418 | KQ=KTAB(I)/1000+1 419 | GOTO (5014,5000,2026,2010)KQ 420 | PAUSE 'NO NO' 421 | 2026 JVERB=K 422 | JSPK=JSPKT(JVERB) 423 | IF(JTWO.NE.0)GOTO 2028 424 | IF(JOBJ.EQ.0)GOTO 2036 425 | 2027 GOTO(9000,5066,3000,5031,2009,5031,9404,9406,5081,5200, 426 | 1 5200,5300,5506,5502,5504,5505)JVERB 427 | PAUSE 'ERROR 5' 428 | 429 | 430 | 2028 A=TWOWD 431 | B=' ' 432 | JTWO=0 433 | GOTO 2023 434 | 435 | 3000 JSPK=60 436 | IF(RAN(QZ).GT.0.8)JSPK=61 437 | IF(RAN(QZ).GT.0.8)JSPK=13 438 | CALL SPEAK(JSPK) 439 | LTRUBL=LTRUBL+1 440 | IF(LTRUBL.NE.3)GOTO 2020 441 | IF(J.NE.13.OR.IPLACE(7).NE.13.OR.IPLACE(5).NE.-1)GOTO 2032 442 | CALL YES(18,19,54,YEA) 443 | GOTO 2033 444 | 2032 IF(J.NE.19.OR.PROP(11).NE.0.OR.IPLACE(7).EQ.-1)GOTO 2034 445 | CALL YES(20,21,54,YEA) 446 | GOTO 2033 447 | 2034 IF(J.NE.8.OR.PROP(GRATE).NE.0)GOTO 2035 448 | CALL YES(62,63,54,YEA) 449 | 2033 IF(YEA.EQ.0)GOTO 2011 450 | GOTO 2020 451 | 2035 IF(IPLACE(5).NE.J.AND.IPLACE(5).NE.-1)GOTO 2020 452 | IF(JOBJ.NE.5)GOTO 2020 453 | CALL SPEAK(22) 454 | GOTO 2020 455 | 456 | 457 | 2036 GOTO(2037,5062,5062,9403,2009,9403,9404,9406,5062,5062, 458 | 1 5200,5300,5062,5062,5062,5062)JVERB 459 | PAUSE 'OOPS' 460 | 2037 IF((IOBJ(J).EQ.0).OR.(ICHAIN(IOBJ(J)).NE.0)) GOTO 5062 461 | DO 5312 I=1,3 462 | IF(DSEEN(I).NE.0)GOTO 5062 463 | 5312 CONTINUE 464 | JOBJ=IOBJ(J) 465 | GOTO 2027 466 | 5062 IF(B.NE.' ')GOTO 5333 467 | TYPE 5063,A 468 | 5063 FORMAT(' ',A5,' WHAT?',/) 469 | GOTO 2020 470 | 471 | 5333 TYPE 5334,A,B 472 | 5334 FORMAT(' ',2A5,' WHAT?',/) 473 | GOTO 2020 474 | 5014 IF(IDARK.EQ.0) GOTO 8 475 | 476 | IF(RAN(QZ).GT.0.25) GOTO 8 477 | 5017 CALL SPEAK(23) 478 | PAUSE 'GAME IS OVER' 479 | GOTO 2011 480 | 481 | 482 | 483 | 5000 JOBJ=K 484 | IF(JTWO.NE.0)GOTO 2028 485 | IF((J.EQ.IPLACE(K)).OR.(IPLACE(K).EQ.-1)) GOTO 5004 486 | IF(K.NE.GRATE)GOTO 502 487 | IF((J.EQ.1).OR.(J.EQ.4).OR.(J.EQ.7))GOTO 5098 488 | IF((J.GT.9).AND.(J.LT.15))GOTO 5097 489 | 502 IF(B.NE.' ')GOTO 5316 490 | TYPE 5005,A 491 | 5005 FORMAT(' I SEE NO ',A5,' HERE.',/) 492 | GOTO 2011 493 | 5316 TYPE 5317,A,B 494 | 5317 FORMAT(' I SEE NO ',2A5,' HERE.'/) 495 | GOTO 2011 496 | 5098 K=49 497 | GOTO 5014 498 | 5097 K=50 499 | GOTO 5014 500 | 5004 JOBJ=K 501 | IF(JVERB.NE.0)GOTO 2027 502 | 503 | 504 | 5064 IF(B.NE.' ')GOTO 5314 505 | TYPE 5001,A 506 | 5001 FORMAT(' WHAT DO YOU WANT TO DO WITH THE ',A5,'?',/) 507 | GOTO 2020 508 | 5314 TYPE 5315,A,B 509 | 5315 FORMAT(' WHAT DO YOU WANT TO DO WITH THE ',2A5,'?',/) 510 | GOTO 2020 511 | 512 | C CARRY 513 | 514 | 9000 IF(JOBJ.EQ.18)GOTO 2009 515 | IF(IPLACE(JOBJ).NE.J) GOTO 5200 516 | 9001 IF(IFIXED(JOBJ).EQ.0)GOTO 9002 517 | CALL SPEAK(25) 518 | GOTO 2011 519 | 9002 IF(JOBJ.NE.BIRD)GOTO 9004 520 | IF(IPLACE(ROD).NE.-1)GOTO 9003 521 | CALL SPEAK(26) 522 | GOTO 2011 523 | 9003 IF((IPLACE(4).EQ.-1).OR.(IPLACE(4).EQ.J)) GOTO 9004 524 | CALL SPEAK(27) 525 | GOTO 2011 526 | 9004 IPLACE(JOBJ)=-1 527 | 9005 IF(IOBJ(J).NE.JOBJ) GOTO 9006 528 | IOBJ(J)=ICHAIN(JOBJ) 529 | GOTO 2009 530 | 9006 ITEMP=IOBJ(J) 531 | 9007 IF(ICHAIN(ITEMP).EQ.(JOBJ)) GOTO 9008 532 | ITEMP=ICHAIN(ITEMP) 533 | GOTO 9007 534 | 9008 ICHAIN(ITEMP)=ICHAIN(JOBJ) 535 | GOTO 2009 536 | 537 | 538 | C LOCK, UNLOCK, NO OBJECT YET 539 | 540 | 9403 IF((J.EQ.8).OR.(J.EQ.9))GOTO 5105 541 | 5032 CALL SPEAK(28) 542 | GOTO 2011 543 | 5105 JOBJ=GRATE 544 | GOTO 2027 545 | 546 | C DISCARD OBJECT 547 | 548 | 5066 IF(JOBJ.EQ.18)GOTO 2009 549 | IF(IPLACE(JOBJ).NE.-1) GOTO 5200 550 | 5012 IF((JOBJ.NE.BIRD).OR.(J.NE.19).OR.(PROP(11).EQ.1))GOTO 9401 551 | CALL SPEAK(30) 552 | PROP(11)=1 553 | 5160 ICHAIN(JOBJ)=IOBJ(J) 554 | IOBJ(J)=JOBJ 555 | IPLACE(JOBJ)=J 556 | GOTO 2011 557 | 558 | 9401 CALL SPEAK(54) 559 | GOTO 5160 560 | 561 | C LOCK,UNLOCK OBJECT 562 | 563 | 5031 IF(IPLACE(KEYS).NE.-1.AND.IPLACE(KEYS).NE.J)GOTO 5200 564 | IF(JOBJ.NE.4)GOTO 5102 565 | CALL SPEAK(32) 566 | GOTO 2011 567 | 5102 IF(JOBJ.NE.KEYS)GOTO 5104 568 | CALL SPEAK(55) 569 | GOTO 2011 570 | 5104 IF(JOBJ.EQ.GRATE)GOTO 5107 571 | CALL SPEAK(33) 572 | GOTO 2011 573 | 5107 IF(JVERB.EQ.4) GOTO 5033 574 | IF(PROP(GRATE).NE.0)GOTO 5034 575 | CALL SPEAK(34) 576 | GOTO 2011 577 | 5034 CALL SPEAK(35) 578 | PROP(GRATE)=0 579 | PROP(8)=0 580 | GOTO 2011 581 | 5033 IF(PROP(GRATE).EQ.0)GOTO 5109 582 | CALL SPEAK(36) 583 | GOTO 2011 584 | 5109 CALL SPEAK(37) 585 | PROP(GRATE)=1 586 | PROP(8)=1 587 | GOTO 2011 588 | 589 | 590 | 591 | C LIGHT LAMP 592 | 593 | 9404 IF((IPLACE(2).NE.J).AND.(IPLACE(2).NE.-1))GOTO 5200 594 | PROP(2)=1 595 | IDARK=0 596 | CALL SPEAK(39) 597 | GOTO 2011 598 | 599 | C LAMP OFF 600 | 601 | 9406 IF((IPLACE(2).NE.J).AND.(IPLACE(2).NE.-1)) GOTO 5200 602 | PROP(2)=0 603 | CALL SPEAK(40) 604 | GOTO 2011 605 | 606 | C STRIKE 607 | 608 | 5081 IF(JOBJ.NE.12)GOTO 5200 609 | PROP(12)=1 610 | GOTO 2003 611 | 612 | C ATTACK 613 | 614 | 5300 DO 5313 ID=1,3 615 | IID=ID 616 | IF(DSEEN(ID).NE.0)GOTO 5307 617 | 5313 CONTINUE 618 | IF(JOBJ.EQ.0)GOTO 5062 619 | IF(JOBJ.EQ.SNAKE) GOTO 5200 620 | IF(JOBJ.EQ.BIRD) GOTO 5302 621 | CALL SPEAK(44) 622 | GOTO 2011 623 | 5302 CALL SPEAK(45) 624 | IPLACE(JOBJ)=300 625 | GOTO 9005 626 | 627 | 5307 IF(RAN(QZ).GT.0.4) GOTO 5309 628 | DSEEN(IID)=0 629 | ODLOC(IID)=0 630 | DLOC(IID)=0 631 | CALL SPEAK(47) 632 | GOTO 5311 633 | 5309 CALL SPEAK(48) 634 | 5311 K=21 635 | GOTO 5014 636 | 637 | C EAT 638 | 639 | 5502 IF((IPLACE(FOOD).NE.J.AND.IPLACE(FOOD).NE.-1).OR.PROP(FOOD).NE.0 640 | 1 .OR.JOBJ.NE.FOOD)GOTO 5200 641 | PROP(FOOD)=1 642 | 5501 JSPK=72 643 | GOTO 5200 644 | 645 | C DRINK 646 | 647 | 5504 IF((IPLACE(WATER).NE.J.AND.IPLACE(WATER).NE.-1) 648 | 1 .OR.PROP(WATER).NE.0.OR.JOBJ.NE.WATER) GOTO 5200 649 | PROP(WATER)=1 650 | JSPK=74 651 | GOTO 5200 652 | 653 | C RUB 654 | 655 | 5505 IF(JOBJ.NE.LAMP)JSPK=76 656 | GOTO 5200 657 | 658 | C POUR 659 | 660 | 5506 IF(JOBJ.NE.WATER)JSPK=78 661 | PROP(WATER)=1 662 | GOTO 5200 663 | 664 | 665 | 666 | END 667 | 668 | 669 | SUBROUTINE SPEAK(IT) 670 | IMPLICIT INTEGER(A-Z) 671 | COMMON RTEXT,LLINE 672 | DIMENSION RTEXT(100),LLINE(1000,22) 673 | 674 | KKT=RTEXT(IT) 675 | IF(KKT.EQ.0)RETURN 676 | 999 TYPE 998, (LLINE(KKT,JJT),JJT=3,LLINE(KKT,2)) 677 | 998 FORMAT(20A5) 678 | KKT=KKT+1 679 | IF(LLINE(KKT-1,1).NE.0)GOTO 999 680 | 997 TYPE 996 681 | 996 FORMAT(/) 682 | RETURN 683 | END 684 | 685 | 686 | SUBROUTINE GETIN(TWOW,B,C,D) 687 | IMPLICIT INTEGER(A-Z) 688 | DIMENSION A(5),M2(6) 689 | DATA M2/"4000000000,"20000000,"100000,"400,"2,0/ 690 | 6 ACCEPT 1,(A(I), I=1,4) 691 | 1 FORMAT(4A5) 692 | TWOW=0 693 | S=0 694 | B=A(1) 695 | DO 2 J=1,4 696 | DO 2 K=1,5 697 | MASK1="774000000000 698 | IF(K.NE.1) MASK1="177*M2(K) 699 | IF(((A(J).XOR."201004020100).AND.MASK1).EQ.0)GOTO 3 700 | IF(S.EQ.0) GOTO 2 701 | TWOW=1 702 | CALL SHIFT(A(J),7*(K-1),XX) 703 | CALL SHIFT(A(J+1),7*(I-6),YY) 704 | MASK=-M2(6-K) 705 | C=(XX.AND.MASK)+(YY.AND.(-2-MASK)) 706 | GOTO 4 707 | 3 IF(S.EQ.1) GOTO 2 708 | S=1 709 | IF(J.EQ.1) B=(B.AND.-M2(K)).OR.("201004020100.AND. 710 | 1 (-M2(K).XOR.-1)) 711 | 2 CONTINUE 712 | 4 D=A(2) 713 | RETURN 714 | END 715 | 716 | SUBROUTINE YES(X,Y,Z,YEA) 717 | IMPLICIT INTEGER(A-Z) 718 | CALL SPEAK(X) 719 | CALL GETIN(JUNK,IA1,JUNK,IB1) 720 | IF(IA1.EQ.'NO'.OR.IA1.EQ.'N') GOTO 1 721 | YEA=1 722 | IF(Y.NE.0) CALL SPEAK(Y) 723 | RETURN 724 | 1 YEA=0 725 | IF(Z.NE.0)CALL SPEAK(Z) 726 | RETURN 727 | END 728 | -------------------------------------------------------------------------------- /src/77-03-23_adventure.f: -------------------------------------------------------------------------------- 1 | C ADVENTURES 2 | IMPLICIT INTEGER(A-Z) 3 | REAL RAN 4 | COMMON RTEXT,LLINE 5 | DIMENSION IOBJ(300),ICHAIN(100),IPLACE(100) 6 | 1 ,IFIXED(100),COND(300),PROP(100),ABB(300),LLINE(1000,22) 7 | 2 ,LTEXT(300),STEXT(300),KEY(300),DEFAULT(300),TRAVEL(1000) 8 | 3 ,TK(25),KTAB(1000),ATAB(1000),BTEXT(200),DSEEN(10) 9 | 4 ,DLOC(10),ODLOC(10),DTRAV(20),RTEXT(100),JSPKT(100) 10 | 5 ,IPLT(100),IFIXT(100),QUIP(100) 11 | 12 | C READ THE PARAMETERS 13 | 14 | IF(SETUP.NE.0) GOTO 1 15 | SETUP=1 16 | KEYS=1 17 | LAMP=2 18 | GRATE=3 19 | ROD=5 20 | BIRD=7 21 | NUGGET=10 22 | SNAKE=11 23 | FOOD=19 24 | WATER=20 25 | AXE=21 26 | DATA(QUIP(I),I=1,9)/50,51,64,66,67,68,69,49,79/ 27 | DATA(JSPKT(I),I=1,16)/24,29,0,31,0,31,38,38,42,42,43,46,77,71 28 | 1 ,73,75/ 29 | DATA(IPLT(I),I=1,20)/3,3,8,10,11,14,13,9,15,18,19,17,27,28,29 30 | 1 ,30,0,0,3,3/ 31 | DATA(IFIXT(I),I=1,20)/0,0,1,0,0,1,0,1,1,0,1,1,0,0,0,0,0,0,0,0/ 32 | DATA(DTRAV(I),I=1,15)/36,28,19,30,62,60,41,27,17,15,19,28,36 33 | 1 ,300,300/ 34 | DO 1001 I=1,300 35 | STEXT(I)=0 36 | IF(I.LE.200) BTEXT(I)=0 37 | IF(I.LE.100)RTEXT(I)=0 38 | 1001 LTEXT(I)=0 39 | I=1 40 | CALL IFILE(1,'TEXT') 41 | 1002 READ(1,1003) IKIND 42 | 1003 FORMAT(G) 43 | GOTO(1100,1004,1004,1013,1020,1004,1004)(IKIND+1) 44 | 1004 READ(1,1005)JKIND,(LLINE(I,J),J=3,22) 45 | 1005 FORMAT(1G,20A5) 46 | IF(JKIND.EQ.-1) GOTO 1002 47 | DO 1006 K=1,20 48 | KK=K 49 | IF(LLINE(I,21-K).NE.' ') GOTO 1007 50 | 1006 CONTINUE 51 | STOP 52 | 1007 LLINE(I,2)=20-KK+1 53 | LLINE(I,1)=0 54 | IF(IKIND.EQ.6)GOTO 1023 55 | IF(IKIND.EQ.5)GOTO 1011 56 | IF(IKIND.EQ.1) GOTO 1008 57 | IF(STEXT(JKIND).NE.0) GOTO 1009 58 | STEXT(JKIND)=I 59 | GOTO 1010 60 | 61 | 1008 IF(LTEXT(JKIND).NE.0) GOTO 1009 62 | LTEXT(JKIND)=I 63 | GOTO 1010 64 | 1009 LLINE(I-1,1)=I 65 | 1010 I=I+1 66 | IF(I.NE.1000)GOTO 1004 67 | PAUSE 'TOO MANY LINES' 68 | 69 | 1011 IF(JKIND.LT.200)GOTO 1012 70 | IF(BTEXT(JKIND-100).NE.0)GOTO 1009 71 | BTEXT(JKIND-100)=I 72 | BTEXT(JKIND-200)=I 73 | GOTO 1010 74 | 1012 IF(BTEXT(JKIND).NE.0)GOTO 1009 75 | BTEXT(JKIND)=I 76 | GOTO 1010 77 | 78 | 1023 IF(RTEXT(JKIND).NE.0) GOTO 1009 79 | RTEXT(JKIND)=I 80 | GOTO 1010 81 | 82 | 1013 I=1 83 | 1014 READ(1,1015)JKIND,LKIND,(TK(L),L=1,10) 84 | 1015 FORMAT(12G) 85 | IF(JKIND.EQ.-1) GOTO 1002 86 | IF(KEY(JKIND).NE.0) GOTO 1016 87 | KEY(JKIND)=I 88 | GOTO 1017 89 | 1016 TRAVEL(I-1)=-TRAVEL(I-1) 90 | 1017 DO 1018 L=1,10 91 | IF(TK(L).EQ.0) GOTO 1019 92 | TRAVEL(I)=LKIND*1024+TK(L) 93 | I=I+1 94 | IF(I.EQ.1000) STOP 95 | 1018 CONTINUE 96 | 1019 TRAVEL(I-1)=-TRAVEL(I-1) 97 | GOTO 1014 98 | 99 | 1020 DO 1022 IU=1,1000 100 | READ(1,1021) KTAB(IU),ATAB(IU) 101 | 1021 FORMAT(G,A5) 102 | IF(KTAB(IU).EQ.-1)GOTO 1002 103 | 1022 CONTINUE 104 | PAUSE 'TOO MANY WORDS' 105 | 106 | 107 | C TRAVEL = NEG IF LAST THIS SOURCE + DEST*1024 + KEYWORD 108 | 109 | C COND = 1 IF LIGHT, 2 IF DON T ASK QUESTION 110 | 111 | 112 | 113 | 114 | 115 | 1100 DO 1101 I=1,100 116 | IPLACE(I)=IPLT(I) 117 | IFIXED(I)=IFIXT(I) 118 | 1101 ICHAIN(I)=0 119 | 120 | DO 1102 I=1,300 121 | COND(I)=0 122 | ABB(I)=0 123 | 1102 IOBJ(I)=0 124 | DO 1103 I=1,10 125 | 1103 COND(I)=1 126 | COND(16)=2 127 | COND(20)=2 128 | COND(21)=2 129 | COND(22)=2 130 | COND(23)=2 131 | COND(24)=2 132 | COND(25)=2 133 | COND(26)=2 134 | COND(31)=2 135 | COND(32)=2 136 | COND(79)=2 137 | 138 | DO 1107 I=1,100 139 | KTEM=IPLACE(I) 140 | IF(KTEM.EQ.0)GOTO 1107 141 | IF(IOBJ(KTEM).NE.0) GOTO 1104 142 | IOBJ(KTEM)=I 143 | GO TO 1107 144 | 1104 KTEM=IOBJ(KTEM) 145 | 1105 IF(ICHAIN(KTEM).NE.0) GOTO 1106 146 | ICHAIN(KTEM)=I 147 | GOTO 1107 148 | 1106 KTEM=ICHAIN(KTEM) 149 | GOTO 1105 150 | 1107 CONTINUE 151 | IDWARF=0 152 | IFIRST=1 153 | IWEST=0 154 | ILONG=1 155 | IDETAL=0 156 | PAUSE 'INIT DONE' 157 | 158 | 159 | 160 | 1 CALL YES(65,1,0,YEA) 161 | L=1 162 | LOC=1 163 | 2 DO 73 I=1,3 164 | IF(ODLOC(I).NE.L.OR.DSEEN(I).EQ.0)GOTO 73 165 | L=LOC 166 | CALL SPEAK(2) 167 | GOTO 74 168 | 73 CONTINUE 169 | 74 LOC=L 170 | 171 | C DWARF STUFF 172 | 173 | IF(IDWARF.NE.0) GOTO 60 174 | IF(LOC.EQ.15) IDWARF=1 175 | GOTO 71 176 | 60 IF(IDWARF.NE.1)GOTO 63 177 | IF(RAN(QZ).GT.0.05) GOTO 71 178 | IDWARF=2 179 | DO 61 I=1,3 180 | DLOC(I)=0 181 | ODLOC(I)=0 182 | 61 DSEEN(I)=0 183 | CALL SPEAK(3) 184 | ICHAIN(AXE)=IOBJ(LOC) 185 | IOBJ(LOC)=AXE 186 | IPLACE(AXE)=LOC 187 | GOTO 71 188 | 189 | 63 IDWARF=IDWARF+1 190 | ATTACK=0 191 | DTOT=0 192 | STICK=0 193 | DO 66 I=1,3 194 | IF(2*I+IDWARF.LT.8)GOTO 66 195 | IF(2*I+IDWARF.GT.23.AND.DSEEN(I).EQ.0)GOTO 66 196 | ODLOC(I)=DLOC(I) 197 | IF(DSEEN(I).NE.0.AND.LOC.GT.14)GOTO 65 198 | DLOC(I)=DTRAV(I*2+IDWARF-8) 199 | DSEEN(I)=0 200 | IF(DLOC(I).NE.LOC.AND.ODLOC(I).NE.LOC) GOTO 66 201 | 65 DSEEN(I)=1 202 | DLOC(I)=LOC 203 | DTOT=DTOT+1 204 | IF(ODLOC(I).NE.DLOC(I)) GOTO 66 205 | ATTACK=ATTACK+1 206 | IF(RAN(QZ).LT.0.1) STICK=STICK+1 207 | 66 CONTINUE 208 | IF(DTOT.EQ.0) GOTO 71 209 | IF(DTOT.EQ.1)GOTO 75 210 | TYPE 67,DTOT 211 | 67 FORMAT(' THERE ARE ',I2,' THREATENING LITTLE DWARVES IN THE 212 | 1 ROOM WITH YOU.',/) 213 | GOTO 77 214 | 75 CALL SPEAK(4) 215 | 77 IF(ATTACK.EQ.0)GOTO 71 216 | IF(ATTACK.EQ.1)GOTO 79 217 | TYPE 78,ATTACK 218 | 78 FORMAT(' ',I2,' OF THEM THROW KNIVES AT YOU!',/) 219 | GOTO 81 220 | 79 CALL SPEAK(5) 221 | CALL SPEAK(52+STICK) 222 | GOTO(71,83)(STICK+1) 223 | 224 | 81 IF(STICK.EQ.0) GOTO 69 225 | IF(STICK.EQ.1)GOTO 82 226 | TYPE 68,STICK 227 | 68 FORMAT(' ',I2,' OF THEM GET YOU.',/) 228 | GOTO 83 229 | 82 CALL SPEAK(6) 230 | 83 PAUSE 'GAMES OVER' 231 | GOTO 71 232 | 69 CALL SPEAK(7) 233 | 234 | C PLACE DESCRIPTOR 235 | 236 | 237 | 238 | 71 KK=STEXT(L) 239 | IF(ABB(L).EQ.0.OR.KK.EQ.0)KK=LTEXT(L) 240 | IF(KK.EQ.0) GOTO 7 241 | 4 TYPE 5,(LLINE(KK,JJ),JJ=3,LLINE(KK,2)) 242 | 5 FORMAT(20A5) 243 | KK=KK+1 244 | IF(LLINE(KK-1,1).NE.0) GOTO 4 245 | TYPE 6 246 | 6 FORMAT(/) 247 | 7 IF(COND(L).EQ.2)GOTO 8 248 | IF(LOC.EQ.33.AND.RAN(QZ).LT.0.25)CALL SPEAK(8) 249 | J=L 250 | GOTO 2000 251 | 252 | C GO GET A NEW LOCATION 253 | 254 | 8 KK=KEY(LOC) 255 | IF(KK.EQ.0)GOTO 19 256 | IF(K.EQ.57)GOTO 32 257 | IF(K.EQ.67)GOTO 40 258 | IF(K.EQ.8)GOTO 12 259 | LOLD=L 260 | 9 LL=TRAVEL(KK) 261 | IF(LL.LT.0) LL=-LL 262 | IF(1.EQ.MOD(LL,1024))GOTO 10 263 | IF(K.EQ.MOD(LL,1024))GOTO 10 264 | IF(TRAVEL(KK).LT.0)GOTO 11 265 | KK=KK+1 266 | GOTO 9 267 | 12 TEMP=LOLD 268 | LOLD=L 269 | L=TEMP 270 | GOTO 21 271 | 10 L=LL/1024 272 | GOTO 21 273 | 11 JSPK=12 274 | IF(K.GE.43.AND.K.LE.46)JSPK=9 275 | IF(K.EQ.29.OR.K.EQ.30)JSPK=9 276 | IF(K.EQ.7.OR.K.EQ.8.OR.K.EQ.36.OR.K.EQ.37.OR.K.EQ.68) 277 | 1 JSPK=10 278 | IF(K.EQ.11.OR.K.EQ.19)JSPK=11 279 | IF(JVERB.EQ.1)JSPK=59 280 | IF(K.EQ.48)JSPK=42 281 | IF(K.EQ.17)JSPK=80 282 | CALL SPEAK(JSPK) 283 | GOTO 2 284 | 19 CALL SPEAK(13) 285 | L=LOC 286 | IF(IFIRST.EQ.0) CALL SPEAK(14) 287 | 21 IF(L.LT.300)GOTO 2 288 | IL=L-300+1 289 | GOTO(22,23,24,25,26,31,27,28,29,30,33,34,36,37)IL 290 | GOTO 2 291 | 292 | 22 L=6 293 | IF(RAN(QZ).GT.0.5) L=5 294 | GOTO 2 295 | 23 L=23 296 | IF(PROP(GRATE).NE.0) L=9 297 | GOTO 2 298 | 24 L=9 299 | IF(PROP(GRATE).NE.0)L=8 300 | GOTO 2 301 | 25 L=20 302 | IF(IPLACE(NUGGET).NE.-1)L=15 303 | GOTO 2 304 | 26 L=22 305 | IF(IPLACE(NUGGET).NE.-1) L=14 306 | GOTO 2 307 | 27 L=27 308 | IF(PROP(12).EQ.0)L=31 309 | GOTO 2 310 | 28 L=28 311 | IF(PROP(SNAKE).EQ.0)L=32 312 | GOTO 2 313 | 29 L=29 314 | IF(PROP(SNAKE).EQ.0) L=32 315 | GOTO 2 316 | 30 L=30 317 | IF(PROP(SNAKE).EQ.0) L=32 318 | GOTO 2 319 | 31 PAUSE 'GAME IS OVER' 320 | GOTO 1100 321 | 32 IF(IDETAL.LT.3)CALL SPEAK(15) 322 | IDETAL=IDETAL+1 323 | L=LOC 324 | ABB(L)=0 325 | GOTO 2 326 | 33 L=8 327 | IF(PROP(GRATE).EQ.0) L=9 328 | GOTO 2 329 | 34 IF(RAN(QZ).GT.0.2)GOTO 35 330 | L=68 331 | GOTO 2 332 | 35 L=65 333 | 38 CALL SPEAK(56) 334 | GOTO 2 335 | 36 IF(RAN(QZ).GT.0.2)GOTO 35 336 | L=39 337 | IF(RAN(QZ).GT.0.5)L=70 338 | GOTO 2 339 | 37 L=66 340 | IF(RAN(QZ).GT.0.4)GOTO 38 341 | L=71 342 | IF(RAN(QZ).GT.0.25)L=72 343 | GOTO 2 344 | 39 L=66 345 | IF(RAN(QZ).GT.0.2)GOTO 38 346 | L=77 347 | GOTO 2 348 | 40 IF(LOC.LT.8)CALL SPEAK(57) 349 | IF(LOC.GE.8)CALL SPEAK(58) 350 | L=LOC 351 | GOTO 2 352 | 353 | 354 | 355 | C DO NEXT INPUT 356 | 357 | 358 | 2000 LTRUBL=0 359 | LOC=J 360 | ABB(J)=MOD((ABB(J)+1),5) 361 | IDARK=0 362 | IF(MOD(COND(J),2).EQ.1) GOTO 2003 363 | IF((IPLACE(2).NE.J).AND.(IPLACE(2).NE.-1)) GOTO 2001 364 | IF(PROP(2).EQ.1)GOTO 2003 365 | 2001 CALL SPEAK(16) 366 | IDARK=1 367 | 368 | 369 | 2003 I=IOBJ(J) 370 | 2004 IF(I.EQ.0) GOTO 2011 371 | IF(((I.EQ.6).OR.(I.EQ.9)).AND.(IPLACE(10).EQ.-1))GOTO 2008 372 | ILK=I 373 | IF(PROP(I).NE.0) ILK=I+100 374 | KK=BTEXT(ILK) 375 | IF(KK.EQ.0) GOTO 2008 376 | 2005 TYPE 2006,(LLINE(KK,JJ),JJ=3,LLINE(KK,2)) 377 | 2006 FORMAT(20A5) 378 | KK=KK+1 379 | IF(LLINE(KK-1,1).NE.0) GOTO 2005 380 | TYPE 2007 381 | 2007 FORMAT(/) 382 | 2008 I=ICHAIN(I) 383 | GOTO 2004 384 | 385 | 386 | 387 | C K=1 MEANS ANY INPUT 388 | 389 | 390 | 2012 A=B 391 | JTWO=0 392 | GOTO 2021 393 | 394 | 2010 JSPK=QUIP(K) 395 | GOTO 5200 396 | 397 | 2009 JSPK=54 398 | 5200 CALL SPEAK(JSPK) 399 | 400 | 2011 JVERB=0 401 | JOBJ=0 402 | JTWO=0 403 | 404 | 2020 CALL GETIN(JTWO,A,TWOWD,B) 405 | K=70 406 | IF(A.EQ.'ENTER'.AND.(B.EQ.'STREAM'.OR.B.EQ.'WATER'))GOTO 2010 407 | IF(A.EQ.'ENTER'.AND.JTWO.NE.0)GOTO 2012 408 | 2021 IF(A.NE.'WEST')GOTO 2023 409 | IWEST=IWEST+1 410 | IF(IWEST.NE.10)GOTO 2023 411 | CALL SPEAK(17) 412 | 2023 DO 2024 I=1,1000 413 | IF(KTAB(I).EQ.-1)GOTO 3000 414 | IF(ATAB(I).EQ.A)GOTO 2025 415 | 2024 CONTINUE 416 | PAUSE 'ERROR 6' 417 | 2025 K=MOD(KTAB(I),1000) 418 | KQ=KTAB(I)/1000+1 419 | GOTO (5014,5000,2026,2010)KQ 420 | PAUSE 'NO NO' 421 | 2026 JVERB=K 422 | JSPK=JSPKT(JVERB) 423 | IF(JTWO.NE.0)GOTO 2028 424 | IF(JOBJ.EQ.0)GOTO 2036 425 | 2027 GOTO(9000,5066,3000,5031,2009,5031,9404,9406,5081,5200, 426 | 1 5200,5300,5506,5502,5504,5505)JVERB 427 | PAUSE 'ERROR 5' 428 | 429 | 430 | 2028 A=TWOWD 431 | B=' ' 432 | JTWO=0 433 | GOTO 2023 434 | 435 | 3000 JSPK=60 436 | IF(RAN(QZ).GT.0.8)JSPK=61 437 | IF(RAN(QZ).GT.0.8)JSPK=13 438 | CALL SPEAK(JSPK) 439 | LTRUBL=LTRUBL+1 440 | IF(LTRUBL.NE.3)GOTO 2020 441 | IF(J.NE.13.OR.IPLACE(7).NE.13.OR.IPLACE(5).NE.-1)GOTO 2032 442 | CALL YES(18,19,54,YEA) 443 | GOTO 2033 444 | 2032 IF(J.NE.19.OR.PROP(11).NE.0.OR.IPLACE(7).EQ.-1)GOTO 2034 445 | CALL YES(20,21,54,YEA) 446 | GOTO 2033 447 | 2034 IF(J.NE.8.OR.PROP(GRATE).NE.0)GOTO 2035 448 | CALL YES(62,63,54,YEA) 449 | 2033 IF(YEA.EQ.0)GOTO 2011 450 | GOTO 2020 451 | 2035 IF(IPLACE(5).NE.J.AND.IPLACE(5).NE.-1)GOTO 2020 452 | IF(JOBJ.NE.5)GOTO 2020 453 | CALL SPEAK(22) 454 | GOTO 2020 455 | 456 | 457 | 2036 GOTO(2037,5062,5062,9403,2009,9403,9404,9406,5062,5062, 458 | 1 5200,5300,5062,5062,5062,5062)JVERB 459 | PAUSE 'OOPS' 460 | 2037 IF((IOBJ(J).EQ.0).OR.(ICHAIN(IOBJ(J)).NE.0)) GOTO 5062 461 | DO 5312 I=1,3 462 | IF(DSEEN(I).NE.0)GOTO 5062 463 | 5312 CONTINUE 464 | JOBJ=IOBJ(J) 465 | GOTO 2027 466 | 5062 IF(B.NE.' ')GOTO 5333 467 | TYPE 5063,A 468 | 5063 FORMAT(' ',A5,' WHAT?',/) 469 | GOTO 2020 470 | 471 | 5333 TYPE 5334,A,B 472 | 5334 FORMAT(' ',2A5,' WHAT?',/) 473 | GOTO 2020 474 | 5014 IF(IDARK.EQ.0) GOTO 8 475 | 476 | IF(RAN(QZ).GT.0.25) GOTO 8 477 | 5017 CALL SPEAK(23) 478 | PAUSE 'GAME IS OVER' 479 | GOTO 2011 480 | 481 | 482 | 483 | 5000 JOBJ=K 484 | IF(JTWO.NE.0)GOTO 2028 485 | IF((J.EQ.IPLACE(K)).OR.(IPLACE(K).EQ.-1)) GOTO 5004 486 | IF(K.NE.GRATE)GOTO 502 487 | IF((J.EQ.1).OR.(J.EQ.4).OR.(J.EQ.7))GOTO 5098 488 | IF((J.GT.9).AND.(J.LT.15))GOTO 5097 489 | 502 IF(B.NE.' ')GOTO 5316 490 | TYPE 5005,A 491 | 5005 FORMAT(' I SEE NO ',A5,' HERE.',/) 492 | GOTO 2011 493 | 5316 TYPE 5317,A,B 494 | 5317 FORMAT(' I SEE NO ',2A5,' HERE.'/) 495 | GOTO 2011 496 | 5098 K=49 497 | GOTO 5014 498 | 5097 K=50 499 | GOTO 5014 500 | 5004 JOBJ=K 501 | IF(JVERB.NE.0)GOTO 2027 502 | 503 | 504 | 5064 IF(B.NE.' ')GOTO 5314 505 | TYPE 5001,A 506 | 5001 FORMAT(' WHAT DO YOU WANT TO DO WITH THE ',A5,'?',/) 507 | GOTO 2020 508 | 5314 TYPE 5315,A,B 509 | 5315 FORMAT(' WHAT DO YOU WANT TO DO WITH THE ',2A5,'?',/) 510 | GOTO 2020 511 | 512 | C CARRY 513 | 514 | 9000 IF(JOBJ.EQ.18)GOTO 2009 515 | IF(IPLACE(JOBJ).NE.J) GOTO 5200 516 | 9001 IF(IFIXED(JOBJ).EQ.0)GOTO 9002 517 | CALL SPEAK(25) 518 | GOTO 2011 519 | 9002 IF(JOBJ.NE.BIRD)GOTO 9004 520 | IF(IPLACE(ROD).NE.-1)GOTO 9003 521 | CALL SPEAK(26) 522 | GOTO 2011 523 | 9003 IF((IPLACE(4).EQ.-1).OR.(IPLACE(4).EQ.J)) GOTO 9004 524 | CALL SPEAK(27) 525 | GOTO 2011 526 | 9004 IPLACE(JOBJ)=-1 527 | 9005 IF(IOBJ(J).NE.JOBJ) GOTO 9006 528 | IOBJ(J)=ICHAIN(JOBJ) 529 | GOTO 2009 530 | 9006 ITEMP=IOBJ(J) 531 | 9007 IF(ICHAIN(ITEMP).EQ.(JOBJ)) GOTO 9008 532 | ITEMP=ICHAIN(ITEMP) 533 | GOTO 9007 534 | 9008 ICHAIN(ITEMP)=ICHAIN(JOBJ) 535 | GOTO 2009 536 | 537 | 538 | C LOCK, UNLOCK, NO OBJECT YET 539 | 540 | 9403 IF((J.EQ.8).OR.(J.EQ.9))GOTO 5105 541 | 5032 CALL SPEAK(28) 542 | GOTO 2011 543 | 5105 JOBJ=GRATE 544 | GOTO 2027 545 | 546 | C DISCARD OBJECT 547 | 548 | 5066 IF(JOBJ.EQ.18)GOTO 2009 549 | IF(IPLACE(JOBJ).NE.-1) GOTO 5200 550 | 5012 IF((JOBJ.NE.BIRD).OR.(J.NE.19).OR.(PROP(11).EQ.1))GOTO 9401 551 | CALL SPEAK(30) 552 | PROP(11)=1 553 | 5160 ICHAIN(JOBJ)=IOBJ(J) 554 | IOBJ(J)=JOBJ 555 | IPLACE(JOBJ)=J 556 | GOTO 2011 557 | 558 | 9401 CALL SPEAK(54) 559 | GOTO 5160 560 | 561 | C LOCK,UNLOCK OBJECT 562 | 563 | 5031 IF(IPLACE(KEYS).NE.-1.AND.IPLACE(KEYS).NE.J)GOTO 5200 564 | IF(JOBJ.NE.4)GOTO 5102 565 | CALL SPEAK(32) 566 | GOTO 2011 567 | 5102 IF(JOBJ.NE.KEYS)GOTO 5104 568 | CALL SPEAK(55) 569 | GOTO 2011 570 | 5104 IF(JOBJ.EQ.GRATE)GOTO 5107 571 | CALL SPEAK(33) 572 | GOTO 2011 573 | 5107 IF(JVERB.EQ.4) GOTO 5033 574 | IF(PROP(GRATE).NE.0)GOTO 5034 575 | CALL SPEAK(34) 576 | GOTO 2011 577 | 5034 CALL SPEAK(35) 578 | PROP(GRATE)=0 579 | PROP(8)=0 580 | GOTO 2011 581 | 5033 IF(PROP(GRATE).EQ.0)GOTO 5109 582 | CALL SPEAK(36) 583 | GOTO 2011 584 | 5109 CALL SPEAK(37) 585 | PROP(GRATE)=1 586 | PROP(8)=1 587 | GOTO 2011 588 | 589 | 590 | 591 | C LIGHT LAMP 592 | 593 | 9404 IF((IPLACE(2).NE.J).AND.(IPLACE(2).NE.-1))GOTO 5200 594 | PROP(2)=1 595 | IDARK=0 596 | CALL SPEAK(39) 597 | GOTO 2011 598 | 599 | C LAMP OFF 600 | 601 | 9406 IF((IPLACE(2).NE.J).AND.(IPLACE(2).NE.-1)) GOTO 5200 602 | PROP(2)=0 603 | CALL SPEAK(40) 604 | GOTO 2011 605 | 606 | C STRIKE 607 | 608 | 5081 IF(JOBJ.NE.12)GOTO 5200 609 | PROP(12)=1 610 | GOTO 2003 611 | 612 | C ATTACK 613 | 614 | 5300 DO 5313 ID=1,3 615 | IID=ID 616 | IF(DSEEN(ID).NE.0)GOTO 5307 617 | 5313 CONTINUE 618 | IF(JOBJ.EQ.0)GOTO 5062 619 | IF(JOBJ.EQ.SNAKE) GOTO 5200 620 | IF(JOBJ.EQ.BIRD) GOTO 5302 621 | CALL SPEAK(44) 622 | GOTO 2011 623 | 5302 CALL SPEAK(45) 624 | IPLACE(JOBJ)=300 625 | GOTO 9005 626 | 627 | 5307 IF(RAN(QZ).GT.0.4) GOTO 5309 628 | DSEEN(IID)=0 629 | ODLOC(IID)=0 630 | DLOC(IID)=0 631 | CALL SPEAK(47) 632 | GOTO 5311 633 | 5309 CALL SPEAK(48) 634 | 5311 K=21 635 | GOTO 5014 636 | 637 | C EAT 638 | 639 | 5502 IF((IPLACE(FOOD).NE.J.AND.IPLACE(FOOD).NE.-1).OR.PROP(FOOD).NE.0 640 | 1 .OR.JOBJ.NE.FOOD)GOTO 5200 641 | PROP(FOOD)=1 642 | 5501 JSPK=72 643 | GOTO 5200 644 | 645 | C DRINK 646 | 647 | 5504 IF((IPLACE(WATER).NE.J.AND.IPLACE(WATER).NE.-1) 648 | 1 .OR.PROP(WATER).NE.0.OR.JOBJ.NE.WATER) GOTO 5200 649 | PROP(WATER)=1 650 | JSPK=74 651 | GOTO 5200 652 | 653 | C RUB 654 | 655 | 5505 IF(JOBJ.NE.LAMP)JSPK=76 656 | GOTO 5200 657 | 658 | C POUR 659 | 660 | 5506 IF(JOBJ.NE.WATER)JSPK=78 661 | PROP(WATER)=1 662 | GOTO 5200 663 | 664 | 665 | 666 | END 667 | 668 | 669 | SUBROUTINE SPEAK(IT) 670 | IMPLICIT INTEGER(A-Z) 671 | COMMON RTEXT,LLINE 672 | DIMENSION RTEXT(100),LLINE(1000,22) 673 | 674 | KKT=RTEXT(IT) 675 | IF(KKT.EQ.0)RETURN 676 | 999 TYPE 998, (LLINE(KKT,JJT),JJT=3,LLINE(KKT,2)) 677 | 998 FORMAT(20A5) 678 | KKT=KKT+1 679 | IF(LLINE(KKT-1,1).NE.0)GOTO 999 680 | 997 TYPE 996 681 | 996 FORMAT(/) 682 | RETURN 683 | END 684 | 685 | 686 | SUBROUTINE GETIN(TWOW,B,C,D) 687 | IMPLICIT INTEGER(A-Z) 688 | DIMENSION A(5),M2(6) 689 | DATA M2/"4000000000,"20000000,"100000,"400,"2,0/ 690 | 6 ACCEPT 1,(A(I), I=1,4) 691 | 1 FORMAT(4A5) 692 | TWOW=0 693 | S=0 694 | B=A(1) 695 | DO 2 J=1,4 696 | DO 2 K=1,5 697 | MASK1="774000000000 698 | IF(K.NE.1) MASK1="177*M2(K) 699 | IF(((A(J).XOR."201004020100).AND.MASK1).EQ.0)GOTO 3 700 | IF(S.EQ.0) GOTO 2 701 | TWOW=1 702 | CALL SHIFT(A(J),7*(K-1),XX) 703 | CALL SHIFT(A(J+1),7*(K-6),YY) 704 | MASK=-M2(6-K) 705 | C=(XX.AND.MASK)+(YY.AND.(-2-MASK)) 706 | GOTO 4 707 | 3 IF(S.EQ.1) GOTO 2 708 | S=1 709 | IF(J.EQ.1) B=(B.AND.-M2(K)).OR.("201004020100.AND. 710 | 1 (-M2(K).XOR.-1)) 711 | 2 CONTINUE 712 | 4 D=A(2) 713 | RETURN 714 | END 715 | 716 | SUBROUTINE YES(X,Y,Z,YEA) 717 | IMPLICIT INTEGER(A-Z) 718 | CALL SPEAK(X) 719 | CALL GETIN(JUNK,IA1,JUNK,IB1) 720 | IF(IA1.EQ.'NO'.OR.IA1.EQ.'N') GOTO 1 721 | YEA=1 722 | IF(Y.NE.0) CALL SPEAK(Y) 723 | RETURN 724 | 1 YEA=0 725 | IF(Z.NE.0)CALL SPEAK(Z) 726 | RETURN 727 | END 728 | 729 | 730 | 731 | SUBROUTINE SHIFT (VAL,DIST,RES) 732 | IMPLICIT INTEGER (A-Z) 733 | RES=VAL 734 | IF(DIST)10,20,30 735 | 10 IDIST=-DIST 736 | DO 11 I=1,IDIST 737 | J = 0 738 | IF (RES.LT.0) J="200000000000 739 | 11 RES = ((RES.AND."377777777777)/2) + J 740 | 20 RETURN 741 | 30 DO 31 I=1,DIST 742 | j = 0 743 | IF ((RES.AND."200000000000).NE.0) J="400000000000 744 | 31 RES = (RES.AND."177777777777)*2 + J 745 | RETURN 746 | END 747 | -------------------------------------------------------------------------------- /src/77-03-31_adventure.dat: -------------------------------------------------------------------------------- 1 | 1 2 | 1 YOU ARE STANDING AT THE END OF A ROAD BEFORE A SMALL BRICK 3 | 1 BUILDING . AROUND YOU IS A FOREST. A SMALL 4 | 1 STREAM FLOWS OUT OF THE BUILDING AND DOWN A GULLY. 5 | 2 YOU HAVE WALKED UP A HILL, STILL IN THE FOREST 6 | 2 THE ROAD NOW SLOPES BACK DOWN THE OTHER SIDE OF THE HILL. 7 | 2 THERE IS A BUILDING IN THE DISTANCE. 8 | 3 YOU ARE INSIDE A BUILDING, A WELL HOUSE FOR A LARGE SPRING. 9 | 4 YOU ARE IN A VALLEY IN THE FOREST BESIDE A STREAM TUMBLING 10 | 4 ALONG A ROCKY BED. 11 | 5 YOU ARE IN OPEN FOREST, WITH A DEEP VALLEY TO ONE SIDE. 12 | 6 YOU ARE IN OPEN FOREST NEAR BOTH A VALLEY AND A ROAD. 13 | 7 AT YOUR FEET ALL THE WATER OF THE STREAM SPLASHES INTO A 14 | 7 2 INCH SLIT IN THE ROCK. DOWNSTREAM THE STREAMBED IS BARE ROCK. 15 | 8 YOU ARE IN A 20 FOOT DEPRESSION FLOORED WITH BARE DIRT. SET INTO 16 | 8 THE DIRT IS A STRONG STEEL GRATE MOUNTED IN CONCRETE. A DRY 17 | 8 STREAMBED LEADS INTO THE DEPRESSION. 18 | 9 YOU ARE IN A SMALL CHAMBER BENEATH A 3X3 STEEL GRATE TO THE 19 | 9 SURFACE. A LOW CRAWL OVER COBBLES LEADS INWARD TO THE WEST. 20 | 10 YOU ARE CRAWLING OVER COBBLES IN A LOW PASSAGE. THERE IS A 21 | 10 DIM LIGHT AT THE EAST END OF THE PASSAGE. 22 | 11 YOU ARE IN A DEBRIS ROOM, FILLED WITH STUFF WASHED IN FROM 23 | 11 THE SURFACE. A LOW WIDE PASSAGE WITH COBBLES BECOMES 24 | 11 PLUGGED WITH MUD AND DEBRIS HERE,BUT AN AWKWARD CANYON 25 | 11 LEADS UPWARD AND WEST. 26 | 11 A NOTE ON THE WALL SAYS 'MAGIC WORD XYZZY'. 27 | 12 YOU ARE IN AN AWKWARD SLOPING EAST/WEST CANYON. 28 | 13 YOU ARE IN A SPLENDID CHAMBER THIRTY FEET HIGH. THE WALLS 29 | 13 ARE FROZEN RIVERS OF ORANGE STONE. AN AWKWARD CANYON AND A 30 | 13 GOOD PASSAGE EXIT FROM EAST AND WEST SIDES OF THE CHAMBER. 31 | 14 AT YOUR FEET IS A SMALL PIT BREATHING TRACES OF WHITE MIST. AN 32 | 14 EAST PASSAGE ENDS HERE EXCEPT FOR A SMALL CRACK LEADING ON. 33 | 15 YOU ARE AT ONE END OF A VAST HALL STRETCHING FORWARD OUT OF 34 | 15 SIGHT TO THE WEST. THERE ARE OPENINGS TO EITHER SIDE. NEARBY, A WIDE 35 | 15 STONE STAIRCASE LEADS DOWNWARD. THE HALL IS FILLED WITH 36 | 15 WISPS OF WHITE MIST SWAYING TO AND FRO ALMOST AS IF ALIVE. 37 | 15 A COLD WIND BLOWS UP THE STAIRCASE. THERE IS A PASSAGE 38 | 15 AT THE TOP OF A DOME BEHIND YOU. 39 | 16 THE CRACK IS FAR TOO SMALL FOR YOU TO FOLLOW. 40 | 17 YOU ARE ON THE EAST BANK OF A FISSURE SLICING CLEAR ACROSS 41 | 17 THE HALL. THE MIST IS QUITE THICK HERE, AND THE FISSURE IS 42 | 17 TOO WIDE TO JUMP. 43 | 18 THIS IS A LOW ROOM WITH A CRUDE NOTE ON THE WALL. 44 | 18 IT SAYS 'YOU WON'T GET IT UP THE STEPS'. 45 | 19 YOU ARE IN THE HALL OF THE MOUNTAIN KING, WITH PASSAGES 46 | 19 OFF IN ALL DIRECTIONS. 47 | 20 YOU ARE AT THE BOTTOM OF THE PIT WITH A BROKEN NECK. 48 | 21 YOU DIDN'T MAKE IT 49 | 22 THE DOME IS UNCLIMBABLE 50 | 23 YOU CAN'T GO IN THROUGH A LOCKED STEEL GRATE! 51 | 24 YOU DON'T FIT DOWN A TWO INCH HOLE! 52 | 25 YOU CAN'T GO THROUGH A LOCKED STEEL GRATE. 53 | 27 YOU ARE ON THE WEST SIDE OF THE FISSURE IN THE HALL OF MISTS. 54 | 28 YOU ARE IN A LOW N/S PASSAGE AT A HOLE IN THE FLOOR. 55 | 28 THE HOLE GOES DOWN TO AN E/W PASSAGE. 56 | 29 YOU ARE IN THE SOUTH SIDE CHAMBER. 57 | 30 YOU ARE IN THE WEST SIDE CHAMBER OF HALL OF MT KING. 58 | 30 A PASSAGE CONTINUES WEST AND UP HERE. 59 | 60 | 31 THERE IS NO WAY ACROSS THE FISSURE. 61 | 32 YOU CAN'T GET BY THE SNAKE 62 | 33 YOU ARE IN A LARGE ROOM, WITH A PASSAGE TO THE SOUTH, 63 | 33 A PASSAGE TO THE WEST, AND A WALL OF BROKEN ROCK TO 64 | 33 THE EAST. THERE IS A LARGE 'Y2' ON A ROCK IN ROOMS CENTER. 65 | 34 YOU ARE IN A JUMBLE OF ROCK, WITH CRACKS EVERYWHERE. 66 | 35 YOU ARE AT A WINDOW ON A HUGE PIT, WHICH GOES UP AND 67 | 35 DOWN OUT OF SIGHT. A FLOOR IS INDISTINCTLY VISIBLE 68 | 35 OVER 50 FEET BELOW. DIRECTLY OPPOSITE YOU AND 25 FEET AWAY 69 | 35 THERE IS A SIMILAR WINDOW. 70 | 36 YOU ARE IN A DIRTY BROKEN PASSAGE. TO THE EAST IS A CRAWL. 71 | 36 TO THE WEST IS A LARGE PASSAGE. ABOVE YOU IS A HOLE TO 72 | 36 ANOTHER PASSAGE. 73 | 37 YOU ARE ON THE BRINK OF A SMALL CLEAN CLIMBABLE PIT. 74 | 37 A CRAWL LEADS WEST. 75 | 38 YOU ARE IN THE BOTTOM OF A SMALL PIT WITH A LITTLE 76 | 38 STREAM, WHICH ENTERS AND EXITS THROUGH TINY SLITS. 77 | 39 YOU ARE IN A LARGE ROOM FULL OF DUSTY ROCKS. THERE IS A 78 | 39 BIG HOLE IN THE FLOOR. THERE ARE CRACKS EVERYWHERE, AND 79 | 39 A PASSAGE LEADING EAST. 80 | 40 YOU HAVE CRAWLED THROUGH A VERY LOW WIDE PASSAGE PARALLEL 81 | 40 TO AND NORTH OF THE HALL OF MISTS. 82 | 41 YOU ARE AT THE WEST END OF HALL OF MISTS. A LOW WIDE CRAWL 83 | 41 CONTINUES WEST AND ANOTHER GOES NORTH. TO THE SOUTH IS A 84 | 41 LITTLE PASSAGE 6 FEET OFF THE FLOOR. 85 | 42 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 86 | 43 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 87 | 44 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 88 | 45 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 89 | 46 DEAD END 90 | 47 DEAD END 91 | 48 DEAD END 92 | 49 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 93 | 50 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 94 | 51 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 95 | 52 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 96 | 53 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 97 | 54 DEAD END 98 | 55 YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. 99 | 56 DEAD END 100 | 57 YOU ARE ON THE BRINK OF A THIRTY FOOT PIT WITH A MASSIVE 101 | 57 ORANGE COLUMN DOWN ONE WALL. YOU COULD CLIMB DOWN HERE 102 | 57 BUT YOU COULD NOT GET BACK UP. THE MAZE CONTINUES AT THIS 103 | 57 LEVEL. 104 | 58 DEAD END 105 | 59 YOU HAVE CRAWLED THROUGH A VERY LOW WIDE PASSAGE PARALLEL 106 | 59 TO AND NORTH OF THE HALL OF MISTS. 107 | 60 YOU ARE AT THE EAST END OF A VERY LONG HALL APPARENTLY 108 | 60 WITHOUT SIDE CHAMBERS. TO THE EAST A LOW WIDE CRAWL SLANTS 109 | 60 UP. TO THE NORTH A ROUND TWO FOOT HOLE SLANTS DOWN. 110 | 61 YOU ARE AT THE WEST END OF A VERY LONG FEATURELESS HALL. 111 | 62 YOU ARE AT A CROSSOVER OF A HIGH N/S PASSAGE AND A LOW E/W ONE. 112 | 63 DEAD END 113 | 64 YOU ARE AT A COMPLEX JUNCTION. A LOW HANDS AND KNEES 114 | 64 PASSAGE FROM THE NORTH JOINS A HIGHER CRAWL 115 | 64 FROM THE EAST TO MAKE A WALKING PASSAGE GOING WEST 116 | 64 THERE IS ALSO A LARGE ROOM ABOVE. THE AIR IS DAMP HERE. 117 | 64 A SIGN IN MIDAIR HERE SAYS 'CAVE UNDER CONSTRUCTION BEYOND 118 | 64 THIS POINT. PROCEED AT OWN RISK.' 119 | 65 YOU ARE IN BEDQUILT, A LONG EAST/WEST PASSAGE WITH HOLES EVERYWHERE. 120 | 65 TO EXPLORE AT RANDOM SELECT NORTH, SOUTH, UP, OR DOWN. 121 | 66 YOU ARE IN A ROOM WHOSE WALLS RESEMBLE SWISS CHEESE. 122 | 66 OBVIOUS PASSAGES GO WEST,EAST,NE, AND 123 | 66 NW. PART OF THE ROOM IS OCCUPIED BY A LARGE BEDROCK BLOCK. 124 | 67 YOU ARE IN THE TWOPIT ROOM. THE FLOOR 125 | 67 HERE IS LITTERED WITH THIN ROCK SLABS, WHICH MAKE IT 126 | 67 EASY TO DESCEND THE PITS. THERE IS A PATH HERE BYPASSING 127 | 67 THE PITS TO CONNECT PASSAGES FROM EAST AND WEST.THERE 128 | 67 ARE HOLES ALL OVER, BUT THE ONLY BIG ONE IS ON THE WALL 129 | 67 DIRECTLY OVER THE EAST PIT WHERE YOU CAN'T GET TO IT. 130 | 68 YOU ARE IN A LARGE LOW CIRCULAR CHAMBER WHOSE FLOOR IS AN 131 | 68 IMMENSE SLAB FALLEN FROM THE CEILING(SLAB ROOM). EAST AND 132 | 68 WEST THERE ONCE WERE LARGE PASSAGES, BUT THEY ARE NOW FILLED 133 | 68 WITH BOULDERS. LOW SMALL PASSAGES GO NORTH AND SOUTH, AND THE 134 | 68 SOUTH ONE QUICKLY BENDS WEST AROUND THE BOULDERS. 135 | 69 YOU ARE IN A SECRET NS CANYON ABOVE A LARGE ROOM. 136 | 70 YOU ARE IN A SECRET N/S CANYON ABOVE A SIZABLE PASSAGE. 137 | 71 YOU ARE IN SECRET CANYON AT A JUNCTION OF THREE CANYONS, 138 | 71 BEARING NORTH, SOUTH, AND SE. THE NORTH ONE IS AS TALL 139 | 71 AS THE OTHER TWO COMBINED. 140 | 72 YOU ARE IN A LARGE LOW ROOM. CRAWLS LEAD N, SE, AND SW. 141 | 73 DEAD END CRAWL. 142 | 74 YOU ARE IN SECRET CANYON WHICH HERE RUNS E/W. IT CROSSES OVER 143 | 74 A VERY TIGHT CANYON 15 FEET BELOW. IF YOU GO DOWN YOU MAY 144 | 74 NOT BE ABLE TO GET BACK UP 145 | 75 YOU ARE AT A WIDE PLACE IN A VERY TIGHT N/S CANYON. 146 | 76 THE CANYON HERE BECOMES TO TIGHT TO GO FURTHER SOUTH. 147 | 77 YOU ARE IN A TALL E/W CANYON. A LOW TIGHT CRAWL GOES 3 FEET 148 | 77 NORTH AND SEEMS TO OPEN UP. 149 | 78 THE CANYON RUNS INTO A MASS OF BOULDERS - DEAD END. 150 | 79 THE STREAM FLOWS OUT THROUGH A PAIR OF 1 FOOT DIAMETER SEWER 151 | 79 PIPES. IT WOULD BE ADVISABLE TO USE THE DOOR. 152 | -1 END 153 | 2 154 | 1 YOU'RE AT END OF ROAD AGAIN. 155 | 2 YOU'RE AT HILL IN ROAD. 156 | 3 YOU'RE INSIDE BUILDING. 157 | 4 YOU'RE IN VALLEY 158 | 5 YOU'RE IN FOREST 159 | 6 YOU'RE IN FOREST 160 | 7 YOU'RE AT SLIT IN STREAMBED 161 | 8 YOU'RE OUTSIDE GRATE 162 | 9 YOU'RE BELOW THE GRATE 163 | 10 YOU'RE IN COBBLE CRAWL 164 | 11 YOU'RE IN DEBRIS ROOM. 165 | 13 YOU'RE IN BIRD CHAMBER. 166 | 14 YOU'RE AT TOP OF SMALL PIT. 167 | 15 YOU'RE IN HALL OF MISTS. 168 | 17 YOU'RE ON EAST BANK OF FISSURE. 169 | 18 YOU'RE IN NUGGET OF GOLD ROOM. 170 | 19 YOU'RE IN HALL OF MT KING. 171 | 33 YOU'RE AT Y2 172 | 35 YOU'RE AT WINDOW ON PIT 173 | 36 YOU'RE IN DIRTY PASSAGE 174 | 39 YOU'RE N DUSTY ROCK ROOM. 175 | 41 YOU'RE AT WEST END OF HALL OF MISTS. 176 | 57 YOU'RE AT BRINK OF PIT. 177 | 60 YOU'RE AT EAST END OF LONG HALL. 178 | 66 YOU'RE IN SWISS CHEESE ROOM 179 | 67 YOU'RE IN TWOPIT ROOM 180 | 68 YOU'RE IN SLAB ROOM 181 | -1 182 | 3 183 | 1 2 2 44 184 | 1 3 3 12 19 43 185 | 1 4 4 5 13 14 46 30 186 | 1 5 6 45 43 187 | 1 8 49 188 | 2 1 8 2 12 7 43 45 30 189 | 2 5 6 45 46 190 | 3 1 3 11 32 44 191 | 3 11 48 192 | 3 33 65 193 | 3 79 5 14 194 | 4 1 4 45 195 | 4 5 6 43 44 29 196 | 4 7 5 46 30 197 | 4 8 49 198 | 5 4 9 43 30 199 | 5 300 6 7 8 45 200 | 5 5 44 46 201 | 6 1 2 45 202 | 6 4 9 43 44 30 203 | 6 5 6 46 204 | 7 1 12 205 | 7 4 4 45 206 | 7 5 6 43 44 207 | 7 8 5 15 16 46 30 208 | 7 24 47 14 30 209 | 8 5 6 43 44 46 210 | 8 1 12 211 | 8 7 4 13 45 212 | 8 301 3 5 19 30 213 | 9 302 11 12 214 | 9 10 17 18 19 44 215 | 9 14 31 216 | 9 11 51 217 | 10 9 11 20 21 43 218 | 10 11 19 22 44 51 219 | 10 14 31 220 | 11 310 49 221 | 11 10 17 18 23 24 43 222 | 11 12 25 305 19 29 44 223 | 11 3 48 224 | 11 14 31 225 | 12 310 49 226 | 12 11 30 43 51 227 | 12 13 19 29 44 228 | 12 14 31 229 | 13 310 49 230 | 13 11 51 231 | 13 12 25 305 43 232 | 13 14 23 31 44 233 | 14 310 49 234 | 14 11 51 235 | 14 13 23 43 236 | 14 303 30 31 34 237 | 14 16 33 44 238 | 15 18 36 46 239 | 15 17 7 38 44 240 | 15 19 10 30 45 241 | 15 304 29 31 34 35 23 43 242 | 15 34 55 243 | 15 62 69 244 | 16 14 1 245 | 17 15 8 38 43 246 | 17 305 7 247 | 17 306 40 41 42 44 19 39 248 | 18 15 38 11 8 45 249 | 19 15 10 29 43 250 | 19 307 45 36 251 | 19 308 46 37 252 | 19 309 44 7 253 | 19 74 66 254 | 20 26 1 255 | 21 26 1 256 | 22 15 1 257 | 23 8 1 258 | 24 7 1 259 | 25 9 1 260 | 27 17 8 11 38 261 | 27 40 45 262 | 27 41 44 263 | 28 19 38 11 46 264 | 28 33 45 265 | 28 36 30 52 266 | 29 19 38 11 45 267 | 30 19 38 11 43 268 | 30 62 44 29 269 | 31 17 1 270 | 32 19 1 271 | 33 3 65 272 | 33 28 46 273 | 33 34 43 53 54 274 | 33 35 44 275 | 34 33 30 276 | 34 15 29 277 | 35 33 43 55 278 | 36 37 43 17 279 | 36 28 29 52 280 | 36 39 44 281 | 37 36 44 17 282 | 37 38 30 31 56 283 | 38 37 56 29 284 | 39 36 43 285 | 39 64 30 52 58 286 | 39 65 70 287 | 40 41 1 288 | 41 42 46 29 23 56 289 | 41 27 43 290 | 41 59 45 291 | 41 60 44 17 292 | 42 41 44 293 | 42 43 43 294 | 42 44 46 295 | 43 42 44 296 | 43 44 46 297 | 43 45 43 298 | 44 42 45 299 | 44 43 43 300 | 44 48 30 301 | 44 50 46 302 | 45 43 45 303 | 45 46 43 304 | 45 47 46 305 | 46 45 44 11 306 | 47 45 45 11 307 | 48 44 29 11 308 | 49 50 30 43 309 | 49 51 44 310 | 50 44 43 311 | 50 49 44 29 312 | 50 52 46 313 | 51 49 44 314 | 51 52 43 315 | 51 53 46 316 | 52 50 45 317 | 52 51 44 318 | 52 53 29 319 | 52 55 43 320 | 53 51 44 321 | 53 52 45 322 | 53 54 46 323 | 54 53 43 11 324 | 55 52 44 325 | 55 56 30 326 | 55 57 43 327 | 56 55 29 11 328 | 57 55 44 329 | 57 58 46 330 | 57 13 30 56 331 | 58 57 44 11 332 | 59 27 1 333 | 60 41 43 29 334 | 60 61 44 335 | 60 62 45 30 336 | 61 60 43 11 337 | 62 60 44 338 | 62 63 45 339 | 62 30 43 340 | 62 15 46 341 | 63 62 46 11 342 | 64 39 29 56 59 343 | 64 65 44 344 | 65 64 43 345 | 65 66 44 346 | 65 68 61 347 | 65 311 46 348 | 65 312 29 349 | 66 313 45 350 | 66 65 60 351 | 66 67 44 352 | 66 77 25 353 | 66 314 46 354 | 67 66 43 355 | 67 72 60 356 | 68 66 46 357 | 68 69 29 358 | 69 68 30 359 | 69 74 46 360 | 70 71 45 361 | 71 39 29 362 | 71 65 62 363 | 71 70 46 364 | 72 67 63 365 | 72 73 45 366 | 73 72 46 367 | 74 19 43 368 | 74 69 44 369 | 74 75 30 370 | 75 76 46 371 | 75 77 45 372 | 76 75 45 373 | 77 75 43 374 | 77 78 44 375 | 77 66 45 376 | 78 77 46 377 | 79 3 1 378 | -1 379 | 4 380 | 2 ROAD 381 | 3 ENTER 382 | 3 DOOR 383 | 3 GATE 384 | 4 UPSTR 385 | 5 DOWNS 386 | 6 FORES 387 | 7 FORWA 388 | 7 CONTI 389 | 7 ONWAR 390 | 8 BACK 391 | 8 RETUR 392 | 8 RETRE 393 | 9 VALLE 394 | 10 STAIR 395 | 11 OUT 396 | 11 OUTSI 397 | 11 EXIT 398 | 11 LEAVE 399 | 12 BUILD 400 | 12 BLD 401 | 12 HOUSE 402 | 13 GULLY 403 | 14 STREA 404 | 15 ROCK 405 | 16 BED 406 | 17 CRAWL 407 | 18 COBBL 408 | 19 INWAR 409 | 19 INSID 410 | 19 IN 411 | 20 SURFA 412 | 21 NULL 413 | 21 NOWHE 414 | 22 DARK 415 | 23 PASSA 416 | 24 LOW 417 | 25 CANYO 418 | 26 AWKWA 419 | 29 UPWAR 420 | 29 UP 421 | 29 U 422 | 29 ABOVE 423 | 30 D 424 | 30 DOWNW 425 | 30 DOWN 426 | 31 PIT 427 | 32 OUTDO 428 | 33 CRACK 429 | 34 STEPS 430 | 35 DOME 431 | 36 LEFT 432 | 37 RIGHT 433 | 38 HALL 434 | 39 JUMP 435 | 40 MAGIC 436 | 41 OVER 437 | 42 ACROS 438 | 43 EAST 439 | 43 E 440 | 44 WEST 441 | 44 W 442 | 45 NORTH 443 | 45 N 444 | 46 SOUTH 445 | 46 S 446 | 47 SLIT 447 | 48 XYZZY 448 | 49 DEPRE 449 | 50 ENTRA 450 | 51 DEBRI 451 | 52 HOLE 452 | 53 WALL 453 | 54 BROKE 454 | 55 Y2 455 | 56 CLIMB 456 | 57 LOOK 457 | 57 EXAMI 458 | 57 TOUCH 459 | 57 LOOKA 460 | 58 FLOOR 461 | 59 ROOM 462 | 60 NE 463 | 61 SLAB 464 | 61 SLABR 465 | 62 SE 466 | 63 SW 467 | 64 NW 468 | 65 PLUGH 469 | 66 SECRE 470 | 67 CAVE 471 | 68 TURN 472 | 69 CROSS 473 | 70 BEDQU 474 | 1001 KEYS 475 | 1001 KEY 476 | 1002 LAMP 477 | 1002 HEADL 478 | 1003 GRATE 479 | 1004 CAGE 480 | 1005 ROD 481 | 1006 STEPS 482 | 1007 BIRD 483 | 1010 NUGGE 484 | 1010 GOLD 485 | 1011 SNAKE 486 | 1012 FISSU 487 | 1013 DIAMO 488 | 1014 SILVE 489 | 1014 BARS 490 | 1015 JEWEL 491 | 1016 COINS 492 | 1017 DWARV 493 | 1017 DWARF 494 | 1018 KNIFE 495 | 1018 KNIVE 496 | 1018 ROCK 497 | 1018 WEAPO 498 | 1018 BOULD 499 | 1019 FOOD 500 | 1019 RATIO 501 | 1020 WATER 502 | 1020 BOTTL 503 | 1021 AXE 504 | 1022 KNIFE 505 | 1023 CHEST 506 | 1023 BOX 507 | 1023 TREAS 508 | 2001 TAKE 509 | 2001 CARRY 510 | 2001 KEEP 511 | 2001 PICKU 512 | 2001 PICK 513 | 2001 WEAR 514 | 2001 CATCH 515 | 2001 STEAL 516 | 2001 CAPTU 517 | 2001 FIND 518 | 2001 WHERE 519 | 2001 GET 520 | 2002 RELEA 521 | 2002 FREE 522 | 2002 DISCA 523 | 2002 DROP 524 | 2002 DUMP 525 | 2003 DUMMY 526 | 2004 UNLOC 527 | 2004 OPEN 528 | 2004 LIFT 529 | 2005 NOTHI 530 | 2005 HOLD 531 | 2006 LOCK 532 | 2006 CLOSE 533 | 2007 LIGHT 534 | 2007 ON 535 | 2008 EXTIN 536 | 2008 OFF 537 | 2009 STRIK 538 | 2010 CALM 539 | 2010 WAVE 540 | 2010 SHAKE 541 | 2010 SING 542 | 2010 CLEAV 543 | 2011 WALK 544 | 2011 RUN 545 | 2011 TRAVE 546 | 2011 GO 547 | 2011 PROCE 548 | 2011 CONTI 549 | 2011 EXPLO 550 | 2011 GOTO 551 | 2011 FOLLO 552 | 2012 ATTAC 553 | 2012 KILL 554 | 2012 STAB 555 | 2012 FIGHT 556 | 2012 HIT 557 | 2013 POUR 558 | 2014 EAT 559 | 2015 DRINK 560 | 2016 RUB 561 | 3050 OPENS 562 | 3051 HELP 563 | 3051 ? 564 | 3051 WHAT 565 | 3064 TREE 566 | 3066 DIG 567 | 3066 EXCIV 568 | 3067 BLAST 569 | 3068 LOST 570 | 3069 MIST 571 | 3049 THROW 572 | 3079 FUCK 573 | -1 574 | 5 575 | 201 THERE ARE SOME KEYS ON THE GROUND HERE. 576 | 202 THERE IS A SHINY BRASS LAMP NEARBY. 577 | 3 THE GRATE IS LOCKED 578 | 103 THE GRATE IS OPEN. 579 | 204 THERE IS A SMALL WICKER CAGE DISCARDED NEARBY. 580 | 205 A THREE FOOT BLACK ROD WITH A RUSTY STAR ON AN END LIES NEARBY 581 | 206 ROUGH STONE STEPS LEAD DOWN THE PIT. 582 | 7 A CHEERFUL LITTLE BIRD IS SITTING HERE SINGING. 583 | 107 THERE IS A LITTLE BIRD IN THE CAGE. 584 | 8 THE GRATE IS LOCKED 585 | 108 THE GRATE IS OPEN. 586 | 209 ROUGH STONE STEPS LEAD UP THE DOME. 587 | 210 THERE IS A LARGE SPARKLING NUGGET OF GOLD HERE! 588 | 11 A HUGE GREEN FIERCE SNAKE BARS THE WAY! 589 | 112 A CRYSTAL BRIDGE NOW SPANS THE FISSURE. 590 | 213 THERE ARE DIAMONDS HERE! 591 | 214 THERE ARE BARS OF SILVER HERE! 592 | 215 THERE IS PRECIOUS JEWELRY HERE! 593 | 216 THERE ARE MANY COINS HERE! 594 | 19 THERE IS FOOD HERE. 595 | 20 THERE IS A BOTTLE OF WATER HERE. 596 | 120 THERE IS AN EMPTY BOTTLE HERE. 597 | 221 THERE IS A LITTLE AXE HERE 598 | -1 599 | 6 600 | 1 SOMEWHERE NEARBY IS COLOSSAL CAVE, WHERE OTHERS HAVE FOUND 601 | 1 FORTUNES IN TREASURE AND GOLD, THOUGH IT IS RUMORED 602 | 1 THAT SOME WHO ENTER ARE NEVER SEEN AGAIN. MAGIC IS SAID 603 | 1 TO WORK IN THE CAVE. I WILL BE YOUR EYES AND HANDS. DIRECT 604 | 1 ME WITH COMMANDS OF 1 OR 2 WORDS. 605 | 1 (ERRORS, SUGGESTIONS, COMPLAINTS TO CROWTHER) 606 | 1 (IF STUCK TYPE HELP FOR SOME HINTS) 607 | 2 A LITTLE DWARF WITH A BIG KNIFE BLOCKS YOUR WAY. 608 | 3 A LITTLE DWARF JUST WALKED AROUND A CORNER,SAW YOU, THREW 609 | 3 A LITTLE AXE AT YOU WHICH MISSED, CURSED, AND RAN AWAY. 610 | 4 THERE IS A THREATENING LITTLE DWARF IN THE ROOM WITH YOU! 611 | 5 ONE SHARP NASTY KNIFE IS THROWN AT YOU! 612 | 6 HE GETS YOU! 613 | 7 NONE OF THEM HIT YOU! 614 | 8 A HOLLOW VOICE SAYS 'PLUGH' 615 | 9 THERE IS NO WAY TO GO THAT DIRECTION. 616 | 10 I AM UNSURE HOW YOU ARE FACING. USE COMPASS POINTS OR 617 | 10 NEARBY OBJECTS. 618 | 11 I DON'T KNOW IN FROM OUT HERE. USE COMPASS POINTS OR NAME 619 | 11 SOMETHING IN THE GENERAL DIRECTION YOU WANT TO GO. 620 | 12 I DON'T KNOW HOW TO APPLY THAT WORD HERE. 621 | 13 I DON'T UNDERSTAND THAT! 622 | 14 I ALWAYS UNDERSTAND COMPASS DIRECTIONS, OR YOU CAN NAME 623 | 14 A NEARBY THING TO HEAD THAT WAY. 624 | 15 SORRY, BUT I AM NOT ALLOWED TO GIVE MORE DETAIL. I WILL 625 | 15 REPEAT THE LONG DESCRIPTION OF YOUR LOCATION. 626 | 16 IT IS NOW PITCH BLACK. IF YOU PROCEED YOU WILL LIKELY 627 | 16 FALL INTO A PIT. 628 | 17 IF YOU PREFER, SIMPLY TYPE W RATHER THAN WEST. 629 | 18 ARE YOU TRYING TO CATCH THE BIRD? 630 | 19 THE BIRD IS FRIGHTENED RIGHT NOW AND YOU CANNOT CATCH IT 631 | 19 NO MATTER WHAT YOU TRY. PERHAPS YOU MIGHT TRY LATER. 632 | 20 ARE YOU TRYING TO ATTACK OR AVOID THE SNAKE? 633 | 21 YOU CAN'T KILL THE SNAKE, OR DRIVE IT AWAY, OR AVOID IT, 634 | 21 OR ANYTHING LIKE THAT. THERE IS A WAY TO GET BY, BUT YOU 635 | 21 DON'T HAVE THE NECESSARY RESOURCES RIGHT NOW. 636 | 22 MY WORD FOR HITTING SOMETHING WITH THE ROD IS 'STRIKE'. 637 | 23 YOU FELL INTO A PIT AND BROKE EVERY BONE IN YOUR BODY! 638 | 24 YOU ARE ALREADY CARRYING IT! 639 | 25 YOU CAN'T BE SERIOUS! 640 | 26 THE BIRD WAS UNAFRAID WHEN YOU ENTERED, BUT AS YOU APPROACH 641 | 26 IT BECOMES DISTURBED AND YOU CANNOT CATCH IT. 642 | 27 YOU CAN CATCH THE BIRD, BUT YOU CANNOT CARRY IT. 643 | 28 THERE IS NOTHING HERE WITH A LOCK! 644 | 29 YOU AREN'T CARRYING IT! 645 | 30 THE LITTLE BIRD ATTACKS THE GREEN SNAKE, AND IN AN 646 | 30 ASTOUNDING FLURRY DRIVES THE SNAKE AWAY. 647 | 31 YOU HAVE NO KEYS! 648 | 32 IT HAS NO LOCK. 649 | 33 I DON'T KNOW HOW TO LOCK OR UNLOCK SUCH A THING. 650 | 34 THE GRATE WAS ALREADY LOCKED. 651 | 35 THE GRATE IS NOW LOCKED. 652 | 36 THE GRATE WAS ALREADY UNLOCKED. 653 | 37 THE GRATE IS NOW UNLOCKED. 654 | 38 YOU HAVE NO SOURCE OF LIGHT. 655 | 39 YOUR LAMP IS NOW ON. 656 | 40 YOUR LAMP IS NOW OFF. 657 | 41 STRIKE WHAT? 658 | 42 NOTHING HAPPENS. 659 | 43 WHERE? 660 | 44 THERE IS NOTHING HERE TO ATTACK. 661 | 45 THE LITTLE BIRD IS NOW DEAD. ITS BODY DISAPPEARS. 662 | 46 ATTACKING THE SNAKE BOTH DOESN'T WORK AND IS VERY DANGEROUS. 663 | 47 YOU KILLED A LITTLE DWARF. 664 | 48 YOU ATTACK A LITTLE DWARF, BUT HE DODGES OUT OF THE WAY. 665 | 49 I HAVE TROUBLE WITH THE WORD 'THROW' BECAUSE YOU CAN THROW 666 | 49 A THING OR THROW AT A THING. PLEASE USE DROP OR ATTACK INSTEAD. 667 | 50 GOOD TRY, BUT THAT IS AN OLD WORN-OUT MAGIC WORD. 668 | 51 I KNOW OF PLACES, ACTIONS, AND THINGS. MOST OF MY VOCABULARY 669 | 51 DESCRIBES PLACES AND IS USED TO MOVE YOU THERE. TO MOVE TRY 670 | 51 WORDS LIKE FOREST, BUILDING, DOWNSTREAM, ENTER, EAST, WEST 671 | 51 NORTH, SOUTH, UP, OR DOWN. I KNOW ABOUT A FEW SPECIAL OBJECTS, 672 | 51 LIKE A BLACK ROD HIDDEN IN THE CAVE. THESE OBJECTS CAN BE 673 | 51 MANIPULATED USING ONE OF THE ACTION WORDS THAT I KNOW. USUALLY 674 | 51 YOU WILL NEED TO GIVE BOTH THE OBJECT AND ACTION WORDS 675 | 51 (IN EITHER ORDER), BUT SOMETIMES I CAN INFER THE OBJECT FROM 676 | 51 THE VERB ALONE. THE OBJECTS HAVE SIDE EFFECTS - FOR 677 | 51 INSTANCE, THE ROD SCARES THE BIRD. 678 | 51 USUALLY PEOPLE HAVING TROUBLE MOVING JUST NEED TO TRY A FEW 679 | 51 MORE WORDS. USUALLY PEOPLE TRYING TO MANIPULATE AN 680 | 51 OBJECT ARE ATTEMPTING SOMETHING BEYOND THEIR (OR MY!) 681 | 51 CAPABILITIES AND SHOULD TRY A COMPLETELY DIFFERENT TACK. 682 | 51 TO SPEED THE GAME YOU CAN SOMETIMES MOVE LONG DISTANCES 683 | 51 WITH A SINGLE WORD. FOR EXAMPLE, 'BUILDING' USUALLY GETS 684 | 51 YOU TO THE BUILDING FROM ANYWHERE ABOVE GROUND EXCEPT WHEN 685 | 51 LOST IN THE FOREST. ALSO, NOTE THAT CAVE PASSAGES TURN A 686 | 51 LOT, AND THAT LEAVING A ROOM TO THE NORTH DOES NOT GUARANTEE 687 | 51 ENTERING THE NEXT FROM THE SOUTH. GOOD LUCK! 688 | 52 IT MISSES! 689 | 53 IT GETS YOU! 690 | 54 OK 691 | 55 YOU CAN'T UNLOCK THE KEYS. 692 | 56 YOU HAVE CRAWLED AROUND IN SOME LITTLE HOLES AND WOUND UP 693 | 56 BACK IN THE MAIN PASSAGE. 694 | 57 I DON'T KNOW WHERE THE CAVE IS, BUT HEREABOUTS NO STREAM 695 | 57 CAN RUN ON THE SURFACE FOR LONG. I WOULD TRY THE STREAM. 696 | 58 I NEED MORE DETAILED INSTRUCTIONS TO DO THAT. 697 | 59 I CAN ONLY TELL YOU WHAT YOU SEE AS YOU MOVE ABOUT 698 | 59 AND MANIPULATE THINGS. I CANNOT TELL YOU WHERE REMOTE THINGS 699 | 59 ARE. 700 | 60 I DON'T KNOW THAT WORD. 701 | 61 WHAT? 702 | 62 ARE YOU TRYING TO GET INTO THE CAVE? 703 | 63 THE GRATE IS VERY SOLID AND HAS A HARDENED STEEL LOCK. YOU 704 | 63 CANNOT ENTER WITHOUT A KEY, AND THERE ARE NO KEYS NEARBY. 705 | 63 I WOULD RECOMMEND LOOKING ELSEWHERE FOR THE KEYS. 706 | 64 THE TREES OF THE FOREST ARE LARGE HARDWOOD OAK AND MAPLE, 707 | 64 WITH AN OCCASIONAL GROVE OF PINE OR SPRUCE. THERE IS QUITE 708 | 64 A BIT OF UNDERGROWTH, LARGELY BIRCH AND ASH SAPLINGS PLUS 709 | 64 NONDESCRITPT BUSHES OF VARIOUS SORTS. THIS TIME OF YEAR 710 | 64 VISIBILITY IS QUITE RESTRICTED BY ALL THE LEAVES, BUT TRAVEL 711 | 64 IS QUITE EASY IF YOU DETOUR AROUND THE SPRUCE AND BERRY BUSHES. 712 | 65 WELCOME TO ADVENTURE!! WOULD YOU LIKE INSTRUCTIONS? 713 | 66 DIGGING WITHOUT A SHOVEL IS QUITE IMPRACTICAL: EVEN WITH A 714 | 66 SHOVEL PROGRESS IS UNLIKELY. 715 | 67 BLASTING REQUIRES DYNAMITE. 716 | 68 I'M AS CONFUSED AS YOU ARE. 717 | 69 MIST IS A WHITE VAPOR, USUALLY WATER, SEEN FROM TIME TO TIME 718 | 69 IN CAVERNS. IT CAN BE FOUND ANYWHERE BUT IS FREQUENTLY A SIGN 719 | 69 OF A DEEP PIT LEADING DOWN TO WATER. 720 | 70 YOUR FEET ARE NOW WET. 721 | 71 THERE IS NOTHING HERE TO EAT. 722 | 72 EATEN! 723 | 73 THERE IS NO DRINKABLE WATER HERE. 724 | 74 THE BOTTLE OF WATER IS NOW EMPTY. 725 | 75 RUBBING THE ELECTRIC LAMP IS NOT PARTICULARLY REWARDING. 726 | 75 ANYWAY, NOTHING EXCITING HAPPENS. 727 | 76 PECULIAR. NOTHING UNEXPECTED HAPPENS. 728 | 77 YOUR BOTTLE IS EMPTY AND THE GROUND IS WET. 729 | 78 YOU CAN'T POUR THAT. 730 | 79 WATCH IT! 731 | 80 WHICH WAY? 732 | -1 733 | 0 734 | -------------------------------------------------------------------------------- /src/77-03-31_adventure.f: -------------------------------------------------------------------------------- 1 | C ADVENTURES 2 | IMPLICIT INTEGER(A-Z) 3 | REAL RAN 4 | COMMON RTEXT,LLINE 5 | DIMENSION IOBJ(300),ICHAIN(100),IPLACE(100) 6 | 1 ,IFIXED(100),COND(300),PROP(100),ABB(300),LLINE(1000,22) 7 | 2 ,LTEXT(300),STEXT(300),KEY(300),DEFAULT(300),TRAVEL(1000) 8 | 3 ,TK(25),KTAB(1000),ATAB(1000),BTEXT(200),DSEEN(10) 9 | 4 ,DLOC(10),ODLOC(10),DTRAV(20),RTEXT(100),JSPKT(100) 10 | 5 ,IPLT(100),IFIXT(100) 11 | 12 | C READ THE PARAMETERS 13 | 14 | IF(SETUP.NE.0) GOTO 1 15 | SETUP=1 16 | KEYS=1 17 | LAMP=2 18 | GRATE=3 19 | ROD=5 20 | BIRD=7 21 | NUGGET=10 22 | SNAKE=11 23 | FOOD=19 24 | WATER=20 25 | AXE=21 26 | DATA(JSPKT(I),I=1,16)/24,29,0,31,0,31,38,38,42,42,43,46,77,71 27 | 1 ,73,75/ 28 | DATA(IPLT(I),I=1,20)/3,3,8,10,11,14,13,9,15,18,19,17,27,28,29 29 | 1 ,30,0,0,3,3/ 30 | DATA(IFIXT(I),I=1,20)/0,0,1,0,0,1,0,1,1,0,1,1,0,0,0,0,0,0,0,0/ 31 | DATA(DTRAV(I),I=1,15)/36,28,19,30,62,60,41,27,17,15,19,28,36 32 | 1 ,300,300/ 33 | DO 1001 I=1,300 34 | STEXT(I)=0 35 | IF(I.LE.200) BTEXT(I)=0 36 | IF(I.LE.100)RTEXT(I)=0 37 | 1001 LTEXT(I)=0 38 | I=1 39 | CALL IFILE(1,'TEXT') 40 | 1002 READ(1,1003) IKIND 41 | 1003 FORMAT(G) 42 | GOTO(1100,1004,1004,1013,1020,1004,1004)(IKIND+1) 43 | 1004 READ(1,1005)JKIND,(LLINE(I,J),J=3,22) 44 | 1005 FORMAT(1G,20A5) 45 | IF(JKIND.EQ.-1) GOTO 1002 46 | DO 1006 K=1,20 47 | KK=K 48 | IF(LLINE(I,21-K).NE.' ') GOTO 1007 49 | 1006 CONTINUE 50 | STOP 51 | 1007 LLINE(I,2)=20-KK+1 52 | LLINE(I,1)=0 53 | IF(IKIND.EQ.6)GOTO 1023 54 | IF(IKIND.EQ.5)GOTO 1011 55 | IF(IKIND.EQ.1) GOTO 1008 56 | IF(STEXT(JKIND).NE.0) GOTO 1009 57 | STEXT(JKIND)=I 58 | GOTO 1010 59 | 60 | 1008 IF(LTEXT(JKIND).NE.0) GOTO 1009 61 | LTEXT(JKIND)=I 62 | GOTO 1010 63 | 1009 LLINE(I-1,1)=I 64 | 1010 I=I+1 65 | IF(I.NE.1000)GOTO 1004 66 | PAUSE 'TOO MANY LINES' 67 | 68 | 1011 IF(JKIND.LT.200)GOTO 1012 69 | IF(BTEXT(JKIND-100).NE.0)GOTO 1009 70 | BTEXT(JKIND-100)=I 71 | BTEXT(JKIND-200)=I 72 | GOTO 1010 73 | 1012 IF(BTEXT(JKIND).NE.0)GOTO 1009 74 | BTEXT(JKIND)=I 75 | GOTO 1010 76 | 77 | 1023 IF(RTEXT(JKIND).NE.0) GOTO 1009 78 | RTEXT(JKIND)=I 79 | GOTO 1010 80 | 81 | 1013 I=1 82 | 1014 READ(1,1015)JKIND,LKIND,(TK(L),L=1,10) 83 | 1015 FORMAT(12G) 84 | IF(JKIND.EQ.-1) GOTO 1002 85 | IF(KEY(JKIND).NE.0) GOTO 1016 86 | KEY(JKIND)=I 87 | GOTO 1017 88 | 1016 TRAVEL(I-1)=-TRAVEL(I-1) 89 | 1017 DO 1018 L=1,10 90 | IF(TK(L).EQ.0) GOTO 1019 91 | TRAVEL(I)=LKIND*1024+TK(L) 92 | I=I+1 93 | IF(I.EQ.1000) STOP 94 | 1018 CONTINUE 95 | 1019 TRAVEL(I-1)=-TRAVEL(I-1) 96 | GOTO 1014 97 | 98 | 1020 DO 1022 IU=1,1000 99 | READ(1,1021) KTAB(IU),ATAB(IU) 100 | 1021 FORMAT(G,A5) 101 | IF(KTAB(IU).EQ.-1)GOTO 1002 102 | 1022 CONTINUE 103 | PAUSE 'TOO MANY WORDS' 104 | 105 | 106 | C TRAVEL = NEG IF LAST THIS SOURCE + DEST*1024 + KEYWORD 107 | 108 | C COND = 1 IF LIGHT, 2 IF DON T ASK QUESTION 109 | 110 | 111 | 112 | 113 | 114 | 1100 DO 1101 I=1,100 115 | IPLACE(I)=IPLT(I) 116 | IFIXED(I)=IFIXT(I) 117 | 1101 ICHAIN(I)=0 118 | 119 | DO 1102 I=1,300 120 | COND(I)=0 121 | ABB(I)=0 122 | 1102 IOBJ(I)=0 123 | DO 1103 I=1,10 124 | 1103 COND(I)=1 125 | COND(16)=2 126 | COND(20)=2 127 | COND(21)=2 128 | COND(22)=2 129 | COND(23)=2 130 | COND(24)=2 131 | COND(25)=2 132 | COND(26)=2 133 | COND(31)=2 134 | COND(32)=2 135 | COND(79)=2 136 | 137 | DO 1107 I=1,100 138 | KTEM=IPLACE(I) 139 | IF(KTEM.EQ.0)GOTO 1107 140 | IF(IOBJ(KTEM).NE.0) GOTO 1104 141 | IOBJ(KTEM)=I 142 | GO TO 1107 143 | 1104 KTEM=IOBJ(KTEM) 144 | 1105 IF(ICHAIN(KTEM).NE.0) GOTO 1106 145 | ICHAIN(KTEM)=I 146 | GOTO 1107 147 | 1106 KTEM=ICHAIN(KTEM) 148 | GOTO 1105 149 | 1107 CONTINUE 150 | IDWARF=0 151 | IFIRST=1 152 | IWEST=0 153 | ILONG=1 154 | IDETAL=0 155 | PAUSE 'INIT DONE' 156 | 157 | 158 | 159 | 1 CALL YES(65,1,0,YEA) 160 | L=1 161 | LOC=1 162 | 2 DO 73 I=1,3 163 | IF(ODLOC(I).NE.L.OR.DSEEN(I).EQ.0)GOTO 73 164 | L=LOC 165 | CALL SPEAK(2) 166 | GOTO 74 167 | 73 CONTINUE 168 | 74 LOC=L 169 | 170 | C DWARF STUFF 171 | 172 | IF(IDWARF.NE.0) GOTO 60 173 | IF(LOC.EQ.15) IDWARF=1 174 | GOTO 71 175 | 60 IF(IDWARF.NE.1)GOTO 63 176 | IF(RAN(QZ).GT.0.05) GOTO 71 177 | IDWARF=2 178 | DO 61 I=1,3 179 | DLOC(I)=0 180 | ODLOC(I)=0 181 | 61 DSEEN(I)=0 182 | CALL SPEAK(3) 183 | ICHAIN(AXE)=IOBJ(LOC) 184 | IOBJ(LOC)=AXE 185 | IPLACE(AXE)=LOC 186 | GOTO 71 187 | 188 | 63 IDWARF=IDWARF+1 189 | ATTACK=0 190 | DTOT=0 191 | STICK=0 192 | DO 66 I=1,3 193 | IF(2*I+IDWARF.LT.8)GOTO 66 194 | IF(2*I+IDWARF.GT.23.AND.DSEEN(I).EQ.0)GOTO 66 195 | ODLOC(I)=DLOC(I) 196 | IF(DSEEN(I).NE.0.AND.LOC.GT.14)GOTO 65 197 | DLOC(I)=DTRAV(I*2+IDWARF-8) 198 | DSEEN(I)=0 199 | IF(DLOC(I).NE.LOC.AND.ODLOC(I).NE.LOC) GOTO 66 200 | 65 DSEEN(I)=1 201 | DLOC(I)=LOC 202 | DTOT=DTOT+1 203 | IF(ODLOC(I).NE.DLOC(I)) GOTO 66 204 | ATTACK=ATTACK+1 205 | IF(RAN(QZ).LT.0.1) STICK=STICK+1 206 | 66 CONTINUE 207 | IF(DTOT.EQ.0) GOTO 71 208 | IF(DTOT.EQ.1)GOTO 75 209 | TYPE 67,DTOT 210 | 67 FORMAT(' THERE ARE ',I2,' THREATENING LITTLE DWARVES IN THE 211 | 1 ROOM WITH YOU.',/) 212 | GOTO 77 213 | 75 CALL SPEAK(4) 214 | 77 IF(ATTACK.EQ.0)GOTO 71 215 | IF(ATTACK.EQ.1)GOTO 79 216 | TYPE 78,ATTACK 217 | 78 FORMAT(' ',I2,' OF THEM THROW KNIVES AT YOU!',/) 218 | GOTO 81 219 | 79 CALL SPEAK(5) 220 | CALL SPEAK(52+STICK) 221 | GOTO(71,83)(STICK+1) 222 | 223 | 81 IF(STICK.EQ.0) GOTO 69 224 | IF(STICK.EQ.1)GOTO 82 225 | TYPE 68,STICK 226 | 68 FORMAT(' ',I2,' OF THEM GET YOU.',/) 227 | GOTO 83 228 | 82 CALL SPEAK(6) 229 | 83 PAUSE 'GAMES OVER' 230 | GOTO 71 231 | 69 CALL SPEAK(7) 232 | 233 | C PLACE DESCRIPTOR 234 | 235 | 236 | 237 | 71 KK=STEXT(L) 238 | IF(ABB(L).EQ.0.OR.KK.EQ.0)KK=LTEXT(L) 239 | IF(KK.EQ.0) GOTO 7 240 | 4 TYPE 5,(LLINE(KK,JJ),JJ=3,LLINE(KK,2)) 241 | 5 FORMAT(20A5) 242 | KK=KK+1 243 | IF(LLINE(KK-1,1).NE.0) GOTO 4 244 | TYPE 6 245 | 6 FORMAT(/) 246 | 7 IF(COND(L).EQ.2)GOTO 8 247 | IF(LOC.EQ.33.AND.RAN(QZ).LT.0.25)CALL SPEAK(8) 248 | J=L 249 | GOTO 2000 250 | 251 | C GO GET A NEW LOCATION 252 | 253 | 8 KK=KEY(LOC) 254 | IF(KK.EQ.0)GOTO 19 255 | IF(K.EQ.57)GOTO 32 256 | IF(K.EQ.67)GOTO 40 257 | IF(K.EQ.8)GOTO 12 258 | LOLD=L 259 | 9 LL=TRAVEL(KK) 260 | IF(LL.LT.0) LL=-LL 261 | IF(1.EQ.MOD(LL,1024))GOTO 10 262 | IF(K.EQ.MOD(LL,1024))GOTO 10 263 | IF(TRAVEL(KK).LT.0)GOTO 11 264 | KK=KK+1 265 | GOTO 9 266 | 12 TEMP=LOLD 267 | LOLD=L 268 | L=TEMP 269 | GOTO 21 270 | 10 L=LL/1024 271 | GOTO 21 272 | 11 JSPK=12 273 | IF(K.GE.43.AND.K.LE.46)JSPK=9 274 | IF(K.EQ.29.OR.K.EQ.30)JSPK=9 275 | IF(K.EQ.7.OR.K.EQ.8.OR.K.EQ.36.OR.K.EQ.37.OR.K.EQ.68) 276 | 1 JSPK=10 277 | IF(K.EQ.11.OR.K.EQ.19)JSPK=11 278 | IF(JVERB.EQ.1)JSPK=59 279 | IF(K.EQ.48)JSPK=42 280 | IF(K.EQ.17)JSPK=80 281 | CALL SPEAK(JSPK) 282 | GOTO 2 283 | 19 CALL SPEAK(13) 284 | L=LOC 285 | IF(IFIRST.EQ.0) CALL SPEAK(14) 286 | 21 IF(L.LT.300)GOTO 2 287 | IL=L-300+1 288 | GOTO(22,23,24,25,26,31,27,28,29,30,33,34,36,37)IL 289 | GOTO 2 290 | 291 | 22 L=6 292 | IF(RAN(QZ).GT.0.5) L=5 293 | GOTO 2 294 | 23 L=23 295 | IF(PROP(GRATE).NE.0) L=9 296 | GOTO 2 297 | 24 L=9 298 | IF(PROP(GRATE).NE.0)L=8 299 | GOTO 2 300 | 25 L=20 301 | IF(IPLACE(NUGGET).NE.-1)L=15 302 | GOTO 2 303 | 26 L=22 304 | IF(IPLACE(NUGGET).NE.-1) L=14 305 | GOTO 2 306 | 27 L=27 307 | IF(PROP(12).EQ.0)L=31 308 | GOTO 2 309 | 28 L=28 310 | IF(PROP(SNAKE).EQ.0)L=32 311 | GOTO 2 312 | 29 L=29 313 | IF(PROP(SNAKE).EQ.0) L=32 314 | GOTO 2 315 | 30 L=30 316 | IF(PROP(SNAKE).EQ.0) L=32 317 | GOTO 2 318 | 31 PAUSE 'GAME IS OVER' 319 | GOTO 1100 320 | 32 IF(IDETAL.LT.3)CALL SPEAK(15) 321 | IDETAL=IDETAL+1 322 | L=LOC 323 | ABB(L)=0 324 | GOTO 2 325 | 33 L=8 326 | IF(PROP(GRATE).EQ.0) L=9 327 | GOTO 2 328 | 34 IF(RAN(QZ).GT.0.2)GOTO 35 329 | L=68 330 | GOTO 2 331 | 35 L=65 332 | 38 CALL SPEAK(56) 333 | GOTO 2 334 | 36 IF(RAN(QZ).GT.0.2)GOTO 35 335 | L=39 336 | IF(RAN(QZ).GT.0.5)L=70 337 | GOTO 2 338 | 37 L=66 339 | IF(RAN(QZ).GT.0.4)GOTO 38 340 | L=71 341 | IF(RAN(QZ).GT.0.25)L=72 342 | GOTO 2 343 | 39 L=66 344 | IF(RAN(QZ).GT.0.2)GOTO 38 345 | L=77 346 | GOTO 2 347 | 40 IF(LOC.LT.8)CALL SPEAK(57) 348 | IF(LOC.GE.8)CALL SPEAK(58) 349 | L=LOC 350 | GOTO 2 351 | 352 | 353 | 354 | C DO NEXT INPUT 355 | 356 | 357 | 2000 LTRUBL=0 358 | LOC=J 359 | ABB(J)=MOD((ABB(J)+1),5) 360 | IDARK=0 361 | IF(MOD(COND(J),2).EQ.1) GOTO 2003 362 | IF((IPLACE(2).NE.J).AND.(IPLACE(2).NE.-1)) GOTO 2001 363 | IF(PROP(2).EQ.1)GOTO 2003 364 | 2001 CALL SPEAK(16) 365 | IDARK=1 366 | 367 | 368 | 2003 I=IOBJ(J) 369 | 2004 IF(I.EQ.0) GOTO 2011 370 | IF(((I.EQ.6).OR.(I.EQ.9)).AND.(IPLACE(10).EQ.-1))GOTO 2008 371 | ILK=I 372 | IF(PROP(I).NE.0) ILK=I+100 373 | KK=BTEXT(ILK) 374 | IF(KK.EQ.0) GOTO 2008 375 | 2005 TYPE 2006,(LLINE(KK,JJ),JJ=3,LLINE(KK,2)) 376 | 2006 FORMAT(20A5) 377 | KK=KK+1 378 | IF(LLINE(KK-1,1).NE.0) GOTO 2005 379 | TYPE 2007 380 | 2007 FORMAT(/) 381 | 2008 I=ICHAIN(I) 382 | GOTO 2004 383 | 384 | 385 | 386 | C K=1 MEANS ANY INPUT 387 | 388 | 389 | 2012 A=WD2 390 | B=' ' 391 | TWOWDS=0 392 | GOTO 2021 393 | 394 | 2009 K=54 395 | 2010 JSPK=K 396 | 5200 CALL SPEAK(JSPK) 397 | 398 | 2011 JVERB=0 399 | JOBJ=0 400 | TWOWDS=0 401 | 402 | 2020 CALL GETIN(TWOWDS,A,WD2,B) 403 | K=70 404 | IF(A.EQ.'ENTER'.AND.(WD2.EQ.'STREA'.OR.WD2.EQ.'WATER'))GOTO 2010 405 | IF(A.EQ.'ENTER'.AND.TWOWDS.NE.0)GOTO 2012 406 | 2021 IF(A.NE.'WEST')GOTO 2023 407 | IWEST=IWEST+1 408 | IF(IWEST.NE.10)GOTO 2023 409 | CALL SPEAK(17) 410 | 2023 DO 2024 I=1,1000 411 | IF(KTAB(I).EQ.-1)GOTO 3000 412 | IF(ATAB(I).EQ.A)GOTO 2025 413 | 2024 CONTINUE 414 | PAUSE 'ERROR 6' 415 | 2025 K=MOD(KTAB(I),1000) 416 | KQ=KTAB(I)/1000+1 417 | GOTO (5014,5000,2026,2010)KQ 418 | PAUSE 'NO NO' 419 | 2026 JVERB=K 420 | JSPK=JSPKT(JVERB) 421 | IF(TWOWDS.NE.0)GOTO 2028 422 | IF(JOBJ.EQ.0)GOTO 2036 423 | 2027 GOTO(9000,5066,3000,5031,2009,5031,9404,9406,5081,5200, 424 | 1 5200,5300,5506,5502,5504,5505)JVERB 425 | PAUSE 'ERROR 5' 426 | 427 | 428 | 2028 A=WD2 429 | B=' ' 430 | TWOWDS=0 431 | GOTO 2023 432 | 433 | 3000 JSPK=60 434 | IF(RAN(QZ).GT.0.8)JSPK=61 435 | IF(RAN(QZ).GT.0.8)JSPK=13 436 | CALL SPEAK(JSPK) 437 | LTRUBL=LTRUBL+1 438 | IF(LTRUBL.NE.3)GOTO 2020 439 | IF(J.NE.13.OR.IPLACE(7).NE.13.OR.IPLACE(5).NE.-1)GOTO 2032 440 | CALL YES(18,19,54,YEA) 441 | GOTO 2033 442 | 2032 IF(J.NE.19.OR.PROP(11).NE.0.OR.IPLACE(7).EQ.-1)GOTO 2034 443 | CALL YES(20,21,54,YEA) 444 | GOTO 2033 445 | 2034 IF(J.NE.8.OR.PROP(GRATE).NE.0)GOTO 2035 446 | CALL YES(62,63,54,YEA) 447 | 2033 IF(YEA.EQ.0)GOTO 2011 448 | GOTO 2020 449 | 2035 IF(IPLACE(5).NE.J.AND.IPLACE(5).NE.-1)GOTO 2020 450 | IF(JOBJ.NE.5)GOTO 2020 451 | CALL SPEAK(22) 452 | GOTO 2020 453 | 454 | 455 | 2036 GOTO(2037,5062,5062,9403,2009,9403,9404,9406,5062,5062, 456 | 1 5200,5300,5062,5062,5062,5062)JVERB 457 | PAUSE 'OOPS' 458 | 2037 IF((IOBJ(J).EQ.0).OR.(ICHAIN(IOBJ(J)).NE.0)) GOTO 5062 459 | DO 5312 I=1,3 460 | IF(DSEEN(I).NE.0)GOTO 5062 461 | 5312 CONTINUE 462 | JOBJ=IOBJ(J) 463 | GOTO 2027 464 | 5062 IF(B.NE.' ')GOTO 5333 465 | TYPE 5063,A 466 | 5063 FORMAT(' ',A5,' WHAT?',/) 467 | GOTO 2020 468 | 469 | 5333 TYPE 5334,A,B 470 | 5334 FORMAT(' ',2A5,' WHAT?',/) 471 | GOTO 2020 472 | 5014 IF(IDARK.EQ.0) GOTO 8 473 | 474 | IF(RAN(QZ).GT.0.25) GOTO 8 475 | 5017 CALL SPEAK(23) 476 | PAUSE 'GAME IS OVER' 477 | GOTO 2011 478 | 479 | 480 | 481 | 5000 JOBJ=K 482 | IF(TWOWDS.NE.0)GOTO 2028 483 | IF((J.EQ.IPLACE(K)).OR.(IPLACE(K).EQ.-1)) GOTO 5004 484 | IF(K.NE.GRATE)GOTO 502 485 | IF((J.EQ.1).OR.(J.EQ.4).OR.(J.EQ.7))GOTO 5098 486 | IF((J.GT.9).AND.(J.LT.15))GOTO 5097 487 | 502 IF(B.NE.' ')GOTO 5316 488 | TYPE 5005,A 489 | 5005 FORMAT(' I SEE NO ',A5,' HERE.',/) 490 | GOTO 2011 491 | 5316 TYPE 5317,A,B 492 | 5317 FORMAT(' I SEE NO ',2A5,' HERE.'/) 493 | GOTO 2011 494 | 5098 K=49 495 | GOTO 5014 496 | 5097 K=50 497 | GOTO 5014 498 | 5004 JOBJ=K 499 | IF(JVERB.NE.0)GOTO 2027 500 | 501 | 502 | 5064 IF(B.NE.' ')GOTO 5314 503 | TYPE 5001,A 504 | 5001 FORMAT(' WHAT DO YOU WANT TO DO WITH THE ',A5,'?',/) 505 | GOTO 2020 506 | 5314 TYPE 5315,A,B 507 | 5315 FORMAT(' WHAT DO YOU WANT TO DO WITH THE ',2A5,'?',/) 508 | GOTO 2020 509 | 510 | C CARRY 511 | 512 | 9000 IF(JOBJ.EQ.18)GOTO 2009 513 | IF(IPLACE(JOBJ).NE.J) GOTO 5200 514 | 9001 IF(IFIXED(JOBJ).EQ.0)GOTO 9002 515 | CALL SPEAK(25) 516 | GOTO 2011 517 | 9002 IF(JOBJ.NE.BIRD)GOTO 9004 518 | IF(IPLACE(ROD).NE.-1)GOTO 9003 519 | CALL SPEAK(26) 520 | GOTO 2011 521 | 9003 IF((IPLACE(4).EQ.-1).OR.(IPLACE(4).EQ.J)) GOTO 9004 522 | CALL SPEAK(27) 523 | GOTO 2011 524 | 9004 IPLACE(JOBJ)=-1 525 | 9005 IF(IOBJ(J).NE.JOBJ) GOTO 9006 526 | IOBJ(J)=ICHAIN(JOBJ) 527 | GOTO 2009 528 | 9006 ITEMP=IOBJ(J) 529 | 9007 IF(ICHAIN(ITEMP).EQ.(JOBJ)) GOTO 9008 530 | ITEMP=ICHAIN(ITEMP) 531 | GOTO 9007 532 | 9008 ICHAIN(ITEMP)=ICHAIN(JOBJ) 533 | GOTO 2009 534 | 535 | 536 | C LOCK, UNLOCK, NO OBJECT YET 537 | 538 | 9403 IF((J.EQ.8).OR.(J.EQ.9))GOTO 5105 539 | 5032 CALL SPEAK(28) 540 | GOTO 2011 541 | 5105 JOBJ=GRATE 542 | GOTO 2027 543 | 544 | C DISCARD OBJECT 545 | 546 | 5066 IF(JOBJ.EQ.18)GOTO 2009 547 | IF(IPLACE(JOBJ).NE.-1) GOTO 5200 548 | 5012 IF((JOBJ.NE.BIRD).OR.(J.NE.19).OR.(PROP(11).EQ.1))GOTO 9401 549 | CALL SPEAK(30) 550 | PROP(11)=1 551 | 5160 ICHAIN(JOBJ)=IOBJ(J) 552 | IOBJ(J)=JOBJ 553 | IPLACE(JOBJ)=J 554 | GOTO 2011 555 | 556 | 9401 CALL SPEAK(54) 557 | GOTO 5160 558 | 559 | C LOCK,UNLOCK OBJECT 560 | 561 | 5031 IF(IPLACE(KEYS).NE.-1.AND.IPLACE(KEYS).NE.J)GOTO 5200 562 | IF(JOBJ.NE.4)GOTO 5102 563 | CALL SPEAK(32) 564 | GOTO 2011 565 | 5102 IF(JOBJ.NE.KEYS)GOTO 5104 566 | CALL SPEAK(55) 567 | GOTO 2011 568 | 5104 IF(JOBJ.EQ.GRATE)GOTO 5107 569 | CALL SPEAK(33) 570 | GOTO 2011 571 | 5107 IF(JVERB.EQ.4) GOTO 5033 572 | IF(PROP(GRATE).NE.0)GOTO 5034 573 | CALL SPEAK(34) 574 | GOTO 2011 575 | 5034 CALL SPEAK(35) 576 | PROP(GRATE)=0 577 | PROP(8)=0 578 | GOTO 2011 579 | 5033 IF(PROP(GRATE).EQ.0)GOTO 5109 580 | CALL SPEAK(36) 581 | GOTO 2011 582 | 5109 CALL SPEAK(37) 583 | PROP(GRATE)=1 584 | PROP(8)=1 585 | GOTO 2011 586 | 587 | 588 | 589 | C LIGHT LAMP 590 | 591 | 9404 IF((IPLACE(2).NE.J).AND.(IPLACE(2).NE.-1))GOTO 5200 592 | PROP(2)=1 593 | IDARK=0 594 | CALL SPEAK(39) 595 | GOTO 2011 596 | 597 | C LAMP OFF 598 | 599 | 9406 IF((IPLACE(2).NE.J).AND.(IPLACE(2).NE.-1)) GOTO 5200 600 | PROP(2)=0 601 | CALL SPEAK(40) 602 | GOTO 2011 603 | 604 | C STRIKE 605 | 606 | 5081 IF(JOBJ.NE.12)GOTO 5200 607 | PROP(12)=1 608 | GOTO 2003 609 | 610 | C ATTACK 611 | 612 | 5300 DO 5313 ID=1,3 613 | IID=ID 614 | IF(DSEEN(ID).NE.0)GOTO 5307 615 | 5313 CONTINUE 616 | IF(JOBJ.EQ.0)GOTO 5062 617 | IF(JOBJ.EQ.SNAKE) GOTO 5200 618 | IF(JOBJ.EQ.BIRD) GOTO 5302 619 | CALL SPEAK(44) 620 | GOTO 2011 621 | 5302 CALL SPEAK(45) 622 | IPLACE(JOBJ)=300 623 | GOTO 9005 624 | 625 | 5307 IF(RAN(QZ).GT.0.4) GOTO 5309 626 | DSEEN(IID)=0 627 | ODLOC(IID)=0 628 | DLOC(IID)=0 629 | CALL SPEAK(47) 630 | GOTO 5311 631 | 5309 CALL SPEAK(48) 632 | 5311 K=21 633 | GOTO 5014 634 | 635 | C EAT 636 | 637 | 5502 IF((IPLACE(FOOD).NE.J.AND.IPLACE(FOOD).NE.-1).OR.PROP(FOOD).NE.0 638 | 1 .OR.JOBJ.NE.FOOD)GOTO 5200 639 | PROP(FOOD)=1 640 | 5501 JSPK=72 641 | GOTO 5200 642 | 643 | C DRINK 644 | 645 | 5504 IF((IPLACE(WATER).NE.J.AND.IPLACE(WATER).NE.-1) 646 | 1 .OR.PROP(WATER).NE.0.OR.JOBJ.NE.WATER) GOTO 5200 647 | PROP(WATER)=1 648 | JSPK=74 649 | GOTO 5200 650 | 651 | C RUB 652 | 653 | 5505 IF(JOBJ.NE.LAMP)JSPK=76 654 | GOTO 5200 655 | 656 | C POUR 657 | 658 | 5506 IF(JOBJ.NE.WATER)JSPK=78 659 | PROP(WATER)=1 660 | GOTO 5200 661 | 662 | 663 | 664 | END 665 | 666 | 667 | SUBROUTINE SPEAK(IT) 668 | IMPLICIT INTEGER(A-Z) 669 | COMMON RTEXT,LLINE 670 | DIMENSION RTEXT(100),LLINE(1000,22) 671 | 672 | KKT=RTEXT(IT) 673 | IF(KKT.EQ.0)RETURN 674 | 999 TYPE 998, (LLINE(KKT,JJT),JJT=3,LLINE(KKT,2)) 675 | 998 FORMAT(20A5) 676 | KKT=KKT+1 677 | IF(LLINE(KKT-1,1).NE.0)GOTO 999 678 | 997 TYPE 996 679 | 996 FORMAT(/) 680 | RETURN 681 | END 682 | 683 | 684 | SUBROUTINE GETIN(TWOW,B,C,D) 685 | IMPLICIT INTEGER(A-Z) 686 | DIMENSION A(5),M2(6) 687 | DATA M2/"4000000000,"20000000,"100000,"400,"2,0/ 688 | 6 ACCEPT 1,(A(I), I=1,4) 689 | 1 FORMAT(4A5) 690 | TWOW=0 691 | S=0 692 | B=A(1) 693 | DO 2 J=1,4 694 | DO 2 K=1,5 695 | MASK1="774000000000 696 | IF(K.NE.1) MASK1="177*M2(K) 697 | IF(((A(J).XOR."201004020100).AND.MASK1).EQ.0)GOTO 3 698 | IF(S.EQ.0) GOTO 2 699 | TWOW=1 700 | CALL SHIFT(A(J),7*(K-1),XX) 701 | CALL SHIFT(A(J+1),7*(K-6),YY) 702 | MASK=-M2(6-K) 703 | C=(XX.AND.MASK)+(YY.AND.(-2-MASK)) 704 | GOTO 4 705 | 3 IF(S.EQ.1) GOTO 2 706 | S=1 707 | IF(J.EQ.1) B=(B.AND.-M2(K)).OR.("201004020100.AND. 708 | 1 (-M2(K).XOR.-1)) 709 | 2 CONTINUE 710 | 4 D=A(2) 711 | RETURN 712 | END 713 | 714 | SUBROUTINE YES(X,Y,Z,YEA) 715 | IMPLICIT INTEGER(A-Z) 716 | CALL SPEAK(X) 717 | CALL GETIN(JUNK,IA1,JUNK,IB1) 718 | IF(IA1.EQ.'NO'.OR.IA1.EQ.'N') GOTO 1 719 | YEA=1 720 | IF(Y.NE.0) CALL SPEAK(Y) 721 | RETURN 722 | 1 YEA=0 723 | IF(Z.NE.0)CALL SPEAK(Z) 724 | RETURN 725 | END 726 | 727 | 728 | 729 | SUBROUTINE SHIFT (VAL,DIST,RES) 730 | IMPLICIT INTEGER (A-Z) 731 | RES=VAL 732 | IF(DIST)10,20,30 733 | 10 IDIST=-DIST 734 | DO 11 I=1,IDIST 735 | J = 0 736 | IF (RES.LT.0) J="200000000000 737 | 11 RES = ((RES.AND."377777777777)/2) + J 738 | 20 RETURN 739 | 30 DO 31 I=1,DIST 740 | j = 0 741 | IF ((RES.AND."200000000000).NE.0) J="400000000000 742 | 31 RES = (RES.AND."177777777777)*2 + J 743 | RETURN 744 | END 745 | -------------------------------------------------------------------------------- /walkthroughs/walkthrough1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |10 | This is not claimed to be an optimized walkthrough, but it comes reasonably 11 | close and, if you don't get killed by a little dwarf and if the pirate shows 12 | up before you finish, you can get all the points. 13 |
14 |15 | When you get well into the cave you will encounter some nasty dwarves. The 16 | first one simply tosses an axe at you and runs away. The axe misses. Get the 17 | axe; you'll need it when you see the dwarves again. On your second encounter 18 | with the dwarves, you'll see one or more, who will throw knives at you. The 19 | first salvo always misses. Toss the axe at a dwarf, fetch it again, and keep 20 | tossing until you have killed all the dwarves present. You'll need to do this 21 | each time a dwarf appears. If you don't, you'll get killed. (Be sure to 22 | retrieve the axe after you have killed the last dwarf that is with you.) 23 |
24 |25 | Don't worry if a pirate appears and steals your treasures from you. You'll 26 | find them again later on. 27 |
28 |29 | Walkthrough: Answer "no" when you are asked if you want instructions. 30 |
31 |32 | You are standing in front of a building. Enter the commands as 33 | listed below (first column only; the second column shows what the command 34 | does or where it takes you), except deal with dwarves whenever they appear. 35 |
36 |37 |
38 | 1. in inside building 39 | 2. get lamp 40 | 3. on turn on lamp 41 | 4. plugh y2 42 | 5. plover plover room 43 | 6. ne dark room 44 | 7. get pyramid 45 | 8. s plover room 46 | 9. plover y2 47 | 10. s low n/s passage 48 | 11. get silver 49 | 12. n y2 50 | 13. plugh inside building 51 | 14. drop pyramid 52 | 15. drop silver 53 | 16. get water in bottle 54 | 17. plugh y2 55 | 18. s low n/s passage 56 | 19. d dirty passage 57 | 20. bedquilt bedquilt 58 | 21. slab slab room 59 | 22. s west end of twopit room 60 | 23. d west pit 61 | 24. water plant 62 | 25. u west end of twopit room 63 | 26. w slab room 64 | 27. u secret n/s canyon 65 | 28. reservoir reservoir 66 | 29. get water 67 | 30. s mirror canyon 68 | 31. s secret n/s canyon 69 | 32. d slab room 70 | 33. s west end of twopit room 71 | 34. d west pit 72 | 35. water plant 73 | 36. u west end of twopit room 74 | 37. e east end of twopit room 75 | 38. d east pit 76 | 39. get oil 77 | 40. u east end of twopit room 78 | 41. w west end of twopit room 79 | 42. d west pit 80 | 43. climb narrow corridor 81 | 44. w giant room 82 | 45. n immense n/s passage (iron door) 83 | 46. oil door 84 | 47. drop bottle you no longer need it 85 | 48. n waterfall cavern 86 | 49. get trident 87 | 50. w steep incline 88 | 51. d large low room 89 | 52. se oriental room 90 | 53. n misty cavern 91 | 54. w alcove 92 | 55. drop trident to get through narrow passage 93 | 56. drop lamp 94 | 57. drop axe (if carrying it) 95 | 58. e plover room 96 | 59. get emerald 97 | 60. w alcove 98 | 61. get trident 99 | 62. get lamp 100 | 63. get axe (if here) 101 | 64. nw misty cavern 102 | 65. s oriental room 103 | 66. get vase 104 | 67. se swiss cheese 105 | 68. e soft room 106 | 69. get pillow needed for vase 107 | 70. w swiss cheese 108 | 71. ne bedquilt 109 | 72. e complex junction 110 | 73. n shell room 111 | 74. open clam with trident 112 | 75. d well, it will roll down, won't it? 113 | 76. d 114 | 77. get pearl 115 | 78. u 116 | 79. u shell room 117 | 80. s complex junction 118 | 81. u dusty rock room 119 | 82. e dirty passage 120 | 83. u low n/s 121 | 84. n y2 122 | 85. plugh inside building 123 | 86. drop pillow pillow first, then vase 124 | 87. drop vase 125 | 88. drop trident 126 | 89. drop pearl 127 | 90. drop emerald 128 | 91. xyzzy debris room 129 | 92. get rod 130 | 93. e cobble crawl 131 | 94. get cage 132 | 95. pit top of small pit 133 | 96. e bird chamber 134 | 97. drop rod rod scares bird 135 | 98. get bird 136 | 99. get rod 137 | 100. w top of small pit 138 | 101. d hall of mists 139 | 102. n hall of mt king 140 | 103. free bird bird drives away snake 141 | 104. drop cage no longer needed 142 | 105. sw secret e/w canyon 143 | 106. w secret canyon 144 | 107. kill dragon no weapon needed 145 | 108. yes yes, with bare hands 146 | 109. get rug 147 | 110. e secret e/w canyon 148 | 111. e hall of mt king 149 | 112. w west side chamber 150 | 113. get coins 151 | 114. e hall of mt king 152 | 115. s south side chamber 153 | 116. get jewelry 154 | 117. n hall of mt king 155 | 118. e hall of mists 156 | 119. w east bank of fissure 157 | 120. wave rod create bridge 158 | 121. drop rod no longer needed 159 | 122. w west bank of fissure 160 | 123. get diamonds 161 | 124. e east bank of fissure 162 | 125. e hall of mists 163 | 126. s nugget room 164 | 127. get gold 165 | 128. n hall of mists 166 | 129. y2 rock jumble (not y2) 167 | 130. d y2 168 | 131. plugh inside building 169 | 132. drop rug 170 | 133. drop coins 171 | 134. drop jewelry 172 | 135. drop diamonds 173 | 136. drop gold 174 | 137. get food for bear 175 | 138. get keys for locked chain 176 | 139. plugh y2 177 | 140. s low n/s 178 | 141. d dirty passage 179 | 142. bedquilt bedquilt 180 | 143. w swiss cheese 181 | 144. w east end of twopit room 182 | 145. w west end of twopit room 183 | 146. d west pit 184 | 147. climb narrow corridor 185 | 148. w giant room 186 | 149. get eggs for troll 187 | 150. n immense n/s 188 | 151. n waterfall cavern 189 | 152. w steep incline 190 | 153. d large low room 191 | 154. sw sloping corridor 192 | 155. u s/w side of chasm 193 | 156. toss eggs pay troll 194 | 157. ne n/e side of chasm 195 | 158. ne corridor 196 | 159. barren outside barren room 197 | 160. in bear in room 198 | 161. feed bear calm him a little 199 | 162. unlock chain with key, of course 200 | 163. get chain 201 | 164. get bear to scare troll 202 | 165. w outside barren room 203 | 166. fork fork in path 204 | 167. ne warm walls 205 | 168. e boulders 206 | 169. get spices 207 | 170. fork fork in path 208 | 171. w corridor 209 | 172. w n/e side of chasm 210 | 173. sw troll appears again 211 | 174. free bear scare off troll 212 | 175. sw s/w side of chasm 213 | 176. sw sloping corridor 214 | 177. d large low room 215 | 178. se oriental room 216 | 179. se swiss cheese 217 | 180. w east end of twopit room 218 | 181. w west end of twopit room 219 | 182. d west pit 220 | 183. climb narrow corridor 221 | 184. w giant room 222 | 185. fee 223 | 186. fie 224 | 187. foe 225 | 188. foo that's what it says 226 | 189. get eggs magic 227 | 190. s narrow corridor 228 | 191. d west pit 229 | 192. u west end of twopit room 230 | 193. w slab room 231 | 194. u secret n/s 232 | 195. s secret canyon 233 | 196. e secret e/w canyon 234 | 197. e hall of mt king 235 | 198. n low n/s 236 | 199. n y2 237 | 200. plugh inside building 238 | 201. drop spices 239 | 202. drop chain 240 | 203. drop eggs 241 | 204. plugh y2 242 | 205. s low n/s 243 | 206. s hall of mt king 244 | 207. e hall of mists 245 | 208. w east bank of fissure 246 | 209. w west bank of fissure 247 | 210. w west end hall of mists 248 | 211. s all alike maze 249 | 212. e maze 250 | 213. s maze 251 | 214. s maze 252 | 215. s maze 253 | 216. n maze 254 | 217. e maze 255 | 218. e maze 256 | 219. nw dead end 257 | 220. get chest (and anything else the pirate may have stolen) 258 | 221. se maze 259 | 222. n maze 260 | 223. d bird chamber 261 | 224. e e/w canyon 262 | 225. e debris room 263 | 226. xyzzy inside building 264 | 227. drop chest 265 | 228. plugh y2 266 | 229. s low n/s 267 | 230. d dirty passage 268 | 231. w dusty rock room 269 | 232. d complex junction 270 | 233. e anteroom 271 | 234. get magazine it's addressed to witt 272 | 235. e witt's end 273 | 236. drop magazine the elusive one point 274 | 237. Just do anything, but don't go west from here; you'll never get out that 275 | way. Any other direction will eventually (with low probability) get you 276 | out. Move around in the cave until something interesting happens. 277 | 238. sw s/w end 278 | 239. get rod this one is dynamite 279 | 240. ne n/e end 280 | 241. drop rod plant explosive 281 | 242. sw stand clear 282 | 243. blast make a hole in wall to main office 283 |284 | 285 |
286 | If all went well, you have finished with a maximum score. 287 |
288 |289 | If the pirate never appears, you probably won't make it. When you reach the 290 | dead end where the chest is supposed to be, you could backtrack (if you know 291 | how) through the maze and then forward again until he appears. If this takes 292 | too many turns your lamp batteries will wear out before the end game, and then 293 | it's tough beans. 294 |
295 | 296 | 297 | -------------------------------------------------------------------------------- /walkthroughs/walkthrough2.txt: -------------------------------------------------------------------------------- 1 | WALKTHROUGH FOR COLOSSAL CAVES ADVENTURE 2 | 3 | by Sean L. Palmer 4 | released to the public domain 5 | 6 | This is a walkthrough for the 350-point version of the Colossal Caves 7 | Adventure by Crowther and Woods. It starts from the start of the game 8 | outside the building, and is (more or less) the exact commands needed 9 | to win the game with the maximum number of points. DO NOT use this 10 | walkthrough unless you have already solved the game or are just really 11 | stuck and have exhausted all other methods of getting hints (like 12 | typing "HELP" in the game itself). This walkthrough WILL RUIN THE 13 | GAME for you if you haven't already solved it, and you'll hate yourself 14 | forever for not sticking it out on your own. Besides, winning isn't 15 | everything, and some of my favorite memories from the game are some 16 | of the clever responses it gives for trying some of the wrong ways to 17 | solve a puzzle (like try typing "kill troll" or "throw axe" at the 18 | troll sometime.) This walkthrough will NOT solve any of the versions 19 | which have more total points. It is not a 100% optimal walkthrough, 20 | and I'm sure a few improvements can be made, though it is considerably 21 | better than at least one other walkthrough I've seen (less total moves). 22 | It is also not documented very well, so you are expected to halfway 23 | know your way around, though I've put some locations down for 24 | synchronization purposes. It also assumes that you don't find the 25 | first dwarf (the one who throws the axe) before completing the first 26 | trip into the cave (else you'll have too many items to carry). It also 27 | (whew!) assumes that you will pick up the axe as soon as you see it, 28 | and kill the other dwarves you see as you see them, and retrieve the 29 | axe afterwards. It also assumes that the pirate doesn't steal any 30 | treasure until you actually get into the maze of twisty little passages, 31 | all alike, or else you'll have to modify the chest-retrieval bit to 32 | account for it. Due to these random events, and certain other ones like 33 | passages occasionally dumping you into the same room you left from, 34 | this is not an exact walkthrough, and feeding the inputs shown into 35 | the game via input redirection will NOT work (unfortunately). You have 36 | to deal with the extra events as they happen, and maybe try several 37 | times before circumstances work out and you win the game. 38 | Notice: some versions of the game do not treat 'get' the same as 'take', 39 | and will complain at you if you type 'get x', but will accept 'take x'. 40 | In this case, replace all occurrences of 'get' in the walkthrough with 41 | 'take' and all will be well. 42 | 43 | Now, without further ado, 'You are at the end of a road, outside a 44 | small building...' 45 | 46 | /////////////////////////////////////////////////////////////////////////////// 47 | e //end of road 48 | get lamp //can hold maximum of 7 items 49 | xyzzy 50 | on lamp 51 | e //we intentionally leave the rod there for now 52 | get cage 53 | pit 54 | e 55 | get bird 56 | w 57 | d 58 | s 59 | get gold 60 | n 61 | n //this should bring you to Hall of Mt. King 62 | free bird 63 | drop cage 64 | s 65 | get jewel 66 | n 67 | w 68 | get coins 69 | e 70 | n 71 | get silver 72 | n //this should bring you to Y2 73 | plover 74 | ne 75 | get pyramid 76 | s 77 | plover 78 | plugh //if any dwarves have shown up already, restart! 79 | drop pyramid 80 | drop coins 81 | drop jewel 82 | drop silver 83 | drop gold 84 | get bottle 85 | get food 86 | get keys 87 | plugh 88 | s //now get axe, when you see it 89 | d 90 | bedquilt 91 | slab 92 | s 93 | d 94 | pour water 95 | u 96 | w 97 | u 98 | reservoir 99 | get water 100 | s 101 | s 102 | d 103 | s 104 | d 105 | pour water //should be at bottom of west pit now 106 | u 107 | e 108 | d 109 | get oil 110 | u 111 | w 112 | d 113 | climb 114 | w 115 | get eggs 116 | n 117 | oil door 118 | n 119 | get trident 120 | w 121 | d 122 | drop bottle 123 | sw 124 | u //should be at sw side of chasm now 125 | toss eggs 126 | cross 127 | ne 128 | barren 129 | e 130 | feed bear 131 | open chain 132 | get chain 133 | get bear 134 | w 135 | fork 136 | ne 137 | e 138 | get spice 139 | fork 140 | w 141 | w 142 | cross //should be at ne side of chasm now 143 | free bear 144 | cross 145 | sw 146 | d 147 | drop keys 148 | bedquilt 149 | e 150 | n 151 | open clam 152 | d 153 | d 154 | get pearl 155 | u 156 | u 157 | s 158 | u 159 | e 160 | u 161 | n //should now be at Y2 again 162 | plugh 163 | drop chain 164 | drop spice 165 | drop trident 166 | drop pearl 167 | plugh 168 | s 169 | d 170 | bedquilt 171 | w 172 | oriental 173 | n 174 | w //should put you in the alcove 175 | drop lamp 176 | drop axe 177 | e 178 | get emerald 179 | w 180 | get axe 181 | get lamp 182 | nw 183 | s 184 | get vase 185 | se 186 | e 187 | get pillow 188 | w 189 | w 190 | w 191 | d 192 | climb 193 | w //should be in Giant Room now 194 | fee 195 | fie 196 | foe 197 | foo 198 | get eggs 199 | s 200 | d 201 | u 202 | w 203 | u 204 | s 205 | kill dragon 206 | yes 207 | get rug 208 | e 209 | e 210 | n 211 | n //should be at Y2 again 212 | plugh 213 | drop rug 214 | drop pillow 215 | drop vase 216 | drop emerald 217 | drop eggs 218 | xyzzy //now need to get a treasure stolen by the pirate if you haven't already 219 | get rod 220 | pit 221 | d 222 | w 223 | wave rod 224 | w 225 | get diamond //let him steal this (we saved it for this occasion) 226 | w //you ought to be at the west end of Hall of Mists now 227 | s //into MOTLP,AA 228 | e //hope the pirate comes while you're on the way to his lair 229 | s 230 | s 231 | s 232 | n 233 | e 234 | n 235 | e 236 | nw //into Dead end (if he hasn't shown up by now, see note 1) 237 | get chest 238 | get diamond //and any other treasures pirate stole 239 | se 240 | n 241 | d 242 | debris 243 | xyzzy 244 | drop rod 245 | drop chest 246 | drop diamond 247 | plugh 248 | s //May need to save the magazines until now. May not. 249 | d 250 | bedquilt 251 | e 252 | e 253 | get magazine 254 | e 255 | drop magazine //last point in beginner section (276) 256 | n //until you get out. See note 2 257 | //wait until the Cave closes 258 | sw 259 | get rod 260 | ne 261 | drop rod 262 | sw 263 | blast //Yay! Elves! 264 | /////////////////////////////////////////////////////////////////////////////// 265 | 266 | The other walkthrough finishes the game in about 243 moves, not counting 267 | the dwarves and waiting for the pirate and getting out of Witt's End. 268 | This finishes in around 215 moves with those same stipulations. 269 | It could probably be improved by a few moves at least. 270 | 271 | Note 1: 272 | If the pirate hasn't stolen something by now, you are basically screwed, but 273 | you can try the sequence se,n,w,w,w,e,e,w,s,n,s,s,s,n,e,n,e,nw over and over 274 | to try to find him before your lamp runs out. 275 | 276 | Note 2: 277 | Don't go west here. Keep trying N and you'll eventually get out. 278 | After moving the magazines, I recommend going somewhere with light (either 279 | by the grate or in the plover room) and waste some time until the Cave closes. 280 | --------------------------------------------------------------------------------