diff --git a/dat/data.base b/dat/data.base index f10a9e581..ebb781af7 100644 --- a/dat/data.base +++ b/dat/data.base @@ -4089,6 +4089,13 @@ acolyte there may well be wonderful universes above us where reason is utterly unreasonable?" [ The Innocence of Father Brown, by G.K. Chesterton ] +paddle cactus + Opuntia, commonly called prickly pear, is a genus in the cactus + family, Cactaceae. Prickly pears are also known as tuna (fruit), + sabra, nopal (paddle, plural nopales) from the Nahuatl word + nopalli for the pads, or nostle, from the Nahuatl word nochtli + for the fruit; or paddle cactus. + [ Wikipedia, the free encyclopedia ] prisoner Where am I? In the Village. @@ -4355,6 +4362,29 @@ rogue conceal it; and therein am I constant to my profession. [ Autolycus the Rogue, from The Winter's Tale by William Shakespeare ] +root +dwarven root + But when they were cooked these roots proved good to eat, + somewhat like bread; and the outlaws were glad of them, for + they had long lacked bread save when they could steal it. + "Wild Elves know them not; Grey-elves have not found them; + the proud ones from over the Sea are too proud to delve," + said Mim. + + "What is their name?" said Turin. Mim looked at him sidelong. + "They have no name, save in the Dwarf-tongue, which we do not + teach," he said. "And we not teach Men to find them, for Men + are greedy and thriftless, and would not spare till all the + plants had perished; whereas now they pass them by as they go + blundering in the wild. No more will you learn of me; but you + may have enough of my bounty, as long as you speak fair and + do not spy or steal." Then again he laughed in his throat. + + "They are of great worth." he said. "More than gold in the + hungry winter, for they may be hoarded like the nuts of a + squirrel, and already we were building our store from the + first that are ripe." + [ Unfinished Tales, Part 1, by J.R.R. Tolkien ] roshi Roshi is a Japanese word, common in Zen Buddhism, meaning "old" (ro) and "teacher" (shi). Roshi can be used as a term of diff --git a/doc/fixes10.0 b/doc/fixes10.0 new file mode 100644 index 000000000..4f35c4231 --- /dev/null +++ b/doc/fixes10.0 @@ -0,0 +1,70 @@ +New Features: +==================== +New character classes (Ken Arromdee) +New weapons code (Ken Arromdee) +Armor weights implemented (Ken Arromdee) +New tools code (Ken Arromdee) +Polymorph self code (Ken Arromdee) +additional bug fixes (Ken Arromdee) +added new character classes and traps (M. Stephenson) +added the Throne Room (M. Stephenson) +Rockmole & Keystone Kops code (Scott R. Turner) +Squeeky Board & Magic traps (Scott R. Turner) +Fountain code (Scott R. Turner) +Magic Marker code (Gil Neiger) +Fountain code enhancements (Gil Neiger) +Enhancements to dozens of routines (Gil Neiger) +more bug fixes in hack.zap.c +#dip mods to fountain code (Eric Backus) +added spellbooks and spellcasting (M. Stephenson) +implemented code for praying (M. Stephenson) +made some enhancements to the endgame (M. Stephenson) +Some of the old code (eg. KOPS) has been enhanced to allow for more + functionality +Kops now throw cream pies (thank/blame KAA for the suggestion) +The wizard may not stay dead!!! +There are a couple of new types of demons. +Demons may not be aggressive. +There are lots more of these little gems, with sufficient hints in + various fortune cookies to give away enough clues. + + +Build from source changes +========================= +The program "makedefs" has been modified in order to allow limited use of + "#ifdef/#else/#endif" sets in objects.h +Makedefs will only generate one #define for any number of ocurrences of + a given object name string. In addition, "makedefs" also generates + alternate defines for "DEAD_xxxxx" in those cases where a monster + has been given an alternate identity. +Makedefs has been modified in order that it may be used to + initialize the following variable def files: + objects.h -o option, see above. + trap.h -t option, trap type defines. + date.h -d option, date string. + data -D option, optional monster names. + rumors -r option, optional rumor addition. +The Unix "Makefile" has been enhanced to make installation cleaner + and also to allow "initialization" of the play directories (WARNING: + this will destroy old score files!!!). The PC Makefile hasn't been + upgraded in this respect + + +Known Problems: +================= +The WALKIES code is really crude. Fido get's mnexto()'d you when + he gets out of the effective leash range. I haven't yet been able + to integrate leashed movement into dogmove(). You might just want + to comment out the #define in config.h +ROCKMOLES have some problems with screen updating. I didn't make + any changes to the code I received, and have noticed some distinct + problems with walls not being set to "door" until the rockmole + moves off the cell +There are some problems in the item selection code, the usual effect + of which is to leave the cursor sitting at some arbitrary point on + the screen instead of returning it to the upper left hand corner or + onto the "@". This doesn't affect the screen updating, so I have + ignored it up to now +REDO may not be completely implemented. I am still working on it + here but would appreciate any help anyone out there might want to give + diff --git a/doc/fixes14.f b/doc/fixes14.f new file mode 100644 index 000000000..bdc4fb10d --- /dev/null +++ b/doc/fixes14.f @@ -0,0 +1,76 @@ + NetHack Fixes List Revision 1.4 + +dogmove.c: Death code fixed so dog with <1 hp doesn't "die of hunger". + Slack leash message not invoked unless leash attached. + Added "DOGNAME" option (thanks to Roland McGrath). + +u_init.c: Priest(esse)s start off with their weapon blessed. + +spell.c: Allows high level characters to cast spells upon themselves +zap.c: (such as polymorph). + +pray.c: allows for de-cursing worn rings as well as weapons. + Knights, Priests and Priestesses can now "#turn" undead + (UNDEAD = "VWZ &"). + fixed bugs in blessings bestowed by gods. + +read.c: SPE_CAUSE_FEAR does not give a "You hear..." message unless no + monsters are nearby. + fix to bug in "do_genocide" which allowed player to wipe out + all '@'s and survive. + +polyself.c: fix to rehumanize to catch players who wipe out '@'s while + in polymorphed form as they de-polymorph. + +wield.c: bug causing segmentation fault on "w-" followed by "w[weapon]" + fixed by chuq@sun + +trap.c: similar null pointer problem corrected. + +make.exe.uu: correction of names at top of uuencoded files which caused the +nansi.sys.uu: original files to be overwritten by the decoded files when + uudecode was invoked. (found by len@elxsi). + +nethack.6: general beautification and appropriate acknowledgement of + trademarks to avoid getting sued. :-) (thanks chuq) + +help: addition of "V" and "#" commands to help text. + +invent.c: fix to REDO bug inhibiting the appearance of the item usage + prompt. + +makedefs.c: added "{", "\" and corrected Rockmole definition in "data". + fixed things for Dos users (file open modes, etc.) + +cmd.c: added #[command] auto-substitution. + +termcap.c: fixed termlib / curses dependencies. + fixed null padding bug on output of SO/SE/HI/HE. + +pcmain.c: many fixes by Ralf Brown (ralf@b.gp.cs.cmu.edu) to allow the +pcunix.c: program to be compiled using the Turbo C compiler in a Dos +Makefile.tcc: enviornment. + +engrave.c: engravings burned or engraved into the floor (as opposed to + those made with finger or marker) can be felt out when blind. + (inspired by Stefan Wrammerfors). + +mon.c: fixed "monster looked at a strange trap" bug for 16 bit + machines (long vs. int problem reported by mike@cimcor). + +fight.c: hitmm() fixed to return 0 (no hit) if either monster passed + in is non-existant. This fixes a number of null reference + problems (ex. monmove.c[~360]). + Misc zero reference errors fixed by Paul Eggert. eggert@grand + +Makefile.xenix: New version (that works) supplied by Greg Laskin greg@smash + +fountain.c: Misc zero reference errors fixed by Paul Eggert. eggert@grand +search.c: + +options.c: New options added for GRAPHICS, DOGNAME, and new routine + added to allow easier sorting of string parameters (":," + are considered to be string terminators for copying in + name, and dogname). + + diff --git a/doc/fixes23.e b/doc/fixes23.e new file mode 100644 index 000000000..8b3920083 --- /dev/null +++ b/doc/fixes23.e @@ -0,0 +1,214 @@ + NetHack Fixes List Revision 2.3e + + New Files: + +Fixes.2.3 This file. + +Makefile.3B2 A new Makefile for the ATT 3B2. + +Spoilers.mm As above - pre nroff -mm + +food.tbl Tables for above manual +fount.tbl +monster.tbl +weapon.tbl + +nansi.doc Documentation for nansi.sys. + +hh Fixed improper def of "X" for casting spells. + +fight.c Dogname fix for "you hit your dog" line. (Janet Walz) + +pri.c Patch for "SCORE_ON_BOTL". (Gary Erickson) +config.h + +pray.c Null refrence bug fix for Suns. (The Unknown Hacker) + +termcap.c null pointer bug fix. (Michael Grenier) + +mon.c chameleon shape made dependent on current lev. (RPH) +spell.c +monmove.c + +rnd.c fixed SYSV/BSD problems with random(). (many sources) +config.h + +shk.c fix to allow compilation with or without HARD option. + (reported by The Unknown Hacker) + +termcap.c ospeed fix for SYSV. (reported by Eric Rapin) + +unixunix.c fix for NFS sharing of playground. (Paul Meyer) + +options.c many misc. bugs while compiling for the PC. (Tom Almy) +pcmain.c +pctty.c +hack.h +nethack.cnf +pager.c +fight.c + +mkroom.h Addition of reorganized special-room code. +mkshop.c (Eric S. Raymond) +mklev.c +rnd.c + +trap.c Fixed teleport to hell problems caused by rnz(). + (reported by Janet Walz) + +termcap.c Various fixes to MSDOSCOLOR code. (Tom Almy) +end.c + +hack.c Fixed typos. (Steve Creps) +msdos.c +pcmain.c + +config.h Enabled the use of termcap file c:\etc\termcap or +termcap.c .\termcap.cnf for MS Dos (Steve Creps) + +eat.c Continued implementation of Soldier code. +makedefs.c Added Barracks code. (Steve Creps) +makemon.c +mklev.c +mkroom.h +objects.h +mkshop.c +mon.c +monst.c +permonst.h + +makedefs.c Added Landmines code. (Steve Creps) +mklev.c +trap.c + +mkroom.h Fixed item / shop probablility code. (Stefan Wrammerfors) +shknam.c Added additional item typ available. + +pray.c Randomized time between prayers. (Stefan Wrammerfors) + +fight.c Fixed typo. (Stefan Wrammerfors) + +mhitu.c Fixed monster special abilities usage bug. + (Stefan Wrammerfors) + +objnam.c Randomized max number and max bonus limits on objects + wished for. + Identified cursed items shown as such. (Stefan Wrammerfors) + +topten.c Added logfile to allow overall game tuning for balance. +config.h (Stefan Wrammerfors) + +mklev.c moved code identifying medusa & wizard levs to eliminate +*main.c garbage on screen. (Izchak Miller) + +u_init.c fixed up luck wraparound bug (Izchak Miller) +hack.c +dothrow.c +fight.c +mon.c +play.c +save.c +sit.c + +mon.c fixed null referenced pointer bug. (The Unknown Hacker) + +config.h Hawaiian shirt code by Steve Linhart +decl.c +do_wear.c +extern.h +invent.c +mhitu.c +obj.h +objects.h +objnam.c +polyself.c +read.c +steal.c +u_init.c +worn.c + +config.h "THEOLOGY" code addition (The Unknown Hacker) +pray.c + +mklev.c Added typecasts to fix object generation bug on Microport +fountain.c Sys V/AT. (Jerry Lahti) + +Makefile.unix Added ${CFLAGS} to makedefs build line. (Jerry Lahti) +Makefile.att +Makefile.3B2 + +pager.c Inventory fix for "things that are here". (Steve Creps) + +cmd.c More wizard debugging tools: + ^F = level map + ^E = find doors & traps (Steve Creps) + +apply.c Blindfolded set/unset to "INTRINSIC" (many sources) + +lev.c new restmonchn() code. (Tom May) +save.c + +o_init.c OS independance in init_objects (Tom May) +objclass.h (removal of oc_descr_i) + +shk.c declaration of typename() (Tom May) + +apply.c declaration of lmonnam() (Tom May) + +mklev.c fixes to make medusa and wizard levels dependent on MAXLEVEL + (Richard Hughey as pointed out to him by John Sin) + +fountain.c added "coins in fountain" code. (Chris Woodbury) + +objects.h bound gem color to type (Janet Walz) +o_init.c + +spell.c spell list now displayed in the corner (Bruce Mewborne) + +apply.c multiple dragon types. (Bruce Mewborne) +cmd.c wand of lightning. +do.c ring of shock resistance. +do_name.c giant eel replaced by electric eel. +end.c "STOOGES" - three stooges code. +engrave.c Named dagger/short sword "Sting". +fight.c Lamps & Magic Lamps. +makemon.c A Badge - identifies you as a Kop. +config.h ^X option for wizard mode - gives current abilities. +mhitu.c New monster djinni '&' for Magic lamps. +mklev.c #rub command for lamps. +mkobj.c New monster: Gremlin 'G' augments Gnome on lower levels. +mon.c major modifications to buzz() code cleans it up. +monmove.c +monst.c objnam.c polyself.c potion.c +pri.c rip.c shk.c sit.c +u_init.c wizard.c zap.c makedefs.c +monst.h obj.h objects.h permonst.h +you.h *main.c *unix.c + +rnd.c fixed portability bug for 16 bit machines (Paul Eggert) + +mhitu.c fixed many lint flagged bugs (Izchak Miller) +apply.c +fight.c mklev.c mkmaze.c mkshop.c +monmove.c shknam.c trap.c wizard.c +zap.c shk.c do_name.c invent.c +unixtty.c pctty.c unixmain.c pcmain.c +do.c options.c termcap.c makemon.c +spell.c + +termcap.c major rewrite *** NOTE: Untested by MRS *** (Kevin Sweet) + +do_name.c reversed quantity check for "n blessed +xx items" + (Roland McGrath) + +config.h Added Kitchen Sink code (Janet Walz) +rm.h +decl.c do.c hack.c invent.c +makedefs.c mklev.c options.c pager.c +prisym.c wizard.c zap.c + +end.c Fixed "killed by" bugs in endgame code. (Steve Creps) + +objects.h Changed weight of a leash to a reasonable value. (Janet Walz) + + diff --git a/doc/fixes30.pl01 b/doc/fixes30.pl01 new file mode 100644 index 000000000..f20b73514 --- /dev/null +++ b/doc/fixes30.pl01 @@ -0,0 +1,49 @@ +As things have mostly settled down to rediscoveries of fixed bugs, +it is time to distribute the first batch of patches and ports. + + +NOTICE: The diffs comprising this update batch were cut on NetHack 3.0 + release version. If you modified any of your files, store them + and replace with release version files before applying this kit. + + +Changes made: + +Eric Smith provided a port to the Atari using gcc; the older Lattice C +vestiges moved to different preprocessor options and remain untested. + +Ralf Brown adapted NetHack to the Andrew File System. + +The fruit naming code was enclosed in a new option, TUTTI_FRUTTI, which +allows another 3K of object code to be defined out. + +Various tweaks, rewritings, and reshufflings to get the code to get along +with various compilers and preprocessors, including Microport SysV/AT 2.4, +Gould UTX/32, HP-UX, and of course Turbo C. + +Various suggested changes in behavior, none major. + +Distribution of termcap.uu, the uuencoded termcap.arc for PCs that was +previously distributed with NetHack 2.2 and 2.3. + +Explicit instructions to short-circuit common installation mistakes. + + +Bug fixes: + +Various segmentation faults no longer exist, including the popular dropping +items in shops. + +Vortices can no longer disappear through solid walls when they disgorge you +over a moat. + +You now get credit for food when engulfing monsters. + +A few more spelling errors that fell through the cracks. + + +Suggestion for overflowing compiler tables: follow the SysV-AT trail in the +src Makefile with -DDUMB and DUMB.Setup. It appears that many SVR2 3Bs will +need to do this. + + diff --git a/doc/fixes30.pl02 b/doc/fixes30.pl02 new file mode 100644 index 000000000..5ad9d19b2 --- /dev/null +++ b/doc/fixes30.pl02 @@ -0,0 +1,80 @@ +-------------- +UPDATE2 +-------------- +This patch kit upgrades NetHack to version 3.0f. The kit should +be applied to the original release, patched with patchlevel 1. + +Many of the diffs included here are bugfixes to bugs reported to +us by players. We are very grateful for these reports. + +There were questions about our netnews usage. We use the good +offices of comp.sources.games because, unlike rec.games.hack, it +is archived. It is the only way to secure the availability of +the source code and the official patches for future users. For +this reason, comp.sources.games will remain the only place where +the official NetHack patches are posted. + +Occasionally we may see a need to post a semi-official stopgap patch +such as the one for the 'killer' bug posted just after Patch 1 in +rec.games.hack and in comp.sources.games.bugs. These stopgap patches +will always be included in the next official patch kit. The 'killer' +bugfix is, indeed, included here. + +The above two newsgroups often contain many bug reports and unofficial +fixes. We read these groups, and thus we get the reports. But it +will be helpful if you mailed nethack-bugs a copy of your posting. +If your site gets these newsgroups, you may want to check them for +mentions of bugs before reporting the same bug to nethack-bugs (or +to the same newsgroups, for that matter -- unless you have additional +information). + + + +Now, on to the main changes. + +Objects were rearranged slightly, so the cautious may want to throw +out saved games and bones files. + +Timo Hakulinen provided an OS/2 port. + +Various people convinced various OS versions to be better about +sensing the available screen size at start-up. + +The game tries now to be smarter about guessing defaults for players +who don't set environment variables of interest to NetHack. + +Eric Raymond extended the PC color code slightly to allow its use by +SVR3.2 machines with color information from terminfo, and also allowed +many extended commands to be available via a meta key under SYSV. + +Paul Gyugyi provided a better makefile for MicroSoft C. + +The MSDOS terminal problems, including always needing TERMLIB, are +(hopefully) fixed. + +The '/' command now allows multiple identifications, and more things +may be usefully identified. + +More code was shuffled and rewritten to satisfy compiler and preprocessor +constraints. + +Starving dogs again eat people food. + +Credit cards can no longer lock things. + +Doors have been toned down slightly, but are in no danger of being removed. + +The gods' ranking of player troubles was revised. + +Wizards can no longer start with certain useless items. + +Various code, including game ending, seduction, and monster attack, is +considerably cleaner. + +Above all: scores of bugs were fixed. + + +Please continue testing the game and reporting to nethack-bugs. Your +response has been wonderful, and it has made this effort worth while. + + diff --git a/doc/fixes30.pl03 b/doc/fixes30.pl03 new file mode 100644 index 000000000..23df754ac --- /dev/null +++ b/doc/fixes30.pl03 @@ -0,0 +1,36 @@ +Date: Thu, 7 Sep 89 09:38:37 EDT +From: Izchak Miller + +The main changes included in patch kit 3 are as follows: + +A few new objects were added to objects.c, so old save/bones files +should be thrown out. + +Prototypes were adapted to satisfy ANSI C. Hopefully, we will not see +anymore postings which helpfully fix prototypes for ANSI, while breaking +them for the MSDOS compilers they were, originally, set up for. + +Use of $(MAKE), and a better use of $PAGER, in scripts. + +Improvements to OS/2 and TOS code, including their Makefiles. + +Graphics setting was centralized. + +Alignment was added to artifacts, and their suitability was improved. + +Discover mode games no longer use up bones files. + +Some excess 'register's that were giving Xenix trouble were removed. + +We settled an (amusing) argument over "rights" to available bits which +was responsible (unintentionally) for ring-wielding bestowing +long-lasting intrinsic attributes. + +In addition, many bugs were fixed. Among those were the problems +with polymorphing creatures that swallowed you, finishing with +containers, having chains eaten, external pagers, statue weights, wishing +loopholes, parsing endgame options, and monsters growing up. + +In other words, this is a nuts and bolts patch, nothing dramatic but +lots of cleanup. + diff --git a/doc/fixes30.pl04 b/doc/fixes30.pl04 new file mode 100644 index 000000000..10583ad23 --- /dev/null +++ b/doc/fixes30.pl04 @@ -0,0 +1,38 @@ +------------- +UPDATE4 +------------- +NOTICE: The changes which were made in the code make all save and bones +files absolete. Once Patch 4 is applied, all the old save and bones files +must be thrown out. + + +Here is a list of the main changes: + +Object and monster types got a new field specifying their color, so things +can now appear in "living color" instead having one color for all monsters, +one for all weapons, and so on. + +References to monsters and objects on the floor were moved to new structures, +which support the better color handling as well as provide yet faster access. + +David Gentzel provided a port for VMS. Although extensively tested by +David and others, and found to be sound, it probably needs further +refinements. We are appealing to those of you who know VMS (none of us +does..) to join David in his efforts to refine the VMS code. + +Much of the *main.c code was moved to a new file, to avoid having to update +that common code in three different *main.c files. + +VARARG handling was ifdef'd to satisfy ANSI compilers. + +Almost all grey creatures now join the other gray creatures. + +Monsters will no longer be created in the same room as the player, and should +no longer want to end up in the SE corner of the dungeon. + +Lycanthropy is now considered a "major problem" (allowing for appeal to the +gods through prayer), some artifacts are associated with particular character +classes, various oddities involving statues, digging, iron balls, and +throwing have been removed, and many other bugs, both major and minor, were +fixed. + diff --git a/doc/fixes30.pl05 b/doc/fixes30.pl05 new file mode 100644 index 000000000..6d222ef6f --- /dev/null +++ b/doc/fixes30.pl05 @@ -0,0 +1,46 @@ +Old bones and save files should at least be syntactically correct this time, +but you should still throw them out if you don't want to be confronted with +monsters permanently masquerading as different monsters (since some of the +monsters' letters have changed). + + +Note that the posted shop fix was a stopgap patch, not an official patch, so +it should be reversed before applying these patches. If you do not reverse +it, probably nothing worse than a failure of one shk.c band will happen this +time. In general, however, you will have to do considerable hand-patching if +you leave intermediate patches in. + + +The major bug fix in Patch 5 is moving the color definitions to color.h, thus +breaking the annoying dependency loop when bootstrapping NetHack. + +Patch 5 contains Johnny Lee's provision of a port to the Macintosh. The +Macintosh files live in a new subdirectory, 'mac'. We know that many of you +were waiting for a Mac port, and for you we are happy to have it. + +Basic support for several new other compilers or machines (see README), but +these probably need some more tweaking. + +A major new feature in Patch 5 is timed-out eating, i.e., being able to be +interrupted while eating by monsters attack. Mike Stephenson provided the +basic structure for dealing with partially eaten food. We believe that the +only remaining flaws in this code are occasional non-optimal messages which +are generated by it (we are working on correcting this). + +Incorrect iron ball behavior and bugs in the iron ball code were +systematically corrected by Kevin Darcy who communicated with us about it +and mailed us his patches. (Yes, Kevin, as you can see, it went in, and +with only one minor change.) + +There were other, smaller, patches which were mailed to us and which were +implemented. To repeat: we are very happy to receive bug-fixing patches +and code-enhancement patches. But please do as Kevin did, namely, tell us +about it in advance. + +Difficulties with dropping objects in shops, burning to death in hell, +wielding amulets, pets eating corpses were fixed. So were scores of other +small but annoying bugs. + +MICROPORT_BUG was added to cater to compilers that don't like large +structures. + diff --git a/doc/fixes30.pl06 b/doc/fixes30.pl06 new file mode 100644 index 000000000..398c69384 --- /dev/null +++ b/doc/fixes30.pl06 @@ -0,0 +1,38 @@ +This patch contains two major improvements: + +First, thanks to Ari Huttunen, different door states show up as different +(configurable) characters on the screen. + +Second, doors can now be entered/exited diagonally both for player and +monster. + +Third, a gaggle of people credited in the appropriate files developed an +overlay manager for MS-DOS and MSC such that all the options of NetHack can +be supported. See Install.dos and ovlmgr.* for further details. + +In more minor news: + +You no longer have to pick up food to eat it, and you no longer necessarily +resume eating your interrupted meal. + +You can no longer get properties from wielding a non-weapon. + +There is a new option, CLIPPING, which allows playing on small screens or +windows. + +The multiple demon types portion of HARD has been split off into the new +INFERNO option. + +The Macintosh port has been further refined. + +The / command now takes configurable characters into account when identifying +items. + +Leprechauns and lichs and nymphs and nagas had their letters switched so that +the more formidable monsters get capital letters. Several new low-level +monsters were added. + +Drawbridge interactions are much smarter, thanks to Kevin Darcy. + +And a large number of minor bug fixes and efficiency enhancements. + diff --git a/doc/fixes30.pl07 b/doc/fixes30.pl07 new file mode 100644 index 000000000..162bfa776 --- /dev/null +++ b/doc/fixes30.pl07 @@ -0,0 +1,35 @@ +Sorry this one took so long. We think just about every computer and network +we depend on has broken sometime in last few weeks. + +Work on the PC overlay mechanism continues, with Kevin Smolkowski joining +Pierre Martineau, Stephen Spackman, and Norm Meluch. Breaking each .c file +into separately-swapped pieces should help performance considerably. More +changes to the overlay manager are brewing, and will be distributed in the +unfortunately required Patch 8. + +The Amiga port was brought up to date and extended by Richard Addison, +Jochen Erwied, Mark Gooderum, Ken Lorber, Greg Olson, Mike Passaretti, and +Gregg Wonderly. + +The Macintosh port was futher extended by Kevin Sitze, Andy Swanson, Jon +Watte, and Tom West, working with Johnny Lee. + +Support for recent versions of HP-UX was added by Steve Creps. + +We believe all major various platforms and compilers are working properly now. + + +In other news, '/' now distinguishes among monsters of a given class, named +objects (including artifacts) are handled better, an extended version command +gives compilation options, monster colors should show up better, more +occupations are being stopped appropriately, unconscious and non-animal +monsters are handled better, and the eating behavior and ending messages have +been overhauled again. + +Various display nuisances have been fixed and the "worm segment", "nymph +freeinv", and combined nymph/succubus/polymorphing bugs are gone, along with +a large number of less notorious problems. A few more fun loopholes no longer +exist. + +In all, we think this is the stablest and most balanced version yet. + diff --git a/doc/fixes30.pl08 b/doc/fixes30.pl08 new file mode 100644 index 000000000..6791311aa --- /dev/null +++ b/doc/fixes30.pl08 @@ -0,0 +1,59 @@ +From @RELAY.CS.NET,@central.cis.upenn.edu:izchak@linc.cis.upenn.edu Sun Jun 3 19:07:16 1990 +Received: from tekred.CNA.TEK.COM by saab.CNA.TEK.COM (3.2/6.24) + id AA19831; Sun, 3 Jun 90 19:07:15 PDT +Received: by tekred.CNA.TEK.COM (5.51/6.24) + id AA07744; Sun, 3 Jun 90 19:04:46 PDT +Received: by tektronix.TEK.COM (5.51/7.1) + id AA19147; Sun, 3 Jun 90 19:09:13 PDT +Received: from by zephyr.ENS.TEK.COM (4.1/7.1) + id AB19260; Sun, 3 Jun 90 19:03:29 PDT +Received: from relay.cs.net by RELAY.CS.NET id aa02627; 3 Jun 90 21:57 EDT +Received: from central.cis.upenn.edu by RELAY.CS.NET id aa02050; + 3 Jun 90 21:58 EDT +Received: from LINC.CIS.UPENN.EDU by central.cis.upenn.edu + id AA24573; Sun, 3 Jun 90 21:58:54 -0400 +Return-Path: +Received: by linc.cis.upenn.edu + id AA04476; Sun, 3 Jun 90 21:58:14 EDT +Date: Sun, 3 Jun 90 21:58:14 EDT +From: Izchak Miller +Posted-Date: Sun, 3 Jun 90 21:58:14 EDT +Message-Id: <9006040158.AA04476@linc.cis.upenn.edu> +To: billr@saab.CNA.TEK.COM +Subject: UPDATE8 +Status: O + +This patch is devoted to bugfixes and accommodations for more versions of +the newer ports. + +The VMS port should now compile with both VAXC and GNUC and install more +easily under a variety of OS versions, thanks to Joshua Delahunty and Pat +Rankin. + +A number of strange interactions in the Macintosh-specific code have been +cleaned up. + +The MSDOS overlay manager was debugged, and the overlay assignments and macro +names straightened out, so the result should be both faster and more stable +than previous versions. See the new file Install.ovl and various files in +the others directory for more information. + +The Amiga port now specifies addressing modes for many external variables, +which should make its executable smaller and faster as well. + + +The biggest externally visible change separates DECgraphics and IBMgraphics +from the general graphics-setting code, and makes them selectable on the +command line. + +Once again, existing saved games and bones files should be discarded (or the +update postponed until they are gone). + +A number of reasonably simple bugs are no more, although some screen update +oddities are postponed to 3.1. Among the dead are problems with shops on +bones levels, renaming artifacts, kicking non-objects, winning gem treatment, +level bounds checking and monster filling, mimic appearances, taking items +out of containers, monster interiors and inventories, and guard behavior. +Various other things were changed to be consistent with similar situations. + + diff --git a/doc/fixes30.pl09 b/doc/fixes30.pl09 new file mode 100644 index 000000000..4efa3d5de --- /dev/null +++ b/doc/fixes30.pl09 @@ -0,0 +1,11 @@ +Patchlevel 9 is in fact an amendment patch to Patchlevel 8. It +contains fixes to some deadly bugs discovered thus far in the Pl8 +code. + +Among the bugs fixed are a 0 dereference bug in the Amiga code, a +bug in the tins code, a bug in the inventory weight code, a level +files bug in the Mac code, an ST display bug, a bug in the maze's +bones level, a bug with chest traps, a bug in the restoring code, a +vault guard bug, a PC collapsing dungeon bug, and other more minor +bugs. + diff --git a/doc/fixes30.pl10 b/doc/fixes30.pl10 new file mode 100644 index 000000000..9fea9b743 --- /dev/null +++ b/doc/fixes30.pl10 @@ -0,0 +1,23 @@ +UPDATE10 + +Patch 10 to NetHack 3.0 adds no new features, and few optimizations. +It fixes many mostly rare bugs and extends support to a couple more +system variants. + +The major change with this patch is that the MSDOS overlay manager is +now bright enough to split up one logical executable among several disk +files, thus simplifying distribution via floppies since each file can +be <360K. Entering debugging mode for the Macintosh is simplified. +There are provisions for later versions of several compilers, although +not yet Turbo C++, as we have not gotten an executable with adequate +performance (see Install.ovl for gory details). + +NetHack should now get along better with Irises, IBM RS/6000s, NeXTs, +and possibly even SCO UNIX. + +Among the dead bugs are those involving artifact damage, VMS file +manipulation, crushed iron balls, elven equipment, orcs with 2^32-1 +daggers, trolls with ridiculously high hitpoints, exploding bags of +holding on the ground, inappropriate messages, saved luck, unbounded +digging on special levels, and several distinct trap problems. + diff --git a/doc/fixes36.2 b/doc/fixes36.2 index 3014b1d10..443dfec50 100644 --- a/doc/fixes36.2 +++ b/doc/fixes36.2 @@ -140,6 +140,7 @@ tty: turn off an optimization that is the suspected cause of Windows reported partial status lines following level changes tty: ensure that current status fields are always copied to prior status values so that comparisons are correct +orctown: prevent Bad fruit #0 and some minor tuning Platform- and/or Interface-Specific Fixes diff --git a/include/extern.h b/include/extern.h index ed186e667..7e1fb1270 100644 --- a/include/extern.h +++ b/include/extern.h @@ -521,7 +521,7 @@ E void FDECL(container_impact_dmg, (struct obj *, XCHAR_P, XCHAR_P)); E int NDECL(dokick); E boolean FDECL(ship_object, (struct obj *, XCHAR_P, XCHAR_P, BOOLEAN_P)); E void FDECL(obj_delivery, (BOOLEAN_P)); -E void FDECL(deliver_obj_to_mon, (struct monst *mtmp, unsigned long)); +E void FDECL(deliver_obj_to_mon, (struct monst *mtmp, int, unsigned long)); E schar FDECL(down_gate, (XCHAR_P, XCHAR_P)); E void FDECL(impact_drop, (struct obj *, XCHAR_P, XCHAR_P, XCHAR_P)); @@ -1703,6 +1703,7 @@ E const char *FDECL(helm_simple_name, (struct obj *)); E const char *FDECL(mimic_obj_name, (struct monst *)); E char *FDECL(safe_qbuf, (char *, const char *, const char *, struct obj *, char *(*)(OBJ_P), char *(*)(OBJ_P), const char *)); +E int FDECL(shiny_obj, (CHAR_P)); /* ### options.c ### */ diff --git a/include/hack.h b/include/hack.h index f65d2ddd1..555a08818 100644 --- a/include/hack.h +++ b/include/hack.h @@ -272,8 +272,7 @@ typedef struct sortloot_item Loot; /* flags for deliver_obj_to_mon */ #define DF_NONE 0x00 -#define DF_RANDOM2 0x01 -#define DF_RANDOM3 0x02 +#define DF_RANDOM 0x01 #define DF_ALL 0x04 /* special mhpmax value when loading bones monster to flag as extinct or diff --git a/src/do_name.c b/src/do_name.c index 4c7653776..b6decaa86 100644 --- a/src/do_name.c +++ b/src/do_name.c @@ -50,7 +50,7 @@ boolean FDECL((*gp_getvalidf), (int, int)); getpos_getvalid = gp_getvalidf; } -const char *const gloc_descr[NUM_GLOCS][4] = { +static const char *const gloc_descr[NUM_GLOCS][4] = { { "any monsters", "monster", "next monster", "monsters" }, { "any items", "item", "next object", "objects" }, { "any doors", "door", "next door or doorway", "doors or doorways" }, @@ -60,7 +60,7 @@ const char *const gloc_descr[NUM_GLOCS][4] = { "anything interesting" } }; -const char *const gloc_filtertxt[NUM_GFILTER] = { +static const char *const gloc_filtertxt[NUM_GFILTER] = { "", " in view", " in this area" @@ -90,11 +90,11 @@ getpos_help(force, goal) boolean force; const char *goal; { + static const char *const fastmovemode[2] = { "8 units at a time", + "skipping same glyphs" }; char sbuf[BUFSZ]; boolean doing_what_is; winid tmpwin = create_nhwindow(NHW_MENU); - const char *const fastmovemode[2] = { "8 units at a time", - "skipping same glyphs" }; Sprintf(sbuf, "Use '%c', '%c', '%c', '%c' to move the cursor to %s.", /* hjkl */ @@ -275,8 +275,8 @@ int glyph; } STATIC_OVL int -gloc_filter_floodfill_matcharea(x,y) -int x,y; +gloc_filter_floodfill_matcharea(x, y) +int x, y; { int glyph = back_to_glyph(x, y); @@ -308,7 +308,7 @@ gloc_filter_init() { if (iflags.getloc_filter == GFILTER_AREA) { if (!gloc_filter_map) { - gloc_filter_map = selection_opvar(NULL); + gloc_filter_map = selection_opvar((char *) 0); } /* special case: if we're in a doorway, try to figure out which direction we're moving, and use that side of the doorway */ @@ -321,8 +321,6 @@ gloc_filter_init() } else { gloc_filter_floodfill(u.ux, u.uy); } - - } } @@ -331,7 +329,7 @@ gloc_filter_done() { if (gloc_filter_map) { opvar_free_x(gloc_filter_map); - gloc_filter_map = NULL; + gloc_filter_map = (struct opvar *) 0; } } @@ -466,7 +464,7 @@ boolean fulldir; /* explicit direction; 'one step' is implicit */ Sprintf(buf, "%s", directionname(dst)); } else { - const char *dirnames[4][2] = { + static const char *dirnames[4][2] = { { "n", "north" }, { "s", "south" }, { "w", "west" }, @@ -543,7 +541,8 @@ int cx, cy; cc.x = cx; cc.y = cy; - if (do_screen_description(cc, TRUE, sym, tmpbuf, &firstmatch, (struct permonst **)0)) { + if (do_screen_description(cc, TRUE, sym, tmpbuf, &firstmatch, + (struct permonst **) 0)) { (void) coord_desc(cx, cy, tmpbuf, iflags.getpos_coords); custompline(SUPPRESS_HISTORY, "%s%s%s%s%s", firstmatch, *tmpbuf ? " " : "", tmpbuf, @@ -590,6 +589,7 @@ int gloc; coord tmpcc; const char *firstmatch = "unknown"; int sym = 0; + any.a_int = i + 1; tmpcc.x = garr[i].x; tmpcc.y = garr[i].y; @@ -804,11 +804,12 @@ const char *goal; msg_given = TRUE; goto nxtc; } else if (c == Cmd.spkeys[NHKF_GETPOS_LIMITVIEW]) { - const char *const view_filters[NUM_GFILTER] = { + static const char *const view_filters[NUM_GFILTER] = { "Not limiting targets", "Limiting targets to in sight", "Limiting targets to in same area" }; + iflags.getloc_filter = (iflags.getloc_filter + 1) % NUM_GFILTER; for (i = 0; i < NUM_GLOCS; i++) { if (garr[i]) { @@ -845,6 +846,7 @@ const char *goal; if (iflags.getloc_usemenu) { coord tmpcrd; + if (getpos_menu(&tmpcrd, gloc)) { cx = tmpcrd.x; cy = tmpcrd.y; @@ -1513,7 +1515,7 @@ namefloorobj() (cc.x == u.ux && cc.y == u.uy) ? "under you" : "there"); return; } - /* note well: 'obj' might be as instance of STRANGE_OBJECT if target + /* note well: 'obj' might be an instance of STRANGE_OBJECT if target is a mimic; passing that to xname (directly or via simpleonames) would yield "glorkum" so we need to handle it explicitly; it will always fail the Hallucination test and pass the !callable test, @@ -2025,9 +2027,9 @@ static NEARDATA const char *const hliquids[] = { "instant coffee", "tea", "herbal infusion", "liquid rainbow", "creamy foam", "mulled wine", "bouillon", "nectar", "grog", "flubber", "ketchup", "slow light", "oil", "vinaigrette", "liquid crystal", "honey", - "caramel sauce", "ink", "aqueous humour", "milk substitute", "fruit juice", - "glowing lava", "gastric acid", "mineral water", "cough syrup", "quicksilver", - "sweet vitriol", "grey goo", "pink slime", + "caramel sauce", "ink", "aqueous humour", "milk substitute", + "fruit juice", "glowing lava", "gastric acid", "mineral water", + "cough syrup", "quicksilver", "sweet vitriol", "grey goo", "pink slime", }; const char * @@ -2035,7 +2037,7 @@ hliquid(liquidpref) const char *liquidpref; { return (Hallucination || !liquidpref) ? hliquids[rn2(SIZE(hliquids))] - : liquidpref; + : liquidpref; } /* Aliases for road-runner nemesis diff --git a/src/dog.c b/src/dog.c index 46cd832ef..1dc4018b9 100644 --- a/src/dog.c +++ b/src/dog.c @@ -410,7 +410,7 @@ boolean with_you; if ((mtmp->mspare1 & MIGR_LEFTOVERS) != 0L) { /* Pick up the rest of the MIGR_TO_SPECIES objects */ if (migrating_objs) - deliver_obj_to_mon(mtmp, DF_ALL); + deliver_obj_to_mon(mtmp, 0, DF_ALL); } if (xlocale && wander) { diff --git a/src/dokick.c b/src/dokick.c index b2d36de70..4a4ac6b93 100644 --- a/src/dokick.c +++ b/src/dokick.c @@ -1671,20 +1671,22 @@ boolean near_hero; } void -deliver_obj_to_mon(mtmp, deliverflags) +deliver_obj_to_mon(mtmp, cnt, deliverflags) +int cnt; struct monst *mtmp; unsigned long deliverflags; { struct obj *otmp, *otmp2; - int where, cnt = 0, maxobj = 0; + int where, maxobj = 1; - if (deliverflags & DF_RANDOM3) - maxobj = rn2(3) + 1; - else if (deliverflags & DF_RANDOM2) - maxobj = rn2(2) + 1; - else if (deliverflags == DF_NONE) + if ((deliverflags & DF_RANDOM) && cnt > 1) + maxobj = rnd(cnt); + else if (deliverflags & DF_ALL) + maxobj = 0; + else maxobj = 1; + cnt = 0; for (otmp = migrating_objs; otmp; otmp = otmp2) { otmp2 = otmp->nobj; where = (int) (otmp->owornmask & 0x7fffL); /* destination code */ diff --git a/src/makemon.c b/src/makemon.c index 55dc7b49d..ee87d332e 100644 --- a/src/makemon.c +++ b/src/makemon.c @@ -1391,7 +1391,7 @@ int mmflags; } if (allow_minvent && migrating_objs) - deliver_obj_to_mon(mtmp, DF_RANDOM2); /* in case there's waiting items */ + deliver_obj_to_mon(mtmp, 1, DF_NONE); /* in case there's waiting items */ if (!in_mklev) newsym(mtmp->mx, mtmp->my); /* make sure the mon shows up */ diff --git a/src/mkmaze.c b/src/mkmaze.c index 8282205f8..be6fcfd7f 100644 --- a/src/mkmaze.c +++ b/src/mkmaze.c @@ -632,6 +632,7 @@ char *s; } #define ORC_LEADER 1 +static const char *orcfruit[] = {"paddle cactus", "dwarven root"}; void migrate_orc(mtmp, mflags) @@ -650,9 +651,12 @@ unsigned long mflags; * orcs between here and the bottom of the mines. */ nlev = max_depth; + /* once in a blue moon, he won't be at the very bottom */ + if (!rn2(40)) + nlev--; mtmp->mspare1 = MIGR_LEFTOVERS; } else { - nlev = rn2(max_depth - cur_depth) + cur_depth + 1; + nlev = rn2((max_depth - cur_depth) + 1) + cur_depth; if (nlev == cur_depth) nlev++; if (nlev > max_depth) @@ -663,6 +667,39 @@ unsigned long mflags; migrate_to_level(mtmp, ledger_no(&dest), MIGR_RANDOM, (coord *) 0); } +void +shiny_orc_stuff(mtmp) +struct monst *mtmp; +{ + int gemprob, goldprob, otyp; + struct obj *otmp; + boolean is_captain = (mtmp->data == &mons[PM_ORC_CAPTAIN]); + + /* probabilities */ + goldprob = is_captain ? 600 : 300; + gemprob = goldprob / 4; + if (rn2(1000) < goldprob) { + if ((otmp = mksobj(GOLD_PIECE, FALSE, FALSE)) != 0) { + otmp->quan = 1L + rnd(goldprob); + otmp->owt = weight(otmp); + add_to_minv(mtmp, otmp); + } + } + if (rn2(1000) < gemprob) { + if ((otmp = mkobj(GEM_CLASS, FALSE)) != 0) { + if (otmp->otyp == ROCK) + dealloc_obj(otmp); + else + add_to_minv(mtmp, otmp); + } + } + if (is_captain || !rn2(8)) { + otyp = shiny_obj(RING_CLASS); + if ((otyp != STRANGE_OBJECT) && + (otmp = mksobj(otyp, FALSE, FALSE)) != 0) + add_to_minv(mtmp, otmp); + } +} void migr_booty_item(otyp, gang) int otyp; @@ -673,8 +710,13 @@ const char *gang; if (otmp && gang) { new_oname(otmp, strlen(gang) + 1); /* removes old name if one is present */ Strcpy(ONAME(otmp), gang); - if (otyp >= TRIPE_RATION && otyp <= TIN) + if (otyp >= TRIPE_RATION && otyp <= TIN) { + if (otyp == SLIME_MOLD) + otmp->spe = fruitadd((char *) orcfruit[rn2(SIZE(orcfruit))], + (struct fruit *) 0); otmp->quan += (long) rn2(3); + otmp->owt = weight(otmp); + } } } @@ -699,24 +741,16 @@ stolen_booty(VOID_ARGS) */ gang = rndorcname(gang_name); - /* create the leader of the orc gang */ - mtmp = makemon(&mons[PM_ORC_CAPTAIN], 0, 0, MM_NONAME); - if (mtmp) { - mtmp = christen_monst(mtmp, upstart(gang)); - mtmp->mpeaceful = 0; - migrate_orc(mtmp, ORC_LEADER); - } - /* create the stuff that the rest of the gang took */ - migr_booty_item(rn2(2) ? LONG_SWORD : SILVER_SABER, gang); - cnt = rn2(3) + 1; + /* create the stuff that the gang took */ + cnt = rnd(4); for (i = 0; i < cnt; ++i) migr_booty_item(rn2(4) ? TALLOW_CANDLE : WAX_CANDLE, gang); - cnt = rn2(2) + 1; + cnt = rnd(3); for (i = 0; i < cnt; ++i) migr_booty_item(SKELETON_KEY, gang); otyp = rn2((GAUNTLETS_OF_DEXTERITY - LEATHER_GLOVES) + 1) + LEATHER_GLOVES; migr_booty_item(otyp, gang); - cnt = rn2(9) + 1; + cnt = rnd(10); for (i = 0; i < cnt; ++i) { /* Food items - but no lembas! (or some other weird things) */ otyp = rn2((TIN - TRIPE_RATION) + 1) + TRIPE_RATION; @@ -727,6 +761,15 @@ stolen_booty(VOID_ARGS) otyp != HUGE_CHUNK_OF_MEAT && otyp != CORPSE) migr_booty_item(otyp, gang); } + migr_booty_item(rn2(2) ? LONG_SWORD : SILVER_SABER, gang); + /* create the leader of the orc gang */ + mtmp = makemon(&mons[PM_ORC_CAPTAIN], 0, 0, MM_NONAME); + if (mtmp) { + mtmp = christen_monst(mtmp, upstart(gang)); + mtmp->mpeaceful = 0; + shiny_orc_stuff(mtmp); + migrate_orc(mtmp, ORC_LEADER); + } /* Make most of the orcs on the level be part of the invading gang */ for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) { if (DEADMONSTER(mtmp)) @@ -751,14 +794,16 @@ stolen_booty(VOID_ARGS) * members of the invading gang until they get their spoils assigned * to the inventory; handled during that assignment. */ - cnt = rn2(7) + 5; + cnt = rn2(10) + 5; for (i = 0; i < cnt; ++i) { int mtyp; mtyp = rn2((PM_ORC_SHAMAN - PM_ORC) + 1) + PM_ORC; mtmp = makemon(&mons[mtyp], 0, 0, MM_NONAME); - if (mtmp) + if (mtmp) { + shiny_orc_stuff(mtmp); migrate_orc(mtmp, 0UL); + } } ransacked = 0; diff --git a/src/objnam.c b/src/objnam.c index 6588b7f9a..692291417 100644 --- a/src/objnam.c +++ b/src/objnam.c @@ -2753,6 +2753,13 @@ char oclass; return STRANGE_OBJECT; } +int +shiny_obj(oclass) +char oclass; +{ + return (int) rnd_otyp_by_namedesc("shiny", oclass); +} + /* * Return something wished for. Specifying a null pointer for * the user request string results in a random object. Otherwise,