861 lines
53 KiB
Plaintext
861 lines
53 KiB
Plaintext
NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.413 $ $NHDT-Date: 1609442596 2020/12/31 19:23:16 $
|
|
|
|
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 if boolean option
|
|
safe_wait is on - 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 a spit attack or 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 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
|
|
beyond turn 100000, prayer timeout is longer (scaling with game length)
|
|
falling while going down stairs and dropping items due to encumbrance or
|
|
punishment wasn't subjecting fragile ones to breakage
|
|
objects scattered by an explosion which land on water or lava weren't affected
|
|
by the water or lava
|
|
hold_another_object (for wishing, horn of plenty, theft while poly'd, other
|
|
non-pickup actions giving hero another inventory item) wasn't
|
|
reporting change in encumbrance; that would catch up on next turn but
|
|
could be off during additional move(s) for current turn
|
|
hold_another_object added item to inventory first, then maybe removed and
|
|
dropped it, resulting in spurious add and remove perm_invent updates
|
|
hold_another_object used hardcoded Stressed to limit carrying instead of
|
|
using the 'pickup_burden' option for that
|
|
when hold_another_object fails while hero is swallowed, drop the item into
|
|
swallower's inventory instead of onto the floor
|
|
change mkclass() to usually honor (always honor for L class) the hell-only and
|
|
never-in-hell monster creation flags; no more achi-lich in the Castle
|
|
(nor master lich there unless demilich gets a potion of gain level)
|
|
thieving monster could be killed while hero was removing armor, triggering
|
|
warning "stealarm(): dead monster stealing" when taking-off finished
|
|
petrifying a long worm and then reanimating it handled tail incorrectly;
|
|
with sanity_check On, X coordinate of head segment was reported as 0
|
|
attempting to read a novel while blind reported "you can't read the mystic
|
|
runes" like for a spellbook; use "you can't read the words" for novel
|
|
don't let life draining reduce a monster's max HP below its level + 1
|
|
report "<Mon> expires" rather than "<Mon> dies" if polymorphed hero kills a
|
|
non-living monster (golem, vortex) with life drain (vampire bite)
|
|
allow hero in silver-hating form to ring the silver bell but only if on/over
|
|
the vibrating square
|
|
reading the Book of the Dead while blind is allowed; doing so gives
|
|
"you turn the pages of the Book of the Dead" and the type of item
|
|
becomes discovered, but the object wasn't being flagged as 'dknown'
|
|
so if not seen yet it remained "a spellbook" in hero's inventory
|
|
reading cursed Book of the Dead while blind gave feedback for sighted hero
|
|
reading non-cursed Book of the Dead after prepping with the other tools gave
|
|
a message referring to those as "artifacts" if either of them were
|
|
cursed; those unique items aren't artifacts so use "relics" instead
|
|
zapping a line of boulders with striking or force bolt was updating 'couldsee'
|
|
but deferring 'cansee', resulting in seeing the first boulder fracture
|
|
and only hearing that happen for the others despite coming into view
|
|
the default engraving, epitaph, and bogus monster inserted by 'makedefs -s'
|
|
(3.6.6 fix for empty source data file) lacked terminating newline, so
|
|
when the corresponding file wasn't actually empty its first line ended
|
|
up concatenated; default portion of the bad combined entry would be
|
|
decrypted properly but the portion from the file's first line wouldn't
|
|
if the Wizard of Yendor fled up the stairs on level 1, the game would behave
|
|
as if he was still in play, but he wouldn't be on migrating monsters
|
|
list so couldn't be brought back and wouldn't appear on Plane of Earth
|
|
(stale non-zero value for context.no_of_wizards)
|
|
if a mind flayer's psychic blast targetted a hidden monster, feedback named
|
|
the monster but it wasn't brought out of hiding
|
|
hero poly'd into a mind flayer who used #monster to emit a psychic blast was
|
|
able to harm mindless monsters with it
|
|
some hero attacks that should have gotten a skill bonus or penalty didn't
|
|
change internal name of "<foo> venom" to "splash of <foo> venom"
|
|
some operations that made sense to handle venom ('D', scroll of identify, no
|
|
doubt others) ignored it because venom is suppressed from packorder;
|
|
matters for wizard mode or for normal play that loads wizard bones
|
|
singularize "splashes" to "splash" instead of "splashe"
|
|
treat slinging gems and tossing or slinging stones at unicorns as attacks
|
|
give rot-away timer instead of revive timer to corpses of cancelled trolls
|
|
switch revive timer to rot-away timer if a troll corpse gets cancelled
|
|
uncancel an ice troll if its corpse is put into an ice box; give corpse a
|
|
revive timer if later taken out
|
|
splitting a stack of candy bars gave new wrapper text depending upon the
|
|
obj->o_id value assigned; keep existing text for both halves of stack
|
|
(side-effect: separate candy bars usually won't merge anymore)
|
|
describing tin variety (deep fried, pureed, &c) relied on the 'contents known'
|
|
flag but object identification wasn't setting obj->cknown for tins
|
|
wizard mode #wizintrinsic: setting Levitation wouldn't block Flying as
|
|
intended because the check for that was being made too soon
|
|
chatting to the quest leader in wizard mode with sufficient experience level
|
|
and insufficient piety, player is asked whether alignment should be
|
|
boosted; answering 'n' resulted in being prompted a second time
|
|
leashing or unleashing pets wasn't updating persistent inventory window
|
|
end of game inventory disclosure passed an inappropriate argument to the
|
|
inventory display routine; not noticeable for tty and curses,
|
|
noticeable but not harmful for X11, and slightly harmful for Qt
|
|
turning into slime rendered hero as slime one turn too soon
|
|
avoid potential infinite loop if hangup occurs at ring "right or left?" prompt
|
|
randomize the turns where accessories and extrinsics affect nutrition
|
|
handle being interrupted by approaching monsters more consistently
|
|
if hero attacked a peaceful monster, some other peaceful monsters with humanoid
|
|
shape (minotaur, zruty, perhaps others) that witnessed it but which
|
|
shouldn't be capable of normal speech expressed their surprise audibly
|
|
make gasp/exclamation message from peaceful monsters be more verbose to
|
|
indicate which monster is doing the gasping or exclaiming
|
|
when make was invoked with -j makedefs instances could end up running in
|
|
parallel and could trample on each other's temp files; default to
|
|
using mkstemp(); allow a port runtime library implementation that lacks
|
|
mkstemp() to define HAS_NO_MKSTEMP to revert to the old behaviour;
|
|
provide a work-alike mkstemp() implementation for windows visual studio
|
|
in mdlib.c so there is no requirement to define HAS_NO_MKSTEMP there
|
|
make piranhas faster and give them extra bite attack
|
|
fire sources can ignite candles, lamps, and potions of oil
|
|
for multiple drop ('D') with menustyle traditional or combination, if the only
|
|
object class player picked was '$' then it operated on all classes
|
|
small monsters could seep through their shirt
|
|
don't snuff brass lantern when it's hit by water unless it is submerged
|
|
when reporting that hero can't repair a chest's broken lock with key/pick/card
|
|
just describe the base item without BUC, user assigned name, &c since
|
|
"You can't repair a chest's lock with an uncursed key." implicitly
|
|
suggests that you might be able to do so with a blessed or cursed one
|
|
pre-populate teleport destination prompt with travel destination
|
|
ghosts cannot be renamed
|
|
tossed upwards objects got two times half physical damage reduction
|
|
monster xorns could pass through iron bars but not eat them; monster rock
|
|
moles could no neither; now they can eat bars when adjacent and will
|
|
do so if the bars are blocking their path
|
|
hero poly'd into rust monster could implicitly eat bars when adjacent by
|
|
trying to move there, now when in rock mole form too; in xorn form
|
|
can explicitly eat them via 'e' after moving onto their spot
|
|
monster hiding under an egg that hatched was kept hidden
|
|
restful sleep regenerates hit points
|
|
attacking non-adjacent concealed mimic by applying a polearm would make the
|
|
hero be stuck to that mimic
|
|
hero could break a wand ("raising the wand high over your head, you break it
|
|
in two") even if hands were welded to a two-handed weapon or to a
|
|
one-handed weapon and also to a shield
|
|
if a monster threw a cocktrice egg at the hero but hit and petrified another
|
|
monster, the hero would get credit/blame for killing it
|
|
update persistent inventory when putting on a helmet causes it to auto-curse
|
|
since ki-rin look quite a bit like unicorns, make them be more like one:
|
|
allow them to use their own horn to cure themselves; remove M1_ANIMAL,
|
|
change MS_NEIGH to MS_SPELL, add MR_POISON, use horse body parts;
|
|
they're still 'A' rather than 'u' and don't care about gems
|
|
wand/scroll of create monster or bag of tricks that makes a new monster which
|
|
can be seen or sensed becomes discovered, but was doing so even for a
|
|
concealed mimic seen as furniture or an object
|
|
'showscore' could be used to determine how much gold was inside a container
|
|
whose contents were unknown
|
|
wizard mode (only way to get timed flying): if levitation and flying time out
|
|
on same turn, player was told "You have stopped levitating and are
|
|
now flying."; status line wasn't updated to remove stale Fly condition
|
|
throwing or kicking a shop container (that's light enough to move) made the
|
|
hero pay for any gold inside, then didn't refund that amount if the
|
|
container landed inside the shop
|
|
try to fix message sequencing for tame golems that "roast/rot/rust in peace"
|
|
autodescribe when moving the cursor was erroneously honoring MSGTYPE=stop
|
|
and potentially delivering sounds
|
|
reduce the number of "seeXYZ" commands by renaming some: #seenv -> #wizseenv,
|
|
#seegold -> #showgold, #seespells -> #showspells, #seetrap -> #showtrap
|
|
when saving while punished or game ends while punished, handling for ball and
|
|
chain might access freed memory with unpredictable consequences
|
|
brown pudding monster hitting another monster with decay attack corroded armor
|
|
instead of rotting it
|
|
<?> -> <full key bindings> omitted 'n' prefix and M-digit for number_pad mode,
|
|
and ^A/re-do was suppressed due lack of obsolete '#define REDO'
|
|
add missing key binding support for rush.numpad; default is M-5 for numpad==1
|
|
or plain 5 for numpad==2 where behavior of 5 and M-5 are swapped
|
|
allow monsters to use wand of undead turning to revive corpses on floor
|
|
in some situations
|
|
selling a container to a shop for gold leaves any contents that the shop
|
|
doesn't ordinarily buy and sell owned by the hero, but selling the
|
|
container for credit resulted in the shop taking poesession of such
|
|
contents without giving any additional credit; mark out of place
|
|
contents 'no_charge' so that hero can reclaim them without buying
|
|
add some new demonic and angelic maledictions
|
|
when fire damage dried a wet towel, it would never reduce the wetness to 0
|
|
when water damage wet a towel, the new wetness might randomly become less
|
|
when the wetness of a towel in inventory changed, persistent inventory wasn't
|
|
updated to show that
|
|
make Death revive earlier, and all the Riders after 67 turns at latest
|
|
when protection from shape changers begins, force mimic out of concealment
|
|
even if hero can't see its location; for locations that can be seen,
|
|
don't make double-trouble Wizard concealed as another monster--or pet
|
|
temporarily mimicking something while eating mimic corpse--fall asleep
|
|
best possible armor class reduced from -127 to -99; worst from +127 to +99;
|
|
charged or enchanted individual items also capped at +/- 99 (affects
|
|
wizard mode wishing, negligible effect on normal play)
|
|
fix several inconsistencies for objects at hole locations
|
|
make repeat (^A) work when bound to some other keystroke
|
|
if a prefix key was bound to some character which ordinarily ran a regular
|
|
command and that command wasn't bound to another key, typing the
|
|
prefix followed by a non-movement key behaved strangely: instead
|
|
of reporting "invalid direction" it would run the other command
|
|
(actually depended upon relative order of prefix's new and old key)
|
|
reqmenu (the request-a-menu prefix supported by a handful of non-movement
|
|
commands) could be bound to some key other than 'm' but it only
|
|
worked if the new key was also a movement prefix
|
|
|
|
|
|
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
|
|
handle gone portal when going back in quest
|
|
'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
|
|
only generate shop items on solid floor squares
|
|
avoid gcc 10 warning by removing duplicate definition of 'head_engr'
|
|
if a monster removed a corpse from an ice box, the corpse would never rot away
|
|
monster creation on quest levels could make genocided creatures
|
|
enabling wizard mode 'sanity_check' option would complain about invalid mhpmax
|
|
value for level N monsters created with a d8 value of 1 for all N d8's
|
|
disable that extra check because gremlim HP split after cloning triggers it
|
|
some versions of tiles processing (not X11's) complained about the rename of
|
|
"{acid,blinding} venom" to "splash of {acid,blinding} venom"
|
|
wizard mode #timeout changed to show timed Displacement in 'can be timed in
|
|
normal play' section instead of 'timed via #wizintrinsic only' section
|
|
the fix to make worm visibility checks work as intended forced the coordinates
|
|
of the extra tail segment co-located with the worm monster to match
|
|
the worm instead of leaving it off the map; place_worm_tail_randomly()
|
|
reverses the segments and can throw some away if there isn't room,
|
|
but throwing away the extra segment removed the worm from the map
|
|
using 'O' to try to change 'symset' was a no-op; 'roguesymset' worked
|
|
change default for lit attribute in special level des.terrain directives to
|
|
'unchanged' instead of 'unlit'
|
|
replace worm tail placement code that reportedly led to a sanity_check warning
|
|
[no actual code problem found; might be compiler bug for 'xchar']
|
|
learn scroll of teleportation after reading even when random destination is
|
|
right by starting spot
|
|
fix off-by-one bug in dimensions of theme rooms
|
|
fire/frost horn feedback when zapped by monster was inaccurate (falsely
|
|
claimed that it was "directed at self" when attacking hero)
|
|
tins of spinach and 'dead' eggs could cause out of array bounds access
|
|
attempting to index into mons[] by polyfodder() macro
|
|
options help ('? g') listed all boolean options, then repeated them among
|
|
the compound options; on OSX they showed a description of "(null)"
|
|
but for other sprintf implementations they might cause a crash
|
|
change name of #wizlevelflip to #wizfliplevel
|
|
dwarves could sometimes pass through walls without digging their way
|
|
fix genetic engineers dropping Schroedinger's cat box
|
|
the checks and handling for fountains, sinks, and drawbridges were being
|
|
missed during liquid_flow
|
|
monster movement flags unification allowed displacer beasts to displace Riders
|
|
a long worm with no visible segments (but one internal segment) might trigger
|
|
warning: tail 'segement' at <0,some_y>, worm at <mx,my> if teleported
|
|
adding displacer beast inadvertently introduced a regression in swapping with
|
|
pets, allowing them to be pulled into water by hero on/over water
|
|
splitting #if MAIL into #if MAIL_STRUCTURES and #if MAIL made it possible to
|
|
wish for and write scrolls of mail with MAIL disabled, but attempting
|
|
to read such a scroll issued impossible "What weird effect is this?"
|
|
remove M2_MALE flag that was unintentionally left on dwarf lord/lady/leader
|
|
entry and was preventing female incarnations
|
|
tilemap.c wasn't building if STATUES_LOOK_LIKE_MONSTERS wasn't defined; also,
|
|
to match the code that should be defined so change the preprocessor
|
|
test to 'ifndef STATUES_DONT_LOOK_LIKE_MONSTERS'
|
|
ensure that monster female name variation ends up as a female during ^G
|
|
arbitrate when there is a conflict between gender term (male or female) and
|
|
a gender-tied monster name (cavewoman) during ^G; gender term wins
|
|
wizard mode sanity check complained about Wizard's clone mimicking a monster
|
|
new ^G gender-naming handling code required a guard against null permonst
|
|
pointer which could occur under some circumstances
|
|
replace "aligned priest" entries in Pri-loca.lua, astral.lua, minetn-1.lua,
|
|
and sanctum.lua, with "aligned cleric"
|
|
attempting to swap places with a peaceful monster might cause it to flee
|
|
gender-specific monster names can be used in .lua files with the gender upheld
|
|
|
|
curses: 'msg_window' option wasn't functional for curses unless the binary
|
|
also included tty support
|
|
Qt: at Xp levels above 20 with 'showexp' On, the combined status field
|
|
"Level:NN/nnnnnnnn" was too big and truncated by a char at each end
|
|
Qt: searching a text window for something that wasn't found and then searching
|
|
for some other target could crash
|
|
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>
|
|
Unix: after lua changes to Makefiles, 'make spotless' for dat subdirectory
|
|
left some generated data files which should have been deleted
|
|
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
|
|
-----------------------------------------
|
|
SYSCF: treat most sysconf directives that have invalid values as warnings
|
|
rather than errors; use a conservative default value and continue
|
|
curses: for vertical status, line up conditions in columns; usually two but
|
|
condense to three per line if the status window isn't tall enough
|
|
[at present, highlighting with inverse video includes trailing spaces
|
|
used to align entries in their columns--that's a feature...]
|
|
msdos: add -DSTATUES_LOOK_LIKE_MONSTERS to Makefile1.cross so the VESA mode
|
|
can display statue glyphs
|
|
Qt: quit if can't load tiles file instead of continuing and then segfaulting
|
|
Qt: [later] tiles load failure at startup now continues using an ascii map
|
|
Qt: use more columns for extended command selection dialog so that the number
|
|
of rows needed doesn't result in some commands being unaccessible
|
|
Qt: suppress wizard mode commands from '#' handling when not in wizard mode
|
|
Qt: organize extended command selection grid by columns instead of by rows
|
|
(first N entries down left column, next N entries down 2nd column, &c)
|
|
Qt: when selecting an extended command by typing its name, support <delete>
|
|
(aka <rubout>) in addition to <backspace> to go back a character
|
|
Qt: switch to fixed-width font for menus
|
|
Qt: don't disable [cancel] button when viewing inventory or other pick-none
|
|
menus; ESC works to dismiss those and [cancel] should be the same
|
|
Qt: clicking on the window's Close button brought up a dialog offering
|
|
choices of "Save" and "Cancel"; picking Cancel sent nethack into an
|
|
infinite loop with complaints about Qt's event loop already being
|
|
active; change dialog: offer "Save and exit" or "Quit without saving"
|
|
with no opportunity to try to back out of the Close operation
|
|
Qt: add 3.6 status fields Stone, Slime, Strngl, Deaf, Lev, Fly, Ride
|
|
Qt: add Attributes, Overview, and Annotate to the "Info" pull down menu
|
|
Qt: rename menu entries game->Save to game->Save-and-exit and game->Quit
|
|
to game->Quit-without-saving
|
|
Qt: menu commands are now working; commands invoked via M-c were having that
|
|
keystroke changed to '?', bringing up nethack's help menu; now those
|
|
send #abc with just enough letters to disambiguate from other commands
|
|
("Compilation" is one remaining problem; it yields "#version" which
|
|
brings up '#' menu subset with choices of "version" and "versionshort")
|
|
Qt: "paper doll" subset of persistent inventory has undergone several changes:
|
|
show previously missing quiver below weapon instead of duplicating
|
|
gloves there; show secondary weapon in shield slot and blank out
|
|
alternate weapon slot when two-weapon combat is active; show wielded
|
|
two-handed weapon in both the shield and primary weapon slots; show
|
|
first active light source in a previously unused slot on lower right;
|
|
show first leash-in-use in a previously unused slot on lower left
|
|
Qt: paper doll inventory view was inconsistently updated during Hallucination
|
|
Qt: when hero died, gold on tombstone only included gold in inventory, not
|
|
any additional gold inside carried containers; also, inventory gold
|
|
will be zero if bones get created for all 3.6.x and for 3.4.x+GOLDOBJ
|
|
Qt: tombstone showed newly constructed date instead of the value set up at
|
|
time of death; it only shows year but that could be wrong if player
|
|
stared at or ignored prior --More-- for long enough on 31 December
|
|
Qt: menu choices All, None, Invert were setting, unsetting, or toggling menu
|
|
entry checkboxes internally but didn't redraw the menu to show that
|
|
Qt: fix the F1/F2/Tab macro keys to not require that number_pad be On
|
|
Qt: unhighlight highlighted message (last one issued) after player has seen it
|
|
Qt: update message window's last message with player's response if it's a
|
|
prompt string for a single-character of input (ynaq or invent letter)
|
|
Qt: for line input, display the prompt+response in the message window
|
|
Qt: enable the popup_dialog WC option (result is a bit flakey but usable)
|
|
Qt: 3.6 catchup - show unexplored locations as unexplored rather than as stone
|
|
Qt: tried to honor 'showexp' but the value was unintentionally suppressed by
|
|
[lack of definition for] obsolete conditional EXP_ON_BOTL
|
|
Qt: implement --More-- prompt to support MSGTYPE=stop
|
|
Qt: for menu search, don't require clicking on the search target popup before
|
|
typing target string (was using typed letters to make menu selections
|
|
if player didn't click on the popup first)
|
|
Qt: rest ("Zz") button on the toolbar only worked when 'rest_on_space' was On
|
|
(core issue, not Qt's fault)
|
|
Qt: rename toolbar button "Get" and action menu choice "Get" to "Pick up"
|
|
Qt: status icons for alignment|hunger|encumbrance which started out centered
|
|
relative to the label text below them would shift to being left
|
|
justified when status got updated
|
|
Qt: handle '&' properly if it occurs as part of yn_function popup dialog
|
|
Qt: fix the display side of saved game selection; character names for
|
|
available save files are shown in a column of push buttons instead
|
|
of each button overwriting all the ones before it
|
|
Qt: don't clobber an existing save file after choosing "new game" in the
|
|
saved game selection widget
|
|
Qt: don't get stuck in a loop after choosing "play" while the character name
|
|
field is empty in the character selection widget
|
|
Qt: when a new message is issued, pan the message window to its left edge if
|
|
player panned it horizontally then didn't manually scroll it back
|
|
Qt: there was no way to enter extended command "#version" by typing; command
|
|
name matching was waiting to disambiguate it from "#versionshort"
|
|
and the only way to that was to type #version<return> but <return>
|
|
explicitly triggered rejection, cancelling '#' processing
|
|
Qt: {maybe just Qt+OSX:} when viewing a text window ('V' to look at 'history'
|
|
for instance), clicking on [Search], entering a search target in the
|
|
resulting popup and clicking on [Okay] or typing <return>, the text
|
|
window got pushed underneath the main window so seemed to go away
|
|
Qt+OSX: fix control key
|
|
Qt+OSX: rename menu entry "nethack->Preferences..." for invoking nethack's
|
|
'O' command to "Game->Run-time options" and entry "Game->Qt settings"
|
|
for making persistent Qt customizations to "nethack->Preferences..."
|
|
Qt+OSX: prevent game->Quit-without-saving from being hijacked for the nethack
|
|
menu by renaming it game->_Quit-without-saving (OSX only)
|
|
Qt+OSX: add a separate nethack->Quit menu entry with different functionality;
|
|
Command+Q invokes it
|
|
Qt+OSX: since menu entry help->"About Qt NetHack" gets hijacked and becomes
|
|
"nethack->About nethack", add a separate help->_About_Qt_NetHack_
|
|
which stays where intended and brings up the same information
|
|
Qt+OSX: suppress unwanted "Search [______]" action from being inserted as the
|
|
first entry in the menubar's "Help" dropdown menu
|
|
tiles: add indicator of thonged portion to aklys tile
|
|
tty: role and race selection menus weren't filtering out potential choices
|
|
which got excluded by OPTIONS=align:!lawful or !neutral or !chaotic
|
|
tty: '$' can now select gold in a menu even when it isn't on current page
|
|
Unix: when user name is used as default character name, keep hyphenated value
|
|
intact instead stripping off dash and whatever follows as if that
|
|
specified role/race/&c (worked once upon a time; broken since 3.3.0)
|
|
Unix: add "ec2-user" to the list of user names 'sysconf' classifies as generic
|
|
user_sounds: move the message hook from inside individual window display ports
|
|
to the core where it allows MSGTYP_NOSHOW msgtyp's to still trigger
|
|
sounds to correct a reported github issue; also fixes a past reported
|
|
issue that the curses port on Windows not working with user_sounds
|
|
Windows: update for new status condition fields
|
|
Windows: include commented-out 'PORTABLE_DEVICE_PATHS' in sysconf.template
|
|
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
|
|
include monk's to-hit penalty for worn suit in the status section of ^X output
|
|
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
|
|
new objects: amulets of flying and guarding
|
|
new monsters: displacer beast ('f') and genetic engineer ('Q')
|
|
make camera flash which reveals previously unseen map features or objects or
|
|
monsters record those on the hero's map; monsters revert to 'unseen'
|
|
boolean options can optionally have the form "name:value" with value taken
|
|
from among "true", "yes", "on", or 1 and "false", "no", "off", or 0
|
|
record number of wishes and artifact wishes in xlogfile
|
|
give feedback for '#chat' directed at walls
|
|
add 'Sokoban' conduct, tracking the number of times the special Sokoban rules
|
|
which incur luck penalties have been violated; don't report it
|
|
unless/until Sokoban branch has been entered
|
|
reduce verbosity when a mind flayer attacks a headless monster; when a
|
|
tentacle-to-head attack hits but fails to accomplish anything skip
|
|
remaining attacks (mind flayer has 3, master mind flayer has 5)
|
|
add section marker [] support to run-time config file; CHOOSE section1,section2
|
|
followed by [section1] ... [section2] ... forced all the rest of the
|
|
file to be part of the last section; that still works the same, but []
|
|
can be used to terminate the last section and revert to common options
|
|
for the remainder of the file
|
|
render the color names in the corresponding color when using the pick-a-color
|
|
menu for adding status highlights or menu colors via 'O'
|
|
reading blessed scroll of teleportation confers one-shot teleport control
|
|
mild zombie apocalypse
|
|
list lamps and lanterns in charging prompt
|
|
let tourists read conical hats
|
|
when "?i" (show key bindings) displays commands and their keys, also show
|
|
commands without any key (so ones useable via '#', or possibly menu,
|
|
only; the majority are debugging commands)
|
|
assign default key binding for <del> or <delete> to execute #terrain
|
|
assign M-X to #exploremode
|
|
make #herecmdmenu and #therecmdmenu autocomplete
|
|
add 'sortdiscoveries' option to control output of '\' and '`' commands
|
|
include an indication of monsters' health during farlook feedback (including
|
|
/M and autodescribe); also include it in death reason when killed by
|
|
a monster: "killed by {an uninjured newt,a heavily injured mumak}"
|
|
make DOAGAIN (^A) become unconditional; commenting it out in config.h makes
|
|
it be bound to NUL, a no-op, but allows BIND=k:repeat to set it to k
|
|
add support for a single monster species to have distinct male, female,
|
|
and gender-neutral naming terms
|
|
add support for a single monster species to have distinct male and female
|
|
tiles
|
|
consolidate several monsters that differed only by their gender into their
|
|
single species
|
|
added wizmgender debugging command to display female monsters in red inverse;
|
|
helpful for debugging gender-related matters on tty; currently ignored
|
|
on other window ports
|
|
|
|
|
|
Platform- and/or Interface-Specific New Features
|
|
------------------------------------------------
|
|
user_sounds: provide an experimental mechanism for terminal-side sounds similar
|
|
to the method used for vt_tiledata; new option vt_sounddata that also
|
|
requires compile-time definition of TTY_SOUND_ESCCODES (also requires
|
|
terminal-side code external to NetHack to recognize the sequence and
|
|
act on it)
|
|
Qt: the "paper doll" inventory subset can be controlled via the "Qt Settings"
|
|
dialog box ("Preferences..." on OSX)
|
|
Qt: draw a border around each tile in the paper doll inventory; when BUC is
|
|
known for a doll item, change the border's color and thicken it
|
|
Qt: letting the mouse hover over the paper doll shows a tool tip describing
|
|
the object--or lack of same--in the slot under the pointer
|
|
Qt: clicking on the paper doll runs the #seeall command (inventory of wielded
|
|
and worn items plus tools [lamps, leashes] actively in use; in other
|
|
words, same set of things whose tiles are used to populate the doll)
|
|
Qt: clicking on the status window runs the #attributes command (^X)
|
|
Qt: add a Search button to the toolbar
|
|
Qt: support the 'hitpointbar' option
|
|
Qt: add Filter, Layout, and Reset buttons to the extended command selector;
|
|
Filter is only useful in wizard mode, allowing changing the set of
|
|
extended commands between "all", "normal mode only", "extra wizard
|
|
mode only"; Layout redisplays the grid of command buttons, toggling
|
|
from down columns to across rows or vice versa; Reset puts both back
|
|
to their default settings and clears any pending typed input
|
|
tiles: male and female variations in monsters.txt; tested only with tile2bmp
|
|
conversion utility so far; also supported by tilemap utility to
|
|
generate tile.c
|
|
Unix: can define NOSUSPEND in config.h or src/Makefile's CFLAGS to prevent
|
|
unixconf.h from enabling SUSPEND without need to modify unixconf.h
|
|
|
|
|
|
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)
|
|
fix the "stuck pets" issue (github #329)
|
|
allow themed room subrooms to be filled (github #347)
|
|
allow rereading spellbooks to refresh memory at any time (github #261)
|
|
allow themed rooms constrained by level difficulty (github #344)
|
|
add a varied form of LIBNH nethack library contribution (github #385, #403)
|
|
add cross-compile to WASM (github #385, #403, #412)
|
|
differentiating gendered monster tiles from NullCGT (#430)
|
|
check bones data directly for deja vu messages (#374)
|
|
|
|
|
|
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
|
|
relocated unmaintained code to outdated folder, specifically sys/amiga,
|
|
sys/atari, sys/be, sys/mac, sys/os2, sys/wince, win/Qt3, win/gem,
|
|
win/gnome, include/amiconf.h, include/beconf.h, include/def_os2.h,
|
|
include/os2conf.h, include/macconf.h, include/tosconf.h,
|
|
include/wceconf.h
|
|
removed SYSFLAGS conditional code
|
|
removed MFLOPPY conditional code
|
|
get rid of 3.6.1 workaround needed to retain compatibility with 3.6.0 bones
|
|
files after fix for 3.3.0 through 3.6.0 bug for invalid 'bonesid'
|
|
designation in bones of quest levels
|
|
add an additional note to mextra.h and obj.h comments that reminds people to
|
|
appropriately init new fields if they need to initialize to something
|
|
other than zero
|
|
rework stairs structure into a linked list
|
|
move 'restoring' to the program_state struct; add corresponding 'saving';
|
|
both used to enforce no updating of status lines or of persistent
|
|
inventory when the relevant activity is in progress
|
|
unify special attack damages from separate you-hit-monster, monster-hits-you,
|
|
and monster-hits-monster into functions by damage type
|
|
unify trap effects for hero and monster stepping on the trap by trap type
|
|
replace the single permonst mname field with male, female, and gender-neutral
|
|
names pmnames[NUM_MGENDERS] fields
|
|
add a new glyphmod parameter to window interface *_print_glyph() to be used
|
|
to provide additional details to the window port beyond the glyph;
|
|
begin to phase out the mapglyph() calls from within windows ports
|