Commit Graph
15974 Commits
Author SHA1 Message Date
nhmall bca8720c6e comment typo 2023-11-19 10:56:26 -05:00
nhmall c33c49295d remove pasted comment 2023-11-19 10:10:27 -05:00
nhmall 13f49bdd92 don't build in support for obsolete makedefs options
unless OLD_MAKEDEFS_OPTIONS is defined during the compile of makedefs.c
2023-11-19 10:05:01 -05:00
PatR d3e80bf9bf expand Plane of Fire to fill entire map
The other three elemental planes go all the way to the map edges.
Fire was 76x20 rather than full 79x21.  This adds new two columns on
the left (necessitating some coordinate adjustments) and one on the
right plus one new row on the bottom.  Not particularly interesting,
just padding.
2023-11-19 04:54:20 -08:00
PatR f23176155c tty: fix 'statuslines' off by 1 error
With CLIPPING disabled you should need a terminal or window with at
least 25 lines to change the 'statuslines' option from 2 to 3, but
it was being allowed on tty when there were only 24 lines available.

I think the other interfaces always have clipping capability enabled
so aren't affected.

Not many level maps extend to the bottom row (line 22 for a 1-based
count) so it wasn't likely to be noticed during play.  That points
that maps which don't use all rows and/or all columns could get by
without clipping by adjusting their position.  However, implementing
adaptive clipping is not something that I'm going to try to tackle.
2023-11-19 01:11:43 -08:00
PatR 3021423a5f github issue #1145 - ^C-induced panic on tty
Issue reported by entrez:  on tty, ^C while a menu was open followed
by 'yes' to "Really quit?" would lead to a bad window panic.

Brought on by screen erasure changes included with recent SIGWINCH
(window resize signal) changes.

Closes #1145
2023-11-18 17:45:43 -08:00
Alex Smith 86c29f5b47 Allow identifying stackable items by comparison to identical items
NetHack has historically had problems (both in terms of interface
and in terms of gameplay exploits) caused by unidentified items
not stacking with identified items.  The 3.7 change to cause items
picked up by monsters to become unidentified has exacerbated this,
e.g. there's an undesirable strategy in which players give
ammunition to hostile monsters in order to unidentify it, allowing
it to stack with other unidentified ammunition so that the whole
stack can be enchanted with a single scroll.

This commit makes it possible to stack items with different
identification statuses (unles Blind), in effect causing the
unidentified items to be identified by comparing them to the
identified items (this is consistent with the mechanic via which
two stacks of unidentified items can be determined to be the same
as each other).  The hope is that this will prevent any gain from
exploits involving intentionally unidentifying (or intentionally
failing to identify) items, that it will prevent interface clutter
caused by (e.g.) a Ranger's main projectiles becoming partially
unidentified as a nymph picks them up and subsequently failing to
stack, and that it will reduce the incentive to backtrack to an
altar to merge, e.g., a stack of formally-known-uncursed and a
stack of informally-known-uncursed food rations to stack.
2023-11-19 01:21:53 +00:00
nhmall 11ad859c4c nothing actually depends on options anymore 2023-11-18 19:21:54 -05:00
PatR ed102b3b81 comment typo 2023-11-18 11:57:30 -08:00
PatR 1fc56e4be8 new bugs - implement 'whatis' of engravings
'/ e' (or '/ `') lists nearby engravings (including headstones) that
  the hero has read or felt (even if currently covered up) or can see
  on the map;
'/ E' (or '/ |') lists all such on the level.

If the hero remembers an engraving and then monsters scuff it out of
existence, it will magically disappear from the list of remembered
engravings when deleted.  I don't think that's worth bothering with.

