Commit Graph

11298 Commits

Author SHA1 Message Date
PatR
dde70b8d4a Guidebook bit: ascii_map and tiled_map
|ascii_map:
|If NetHack can, it should display an ascii character map if it can.
|tiled_map:
|If NetHack can, it should display a tiled map if it can.

Remove the "if {NetHack,it} can" redundancy and expand a little bit.

Also, alphabetize "tiled_map" as if the underscore were a space
instead of something that happens to collate after letters.

As usual, the Guidebook.tex changes are untested.
2020-11-25 09:15:20 -08:00
nhw_cron
bc7947ed22 This is cron-daily v1-Jan-20-2020. files updated: Files 2020-11-25 11:10:05 -05:00
nhmall
cb5bda40e2 update an old msdos file 2020-11-25 07:53:24 -05:00
nhmall
d5d75a9e38 move an outdated file: sys/unix/README.linux 2020-11-25 07:27:25 -05:00
nhmall
9ea45d7a1f remove some trailing whitespace 2020-11-25 07:23:23 -05:00
PatR
7e87abb66f wizard mode buglet: simultaneous Lev+Fly timeout
Noticed while working on Qt status highlighting:  if levitation
and flying timed out at the same time, first Lev timeout called
float_down() which reported
 You have stopped levitating and are now flying.
and then Fly timeout left stale "Fly" on the status line due to
an optimization which got subverted.  ('was_flying' flag was
False due to Fly being blocked by Lev; that's correct behavior,
but the flag is effectively a cached value that becomes stale
when the Lev timeout code executes.)

The bug was wizard mode only because #wizintrinsic is the only
way to get timed flying.
2020-11-24 10:43:12 -08:00
PatR
018d838eb9 today's Qt status update: non-standard conditions
Qt's status highlighting was treating any change to hunger or
to encumbrance as "worse" (shown in red).  That's wrong if you
go from weak to just hungry or from stressed to encumbered.

Comparing satiated with other hunger states is tricky.  I've
ranked it between hungry and weak but that's fairly arbitrary.

Also, change the highlighting when Lev, Fly, and Ride are new
conditions from red to blue.
2020-11-24 09:45:55 -08:00
Pasi Kallinen
229930e505 Fixes and sanity checks for monster undetected and trapped states
Adds sanity checks for mtrapped and mundetected states.

Fixes cases where those were left in wrong state.

1. Trapped monster (eg. a nymph) teleported out of a trap
2. Monster was hiding under ball or chain, which then got removed
3. While restoring a level, a zombie corpse revived while monster
   was hiding under it
4. A general case where the only object was deleted off floor and
   a monster was hiding under it

Monsters hiding under ball or chain will now get revealed when
the b or c are moved.
2020-11-24 19:37:43 +02:00
PatR
43379bffcc Qt status: highlights when toggling 'showexp'
During status update at the time the 'showexp' option gets toggled
on or off, prevent comparing Xp (level) against Exp (points) when
deciding whether the value has gone up or down.  Xp/Exp (when
toggling on) or just Xp (when toggling off) will be highligthed in
blue (changed, neither better nor worse) rather than green or red.
2020-11-23 17:45:44 -08:00
PatR
0c56c06316 Qt font selection dropdown menu
In "Qt settings" (or "Preferences" for OSX), the current font size
would show "Medium" if that was the current setting.  So far, so
good.  However, if you clicked on the up/down arrows to get the
dropdown menu, it was truncated to "Mediu" there regardless of
current setting.  Force the menu to be wide enough to show "Medium".
2020-11-23 17:39:00 -08:00
PatR
479bb87766 Qt status again: unhighlight disabled fields
If 'showscore' has been On and gets toggled Off while Score is
highlighted, remove that highlight immediately instead of letting
it stick around a few turns until it times out.
2020-11-23 01:29:53 -08:00
nhmall
c2e20ff263 Makefile autodetects Visual Studio 16.8.2 2020-11-22 12:49:55 -05:00
PatR
3339d0247f Qt paperdoll bit
For the tool tips shown if you let the mouse pointer hover over
any of the cells in the paperdoll (inventory subset showing
worn and wielded items), remove the trailing period and add a
leading space and a trailing space.  Improves readability.
2020-11-22 02:36:10 -08:00
PatR
6d4fd933b2 Qt status bit
When Qt highlights a field that has gotten better, use the same
shade of green as is used for the green range of hitpoint bar.
The old value was too dull, like olive green seen in shadow.
2020-11-22 01:10:52 -08:00
PatR
f43421ae3c create monster creating concealed mimic revisisted
commit 03d7d64d15:
| [...] but fixing this specific case is trivial.

