Commit Graph

3791 Commits

Author SHA1 Message Date
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
nhmall
5a437b336a remove SYSFLAGS and MFLOPPY code
A check into github issue 364 confirmed that
ba6edbe5dc
had incorrectly updated the bwrite sizeof entry for sysflags.

The SYSFLAGS and MFLOPPY code is all in the outdated part of the tree, so just
remove it rather than re-correct it.

Closes #364
Closes #207
2020-07-05 08:50:13 -04:00
PatR
84bba3f099 refine documentation of Sokoban branch and conduct
Rephrase a few things and mention the extra boulder(s) since
that feature is a fundamental difference with actual Sokoban.

Fix typo/thinko:  "Others rules can...".

Change one instance of /Sokoban/ in italics to ordinary text.
Other conduct descriptions don't use such so it looked odd.
2020-07-04 15:09:56 -07:00
nhw_cron
9add8ed0c1 This is cron-daily v1-Jan-20-2020. guidebook updated: doc/Guidebook.txt 2020-07-03 07:21:27 -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
nhw_cron
26dcf68df8 This is cron-daily v1-Jan-20-2020. guidebook updated: doc/Guidebook.txt 2020-07-02 20:15:49 -04:00
PatR
e762429151 Guidebook fixup
The new sound stuff needed some fixing up.

Guidebook.mn - list start no longer specified the longest key;
  in the Postscript/PDF output, the new longer one was partially
  overwritten by the text which followed and in the text output,
  things didn't line up cleanly anymore.
Guidebook.tex - former last list entry which became next-to-last
  was missing a necessary line break.  [not tested]
both - sentence punctuation:  change period to semi-colon in former
  last entry that's now next-to-last; vice versa in new last entry.
2020-07-02 16:15:02 -07:00
nhmall
84a34d71dc Guidebook.txt from cron daily 2020-07-02 16:34:35 -04: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
30b19a3891 history reconciliation
Eliminate most of the minor differences between dat/history and the
end section of doc/Guidebook.txt which didn't seem to be intentional.
Several commas, a couple of past/present tense discrepancies, and
various clauses or whole sentences which were in one but not the
other.  There are still differences which this doesn't address.

