-#define TRUE (0==0)
-#define FALSE (0!=0)
-long ABB[186], ATAB[331], ATLOC[186], BLKLIN = TRUE, DFLAG,
+long ABB[186], ATAB[331], ATLOC[186], BLKLIN = true, DFLAG,
DLOC[7], FIXED[101], HOLDNG,
KTAB[331], *LINES, LINK[201], LNLENG, LNPOSN,
PARMS[26], PLACE[101], PTEXT[101], RTEXT[278],
SETUP = 0, TABSIZ = 330;
DLOC[7], FIXED[101], HOLDNG,
KTAB[331], *LINES, LINK[201], LNLENG, LNPOSN,
PARMS[26], PLACE[101], PTEXT[101], RTEXT[278],
SETUP = 0, TABSIZ = 330;
long ABBNUM, ACTSPK[36], AMBER, ATTACK, AXE, BACK, BATTER, BEAR, BIRD, BLOOD, BONUS,
BOTTLE, CAGE, CAVE, CAVITY, CHAIN, CHASM, CHEST, CHLOC, CHLOC2,
long ABBNUM, ACTSPK[36], AMBER, ATTACK, AXE, BACK, BATTER, BEAR, BIRD, BLOOD, BONUS,
BOTTLE, CAGE, CAVE, CAVITY, CHAIN, CHASM, CHEST, CHLOC, CHLOC2,
TRNDEX, TRNLUZ, TRNSIZ = 5, TRNVAL[6], TRNVLS, TROLL, TROLL2, TRVS,
TRVSIZ = 885, TTEXT[6], TURNS, URN, V1, V2, VASE, VEND, VERB,
VOLCAN, VRBSIZ = 35, VRSION = 25, WATER, WD1, WD1X, WD2, WD2X,
TRNDEX, TRNLUZ, TRNSIZ = 5, TRNVAL[6], TRNVLS, TROLL, TROLL2, TRVS,
TRVSIZ = 885, TTEXT[6], TURNS, URN, V1, V2, VASE, VEND, VERB,
VOLCAN, VRBSIZ = 35, VRSION = 25, WATER, WD1, WD1X, WD2, WD2X,
-/* HISTORY: ORIGINAL IDEA & 5-TREASURE VERSION (ADVENTURES) BY WILLIE CROWTHER
- * 15-TREASURE VERSION (ADVENTURE) BY DON WOODS, APRIL-JUNE 1977
- * 20-TREASURE VERSION (REV 2) BY DON WOODS, AUGUST 1978
- * ERRATA FIXED: 78/12/25 */
+/* History: Original idea & 5-treasure version (adventures) by Willie Crowther
+ * 15-treasure version (adventure) by Don Woods, April-June 1977
+ * 20-treasure version (rev 2) by Don Woods, August 1978
+ * Errata fixed: 78/12/25 */
- * CLOSED SAYS WHETHER WE'RE ALL THE WAY CLOSED
- * CLOSNG SAYS WHETHER IT'S CLOSING TIME YET
- * CLSHNT SAYS WHETHER HE'S READ THE CLUE IN THE ENDGAME
- * LMWARN SAYS WHETHER HE'S BEEN WARNED ABOUT LAMP GOING DIM
- * NOVICE SAYS WHETHER HE ASKED FOR INSTRUCTIONS AT START-UP
- * PANIC SAYS WHETHER HE'S FOUND OUT HE'S TRAPPED IN THE CAVE
- * WZDARK SAYS WHETHER THE LOC HE'S LEAVING WAS DARK */
+ * CLOSED says whether we're all the way closed
+ * CLOSNG says whether it's closing time yet
+ * CLSHNT says whether he's read the clue in the endgame
+ * LMWARN says whether he's been warned about lamp going dim
+ * NOVICE says whether he asked for instructions at start-up
+ * PANIC says whether he's found out he's trapped in the cave
+ * WZDARK says whether the loc he's leaving was dark */
-/* UNLIKE EARLIER VERSIONS, ADVENTURE IS NO LONGER RESTARTABLE. (THIS
- * LETS US GET AWAY WITH MODIFYING THINGS SUCH AS OBJSND(BIRD) WITHOUT
- * HAVING TO BE ABLE TO UNDO THE CHANGES LATER.) IF A "USED" COPY IS
- * RERUN, WE COME HERE AND TELL THE PLAYER TO RUN A FRESH COPY. */
+/* Unlike earlier versions, adventure is no longer restartable. (This
+ * lets us get away with modifying things such as OBJSND(BIRD) without
+ * having to be able to undo the changes later.) If a "used" copy is
+ * rerun, we come here and tell the player to run a fresh copy. */
-/* CAN'T LEAVE CAVE ONCE IT'S CLOSING (EXCEPT BY MAIN OFFICE). */
+ if (logfp)
+ fprintf(logfp, "seed %ld\n", seedval);
+
+ for (;;) {
+ if (!do_command(stdin))
+ break;
+ }
+ score(1);
+}
+
+static bool fallback_handler(signed char *buf)
+/* fallback handler for commands not handled by FORTRANish parser */
+{
+ long sv;
+ if (sscanf(buf, "seed %ld", &sv) == 1) {
+ set_seed(sv);
+ printf("Seed set to %ld\n", sv);
+ return true;
+ }
+ return false;
+}
+
+static bool do_command(FILE *cmdin) {
+
+/* Can't leave cave once it's closing (except by main office). */
-/* SEE IF A DWARF HAS SEEN HIM AND HAS COME FROM WHERE HE WANTS TO GO. IF SO,
- * THE DWARF'S BLOCKING HIS WAY. IF COMING FROM PLACE FORBIDDEN TO PIRATE
- * (DWARVES ROOTED IN PLACE) LET HIM GET OUT (AND ATTACKED). */
+/* See if a dwarf has seen him and has come from where he wants to go. If so,
+ * the dwarf's blocking his way. If coming from place forbidden to pirate
+ * (dwarves rooted in place) let him get out (and attacked). */
-/* FIRST OFF, DON'T LET THE DWARVES FOLLOW HIM INTO A PIT OR A WALL. ACTIVATE
- * THE WHOLE MESS THE FIRST TIME HE GETS AS FAR AS THE HALL OF MISTS (LOC 15).
- * IF NEWLOC IS FORBIDDEN TO PIRATE (IN PARTICULAR, IF IT'S BEYOND THE TROLL
- * BRIDGE), BYPASS DWARF STUFF. THAT WAY PIRATE CAN'T STEAL RETURN TOLL, AND
- * DWARVES CAN'T MEET THE BEAR. ALSO MEANS DWARVES WON'T FOLLOW HIM INTO DEAD
- * END IN MAZE, BUT C'EST LA VIE. THEY'LL WAIT FOR HIM OUTSIDE THE DEAD END. */
+/* First off, don't let the dwarves follow him into a pit or a wall. Activate
+ * the whole mess the first time he gets as far as the hall of mists (loc 15).
+ * If NEWLOC is forbidden to pirate (in particular, if it's beyond the troll
+ * bridge), bypass dwarf stuff. That way pirate can't steal return toll, and
+ * dwarves can't meet the bear. Also means dwarves won't follow him into dead
+ * end in maze, but c'est la vie. They'll wait for him outside the dead end. */
-/* WHEN WE ENCOUNTER THE FIRST DWARF, WE KILL 0, 1, OR 2 OF THE 5 DWARVES. IF
- * ANY OF THE SURVIVORS IS AT LOC, REPLACE HIM WITH THE ALTERNATE. */
+/* When we encounter the first dwarf, we kill 0, 1, or 2 of the 5 dwarves. If
+ * any of the survivors is at loc, replace him with the alternate. */
-/* THINGS ARE IN FULL SWING. MOVE EACH DWARF AT RANDOM, EXCEPT IF HE'S SEEN US
- * HE STICKS WITH US. DWARVES STAY DEEP INSIDE. IF WANDERING AT RANDOM,
- * THEY DON'T BACK UP UNLESS THERE'S NO ALTERNATIVE. IF THEY DON'T HAVE TO
- * MOVE, THEY ATTACK. AND, OF COURSE, DEAD DWARVES DON'T DO MUCH OF ANYTHING. */
+/* Things are in full swing. Move each dwarf at random, except if he's seen us
+ * he sticks with us. Dwarves stay deep inside. If wandering at random,
+ * they don't back up unless there's no alternative. If they don't have to
+ * move, they attack. And, of course, dead dwarves don't do much of anything. */
-/* THE PIRATE'S SPOTTED HIM. HE LEAVES HIM ALONE ONCE WE'VE FOUND CHEST. K
- * COUNTS IF A TREASURE IS HERE. IF NOT, AND TALLY=1 FOR AN UNSEEN CHEST, LET
- * THE PIRATE BE SPOTTED. NOTE THAT PLACE(CHEST)=0 MIGHT MEAN THAT HE'S
- * THROWN IT TO THE TROLL, BUT IN THAT CASE HE'S SEEN THE CHEST (PROP=0). */
+/* The pirate's spotted him. He leaves him alone once we've found chest. K
+ * counts if a treasure is here. If not, and tally=1 for an unseen chest, let
+ * the pirate be spotted. Note that PLACE(CHEST)=0 might mean that he's
+ * thrown it to the troll, but in that case he's seen the chest (PROP=0). */
-/* NOW WE KNOW WHAT'S HAPPENING. LET'S TELL THE POOR SUCKER ABOUT IT.
- * NOTE THAT VARIOUS OF THE "KNIFE" MESSAGES MUST HAVE SPECIFIC RELATIVE
- * POSITIONS IN THE RSPEAK DATABASE. */
+/* Now we know what's happening. Let's tell the poor sucker about it.
+ * Note that various of the "knife" messages must have specific relative
+ * positions in the RSPEAK database. */
-/* PRINT OUT DESCRIPTIONS OF OBJECTS AT THIS LOCATION. IF NOT CLOSING AND
- * PROPERTY VALUE IS NEGATIVE, TALLY OFF ANOTHER TREASURE. RUG IS SPECIAL
- * CASE; ONCE SEEN, ITS PROP IS 1 (DRAGON ON IT) TILL DRAGON IS KILLED.
- * SIMILARLY FOR CHAIN; PROP IS INITIALLY 1 (LOCKED TO BEAR). THESE HACKS
- * ARE BECAUSE PROP=0 IS NEEDED TO GET FULL SCORE. */
+/* Print out descriptions of objects at this location. If not closing and
+ * property value is negative, tally off another treasure. Rug is special
+ * case; once seen, its PROP is 1 (dragon on it) till dragon is killed.
+ * Similarly for chain; PROP is initially 1 (locked to bear). These hacks
+ * are because PROP=0 is needed to get full score. */
-/* NOTE: THERE USED TO BE A TEST HERE TO SEE WHETHER THE PLAYER HAD BLOWN IT
- * SO BADLY THAT HE COULD NEVER EVER SEE THE REMAINING TREASURES, AND IF SO
- * THE LAMP WAS ZAPPED TO 35 TURNS. BUT THE TESTS WERE TOO SIMPLE-MINDED;
- * THINGS LIKE KILLING THE BIRD BEFORE THE SNAKE WAS GONE (CAN NEVER SEE
- * JEWELRY), AND DOING IT "RIGHT" WAS HOPELESS. E.G., COULD CROSS TROLL
- * BRIDGE SEVERAL TIMES, USING UP ALL AVAILABLE TREASURES, BREAKING VASE,
- * USING COINS TO BUY BATTERIES, ETC., AND EVENTUALLY NEVER BE ABLE TO GET
- * ACROSS AGAIN. IF BOTTLE WERE LEFT ON FAR SIDE, COULD THEN NEVER GET EGGS
- * OR TRIDENT, AND THE EFFECTS PROPAGATE. SO THE WHOLE THING WAS FLUSHED.
- * ANYONE WHO MAKES SUCH A GROSS BLUNDER ISN'T LIKELY TO FIND EVERYTHING
- * ELSE ANYWAY (SO GOES THE RATIONALISATION). */
+/* Note: There used to be a test here to see whether the player had blown it
+ * so badly that he could never ever see the remaining treasures, and if so
+ * the lamp was zapped to 35 turns. But the tests were too simple-minded;
+ * things like killing the bird before the snake was gone (can never see
+ * jewelry), and doing it "right" was hopeless. E.G., could cross troll
+ * bridge several times, using up all available treasures, breaking vase,
+ * using coins to buy batteries, etc., and eventually never be able to get
+ * across again. If bottle were left on far side, could then never get eggs
+ * or trident, and the effects propagate. So the whole thing was flushed.
+ * anyone who makes such a gross blunder isn't likely to find everything
+ * else anyway (so goes the rationalisation). */
-/* CHECK IF THIS LOC IS ELIGIBLE FOR ANY HINTS. IF BEEN HERE LONG ENOUGH,
- * BRANCH TO HELP SECTION (ON LATER PAGE). HINTS ALL COME BACK HERE EVENTUALLY
- * TO FINISH THE LOOP. IGNORE "HINTS" < 4 (SPECIAL STUFF, SEE DATABASE NOTES).
+/* Check if this loc is eligible for any hints. If been here long enough,
+ * branch to help section (on later page). Hints all come back here eventually
+ * to finish the loop. Ignore "HINTS" < 4 (special stuff, see database notes).
-/* KICK THE RANDOM NUMBER GENERATOR JUST TO ADD VARIETY TO THE CHASE. ALSO,
- * IF CLOSING TIME, CHECK FOR ANY OBJECTS BEING TOTED WITH PROP < 0 AND SET
- * THE PROP TO -1-PROP. THIS WAY OBJECTS WON'T BE DESCRIBED UNTIL THEY'VE
- * BEEN PICKED UP AND PUT DOWN SEPARATE FROM THEIR RESPECTIVE PILES. DON'T
- * TICK CLOCK1 UNLESS WELL INTO CAVE (AND NOT AT Y2). */
+/* Kick the random number generator just to add variety to the chase. Also,
+ * if closing time, check for any objects being toted with PROP < 0 and set
+ * the prop to -1-PROP. This way objects won't be described until they've
+ * been picked up and put down separate from their respective piles. Don't
+ * tick CLOCK1 unless well into cave (and not at Y2). */
-/* EVERY INPUT, CHECK "FOOBAR" FLAG. IF ZERO, NOTHING'S GOING ON. IF POS,
- * MAKE NEG. IF NEG, HE SKIPPED A WORD, SO MAKE IT ZERO. */
+/* Every input, check "FOOBAR" flag. If zero, nothing's going on. If pos,
+ * make neg. If neg, he skipped a word, so make it zero. */
- * GIVEN THE CURRENT LOCATION IN "LOC", AND A MOTION VERB NUMBER IN "K", PUT
- * THE NEW LOCATION IN "NEWLOC". THE CURRENT LOC IS SAVED IN "OLDLOC" IN CASE
- * HE WANTS TO RETREAT. THE CURRENT OLDLOC IS SAVED IN OLDLC2, IN CASE HE
- * DIES. (IF HE DOES, NEWLOC WILL BE LIMBO, AND OLDLOC WILL BE WHAT KILLED
- * HIM, SO WE NEED OLDLC2, WHICH IS THE LAST PLACE HE WAS SAFE.) */
+ * Given the current location in "LOC", and a motion verb number in "K", put
+ * the new location in "NEWLOC". The current loc is saved in "OLDLOC" in case
+ * he wants to retreat. The current OLDLOC is saved in OLDLC2, in case he
+ * dies. (if he does, NEWLOC will be limbo, and OLDLOC will be what killed
+ * him, so we need OLDLC2, which is the last place he was safe.) */
-/* TRAVEL 301. PLOVER-ALCOVE PASSAGE. CAN CARRY ONLY EMERALD. NOTE: TRAVEL
- * TABLE MUST INCLUDE "USELESS" ENTRIES GOING THROUGH PASSAGE, WHICH CAN NEVER
- * BE USED FOR ACTUAL MOTION, BUT CAN BE SPOTTED BY "GO BACK". */
+/* Travel 301. Plover-alcove passage. Can carry only emerald. Note: travel
+ * table must include "useless" entries going through passage, which can never
+ * be used for actual motion, but can be spotted by "go back". */
-/* TRAVEL 302. PLOVER TRANSPORT. DROP THE EMERALD (ONLY USE SPECIAL TRAVEL IF
- * TOTING IT), SO HE'S FORCED TO USE THE PLOVER-PASSAGE TO GET IT OUT. HAVING
- * DROPPED IT, GO BACK AND PRETEND HE WASN'T CARRYING IT AFTER ALL. */
+/* Travel 302. Plover transport. Drop the emerald (only use special travel if
+ * toting it), so he's forced to use the plover-passage to get it out. Having
+ * dropped it, go back and pretend he wasn't carrying it after all. */
-/* TRAVEL 303. TROLL BRIDGE. MUST BE DONE ONLY AS SPECIAL MOTION SO THAT
- * DWARVES WON'T WANDER ACROSS AND ENCOUNTER THE BEAR. (THEY WON'T FOLLOW THE
- * PLAYER THERE BECAUSE THAT REGION IS FORBIDDEN TO THE PIRATE.) IF
- * PROP(TROLL)=1, HE'S CROSSED SINCE PAYING, SO STEP OUT AND BLOCK HIM.
- * (STANDARD TRAVEL ENTRIES CHECK FOR PROP(TROLL)=0.) SPECIAL STUFF FOR BEAR. */
+/* Travel 303. Troll bridge. Must be done only as special motion so that
+ * dwarves won't wander across and encounter the bear. (They won't follow the
+ * player there because that region is forbidden to the pirate.) If
+ * PROP(TROLL)=1, he's crossed since paying, so step out and block him.
+ * (standard travel entries check for PROP(TROLL)=0.) Special stuff for bear. */
- * IF THE CURRENT LOC IS ZERO, IT MEANS THE CLOWN GOT HIMSELF KILLED. WE'LL
- * ALLOW THIS MAXDIE TIMES. MAXDIE IS AUTOMATICALLY SET BASED ON THE NUMBER OF
- * SNIDE MESSAGES AVAILABLE. EACH DEATH RESULTS IN A MESSAGE (81, 83, ETC.)
- * WHICH OFFERS REINCARNATION; IF ACCEPTED, THIS RESULTS IN MESSAGE 82, 84,
- * ETC. THE LAST TIME, IF HE WANTS ANOTHER CHANCE, HE GETS A SNIDE REMARK AS
- * WE EXIT. WHEN REINCARNATED, ALL OBJECTS BEING CARRIED GET DROPPED AT OLDLC2
- * (PRESUMABLY THE LAST PLACE PRIOR TO BEING KILLED) WITHOUT CHANGE OF PROPS.
- * THE LOOP RUNS BACKWARDS TO ASSURE THAT THE BIRD IS DROPPED BEFORE THE CAGE.
- * (THIS KLUGE COULD BE CHANGED ONCE WE'RE SURE ALL REFERENCES TO BIRD AND CAGE
- * ARE DONE BY KEYWORDS.) THE LAMP IS A SPECIAL CASE (IT WOULDN'T DO TO LEAVE
- * IT IN THE CAVE). IT IS TURNED OFF AND LEFT OUTSIDE THE BUILDING (ONLY IF HE
- * WAS CARRYING IT, OF COURSE). HE HIMSELF IS LEFT INSIDE THE BUILDING (AND
- * HEAVEN HELP HIM IF HE TRIES TO XYZZY BACK INTO THE CAVE WITHOUT THE LAMP!).
- * OLDLOC IS ZAPPED SO HE CAN'T JUST "RETREAT". */
-
-/* THE EASIEST WAY TO GET KILLED IS TO FALL INTO A PIT IN PITCH DARKNESS. */
+ * If the current loc is zero, it means the clown got himself killed. We'll
+ * allow this maxdie times. MAXDIE is automatically set based on the number of
+ * snide messages available. Each death results in a message (81, 83, etc.)
+ * which offers reincarnation; if accepted, this results in message 82, 84,
+ * etc. The last time, if he wants another chance, he gets a snide remark as
+ * we exit. When reincarnated, all objects being carried get dropped at OLDLC2
+ * (presumably the last place prior to being killed) without change of props.
+ * the loop runs backwards to assure that the bird is dropped before the cage.
+ * (this kluge could be changed once we're sure all references to bird and cage
+ * are done by keywords.) The lamp is a special case (it wouldn't do to leave
+ * it in the cave). It is turned off and left outside the building (only if he
+ * was carrying it, of course). He himself is left inside the building (and
+ * heaven help him if he tries to xyzzy back into the cave without the lamp!).
+ * OLDLOC is zapped so he can't just "retreat". */
+
+/* The easiest way to get killed is to fall into a pit in pitch darkness. */
-/* COME HERE IF HE'S BEEN LONG ENOUGH AT REQUIRED LOC(S) FOR SOME UNUSED HINT.
- * HINT NUMBER IS IN VARIABLE "HINT". BRANCH TO QUICK TEST FOR ADDITIONAL
- * CONDITIONS, THEN COME BACK TO DO NEAT STUFF. GOTO 40010 IF CONDITIONS ARE
- * MET AND WE WANT TO OFFER THE HINT. GOTO 40020 TO CLEAR HINTLC BACK TO ZERO,
- * 40030 TO TAKE NO ACTION YET. */
+/* Come here if he's been long enough at required loc(s) for some unused hint.
+ * hint number is in variable "hint". Branch to quick test for additional
+ * conditions, then come back to do neat stuff. Goto 40010 if conditions are
+ * met and we want to offer the hint. Goto 40020 to clear HINTLC back to zero,
+ * 40030 to take no action yet. */
-/* THESE SECTIONS HANDLE THE CLOSING OF THE CAVE. THE CAVE CLOSES "CLOCK1"
- * TURNS AFTER THE LAST TREASURE HAS BEEN LOCATED (INCLUDING THE PIRATE'S
- * CHEST, WHICH MAY OF COURSE NEVER SHOW UP). NOTE THAT THE TREASURES NEED NOT
- * HAVE BEEN TAKEN YET, JUST LOCATED. HENCE CLOCK1 MUST BE LARGE ENOUGH TO GET
- * OUT OF THE CAVE (IT ONLY TICKS WHILE INSIDE THE CAVE). WHEN IT HITS ZERO,
- * WE BRANCH TO 10000 TO START CLOSING THE CAVE, AND THEN SIT BACK AND WAIT FOR
- * HIM TO TRY TO GET OUT. IF HE DOESN'T WITHIN CLOCK2 TURNS, WE CLOSE THE
- * CAVE; IF HE DOES TRY, WE ASSUME HE PANICS, AND GIVE HIM A FEW ADDITIONAL
- * TURNS TO GET FRANTIC BEFORE WE CLOSE. WHEN CLOCK2 HITS ZERO, WE BRANCH TO
- * 11000 TO TRANSPORT HIM INTO THE FINAL PUZZLE. NOTE THAT THE PUZZLE DEPENDS
- * UPON ALL SORTS OF RANDOM THINGS. FOR INSTANCE, THERE MUST BE NO WATER OR
- * OIL, SINCE THERE ARE BEANSTALKS WHICH WE DON'T WANT TO BE ABLE TO WATER,
- * SINCE THE CODE CAN'T HANDLE IT. ALSO, WE CAN HAVE NO KEYS, SINCE THERE IS A
- * GRATE (HAVING MOVED THE FIXED OBJECT!) THERE SEPARATING HIM FROM ALL THE
- * TREASURES. MOST OF THESE PROBLEMS ARISE FROM THE USE OF NEGATIVE PROP
- * NUMBERS TO SUPPRESS THE OBJECT DESCRIPTIONS UNTIL HE'S ACTUALLY MOVED THE
- * OBJECTS. */
+/* These sections handle the closing of the cave. The cave closes "clock1"
+ * turns after the last treasure has been located (including the pirate's
+ * chest, which may of course never show up). Note that the treasures need not
+ * have been taken yet, just located. Hence clock1 must be large enough to get
+ * out of the cave (it only ticks while inside the cave). When it hits zero,
+ * we branch to 10000 to start closing the cave, and then sit back and wait for
+ * him to try to get out. If he doesn't within clock2 turns, we close the
+ * cave; if he does try, we assume he panics, and give him a few additional
+ * turns to get frantic before we close. When clock2 hits zero, we branch to
+ * 11000 to transport him into the final puzzle. Note that the puzzle depends
+ * upon all sorts of random things. For instance, there must be no water or
+ * oil, since there are beanstalks which we don't want to be able to water,
+ * since the code can't handle it. Also, we can have no keys, since there is a
+ * grate (having moved the fixed object!) there separating him from all the
+ * treasures. Most of these problems arise from the use of negative prop
+ * numbers to suppress the object descriptions until he's actually moved the
+ * objects. */
-/* WHEN THE FIRST WARNING COMES, WE LOCK THE GRATE, DESTROY THE BRIDGE, KILL
- * ALL THE DWARVES (AND THE PIRATE), REMOVE THE TROLL AND BEAR (UNLESS DEAD),
- * AND SET "CLOSNG" TO TRUE. LEAVE THE DRAGON; TOO MUCH TROUBLE TO MOVE IT.
- * FROM NOW UNTIL CLOCK2 RUNS OUT, HE CANNOT UNLOCK THE GRATE, MOVE TO ANY
- * LOCATION OUTSIDE THE CAVE, OR CREATE THE BRIDGE. NOR CAN HE BE
- * RESURRECTED IF HE DIES. NOTE THAT THE SNAKE IS ALREADY GONE, SINCE HE GOT
- * TO THE TREASURE ACCESSIBLE ONLY VIA THE HALL OF THE MT. KING. ALSO, HE'S
- * BEEN IN GIANT ROOM (TO GET EGGS), SO WE CAN REFER TO IT. ALSO ALSO, HE'S
- * GOTTEN THE PEARL, SO WE KNOW THE BIVALVE IS AN OYSTER. *AND*, THE DWARVES
- * MUST HAVE BEEN ACTIVATED, SINCE WE'VE FOUND CHEST. */
+/* When the first warning comes, we lock the grate, destroy the bridge, kill
+ * all the dwarves (and the pirate), remove the troll and bear (unless dead),
+ * and set "closng" to true. Leave the dragon; too much trouble to move it.
+ * from now until clock2 runs out, he cannot unlock the grate, move to any
+ * location outside the cave, or create the bridge. Nor can he be
+ * resurrected if he dies. Note that the snake is already gone, since he got
+ * to the treasure accessible only via the hall of the mountain king. Also, he's
+ * been in giant room (to get eggs), so we can refer to it. Also also, he's
+ * gotten the pearl, so we know the bivalve is an oyster. *And*, the dwarves
+ * must have been activated, since we've found chest. */
-/* ONCE HE'S PANICKED, AND CLOCK2 HAS RUN OUT, WE COME HERE TO SET UP THE
- * STORAGE ROOM. THE ROOM HAS TWO LOCS, HARDWIRED AS 115 (NE) AND 116 (SW).
- * AT THE NE END, WE PLACE EMPTY BOTTLES, A NURSERY OF PLANTS, A BED OF
- * OYSTERS, A PILE OF LAMPS, RODS WITH STARS, SLEEPING DWARVES, AND HIM. AT
- * THE SW END WE PLACE GRATE OVER TREASURES, SNAKE PIT, COVEY OF CAGED BIRDS,
- * MORE RODS, AND PILLOWS. A MIRROR STRETCHES ACROSS ONE WALL. MANY OF THE
- * OBJECTS COME FROM KNOWN LOCATIONS AND/OR STATES (E.G. THE SNAKE IS KNOWN TO
- * HAVE BEEN DESTROYED AND NEEDN'T BE CARRIED AWAY FROM ITS OLD "PLACE"),
- * MAKING THE VARIOUS OBJECTS BE HANDLED DIFFERENTLY. WE ALSO DROP ALL OTHER
- * OBJECTS HE MIGHT BE CARRYING (LEST HE HAVE SOME WHICH COULD CAUSE TROUBLE,
- * SUCH AS THE KEYS). WE DESCRIBE THE FLASH OF LIGHT AND TRUNDLE BACK. */
+/* Once he's panicked, and clock2 has run out, we come here to set up the
+ * storage room. The room has two locs, hardwired as 115 (ne) and 116 (sw).
+ * At the ne end, we place empty bottles, a nursery of plants, a bed of
+ * oysters, a pile of lamps, rods with stars, sleeping dwarves, and him. At
+ * the sw end we place grate over treasures, snake pit, covey of caged birds,
+ * more rods, and pillows. A mirror stretches across one wall. Many of the
+ * objects come from known locations and/or states (e.g. the snake is known to
+ * have been destroyed and needn't be carried away from its old "place"),
+ * making the various objects be handled differently. We also drop all other
+ * objects he might be carrying (lest he have some which could cause trouble,
+ * such as the keys). We describe the flash of light and trundle back. */
L11000: PROP[BOTTLE]=PUT(BOTTLE,115,1);
PROP[PLANT]=PUT(PLANT,115,0);
L11000: PROP[BOTTLE]=PUT(BOTTLE,115,1);
PROP[PLANT]=PUT(PLANT,115,0);
-/* ANOTHER WAY WE CAN FORCE AN END TO THINGS IS BY HAVING THE LAMP GIVE OUT.
- * WHEN IT GETS CLOSE, WE COME HERE TO WARN HIM. WE GO TO 12000 IF THE LAMP
- * AND FRESH BATTERIES ARE HERE, IN WHICH CASE WE REPLACE THE BATTERIES AND
- * CONTINUE. 12200 IS FOR OTHER CASES OF LAMP DYING. 12400 IS WHEN IT GOES
- * OUT. EVEN THEN, HE CAN EXPLORE OUTSIDE FOR A WHILE IF DESIRED. */
+/* Another way we can force an end to things is by having the lamp give out.
+ * When it gets close, we come here to warn him. We go to 12000 if the lamp
+ * and fresh batteries are here, in which case we replace the batteries and
+ * continue. 12200 is for other cases of lamp dying. 12400 is when it goes
+ * out. Even then, he can explore outside for a while if desired. */