Add four new passages to Carpe Jugulum, bringing total to 12.
A couple of fixes for the Fifth Elephant are mixed in: page reference
and italics for passage #1, correct the spelling of "doublet" in #9.
Add a page citation for passage #1 and change the wording of that
passage to match the book: the second "does not need" should be
"doesn't even need".
Also make the comments about various added passages (for other
books) be more consistent.
Allow killing your quest leader, just to make games winnable if you
converted before doing the quest.
Boost the quest leaders and give them some equipment. King Arthur
gets Excalibur. Killing quest leader gives really bad luck and
makes your god angry at you, and killing quest guardians gives
smaller penalties.
This is based on both the EvilHack implementation by
k21971 <keith.simpson1971@gmail.com>, and xNetHack
implementation by copperwater <aosdict@gmail.com>.
Adds possible callbacks for "start_new_game", "restore_old_game",
"moveloop_turn", and "game_exit" which when defined, will be called
from core code at the appropriate time.
Adds lua hooks for dump_fmtstr (only if DUMPLOG), dnum_name, u.moves,
u.uhave_amulet, and u.depth.
Add missing italics to several words in passage 1.
Add three new passages, bringing the total to 13.
The third one ended up being fairly long. I made note of it
intending just the bacon joke but when transcribing I backed up
quite a ways. The context is fairly unusual for a Discworld story.
Add page citations for first two passages and some missing italics
to the first one. Fix spelling of "fossil" in passage 8.
Add two short, new passages bringing total to 13.
Allow creating webs without spiders in the lua level scripts:
des.trap({ type = "web", spider_on_web = 0 });
Based on xNetHack commit by copperwater <aosdict@gmail.com>.
Also changes the Spider nest themed room to generate without
spiders when the level difficulty is 8 or less.
Allow specifying "waiting" for monsters created via lua level scripts.
This sets the monster strategy to make it wait for the hero
to be in visual range before allowing the monster to move.
Also makes the monster inside the Mausoleum themed room use this feature,
to prevent out of depth liches bothering the player unprovoked.
For example:
des.monster({ class = "D", waiting = 1 });
For Lords and Ladies, add a new, 13th passage.
For Men at Arms, include a page citation for the first passage
and add some missing italics to that one. Add a missing word to
the second passage.
Add page number citations for the first two passages and add three
new passages. That brings the total for Small Gods up to 15 which
is a bit on the high side, but they all seemed worthy.
While in there, fix a transcription mistake in Lords and Ladies #7:
"to" should be "be".
And two fixes for Jingo #11's footnote, change "genious" to "genius",
remove second "was" from "was, oddly enough, was one [...]".
Also, add a comment about the Amazing Maurice.
I've tried to bring the fixes37.0 entries about tribute fixes up to
date. They're mostly minor and mostly neglected to include updates
for that.
Requesting a lookup of "arc ranks" or "wizard ranks" will show a
list of the rank titles and the experience levels that use them
for the specified role. Looking up a specific rank title such
as "curator" works for many of them, but some such as "wizard"
already match existing entries and continue to do so. There is
just a bare list of the titles with the levels they apply to, no
attempt at flavor text.
Also, add a lookup key for "novel" and "paperback book" which
have been yielding the "no match" result. It lists all 41 of
the Discworld titles. Again, just a bare list, no added flavor.
These all look ok on tty, curses, Qt (which watches for any line
containing four consecutive spaces while collecting the text to
be displayed and switches to fixed-width font if it is sees that),
and X11 (which specifies fixed-width font for popup text windows
in default NetHack.ad file). It might not look good on Windows
GUI if that is using a proportional font.
Passage 10: single quote at start of paragraph should be a double.
Passage 14: second instance of "megalomaniac" was misspelled.
Add a couple of comments about some deliberately misspelled words.
Add some missing monster types for the recent male/female/neuter
name split. "vampire lady" was missing but getting false hit on
"*lady, offler" entry for Discworld's Lady Luck, aka The Lady,
goddess, god. "{dwarf,gnome,kobold} lady" got the corresponding
"{dwarf,gnome,kobold}" entry but "ogre lady" got "Lady Luck"; all
wildcard matches that are affected by their ordering in the file.
The pull request adopted yesterday added "battle axe" but it was
missing a hyphen so didn't match. I've fixed that and moved it
from the generic "weapon" entry to the more specific "axe" one.
I accidentally omitted the addition of "luckstone" but since the
luck quote is about bad luck, having it match that would be too
misleading for novice players so am now intentionally omitting it.
Improves the consistency of quote citations. Mostly by adding
missing commas but there are a handful or more substantial
corrections.
Pull request changed one "G.K. Chesterton" to "G. K. Chesterton"
but I went the other way. There are roughly 60 citations with
two or three initials, and about 50 omit the space, only 10-ish
included it. I changed those to match the rest. It's slightly
less visual clutter when reading an entry.
Also adds some new keys that previously had no entry to now match
some existing entries.
I added various comments and also inserted a few blank lines to
separate paragraphs but made no attempt to be thorough about that.
Fixes#472
Add new '|' command, aka #perminv, which allows the player to
send menu scrolling keystrokes to the persistent inventory window.
Implemented for X11, where its usefulness is limited, and for
curses, where it is more needed and also more fully functional.
The interface can either prompt for one keystroke, act upon it,
and return to normal play, or it can loop for multiple keystrokes
until player types <return> or <escape>. X11 does the former if
the 'slow' application resource is False so that prompting uses
popups, and the latter when 'slow' is True where prompting is in
a fixed spot and doesn't end up causing the persistent inventory
window to be stacked behind the map window. curses always does
the loop-until-done approach. It also accepts up and down arrow
keys to scroll one line at a time.
Also adds two new menu scrolling commands, menu_shift_right (key
'}' by default) and menu_shift_left ('{') if wincap2 flags contain
WC2_MENU_SHIFT. Shifting allows different substrings of too-long
lines to be seen.
For X11, neither works because their handling requires a horizontal
scrollbar and for some reason that escapes me our menus don't have
one of those. If they did, shifts could work for all menus but a
shifted window would hide the selection letters. So shifting would
be most usefully done as: pan right, read more of any long lines,
immediately pan back to the left.
For curses, they only apply to the persistent inventory window.
Shift right redraws it with class headers and inventory letters
shown normally but the item descriptions omit their leftmost
portion, showing more text towards the end. Shift left reverses
that and does nothing if the beginning is already in view. Forward
and backward scrolling while shifted leave the shift in place.
Give the window-port side of *_update_inventory() an argument.
Calls in the core still omit that; invent.c's update_inventory()
is the only place that cares.
Fix a mistake that led to a bad fix for a perceived mistake that
wasn't really there.
I think having a comma after "moment" would make things clearer,
but style-wise that's optional and leaving it out restores the
book's original wording.
des.region() accepted booleans for the joined field, whereas des.room
accepted xchars. These were only being used as truth values, so this
converts the room ones into booleans for consistency. I don't think
accidentally using an int or a boolean wrongly would actually crash the
level generator, but consistency is good.
This converts an schar field in struct mkroom into a boolean; on most
systems these are probably 1-byte types and save files won't be broken,
but it might be best to treat this as a save breaker anyway.
Turns out it was nearly as simple as I originally thought.
I just missed one significant detail the first time around.
This leaves DYNAMIC_STATUSLINES as conditionl but now enables
it by default. Using 'O' to change 'statuslines' from 2 to 3
or vice versa now works for Qt as well as for curses and tty.
I stated out by changing dat/opthelp to stop shouting the boolean
defaults: [TRUE] -> [True], [FALSE] -> [False]. I ended up doing
a partical reconcilliation between ?g (dynamic list of options)
and ?h (dat/opthelp). There were several inapplicable options in
the dynamic list, so this changes option_help() to avoid those.
I barely glanced at the compound options so they may not sync up.
The pull request changed \ and ` output to unconditionally show
discoveries in alphabetical order. That's nearly useless except
when looking at prediscovered weapons and armor that fighter
types start out knowing.
This allows the player to choose sorting order via the new
'sortdiscoveries' option. In addition to setting it via
config file or 'O', it can be set via 'm' prefix for \ and `.
Choices are:
o - sort by class, by order of discovery in class (default);
s - sort by 'sortloot' classification which groups sub-class
items (so all helmets before any other armor, then all
gloves, then boots, and so on); within each sub-class, or
whole class for classes which don't subdivide so usefully,
partly-discovered types (where a name has been assigned)
come before fully ID'd types;
c - sort by class, alphabetically within class;
a - sort alphabetically across all classes.
Turned out to be a large amount of work for fairly little gain,
although I suspect that 'sortdiscoveries:s' will eventually be
more popular than the default.
Invalidates existing save files so that current sort setting can
persist across save/restore cycles.
Closes#334
This themed room boasts two shops, a weapons and an armor store,
that can generate in a number of different configurations.
Makes the random corridor joining routine obey unjoined areas.
Fixes a bug in shopkeeper naming routine, where multiple shops
of the same type on the same level might reuse the shopkeeper name.
This is modified and consolidated commit from xNetHack by
copperwater <aosdict@gmail.com>.
'? i' shows three keyless commands in the General section. This
makes M-X the key for #exploremode. #herecmdmenu and #therecmdmenu
are still keyless but now autocomplete.
A ridiculous amount of documentation for a three line code change.
Having recently noticed that using <del> aka <delete> aka <rubout>
could work as a command, assign it to #terrain. #terrain was the
only command in the "game" subset of commands as shown by '? i'
that didn't have any key assignment.
Since <delete> might be swapped with <backspace> on some terminals
and is a keypad key on the typical PC keyboard, it might not work
reliably depending on nethack's number_pad mode or the hardware
Num-Lock setting. Players in either of those situations haven't
lost anything; they can still use extended command #terrain.
Noticed while working on Qt's extended command handling, there
are an awful lot of "seeXYZ" commands. Keep the inventory display
ones (named versions of ')' to show wielded weapon(s), '[' for
worn armor, '"' for worn amulet, &c) and rename the others:
| #seenv -> #wizseenv debugging command
| #seespells -> #showspells '+' command
| #seetrap -> #showtrap '^' command
Also, expand the descriptions of #shell and #suspend a bit in
the Guidebook. LaTeX version is untested.