Commit Graph

10778 Commits

Author SHA1 Message Date
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
nhmall
f365bdd254 some mingw bits to move its gui variation closer to building and running 2020-06-11 12:26:44 -04:00
nhmall
b87d2242af one file missed in yesterday's commit 2020-06-09 09:04:15 -04:00
nhmall
bb1a0dd60b build warning for noreturn function that does return
The warning showed up with gcc on msdos (__DJGPP__)

end.c: In function 'nh_terminate':
end.c:1729:1: warning: 'noreturn' function does return
 }
 ^
2020-06-08 14:44:29 -04:00
Patric Mueller
8564ee95b0 Record number of wishes and artifact wishes in xlogfile 2020-06-07 16:39:58 +02:00
nhmall
f4c1e84bdd ignore windows link workfiles 2020-06-07 08:49:27 -04: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
6f9cd70226 comment clarification 2020-06-03 14:33:17 -07:00
nhmall
2c83e2e7e1 recognize visual studio 16.6 (released spring 2020) 2020-06-03 13:40:09 -04:00
PatR
f050d5b140 dead thief bit
Inside the afternmv routine is too late to tweak nomovemsg.
2020-06-03 07:55:06 -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
ac364b3e20 message when going from fainting back to weak
Implement the suggested revised wording when eating something
ends fainting back leaves the hero still weak.
2020-05-31 17:39:52 -07:00
nhmall
157d54ca27 Cross-compiling doc update 2020-05-31 12:41:36 -04:00
PatR
8a91a22df9 fix issue #351 - summoned critters while Hallu
If a monster uses the 'summon insects' spell (which will resort to
snakes if all 'a' class critters are genocided or extinct) while the
hero is hallucinating, report the summoning of something unusual
rather than of insects or snakes.  I bypassed "random creature"
direct to "hallucinatory creature" for the something unusual.

Fixes #351
2020-05-30 22:48:18 -07:00
PatR
54bea16f0e Revert "fix issue #351 - summoned critters while Hallu"
This reverts commit e430669f50.
It accidentally included my local config.h settings.
2020-05-30 22:35:35 -07:00
PatR
e430669f50 fix issue #351 - summoned critters while Hallu
If a monster uses the 'summon insects' spell (which will resort to
snakes if all 'a' class critters are genocided or extinct) while the
hero is hallucinating, report the summoning of something unusual
rather than of insects or snakes.  I bypassed "random creature"
direct to "hallucinatory creature" for the something unusual.

Fixes #351
2020-05-30 22:24:21 -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
nhmall
0fed5a06db Cross-compiling, msdos Makefile 2020-05-30 08:41:20 -04:00
PatR
4e677294b3 data.base formatting bit
Only two of the umpteen quote attributions were separated from their
quote by a blank line, so remove those two extra blank lines.
2020-05-28 17:20:01 -07:00
PatR
c5d089f5e5 tribute typo: Jingo #2
Reported directly to devteam; transcription typo:  had "Vines", should
be "Vimes".

I double checked that long passage and found two other mistakes:
"proffered" was misspelled with 2nd 'r' doubled,
| 'Quoted statement,' someone said.  'Another statement.'
lacked the opening quote on the second sentence.

My source uses double quotes (normal American usage).  I'm not sure
why the passages which refer to it--the page number annotations
specify that same source--were transcribed with single quotes (normal
British usage), but I've left those as is.