[During testing, my pet seemed extremely reluctant to step on a
corridor engraving.  That could have been coincidence but it seemed
to keep happening until I moved so close that it had no choice.  I
wasn't carrying tripe.]
2023-11-18 00:35:30 -08:00
PatR 389f03e90e farlook of engravings
Report headstone engraving when using farlook to examine a grave:
| a grave (grave whose headstone reads: "foo")
or
| a grave (grave whose headstone you haven't read)

Make the farlook of ordinary engravings operate more like farlook of
other things:
| a boulder or a statue or an engraving (engraving with text: "bar")
rather than
| a boulder or a statue or an engraving with text: "bar"
The "or a statue" phrase will now be suppressed because statues aren't
shown as backtick anymore, so the parenthesized form isn't quite as
long as it would otherwise have been.  If OPTIONS=boulder:symbol is in
use, the "a boulder" part will be gone too.
| an engraving (engraving with text: "bar")
or
| an engraving (engraving that you haven't read)

Make quicklook include engraving text.  It's quick because it doesn't
ask the player to pick additional spots or whether to look up relevant
data.base quote, not because it skimps on useful information.

Autodescribe still does not include engraving text.
2023-11-17 17:36:04 -08:00
nhmall a784a06cf6 remove a band from an earlier test 2023-11-17 14:22:40 -05:00
nhmall a92c1b7163 Merge branch 'NetHack-3.7' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.7 2023-11-17 14:21:42 -05:00
nhmall d7ed474fa7 2nd follow-up to alternative fix for menu search (':') 2023-11-17 14:13:58 -05:00
nhmall 4803022e90 Revert "follow-up for alternative fix for menu search (':')"
This reverts commit 569955ccac.
2023-11-17 13:54:41 -05:00
nhmall b3024c3c6c Revert "follow-up for alternative fix for menu search (':')"
This reverts commit 569955ccac.
2023-11-17 13:46:13 -05:00
nhmall 569955ccac follow-up for alternative fix for menu search (':') 2023-11-17 13:40:38 -05:00
nhmall 0a13d759a3 more bot() tinkering 2023-11-17 09:47:39 -05:00
nhmall a46c71f4c5 replace useful descriptive comment in tty getline 2023-11-17 09:04:27 -05:00
nhmall 7903849939 follow-up: program_state variables are int 2023-11-17 08:42:43 -05:00
nhmall 8d1001842d alternative fix for menu search (':')
This avoids clearing core context variables within a window port.
2023-11-17 08:37:54 -05:00
PatR a49c872f47 another 'm #overview' fix
Once in the endgame, suppress non-endgame levels from the 'm #overview'
annotation menu like is already done for normal #overview.
2023-11-17 00:43:06 -08:00
PatR 387cef9899 'm #overview' enhancement
When using the 'm' prefix with #overview to get a menu of visited
levels and then picking one to annotate, replace the generic prompt
"what do you want to call this dungeon level?" with more specific
location information.  Location details are visible while within the
menu but as soon as you choose something that goes away.
2023-11-17 00:36:43 -08:00
PatR 3accaf9c53 PR #1142 - show level annotation when restoring
Pull request from entrez:  when issuing the "welcome back" message
when restoring, print the current level's player-suppliedannotation
if there is one.  Doesn't show automatically generated annotations
like "Oralce of Delphi" or "a sink" or "stairs to the Gnomish Mines".

Closes #1142
2023-11-16 23:16:54 -08:00
Michael Meyer f5a22ff5f8 Print current level annotation when restoring
Sometimes I annotate a level with a note like "watch out, chameleon
below", which is useful to remind myself of some danger or thing to
remember when returning to the level -- but if saving and restoring on
the level itself there's no reminder of that annotation.  If you restore
on a level with an annotation, print it as part of the "welcome back"
message.
2023-11-16 23:15:04 -08:00
PatR 73fed3d5d8 tty: menu search (':') fix
'm O' is a prime candidate for using ':' to select a menu item since
you can use that to avoid scrolling through many pages, but typing ':'
would immediately overwrite two or three lines of the menu with a
status refresh.  curses doesn't suffer from this problem.  X11 and Qt
show menus in separate windows do don't either.  Not sure about WinGUI.

I think that this may have been reported in the past, but if so I don't
recall by whom, or why it wasn't addressed.
2023-11-16 23:11:54 -08:00
nhmall a82a897da3 avoid ctrl_nhwindow-related impossible
Remove the impossible(), so that new functionality can be added
incrementally without requiring every window-port to be visited up front.
2023-11-16 21:00:59 -05:00
nhmall ce587ac3b0 menu heading tweaking Take 2
Apparently, color option is meant to apply only to the map, so doesn't
need to appear here, and the reference on the previous commit was wrong.

    <curses guicolor>
    on: map, menu items, menu headings, menu prompt/title can all feature color, as can
    menu borders, menu-selector letters.
    off: map, menu headings, menu prompt and menu items (menucolors on) can still feature color,
    but all other non-map features such as menu borders, menu-selector
    letters will not have color.

    <menucolors>
    on: menu items can have colors if they match one of the regex in config
    file; menu headings, menu prompt can also be in color (based on menu_headings option).
    off: menu items won't have colors, but menu headings, menu prompt still
    will feature colors (based on menu_headings option); those are not impacted by turning
    off menucolors.
2023-11-16 17:57:22 -05:00
nhmall bb10f9a5d0 more menu header tweaking re options
<color>
off: map, menu items, menu headings, menu prompt/title all, everything should have color suppressed.

<curses guicolor>
on: map, menu items, menu headings, menu prompt/title can all feature color, as can
menu borders, menu-selector letters.
off: map, menu headings, menu prompt and menu items (menucolors on) can still feature color,
but all other non-map features such as menu borders, menu-selector
letters will not have color.

<menucolors>
on: menu items can have colors if they match one of the regex in config
file; menu headings, menu prompt can also be in color (based on menu_headings option).
off: menu items won't have colors, but menu headings, menu prompt still
will feature colors (based on menu_headings option); those are not impacted by turning
off menucolors.
2023-11-16 13:41:07 -05:00
nhmall 7beef848c4 fix a strange bug with option menu
It was impossible to select entry 62 in the allopt[] array
from the 'm O' menu, apparently because of a collision with
the ascii value of a question mark.

Entry 62 was currently the guicolor option.
2023-11-16 07:56:01 -05:00
nhmall d76176c41b pass menu_headings not test value for title 2023-11-16 06:01:07 -05:00
nhmall bc2c2f5138 follow-up to correct syntax error in Windows build 2023-11-16 00:12:41 -05:00
nhmall 86067dcffd use ctrl_nhwindow() for menu prompt style
This implements the mechanics to use the ctrl_nhwindow() interface
capability to pass down a setting change from the core to the active
window port, without resorting to accessing a core global variable
from within the window port, and without altering the interface..

The passed setting is honored in the tty and curses window ports.

X11 and mswin receive and store the values, but no implementation
to change the menu prompt style is there yet.

Qt does not store the values or have an implementation.

The setting change is done in allmain.c immediately after
creating the WIN_INVEN window.
2023-11-16 00:10:06 -05:00
nhmall 657d0f6105 fix an incorrect ESC sequence (cut and paste err) 2023-11-15 21:19:02 -05:00
nhmall a08b2e254a get rid of a warning during our pdcursesmod build
../lib/pdcursesmod/dos/../common/dosutil.c:36:15: warning: comparison of integer expressions of different signedness: 'long int' and 'long unsigned int' [-Wsign-compare]
   36 |     while( ms > MAX_NAP_SPAN)
      |               ^

It isn't something that we can actually resolve within NetHack,
so just suppress the submodule build warning.

This commit will trigger the CI to carry out a test of the build.
There could be some follow-up after the results.
2023-11-15 13:28:50 -05:00
nhmall c85900320c fetch dos extender from a different location
CI was having difficulty connecting
2023-11-15 12:33:07 -05:00
nhmall 97ddfd9355 curses menu_heading repairs 2023-11-15 11:11:55 -05:00
PatR fc52f0ef42 'menu_headings' option
If the value is "no color&none" report it as "no-color&none" in 'm O'
and for #saveoptions.

Allow "OPTIONS=menu_headings" without any color or attribute value to
mean "no-color&inverse" as it once did before the player could choose
which attribute or color was supported, and matching the default used
when 'menu_headings' hasn't been specified at all.

Accept "OPTIONS=!menu_headings", meaning "no-color&none".

Explicitly reject "OPTIONS=!menu_headings:anything".  It was rejecting
that due to blanket rejection of negated option, but reporting "can't
both have a value and be negated" whether there was any value present
or not.

For preselected menu entries when interactively choosing a new value
via the submenu of 'm O', use the current color and attribute rather
than NO_COLOR and ATR_NONE.
2023-11-14 21:33:09 -08:00
Pasi Kallinen 830168f26e Update comment 2023-11-15 07:26:21 +02:00
PatR d748dbaa12 more menu headings
Simplify suppression of highlighting for menu header lines during end
of game disclosure.  Didn't actually affect as many things as I was
expecting.

Plus a bit left out of the optfn_dogname() parsing commit.
2023-11-14 17:51:27 -08:00
PatR b8063ee07c option parsing
Get rid of all the unnecessary 'if (!opts)' checks if the optfn_xx()
routines.

Replace the replicated contents of optfn_catname(), optfn_dogname(),
and optfn_horsename() with a common routine.  optfn_dogname() was
different from the other two for no discernable reason.  Player can
no longer assign the name "none" to an initial pet via RC file,
although there's nothing preventing doing so with C/#name command.
2023-11-14 12:59:30 -08:00
PatR c36d614c3a pull request #1132 - unnecessary options test
Pull request from argrath:  optfn_pickup_types checks 'opts' for
whether it is Null after having already used it without checking.
Remove the unnecessary test.

Closes #1132
2023-11-14 11:43:43 -08:00
SHIRAKATA Kentaro 51042bb0df remove unnecessary condition on optfn_pickup_types()
`opts` here is always non-null, otherwise it leads segv at earlier code.
2023-11-14 11:40:34 -08:00
PatR 88e2ee192d perminv_mode: fix menu coloring
The submenu of 'm O' for recently added option 'perminv_mode' didn't
have color 0 changed to NO_COLOR.  On tty the entries came out blue,
on X11 they were nearly invisible.  Qt and curses didn't seem to care.

I checked all the add_menu() calls in src/*.c and managed to refrain
from the impulse to reformat, mostly.
2023-11-13 23:32:38 -08:00
nhmall d064ac2cda more cast style consistency 2023-11-13 20:31:02 -05:00
nhmall ee732d4054 leading tab to spaces 2023-11-13 19:40:49 -05:00
nhmall a7242760f7 consistent cast syntax 2023-11-13 19:28:19 -05:00
nhmall b4bb3b92a2 replace E with extern in the last file like that 2023-11-13 15:00:44 -05:00
nhmall 6e91482be0 hands_obj follow-up 2023-11-13 14:20:54 -05:00
nhmall 5b2ec5d6ee minor optomization - explicity avoid menucolors 2023-11-13 14:00:02 -05:00