My repository got out of synch and I had a hell of a time restoring
sanity.
The most recent commit included a line in wintty.c that shouldn't have
been there.
Some changes I made while chasing the slots 'A' and 'B' bug. These
weren't necessary to fix that and I don't think they produce any
change in behavior, aside from making the "Bad window id N" panic
be more specific if it occurs.
Change the stalker entry attribution of "H. G. Wells" to "H.G. Wells"
to match the other attributions. There was once a mixture of both
styles but at some point all the ones with the expected--and possibly
stylistically preferred--extra space got changed to the condensed form.
The sasquatch quote still contains "J. W. Burns", in the text rather
than in an attribution. I wasn't sure whether it should be changed
so left it alone. Presumably the source of the quote had that space.
Fuzzer encountered "m_detach: monster already detached?"
A monster hit a black pudding that split. The clone was
created on top of a rolling boulder trap, which triggered,
the boulder hit the original black pudding, and killed it.
The dead pudding then retaliated (as the code didn't check
if it was dead) and a passive attack of the other monster
tried to kill the already dead pudding.
I think one of these checks would be enough, but adding the
DEADMONSTER check just in case.
While testing something else, I noticed rolling boulders
just ignored walls and trees; in normal play this isn't
a problem - but should probably make boulders handle other
terrain too. Lava and water is already handled correctly.
This allowed eg. throwing the iron ball anywhere on the map,
by first throwing something else, using the "simulated mouse click"
to select any map location, and then throwing the iron ball and
also using the mouse click feature to select any location.
Currently the only function that actually uses the simulated
mouse click feature is #therecmdmenu
A tame nymph attacked another monster, stole an item and teleported
away, but dog_move() wasn't passed the information that the nymph
was done, and tried to move the nymph from the old location.
Same with a tame leprechaun.
Report suggested that "can not" should be "cannot". Both forms are
acceptable. This switches them to use contractions for various "You
<verb> not subject" phrases: "You can't subject", "hadn't", and so
forth. Not exhaustively tested; there may be some sentences where the
informal contraction makes things worse rather than better.
The goal here was compactness rather than efficiency since the code
involved doesn't execute very often.
The problem with tty perminv slots 'A' and 'B' boiled down to
slot_limit = SIZE(slot_tracker); /*54*/
...
/* blank out unused slots */
for (slot = 0; slot < slot_limit; ++slot) {
...
row = (slot % rows_per_side) + 1; /* +1: top border */
side = slot < rows_per_side ? 0 : 1;
ttyinv_populate_slot(row,side,...);
}
Unused slots [52] and [53] (available for show_gold mode to display
"$a..zA..Z#", not filled with inventory for normal tty perm_invent
"a..zA..Z") yielded rows 1 and 2, side 1, so clobbered slots 'A' and
'B' with blanks.
This is a subset of the changes I was working with and didn't get as
much testing as the full set.
This fixes one of the two problems I encountered while testing tty
resize changes: 'perm_inv' wouldn't work in a new game, whether set
via config file or via 'm O', but would work if enabled (via either
method) during a restored game.
The problem with nothing appearing in the invent window's 'A' and 'B'
slots (top of right-hand panel) is still present. Earlier I had
assumed that 'A'..'Z' were all nonfunctional but slot 'C' works (and
is shown in the expected place). That's slightly more mysterious....
Testing is difficult because I have to switch to a teeny tiny font in
order to give the terminal window enough lines for TTY_PERM_INVENT to
allow 'perm_inv'.
Recent changes to wand of probing cause it to map unseen terrain when
zapped into the dark (or while blind) and also to reveal tin contents
if the beam hits such. Extend that to discover secret doors, secret
corridors, and traps whether the spot can be seen or not, and also to
reveal egg contents. Previously, secret corridors were converted into
regular corridors when they couldn't be seen but left as is if their
spot could be seen; now they're found and converted either way.
Issue the kaboom sound effect if zapping a magical trap with wand or
spell of cancellation causes it to go "Kaboom!"
A couple of chunks of code has been moved out of zap_updown() and
bhit() into new routine zap_map().
Separate the old generic text for athame from the new quote with an
empty attribution line. Reformat both the old and new portions so
that they won't their widths won't be so different from each other.
The new entry for 'shade' had "acrossthe" run together on the first
line. While fixing that, I changed that entry to use two-space
separation between sentences and did the same for 'shield'.
I also made indentation for various attribution lines (new necessarily
new ones) be more consistent (two tabs, for for the data file format
and one for indentation, unless the line is wide-enough to warrant
shrinking the second tab) but burned out before getting very far with
that. Also removed line split between "Dante" and "Alighieri" in a
couple of places. Shouldn't split a name unless other alternatives
are worse...
Simplify the code that checks whether '/' should be included in an
inventory item action menu. Initially it was overloading the
'supplemental_name' argument to provide an alternate return value and
when that was discarded, some of the convolutions it needed stuck
around. Since there was no primary return value, just switch to that.
Pull request from NullCGT: a lot of new data.base entries. Over 20
separate commits; this time I didn't squash them together because I
didn't want to mess with their log messages.
Three had non-ascii characters where apostrophe or single-quote or
long dash are intended. _The_Invisible_Man_ for stalker was the worst
offender. While fixing those, I changed period followed by single
space when separating sentences to period followed by two spaces but
didn't do that for the other new entires. A few had trailing spaces and
one existing entry had trailing tabs. I've fixed up those situations.
The ice box quote is out of whack with everything else due to wider
lines but the capitalization indicates that it's from a poem that was
formatted that way. I left it as is instead of splitting several of
the lines.
The conical hat entry is iffy since nethack's conical hat is not a
wide-brimmed witch's hat, but I've left it in. Likewise helm of
brilliance says that it's made of steel but nethack's is now crystal.
Closes#1108
Looking up a custom fruitname in the encyclopedia will now yield
the encyclopedia entry for "fruit" if another matching database
entry is not found. This preserves the fun associated with naming
fruits after existing objects, while also preventing a failure to
find.
Sourced from xnethack. Seems like an excellent candidate for
replacement, since the quote gets across what shades are and also
hints at their weakness.
This commit adds entries for the following items:
- Credit card
- Silver bell
- Bell
- Walking shoes
- Iron shoes
- Hard shoes
- Dragonbane
- Gauntlets of Power
- Gauntlets of Fumbling
- Gauntlets of Dexterity
- Potion of Sickness
- Splashes of Venom (Various)
- Shields (Various)
The following monsters also now have associated entries:
- Stalker
It turned out that using '^' as a group accelerator (new behavior for
the 'whatis' command to view traps) already worked for curses and Qt.
Fix that for tty and X11. I don't know the situation for WinGUI.
Offering any of the menu paging keystrokes as group accelerators
should be avoided if there's any chance that the menu will need more
that one page. The menu for '/' is short though so losing "^ to go
back to first page" for it isn't an issue.
Having source files with the same name in different subdirectories
won't work because their object files would conflict, but don't allow
the failure to be because depend.awk left out the conflicting rules.
No change in behavior from the most recent commit.
Pull request from NullCGT: applying gold from inventory will flip
one coin and report "heads" or "tails". If impaired, that coin will
be dropped, otherwise it will remain part of the stack in inventory.
Can be done via 'a $' or with context-senstive item action via 'i $ a'.
I've used 'git merge --squash' and 'git commit -C <commit#>' to
flatten four commits into one and it seems to have accomplished what
I wanted, including retaining the log message from <commit#>.
I also changed
|You flip a gold piece. The gold pieces slips between your fingers.
to
|You flip a gold piece. It slips between your fingers.
when impaired and applying one from a stack.
Closes#1107
Applying one or more gold pieces now flips one of them, which will
cause it to come up heads or tails. This is NetHack, so there are
special cases for flipping a coin underwater or while fumbling or
greasy.
I've tried to future-proof this commit so that the code will not
need to be modified if other items are eventually added to the
coin class.
If memory serves, there was a patch for this on the bilious patch
database, but I was unable to locate it or who the original author
was. In any case, the code is entirely original.
Reported by entrez: it was possible for #overview to show a line of
just "." if a temple was known and its altar was unknown and no other
features such as thrones or fountains were known on the level.
It now lists "M temples and N altars" when both are present and the
case that yielded "." becomes "a temple". That's an improvement but
there might be edge cases it gets wrong. A listing of "a temple and
an altar" is ambiguous because there isn't any way to tell whether the
altar it mentions is inside the temple. That seems acceptable to me.
I think it should include more alignment information about temples and
altars, instead of just adding "to <your god>" when all known altars
are of hero's alignment, but this doesn't attempt to address that.
From a comment w/ diff in the pull request by entrez, combine the
show-full-map flag (available in wizard mode and explore mode) with
the bitmask for map-only, map-and-traps, map-and-traps-and-objects
flags for #terrain mode (and getpos() help) instead of passing that
as a separate argument. No change in behavior unless I messed up.
Only show the '/' menu choice for context-sensitive inventory item
action if data.base look up for the item will find something. Lack
of '/' is as informative as "you don't know anything about that".
Harder to implement than expected but seems to be working ok.
This also changes the menu for the '/' command, replacing cryptic /^
and /" with /t and /T so that listing near traps or all traps is more
like listing near|all objects|monsters. I put caret and double-quote
in as group accelerators; double-quote works on tty, caret gets
intercepted as "menu first page" so doesn't. I didn't check other
interfaces since supporting that doesn't seem to be worth the bother.
Also a little bit of reformatting.
Pull request from NullCGT: add '/' to look up selected item in its
context-sensitive inventory action menu.
The whatis_item branch added an extraneous file: util/tileset.bmp;
this commit removes it.
Closes#1106
Adds an option to the inventory item menu which allows a user to
look up an item in the database. This uses the existing whatis
command.
A minor secondary change is switching the failed database lookup
message to second person. The use of a first person pronoun here
has always been very strange, and switching to second person centers
the player in the action.