The sentence with "Vines" was also separated from the previous one by
a single space when nearly everything in dat/tribute uses double space.
A quick regexp search found half a dozen or so other instances of that.
This fixes those but the searching wasn't rigorous and it's sometimes
ambiguous whether an elipsis or long dash constitutes the end of a
sentence before another starts or is just in the middle of a long one.
2020-05-28 12:50:21 -07:00
PatR
fe88fa80d8 refine the issue #349 fix
Accept or ignore the in-hell-only and non-in-hell-only flags on
a monster type by monster type basis instead of all or nothing
for a given mkclass() call.  Prevents demon summoning outside of
Gehennom from bringing in only succubi and incubi 10 times out
of 11 and mixture of demons the other time.
2020-05-27 16:18:12 -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
PatR
c63165e5dc data.base descriptions for new monsters
Displacer beast and genetic engineer lacked data.base entries so
I've made a couple up from thin air.  I tried to look up "genetic
engineering" in _the_Concise_Dictionary_of_Biology_ (after seeing
that the quantum mechanic quote comes from _Concise_Dictionary_of_
_Physics_) but could only view the first sentence so don't know
whether it had anything more useful.  I also skipped the AD&D
Monster Manual for displacer beast except for remembering the
puma-like bit from previously checking it.  So regardless of any
old copyright issues in data.base, there shouldn't be any new ones.
2020-05-26 12:12:14 -07:00
nhmall
3d3fa958c6 add an indicator of thonged portion to aklys tile 2020-05-26 11:16:54 -04:00
nhmall
149592eb29 Merge branch 'NetHack-3.7' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.7 2020-05-24 16:28:43 -04:00
nhmall
009c969a00 slash'em had a different palette defined 2020-05-24 16:24:58 -04:00
PatR
6f7fc6012f "you resume the last bite of your meal"
is nonsense, grammatically speaking.  Change the variant wording of
"you resume your meal" to be "you consume the last bite of your meal".

The alternate wording is intended to handle the case where no "you're
finally finished" message occurs (#H8922) but I don't remember how to
reproduce that so got both "you consume last bite" and "you finish".
2020-05-24 11:47:56 -07:00
PatR
e2fae16d22 minor object identification wording tweak
When everything is identified and you read a scroll of identify, you
get
|You have already identified all of your possessions.
That's unchanged.  Same situation, except learning scroll of identify
at the time and you've just been told "this is a scroll of identify":
old |You have already identified all the rest of your possessions.
new |You have already identified the rest of your possessions.
2020-05-24 11:09:43 -07:00
PatR
b720b0f469 questpgr memory management
Fix a complaint from 'heaputil' about freeing a Null pointer.  ANSI C
allows that but but older implementations could have problems.

This code is from four months ago and I don't remember how thoroughly
it was tested at that time.  It's only had minimal testing now.
2020-05-24 03:06:18 -07:00
PatR
298331fe04 improved regexp handling
If regex_compile() fails, free the regexp before doing anything else
in case failure reason is "out of memory".  Feedback to the user is
highly likely to panic or crash after memory runs out; this should
let the regex failure message be issued and the game continue.

User sound regular expressions were never freed.  This frees them
when FREE_ALL_MEMORY is enabled.
2020-05-23 12:51:01 -07:00
nhmall
1d7ee022e6 remove outdated header files from Xcode project 2020-05-23 14:08:45 -04:00
nhmall
305ad3c58e remove outdated Xcode references 2020-05-23 14:00:34 -04:00
nhmall
e726bfe98a Xcode bit 2020-05-23 13:52:17 -04:00
nhmall
36d2da1b80 travis naming: platform-build-compiler-other 2020-05-20 11:34:24 -04:00
Patric Mueller
9372b35c46 Demons summoning other demons only when near hero
Commit 2fbf9573d5 dropped erroneously the range condition for demons summoning
other demons.
2020-05-20 16:40:40 +02:00
PatR
ed5a2ea11e unix/Makefile.top bit
Guard against SYSCFLAGS someday containing space-separated tokens.
2020-05-19 11:07:48 -07:00
nhmall
a8d813b696 .travis.yml bit 2020-05-18 23:28:23 -04:00
nhmall
696aaf8b8d remove added hints file
append the -fno-common to the existing Makefile
2020-05-18 23:24:29 -04:00
nhmall
98ba1bdf20 travis update - have a build with and without -fno-common 2020-05-18 22:49:05 -04:00
nhmall
ee41403af2 add -fno-common build to travis 2020-05-18 22:39:49 -04:00
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