From 38d027d1f962feeccd8776880a2d3da5f68c1545 Mon Sep 17 00:00:00 2001 From: Michael Meyer Date: Wed, 11 Aug 2021 09:08:17 -0400 Subject: [PATCH 1/4] Fix: travel from 'interesting' position (including resuming travel after being interrupted) Attempting to travel from an 'interesting' spot that would normally stop travel mid-attempt (next to a door, next to a monster, etc) would fail to get off the ground, because the 'interesting thing' would halt travel before taking the first step. Prior to 433f0cc, initiating travel would immediately trigger a call to domove in rhack; as part of refactoring travel, the order of events in rhack was changed so that this didn't happen immediately as before. Add domove to the end of dotravel_target to produce a similar effect to the previous arrangement. domove also zeroes out g.domove_attempting, which I think is the reason c0c617c seemed to mitigate some of the issues associated with this problem (e.g. travel target selection seemingly not registering right away). Fixes #559 --- src/cmd.c | 1 + src/hack.c | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cmd.c b/src/cmd.c index bc872135d..54443d0e0 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -4734,6 +4734,7 @@ dotravel_target(void) u.last_str_turn = 0; g.context.mv = TRUE; + domove(); return 1; } diff --git a/src/hack.c b/src/hack.c index a6a6e2997..0854f041b 100644 --- a/src/hack.c +++ b/src/hack.c @@ -3007,7 +3007,6 @@ end_running(boolean and_travel) if (flags.time && g.context.run) iflags.time_botl = TRUE; g.context.run = 0; - g.domove_attempting = 0; /* 'context.mv' isn't travel but callers who want to end travel all clear it too */ if (and_travel) From 5b0c2033f7a7639804327bbd38618b974caab12c Mon Sep 17 00:00:00 2001 From: copperwater Date: Tue, 7 Sep 2021 15:00:45 -0400 Subject: [PATCH 2/4] Fix: running on ice sent hero in weird directions This is because ice was being treated as a type of corridor rather than a ROOM space, and running has rules for following similar terrain. In reality it's not a corridor and should behave like normal room for running purposes. This was obvious in the valkyrie quest upper levels with ice fields, in which running into the edges of the map obliquely, or into the corners of the map, would send the hero flying around the edge in a different, probably unintended direction. --- src/hack.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hack.c b/src/hack.c index dbb353036..bdbb03ce8 100644 --- a/src/hack.c +++ b/src/hack.c @@ -2831,7 +2831,7 @@ lookaround(void) /* more uninteresting terrain */ if (IS_ROCK(levl[x][y].typ) || levl[x][y].typ == ROOM - || IS_AIR(levl[x][y].typ)) { + || IS_AIR(levl[x][y].typ) || levl[x][y].typ == ICE) { continue; } else if (closed_door(x, y) || (mtmp && is_door_mappear(mtmp))) { /* a closed door? */ From 83c626b7074c40413a96916513f938ce4b810b68 Mon Sep 17 00:00:00 2001 From: SHIRAKATA Kentaro Date: Thu, 23 Sep 2021 03:30:57 +0900 Subject: [PATCH 3/4] delete extra lines --- doc/Guidebook.mn | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/Guidebook.mn b/doc/Guidebook.mn index 587c35a66..fd694a629 100644 --- a/doc/Guidebook.mn +++ b/doc/Guidebook.mn @@ -2271,8 +2271,6 @@ Objects .pg When you find something in the dungeon, it is common to want to pick it up. In NetHack, this is accomplished by using the \(oq,\(cq command. -automatically by walking over -the object (unless you turn off the If .op autopickup option is on, you will automatically pick up the object From 96679152efc496651af49d4f4d1ffb63c19a8c77 Mon Sep 17 00:00:00 2001 From: SHIRAKATA Kentaro Date: Thu, 23 Sep 2021 14:29:33 +0900 Subject: [PATCH 4/4] Supply missing changes Some changes applied to Guidebook.mn were not applied to Guidebook.tex. This commit supplies them. --- doc/Guidebook.tex | 98 +++++++++++++++++++++++++++++++---------------- 1 file changed, 65 insertions(+), 33 deletions(-) diff --git a/doc/Guidebook.tex b/doc/Guidebook.tex index 2df0b11f4..d2371555e 100644 --- a/doc/Guidebook.tex +++ b/doc/Guidebook.tex @@ -388,7 +388,7 @@ particular, it can affect the prices shopkeepers offer you. \item[\bb{Alignment}] % {\it Lawful}, {\it Neutral\/} or {\it Chaotic}. Often, Lawful is -taken as good and Chaotic is evil, but legal and ethical do not always +taken as good and Chaotic as evil, but legal and ethical do not always coincide. Your alignment influences how other monsters react toward you. Monsters of a like alignment are more likely to be non-aggressive, while those of an opposing alignment are more likely @@ -654,11 +654,11 @@ or type a symbol (or even a whole word) to explain. Specifying a location is done by moving the cursor to a particular spot on the map and then pressing one of `{\tt .}', `{\tt ,}', `{\tt ;}', or `{\tt :}'. `{\tt .}' will explain the symbol at the chosen location, -information, then let you pick another location; conditionally check for ``{\tt More info?}'' depending upon whether the `{\it help\/}' option is on, and then you will be asked to pick another location; `{\tt ,}' will explain the symbol but skip any additional +information, then let you pick another location; `{\tt ;}' will skip additional info and also not bother asking you to choose another location to examine; `{\tt :}' will show additional info, if any, without asking for confirmation. When picking a location, @@ -802,7 +802,7 @@ Redo the previous command. Close a door. %.lp \item[\tb{C}] -Call (name) a monster, an individual object, or an object type.\\ +Call (name) a monster, an individual object, or a type of object.\\ %.lp "" Same as extended command ``{\tt \#name}''. %.lp @@ -837,6 +837,22 @@ the bless\-ed/\-un\-curs\-ed/\-curs\-ed groups may be typed.\\ {\tt D\%u} --- drop only unpaid food. %.ei %.ed +The last example shows a combination. +There are three categories of object filtering: class (`{\tt !}' for +potions, `{\tt ?}' for scrolls, and so on), shop status (`{\tt u}' for +unpaid, in other words, owned by the shop), and bless/curse state +(`{\tt B}', `{\tt U}', `{\tt C}', and `{\tt X}' as shown above). +If you specify more than one value in a category (such as ``{\tt !?}'' for +potions and scrolls or ``{\tt BU}'' for blessed and uncursed), an inventory +object will meet the criteria if it matches any of the specified +values (so ``{\tt !?}'' means `{\tt !}' or `{\tt ?}'). +If you specify more than one category, an inventory object must meet +each of the category criteria (so ``{\tt \%u}'' means class `{\tt \%}' and +unpaid `{\tt u}'). +Lastly, you may specify multiple values within multiple categories: +``{\tt !?BU}'' will select all potions and scrolls which are known to be +blessed or uncursed. +(In versions prior to 3.6, filter combinations behaved differently.) %.lp \item[\tb{\^{}D}] Kick something (usually a door). @@ -927,7 +943,7 @@ game rather than with the `{\tt O}' command; see the section on options below. \item[\tb{\^{}O}] Show overview.\\ %.lp "" -Shortcut for the ``{\tt \#overview}'': +Shortcut for ``{\tt \#overview}'': list interesting dungeon levels visited.\\ %.lp "" (Prior to 3.6.0, `{\tt \^{}O}' was a debug mode command which listed @@ -938,7 +954,7 @@ Use ``{\tt \#wizwhere}'' to run that command.) Pay your shopping bill. %.lp \item[\tb{P}] -Put on an accessory (ring, amulet, blindfold).\\ +Put on an accessory (ring, amulet, or blindfold).\\ %.lp "" This command may also be used to wear armor. The prompt for which inventory item to use will only list accessories, but choosing @@ -1106,7 +1122,7 @@ Zap a wand.\\ Zap (cast) a spell.\\ %.sd %.si -{\tt Z.} --- to aim at yourself, use `{\tt .}' for the direction. +{\tt Z.} --- to cast at yourself, use `{\tt .}' for the direction. %.ei %.ed %.lp @@ -1121,7 +1137,7 @@ Look at what is here. Show what type of thing a visible symbol corresponds to. %.lp \item[\tb{,}] -Pick up some things.\\ +Pick up some things from the floor beneath you.\\ %.lp "" May be preceded by `{\tt m}' to force a selection menu. %.lp @@ -1410,10 +1426,10 @@ Look at what is here, under you. Default key is `{\tt :}'. \item[\tb{\#loot}] Loot a box or bag on the floor beneath you, or the saddle from a steed standing next to you. Autocompletes. -Default key is `{\tt M-l}', -and also `{\tt l}' if {\it number\verb+_+pad\/} is on. Precede with the `{\tt m}' prefix to skip containers at your location and go directly to removing a saddle. +Default key is `{\tt M-l}', +and also `{\tt l}' if {\it number\verb+_+pad\/} is on. %.lp \item[\tb{\#monster}] Use a monster's special ability (when polymorphed into monster form). @@ -1447,8 +1463,8 @@ leading to another dungeon branch) trigger an automatic annotation. If dungeon overview is chosen during end-of-game disclosure, every visited level will be included regardless of annotations. Autocompletes. Default keys are `{\tt \^{}O}', and `{\tt M-O}'. -%.lp % DON'T PANIC! +%.lp \item[\tb{\#panic}] Test the panic routine. Terminates the current game. @@ -3476,6 +3492,12 @@ The one for experience level 1 is not recorded as an achievement. Losing enough levels to revert to lower rank(s) does not discard the corresponding achievement(s). +%.pg +There's no guaranteed {\it Novel} so the achievement to read one might +not always be attainable (except perhaps by wishing). +Similarly, the {\it Big Room} level is not always present. +Unlike with the Novel, there's no way to wish for this opportunity. + %.pg The ``special items'' hidden in {\it Mines'~End\/} and {\it Sokoban\/} are not unique but are considered to be prizes or rewards @@ -3895,8 +3917,8 @@ Name your starting cat (for example, ``{\tt catname:Morris}''). Cannot be set with the `{\tt O}' command. %.lp character \item[\ib{character}] -Pick your type of character (for example, ``{\tt character:Monk}''); -synonym for ``{\it role\/}''. See {\it role\/} for more details. +Synonym for ``{\tt role}'' to pick the type of your character +(for example ``{\tt character:Monk}''). See {\it role\/} for more details. %.lp \item[\ib{checkpoint}] Save game state after each level change, for possible recovery after @@ -3914,9 +3936,9 @@ players if it detects some anticipated mistakes (default on). Have user confirm attacks on pets, shopkeepers, and other peaceable creatures (default on). Persistent. %.lp -%.lp \item[\ib{dark\verb+_+room}] Show out-of-sight areas of lit rooms (default on). Persistent. +%.lp \item[\ib{disclose}] Controls what information the program reveals when the game ends. Value is a space separated list of prompting/category pairs @@ -3931,7 +3953,7 @@ The possibilities are: {\tt a} --- disclose your attributes;\\ {\tt v} --- summarize monsters that have been vanquished;\\ {\tt g} --- list monster species that have been genocided;\\ -{\tt c} --- display your conduct;\\ +{\tt c} --- display your conduct; also achievements, if any;\\ {\tt o} --- display dungeon overview. %.ei %.ed @@ -3962,7 +3984,11 @@ The `{\tt +}' disclose without prompting choice, or being prompted and answering `{\tt y}' rather than `{\tt a}', will default to showing monsters in the traditional order, from high level to low level.\\ -.lp "" +%.lp "" +Omitted categories are implicitly added with `{\tt n}' prefix. +Specified categories with omitted prefix implicitly use `{\tt +}' prefix. +Order of the disclosure categories does not matter, program display for +end-of-game disclosure follows a set sequence. %.lp "" (for example, ``{\tt disclose:yi na +v -g o}'') @@ -4067,14 +4093,14 @@ In text windowing, text highlighting or inverse video is often used; with tiles, generally displays a small plus-symbol beside the object on the top of the pile. %.lp -\item[\ib{horsename}] -Name your starting horse (for example, ``{\tt horsename:Trigger}''). -Cannot be set with the `{\tt O}' command. -%.lp \item[\ib{hitpointbar}] Show a hit point bar graph behind your name and title. Only available for TTY and Windows GUI, and only when statushilites is on. %.lp +\item[\ib{horsename}] +Name your starting horse (for example, ``{\tt horsename:Trigger}''). +Cannot be set with the `{\tt O}' command. +%.lp \item[\ib{ignintr}] Ignore interrupt signals, including breaks (default off). Persistent. %.lp @@ -4184,7 +4210,7 @@ Key to go to the previous menu page. Implemented by the Amiga, Gem and tty ports. Default `\verb+<+'. \item[\ib{menu\verb+_+search}] -Key to search for a menu item. +Key to search for some text and toggle selection state of matching menu items. Default `:'. \item[\ib{menu\verb+_+select\verb+_+all}] Key to select all items in a menu. @@ -4225,8 +4251,8 @@ Valid settings are: %.sd %.si {\tt 0} --- disabled\\ -{\tt 1} --- enabled and make OS adjustment to support mouse use\\ -{\tt 2} --- enabled like {\tt 1}, but does not make any OS adjustments\\ +{\tt 1} --- enabled and make OS adjustments to support mouse use\\ +{\tt 2} --- like {\tt 1}, but does not make any OS adjustments\\ %.ei %.ed @@ -4365,7 +4391,7 @@ turn on all of the above. By default, the pray choice is enabled, the others disabled. To disable it without setting any of the other choices, use ``{\it paranoid\verb+_+confirmation:none}''. To keep -it enabled while setting others, include it in the list, +it enabled while setting any of the others, include it in the list, such as ``{\it par\-a\-noid\verb+_+con\-fir\-ma\-tion:attack~pray~Remove}''. %.lp \item[\ib{perm\verb+_+invent}] @@ -4499,7 +4525,7 @@ Persistent. Pick your type of character (for example, ``{\tt role:Samurai}''); synonym for ``{\it character\/}''. See ``{\it name\/}'' for an alternate method of specifying your role. Normally only the first letter of the -value is examined; `r' is an exception with ``{\tt Rogue}'', {\tt Ranger}'', +value is examined; `r' is an exception with ``{\tt Rogue}'', ``{\tt Ranger}'', and ``{\tt random}'' values. If you prefix the value with `{\tt !}' or ``{\tt no}'', you will exclude that role from being picked randomly. @@ -4542,7 +4568,7 @@ Prevent you from (knowingly) attacking your pets (default on). Persistent. \item[\ib{safe\verb+_+wait}] Prevents you from waiting or searching when next to a hostile monster (default on). Persistent. -%+.lp +%.lp \item[\ib{sanity\verb+_+check}] Evaluate monsters, objects, and map prior to each turn (default off). Debug mode only. @@ -4801,7 +4827,7 @@ If {\it NetHack\/} can, it should display color for different monsters, objects, and dungeon features (default on). %.lp \item[\ib{eight\verb+_+bit\verb+_+tty}] -Pass eight-bit character values (for example, specified with the +If {\it NetHack\/} can, it should pass eight-bit character values (for example, specified with the {\it traps \/} option) straight through to your terminal (default off). %.lp \item[\ib{font\verb+_+map}] @@ -5543,7 +5569,7 @@ Each SOUND entry is broken down into the following parts: \elist %.lp "" -The pattern should be a regular expression. +The pattern should be a POSIX extended regular expression. %.lp %.hn 2 @@ -6114,15 +6140,17 @@ A string explaining how to get local support (no default value). A string explaining how to recover a game on this system (no default value). %.lp \item[\ib{SEDUCE}] -0 or 1 to disable or enable, respectively, the SEDUCE option (see the source) -for details on this function. +0 or 1 to disable or enable, respectively, the SEDUCE option. +When disabled, incubi and succubi behave like nymphs. %.lp \item[\ib{CHECK\verb+_+PLNAME}] Setting this to 1 will make the EXPLORERS, WIZARDS, and SHELLERS check for the player name instead of the user's login name. %.lp \item[\ib{CHECK\verb+_+SAVE\verb+_+UID}] -0 or 1 to disable or enable, respectively, the UID checking for savefiles. +0 or 1 to disable or enable, respectively, the UID +(used identification number) checking for save files (to verify that the +user who is restoring is the same one who saved). \elist %.pg @@ -6131,17 +6159,21 @@ The following options affect the score file: %.pg %.lp \item[\ib{PERSMAX}] -Maximum number of entries for one person +Maximum number of entries for one person. %.lp \item[\ib{ENTRYMAX}] -Maximum number of entries in the score file +Maximum number of entries in the score file. %.lp \item[\ib{POINTSMIN}] Minimum number of points to get an entry in the score file. %.lp \item[\ib{PERS\verb+_+IS\verb+_+UID}] 0 or 1 to use user names or numeric userids, respectively, to identify -unique people for the score file +unique people for the score file. +%.lp +\item[\ib{MAX\verb+_+STATUENAME\verb+_+RANK}] +Maximum number of score file entries to use for +random statue names (default is 10). %.lp \item[\ib{ACCESSIBILITY}] 0 or 1 to disable or enable, respectively, the ability for players