From the newsgroup: if cloned Wizard arrives out of view of the hero (and vice versa), it will sit and wait until hero moves into his view or until suffering some damage (usually via pet). So if a mob causes the clone to arrive on the far side of a wall, he might not come into play until the hero goes to another level and some future harassment action pulls him off the migrating monsters list. Treat clones like the resurrected Wizard: don't start out waiting.
396 lines
23 KiB
Plaintext
396 lines
23 KiB
Plaintext
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.208 $ $NHDT-Date: 1588189422 2020/04/29 19:43:42 $
|
|
|
|
General Fixes and Modified Features
|
|
-----------------------------------
|
|
hero polymorphed into a vampire can use #monster to shape-shift rather than
|
|
just do a one-shot polymorph into bat/cloud/wolf and shifted vampire
|
|
hero can use #monster again to take on another form (randomly chosen
|
|
among the shiftable shapes and true vampire form)
|
|
adjust bones filename buffer sizes to accommodate suffix
|
|
fix internal self-recover to work with recent fields added to checkpoint file
|
|
improvements to pronoun usage when hallucinating
|
|
function calls made from mapglyph based on dungeon level are now called once
|
|
per level
|
|
fast hero could have random clairvoyance happen more than once on same turn
|
|
using 'Q' on wielded weapon would offer to split stack; make using 'w' on a
|
|
quivered stack behave similarly
|
|
weight for giant spider was too low for creature of size 'large';
|
|
weight for giant beetle was much too low for 'large'
|
|
leave some menu items out of "invert all" via '@' when their inclusion would
|
|
degrade the usefulness of that interface feature
|
|
change crysknife from mineral to bone and worm tooth from unspecified to bone
|
|
worn meat ring shouldn't cause increased hunger; neither should fake Amulet
|
|
worn +0 ring of protection should cause increased hunger if it is the only
|
|
source of extrinsic Protection
|
|
monster wielding Stormbringer or healer's Staff against another monster would
|
|
heal the hero instead of the wielding monster when draining life
|
|
change twoweapon feedback from "not a weapon" to "not a suitable weapon"
|
|
don't allow twoweapon combat if either weapon is a bow, crossbow, or sling
|
|
[later: or arrows, bolts, and missiles (darts, shuriken, boomerangs)]
|
|
drum of earthquake feedback reported various things (fountains, thrones, &c)
|
|
falling into a chasm but they remained intact because trap creation
|
|
had been changed to not clobber such things (so couldn't make pits)
|
|
make earthquake which hits a secret door or a secret corridor reveal it
|
|
wizard mode wishing for "Amulet of Yendor" had 50:50 chance for true Amulet
|
|
or a cheap plastic imitation; recognize "real Amulet of Yendor" and
|
|
"fake Amulet of Yendor" to precisely specify either of them but also
|
|
take away the 50% chance of yielding a fake one when neither real nor
|
|
fake is specified
|
|
unpaid globs showed weight info unconditionally outside of wizmode
|
|
walking out of tethered-to-buried-object trap condition was supposed to
|
|
reinstate punishment but wasn't finding the buried iron ball because
|
|
the trap condition was cleared first to indicate escape; result was
|
|
attached chain that got dragged around but had no ball attached
|
|
when poly'd into a giant and moving onto a boulder's spot, message given was
|
|
confused about whether autopickup would occur so could be misleading
|
|
random role selection wasn't honoring unwanted alignment(s) properly
|
|
if at the edge of the map window, trying to move farther fails but used a turn
|
|
hero can no longer wear blindfold/towel/lenses when poly'd into headless form
|
|
revamp achievement tracking for exploring Mine's End and Sokoban (by acquiring
|
|
luckstone and bag of holding or amulet of reflection, respectively)
|
|
throttle long worm growth rate and HP accumulation
|
|
poly'd hero was able to zap wands, apply tools, and #rub objects without
|
|
having any hands
|
|
spellcasting monster got an extra move after casting
|
|
allow defining #wizgenesis quantity in the prompt
|
|
digging through iron bars from an adjacent pit made a pit on top of the bars
|
|
give feedback if controlled level teleport attempt fails because hero is
|
|
already on the bottom level and player tries to go even deeper
|
|
unseen pet that drowned didn't give "you have a sad feeling" message
|
|
prevent ravens from blinding other ravens: /corvus oculum corvi non eruit/
|
|
have ^X provide more information when held or swallowed
|
|
display wasn't updating immediately after toggling hilite_pet option
|
|
randomly choosing role could lead to crash via segfault
|
|
if eel bite attack caused hero to move (killed + rehumanized + crawled out
|
|
of water), its grab attack could succeed even if no longer adjacent
|
|
specifying a count when picking [part of] a stack of scrolls of scare monster
|
|
ignored that count and the whole stack was affected
|
|
wizmakemap didn't account for unique monsters and didn't correct monster
|
|
birth counts
|
|
generate objects (eg. statues) with genocided or extinct monster classes
|
|
in special levels, if requested
|
|
if the orc-town version of mine town has been loaded, creation of orc zombies
|
|
or orc mummies would name them as part of the town raiding orc clan
|
|
when punished, involuntarily teleporting and landing within chain range of
|
|
attached ball while encumbered worse than burdened could trigger
|
|
"remove_object: obj not on floor" panic on hero's next move
|
|
inventory cursing caused by "this water's no good" effect when drinking from
|
|
a fountain didn't update persistent inventory window
|
|
fix priest created inside temple wall
|
|
fix vault guard occasionally encasing monsters in stone
|
|
tone down scare monster by excluding humans and uniques
|
|
lock the castle chest
|
|
revamp amnesia to forget skills instead of objects or maps
|
|
when Punished and carrying the iron ball and levitating, hurtling in the
|
|
opposite direction of a thrown object didn't bring along the chain
|
|
recognize "kirin" as alias for "ki-rin" when asked to create a monster
|
|
make unique swallowing monsters (Juiblex) resist magical digging from inside
|
|
correctly account for fuel remaining when lit candles are attached
|
|
to candelabrum (the previous code would make the game unwinnable if
|
|
there were 15 or fewer turns remaining)
|
|
praying on an unaligned altar outside of Gehennom behaved like an ordinary
|
|
prayer; make that always fail
|
|
Discworld typo: Moving Pictures passage 12 "or" -> "of"
|
|
unicorn corpses and wraith corpses could be sacrificed even if "too old"
|
|
hero polymorphed into a hider and hiding was not unhidden when teleporting
|
|
impose tighter restraints on 'summon nasties', both for spellcasting monsters
|
|
and post-Wizard harassment
|
|
prevent swallowing monster ending up in a solid wall if it killed vault guard
|
|
fix attached ball getting deallocated if swallowed, going down into a pit,
|
|
and saving
|
|
level compiler creates correct novel with supplied name
|
|
for farlook, describe water in the castle moat and in Juiblex's swamp as moat
|
|
and as swamp, respectively, rather than just as "water"
|
|
make hezrous emit poison clouds when they move
|
|
stepping from one type of terrain to another was triggering an unnecessary
|
|
status update
|
|
make shriekers summon baby purple worms if purple worms would be too tough
|
|
make non-tame (baby) purple worms eat corpses off the ground
|
|
make baby purple worms attack shriekers
|
|
make hero polymorphed into baby purple worm warned against shriekers
|
|
confused scroll of light summons tame cancelled lights
|
|
potions of hallucination can give enlightenment
|
|
add a small chance of surviving food poisoning
|
|
deliberate level teleporter activation ignores magic resistance
|
|
auto-id scroll of remove curse when a known buc-state was changed
|
|
demon lords hate Demonbane
|
|
pets avoid eating shapeshifter corpses unless starving or nearly feral
|
|
blessed scroll of teleportation gives a single controlled teleport
|
|
allow opening a tin without interruption if slimed
|
|
tell player when wielding a different weapon toggles off dual-wielding
|
|
object taking erosion damage might give feedback message when out of view
|
|
or not give such when in view, depending on stale value of 'bhitpos'
|
|
[cited case assumed message came from drowned monster's dropped
|
|
inventory when out-of-view ice melted]
|
|
it's possible to wish for tins of the Riders in wizard mode; eating one is
|
|
fatal but if you're life-saved or decline to die, the game crashed
|
|
revival via undead turning of corpse carried by hero said "your <mon> corpse
|
|
comes alive" even when revived monster was undead
|
|
prevent searching or waiting next to a hostile monster - override with 'm'
|
|
allow random mimics to show up mimicing more furniture than just stairs
|
|
scatter exploding bag of holding contents instead of outright deleting them
|
|
male hero poly'd into nymph chooses charm vs seduce message based on being
|
|
male rather than on all nymphs being female but charm message was
|
|
using hardcoded pronouns She,her for target monster--wrong for male
|
|
target and noticable if "<mon> finishes taking off his suit" is given
|
|
hostile monsters with launcher and ammo try to stay away from melee range
|
|
allow displacing peaceful creatures
|
|
unicorn horns don't restore attribute loss anymore
|
|
when a shop is changed from food to health food, change room type to match
|
|
wish parsing of things containing monster names would accept all supported
|
|
alternate spellings if they occurred at the end ("corpse of mumakil")
|
|
but only some when they occurred elsewhere ("gray-elf corpse" worked,
|
|
"mumakil corpse" yielded "does not exist") depending upon name length
|
|
couldn't wish for werecreature corpse or tin because monster name lookup
|
|
always matched the beast form which is flagged no-corpse; switch to
|
|
human form for "were<creature>"
|
|
wishing for werecreature figurine always made one that created the monster in
|
|
beast form if activated; allow "human were<creature>" to explicitly
|
|
specify werecreature's human form (for corpses and tins as well as
|
|
figurines); override the restriction against human figurines for that
|
|
wishing for "royal jelly" yielded "lump of royal jelly" as a special case, but
|
|
other 'of' items such as "clove of garlic", "sprig of wolfsbane", or
|
|
"piece of cloth" didn't allow using their post-of words as shorthand
|
|
monster or object detection found semi-dead vault guard at <0,0> while
|
|
traversing fmon list; monster detection gave misleading feedback
|
|
(blank map instead of 'strange feeling') if there were no other
|
|
monsters on level; likewise object detection and guard's minvent
|
|
squadprob[] in mkroom.c was defined with 5 elements but initialized only 4
|
|
resulting in giant ants sometimes
|
|
allow nurses heal attack when wielding a non-weapon/weaptool
|
|
if riding or levitating, hero could apply bullwhip downward to pull up things
|
|
from underwater or lava; feedback implied the item was on the surface
|
|
some monster code was checking whether pets or engulfers were eating green
|
|
slime by checking for green slime corpse instead of glob
|
|
change light radius of stack of candles to square root
|
|
could get redundate "mon hits other-mon" messages when mon wields an artifact
|
|
failed untrap while mounted that moved hero onto the trap would leave steed
|
|
with stale coordinates, triggering warnings if 'sanity_check' is On
|
|
when hold_another_object() fails while hero is swallowed, drop the item into
|
|
swallower's inventory instead of onto the floor
|
|
when digging a pit results in it being filled by adjacent pool or lava, any
|
|
objects at the spot weren't subjected to water or fire damage;
|
|
also, riding hero's steed wasn't subjected to immersion either
|
|
after "double trouble", cloned Wizard would wait until he had suffered some
|
|
damage or hero moved into direct view; keep STRAT_WAIT for original
|
|
Wizard but avoid that for clones
|
|
|
|
|
|
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
|
|
------------------------------------------------------------------
|
|
fix compile when DLB isn't defined
|
|
urealtime.realtime was being incorrectly calculated
|
|
revised "mysterious force" when climbing out of gehennom could generate
|
|
warnings about "rn2(0) attempted" or "rn2(-n) attempted"
|
|
after 'w' on split stack patch, wielding '-' would cause an object_lost panic
|
|
same patch allowed partial stack from getobj to replace cursed wielded weapon
|
|
autounlock of door or chest took no time; chest case depended on whether
|
|
anything got looted along with the unlocking
|
|
autounlock with artifact unlocking tool didn't do touch check on that tool
|
|
autounlock picked Rogue's artifact key over lock-pick or credit card (or
|
|
ordinary key depending upon invent order) even for non-rogues who
|
|
would be blasted when touching it
|
|
wielded aklys had its "(tethered weapon...)" description scrambled
|
|
randomized trap name could pick trap #0 which isn't a trap and yielded "water"
|
|
if running and Blind or Stunned or Fumbling or Dex < 10, encountering a closed
|
|
door orthogonally would keep reporting "ouch! you bump into a door"
|
|
repeatedly until eventually interrupted by approaching monster or
|
|
hunger or ^C
|
|
data.base lookup of an entry with any blank lines would falsely claim that
|
|
"'data' file in wrong fromat or corrupted" after some extra checks
|
|
were added while investigating tab handling anomalies
|
|
using nhl_error() to report a Lua processing problem would clobber the stack
|
|
level teleporation's "You materialize on a different level!" could be given
|
|
out of sequence with other arrival messages
|
|
more sequencing: if wielding Sting or similar and level teleporting to a
|
|
level with different warning effect, the start-glowing or stop-glowing
|
|
message came before the materialize message on the destination level
|
|
prevent "you materialize on a different level" after "a mysterious force
|
|
prevents you from descending" if you try to level teleport past the
|
|
stairs down from the quest home level before being granted access
|
|
creating Mine Town variant 1 (Orcish Town) sometimes complained about being
|
|
unable to place lregion type 1 and failed to have any staircase up
|
|
set g.context.botl for glove and wielding actions that could start or end
|
|
bare-handedness in support of condtests[bl_bareh]
|
|
reinstate ranked ordering of the status condition fields
|
|
grammar for messages about a monster removing items from a container was bad
|
|
some new status conditions didn't always update when they should
|
|
fix flipping non-existent stairs and ladders (github #311)
|
|
fix door created into random wall or position opening into solid wall
|
|
'use_inverse' option was accidentally made Windows-only; change it back to
|
|
being more general; change its default to True
|
|
change inconsistent achievement spelling of "Mine Town" to "Minetown"
|
|
fix crash in water_damage_chain
|
|
teleport feedback "you materialize at another location" was given too soon
|
|
'mention_decore' was repeatedly reporting "you are back on bottom" when
|
|
moving around underwater
|
|
revised 'mention_decor' was describing furniture or ice right before look-here
|
|
described the same thing when stepping onto object(s)
|
|
poison gas clouds located over known but unlit pools were visible as known
|
|
clouds but steam clouds in that situation were not
|
|
after the wish parsing change, wishing for "<something of monster>" or for
|
|
"<monster something>" worked as intended but wishing for "<monster>"
|
|
(where <monster> used the canonical spelling) triggered a crash
|
|
fix new "objects[0] class #1 not in order!" panic if plain 'char' is unsigned
|
|
tty: redraw unexplored locations as S_unexplored rather than <space> after
|
|
map has been partially overwritten by popup menu or text display
|
|
tty: previous change resulted in remnants of previous level being shown on
|
|
new level after level change when S_unexplored is <space>
|
|
X11: was still initializing map to 'stone' instead of 'unexplored' after they
|
|
became separate glyphs
|
|
X11: for text map without color, add support for black&white ice; draw it in
|
|
inverse video to distinguish from ordinary floor
|
|
|
|
|
|
Platform- and/or Interface-Specific Fixes
|
|
-----------------------------------------
|
|
msdos: Add -DSTATUES_LOOK_LIKE_MONSTERS to Makefile1.cross so the VESA mode
|
|
can display statue glyphs.
|
|
tty: role and race selection menus weren't filtering out potential choices
|
|
which got excluded by OPTIONS=align:!lawful or !neutral or !chaotic
|
|
windows: update for new status condition fields
|
|
X11: substantial overhaul of status display, both 'fancy' and 'tty-style'
|
|
X11: extend fancy status one-turn inverse video status-change highlighting to
|
|
hunger, encumbrance, and conditions
|
|
X11: stop including unused column 0 in the map
|
|
|
|
|
|
General New Features
|
|
--------------------
|
|
if a killer bee encounters a lump of royal jelly and there is no queen bee on
|
|
the level, the bee will eat the jelly and become a new queen
|
|
automatic annotation "gateway to Moloch's Sanctum" for vibrating square level
|
|
once that square's location becomes known (found or magic mapped);
|
|
goes away once sanctum temple is found (entered or high altar mapped)
|
|
savefile: add support to deconstruct internal data structures down into their
|
|
individual fields and save those fields instead of the entire struct
|
|
savefile: use little-endian format for fields where that makes a difference
|
|
replace build-time level compiler and dungeon compiler with run-time loading of
|
|
the dungeon and level descriptions and interpreting them via Lua
|
|
split off some of the functionality that was in makedefs (compiled-in options
|
|
build date/time, etc) so that it can be built by a cross-compiler
|
|
and accessed on the target platform
|
|
replace quest.txt and associated conversion to quest.dat via makedefs with
|
|
Lua quest texts loaded at runtime
|
|
some altars are displayed in different colors (for tty and curses at least)
|
|
add 'quick_farsight' option to provide some control over random clairvoyance
|
|
where pausing to be able to browse temporarily visible aspects of the
|
|
revealed map can seem intrusive; doesn't affect clairvoyance spell
|
|
replace "money" in in-game texts with "gold"
|
|
when hallucinating, see hallucinated currencies instead of bits for an ale
|
|
when hallucinating, see hallucinated liquids when looking at water or lava
|
|
on the map
|
|
applying a spellbook hints about read charges left
|
|
wizard mode wishing for level topology can now create hidden doors (ask for
|
|
"secret door" when at a door or wall location), hidden corridor
|
|
spots ("secret corridor" at a corridor location), and clouds
|
|
tiny chance for randomly created spellbooks to be Discworld novels instead
|
|
of having only one in the first book or scroll shop created (won't
|
|
occur in hero's initial inventory or NPC priest inventory or be
|
|
bestowed as a prayer boon or be found in statues)
|
|
'goldX', 'implicit_uncursed', and 'mention_walls' options changed to be
|
|
persistent across save/restore
|
|
wearing a wet towel confers "half damage from poison gas" attribute
|
|
for end of game disclosure and dumplog, show 'achievements' (previously only
|
|
available as an encoded value in xlogfile) along with 'conduct'
|
|
more grades of self-appearance than beautiful or handsome vs ugly
|
|
when 'color' if Off and 'use_inverse' is On, draw ice on the map in inverse
|
|
video if it uses the same character as room floor or as dark floor
|
|
new 'mention_decor' option; when On, describe dungeon features being stepped
|
|
on or floated/flown over even when they're not covered by objects
|
|
applying royal jelly on an egg kills, revives, or changes the egg
|
|
intelligent monsters pick up and rummage through containers
|
|
toggling 'travel' option Off now only inhibits travel by mouse click, not by
|
|
'_' command where choosing the destination provides a chance to cancel
|
|
different glyphs and symbols for stone and unexplored areas
|
|
new glyph GLYPH_NOTHING was added so !dark_room has something to be set to
|
|
now that stone could be mapped to an entirely different symbol
|
|
added several new status conditions all of which are opt-in except
|
|
the new cond_grab and cond_lava which are opt-out
|
|
tipping your cap might get a response
|
|
special levels can be flipped horizontally and/or vertically
|
|
new special level initialization routine, "swamp"
|
|
demon lords and princes suppress teleporting in Gehennom
|
|
for !fixinv option where inventory letters normally don't stick, try to put
|
|
a throw-and-return weapon back into the same inventory slot it gets
|
|
thrown from; only works if it does return and is successfully caught
|
|
wizard mode #wizborn command
|
|
include more skill information in ^X output when dual-wielding
|
|
item-using monsters will zap wand of undead turning at corpse-wielding hero
|
|
when the corpse is harmful
|
|
boiling a pool or fountain now creates a temporary cloud of steam
|
|
random themed rooms in the dungeons of doom
|
|
extended achievement and conduct fields for xlogfile
|
|
record amount of gold in hero's possession in xlogfile
|
|
|
|
|
|
Platform- and/or Interface-Specific New Features
|
|
------------------------------------------------
|
|
|
|
|
|
NetHack Community Patches (or Variation) Included
|
|
-------------------------------------------------
|
|
hallucinatory trap names from github pull request #174
|
|
autounlock feature originally from unnethack in github pull request #228
|
|
replace "You feel cold" message for freezing unseen door (github #265)
|
|
applying a candelabrum with no candles gives a tip (github #265)
|
|
candelabrum now reads "(n of 7 candles attached)" (github #265)
|
|
show appropriate message on throne when crowned (github #265)
|
|
choir chanting, bathing in darkness for death by Moloch (github #265)
|
|
remove "iron hook" unidentified description (github #265)
|
|
suppress "Unknown command" messages in the dumplog. (github #265)
|
|
give player message informing them they can use #enhance (github #265)
|
|
neutral sacrifices disappear in a cloud of smoke (github #265)
|
|
call potion bottles by nonsensical names if hallucinating (github #265)
|
|
add a default message for chatting to gnomes (github #265)
|
|
better reporting directions for impossible() (github #265)
|
|
underwater fire scroll causes vaporization (github #265)
|
|
default shk sell prompt to N (github #265)
|
|
teach non-mindless monsters about the Castle trapdoors (github #265)
|
|
always print a message when the hero teleports (github #265)
|
|
always print a message when the hero level teleports (github #265)
|
|
remove Sokoban luck penalties for actions you can't cheat with (github #260)
|
|
sounds for minotaurs (github #298)
|
|
correct the Guidebook descriptions for msdos video_width and video_height to
|
|
state that they work with video:vesa; the video:vga setting that was
|
|
described there forces the 640x480x16 mode where video_width and
|
|
video_height don't operate (github #294)
|
|
redo rndmonst() to operate in a single pass (github pull request #286)
|
|
|
|
|
|
Code Cleanup and Reorganization
|
|
-------------------------------
|
|
new core file insight.c - move enlightenment and conduct from cmd.c to it,
|
|
also move vanquished, genocided, and extinct monsters from end.c,
|
|
and move one-line stethoscope/probing feedback from priest.c
|
|
move majority of global variables into instance_globals struct g
|
|
move zeroobj, zeromonst, zeroany into const_globals struct cg
|
|
remove STATIC_DCL, STATIC_OVL, STATIC_VAR, STATIC_PTR
|
|
old Qt moved from win/Qt to win/Qt3 and files renamed to use qt3_ prefix
|
|
more current Qt for Qt version 4 and 5 moved from win/Qt4 to win/Qt; qt4
|
|
moniker changed to qt_
|
|
window-port-interface: add_menu() modified to take a more general itemflags
|
|
parameter to support uses beyond just 'preselected'
|
|
window-port-interface: start_menu() modified to take a new mbehavior parameter
|
|
add some bounds checking to tabexpand (doesn't prevent the apparent compiler
|
|
optimization bug that put homebrew OSX executable into endless loop)
|
|
unified breamm and breamu
|
|
added some stair helper functions
|
|
unified the code for finding a queen bee
|
|
unified the code for multishot class bonus code
|
|
unified the code for obtaining the inventory letter value for sortloot
|
|
unified the code for (un)locking boxes in inventory
|
|
unified the code for finding room pos for some features
|
|
unified the code for revealing hiding monsters for mvm attacks
|
|
options overhaul: moved the option definitions into include/optlist.h;
|
|
combined the boolean and compound options into one allopt[] array;
|
|
each option has its own individual function for setting the option,
|
|
for retrieving the option value, and for processing the option
|
|
following its selection in the 'O' menu, added doc/options.doc file.
|
|
function reglyph_darkroom() relocated from options.c to display.c
|
|
resurrect 'makedefs -m' to be able to derive default mons[].diffculty values
|
|
suitable for assigning to new or changed monsters
|
|
convert obj->oextra->omid from pointer to scalar
|
|
get rid of unused obj->oextra->olong
|
|
|