PatR [Sun, 3 Nov 2019 00:15:54 +0000 (17:15 -0700)]
couple of Guidebook.tex bits
More symbols: I left out a word on the continutation line for S_stone
and S_tool has been forcing narrow space where ordinary <comma><space>
was intended.
PatR [Sat, 2 Nov 2019 23:05:39 +0000 (16:05 -0700)]
Guidebook.tex catch up, Guideboon.mn bits
Guidebook.tex not tested. The \, in the continuation of S_stone is
a narrow space in LaTeX. It should be \hspace{ width of '(' } but
I don't remember how to measure something in LaTeX or TeX.
Guidebook.mn is getting two small changes: I forgot about the
guideline that each sentence be on its own line. Also, this adds the
fix for wide lines in the dungeoneers list although the reordering
accompanying a recent change might have made that moot (unless some
future reordering puts wide names on the same line again, assuming
that was the issue).
nhmall [Sat, 2 Nov 2019 13:23:34 +0000 (09:23 -0400)]
missing constants on mingw build fix
Errors seen during build:
o/windmain.o:windmain.c:(.rdata$.refptr.FOLDERID_ProgramData[.refptr.FOLDERID_ProgramData]+0x0): undefined reference to `FOLDERID_ProgramData'
o/windmain.o:windmain.c:(.rdata$.refptr.FOLDERID_LocalAppData[.refptr.FOLDERID_LocalAppData]+0x0): undefined reference to `FOLDERID_LocalAppData'
o/windmain.o:windmain.c:(.rdata$.refptr.FOLDERID_Profile[.refptr.FOLDERID_Profile]+0x0): undefined reference to `FOLDERID_Profile'
collect2.exe: error: ld returned 1 exit status
mingw32-make: *** [Makefile:849: ../binary/NetHack.exe] Error 1
DEFINE_KNOWN_FOLDER is using this particular definition in the mingw
header files:
rather than this one:
So, the known folder values that recent code is using such as
FOLDERID_ProgramData, FOLDERID_LocalAppData, and FOLDERID_Profile are
being declared as external constants.
That is why the error is a link error. We need to include -luuid on
the link command line because those external constants are defined
in uuid.lib.
PatR [Sat, 2 Nov 2019 10:32:35 +0000 (03:32 -0700)]
Guidebook.mn Symbols section
The table listing symset entries was ok for ps/pdf output but for
plain text output it was wrapping to a second line for S_xan,
S_pet_override, and S_player_override and also going past the right
margin for some others. I've shortened the text for those three
and narrowed the first column to give more room for the third column,
bringing all the lines within their margin.
The entry for S_stone was rather surprising: "dark part of a room".
It now says "solid rock or unexplored terrain or dark part of a room"
and needed to span two lines.
The first column has been labeled "Default" but that was why that
column was wider than necessary. It now has a label of two spaces
and is left justified instead of being centered. It is also now
forcing constant-width Roman as the font and every character in that
column should be the same size so one reason for centering is removed.
The title used to be centered but always looked a bit off due to the
fact that the three columns have differing widths and/or because of
the over-wide lines changing the location of "center". It is now
left justified and looks a little bit like it's labeling the first
column. Perhaps it needs a blank line separating it from the rest.
nhmall [Sat, 2 Nov 2019 05:03:02 +0000 (01:03 -0400)]
bump Windows supported version in mingw-w64 sys/winnt/Makefile.gcc
mingw-w64 sys/winnt/Makefile.gcc required a Windows version bump from
0x0501 to 0x0601 (XP level to Windows 7 level) during compile in
order for the mingw system header files to include some of the
needed support for recent Windows port changes.
PatR [Thu, 31 Oct 2019 13:57:16 +0000 (06:57 -0700)]
fix #H9374 - initial rendering of guardian angel
Creation of guardian angel bypasses tamedog() and marks it tame
directly but it wasn't updating the map after changing the monster.
So if 'hilite_pet' was On when entering the Astral Plane level, the
angel appeared to be ordinary monster rather than a tame one until
it moved or the screen was redrawn. Also, the message about it
appearing was issued before marking it tame, so a tiny bit of code
reordering has been done to get the sequence correct.
PatR [Thu, 31 Oct 2019 00:37:04 +0000 (17:37 -0700)]
Guidebook tweak
This sample comment attending the sample SYMBOLS statement fit ok in
the pdf output but wrapped to another line in the plain text output,
so shorten it.
S_xan, S_pet_override, and S_player_override still wrap, but by a bit
less than before. Their width causes the line of dashes at the top
of the table to wrap too.
nhmall [Wed, 30 Oct 2019 22:48:28 +0000 (18:48 -0400)]
attempt to get mingw building correctly after recent changes
make typedef of boolean match mingw header files
link with shell32 and ole32 as Makefile.msc now had to do
kludge some stuff missing from mingw headers in sys/winnt/windmain.c
PatR [Wed, 30 Oct 2019 15:20:22 +0000 (08:20 -0700)]
fix 'roff warning
I think it was issued by tbl but it wasn't about any of the tables.
warning: numeric expression expected (got 'R')
was complaining about
.lp SYMBOLS, ROGUESYMBOLS
Exclosing the paragraph label within quotes to make it one argument
to the lp macro or command would have fixed this, but I've split
them into two paragraphs. And reordered several of the paragraphs
which were alphabetized just enough to make the out of order ones
seem like mistakes.
nhmall [Mon, 28 Oct 2019 03:12:11 +0000 (23:12 -0400)]
some symbol tweaks
A few symbol-related modifications:
- fulfill a request from a blind player to allow them to
specify a unique/recognizable character for all pets and/or
the player in the config file for use when using a screen
reader (S_player_override, S_pet_override). Requires sysconf
setting ACCESSIBILITY to be set to have an effect, although
they can still be specified in the config file.
- Config file SYMBOLS entries were not working properly on
the rogue level. Allow ROGUESYMBOLS as well as SYMBOLS to be
specified in the config file independently.
- When values are moved into showsyms[], the overriding SYMBOLS
or ROGUESYMBOLS entry from the config file is used if there is
one; if there is no overriding value for a particular symbol,
the loaded symset value is used; if there is no symset entry
loaded for the symbol then a default symbol is used.
Bart House [Sun, 27 Oct 2019 03:09:14 +0000 (20:09 -0700)]
Modified travis builds to deploy the x86 windows build to github if tagged.
Moved the travis visual studio build bash script to live outside of
the travis YML file. Updated the script to use powershell to generate
ZIP file form the binary results.
Deploy Windows build ZIP file to github releases if build has commit
has been tagged. Build will be marked pre-release.
PatR [Sun, 27 Oct 2019 02:01:49 +0000 (19:01 -0700)]
paranoid_query bulletproofing
Make paranoid_query() (yn question requiring explicit "yes" answer)
protect itself from overly long prompt strings. I'm not aware of
any specific overflowing queries so I temporary reduced QBUFSZ within
paranoid_query() in order to test.
For EDIT_GETLIN, don't use previous response as default if we loop
after neither "yes" nor "no" was given for paranoid confirm.
PatR [Sat, 26 Oct 2019 06:11:06 +0000 (23:11 -0700)]
fix github issue #238 - 'scores' option
Fixes #238
For the three fields in the 'scores' option's argument: top, around,
and own, if any was separated from preceding one by space(s) rather
than slash and lacked a count prefix, the argument parsing skipped
over it. So "10t/3a/o" and "10t 3a 1o" worked but "10t 3a o" ignored
the 'o'. The issue report was about 'own' but there's nothing special
about 'own' itself; just that it doesn't warrant a count prefix and is
usually last (in other words, normally preceded by one or both of the
other two) so more likely to trip over this.
[I thought there was another report about 'scores' misbehaving (from
quite a while ago) but couldn't find one. If it exists, it might have
been about the same thing.]
PatR [Sun, 20 Oct 2019 00:38:27 +0000 (17:38 -0700)]
mimicking slime molds
Mimic-as-slime_mold needs to keep track of the fruit index the same
way that mimic-as-corpse keeps track of corpse's monster type. The
mimic description was changing (for '/' and ';' feedback) whenever
the player assiged a new fruit name.
That wasn't noticeable when applying a stethoscope because
mimic-as-slime_mold always yielded "that fruit is really a mimic".
Change it to report the fruit's type instead of generic "fruit".
PatR [Sat, 19 Oct 2019 01:23:47 +0000 (18:23 -0700)]
symset and roguesymset options
For 'O's menu, make the current symbol set be pre-selected so that
the set in use is clearly marked while contemplating changing it.
Using Return or Enter will pick it again; Escape is now needed to
deliberately not make any selection.
Also, change several symbol set initializations to use the new method
of deciding whether the default symbols are still in place.
PatR [Fri, 18 Oct 2019 22:00:16 +0000 (15:00 -0700)]
containers in shops
Fix a couple of bugs I stumbled across while testing something else.
The sell prompt for a container dropped in a shop had phrasing issues.
This fixes a couple but there are more. The message composition
assumes that contents fall into two categories: those already owned
by the shop and those the shopkeeper is offering to buy from the hero.
But there is a third: stuff the shopkeeper doesn't care about so
won't buy. The count_contents() routine can supply total contents or
shop-owned contents. Subtracting one from the other yields combined
hero-owned without any way to separate out shk-cares and don't-care.
PatR [Fri, 18 Oct 2019 01:45:56 +0000 (18:45 -0700)]
fix #H9312 - partly eaten food in bones shop
Dying in a shop while carrying partly eaten food would place that food
on the floor without marking it no_charge. But marking it that way
wouldn't have helped because as bones data gets saved, every object on
the level has its no_charge flag cleared. So 'no_charge' needs to be
explicitly set for partly eaten food in tended shops as a bones level
gets loaded.
Most of the shk.c diff is reformatting, but it does change the
get_pricing_units() routine to lie that the quantity is zero for
partly eaten food so that when multiplying with price it won't matter
whether the price has been forced to zero or been left non-zero.
PatR [Thu, 17 Oct 2019 22:50:33 +0000 (15:50 -0700)]
zap colors
One of the comments for pull request #234 mentions that the colors
for sleep and poison are backwards. Yellow dragons had green breath.
Green dragons would have had yellow breath if they used the normal
zap symbols, but they use the poison cloud one which is green so
they had green breath. I rarely have color enabled and had never
noticed. (At the moment I can't find where the switch from zap to
cloud is being done.)
Pull request #234 is based on #231, about control of the shield
effect animation when resisting. But it changes struct flags so
would break 3.6.x save file compatibility.
PatR [Thu, 17 Oct 2019 21:38:45 +0000 (14:38 -0700)]
github pull request #235 - curses symbol set init
Fixes #235
For initial options under curses, specifying 'DECgraphics' as a
boolean rather than as 'symset:DECgraphics' wasn't overriding the
new default 'symset:curses'. Since previously DECgraphics was
rejected for curses, it's possible that no one noticed.
PatR [Thu, 17 Oct 2019 12:07:03 +0000 (05:07 -0700)]
couple of curses symbol handling bits
Primary and rogue symbols were being set to default if primary hadn't
been given a value, possibly clobbering rogue symbols if those had
been given a value. Initialize them independenly.
Return early from curses_convert_glyph() if the value doesn't have
the 8th bit set since it now deals exclusively with DECgraphics
handling. Force a sane value for returning early on rogue level.
PatR [Thu, 17 Oct 2019 12:00:58 +0000 (05:00 -0700)]
symbol set reorganization
Change the way symbol sets are loaded to make them have the same order
as they appear in the symbols file rather than being reversed.
Revise dat/symbols so that the new ordering yields a result similar
to the old ordering, more or less. I've added a few set descriptions.
The only substantive change is marking DECgraphics as primary-only
(not available on rogue level) and adding new set DECgraphics_2 which
is commented out near the end.
Define symbol handling H_MAC since one of the sets specifies
'handling: MAC'. All H_MAC is used for now is to avoid showing
MACgraphics as a symset when compiled without MAC_GRAPHICS_ENV (which
was used for pre-OSX Mac by the old code in sys/mac/), so it will be
hidden for everyone.
I left handling H_CURS even though curses doesn't implement anything
for it. It could do something when rendering the map or assign a
function to 'cursesgraphics_mode_callback' for special init or both
but hasn't needed to. Since curses is now supporting DECgraphics,
define 'decgraphics_mode_callback' for it. No value is being
assigned so that doesn't do anything; curses seems to be setting up
the primary character set as text and secondary one as line-drawing
without the need for that hook.
With the added set descriptions, 'O's symset menu looked horrible for
curses due to the way curses decides to set the width of menus and
the resulting line wrapping which took place because of a too-narrow
menu. I've added a chunk of code to the options handling code which
shouldn't really be there but makes the menu much easier to read.
PatR [Mon, 14 Oct 2019 09:28:27 +0000 (02:28 -0700)]
fix use_inverse (aka wc_inverse) for curses
Highlighting for monsters shown due to extended monster detection and
for lava shown in black and white didn't work because that keys off
of 'iflags.use_inverse' (actually a macro for 'iflags.wc_inverse') and
curses wasn't enabling that window-capability option. To be fair, it
was probably unconditional at the time the curses interface was first
developed. It checked for whether a monster was supposed to be drawn
with inverse highlighting but wouldn't draw it that way because the
flag was always false. Inverse b&w lava is relatively new and curses
hadn't been taught about it.
Various other things such as pets (if hilite_pet is on) and object
piles (if hilite_pile is on) get highlighted with inverse video when
use_color is off, regardless of whether use_inverse is on or off.
That's probably a bug.
PatR [Mon, 14 Oct 2019 00:41:24 +0000 (17:41 -0700)]
pull request 229/#H9299 - DECgraphics for curses
Fixes #230
Incorporate github pull request #230, support for DECgraphics-style
line drawing in the curses interface. I've rewritten the
curses_convert_glyph() part so that it doesn't require C99 and
doesn't reinitialize its pair of arrays for every character written
to the map. The DECgraphics conversion is now a straight char for
char one, DEC line drawing code to ACS, without regard to what map
symbol is intended or what 'cursesgraphics' uses for that symbol.
Pasi Kallinen [Sun, 13 Oct 2019 17:40:54 +0000 (20:40 +0300)]
Fix launched object accessing a deleted trap
In launch_obj, the code first got the trap, then called ohitmon
(which can delete the trap by doing mondied -> fill_pit ->
flooreffects -> deltrap), then after that used the trap variable.
Pasi Kallinen [Sun, 13 Oct 2019 16:16:38 +0000 (19:16 +0300)]
Fix hero hiding under a statue shattered by land mine
Trigger a land mine while being polymorphed into a monster that
automatically hides (eg. scorpion). Have the statue on the land mine
shatter and all items on that square scatter away. Avoid falling
into the pit left by the land mine.
PatR [Sat, 12 Oct 2019 22:33:57 +0000 (15:33 -0700)]
fix part of #H9299 - DECgraphics symset comments
For the DECgraphics symbol set, down ladder is the greater-than-or-
equal-to character as intended and up ladder is less-than-or-equal-to,
but comments in dat/symbols had their descriptions transposed.
PatR [Sat, 12 Oct 2019 09:31:47 +0000 (02:31 -0700)]
fix #H9298 - corpse mismatch
Corpses for dying monsters were being created with the wrong type,
caused by incorrect block nesting for 'if (ptr)' from commit ad302fb8a99a5795c4d206870ea6573349b2d92a (Oct 10).
PatR [Sat, 12 Oct 2019 01:33:32 +0000 (18:33 -0700)]
South Park reference - gnomes' business plan
If you chat with a peaceful gnome while hallucinating, you might
get a silly message from the TV show South Park.
To make it work for non-gnome characters, I changed the speech of
monsters who normally just grunt (gnomes, orcs, ogres, a couple
of other groups) to full humanoid when the hero is hallucinating.
(It already does that for orcs if the hero--hallucinating or not--
is an orc and for gnomes when the hero is a gnome.)