Commit Graph

10730 Commits

Author SHA1 Message Date
PatR
ce5eebcb9b fix lua tmpname() vs mkstemp() on linux
Avoid the warning that tmpname should be replaced by mkstemp by
replacing tmpname with mkstemp.  lua has code to do that but it isn't
trivial to activate while leaving the lua distribution unmodified.
[I've no idea whether nethack's usage even results in liblua ever
creating any temporary files.]

Using nethack's hints to pass -DLUA_USE_POSIX from top Makefile to
lib/lua-$(LUA_VERSION)/Makefile has been tested, building liblua.a
on linux with that has not.
2020-05-18 12:01:23 -07: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
nhmall
c1cd4eb0ae Windows Makefile.msc update for more recent VS 2019 2020-05-15 17:49:50 -04: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
Alex Smith
0968d06248 Make prayer timeouts longer in very long games
This is a security fix, intended to avoid a DoS attack (that has
been used in practice against public servers) in which a situation
is created in which the same short loop of commands can be run
over and over indefinitely; this causes a lot of CPU usage on the
public server as it simulates the game turns, and requires hardly
any network or CPU usage for an attacker.

Once the turn counter goes above 100000, the average prayer timeout
increases by 1 for every additional 100 turns spent. Thus, even
with a ring of slow digestion, nutrition prayers will no longer
be possible after turn 2 million or so. This is unlikely to have
any noticeable effect on any strategy that does not rely heavily
on prayer for nutrition; even in an implausible 200000-turn game,
prayer timeout will only be increased by 1000 or so, which should
be easily manageable for a character that powerful.
2020-05-12 00:27:13 +01:00
PatR
e0745db09f comment typo 2020-05-11 13:42:25 -07:00
PatR
2c8220f881 permissions/mode fix up after file was moved 2020-05-10 14:47:15 -07:00
nhw_cron
fce3be475f This is cron-daily v1-Jan-20-2020. files updated: Files 2020-05-10 12:26:40 -04:00
nhmall
a6d84209bf msdos Makefile bit
still untested
2020-05-10 12:16:37 -04:00
nhmall
285fc69da0 Makefile updates for windows, msdos
The msdos Makefile changes are untested.
2020-05-10 12:11:17 -04:00
nhmall
d36a127574 .gitattributes for outdated folder 2020-05-10 11:52:00 -04:00
nhmall
0068315131 .gitattributes for outdated/sys/msdos 2020-05-10 11:50:03 -04:00
nhmall
390a531f16 relocate the real mode msdos code to outdated/sys/msdos 2020-05-10 11:46:07 -04: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
nhmall
c6d09a58d6 move unmaintained files into outdated folder
If an old port is resurrected to work with current version code, its files
can be relocated to the appropriate sys or win folder as required.

In the meantime, the burden of upkeep can be avoided for the stuff in the
outdated folder for now.
2020-05-10 11:24:51 -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
6ad4b48ceb add more alternate wish matching
Allow "esp helmet" to find "helm of telepathy" and "power gloves"
to find "gauntlets of power".  Plus add a few item names used in
other games that have a close enough match in nethack.
2020-05-09 16:14:52 -07:00
PatR
4ca707ecf4 fix -Wmissing-prototypes warning
drawing.c doesn't include extern.h, so the def_char_... functions
it defines aren't preceded by a prototype.  Having such guaantees
that code in other files sees the same argument types as in the
defining code.
2020-05-09 15:51:38 -07:00
nhmall
c2fa3c36d8 dependency bit 2020-05-09 18:19:56 -04:00
nhmall
26ac20503c fixup build for platforms without curses after drawing.c split
An Undefined reference to decgraphics_mode_callback was possible
if built for tty only.

drawing.c had an #include "tcap.h" which is what actually defined
TERMLIB. It isn't needed in drawing.c anymore, but it is needed
in symbols.c, in order to get the define for TERMLIB so that
decgraphics_mode_callback variable gets defined.

