Commit Graph

273 Commits

Author SHA1 Message Date
PatR
8ca0834eb2 Qt pick-none menu vs [cancel]
Qt menus have [ok][cancel][all][none][other stuff] buttons across
the top but it was disabling [cancel] for inventory viewing and
other pick-none menus.  Enable that so that [cancel] is a viable
alternative to typing ESC or clicking on [ok] for dismissing the
menu without picking anything.
2020-07-30 08:58:57 -07:00
PatR
5ce74c7bd5 Qt extended command selection
Qt's implementation of '#' puts up a rectangular grid of buttons
containing command names from the alphabetized extcmdlist[]:
|     #          ?         adjust      annotate
|   apply    attributes  autopickup      call
|   cast        ...
When 3.6 put all commands into that list, the hardcoded 4 columns
resulted in so many rows that the grid wouldn't fit on the screen
(at least not on my smallish laptop screen).  There's no scrollbar
so the commands beyond "takeoff" were inaccessible off the bottom.
Warning messages from within Qt were issued to stderr complaining
about trying to render something off the screen (once each time the
'#' command grid was generated).

It was also including wizard mode commands when not in wizard mode.
Suppress those when they're not applicable, and change the grid to
use 6 columns then and 8 for wizard mode.  The appropriate amount
ought to be calculated on the fly but these values work ok with the
current command list.  (On my screen; if something smaller is used,
the original problem could come back, just not as severe as before.)