Not trivial enough to avoid getting the details wrong.  An old
commit log message (58137a608a,
June of 2006) claimed that this was fixed for bag of tricks but
that was for monsters in general; mimics could still be wrong.
2020-11-22 00:32:11 -08:00
PatR
efea46a93d tty: selecting gold in menus
Requested by a beta tester nearly four years ago: '$' is both an
inventory "letter" and a group accelator.  The letter only works
if gold is on the current menu page and was taking precedence
over the group accelator.  Allow '$' to toggle selection of gold
regardless of the page.

curses already behaves this way.  X11 and Qt menus aren't
paginated so also pick gold even if the '$' entry in the menu
isn't visible at the time.  No idea about Windows GUI...
2020-11-21 18:21:16 -08:00
PatR
3e9d8f9aa5 'showscore' vs containers
When SCORE_ON_BOTL is enabled, you could tell how much gold is
inside a container with unknown contents by having 'showsore' On
and watching how much the score changed on the status line when
picking the container up.
2020-11-21 17:37:01 -08:00
PatR
d48e730700 ki-rin body parts
Use horse/unicorn body parts.  The result for HAIR is "mane"
which is appropriate.  There's no field for SKIN so the question
of whether to specify "scales" is moot.  (Snakes and dragons
describe HAIR as "scales" but that wouldn't be right for ki-rin.)
2020-11-21 03:46:53 -08:00
PatR
03d7d64d15 create monster creating concealed mimic
From an old bug report (sent directly to devteam, June of 2017):
wand or scroll of create monster becomes discovered if it makes
a mimic that is concealed as an object or as furniture within
the hero's view.  Fixing this in the general case [when does
seeing a mimic as something other than a monster mean that the
mimic is being seen?] is a massive can of worms, but fixing this
specific case is trivial.
2020-11-20 18:56:35 -08:00
PatR
f7a3e7884c daily Qt status window update...
Highlight changes to dungeon location or alignment in blue instead
of green or red since neither the old value nor the new can be
classified as better than the other.  Likewise when changing
between regular Hp and Xp (or Xp/Exp) to or from you-as-mon Hp and
HD when polymorph or rehumanization takes place.

When toggling Score On, start out highlighted in blue instead of
green.  When toggling it Off, don't highlight the blank space
where it had been in red.  At the moment there's a quirk here;
if it is highlighted in green (from recent change) or blue (from
having just been toggled on) at the time it gets toggled off, the
space stays green or blue until that highlight times out.  (It has
occurred to me that the bogus red highlight might have been added
to deliberately overwrite stale green highlights.  If so, a better
fix should be achievable.)

For the title (plname and rank or plname and monster-species),
capitalize the player name since core's botl() and at least some
other interfaces do that.

TODO:  toggling Exp needs work.  The field used for deciding
up/down changes gets swapped and the update in progress compares
apples and oranges.  [This wasn't an issue in the original Qt
implementation where Xp and Exp were two separate fields.]
2020-11-19 04:48:15 -08:00
PatR
7b50590654 rename #wizlevelflip to #wizfliplevel
Since ^V is dead key for me with Qt on OSX, I use #wizlevelport
instead.  It's annoying to have to type all the way up to the
'p' for it to become distinct.  Rename the biggest conflict,
\#wizlevelflip to #wizfliplevel.  I still have to type as far
as the first 'e' for #wizlevelport but 6 characters are easier
to type than 10.

It wasn't in the Guidebook so I've left things that way.  I am
adding it to 'wizhelp' though.
2020-11-19 01:57:13 -08:00
PatR
27b93148c0 ki-rin's horn
Let ki-rin cure themselves (of being stunned, confused, or blinded)
with their own horn, and make them be poison resistant.  They
aren't unicorns but their horn is very much like a unicorn horn.
They're flagged no-corpse so this hasn't changed them to leave
behind a horn upon death.

