One of the gold kicking changes I had pending. The "Thwwpingg"
message is obviously intended as a sound effect so shouldn't be
given if the hero is Deaf.
Changes in wish parsing included with figurine gender implementation
3 or so weeks ago accidentally broke asking for "large box" and
possibly other stuff.
Re-do "paperback book" handling to accept "paperback" and "paperback
book" but to reject previously accepted "paperback spellbook" when
wishing for a novel by description.
Something I noticed recently: a wish request for "paperback book"
yielded "Nothing fitting that description exists in the game."
Asking for "paperback spellbook" worked though.
I'm not sure whether this is the best way to handle this particular
exception but wishing for "paperback book" now works.
When creating a shop via des.region, allow creating the shop door
either with a map character in a des.map, or with des.door
before or after the shop region.
Also allow a shop door to open directly into another shop.
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.
when encountering a hiding monster that's still unseen after being
revealed (so most likely invisible when hero lacks see invisible).
Change
|Wait! There's an it hiding under <an object>!
to
!Wait! There's something hiding under <an object>!
when hero tries to move onto the object.
Also, when a hidden monster reveals itself by attacking, change
|It was hidden under <an object>!
usually followed by "It hits." or "It misses."
to
|Something was hidden under <an object>!
without changing whatever follows.
Fixes#542
Put the rush and run movement keys into g.Cmd instead of bit twiddling
the normal walk keys in multiple places to get the run and rush keys.
Allow meta keys in getpos. Use the normal running keys to fast-move
in getpos, instead of explicit HJKL - I polled couple places online,
and number_pad users did not use the HJKL keys in getpos.
Make meta keys work even after a prefix key.
when perm_invent is displayed. The persistent inventory window
showed unpaid items with their prices, but when using itemized
billing those prices went away when an item was purchased.
The prices and item-by-item prompting continued correctly with
remaining unpaid items; only the perm_invent display was affected.
Fixes#541
should cure sliming. Implement the suggestion that quaffing a
burning potion of oil while turning into green slime will cure the
latter.
It's somewhat iffy since the slime is on the outside moving in and
the burning oil ends up on the inside, but the message sequence is
|You burn your face.
|The slime that covers you is burned away!
and it could be that igniting part of the slime quickly spreads to
the rest.
Implemented for monsters as well as for the hero. They will light
and drink the oil in a single turn in the extremely rare situation
where they actually have a potion of oil and need to use it.
When spiders try to spin webs, don't let them do so in Sokoban
unless the level has already been solved or the spider can see the
stairs up (which was the simplest way I could achieve something
close to "is in the same room as the stairs up") where it can't
interfere with solving the level.
Restoring a level cleared residence pointer from those subrooms
which were in the restored level, but if the previous level had
more subrooms, those pointers weren't cleared.
This caused weird problems when a shopkeeper data was looked
up based on the subroom number.
Just to be safe, clear all the room data when freeing the level.
Shop population code set the mimic shape to strange object
without checking for protection from shape changers.
Let set_mimic_sym (via makemon) handle it correctly instead.
For Angels who appear in a flash of light, temporarily light the
spot where they arrive. If not previously visible, it will go back
to dark and change the angel to the remembered, unseen monster glyph,
usually before the player even notices.
Add more monsters to msummon_environ() so that it has latent support
for various light, fire, and lava creatures from mondata.h even
though these extra ones, like previous vortices, don't get summoned
by msummon().
Allow shopkeeper to remove webs and pits.
Change the damage fix messaging to be more specific when
shopkeeper removes a trap. Before this the message was
"A trap was removed from the floor", which sounds really silly
when it comes to holes.
Change the damage fixing so the shopkeeper will fix one damage spot
at a time (instead of all at once), so it's more like a monster action.
Some code cleanup, splitting into smaller functions.
While doing this, I noticed that shopkeepers don't actually bill
the hero for the damage, but that'll have to be another commit...
When shopkeeper fixes a wall and there are items on that location,
shopkeeper tries to move those items into their shop. Split
the code dealing with that into separate functions.
Revisited this feature, and the chance of a spider spinning a web
depends now on the number of webs already present on the level.
For a giant spider to spin a web in the middle of a room with no
supports, the limit of existing webs is 4, next to one support 9,
next to two supports 14, and so on. Cave spider limits are much lower.
Now that the appear message isn't limited to summoning by demon,
seeing "the Angel of <foo> appears in a cloud of smoke" seems
strange. Angels weren't covered by the vapor/dust/&c change for
elementals. Make angels appear in a flash of light.
While testing monster summoning by using a debugger to force the
outcome, I saw "the renegade Angel of <foo> appears in a cloud of
smoke" as if only one such creature existed. Trying to change
that to "a renegate Angel" pointed out some problems: type names
like Angel, Green-elf, and Uruk-hai fool an() into using "the"
because of their capital letter. Fixing that was a bit of a hack
and worked for Green-elf and Uruk-hai but not for Angel because
it has the eminion extension so uses priestname() instead of the
guts of x_monnam(). Fixing that involved more hackery and now I
feel unclean, but it seems to be working.
It wasn't as noticeable as it might have been because most of the
time that "the Angel of <foo>" or "the priest of <bar>" was shown,
the caller is requesting "the" rather than "a/an".