Having an alphabetized list go across rows instead of down columns
feels counter-intuitive so transpose the grid.
|     #         autopickup    ...
|     ?         call
|   adjust      cast
|   annotate     ...
|   apply
[Having another button next to <cancel> that lets the user switch
back and forth between the two orientations could be worthwhile.
A full-fledged wc/wc2 option for that doesn't seem warranted.]

The commands can be selected by typing their names as an alternative
to mouse click.  The input widget supports <backspace> but lacked
handling for <delete> so add that.

When typing a command by its name, a new grid showing only matching
candidates gets displayed so that you can switch back to mouse input.
It looks pretty bad but does work as intended.  I didn't touch that;
however, it looks different now due to the columns-vs-rows change.

The menu after picking "?" looks worse.  It assumes a fixed width
font and tries to align things in two columns with spaces, but the
result when using a variable width font is ugly.  This makes no
attempt to address that.
2020-07-29 09:17:45 -07:00
nhmall
c8ad99fcdf add fixes37.7 entry for f664e83 gone portal 2020-07-28 08:18:39 -04:00
PatR
fae75f5930 troll corpse revival
Prevent corpses left by cancelled trolls from reviving.  Their
revival is an innate ability but is clearly a magical one, so make
that be subject to cancellation magic.

Change existing corpses that are scheduled to revive to rot instead
if they get cancelled as objects.  Rider corpses are excluded.

Uncancel an ice troll whose corpse is put into an ice box.

Commit e9f53ab7f6 at the end of May
to fix corpses taken out of ice boxes by monsters changed removing
corpses from ice boxes by anybody to always give them rot-away
timers, even for trolls.  Make an exception for ice troll corpses:
give those revive timers instead.
2020-07-26 11:13:43 -07:00
PatR
0fe9905cf8 rocks vs unicorns
A reddit thread mentioned that throwing rocks at unicorns behaved
the same as throwing gems at them:  not treated as an attack and if
teleporting away is allowed, they will.  Change to treat shooting
gems and glass at unicorns with a sling as an attack rather than as
just giving the gem or piece of glass to them, and treat throwing
or shooting rocks and gray stones as an attack too.

If picked up by blind hero while not yet seen, gems and glass
format as "gem" and rocks and gray stones format as "stone" so the
player can always tell the difference.  Forgetting to unwield a
sling before interacting with a unicorn is on the player's head.
2020-07-26 07:46:07 -07:00
PatR
6973e63776 venom vs tiles
tiles2x11 didn't complain about the tile definitions of the renamed
objects.  It seems to me that all processors of win/share/*.txt
ought to be sharing the same code instead of apparently rolling
their own.  (Maybe the issue was issuing diagnostic messages rather
than noticing the name mismatches?  I haven't looked.)
2020-07-25 02:21:32 -07:00
PatR
f66b645878 couple of comment typos 2020-07-24 17:39:48 -07:00
PatR
42245f8e67 wizard mode vs venom object names
I tried wishing for "splashes of venom" but was told that no such
thing exists even though "splashs of venom" and "2 splash of venom"
both work to produce "2 splashes of venom".  After the spurious
failure, retrying with EDIT_GETLIN enabled showed that "splashes"
had been singularized to "splashe" so fix that.

"2 splashes of venom" IDed to "2 uncursed blinding venoms" because
the base name omits "splash of" prefix.  And due to that, explicitly
wishing for "splash of {acid,blinding} venom" didn't work either.
Change the names to include the prefix, and add a hack to makedefs
to keep generating the old macro names without the prefix.  (Wishing
for "{acid,blinding} venom" still works due to post-3.6.6 changes
to " of " matching.)
2020-07-24 14:45:59 -07:00
PatR
c1c515af9f weapon skill usage
A recent newsgroup or reddit complaint stated that only 75% of a
monks attacks used martial arts.  It turned out to be true; the
'valid_weapon_attack' intended to control whether skill gets
exercised was being overloaded for skill use.  So the monk's 1..4
base damage used skill for 2..4 but not for 1.  That was never
intended (nor for other roles and other skills; a damage value of
1 is meant to miss out on a chance to train the skill for future
enhancement but should still get a skill bonus or penalty for the
current attack).
2020-07-24 13:12:13 -07:00
PatR
afbcf3f9a9 monk's to-hit penalty for wearing a suit
If hero is a monk who is wearing a suit, have ^X mention the to-hit
penalty for that in the status section even though it isn't a normal
status line item.  Combat feedback makes it annoyingly obvious, but
player might forget if MSGTYPE=hide is used to suppress the "Your
armor is rather cumbersome..." message.
2020-07-20 03:00:28 -07:00
PatR
22cbabde8d Qt tiles loading failure
For Qt, if unable to load either nhfiles.bmp or x11tiles, quit after
giving the can't-load-tiles feedback instead of continuing on and
eventually triggering a segfault.
2020-07-18 12:59:24 -07:00
PatR
74e0be478a remove old bonesid workaround
Noticed when the comment about "this can go away when compatibility
with 3.6.x is no longer needed" was modified recently.  Make it and
the code it applied to go away.
2020-07-17 10:14:24 -07:00
PatR
abe4db6e60 fix pull request #365 - monster max HP
The recently added sanity check for monster maximum HP was giving
false complaints when Nd8 monster had N mhpmax.  Most noticeable
for level 1 monsters (level 0 monsters use 1d4 instead of 0d8 and
weren't affected) but possible for higher level ones if they were
unlucky--from their own perspective--with all their d8 rolls.

Give level N monsters a minimum of N+1 HP, so minimum of 2 for
level 1 monsters, making 1/8 of those stronger.  Same minimum for
level 0 monsters, 25% of which will become stronger now.  (The pull
request's patch gave every Nd8 monster 1 extra HP; this only does
so for Nd8 and 1d4 ones which have rolled lowest possible amount.)

Also relax the sanity check so that existing to-be-3.7 save files
don't continue to trigger sanity complaints for existing monsters
that have the old minimum.

Fixes 365
2020-07-14 17:03:51 -07:00
PatR
ee7fbc4a61 mind flayer vs headless target
When a mind flayer scores a hit against a headless target (or worm's
tail), there's a message that says that the attack hits and that the
target is unharmed.  Since an ordinary mind flayer has 3 such attacks
per turn and a master mind flayer has 5, it can become excessively
verbose.

This doesn't eliminate the attacks until a hit fails to do harm, so
ordinary misses still get repeated if they happen first.  Once a
successful hit doesn't do anything, any remaining AT_TENT+AD_DRIN
attacks are silently skipped.  That way feedback isn't as verbose
and mind flayers don't seem to be quite so stupid about using their
tentacles when those won't work.  Unfortunately they need to relearn
the lesson every turn they attack.
2020-07-14 05:43:51 -07:00
PatR
a37975b625 fix pull request #367 - mind flayer psychic blast
hitting a hidden monster didn't reveal that monster.  It stayed
hidden despite the feedback describing it as if it could be seen.

The pull request's two line fix handled a monster's blast hitting
another monster but left two related issues as-is:  monster's blast
hitting hidden poly'd hero left hero unrevealed and poly'd hero's
blast left hidden monster unrevealed.  Same code, different bug:
poly'd hero's blast affected mindless monsters.

This unhides an affected target before the message about it being
hit rather than after.  That would look better if preceded by a
message describing the object (mimic or hides-under) or furniture
(mimic) or empty spot (ceiling hider) as being or concealing a
monster but I didn't put in sufficient effort to accomplish that.

Fixes #367
Fixes #362
2020-07-14 04:55:53 -07:00
PatR
12498ffa44 fix github issue #372 - Wizard escaping dungeon
If the Wizard fled up the stairs on level 1 and escaped the dungeon
(which can only happen if he isn't carrying the Amulet or any of
the invocation items), the number_of_wizards counter wasn't being
decremented.  If that was the only Wizard, he couldn't be brought
back into play because he wasn't on the migrating monsters list, and
he wouldn't appear on the Plane of Earth when the hero eventually
went there.  If that was one of two, the remaining one couldn't use
Double Trouble anymore.  (I'm not sure about Earth handling in that
situation; should be moot now.)

Wizard mode blessed genocide of "*" when the Wizard is on current
level caused the same problem.

Fix by keeping the number_of_wizards counter up to date if mongone()
is called for the Wizard, handling both cases.  Also, don't let the
Wizard escape the dungeon unless he's one of two at the time, making
the first case no longer possible.

If wizard mode blessed genocide of "*" is used on the level where
the quest nemesis is present, the killed-the-nemesis feedback will
now be given.  I'm not completely convinced that this was the right
thing to do, but it only applies to wizard mode so may not matter.

Fixes #372
2020-07-13 01:58:44 -07:00
PatR
8820306071 book of the dead fixes entry
A recent fixes entry reported things incorrectly.  The invocation
failure message inappropriately referring to the Bell and Candelabrum
as artifacts was given when reading the Book after both of those have
been used to set things up and either or both of them are cursed, not
when they weren't used before the Book.
2020-07-10 08:43:28 -07:00
PatR
0bd2c3154d fix default engraving/epitaph/bogusmon corruption
Fixes #369.
Fixes #370.

The default entries inserted by makedefs -s (starting in 3.6.6,
to guard against having an empty data file which led to divide by
zero crash when nethack picked a random entry) lacked a terminating
newline so the first entry from the file (for the usual case when
that data file wasn't empty) got implicitly concatenated to it.
If the first entry got chosen during play, the initial portion
corresponding to the default entry was decrypted properly but the
concatenated portion corresponding to file's first line didn't.
So gibberish was appended to default engraving or epitaph or bogus
monster; also, the input file's first line would never appear.

The newline fix in makedefs is different from pull request #370
but accomplishes the same thing.

The bulk of the patch is an enhancement to #wizrumorcheck to show
first (default inserted by makedefs), second (first in input file)
and last engravings, epitaphs, and bogusmons in addition to rumors.
The command name has become a little misleading but the limited
functionality doesn't call for separate commands.
2020-07-09 19:23:19 -07:00
nhmall
63842b64ef typo - missing closing bracket 2020-07-07 22:16:00 -04:00
nhmall
6c0d522b1a relocate some more outdated code 2020-07-05 09:27:59 -04:00
nhmall
62d9c49338 fixes entry for removal of SYSFLAGS and MFLOPPY 2020-07-05 08:58:09 -04:00
PatR
cdcc43a689 boulder breaking feedback
Noticed when checking the sokoban conduct's counter.  Breaking
a line of boulders in one zap reported seeing the first but only
hearing the others, despite the first one being gone by the time
the second one was hit and so on down the line for the rest.
2020-07-03 03:27:39 -07:00
PatR
8801ec34eb fix github pull request #355 - Sokoban cheating
Track sokoban cheating (taking actions that incur a luck penalty).
The pull request only reported the number of times (possibly zero)
that the player broke nethack's sokoban rules when reporting the
"you obtained the Sokoban prize" achievement, which is when the
count is most meaningful, but this implements it as a full-fledged
conduct instead.  This way the #conduct command can be used after
"creative nethacking" to check immediately whether an action has
violated the Sokoban rules so a player willing to put in a bit of
effort can eventually learn which actions have a negative impact.

The new conduct is only shown during games where the character has
entered the Sokoban branch, but once that has happened it gets shown
no matter the location at the time of #conduct or end of game.

Most of this wasn't in the pull request:  expanding the Guidebook to
give more information about sokoban and its conduct.

Bump EDITLEVEL to invalidate to-be-3.7 save files because u.uconduct
has been extended.

Fixes #355
2020-07-03 02:21:30 -07:00
nhmall
b8c13ea17a Merge branch 'NetHack-3.7' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.7 2020-07-02 15:55:55 -04:00
nhmall
e4b18f0545 fix github issue 361 to make user_sounds useful even if MSGTYPE is hidden
fixes #361

Also, experminental introduction of vt_sounddata to enable tty to pass
a sound file index to the terminal side of things where perhaps someone
can add code to something like hterm to take the information relayed by
NetHack to trigger user_sounds locally even if playing on a server.

Compile time option TTY_SOUND_ESCCODES required to build that support in.

It should be independent of TTY_TILE_ESCCODES.
2020-07-02 15:49:45 -04:00
PatR
926a0ca446 talking walls
Add the "if these walls could talk" gag.  Use an array of message
strings rather than switch/cases of pline calls, and add a couple
more messages.

Also, only give wall feedback if the map indicates a wall (so not
while blind unless the wall is already known) and prevent chat from
pinpointing secret doors (via lack of wall feedback when they're
shown as walls).
2020-07-01 18:01:30 -07:00
PatR
2760dc3f16 book of the dead fixes
After writing the log message for the bell change, I decided to
test the Book and found some issues:
1) reading it while blind discovered the book's type but wasn't
   marking the book object as if it had become seen (dknown);
2) reading it while blind gave sighted feedback if it was cursed;
3) reading (blind or not) when either of the other two invocation
   tools are cursed referred to those as "artifacts" even though
   they aren't artifacts; the discoveries list describes them as
   "unique items" but that makes for a clumsy message--use "relics"
   instead.
2020-07-01 07:35:44 -07:00
PatR
b2789979e5 relent on silver bell usage...
Allow a hero in silver-hating form to ring the Bell of Opening when
on the vibrating square so be able to perform the invocation ritual.
But only at that location and only if the stairs aren't there yet.

This is about on par with being able to read the Book of the Dead
while blind although that isn't limited to a specific location.
2020-07-01 06:48:07 -07:00
PatR
86590af4d2 fixes catchup
Add missing fixes37.0 entries for "mhpmax of life-drained monsters".
2020-06-27 19:01:19 -07:00
PatR
4870ee5281 failing to read a novel while blind
Adopt the contribution to use "you can't read the words" when
trying to read a novel when blind rather than defaulting to
spellbooks' "you can't read the mystic runes."  An unseen novel
is already described as "a book" instead of "a spellbook" so the
alternate feedback doesn't give away any information.
2020-06-22 18:19:11 -07:00
Patric Mueller
8564ee95b0 Record number of wishes and artifact wishes in xlogfile 2020-06-07 16:39:58 +02:00
PatR
330728a8c7 boolean option processing
Option parsing for booleans tried to accept "optname:true" or
"optname:yes" or "optname:false" or "optname:no" but it didn't work
because boolean options with a value were rejected before getting
to that.  Make parsing for booleans get far enough to handle those
values, treat them as case-insensitive, and add "on" and "off" as
additional choices.  "true" and "false" can be truncated to 3
letters, the other values need to be fully spelled out but are all
only 2 or 3 letters long.
2020-06-06 13:44:48 -07:00
PatR
5427b54d64 fixes typo 2020-06-03 07:50:40 -07:00
PatR
bb566e8a04 fix stone-to-flesh on petrified long worm
montraits() didn't have any handling for long worm tails, makemon()
didn't have any provision for creating a long worm without a tail,
replmon() uses place_wegs() to put tail segments on the map when
replacing a dummy new monster with the mtraits one but place_wsegs()
wasn't updating the head segment since it isn't put on the map.

That turned out to be key because there is always an extra segment
co-located with the monster and when its coordinates were wrong,
worm_known() gave bad results for visibility checking.  The
statue-goes-away message was the one for not being able to see the
monster that it just animated into, even though 'w' appeared at the
spot.  It took quite a while to track down what was going on there.

Sanity checking for worms has been updated and could conceivably
start triggering complaints about things that it used ignore.
2020-06-03 03:00:13 -07:00
PatR
503df6823d fix github issue #354 - stealarm() impossible
A thieving monster could be killed while the hero was busy taking
off armor which needs multiple turns (normally a suit) and if that
happened on the same turn as the take-off finished, the warning
"stealarm(): dead monster stealing" was issued.  Cited case was
having the thief be killed by a stinking cloud but it could happen
if the death was caused by a pet or by some other monster trying
to attack the hero.  If the thief died sooner, the situation was
silently ignored.  So this could have been fixed by just getting
rid of the impossible() feedback.

'stealmid' and 'stealoid' should have been static in steal.c rather
than global and as such should have been moved into 'struct g'.
This moves them there and then takes advantage of having access to
'stealmid' outside of steal.c.  That's just a minor optimization
since m_detach() could call new thiefdead() unconditionally and the
latter could check whether the dead monster matches 'stealmid'.

Fixes #354
2020-06-01 06:17:07 -07:00
PatR
8c1120261a fix github issue #352 - geno'd monsters in quest
The recent change to mkclass() was letting genocided monsters be
created when role-specific monsters were chosen for quest levels.

makemon(Null) -> rndmonst() -> qt_montype() -> mkclass() -> mk_gen_ok()
was accepting members of the quest-specified class even when they
should have been rejected.  I'm still not sure why the revised bit
manipulation didn't work as intended; the re-revised code does.

G_IGNORE was a bug waiting to happen since it gets passed to
mkclass() as a mons[].geno flag but is used to control the use of
mvitals[].mvflags values.  It's still being misused but at least
it doesn't conflict with any of the other flags now.

Fixes #352
2020-05-30 16:00:29 -07:00
PatR
e9f53ab7f6 fix #K1139 - corpse removed from ice box by monst
Rot and revive timers are turned off when a corpse gets put inside
an ice box.  They get turned back on when taken out of the ice box
by the hero but were being left off if taken out by a monster.
That resulted in corpses of arbitrary type behaving like lizard
corpses and never rotting away.

This fixes that.  It also changes troll corpse behavior.  Once put
in an ice box, a troll corpse will not get a new revive timer when
taken out, just an ordinary rot timer.
2020-05-30 13:33:16 -07:00
PatR
c29ffe1d82 fix github issue #349 - out of depth liches
Change mkclass() to always honor the hell-only monster generation
flag for L class, preventing master and arch-liches outside Gehennom.
For other classes, honor hell-only and outside-hell-only most (89%)
of the time.  When not honored (11%), it allows demons and devils to
appear outside of Gehennom as they have in the past.  [That part
might need to be re-done since it is done for all monsters in the
class on any mkclass() call instead of being done on a class-member
by class-member basis within each such call.]

This prevents out of depth liches in the Castle and ought to do same
for themed rooms of type 'Mausoleum' although I haven't figured out
how to test that.

Fixes #349
2020-05-27 14:05:42 -07:00
nhmall
3d3fa958c6 add an indicator of thonged portion to aklys tile 2020-05-26 11:16:54 -04:00
PatR
82ccfaa3ac fix github issue #346 - duplicate 'head_engr' defs
Post-3.6.x issue.  head_engr has been defined in engrave.c for ages
but the definition was relatively recently duplicated in decl.c.
gcc 10 defaults to more rigorous checking (-fno-common) and complained
about the duplicate.  Remove the original definition from engrave.c.

Fixes #346
2020-05-18 11:46:23 -07:00
PatR
ce4658abd6 curses vertical status
For status on the left or right of the map, show conditions in columns
rather than just space separated.  Shows two conditions per line, 12
characters wide, unless the overall status becomes too tall for its
window.  If that happens, they'll be condensed back to three per line,
8 characters wide.  Hunger and encumbrance are always 12 characters
wide when non-blank.
 old:
  |Hungry Burdened
  |Blind Conf Lev
 new:
  |Hungry       Burdened
  |Blind        Conf
  |Lev
(As before, if hunger is blank then encumbrance is left justified.
If they're both blank, their line is omitted and conditions move up.)
2020-05-17 00:01:14 -07:00
PatR
62ff82b8c3 sysconf parsing
Treat most sysconf problems as warnings and revert to conservative
default value instead of as errors that prevent the game from running
since an individual player might not be able to fix things.

Allow a user's config file to include SEDUCE=1 as long as sysconf
hasn't set SEDUCE=0.  Not much point since it only works when it's a
no-op but there's even less point to issue a warning for that no-op.

If PORTABLE_DEVICE_PATHS is encountered in sysconf for a non-Windows
configuration, report it as "not supported" rather than "unknown".

Many sysconf error messages ended with redundant ".." because the
message strings had final "." and the delivery routine uses "%s."
to format those strings.
2020-05-15 15:14:22 -07:00
PatR
b42535fb2c add "ec2-user" to sysconf's list of generic users
Pull request #330 would add "ec2" ("ec2-user" after dash and whatever
follows has been stripped off) to GENERICUSERS for Amazon Linux.  Now
that dashes-in-username handling has been fixed, that doesn't need to
be obscure and the full user name can be included instead.

I also added a commented out entry for PORTABLE_DEVICE_PATHS to the
default sysconf, then cloned that for Windows' sysconf.template.

Fixes #330
2020-05-15 13:49:11 -07:00
PatR
c7dba5fbc4 encumbrance feedback fix
Wishing for an item uses hold_another_object to put it into inventory
and hold_another_object wasn't reporting changes in encumbrance.  That
feedback would happen at start of next turn so its lack usually wasn't
noticeable, but encumbrance could be off for remainder of the current
turn which might include additional move(s).  Report indicated that
dropping something seemed to increase encumbrance instead of decrease
it, but it was dropped on an extra move and actually a delayed report
of the increase that hold_another_object failed to show.

I fixed a couple of other things with hold_another_object:  it would
add an item to inventory, which triggered an update of persistent
inventory if that was enabled, then remove it from inventory in order
to drop it if fumbling or inventory had too many items or encumbrance
was going to become too high, triggering a second update of persistent
inventory to reverse the first one.  Also, "encumbrance becoming too
high" was using hardcoded Stressed instead of the 'pickup_burden'
option that manages the same situation during pickup.  Not because
hold_another_object isn't pickup, but because its use of hardcoded
Stressed predated implementation of that option.

There was another fix for hold_another_object recently and I've moved
the fixes entry for that one to group it with the new ones.

Also, update an obsolete (from !GOLDOBJ config) comment in makewish().
2020-05-14 14:27:49 -07:00
PatR
41ae223585 hyphenated Unix user names
Fix for $USER, $LOGNAME, getlogin() values that have dashes in them:
keep dash and whatever follows as part of the name instead of stripping
it off for role/race/gender/alignment.

Before:
% USER=test-bar-fem ./nethack
|Shall I pick your female Barbarian's race and alignment for you?
and character ended up named 'test'.

After:
% USER=test-bar-fem ./nethack
|Shall I pick character's race, role, gender and alignment for you?
and character ends up named 'test-bar-fem'.  However,
% ./nethack -u test-bar-fem
still behaves like the 'before' case.
|Shall I pick your female Barbarian's race and alignment for you?

Dash handling is only changed when the dash comes from user name (or
from envionment overriding user name), not from direct player input
or run-time config file.
2020-05-12 16:38:12 -07:00
PatR
1afa961416 fix github issue #343 - scattered objects
landing on water or lava without being affected.

Reported for exploding bag of holding but has been a latent issue
for scatter() for ages.

Fixes #343
2020-05-12 15:26:28 -07:00
PatR
3165dd942e fix #K965 - dropped fragile items don't break
when the drop is being caused by encumbrance or punishment triggering
a fall while going down stairs.

Also, remove a couple instances of 'if (obj==GOLD) contexl.botl=TRUE'
when dropping gold.  They were held over from the obsolete !GOLDOBJ
configuration.  Both are immediately followed by freeinv() which
calls freeinv_core() whichs starts off by setting the botl flag when
taking gold out of inventory.
2020-05-11 17:51:25 -07:00
Alex Smith
0bc0997d00 Fixes entry for prayer timeout scaling 2020-05-12 00:32:14 +01:00
nhmall
0422696e67 move currently unmaintained code to outdated subfolder
rename {sys => outdated/sys}/amiga/.gitattributes (100%)
 rename {sys => outdated/sys}/amiga/Build.ami (100%)
 rename {sys => outdated/sys}/amiga/Install.ami (100%)
 rename {sys => outdated/sys}/amiga/Makefile.agc (100%)
 rename {sys => outdated/sys}/amiga/Makefile.ami (100%)
 rename {sys => outdated/sys}/amiga/NetHack.cnf (100%)
 rename {sys => outdated/sys}/amiga/amidos.c (100%)
 rename {sys => outdated/sys}/amiga/amidos.p (100%)
 rename {sys => outdated/sys}/amiga/amifont.uu (100%)
 rename {sys => outdated/sys}/amiga/amifont8.uu (100%)
 rename {sys => outdated/sys}/amiga/amigst.c (100%)
 rename {sys => outdated/sys}/amiga/amii.hlp (100%)
 rename {sys => outdated/sys}/amiga/amimenu.c (100%)
 rename {sys => outdated/sys}/amiga/amirip.c (100%)
 rename {sys => outdated/sys}/amiga/amistack.c (100%)
 rename {sys => outdated/sys}/amiga/amitty.c (100%)
 rename {sys => outdated/sys}/amiga/amiwind.c (100%)
 rename {sys => outdated/sys}/amiga/amiwind.p (100%)
 rename {sys => outdated/sys}/amiga/clipwin.c (100%)
 rename {sys => outdated/sys}/amiga/colorwin.c (100%)
 rename {sys => outdated/sys}/amiga/grave16.xpm (100%)
 rename {sys => outdated/sys}/amiga/ifchange (100%)
 rename {sys => outdated/sys}/amiga/mkdmake (100%)
 rename {sys => outdated/sys}/amiga/txt2iff.c (100%)
 rename {sys => outdated/sys}/amiga/winami.c (100%)
 rename {sys => outdated/sys}/amiga/winami.p (100%)
 rename {sys => outdated/sys}/amiga/winchar.c (100%)
 rename {sys => outdated/sys}/amiga/windefs.h (100%)
 rename {sys => outdated/sys}/amiga/winext.h (100%)
 rename {sys => outdated/sys}/amiga/winfuncs.c (100%)
 rename {sys => outdated/sys}/amiga/winkey.c (100%)
 rename {sys => outdated/sys}/amiga/winmenu.c (100%)
 rename {sys => outdated/sys}/amiga/winproto.h (100%)
 rename {sys => outdated/sys}/amiga/winreq.c (100%)
 rename {sys => outdated/sys}/amiga/winstr.c (100%)
 rename {sys => outdated/sys}/amiga/xpm2iff.c (100%)
 rename {sys => outdated/sys}/atari/.gitattributes (100%)
 rename {sys => outdated/sys}/atari/Install.tos (100%)
 rename {sys => outdated/sys}/atari/atarifnt.uue (100%)
 rename {sys => outdated/sys}/atari/nethack.mnu (100%)
 rename {sys => outdated/sys}/atari/setup.g (100%)
 rename {sys => outdated/sys}/atari/tos.c (100%)
 rename {sys => outdated/sys}/atari/unx2atar.sed (100%)
 rename {sys => outdated/sys}/be/.gitattributes (100%)
 rename {sys => outdated/sys}/be/README (100%)
 rename {sys => outdated/sys}/be/bemain.c (100%)
 rename {sys => outdated/sys}/mac/.gitattributes (100%)
 rename {sys => outdated/sys}/mac/Files.r (100%)
 rename {sys => outdated/sys}/mac/Install.mw (100%)
 rename {sys => outdated/sys}/mac/MacHelp (100%)
 rename {sys => outdated/sys}/mac/NHDeflts (100%)
 rename {sys => outdated/sys}/mac/NHrsrc.hqx (100%)
 rename {sys => outdated/sys}/mac/NHsound.hqx (100%)
 rename {sys => outdated/sys}/mac/News (100%)
 rename {sys => outdated/sys}/mac/README (100%)
 rename {sys => outdated/sys}/mac/carbon.plist (100%)
 rename {sys => outdated/sys}/mac/dprintf.c (100%)
 rename {sys => outdated/sys}/mac/maccurs.c (100%)
 rename {sys => outdated/sys}/mac/macerrs.c (100%)
 rename {sys => outdated/sys}/mac/macfile.c (100%)
 rename {sys => outdated/sys}/mac/machelp.hqx (100%)
 rename {sys => outdated/sys}/mac/macmain.c (100%)
 rename {sys => outdated/sys}/mac/macmenu.c (100%)
 rename {sys => outdated/sys}/mac/mactopl.c (100%)
 rename {sys => outdated/sys}/mac/mactty.c (100%)
 rename {sys => outdated/sys}/mac/macunix.c (100%)
 rename {sys => outdated/sys}/mac/macwin.c (100%)
 rename {sys => outdated/sys}/mac/mgetline.c (100%)
 rename {sys => outdated/sys}/mac/mmodal.c (100%)
 rename {sys => outdated/sys}/mac/mrecover.c (100%)
 rename {sys => outdated/sys}/mac/mrecover.hqx (100%)
 rename {sys => outdated/sys}/mac/mttymain.c (100%)
 rename {sys => outdated/sys}/os2/.gitattributes (100%)
 rename {sys => outdated/sys}/os2/Install.os2 (100%)
 rename {sys => outdated/sys}/os2/Makefile.os2 (100%)
 rename {sys => outdated/sys}/os2/nhpmico.uu (100%)
 rename {sys => outdated/sys}/os2/os2.c (100%)
 rename {sys => outdated/sys}/wince/.gitattributes (100%)
 rename {sys => outdated/sys}/wince/Install.ce (100%)
 rename {sys => outdated/sys}/wince/bootstrp.mak (100%)
 rename {sys => outdated/sys}/wince/ceinc/.gitattributes (100%)
 rename {sys => outdated/sys}/wince/ceinc/assert.h (100%)
 rename {sys => outdated/sys}/wince/ceinc/errno.h (100%)
 rename {sys => outdated/sys}/wince/ceinc/fcntl.h (100%)
 rename {sys => outdated/sys}/wince/ceinc/sys/.gitattributes (100%)
 rename {sys => outdated/sys}/wince/ceinc/sys/stat.h (100%)
 rename {sys => outdated/sys}/wince/celib.c (100%)
 rename {sys => outdated/sys}/wince/cesetup.bat (100%)
 rename {sys => outdated/sys}/wince/cesound.c (100%)
 rename {sys => outdated/sys}/wince/defaults.nh (100%)
 rename {sys => outdated/sys}/wince/keypad.uu (100%)
 rename {sys => outdated/sys}/wince/menubar.uu (100%)
 rename {sys => outdated/sys}/wince/mhaskyn.c (100%)
 rename {sys => outdated/sys}/wince/mhaskyn.h (100%)
 rename {sys => outdated/sys}/wince/mhcmd.c (100%)
 rename {sys => outdated/sys}/wince/mhcmd.h (100%)
 rename {sys => outdated/sys}/wince/mhcolor.c (100%)
 rename {sys => outdated/sys}/wince/mhcolor.h (100%)
 rename {sys => outdated/sys}/wince/mhdlg.c (100%)
 rename {sys => outdated/sys}/wince/mhdlg.h (100%)
 rename {sys => outdated/sys}/wince/mhfont.c (100%)
 rename {sys => outdated/sys}/wince/mhfont.h (100%)
 rename {sys => outdated/sys}/wince/mhinput.c (100%)
 rename {sys => outdated/sys}/wince/mhinput.h (100%)
 rename {sys => outdated/sys}/wince/mhmain.c (100%)
 rename {sys => outdated/sys}/wince/mhmain.h (100%)
 rename {sys => outdated/sys}/wince/mhmap.c (100%)
 rename {sys => outdated/sys}/wince/mhmap.h (100%)
 rename {sys => outdated/sys}/wince/mhmenu.c (100%)
 rename {sys => outdated/sys}/wince/mhmenu.h (100%)
 rename {sys => outdated/sys}/wince/mhmsg.h (100%)
 rename {sys => outdated/sys}/wince/mhmsgwnd.c (100%)
 rename {sys => outdated/sys}/wince/mhmsgwnd.h (100%)
 rename {sys => outdated/sys}/wince/mhrip.c (100%)
 rename {sys => outdated/sys}/wince/mhrip.h (100%)
 rename {sys => outdated/sys}/wince/mhstatus.c (100%)
 rename {sys => outdated/sys}/wince/mhstatus.h (100%)
 rename {sys => outdated/sys}/wince/mhtext.c (100%)
 rename {sys => outdated/sys}/wince/mhtext.h (100%)
 rename {sys => outdated/sys}/wince/mhtxtbuf.c (100%)
 rename {sys => outdated/sys}/wince/mhtxtbuf.h (100%)
 rename {sys => outdated/sys}/wince/mswproc.c (100%)
 rename {sys => outdated/sys}/wince/newres.h (100%)
 rename {sys => outdated/sys}/wince/nhico.uu (100%)
 rename {sys => outdated/sys}/wince/resource.h (100%)
 rename {sys => outdated/sys}/wince/winMS.h (100%)
 rename {sys => outdated/sys}/wince/winhack.c (100%)
 rename {sys => outdated/sys}/wince/winhack.rc (100%)
 rename {sys => outdated/sys}/wince/winhcksp.rc (100%)
 rename {sys => outdated/sys}/wince/winmain.c (100%)
 rename {win => outdated/win}/Qt3/.gitattributes (100%)
 rename {win => outdated/win}/Qt3/Info.plist (100%)
 rename {win => outdated/win}/Qt3/Install.Qt (100%)
 rename {win => outdated/win}/Qt3/knethack.lnk (100%)
 rename {win => outdated/win}/Qt3/knh-mini.xpm (100%)
 rename {win => outdated/win}/Qt3/knh.xpm (100%)
 rename {win => outdated/win}/Qt3/qpe-nethack.control (100%)
 rename {win => outdated/win}/Qt3/qt3_clust.cpp (100%)
 rename {win => outdated/win}/Qt3/qt3_clust.h (100%)
 rename {win => outdated/win}/Qt3/qt3_kde0.h (100%)
 rename {win => outdated/win}/Qt3/qt3_win.cpp (100%)
 rename {win => outdated/win}/Qt3/qt3_win.h (100%)
 rename {win => outdated/win}/Qt3/qt3_xpms.h (100%)
 rename {win => outdated/win}/Qt3/qt3tableview.cpp (100%)
 rename {win => outdated/win}/Qt3/qt3tableview.h (100%)
 rename {win => outdated/win}/Qt3/tileedit.cpp (100%)
 rename {win => outdated/win}/Qt3/tileedit.h (100%)
 rename {win => outdated/win}/gem/.gitattributes (100%)
 rename {win => outdated/win}/gem/Install.gem (100%)
 rename {win => outdated/win}/gem/bitmfile.c (100%)
 rename {win => outdated/win}/gem/gem_rsc.uu (100%)
 rename {win => outdated/win}/gem/gem_rso.uu (100%)
 rename {win => outdated/win}/gem/gr_rect.c (100%)
 rename {win => outdated/win}/gem/gr_rect.h (100%)
 rename {win => outdated/win}/gem/load_img.c (100%)
 rename {win => outdated/win}/gem/tile2img.c (100%)
 rename {win => outdated/win}/gem/title.uu (100%)
 rename {win => outdated/win}/gem/wingem.c (100%)
 rename {win => outdated/win}/gem/wingem1.c (100%)
 rename {win => outdated/win}/gem/xpm2img.c (100%)
 rename {win => outdated/win}/gnome/.gitattributes (100%)
 rename {win => outdated/win}/gnome/README (100%)
 rename {win => outdated/win}/gnome/gn_xpms.h (100%)
 rename {win => outdated/win}/gnome/gnaskstr.c (100%)
 rename {win => outdated/win}/gnome/gnaskstr.h (100%)
 rename {win => outdated/win}/gnome/gnbind.c (100%)
 rename {win => outdated/win}/gnome/gnbind.h (100%)
 rename {win => outdated/win}/gnome/gnglyph.c (100%)
 rename {win => outdated/win}/gnome/gnglyph.h (100%)
 rename {win => outdated/win}/gnome/gnmain.c (100%)
 rename {win => outdated/win}/gnome/gnmain.h (100%)
 rename {win => outdated/win}/gnome/gnmap.c (100%)
 rename {win => outdated/win}/gnome/gnmap.h (100%)
 rename {win => outdated/win}/gnome/gnmenu.c (100%)
 rename {win => outdated/win}/gnome/gnmenu.h (100%)
 rename {win => outdated/win}/gnome/gnmesg.c (100%)
 rename {win => outdated/win}/gnome/gnmesg.h (100%)
 rename {win => outdated/win}/gnome/gnomeprv.h (100%)
 rename {win => outdated/win}/gnome/gnopts.c (100%)
 rename {win => outdated/win}/gnome/gnopts.h (100%)
 rename {win => outdated/win}/gnome/gnplayer.c (100%)
 rename {win => outdated/win}/gnome/gnplayer.h (100%)
 rename {win => outdated/win}/gnome/gnsignal.c (100%)
 rename {win => outdated/win}/gnome/gnsignal.h (100%)
 rename {win => outdated/win}/gnome/gnstatus.c (100%)
 rename {win => outdated/win}/gnome/gnstatus.h (100%)
 rename {win => outdated/win}/gnome/gntext.c (100%)
 rename {win => outdated/win}/gnome/gntext.h (100%)
 rename {win => outdated/win}/gnome/gnworn.c (100%)
 rename {win => outdated/win}/gnome/gnworn.h (100%)
 rename {win => outdated/win}/gnome/gnyesno.c (100%)
 rename {win => outdated/win}/gnome/gnyesno.h (100%)
 rename {win => outdated/win}/gnome/mapbg.xpm (100%)
2020-05-10 11:31:25 -04:00
Patric Mueller
6fcb3fc0c7 Only generate shop items on solid floor squares
This commit addresses one issue raised in #338 that shop items were generated
on lava squares.
2020-05-10 14:23:34 +02:00