Also a couple of actual changes.  Make the Guidebook refer to itself
as "this document" rather than "this paper".  Change "dozens of
people's work" to "scores of people's work".  Add a new sentence
describing the version numbering scheme used by 3.0, which wasn't
3.0.x yet.
2020-06-26 17:56:03 -07:00
nhmall
30c83d6f84 Merge branch 'NetHack-3.7' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.7 2020-06-23 06:28:35 -04:00
nhmall
0d1a4f57a3 from cron-daily 2020-06-23 06:28:02 -04: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
PatR
e30f1b800e history of 'tiles'
Warwick did the heavy lifting of the first tiles implementation.  But
I was the one who suggested changing his terminology to "tiles" even
though that doesn't match the term's traditional usage in computer
graphics.  Since then, our [mis-]usage has spread beyond nethack and
its variants.  [This isn't just bragging; I recall several years ago
that someone thought our implementation of tiles for MS-DOS was the
original implementation.  Their search of the newsgroup archives didn't
find Warwick's original announcement--Atari binaries and/or a source
patch in between releases--because the term "tiles" wasn't in use yet.]

I'm not sure whether Dean's font preceded Warwick's icons, but the
concept did.  If the description of their implemenations is backwards
than that bit should be reworded.

Also, add a sentence explaining why NetHack++ "was quickly renamed
NetHack--".
2020-06-20 19:57:53 -07:00
PatR
1d631a701d long dash formatting in the Guidebook
Guidebook.mn had a mixture of literal "--" and \(em to insert an
M-sized dash.  The literal was poor usage but the 'em' directives
were using " \(em " for source readability.  Unfortunately those
spaces ended up being included in the output where a long dash
shouldn't be surrounded by such.  This changes both to be
|start\(emmiddle\(emend
for proper usage without unwanted spaces.  The 'roff source becomes
harder to read so such phrases have been moved onto separate lines
instead of just staying within the flow of words.  (I tried
|start
|\(em
|middle
|\(em
|end
but the newlines became unwanted spaces in the output.)

Guidebook.tex incorrectly had a numeric range dash ("--") instead
of long dash punctuation ("---") in the places where the 'roff
version had literal "--".  I also moved the quite readable
|start---middle---end
phrases and a handful of whole sentences to separate lines to match
the Guidebook.mn source more closely.

One trivial text change is "you will forget" to "you will have
forgotten" in the bit about what happens to remembered objects
when the "remembered, unseen monster" glyph is taken off the map
since forgetting happens when that glyph is put on.
2020-06-20 18:07:36 -07:00
nhmall
ce1f8f6a41 cron job didn't include the change preceding the date bump 2020-06-20 09:31:35 -04:00
nhw_cron
8f486f02e3 This is cron-daily v1-Jan-20-2020. guidebook updated: doc/Guidebook.txt 2020-06-20 09:28:54 -04:00
nhmall
61482344ad Guidebook date bump 2020-06-20 08:40:21 -04:00
PatR
44a2e108e1 fix github pull request #358 - Guidebook typo
"if will" should be "it will".  The pull request only fixes this
for Guidebook.tex but it is also present in Guidebook.mn.  The typo
made it from one to the other via copy+paste.

Fixes #358
2020-06-19 15:50:25 -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
PatR
59818fb6ab implement #986 - camera flash 'tweak'
Implement the suggested feature that a camera's flash actually update
hero's memory of the map as it traverses across the level.  Turned
out to be more work than anticipated despite having the code for a
thrown or kicked lit candle or lamp to build upon.

Among other things it needed to update the circle code to handle
previously unused radius 0 to operate on the center point only.  I've
never touched that before and hope this hasn't introduced any bugs.

Also removes several instances of vision code operating on column #0.
(At least one is still present.)
2020-05-09 13:07:35 -07:00
nhmall
e06e042151 from cron-daily 2020-05-06 11:30:45 -04:00
PatR
116642ce1e track eight more achievements
Record reaching experience level 3, 6, 10, 14, 18, 22, 26, and 30,
the levels where the character gets a new rank title, and report
those as achievements at end of game.  These achievements persist
even if enough levels to lose a rank are lost, and if lost ranks
are regained the original achievement is the one that gets tracked
and disclosed.
2020-05-04 16:35:40 -07:00
PatR
7817e69c41 two new monsters from slash'em
Adds two monsters originally from slash'em.  I used the slash'em
tiles this time, also its code as a starting point but made various
revisions.  Both the tiles could benefit from some touch-ups.

displacer beast:  blue 'f'.  Attempting a melee hit (ie, trying to
  move to its spot) has a 50:50 chance for it to swap places with you.
  Fairly tough monster to begin with, then half your ordinary attacks
  effectively miss and if you try to face a mob by retreating to a
  corridor or backing into a corner you can end up being drawn back
  into the open.  I added bargethrough capability, and also it won't
  be fooled about hero's location by Displacement.  [It only swaps
  places during combat when contact is initiated by the hero, not
  when attacked by another monster or when attacking.]

genetic engineer:  green 'Q'.  Its attack causes the target to be
  polymorphed unless that target resists.  Hero will almost always
  have magic resistance by the time this monster is encountered, but
  it can make conflict become risky by hitting and polymorphing other
  monsters.  Slash'em flagged it hell-only but I took that flag off;
  I also took away its ability to teleport.  Slash'em polymorphs the
  hero if a genetic engineer corpse is eaten; that's included and I
  introduced that for monsters too.

I added both of these to the list of candidates for monster spell
'summon nasties' and for post-Wizard harassment.

I also gave all the 'f's infravision.  Probably only matters if the
hero polymorphs into a feline.

Displacer beast is originally from AD&D which depicts it as a six-
legged cougar with a pair of tentacles; it has Displacement rather
be able to affect an attacker's location.  I think genetic engineer
is original to slash'em where it expands Q class but seems mainly to
be the base monster for Dr.Frankenstein (a unique monster with a
one-level side-branch lair in slash'em's incarnation of Gehennom).
2020-05-03 14:13:08 -07:00