They were flagged as animals who neighed but they are also spell
casters.  I took the animal flag off (they're still no-hands so
shouldn't be able to use items; also, unicorns aren't flagged as
animals either) and changed sound to 'ms_spell'.
2020-11-18 11:16:21 -08:00
PatR
db90e7907c Qt: yet more status...
Fix the minor problem of the status lines moving up or down a
tiny amount when using the condensed (statuslines:2) layout and
the condition line changed from empty to non-empty or vice versa.
The widget used as filler when no conditions are shown needed to
have non-empty label text (single space suffices) and also has
to have its font set to the same value as the rest of status.
(I previously tried a label of " " and also "_" but had left the
font with its default value.)

The adjustments to the prefix string when the value of Xp/Exp
("Level" -> "Lvl" -> "L") or Score ("Score" -> "Scr" -> "S") was
too wide needed some fixing up.  If shrinkage was needed, it was
setting the value multiple times and any extra times confused
field highlighting because it seemed to be assigning same value
rather than a changed one.

For condensed layout that moves Alignment to the Characteristics
line, add a vertical separator line between Charisma and Alignment.
2020-11-18 08:56:20 -08:00
nhw_cron
55d2e359f5 This is cron-daily v1-Jan-20-2020. files updated: Files 2020-11-18 08:26:44 -05:00
nhmall
9aeb4db3b2 wasm-bug-fixes-2 github PR #412 2020-11-18 08:21:07 -05:00
nhmall
75c66d2881 Merge branch 'wasm-bug-fixes-2' of https://github.com/apowers313/NetHack into wasm-bug-fixes-2 2020-11-18 08:18:16 -05:00
Adam Powers
37361001f4 pre-fix @PatR 'SHELLERS on VMS' change 2020-11-17 23:58:12 -08:00
Adam Powers
c021293983 remove unnecesssary JavaScript code 2020-11-17 21:10:27 -08:00
Adam Powers
8c06dccd92 allow repeated running 2020-11-17 21:06:58 -08:00
PatR
87a6616998 more Qt status
The slightly condensed (statuslines:2) status layout puts additional
width pressure on "Level:NN/nnnnnnnn" and "Score:nnnnnnnn" so add
some code to conditionally shorten the field prefix if the value of
the field is wider than the widget it's displayed in.
2020-11-17 18:55:16 -08:00
Pasi Kallinen
e100d1a137 More unpolyable unifying
... and fix the potion dipping case.
2020-11-17 18:00:43 +02:00
nhmall
03d1eed0b5 daily cron doc/Guidebook.txt update 2020-11-17 09:14:47 -05:00
PatR
cb8baa1d1c Qt status overhaul: add support for 'statuslines'
Condense the Qt status slightly, moving Alignment field from the
Conditons line to the Characteristics line and the Time and Score
fields from their own possibly blank line to the HP,&c,Gold line.

That's for statuslines:2, which is the default.  statuslines:3
restores the previous layout.  I tried to make that become the
default for Qt but it got messy fast and I gave up.

I also tried to make changing 'statuslines' back and forth on the
fly work but failed.  I left the code in as #if DYNAMIC_STATUSLINES
but that isn't defined anywhere.  For the time being at least,
'statuslines' is config file or NETHACKOPTIONS only for Qt, not
changeable via 'O' like for curses and tty.

Change the option description for 'statuslines'.  That depended
upon whether curses was compiled in when it should depend on which
interface is active.  This moves the alternate info to Guidebook.
2020-11-17 05:07:09 -08:00
PatR
98075ebfe8 auto-cursing helmet vs perm_invent
I though that I noticed a problem but later couldn't reproduce
it, so this might not be redundant.  Update persistent inventory
when putting on a helmet causes it to become cursed.

Minor change:  if blind at the time, hero loses knowledge of BUC
state.
2020-11-16 18:08:02 -08:00
Pasi Kallinen
d81e1672aa Unify unpolyable objects to single define 2020-11-16 18:42:12 +02:00
PatR
7395d1eda1 Qt status display
Move gold from in front of HP to the end of the line they're on,
and change its label from "Au:" to "Gold:".  That makes both HP
and gold easier to see, by having HP first and by having gold
be shown after a blank column (where 'Exp' was once displayed
separately from 'Xp').

Get rid of the obsolete 'exp' widget, replacing it with 'blank1'.
Used to force 6 columns for HP, Energy, AC, Xp+Exp, blank, Gold
so that the row lines up with the six characteristics above it.

Handle Blind the same way as all the other On/Off conditions
instead of setting its label dynamically every time status gets
updated.  The Qt3 code in outdated/ used to do things that way
and there doesn't seem to be any reason to have changed it.
Maybe someone (Ray?) had planned to show "Blindfolded" instead
of "Blind" when that's the only reason for being blind.

