diff --git a/dat/tribute b/dat/tribute index 37eb2d374..6a7f63b31 100644 --- a/dat/tribute +++ b/dat/tribute @@ -384,13 +384,13 @@ GET TO THE BOTTOM OF THIS IF IT KILLS ME. FIGURATIVELY SPEAKING OF COURSE.' [The Light Fantastic, by Terry Pratchett] %e passage 2 -# p. 7 (passage starts mid-paragraph; the too-long-to-answer question is +# p. 7 (passage starts mid-sentence; the too-long-to-answer question is # "Why have Rincewind and Twoflower fallen off the Disc's rim?", # alluding to the conclusion of /The Colour of Magic/; # in /Sourcery/ and /Interesting Times/ and probably others, the # famous philosohper's name is spelled "Ly Tin Wheedle") %passage 3 -[...] such questions take time and could be more trouble than they are +[...] such questions take time and could be more trouble than they are worth. For example, it is said that someone at a party once asked the famous philosopher Ly Tin Weedle "Why are you here?" and the reply took three years. @@ -573,39 +573,204 @@ according its victims the dignity of hatred. It wouldn't even notice them. # # # -%title Equal Rites (3) +%title Equal Rites (9) +# p. 118 (Signet edition; passage starts mid-sentence and ends mid-paragraph) %passage 1 -...it is well known that a vital ingredient of success is not knowing that -what you're attempting can't be done. +[...] it is well known that a vital ingredient of success is not knowing +that what you're attempting can't be done. [...] [Equal Rites, by Terry Pratchett] %e passage +# p. 218 (speaker is Granny Weatherwax) %passage 2 -Million-to-one chances...crop up nine times out of ten. +"Million-to-one chances," she said, "crop up nine times out of ten." [Equal Rites, by Terry Pratchett] %e passage +# pp. 96-97 ('Tannoy': public address speaker) %passage 3 -Animal minds are simple, and therefore sharp. Animals never spend time -dividing experience into little bits and speculating about all the bits -they've missed. The whole panoply of the universe has been neatly -expressed to them as things to (a) mate with, (b) eat, (c) run away from, -and (d) rocks. This frees the mind from unnecessary thoughts and gives -it a cutting edge where it matters. Your normal animal, in fact, never -tries to walk and chew gum at the same time. +Animal minds are simple, and therefore sharp. Animals never spend time +dividing experience into little bits and speculating about all the bits +they've missed. The whole panoply of the universe has been neatly +expressed to them as things to (a) mate with, (b) eat, (c) run away from, +and (d) rocks. This frees the mind from unnecessary thoughts and gives +it a cutting edge where it matters. Your normal animal, in fact, never +tries to walk and chew gum at the same time. -The average human, on the other hand, thinks about all sorts of things +The average human, on the other hand, thinks about all sorts of things around the clock, on all sorts of levels, with interruptions from dozens -of biological calendars and timepieces. There's thoughts about to be said, -and private thoughts, and real thoughts, and thoughts about thoughts, and -a whole gamut of subconscious thoughts. To a telepath the human head is -a din. It is a railway terminus with all the Tannoys talking at once. -It is a complete FM waveband- and some of those stations aren't reputable, +of biological calendars and timepieces. There's thoughts about to be said, +and private thoughts, and real thoughts, and thoughts about thoughts, and +a whole gamut of subconscious thoughts. To a telepath the human head is +a din. It is a railway terminus with all the Tannoys talking at once. +It is a complete FM waveband--and some of those stations aren't reputable, they're outlawed pirates on forbidden seas who play late-night records with limbic lyrics. [Equal Rites, by Terry Pratchett] %e passage +# pp. 18-19 +%passage 4 +Smith took a spade from beside the back door and hesitated. + +"Granny." + +"What?" + +"Do you know how wizards like to be buried?" + +"Yes!" + +"Well, how?" + +Granny paused at the bottom of the stairs. + +"Reluctantly." + + [Equal Rites, by Terry Pratchett] +%e passage +# p. 70 +%passage 5 +Granny sighed. "You have learned something," she said, and thought it +was safe to insert a touch of sternness into her voice. "They say that a +little knowledge is a dangerous thing, but it is not one half so bad as a +lot of ignorance." + + [Equal Rites, by Terry Pratchett] +%e passage +# pp. 113-114 (Esk is a young girl) +%passage 6 +The barges stopped at some of the towns. By tradition only the men went +ashore, and only Amschat, wearing his ceremonial Lying hat, spoke to +non-Zoons. Esk usually went with him. He tried hinting that she should +obey the unwritten rules of Zoon life and stay afloat, but a hint was to +Esk what a mosquito bite was to the average rhino because she was already +learning that if you ignore the rules people will, half the time, quietly +rewrite them so that they don't apply to you. + + [Equal Rites, by Terry Pratchett] +%e passage +# pp. 119-120 ("what is happening here?" actually omits "is" but +# must be a typo--fixed here to avoid bug reports; +# 'broomstick' is Esk's disguised wizard's staff; +# passage continues with questions about destination and +# why go overland when the river goes to the same place) +%passage 7 +The town was smaller than Ohulan, and very different because it lay on the +junction of three trade routes quite apart from the river itself. It was +built around one enormous square which was a cross between a permanent +exotic traffic jam and a tent village. Camels kicked mules, mules kicked +horses, horses kicked camels and they all kicked humans; there was a riot +of colours, a din of noise, a nasal orchestration of smells and the steady, +heady sound of hundreds of people working hard at making money. + +One reason for the bustle was that over large parts of the continent other +people preferred to make money without working at all, and since the Disc +had yet to develop a music recording industry they were forced to fall back +on older, more traditional forms of banditry. + +Strangely enough these often involved considerable effort. Rolling heavy +rocks to the top of cliffs for a decent ambush, cutting down trees to +block the road, and digging a pit lined with spikes while still keeping a +wicked edge on a dagger probably involved a much greater expenditure of +thought and muscle than more socially-acceptable professions but, +nevertheless, there were still people misguided enough to endure all this, +plus long nights in uncomfortable surroundings, merely to get their hands +on perfectly ordinary large boxes of jewels. + +So a town like Zemphis was the place where caravans split, mingled and +came together again, as dozens of merchants and travellers banded together +for protection against the socially disadvantaged on the trails ahead. +Esk, wandering unregarded amidst the bustle, learned all this by the simple +method of finding someone who looked important and tugging on the hem of +his coat. + +This particular man was counting bales of tobacco and would have succeeded +but for the interruption. + +"What?" + +"I said, what is happening here?" + +The man meant to say: "Push off and bother someone else." He meant to +give her a light cuff about the head. So he was astonished to find himself +bending down and talking seriously to a small, grubby-faced child holding +a large broomstick (which also, it seemed to him later, was in some +indefinable way /paying attention/). + +He explained about the caravans. The child nodded. + +"People all get together to travel?" + +"Precisely." + + [Equal Rites, by Terry Pratchett] +%e passage +# pp. 127-128 (this time broomstick is Granny's defective witch's broomstick) +%passage 8 +The broomstick lay between two trestles. Granny Weatherwax sat on a rock +outcrop while a dwarf half her height, wearing an apron that was a mass of +pockets, walked around the broom and occasionally poked it. + +Eventually he kicked the bristles and gave a long intake of breath, a sort +of reverse whistle, which is the secret sign of craftsman across the +universe and means that something expensive is about to happen. + +"Weellll," he said. "I could get the apprentices in to look at this, I +could. It's an education in itself. And you say it actually managed to +get airborne?" + +"It flew like a bird," said Granny. + +The dwarf lit a pipe. "I should very much like to see that bird," he said +reflectively. "I should imagine it's quite something to watch, a bird like +that." + +"Yes, but can you repair it?" said Granny. "I'm in a hurry." + +The dwarf sat down, slowly and deliberately. + +"As for /repair/," he said, "well, I don't know about /repair/. Rebuild, +maybe. Of course, it's hard to get the bristles these days even if you can +find people to do the proper binding, and the spells need--" + +"I don't want it rebuilt, I just want it to work properly," said Granny. + +"It's an early model, you see," the dwarf plugged on. "Very tricky, those +early models. You can't get the wood--" + +He was picked up bodily until his eyes were level with Granny's. Dwarves, +being magical in themselves as it were, are quite resistant to magic but +her expression looked as though she was trying to weld his eyeballs to the +back of his skull. + +"Just repair it," she hissed. "Please?" + +"What, make a bodge job?" said the dwarf, his pipe clattering to the floor. + +"Yes." + +"Patch it up, you mean? Betray my training by doing half a job?" + +"Yes," said Granny. Her pupils were two little black holes. + +"Oh," said the dwarf. "Right, then." + + [Equal Rites, by Terry Pratchett] +%e passage +# p. 185 (actually uses four periods to mark a sentence ending in a elipsis) +%passage 9 +There may be universes where librarianship is considered a peaceful sort of +occupation, and where the risks are limited to large volumes falling off +the shelves on to one's head, but the keeper of a /magic/ library is no job +for the unwary. Spells have power, and merely writing them down and +shoving them between covers doesn't do anything to reduce it. The stuff +leaks. Books tend to react with one another, creating randomized magic +with a mind of its own. Books of magic are usually chained to their +shelves, but not to prevent them being stolen.... + + [Equal Rites, by Terry Pratchett] +%e passage %e title # # @@ -6200,7 +6365,7 @@ IF YOU ASK ME, said Death, NOBODY COULD DO ANY BETTER THAN THAT... # Used for interaction with Death. # %section Death -%title Death Quotes (13) +%title Death Quotes (17) %passage 1 WHERE THE FIRST PRIMAL CELL WAS, THERE WAS I ALSO. WHERE MAN IS, THERE AM I. WHEN THE LAST LIFE CRAWLS UNDER FREEZING STARS, THERE WILL I BE. %e passage @@ -6253,6 +6418,16 @@ I HAVE COME FOR THEE. # including them here wouldn't fit with the rest) %passage 14 DARK IN HERE, ISN'T IT? +# p. 14 (Equal Rites; 2nd sentence continues 'said the deep, heavy voice...') +%passage 15 +THERE IS NO GOING BACK. THERE IS NO GOING BACK. +# p. 15 (contradicts later descriptions of Death as existing outside of time; +# presumably it's just intended as a colloquial expression) +%passage 16 +I HAVEN'T GOT ALL DAY, YOU KNOW. +# p. 15 (same page) +%passage 17 +LIFE IS FOR THE LIVING. %e title %e section # diff --git a/doc/Guidebook.mn b/doc/Guidebook.mn index 0656e2f63..2efd8bbf2 100644 --- a/doc/Guidebook.mn +++ b/doc/Guidebook.mn @@ -1948,7 +1948,7 @@ There is a section of this Guidebook that discusses that. .pg The default name of the configuration file varies on different operating systems. On DOS and Windows, it is ``defaults.nh'' -in the same folder as nethack.exe or nethackW.exe. On Unix, linux +in the same folder as nethack.exe or nethackW.exe. On Unix, Linux and Mac OS X it is ``.nethackrc'' in the user's home directory. NETHACKOPTIONS can also be set to the full name of a file you want to use (possibly preceded by an `@'). diff --git a/doc/Guidebook.tex b/doc/Guidebook.tex index 5ccc9bdef..cbb63f7a0 100644 --- a/doc/Guidebook.tex +++ b/doc/Guidebook.tex @@ -2347,7 +2347,7 @@ There is a section of this Guidebook that discusses that. %.pg The default name of the configuration file varies on different operating systems. On DOS and Windows, it is ``{\tt defaults.nh}'' -in the same folder as nethack.exe or nethackW.exe. On Unix, linux +in the same folder as nethack.exe or nethackW.exe. On Unix, Linux and Mac OS X it is ``{\tt.nethackrc}'' in the user's home directory. NETHACKOPTIONS can also be set to the full name of a file you want to use (possibly preceded by an `{\tt @}'). diff --git a/doc/fixes36.1 b/doc/fixes36.1 index 0ab9f3a43..51e27e78d 100644 --- a/doc/fixes36.1 +++ b/doc/fixes36.1 @@ -82,6 +82,7 @@ ensure sufficient messages are given to clarify the transition from detected fix "killing by kicking something weird" when kicking an object causes death guard macros available for mextra fields similar to those for oextra fields compile-time option for an alternate paniclog format for public server use +make monsters forget where they stepped when fleeing or teleporting Platform- and/or Interface-Specific Fixes @@ -116,7 +117,7 @@ reading non-cursed scroll of enchant weapon uncurses welded tin opener if hero has no jumping ability but knows the jumping spell, the #jump command will attempt to cast the spell additional tribute passages for The Colour of Magic, The Light Fantastic, - Snuff, and Raising Steam + Equal Rites, Snuff, and Raising Steam compile-time options SIMPLE_MAIL and SERVER_ADMIN_MSG for public server use diff --git a/src/detect.c b/src/detect.c index 1e5b23edc..c29ad83eb 100644 --- a/src/detect.c +++ b/src/detect.c @@ -1363,7 +1363,7 @@ register int aflag; /* intrinsic autosearch vs explicit searching */ unblock_point(x, y); /* vision */ exercise(A_WIS, TRUE); nomul(0); - feel_location(x, y); /* make sure it shows up */ + feel_newsym(x, y); /* make sure it shows up */ You("find a hidden passage."); } else { /* Be careful not to find anything in an SCORR or SDOOR */ @@ -1553,6 +1553,8 @@ int which_subset; /* when not full, whether to suppress objs and/or traps */ } } } + if (glyph == cmap_to_glyph(S_darkroom)) + glyph = cmap_to_glyph(S_room); /* FIXME: dirty hack */ show_glyph(x, y, glyph); } diff --git a/src/dog.c b/src/dog.c index efcb76892..361c7de02 100644 --- a/src/dog.c +++ b/src/dog.c @@ -325,8 +325,7 @@ boolean with_you; xyflags = mtmp->mtrack[0].y; xlocale = mtmp->mtrack[1].x; ylocale = mtmp->mtrack[1].y; - mtmp->mtrack[0].x = mtmp->mtrack[0].y = 0; - mtmp->mtrack[1].x = mtmp->mtrack[1].y = 0; + memset(mtmp->mtrack, MTSZ, sizeof(coord)); if (mtmp == u.usteed) return; /* don't place steed on the map */ diff --git a/src/mkmaze.c b/src/mkmaze.c index 100b0b525..f192a3f3c 100644 --- a/src/mkmaze.c +++ b/src/mkmaze.c @@ -123,13 +123,9 @@ int wall_there, dx, dy; return spine; } -/* - * Wall cleanup. This function has two purposes: (1) remove walls that - * are totally surrounded by stone - they are redundant. (2) correct - * the types so that they extend and connect to each other. - */ +/* Remove walls totally surrounded by stone */ void -wallification(x1, y1, x2, y2) +wall_cleanup(x1, y1, x2, y2) int x1, y1, x2, y2; { uchar type; @@ -138,9 +134,9 @@ int x1, y1, x2, y2; /* sanity check on incoming variables */ if (x1 < 0 || x2 >= COLNO || x1 > x2 || y1 < 0 || y2 >= ROWNO || y1 > y2) - panic("wallification: bad bounds (%d,%d) to (%d,%d)", x1, y1, x2, y2); + panic("wall_cleanup: bad bounds (%d,%d) to (%d,%d)", x1, y1, x2, y2); - /* Step 1: change walls surrounded by rock to rock. */ + /* change walls surrounded by rock to rock. */ for (x = x1; x <= x2; x++) for (y = y1; y <= y2; y++) { lev = &levl[x][y]; @@ -153,10 +149,9 @@ int x1, y1, x2, y2; lev->typ = STONE; } } - - fix_wall_spines(x1,y1,x2,y2); } +/* Correct wall types so they extend and connect to each other */ void fix_wall_spines(x1, y1, x2, y2) int x1, y1, x2, y2; @@ -181,11 +176,7 @@ int x1, y1, x2, y2; if (x1<0 || x2>=COLNO || x1>x2 || y1<0 || y2>=ROWNO || y1>y2) panic("wall_extends: bad bounds (%d,%d) to (%d,%d)",x1,y1,x2,y2); - /* - * Step 2: set the correct wall type. We can't combine steps - * 1 and 2 into a single sweep because we depend on knowing if - * the surrounding positions are stone. - */ + /* set the correct wall type. */ for (x = x1; x <= x2; x++) for (y = y1; y <= y2; y++) { lev = &levl[x][y]; @@ -217,6 +208,14 @@ int x1, y1, x2, y2; } } +void +wallification(x1, y1, x2, y2) +int x1, y1, x2, y2; +{ + wall_cleanup(x1,y1,x2,y2); + fix_wall_spines(x1,y1,x2,y2); +} + STATIC_OVL boolean okay(x, y, dir) int x, y; diff --git a/src/monmove.c b/src/monmove.c index 8fc93b745..cae22b8b5 100644 --- a/src/monmove.c +++ b/src/monmove.c @@ -271,6 +271,8 @@ boolean fleemsg; } mtmp->mflee = 1; } + /* ignore recently-stepped spaces when made to flee */ + memset(mtmp->mtrack, MTSZ, sizeof(coord)); } STATIC_OVL void diff --git a/src/teleport.c b/src/teleport.c index 5faf0135c..47780e7da 100644 --- a/src/teleport.c +++ b/src/teleport.c @@ -980,6 +980,7 @@ register int x, y; } } + memset(mtmp->mtrack, MTSZ, sizeof(coord)); place_monster(mtmp, x, y); /* put monster down */ update_monster_region(mtmp);