Commit Graph

10454 Commits

Author SHA1 Message Date
PatR
debeadfbbe minor #wizmakemap fix - revoked achievements
When replacing Mines' End or top of Sokoban, the achievement for
finding the special prize there is reset.  But the code to do so was
accidentally inside the monster processing loop and got repeated for
each monster on the old instance of the level (essentially a no-op
after the first one though).  That code had been updated more than
once without noticing.  Move it out of the loop.
2020-03-08 14:51:22 -07:00
Pasi Kallinen
9ea2fb7422 Fix flipping some monsters
Don't flip the guard waiting to be disposed of.
Don't flip the occasional monster (usually an earth elemental)
outside the level bounds.
2020-03-08 20:01:41 +02:00
PatR
feb85ad83c ^G limit
Relax the count limit from 255 to ROWNO*(COLNO-1) so that it can
be big enough to fill an entire level yet remain small enough to
not churn away seemingly forever if an absurd amount is specified
for 'random' or for a class rather than a type.  (By-type already
gives up as soon as failure occurs, so is implicitly limited to a
count matching the available space on the level.)  Also impose the
same limit on 'count ^G monster' as '^G count monster'.
2020-03-08 10:29:39 -07:00
Pasi Kallinen
f18b5bb59b Make special levels generate objects with genocided monster classes
If a special level explicitly requests eg. a statue with a genocided
monster class, allow generating it.

Rationale is that those objects were generated before the monsters
became extinct. Also fixes a lua error.
2020-03-08 14:08:32 +02:00
nhw_cron
7b226a12cb This is cron-daily v1-Jan-20-2020. guidebook updated: doc/Guidebook.txt 2020-03-07 18:56:07 -05:00
Pasi Kallinen
aca240c928 Limit wizgenesis to max 255 monsters 2020-03-08 00:15:28 +02:00
Pasi Kallinen
fcfa5dc267 Fail fetch-lua in Unix Makefile more gracefully
If missing curl or failing to download the lua tarball,
don't try to untar the nonexistent file.
2020-03-07 22:38:33 +02:00
nhmall
ba534a337a Merge branch 'NetHack-3.7' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.7 2020-03-07 14:36:24 -05:00
nhmall
97cf78d0e6 merge bit 2020-03-07 14:36:03 -05:00
Pasi Kallinen
f5d9324f28 Fix wizmakemap to consider monster birth counts and uniques
Also add a new wizmode command #wizborn to show those.
2020-03-07 21:35:26 +02:00
PatR
2a37fe5a3b remove mhitm.c's 'otmp'
Get rid of a couple of variables that were file scope and then
incorporated into 'g'.  This should prevent the situation where
attacking a shade gave bogus feedback about glorkum although I
never did reproduce that.