Reorder the widget declarations and initializations to match
their display order, and add a lot of comments.
2020-11-16 03:06:39 -08:00
PatR
5c291bc540 honor sysconf SHELLERS on VMS
I was looking into adding a confirmation prompt for '!' and it
isn't very promising due to sequencing issues.  (The check for
whether '!' is allowed should happen before the prompt about
running it but the latter should take place in the core rather
than in the port code.)  In the mean time, I noticed that VMS was
ignoring the SHELLERS value from SYSCF.

Untested implementation of a SHELLERS check on VMS.  Even if it
works, it should not be using $USER as the user name to verify.

Tweaks the Unix implementation of check_user_string() but doesn't
switch the testing loop to the simpler version used by VMS which
is derived from the generic users test used by Qt.
2020-11-15 18:28:20 -08:00
PatR
126d1f6bb6 Qt character selection buglet
Testing for generic character name wasn't robust enough.  Looking
for whether "game" is a generic name would work when compared
with the list "game games" but falsely report 'no' for the list
"games game".  The first matching substring isn't followed by a
space and the routine wasn't checking for other matches in the
rest of the list.  Check again with a subset list starting after
the next space beyond the false hit; repeat as needed.
2020-11-15 18:19:53 -08:00
Pasi Kallinen
ccb5bc4b55 Avoid hard-coded bit twiddling 2020-11-15 19:56:35 +02:00
Pasi Kallinen
d6384f4061 Use enums instead of magic values 2020-11-15 19:32:21 +02:00
PatR
560d324a2f Qt screen layout
Simplify a recent change to the screen layout.  Qt can calculate
the details and the recent code resulted in a slight amount of
blank space between the paperdoll and its resize hotspot.

Fix an off-by-one bug in the paperdoll resize routine.  (The one
pixel margin at the top was being overlooked.)
2020-11-15 08:59:08 -08:00
PatR
0f6b3fb6eb Qt hitpointbar tweak
When the hitpointbar is showing thick blue + thin dark blue (75%
or better health but less than 100%) and partial healing occurs,
the dark blue portion was momentarily visible pushed off the
right edge of the bar, resulting in slight flicker as the right
half of the bar got redrawn.  I haven't noticed anything similar
for the paler injured-side colors, nor any temporary gap between
the two sides when losing health.

Also, remove a workaround that was needed at one point but isn't
needed anymore.  (I don't remember the circumstances.)
2020-11-15 08:34:19 -08:00
nhmall
f965d187b8 support for build with current Lua version 5.4.1
This may require
	make spotless
	make fetch-lua
for some platforms.
2020-11-15 11:08:10 -05:00
Patric Mueller
56494d3479 Fix an implicit-fallthrough and maybe-uninitialized warning 2020-11-15 16:07:43 +01:00
Pasi Kallinen
0dc44ad210 Update comment about xchar 2020-11-15 14:25:45 +02:00
Pasi Kallinen
deb730d9b5 More hypothetical type mismatches 2020-11-15 13:51:47 +02:00
Pasi Kallinen
7cfc5a7142 Fix buffer underrun in curses 2020-11-15 13:22:45 +02:00
Pasi Kallinen
289c8d654d Futureproofing hypothetical type mismatches
If we ever want huge maps with COLNO or ROWNO larger than signed char,
this will at least allow the game to compile and start when typedef'ing
xchar to int. Trying to use huge maps exposes more bugs.
2020-11-14 13:53:09 +02:00
PatR
08310c8a71 Qt status
Try to set the initial window sizes to be big enough to show the
full welcome line in the message window when the Qt settings
(Preferences on OSX) specify Large font (Huge/Medium/Small/Tiny
seemed ok but I wasn't systematic about checking them).

While at it, I added a long comment about the status window format
and noticed a bug with experience formatting there.  Again only
seemed to matter for Large font but the change to fix ignores font
size.

Plus add a couple of Qt "issues", one old and one just discovered.
2020-11-13 17:15:04 -08:00
PatR
e647eab6dc fix github issue #410 - mon throwing c'trice egg
If a monster threw a cocktrice egg that hit and petrified another
monster, the hero would credit (experience) and blame (possible
alignment penalty, &c) for it.

Fixes #410
2020-11-13 16:52:45 -08:00