- this is brute force, always update the status line each time you
insert something into a container. If you look closely, you may still
see the Burdened message disappears momentarily doe to the many possible
messages between the freeinv() call and the point where the object is
actually put into the container.
- the "Burdened" message could disappear from the status line if it was
updated partway thru in_container, clearing the bot flags. Re-order
message so it comes after add_to_container, as in 3.3.1.
- It was possible for hmon_hitmon to call mhurtle to move a monster into a
hole or other trap, causing it to migrate. Then, hmon_hitmon would
subtract hp, and could mark the monster as dead. Later, dmonsfree would
notice the monster wasn't on the level anymore, causing the impossible.
Avoid the problem by just not hurtling the monster if it's going to die.
It's possible it will get lifesaved after not hurtling. Technically, if it
does die, the corpse should be hurtled, but won't be.
- treat jousting similarly
- if you're polymorphed into an eel, you were able to drown things like xorns
- also, fix the tombstone message when an eel drowns you, it was basing the
message on your location, not the eel's location
- the response field of the pop-up dialog was getting smaller by a few
pixels each time it was used. This was because the width calculation
was effectively stripping off the margins (4 pixels total) each time.
Don't do that.
- make the code in apply.c and zap.c consistent
- use the "drops away from you" case whenever the location type does not
lend itself to using the word "floor"
If you stepped on an unknown rolling boulder trap, and that rolling boulder
hit a monster and killed it, you would be called a killer. This makes
playing a pacifism conduct game rather difficult.
- track boulders from unknown rolling boulder traps, and don't charge/credit
hero if they kill monsters. This is done by temporarily setting otrapped on
such boulders.
- boulders from known traps are still charged/credited to the hero
- fix a couple places in ohitmon where is_poisonable wasn't checked along
with opoisoned.
- if a mimic mimics a boulder (top sokoban) or a door atop
a closed door the closed door didn't block your vision after
the mimic is sensed.
- also, make mondied consistent with xkilled WRT corpses on inaccessible
locations: no corpse
- report: twoweapon mode, eat fried food, get messages like:
Your sword slips from your hands.
Your sword also slips from your hands.
- the fix tracks the kind of the 1st weapon, and adds "other" to the 2nd
message if necessary
- change the way the tile sizes are calculated, based on the image size,
so non-square tiles can once again be supported.
- fix Gnome port so it can actually display non-square tiles, several
height/width uses were backwards
- update Install.X11 to note the number of tiles per row in the XPM image
- this was a betabug I think, but not recorded as such
- if you kicked a throne, any GEM_CLASS item could be generated, including rocks
- changes behavior to be consistent with gems from fountains
- forgot to apply this change before making the 3.4.0 binary (it was
actually built using these settings). It's safer for the game itself to be
non-group writable so that someone on a public server can't exploit a
bounds checking or similar error to infect the executable itself with
a trojan horse.
- let the "#" key work as per Guidebook
- role selection didn't work if you had gender specified in your .nethackrc
similar problems would occur for other .nethackrc selections
- fix an obvious memory leak
- fix one crash bug from accessing a freed pointer (M-? dismiss M-?)
- note some invalid behavior in comments for a real Gnome developer to fix
- reformatted some code so I could follow it
- support X11 tile files (with or without XPM) that are 40 tiles wide
- rearrange some X11 code to share more code between XPM & non-XPM options
- clean out some deprecated X11/winmap.c #ifdefs
- update Qt code minimally to handle such an XPM file
- remove a strange \! in the section for Blind users
- update the wording in the subsequent paragraph to be consistent with
the wording in the preceeding IBMgraphics paragraph
- various commands were missing from various help files
- fix a few inconsistencies between similar help files
- M-2 doesn't do #twoweapon when number_pad is enabled
- M-? usually displays #? help info
- weasel-word the reason the screen shown in the Guidebook looks little like
several windowports
- document the playersuffix syntax in the nethack.6 man page
- candles, et al, light via catch_lit
- non-weapons can be damaged
- only flammable items can be damaged, previously SILVER objects, for example,
would get a message, but add_erosion_words wouldn't display a damage word
- can't track burnt food, put this in the "seems" case too
- PLASTIC items are is_flammable, which is appropriate for all current uses
- paper gets destroyed (special artifacts excepted by earlier check)
- a cursed potion now spills even if not dipping weapons
- charge for damaging unpaid objects this way
- still very hard to destroy PYEC this way
- Pat noticed that makedefs -z makes both vis_tab.[ch], but they could be
built by two makes via make -j, causing corruption
- make -j at top level failed for similar reasons, added several
dependencies to ensure a valid ordering
- these changes will cause extra things to be built if you "make"
individual targets at the top level, but have little effect it you're a
real power user and "make" the actual target in the right directory
- a case missed by the earlier lava patch, if you enter the lava while
mounted, your steed would be unaffected if you were lifesaved
- fix by making more code shared with the is_pool case
- switch aobjnam() to use cxname, not xname
- update Tobjnam() comment, since it can still use xname w/o confusion
A specific case that's fixed: You begin bashing monsters with your corpse.
- use uwep's oc_wldam value, not chest's oc_wldam value, for computing chance.
oc_wldam has always been 0 for all containers
- the code was broken for a long time, but was masked by the off-by-1 error
in checking the chance, allowing a 1% chance of forcing
- the result is that forcing locks is a lot easier
Note: actual option setting code in parseoptions already does this correctly
- avoid testing the same options values vs multiple boolopts entries
- apply similar change for complex option testing
- remove some dead code
- if !GOLDOBJ, putting gold in the WIZKIT would add zerobj to the inventory.
This shows up when you "Da" and get a message like "you drop 0 glorkum 0 0 0"
- new cxname() to simplify doing the right thing in increasingly common cases
- use for bullwhip snagging
- in shopkeeper offer code
- in a couple other existing places rather than duplicating CORPSE checks
- use singular(...) in "swings" cases, since only one can hit. Singular uses
corpse_xname automatically when appropriate
- remove special case code from getobj for touchstone
- remove other hacks from getobj that resulted from earlier hack, solves
the "rub on the gold stone" problem completely
- pass correct letter list to getobj from use_stone, like other callers
- new splitobj() behavior requires special casing when !GOLDOBJ and
dropping some of your gold, to ensure that the remainder remains the first
item in the inventory
- new iflags.vision_inited to determine if vision is ready to go.
- the flag is set the first time vision_reset() completes, actually every time
- vision_recalc() checks the flag before doing anything.
- menu-window code could access a null pointer when there was no data
- menu-window code can't handle empty contents, because there's no place
to position the cursor, so force text mode
- still looked ugly, so added a check to avoid displaying anything if
the file was empty
- avoid several buffer overflows
- move use of access() to files.c in new can_read_file() function
- remove extra newlines in raw_print() calls
- get ready for lint, eg sprintf -> Sprintf
- generally make the code look like core code, not Qt code
Addresses the follwing missing updates:
- Quest Artifact identification by Quest Leader.
- Rust damage from a rust trap.
- Remove curse as a result of prayer (both fixing TROUBLE_CURSED_* and
the blessed-remove-curse boon.)
- Charging via PYEC
Generally modify the AD_DGST damage type so that:
- players and pets get no AD_DGST nutrition from G_NOCORPSE monsters
- undead no longer convey any nutrition, to either monsters or you-as-monster
I decided on this based on the age typically assigned to undead corpses.
- digestion conveys 50% or normal nutrition, and takes 25% the time to eat.
- all AD_DGST attacks are now subject to gas spore explosions, including player