This eliminates g.otmp and g.dieroll but leaves a couple of others.
g.vis really should go away....
2020-03-07 11:20:45 -08:00
nhmall
d2009bc8d0 Merge NetHack 3.6 updates into NetHack-3.7 2020-03-07 14:08:40 -05:00
PatR
44b6612fdc mon's glorkum pass harmlessly through the shade
I couldn't reproduce the problem; it appears to depend upon whether
the file-scope variable 'otmp' has a stale value, and that might
happen after a monster has tried to steal mon's saddle.  However,
the code pointed out in the report is clearly wrong.  This prevents
feedback of "glorkum" (with plural verb since quantity of 0 isn't 1),
but the potential stale value hasn't been dealt with.
2020-03-07 10:47:51 -08:00
nhmall
b069b2224a update visual studio props file 2020-03-07 11:45:35 -05:00
nhmall
7363189b22 clear travis boolean prerelease flag as well 2020-03-07 11:38:42 -05:00
nhmall
a52ff4b946 update .travis.yml 2020-03-07 11:32:50 -05:00
Pasi Kallinen
d89b9c8c1a fixes doc bit
Previous commit should've been:

Fixes #311
2020-03-07 17:18:30 +02:00
Pasi Kallinen
8b6ae1642d Fix flipping non-existent stairs
If the stair or ladder x coord is 0, it doesn't exist.
Flipping it, caused "u_on_newpos: trying to place hero off map <80,0>"
when coming back up from the valley into the castle, and the
castle was flipped.

Fixes #331
2020-03-07 17:07:10 +02:00
Pasi Kallinen
2fc9c02f88 lua special level feature flags
Allow des.feature() to set rm flags for the special features.
2020-03-06 20:30:15 +02:00
PatR
3f377b9405 fix #H4545 - stack of scrolls of scare monster
Reported 3.5 years ago.  Specifying a count for pickup to pick up a
subset of a stack was processed after scrolls of scare monster were
handled, so a whole stack of those got picked up or crumbled to dust
whether you gave a count or not.  Also, if you were too encumbered to
pick up the full stack, they still all crumbled or all changed state
to crumble next time, then for the latter case you picked up as big a
subset as you could handle.
2020-03-06 09:24:33 -08:00
nhmall
6c57144a0e one more redundant entry 2020-03-06 12:01:59 -05:00
nhmall
d8b1d19137 remove redundant entries that are now in fixes36.6 2020-03-06 11:58:23 -05:00
nhw_cron
3cb00d504d This is cron-daily v1-Jan-20-2020. files updated: Files 2020-03-06 11:32:59 -05:00
nhw_cron
3fbdfe788f This is cron-daily v1-Jan-20-2020. guidebook updated: doc/Guidebook.txt 2020-03-06 11:31:52 -05:00
nhmall
94f06d629a merge bits 2020-03-06 11:30:39 -05:00
nhmall
2913983c64 amiga .gitattributes bit 2020-03-06 11:04:24 -05:00
nhmall
cc61ac61a4 README bit 2020-03-06 11:00:51 -05:00
nhmall
2af37f44d4 Merge March 2020 changes into NetHack 3.7 2020-03-06 10:59:50 -05:00
nhmall
e20024e42b March 2020 updates 2020-03-06 10:31:51 -05:00
PatR
32b69f5c33 avoid #wizrumorcheck crash on bad rumor input
If either rumors.tru or rumors.fal was empty when makedefs made
'rumors', init_rumors() will set true_rumor_size to -1 to indicate
that rumors aren't available.  It also closes the input file, and
then #wizrumorcheck closed that again, triggering a crash in the
dlb code.

Fortune cookies and oracles work ok (just not very interesting)
when rumors aren't available.  Only the check command had trouble
with that.
2020-03-05 13:55:45 -08:00
nhmall
998893ac32 fixes update 2020-03-04 16:01:50 -05:00
PatR
60bc28154a fix github issue #302 - divide by 0 crash
The traceback points directly to the problem:  divide by 0 happens
if the 'bogusmon' file only contains the "do not edit" line, which
would happen if 'bogusmon.txt' is empty.  makedefs probably ought to
complain about that.

There is now one hardcoded bogus monster to fall back to:  'bogon'.

Random tombstone epitaphs report divide by 0 if their text source is
empty, but it is done by rn2() rather than rn2_for_display_rng() so
is just a warning for pre-release code.  It would crash for release
version though.

I tried placing an empty engravings file and expected similar results
but didn't see any response.  Not sure what that means.

After the fix, empty epitaph file yields blank result so graves that
want a random epitaph won't have any epitaph.

Fixes #302
2020-03-04 15:57:33 -05:00
PatR
7220c9d2d2 more #302 - empty {bogusmon,engrave,epitaph}.txt
Have makedefs add a real data line to the output for the files that
caused trouble when empty.
2020-03-04 15:45:10 -05:00
Pasi Kallinen
54ca0c2211 Lua tests for map and room contents 2020-03-04 22:07:10 +02:00
Pasi Kallinen
a6dfbfca2f Lua: Add contents function to room and map
The function will get the map/room width and height as a parameter.
2020-03-04 20:05:15 +02:00
nhw_cron
0016132ab3 This is cron-daily v1-Jan-20-2020. files updated: Files 2020-03-04 11:43:28 -05:00
nhw_cron
b709869f13 This is cron-daily v1-Jan-20-2020. guidebook updated: doc/Guidebook.txt 2020-03-04 11:43:14 -05:00
nhmall
abdd3254ae updates for 3.6 March 2020 2020-03-04 10:41:57 -05:00
nhmall
1e5fd608bf update to Install.nt 2020-03-04 10:31:48 -05:00
PatR
12c2f84f64 corpse_xname() fix
Potential write out of bounds, in front of the block of obufs.
Not exploitable but could conceivably trigger a crash.
2020-03-04 01:58:22 -08:00
PatR
cb18f60331 match_str2clr() fix
Integrity fix.  Make sure color values obtained via atoi() are sane
so that use as array indices can't go out of bounds.
2020-03-03 16:46:04 -08:00
nhmall
7902bacf70 build fix for vs2019
src\nhlsel.c(604) : error C4703: potentially uninitialized local pointer variable 'mf' used
2020-03-03 18:34:27 -05:00
PatR
452962aa72 reglyph_darkroom map traversal 2020-03-02 16:33:43 -08:00
PatR
4b78763d70 Mister Fantastic's sea monster form
While polymorphed and underwater, an eel bite killed the hero who
rehumaized and crawled out of the water, then the eel continued with
its second attack and "wrapped itself around you" even though no
longer adjacent.  That's a long reach....

| ...@.
| .;}..
| .}}..