The undefined reference was from win/tty/termcap.h in code that
was #ifdef TERMLIB, but win/tty/termcap.h has the #include "tcap.h"
2020-05-09 18:07:56 -04:00
PatR
7b4f5ce1c0 temporary light fix
Don't replace a monster that's been temporarily seen via camera
flash or thrown/kicked lit candle/lamp with "unseen, remembered
monster" glyph if it can be sensed via telepathy, warning, or
extended monster detection.
2020-05-09 13:36:22 -07: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
d564fa8ac7 extern.h obsolete bit 2020-05-06 17:03:06 -04:00
nhmall
7178d2c9e2 extern.h updates to reflect drawing.c split 2020-05-06 16:40:24 -04:00
nhmall
044b55a8ba sys/winnt/Makefile.gcc updates for new file (mingw) 2020-05-06 16:24:03 -04:00
nhmall
aa3a859bef remove obsolete global variable declaration 2020-05-06 12:44:12 -04:00
nhmall
c831522e94 Xcode fixes 2020-05-06 11:35:55 -04:00
nhmall
e06e042151 from cron-daily 2020-05-06 11:30:45 -04:00
nhmall
e2ccebb0cf move some text strings from drawing.c over to the file that uses them 2020-05-06 11:15:25 -04:00
nhmall
cdf280628c split symbols bits from drawing.c; new file src/symbols.c 2020-05-06 10:55:54 -04:00
PatR
a51e44e532 move lua context out of dungeons[]
and out of save files so restore doesn't need to clear stale data.
Behavior should be the same as before, except that when entering
the endgame branch and discarding the main dungeon and its other
branches, lua theme context is now discarded for those too.
2020-05-05 18:06:00 -07:00
PatR
19529ffb2f extern.h bits
Clean up a few things I recently noticed:
  obsolete monstr.c was still present;
  mdlib.c was out of alphabetical order;
  monst_global_init() was listed under the wrong file.
2020-05-05 12:39:24 -07:00
nhmall
f1d7676bfb more CROSSCOMPILE fixes 2020-05-05 14:04:29 -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
16562b2892 displacer beast as food
Make eating a displacer beast corpse or a tin of displacer beast
meat confer temporary Displacement lasting 6d6 turns.
2020-05-04 09:50:11 -07:00
PatR
88461e1923 makemon and goodpos flags
I added another goodpos flag to simplify handling displacer beast
and that pushed the total number of makemon and goodpos flags past
16.  'int' and 'unsigned' might be too small, so change the flags
and several function arguments to 'long'.
2020-05-04 09:19:37 -07:00
nhmall
28ae203ad7 directory correction bit in Cross-compiling doc
panic.c is in util
2020-05-04 09:16:33 -04:00
nhmall
e440e9569d change is_safepet macro name
Leaving the word "pet" in the macro name, when it applied to non-pets
seemed too contradictory, even for NetHack.
2020-05-03 21:52:41 -04:00
nhmall
aa5eb5a355 yet another host-side crosscompile fix
The host build portion using sys/msdos/Makefile1.cross) was failing because it
was attempting to compile the generated tile.o which is using hack.h.

gcc  -o../util/tilemap host_o/tilemap.o
A new ../src/tile.c has been created
gcc -c -O -I../include -I../sys/msdos -DDLB  -DUSE_TILES -DCROSSCOMPILE -DCROSSCOMPILE_HOST -ohost_o/tile.o ../src/tile.c
In file included from ../include/hack.h:201:0,
                 from ../src/tile.c:3:
../include/dungeon.h:70:5: error: unknown type name ‘lua_State’
     lua_State *themelua;   /* themerms compiled lua */
     ^
../sys/msdos/Makefile1.cross:286: recipe for target 'host_o/tile.o' failed
make: *** [host_o/tile.o] Error 1

I don't think think the tile.o is required on the host build build portion,
so it is probably an error in the Makefile. Try removing it.
2020-05-03 21:22:55 -04:00
PatR
b8da4e9294 amulet tiles
Replace the octagonal amulet placeholder for the two new tiles.
Give the "cubical amulet" a hint of being cube shaped and rename
"pentagonal amulet" to "perforated amulet" because it's easier to
draw that way.

Bump EDITLEVEL now for the extra objects and monsters because I
forgot to do so earlier.
2020-05-03 16:34:54 -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
PatR
d31e3d172a win/share/safeproc.c 2020-05-03 12:40:10 -07:00
PatR
65d45b21b3 new amulet tiles
The lines intended as comments which weren't treated as comments
were the problem with the revised tiles.  Taking them out fixes the
"psychedelic" tiles map for X11.

The two new amulets still need their own distinct artwork.  Probably
at least one could be 'borrowed' from the slash'em sources although
it wouldn't match either of the new descriptions (assuming any of
them do; their too tiny for me to see well enough to tell).
2020-05-03 12:25:52 -07:00