Merge branch 'NetHack-3.6.2'
This commit is contained in:
@@ -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
|
||||
|
||||
70
doc/fixes10.0
Normal file
70
doc/fixes10.0
Normal file
@@ -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
|
||||
|
||||
76
doc/fixes14.f
Normal file
76
doc/fixes14.f
Normal file
@@ -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).
|
||||
|
||||
|
||||
214
doc/fixes23.e
Normal file
214
doc/fixes23.e
Normal file
@@ -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)
|
||||
|
||||
|
||||
49
doc/fixes30.pl01
Normal file
49
doc/fixes30.pl01
Normal file
@@ -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.
|
||||
|
||||
|
||||
80
doc/fixes30.pl02
Normal file
80
doc/fixes30.pl02
Normal file
@@ -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.
|
||||
|
||||
|
||||
36
doc/fixes30.pl03
Normal file
36
doc/fixes30.pl03
Normal file
@@ -0,0 +1,36 @@
|
||||
Date: Thu, 7 Sep 89 09:38:37 EDT
|
||||
From: Izchak Miller <izchak@linc.cis.upenn.edu>
|
||||
|
||||
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.
|
||||
|
||||
38
doc/fixes30.pl04
Normal file
38
doc/fixes30.pl04
Normal file
@@ -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.
|
||||
|
||||
46
doc/fixes30.pl05
Normal file
46
doc/fixes30.pl05
Normal file
@@ -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.
|
||||
|
||||
38
doc/fixes30.pl06
Normal file
38
doc/fixes30.pl06
Normal file
@@ -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.
|
||||
|
||||
35
doc/fixes30.pl07
Normal file
35
doc/fixes30.pl07
Normal file
@@ -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.
|
||||
|
||||
59
doc/fixes30.pl08
Normal file
59
doc/fixes30.pl08
Normal file
@@ -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: <izchak@linc.cis.upenn.edu>
|
||||
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 <izchak@linc.cis.upenn.edu>
|
||||
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.
|
||||
|
||||
|
||||
11
doc/fixes30.pl09
Normal file
11
doc/fixes30.pl09
Normal file
@@ -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.
|
||||
|
||||
23
doc/fixes30.pl10
Normal file
23
doc/fixes30.pl10
Normal file
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -1706,6 +1706,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 ### */
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
16
src/dokick.c
16
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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
77
src/mkmaze.c
77
src/mkmaze.c
@@ -646,6 +646,7 @@ char *s;
|
||||
}
|
||||
|
||||
#define ORC_LEADER 1
|
||||
static const char *orcfruit[] = {"paddle cactus", "dwarven root"};
|
||||
|
||||
void
|
||||
migrate_orc(mtmp, mflags)
|
||||
@@ -664,9 +665,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)
|
||||
@@ -677,6 +681,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;
|
||||
@@ -687,8 +724,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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -713,24 +755,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;
|
||||
@@ -741,6 +775,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))
|
||||
@@ -765,14 +808,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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user