Make any additional attacks silently miss if hero changes location
during the attack sequence of a monster who has pinpointed the hero.
2020-03-02 15:58:42 -08:00
PatR
661570f7a9 conditional status condition tracking
If 'sinking-into-lava' is disabled as a displayed status condition
but general 'trapped' is enabled, then display 'trapped' when in lava.
Similarly, if 'grabbed-by-eel' is disabled but more general 'held' is
enabled, display 'held' when grabbed.
2020-03-02 15:16:50 -08:00
PatR
991dbc5b8f panictrace_libc
Try to make the tracebacks generated via PANICTRACE's libc method
be more readable.  There tends to be a lot of blank space in the
middle of lines, depending on the length of the program's or
libraries' file names, which can make lines wrap and the whole
thing sometimes be harder to make out.  Narrow it by squeezing out
some spaces from each line before writing to reduce the chance of
line wrapping.  That isn't guaranteed to make things ledgible but
seems to help quite a bit.  Also, force the line number inserted
by nethack to be two digits so when spanning from line 9 to line 10
it doesn't cause the field positions to shift by a column.  (Using
'#panic' doesn't have enough stack frames to illustrate that.)

I think the original libc formatting was designed for the address
column to hold a 32-bit value ('0x' prefix and 8 hex digits), and
eventually extending that to handle 64 bits ('0x' prefix and 16 hex
digits) made things wider than intended.  But the gradual increase
in the length of function names we use is also a factor.
2020-03-02 15:05:06 -08:00
Pasi Kallinen
00be8be45a Start of lua api docs
... in asciidoc format. Use "asciidoctor -b html5 lua.adoc"
to generate the HTML version.
2020-03-02 18:10:35 +02:00
Pasi Kallinen
c9b21e36a7 Add lua selection match method
Also improve the replace_terrain command parameters.
2020-03-02 16:17:53 +02:00
nhmall
ee2821e7e8 action after parse_role_opts() returns FALSE
The old parseoptions() would get a FALSE return from parse_role_opts() and
then exit FALSE.

The new parseoptions() was printing an error message due to the FALSE return
value, and then exiting FALSE.

Have it behave the original way following parse_role_opts().
2020-03-02 01:11:51 -05:00
PatR
ffcd471ef7 fix github issue #309 - random role segfault
Role selection is insanely complex.  I had to use a debugger to force
the relevant routine to be executed.

The analysis was correct:  it could use rn2(14) to pick a role (valid
values 0 through 12) and randomly getting 13 would lead to a crash.

The terminating element of roles[] passes all the ok_role(), ok_race(),
etc tests.  Explicitly exclude that element when collecting the roles
to choose from.
2020-03-01 14:36:28 -08:00